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.
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.