Slow sync speeds, although devices are in the same network

Setup:

  • Router: Sony Xperia 10Ⅶ Android phone, also providing Internet connection by 5G

  • Sender: PC with WSL / Win11pro running Syncthing v2.1.7, Linux (64-bit Intel/AMD)

  • Receiver: Steam Frame with SteamOS running Syncthing v2.1.7, Linux (64-bit ARM)

When I try to sync a file from the PC to the Steam Frame, it can be very slow. What might be the reason?

We need more information, e.g. are the devices connected directly or via a relay? You can check this in the GUI when looking under Remote Devices. Also, are you testing with a single large file, or a large number of small files? Syncing the latter will always be much slower.

It says: TCP WAN

(although both devices are connected to the same WLAN, provided by my Android phone)

Do you know for sure that these devices can communicate with each other via LAN? Is your Android hotspot isolating wireless clients?

Can you ping one machine from the other via the local network IP address?

On the PC, I actually have two Syncthing clients running:

  • felix-x1t3-11 (Windows 11 Pro): If I connect this one to frame, the Steam Frame, then the connection type is TCP LAN. But this is not the one I tested.

  • wsl-linux (Arch Linux VM running in WSL under Windows 11 Pro): This is the one I did the tests with. From the VM, I can ping frame or SSH into it. But in the other direction I obviously can’t, because the VM accesses the Internet through NAT.

I conclude, NAT is the problem.

Is there any way to make Syncthing connect wsl-linux and frame by LAN?

Otherwise, I think I’ll just sync from Windows directly. My rationale of using the Linux VM for this sync was that both sides use Linux. And it is nice to not run into issues with permissions or case sensitivity. But I think for the files I generally use, this is not really relevant.

AFAIK one-way direction is fine, if the shielded device dials the direct connection. Did you try adding the peers explicity via they internal dns name or IP? so on the device behind the virtual NAT (wsl-linux) add frame using its explicit tcp address (I don’t have the current syntax, look at the docs). You may also want to disable relay discovery for testing.