trying to understand what is happening

so. i never used this before. i am on android. Since this is a good well over half terabyte of stuff i firt copied stuff from pc to phone and now am syncing from Syncthing the new stuff from the pc to the phone.

i tried syncing folder (pc is send only phone is receive only) and it did for about 5 gb then it stopped and i see these weird symbols next to each file.

it is basically downloading the same files over and over. The SD Card still has 300 gb of free space.

there also appear to be more files than there should be.

i checked if i could read the logs to understand the problem but apparently there are no logs?

did i do something wrong?

help?

Tap the cog wheel icon near the upper right corner…

According to the screenshot, some files were still downloading.

Also, there are 38 locally changed items totaling 10.6GB in the receive-only “Videos” folder. Syncthing will automatically pause syncing of a receive-only folder whenever that occurs.

Are you using the official Syncthing for Android or a fork?

  1. I checked the log, but i restarted to see if it would change anything so it tells me nothing aside that it connected and checked the sync status and started downloading.

  2. Yes. it keeps dowloading the same 10 files over and over.

  3. How do i tell it to just discard local changes? nevermind telling it to revert local changes does nothing for… unknown reasons.

  4. I think it is the official. https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid

By default, the log is mostly connectivity info. While viewing the log, immediately to the right is another tab labeled “Debugging Facilities” with a truckload of extra options.

I’ve seen similar reports from others on this forum, always related to receive-only folders if I recall correctly.

Most often a permissions issue. Easiest thing to try is stopping Syncthing and manually deleting the offending files via a file manager (if you don’t already have one installed, Material Files is a very good one).

Depending on the root cause, resetting Syncthing index might be necessary, but removing the folder from Syncthing and adding it back again is often enough.

Somewhere along the way, especially when working with receive-only folders, conflicts can develop that require user intervention. Syncthing errs on the side of caution to avoid inadvertently deleting files.

Yup.

the most annoying part is that if i am not connected to the internet it does not scan the local files nor anything and i cannot control it, it’s like i am controlling a local instance of something running outside of my phone, which is not what was advertised (though i have not yet had the time to go through how it actually works, i thought it was a bit-torrent-like-thingy because at first glance it looked like that but then it should save the hashes and the commands locally, not in the cloud)

The logs now show the first messages but all they say is “folder XYZ isn’t making sync progress, retrying in UVW minutes+seconds” which is not much of an help since the “why” of that is what i wanted to get from the folder.

I can try and delete manually the 10 files in the folder but that is good for the movies stuff the music files number in the thousands.

here is what it calls the “android log”, which seems to have the useful stuff inside took me a while to find it, this thing is clunky and “helpfully hides” everything i find useful: clipboard.txt (60.7 KB)

Could you describe that in more detail?

I’m not sure I understand what you mean because Syncthing (by default) watches for local changes and also rescans a folder very 60 seconds. However, syncing does require a network connection (internet access is optional) in order to talk to other paired devices.

I’d have to see Syncthing’s log file to be certain, but I’m guessing your phone and PC are relying on a Syncthing relay do to some network connectivity issue preventing a direct connection.

(Some users on this forum don’t have home networks so they use Syncthing on a PC and a Android phone over a USB connection (via USB tethering mode.)

BitTorrent and Syncthing are both P2P (Peer-to-Peer), but that’s pretty much where the similarities end. Syncthing doesn’t use seeds and/or act as servers for anonymous users.

For the hashes (as in the block hashes), those are stored locally in Syncthing’s database on each Syncthing device (there’s no cloud storage of any kind).

I’m sorry, I don’t understand what you mean by “[save] the commands locally, not in the cloud”.

(The Understanding Synchronization page of Syncthing’s documentation is well worth a read.)

Did you try enabling any of the debugging options?

I understand. I wish I could be of more help but it’s a bit like looking at black box without access to Syncthing’s log and/or screenshots of the web GUI on both the PC and Android sides of the connection (in particular, the device and folder panels showing the network status).

hmmm… “clipboard.txt” looks like a log of an Android app itself (basically the step by step events in the graphical interface) rather than Syncthing’s server process log.

Here’s a snippet from Syncthing on my phone, slightly modified to highlight particular lines, but otherwise as-is (click to expand):

2023-08-06 12:16:13 My ID: AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA
2023-08-06 12:16:14 Hashing performance is 717.65 MB/s
2023-08-06 12:16:14 Overall send rate is unlimited, receive rate is unlimited
2023-08-06 12:16:14 Using discovery mechanism: global discovery server https://discovery.syncthing.net/v2/?noannounce&id=AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA
2023-08-06 12:16:14 Using discovery mechanism: global discovery server https://discovery-v4.syncthing.net/v2/?nolookup&id=AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA
2023-08-06 12:16:14 Using discovery mechanism: global discovery server https://discovery-v6.syncthing.net/v2/?nolookup&id=AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA-AAAAAAA
2023-08-06 12:16:14 Using discovery mechanism: IPv4 local broadcast discovery on port 21027
2023-08-06 12:16:14 Using discovery mechanism: IPv6 local multicast discovery on address [ff12::8384]:21027
2023-08-06 12:16:14 TCP listener ([::]:22000) starting
2023-08-06 12:16:14 Relay listener (dynamic+https://relays.syncthing.net/endpoint) starting
2023-08-06 12:16:14 ...
2023-08-06 12:16:14 QUIC listener ([::]:22000) starting
2023-08-06 12:16:14 Listing network interfaces: route ip+net: netlinkrib: permission denied
2023-08-06 12:16:14 Detected 0 NAT services
2023-08-06 12:16:14 GUI and API listening on 127.0.0.1:8384
2023-08-06 12:16:14 Access the GUI via the following URL: https://127.0.0.1:8384/
2023-08-06 12:16:14 My name is "Android"
2023-08-06 12:16:14 Device BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB is "PC" at [dynamic]
2023-08-06 12:16:14 Ready to synchronize "DCIM" (aaaaa-bbbbb) (sendonly)
2023-08-06 12:16:14 Completed initial scan of sendonly folder "DCIM" (aaaaa-bbbbb)
2023-08-06 12:16:15 Established secure connection to BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB at 192.168.1.102:22000-192.168.1.101:22000/tcp-client/TLS1.3-TLS_CHACHA20_POLY1305_SHA256/WAN-P30
2023-08-06 12:16:15 Device BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB-BBBBBBB client is "syncthing v1.23.6" named "PC" at 192.168.1.102:22000-192.168.1.101:22000/tcp-client/TLS1.3-TLS_CHACHA20_POLY1305_SHA256/WAN-P30
2023-08-06 12:16:24 quic://0.0.0.0:22000 detected NAT type: Symmetric NAT

Could you describe that in more detail?

Basically: i told it that it should stay on wi-fi only and not run the sync if not on the local network. HOWEVER that means that any time it loses connection to the local network and goes on mobile data i cannot access the android gui at all as it tells me to either change the settings or exit. That is not what it should do it should keep scanning for any changes and it should let me see what it is doing, not “go online or git out”.

I’m sorry, I don’t understand what you mean by “[save] the commands locally, not in the cloud”.

Basically if i am not on the house wi-fi and it cannot connect online to search for servers or do anything i should still be able to configure it and do stuff like reading logs or let it hash the files, only receiving the requests on the other side once i connect again to the home wi-fi.

Given i have one fo those “smart” phones who thinks it is helpful that if the WI-FI does not meet its (far more than ultra-luxurious) standards it “helpfully” drops the connection to allow for “faster” network (from the country 4G we have) i basically have to fight to keep this thing on the house wi-fi as once it sees it has reached the limits of the house wi-fi it goes on mobile data at which point sync stops and obviously it receivess nothing and goes back to the house wi-fi.

Which honestly is fine for normal use cases, not at this specific moment when i have to fight the “helpful” phone and syncthing which decides that if it cannot sync it should stop everything and kick me out.

Did you try enabling any of the debugging options?

what debug options? where are they? I am sking for help because the online documentation is missing a lot of stuff where it’s useful if i never used anything and also useful if i can use the commandline… but not useful at all when i am here at this moment.

Like: what are those icons next to the files i screenshotted? i found no mentions of those icons anywhere. (the blue icon that looks like a line with the upwards arrow)

the “understanding synchronization” thing is all stuff i had already figured out by looking at what it was doing it adds nothing useful.

Yes i know peer to peer is not bittorrent, when i am angry/agitated i do mix this stuff up, as the correct terms do not come to me. Apologies.

Oookay, apparently material files does exactly the same thing as the standard files app when the standard files app is correctly configured to what I want it to do, not what IT thinks it is “helping” me to do.

So, it changed nothing, i went and deleted a bunch of stuff and now it tells me that i have “local changes” of 0 length files which… is what i expect for deleting a bunch of stuff but at least it is syncing properly.

Once it finishes syncing telling THEN and ONLY THEN it finally listen to the “revert local changes” command and FINALLY it starts filling in the missing files i deleted to allow it to overwrite the files it was trying to unsuccessfully overwrite.

Before it just kept making temporary files which then failed to overwrite existing files and that was what basically was stopping it to finish the syncing.

Once that stopped being an issue because i deleted all that was keeping it from writing on the blasted thing it finally wrote the last files and at that point i just told it to nuke everything that system deemed of the utmost total and complete importance (the thumbnails) and it is FINALLY happily sinced without local changes and a nice green tickmark.

Ah, thanks.

One option is tapping “Change Settings” and toggling “Enable run conditions” to temporarily stop the Wi-Fi check so the other settings, dashboard, file hashing and other things are available.

I totally understand what you’re asking (I’m not one of the Syncthing developers). Having developed my share of desktop and web apps, I can honestly say that user interface design is a tough job because there seems to be endless differing views on how something should work to be most useful to the user sitting on the other end.

Thanks. I honestly was stumped. :slightly_smiling_face:

Although not exactly the same as what you want, another way to limit use of mobile data is instead of enabling “Enable run conditions”, go into Android settings → Apps & notifications → select Syncthing → Mobile data & Wi-Fi. Toggle the slider “Background data”. Syncthing will continue to do everything and when not in focus won’t consume any mobile data.

Another option is to pause the remote device(s) when not needed.

First try it on the PC because there are fewer clicks. In the Syncthing web GUI, tap Actions (cog wheel) → Logs. In the log dialog are two tabs, one for the running log plus one to adjust debugging options to increase logging details.

For reference:

Syncthing

On Android, tap the hamburger menu (where the settings are) → Web GUI. From there, it’s the same sequence starting with the cog wheel.

I’ve never seen those before. I checked the source code for both the Syncthing server and Android app and didn’t see it (unless it’s constructed on-the-fly). To me it resembles an eject indicator.

yep it totally looks like an eject indicator.

To be frank now i am just waiting for ti to finish the sincing.

Thanks to the talk with you who pointed out i should be the one to manually delete the files it now seems to be working smoothly.

Now I’m really curious how/why it appears… I’ve been using Syncthing for years and feel like I’m missing out on something. :smile:

You’re welcome.

i wish i had found the debug before deleting the files because at least i would have received the reason why it was not updating.

do any of the devs ever read this?

anyway:

One option is tapping “Change Settings” and toggling “Enable run conditions” to temporarily stop the Wi-Fi check so the other settings, dashboard, file hashing and other things are available.

This does not “stop the wi-fi check” it simply does not run while it is on wi-fi. Which means it always kicks me out as the mobile data was not selected so i had to delete the app and re-run it from zero so that it would not have any options.

Although not exactly the same as what you want, another way to limit use of mobile data is instead of enabling “Enable run conditions”, go into Android settings → Apps & notifications → select Syncthing → Mobile data & Wi-Fi. Toggle the slider “Background data”. Syncthing will continue to do everything and when not in focus won’t consume any mobile data.

this just means it will consume mobile data when i want to check what i was doing which is what i was doing already by… simply enabling the mobile data while i was finishing configuring it.

In the Syncthing web GUI, tap Actions (cog wheel) → Logs. In the log dialog are two tabs, one for the running log plus one for to adjust debugging options to increase logging details.

Yeah that might have been useful to know when i had not deleted the files so that it could sync. :rofl: It is now syncing correctly.

Oh yeah, very active here and on GitHub.

Yeah, it’s not clear that after toggling “Enable run conditions” you have to first exit the GUI app (swipe up on newer Android versions), then swipe down from the notifications bar and tap the Syncthing notification to re-launch the GUI.

Syncthing on Android consists of the GUI wrapper around the Syncthing core. The “app” we interact with is the GUI wrapper.

(As I’m typing this my phone is in airplane mode with no connectivity and I’m looking at Syncthing’s dashboard and settings.)

“Better late than never?” :grinning:

Those blue icons are used to manually “push” files up the queue, so that you can rearrange the order when needed. There is a tooltip explaining that but of course it only displays on mouse hover which won’t work on a touch screen.

The GUI is quite complex and many parts of the it are unfortunately undocumented.

1 Like

@tomasz86 is correct on the blue icons.

If you want to limit over which networks the app tries to sync data, there is another way. Instead of disabling Syncthing completely via run conditions, you can just restrict which network address ranges are used to connect to other devices. See this option here: allowedNetworks — Syncthing documentation. It can be found under the Advanced Configuration dialog, per device.

that… has nothing to do with what i was trying to achieve. It makes me feel bad for explaining it so wrongly.

What i wanted to achieve was to make sure i could leave the house before the first indexing was complete and the service would continue indexing and hashing what was in the folder instead of quitting.

it seems instead that syncthing has 3 modes:

  • running (does everything)
  • paused (does nothing)
  • exited (does nothing)

it does not seem to have a

  • not paused but disconnected

state where it still lets you finish configuring stuff and it still finishes indexing/hashing files but it is symply not syncing because it is not connected.

trying to disconnect it on purpose or trying to limit the ip range has zero overlap with my intent as stated above.