Unable to play Qobuz track via Roon after installing bonded ADSL lines [Solved: specific combination of line → modem → FB port]

Roon Core Machine

Roon ROCK

Networking Gear & Setup Details

Firebrick FB2900

Connected Audio Devices

NEO iDSD and Naim NDX 2

Library Size

8000 tracks

Description of Issue

After installing a Firebrick FB2900 device to bond 2 ADSL lines, I cannot play Qobuz tracks via Roon. My Roon ROCK logs report that it can’t establish an SSL connection to https://streaming-qobuz-std.akamaized.net/file?uid=1694351&eid=14158210&fmt=7&profile=raw&app_id=188245549&cid=1063238&etsp=1628185145&hmac=Keo3CrnrlMbh0qpBPCiF5hwdp2c

If I unplug one of my ADSL lines, it starts working again.

While this might at first sound like it is not a Roon problem:

  • I can stream Qobuz tracks via the Qobuz app.
  • I can stream TIDAL tracks via both Roon and the TIDAL app
  • I can stream from the akamai url that Roon is failing to load from if I use my web browser.

So, there is something specific about the way that Roon is trying to connect to that endpoint that makes it fail. It does work in all other situations.

This happens for all Qobuz tracks.

It makes no difference what Roon zone/device I try to play to.

I accept that this is kind of a niche problem, but it would be great to see it fixed. I really can’t do without the extra bandwidth that the second ADSL line provides.

Roon server logs show:

08/05 16:41:12 Error: [cachingseekableurimediafile] while reading: System.Net.WebException: The SSL connection could not be established, see inner exception.
 ---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
 ---> System.IO.IOException:  Received an unexpected EOF or 0 bytes from the transport stream.
   at System.Net.Security.SslStream.ReceiveBlobAsync[TIOAdapter](TIOAdapter adapter)
   at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
   at System.Net.Security.SslStream.ProcessAuthentication(Boolean isAsync, Boolean isApm, CancellationToken cancellationToken)
   at System.Net.Security.SslStream.AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions)
   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.SocketsHttpHandler.Send(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClientHandler.Send(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpMessageInvoker.Send(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async, Boolean emitTelemetryStartStop, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.Send(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
   at System.Net.HttpWebRequest.SendRequest(Boolean async)
   at System.Net.HttpWebRequest.GetResponse()
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetResponse()
   at Sooloos.Media.StreamingMediaFileImpl._ReadImmediate(Int64 file_off, Byte[] buf, Int32 off, Int32 count)
   at Sooloos.Media.StreamingMediaFileImpl._Read(Int64 file_off, Byte[] buf, Int32 off, Int32 count)
   at Sooloos.Media.StreamingMediaFileImpl.Read(Int64 file_off, Byte[] buf, Int32 off, Int32 count)
   at Sooloos.Media.CachingSeekableUriMediaFile.ReadCallback(IntPtr userdata, IntPtr buf, IntPtr count, IntPtr& out_bytesread)
08/05 16:41:12 Error: [zoneplayer] Unexpected Failure While Opening Sound: https://streaming-qobuz-std.akamaized.net/file?uid=1694351&eid=14158210&fmt=7&profile=raw&app_id=188245549&cid=1063238&etsp=1628185145&hmac=Keo3CrnrlMbh0qpBPCiF5hwdp2c: System.Exception: Read failure: IoFailure
   at Sooloos.Audio.MediaDecoderAudioSignal.Read(Byte[] buffer, Int32 offset, Int32 frames)
   at Sooloos.Broker.Transport.FormatDetectAudioSignal..ctor(IAudioSignal backing, Double sniff_seconds)
   at Sooloos.Broker.Transport.AudioSignalFactory.<>c__DisplayClass0_0.<Create>b__0(CallingThread cx)

I have now tracked this down to a network issue that has now been resolved.

For some reason the problem reliably affected playing Qobuz tracks via Roon, but also produced occasional, intermittent failures and slowness for various websites.

For anyone else that has issues with Roon and Firebrick 2900 line bonding, I have both a Draytek router and a Zyxel, both in bridge mode. The Draytek turned out to be very sensitive to which ADSL line and Firebrick port it was connected to.

I resolved it by trying every permutation of my 2 ADSL lines, plus modems plus Firebrick ports. It turns out that only one specific combination of line → modem → FB port actually worked.

1 Like

This topic was automatically closed 36 hours after the last reply. New replies are no longer allowed.