Subsonic credentials failing

App version

Production

Issue description

My subsonic logins work via URL but can’t verify in symfonium app

Device type

Phone

Media provider

Subsonic (Open)

Steps to reproduce

I open settings, open media providers, I input my local navidrome instance, I configure my secondary server with my correct subsonic URL and username and password and select https, ive tried with legacy tab on and off, symfonium outputs failed go connect incorrect username or password

I searched existing issues first

on

I understand that logs are mandatory

on

Log upload name / description

swearjo65

2026-08-26 12:31:38.915 Verbose SubsonicLogger  <-- [474] 200 https://xxxx/rest/ping.view?u=REDACTED&t=REDACTED&s=REDACTED&v=1.13.0&c=Symfonium&f=json (112ms, unknown-length body)
2026-08-26 12:31:38.916 Verbose SubsonicLogger  <-- [474] {"subsonic-response":{"status":"failed","version":"1.16.1","type":"navidrome","serverVersion":"0.63.2 (be10f89c)","openSubsonic":true,"error":{"code":40,"message":"Wrong username or password"}}}

I can only repeat the same thing the app and your server says.

Roger that, thanks for your prompt response, I’ll keep playing around with it

So I went back and I tested the exact request version shown in your log (v=1.13.0) against the same Navidrome 0.63.2 server using the same username/password and the standard MD5 token authentication (t=md5(password+salt)). It returns status=“ok”. The identical request generated by Symfonium returns Navidrome error 40. This appears to indicate that Symfonium is generating a different token/password value than the successful request. The server, reverse proxy, Cloudflare, and Navidrome authentication are working correctly.

According to Navidrome Analytics | Navidrome there’s at least 46000 users of Symfonium connected to Navidrome so I can assure you that the Symfonium part works.

Do you copy paste with extra spaces ? Use some special unicode or other thing ?

Oh yeah its been working great, this issue just started up yesterday, haven’t changed anything, have got the same exact subsonic working fine in other players right now so no biggie, I can listen on one of them. Thank you for your prompt assistance

Check server logs. I have no way to tell anything more if you do not answer the questions as you see things are redacted all I see is the query and the server answer.

The Navidrome server log confirms Symfonium is reaching the correct /rest/ping.view endpoint and Navidrome recognizes the username swearjo65. However, Navidrome rejects Symfonium’s Subsonic authentication as invalid authentication / error 40.

I independently tested the same server, username, password, Subsonic token authentication, and v=1.13.0 from the command line and Navidrome returned status=“ok”.

The server log for Symfonium shows repeated failures from both IPv4 and IPv6:

auth=subsonic error=“invalid authentication” username=swearjo65

There are no proxy/Cloudflare errors; Navidrome itself is rejecting the authentication.

What additional server-side information would you need to determine why Symfonium’s generated authentication differs from the successful direct request?

Logs from event:

docker logs --since “2026-08-26T16:25:00Z” --until “2026-08-26T16:35:00Z” navidrome 2>&1

time=“2026-08-26T16:26:22Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=24.214.200.48 requestId=5000afb2e543/6BWADKnjn8-004524 username=swearjo65

time=“2026-08-26T16:26:22Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004524

time=“2026-08-26T16:26:45Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=24.214.200.48 requestId=5000afb2e543/6BWADKnjn8-004527 username=swearjo65

time=“2026-08-26T16:26:45Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004527

time=“2026-08-26T16:27:16Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=24.214.200.48 requestId=5000afb2e543/6BWADKnjn8-004528 username=swearjo65

time=“2026-08-26T16:27:16Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004528

time=“2026-08-26T16:27:48Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004531 username=swearjo65

time=“2026-08-26T16:27:48Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004531

time=“2026-08-26T16:28:34Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004532 username=swearjo65

time=“2026-08-26T16:28:34Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004532

time=“2026-08-26T16:28:52Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004535 username=swearjo65

time=“2026-08-26T16:28:52Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004535

time=“2026-08-26T16:29:22Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004536 username=swearjo65

time=“2026-08-26T16:29:22Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004536

time=“2026-08-26T16:29:53Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004539 username=swearjo65

time=“2026-08-26T16:29:53Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004539

time=“2026-08-26T16:30:23Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004540 username=swearjo65

time=“2026-08-26T16:30:23Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004540

time=“2026-08-26T16:30:28Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004541 username=swearjo65

time=“2026-08-26T16:30:28Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004541

time=“2026-08-26T16:30:58Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004544 username=swearjo65

time=“2026-08-26T16:30:58Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004544

time=“2026-08-26T16:31:38Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004547 username=swearjo65

time=“2026-08-26T16:31:38Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004547

time=“2026-08-26T16:32:09Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=“2600:1005:b116:daa3:d834:ff:fe6c:15d1” requestId=5000afb2e543/6BWADKnjn8-004548 username=swearjo65

time=“2026-08-26T16:32:09Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004548

Try legacy auth / compat mode to see what the server returns.

With legacy: docker logs -f --tail 0 navidrome

time=“2026-08-26T17:44:53Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=24.214.200.48 requestId=5000afb2e543/6BWADKnjn8-004717 username=swearjo65

time=“2026-08-26T17:44:53Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004717

time=“2026-08-26T17:45:09Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=24.214.200.48 requestId=5000afb2e543/6BWADKnjn8-004718 username=swearjo65

time=“2026-08-26T17:45:09Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004718

time=“2026-08-26T17:45:32Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=24.214.200.48 requestId=5000afb2e543/6BWADKnjn8-004719 username=swearjo65

time=“2026-08-26T17:45:32Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=5000afb2e543/6BWADKnjn8-004719

Since I guess I’m not clear:

What special characters are you using in your password ?

And activate debug logging in Navidrome to see the actual requests.

If the request are properly legacy in that second case then there’s nothing generated on Symfonium side. And nothing have magically changed yesterday.

With salt mode only thing would be an update of your OS that changed the deviceID and that it would contain a + that is known to be broken on Navidrome side but should never happen on devices.

Yes, my Navidrome password contains special characters, including + and ^. However, the same password successfully authenticates against the server using the standard Subsonic authentication method from curl. I haven’t changed the password. I’m willing to enable Navidrome DEBUG logging so we can determine whether Symfonium’s generated salt/device ID contains a +.

Here is the Navidrome DEBUG output from the Legacy/Compat test. Navidrome receives the expected Subsonic request from Symfonium 15.0.1 / Android 16 with username swearjo65, API version 1.13.0, and returns error=40 invalid authentication. The server redacts t and s in its debug output.

I independently generated the standard Subsonic t=MD5(password+salt) authentication request from the same server using the same username/password and v=1.13.0, and Navidrome returns status=“ok”.

So the credentials themselves are valid; the difference appears to be in the authentication parameters generated by Symfonium.

ocker inspect navidrome --format ‘{{range .Config.Env}}{{println .}}{{end}}’ | grep ‘^ND_LOGLEVEL=’

ND_LOGLEVEL=debug

swearjo65@rayfizzle:/mnt/flac_storage/stacks/music-pipeline$ docker logs --since “2 minutes ago” navidrome 2>&1 \

| grep -Ei ‘subsonic|auth|login|invalid|ping.view|swearjo65|salt|device’

invalid value for “since”: failed to parse value as time or duration: “2 minutes ago”

swearjo65@rayfizzle:/mnt/flac_storage/stacks/music-pipeline$ docker logs --since 2m navidrome 2>&1 \

| grep -Ei ‘subsonic|auth|login|invalid|ping.view|swearjo65|salt|device’

time=“2026-08-26T18:10:18Z” level=debug msg=“API: New request /rest/ping.view” client=Symfonium requestId=9096beb32324/3U6AsURkl6-000001 username=swearjo65 version=1.13.0

time=“2026-08-26T18:10:18Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=24.214.200.48 requestId=9096beb32324/3U6AsURkl6-000001 username=swearjo65

time=“2026-08-26T18:10:18Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=9096beb32324/3U6AsURkl6-000001

time=“2026-08-26T18:10:18Z” level=debug msg=“HTTP: GET http://navidrome.fluffybutthut.org/rest/ping.view?u=swearjo65&t=[REDACTED]&s=[REDACTED]&v=1.13.0&c=Symfonium&f=json” elapsedTime=6.7ms httpStatus=200 remoteAddr=24.214.200.48 requestId=9096beb32324/3U6AsURkl6-000001 responseSize=194 userAgent=“Symfonium/15.0.1 (Linux;Android 16)”

time=“2026-08-26T18:10:38Z” level=debug msg=“UI configuration” appConfig="map[baseURL: defaultDownloadableShare:false defaultDownsamplingFormat:opus defaultLanguage: defaultTheme:Dark defaultUIVolume:100 devActivityPanel:true devNewEventStream:true devShowArtistPage:true devSidebarPlaylists:true devUIShowConfig:true enableArtworkUpload:true enableCoverAnimation:true enableDownloads:true enableExternalServices:true enableFavourites:true enableInspect:true enableNowPlaying:true enableReplayGain:true enableSharing:true

enableStarRating:true enableTranscodingConfig:false enableUserEditing:true extAuthLogoutURL: firstTime:false gaTrackingId: lastFMEnabled:true listenBrainzEnabled:true loginBackgroundURL:/backgrounds losslessFormats:FLAC,ALAC,APE,SHN,DSF,WV,WVP,TAK,WAV maxSidebarPlaylists:100 playbackReportIntervalMs:60000 pluginsEnabled:true separator:/ shareURL: uiCoverArtSize:300 uiSearchDebounceMs:200 variousArtistsId:63sqASlAfjbGMuLP4JhnZU version:0.63.2 (be10f89c) welcomeMessage:]"

time=“2026-08-26T18:10:48Z” level=debug msg=“API: New request /rest/ping.view” client=Symfonium requestId=9096beb32324/3U6AsURkl6-000004 username=swearjo65 version=1.13.0

time=“2026-08-26T18:10:48Z” level=warning msg=“API: Invalid login” auth=subsonic error=“invalid authentication” remoteAddr=24.214.200.48 requestId=9096beb32324/3U6AsURkl6-000004 username=swearjo65

time=“2026-08-26T18:10:48Z” level=warning msg=“API: Failed response” endpoint=/rest/ping.view error=40 message=“Wrong username or password” requestId=9096beb32324/3U6AsURkl6-000004

time=“2026-08-26T18:10:48Z” level=debug msg=“HTTP: GET http://navidrome.fluffybutthut.org/rest/ping.view?u=swearjo65&t=[REDACTED]&s=[REDACTED]&v=1.13.0&c=Symfonium&f=json” elapsedTime=2.8ms httpStatus=200 remoteAddr=24.214.200.48 requestId=9096beb32324/3U6AsURkl6-000004 responseSize=194 userAgent=“Symfonium/15.0.1 (Linux;Android 16)”

time=“2026-08-26T18:11:38Z” level=debug msg=“UI configuration” appConfig="map[baseURL: defaultDownloadableShare:false defaultDownsamplingFormat:opus defaultLanguage: defaultTheme:Dark defaultUIVolume:100 devActivityPanel:true devNewEventStream:true devShowArtistPage:true devSidebarPlaylists:true devUIShowConfig:true enableArtworkUpload:true enableCoverAnimation:true enableDownloads:true enableExternalServices:true enableFavourites:true enableInspect:true enableNowPlaying:true enableReplayGain:true enableSharing:true

enableStarRating:true enableTranscodingConfig:false enableUserEditing:true extAuthLogoutURL: firstTime:false gaTrackingId: lastFMEnabled:true listenBrainzEnabled:true loginBackgroundURL:/backgrounds losslessFormats:FLAC,ALAC,APE,SHN,DSF,WV,WVP,TAK,WAV maxSidebarPlaylists:100 playbackReportIntervalMs:60000 pluginsEnabled:true separator:/ shareURL: uiCoverArtSize:300 uiSearchDebounceMs:200 variousArtistsId:63sqASlAfjbGMuLP4JhnZU version:0.63.2 (be10f89c) welcomeMessage:]"

Can Symfonium show me the salt/device ID it is generating, or can you tell from your side whether the salt contains +?

No it can’t by design. The only other case would be an OS update that broke the normal Android way and return a different default charset than UT8.

Since you have a reverse proxy you can see exactly what’s sent there.

I have a oneplus 13r but its last update was a few weeks ago, so it was working after the last update, and I have Confirmed the Symfonium server configuration is HTTPS on port 443. The 443 endpoint is Cloudflare Tunnel, which forwards navidrome.fluffybutthut.org to localhost:4533. I also confirmed the same username/password works with Subsonic v1.13.0 independently. Navidrome DEBUG shows Symfonium reaching /rest/ping.view and rejecting its authentication. I can also confirm the Cloudflare Tunnel is the reverse proxy in this setup, not Nginx.

Hey no worries, I figured it out, I took those same exact subsonic log ins that weren’t working on symfonium and put them in Solound and they worked perfectly, sounds great, so you helped me out after all, thank you, issue solved

Yep that way the issue only you have will never get fixed :wink: Glad you liked the other app.