This is a bit of a rant about Android, so apologies for that
I’ve just got a new phone (Nokia 5.4 running Android 10) and one of the first things I tried was using Syncthing to sync my music to my phone.
SPOILER: I’m about 99.9% sure the problem here is the exfat filesystem.
The plan is (or was): Server (send only, ignore perms) → Phone (receive only to SD card, ignore perms).
[I notice that there’s a new permissions system in Android 10, so I was able to choose a normal directory on the root of the SD card, instead of only one under Android/Data/com.numatic.syncthingandroid/files. I also notice that Android 10 forces a .nomedia file in Android/data, and if you remove it, it comes back a minute later… anyway…]
The problem is that after letting the files sync, the Android device always says there are local changes. I haven’t changed any files, and I assume Android itself hasn’t (does the media scanner change anything?).
There are a couple of things that spring to mind relating to FAT filesystems:
- mtime window (although, fixed I think. See this post
- case sensitive filesystem (although a quick experiment suggests that syncthing can detect collisions, and i get no such message when syncing my music).
And it’s worth noting that rsyncing files to an android SD card (via termux) often re-transfers unchanged files too, even with the switches to account for permissions and mtime window. So this isn’t unique to syncthing it seems.
I had planned to mount the SD card as “internal storage” so as to avoid FAT filesystems entirely, but the kind folks at Nokia have disabled this feature, so I’m stuck with FAT if I want to sync to the SD card.
So, is this a losing battle? Should I give up and sync a subset of my music to my internal storage?
The folks at google are sure doing a great job of making this really annoying.
[And don’t get me started on the large google search bar that you can’t remove from the home screen!]