I’m not able to download tracks from my Navidrome server. The tracks play fine, but when I try to add them to the permanent cache they show up with “HTTP Error 400”. This happens for any track in my library.
Logs:
Upload description: tim.a.9707
Additional information:
In the Symfonium debug logs, it looks like at the time of the download it makes a getSong.view request (which succeed) followed by a stream.view request with the 400 error.
When I view the HTTP logs for my server, I can see the getSong.view request, the subsequent requests don’t have the stream.view url:
192.168.1.1 home.xxx.org - [08/Nov/2025:22:18:16 -0600] “GET /music/rest/getSong.view?id=gPn59H4mQoCQa9MAVoX908&u=REDACTED&t=REDACTED&s=REDACTED&v=1.13.0&c=Symfonium&f=json HTTP/2.0” 200 730 “-” “Symfonium/13.5.0b (Linux;Android 16)”
192.168.1.1 - - [08/Nov/2025:22:18:16 -0600] “GET HTTP/2.0” 400 345 “-” “-”
192.168.1.1 home.xxx.org - [08/Nov/2025:22:18:16 -0600] “PRI * HTTP/2.0” 100 1449 “-” “-”
If I un-redact the stream.view request and paste it in a browser, it downloads the song. I can also download songs from my server using DSub.
Reproduction steps:
Connect to Navidrome server > Select a song > More Actions > Offline cache and download > Add to permanent cache
The http server whose logs I posted is doing the proxying. So it does not appear to me that Symfonium is making valid requests to the proxy. And as I mentioned, identical requests made by other apps work as expexted.
I’ve been poking at the logs and I suspect that Symfonium is sending an empty Accept-Encoding header value in a HTTP2 request, and that my webserver is rejecting this as invalid.
When you find any RFC that says it’s mandatory I’ll enforce one, else since it’s a download endpoint it’s perfectly normal to omit it, specially since it prevent issues on a couple of servers.
The actual fact, is that you have instant answers on a Sunday to help you fix your proxy configuration, something that is 100% outside of Symfonium support scope …
All that while you repeated, it’s Symfonium fault, it can’t be something else …
So reality is quite different from what you think it is …