server selected unsupported protocol version 303

I’ve run into a problem with syncthing no longer syncing over the internet (will sync on lan) I’ve updated both to v1.17.0 Any suggestions.

What’s your network environment? (proxy?, application filter? etc.?)

No proxy or application filter. They’ve been syncing for the last 2 yrs just fine. both are on Raspberry Pi (a pi 3 running Raspberry Pi OS and a pi 4 running ubuntu 20.04) The only thing that’s changed is updating both OSes.

1 Like

Ok, thanks for the information. I don’t have an idea what could be wrong there atm. will keep an eye on my Syncthing instances when updating in a few days. (still on 1.16.1)

You haven’t specified where you are seeing the error. Is it in the browser? syncthing logs? android logs?

Can you post a screenshot?

Hi, got the same problem like OP after upgrading to V1.17.0 android 64bit arm. Syncing to debian server (v1.0.0-ds1 “Erbium Earthworm” (go1.11.6 linux-amd64) debian@debian 2019-06-08 10:15:59 UTC [noupgrade]) is not possible anymore.

You need to either upgrade that really old Debian version or stay on an older version on the other side.

IMHO old TLS versions should first give a deprecation warning of some sort or the enforcement should be done in a major version (2.x.x) only.

insecureAllowOldTLSVersions should have been an option, but default for now.

Debian stable still ships with 1.0.0 by default (see here) and forcing TLS 1.3 breaks syncs.

Just turning this off and leaving users to wonder why their devices suddenly all show Disconnected and making them search for the error on github and forums isn’t really a good way to do this.

7 Likes

This makes sense (although it is probably too late), but at the same time, I would personally say that it is really Debian that should be giving their users a warning on installing that old version of Syncthing that it may not be compatible with the newer ones. This would make the users at least aware of potential problems.

For the record, the OP stated that their Syncthing ran 1.17.0 on both sides though.

1 Like

Updating my Raspberry pi os did the trick

I just ran sudo apt update && sudo apt upgrade on my Raspberry Pi running RetroPie (so basically Raspbian). It’s still running Syncthing version 1.0.0 and unable to sync with my Android device running version 1.17.0 with the same error (server selected unsupported protocol version 303).

Is there anything else you did to get it to connect that I could try?

Edit: I got it to work by using the Syncthing-Fork android app.

A simple upgrade is not enough. You need to add Syncthings apt repository first.

https://apt.syncthing.net/

2 Likes

That’s only a temporary workaround until @Catfriend1 releases 1.17.0. This can only be solved by updating your old Syncthing versions.

2 Likes

You need to either upgrade that really old Debian version or stay on an older version on the other side.

The Syncthing Versions & Releases documentation indicates that if two versions of Syncthing ‘cannot connect to each other or otherwise can’t sync files for some reason’ then the new version should be a new major version.

I strongly suggest that 1.17.0 should have been 2.0.0. Or, better still, have defaulted to a compatible mode.

Adding another apt repo decreases system stability, which is a large part of the reason someone would be running Debian stable in the first place.

3 Likes

I agree but proper use of Semver does not solve version incompatibilities, it only makes them easily discoverable.

Less secure defaults for everyone as long as Debian supports the release isn’t really that great.

The syncthing apt repo ships statically linked binaries and doesn’t override any non-syncthing packages.

Whether the software is “too old”, insecure, or both, the documentation has to be accurate. It’s the only authoritative resource we have to administer our systems and if the docs are irrefutably incorrect then what’s the point of them?

There is theoretical purity and there is pragmatism. I generally lean towards the latter. A 2.0 would imply major changes, incompatibility with all 1.x versions, and prevent auto upgrades. None of that was desirable. A couple of early 1.x versions are incompatible; there are workarounds. This is not the end of the world.

5 Likes

And on top of that: Only incompatible by default. You can still trade security for compatibility with an opt-in configuration switch.

1 Like

For those of us coming here after googling the error message, could you provide a hint how to set that configuration switch on Android? I couldn’t find anything like that in the app. It would be great to have a simple solution like that.

One workaround I haven’t seen suggested here for Android users who can’t/don’t want to upgrade their older syncthing instances is to install version 1.16.0 of the app using f-droid. That’s what got things back into a working state for me.

1 Like