When using the WiiM Ultra as a Roon Chromecast endpoint there are momentary disconnections in the middle of tracks after which music playback is paused
In the middle of a track WiiM Remote will briefly display “Select an audio zone”, then the WiiM Ultra Chromecast endpoint returns with paused playback.
My understanding is this might be due to fewer available web APIs with the updated Google Cast GC4A 2.0 SDK that is used for all new devices. Or perhaps there’s a wider issue with the updated Google Cast protocol. Is Roon aware of this issue and working on a fix?
At first it was a wifi connection, then I used ethernet directly to the router. I tried downsampling everything to 44.1 or 48kHz. None of that fixed the issue.
One advantage of Chromecast is I can quickly pause playback on my phone using Shared Controls when a call comes in without opening an app. Another reason is I can group my WiiM devices with other Chromecast devices (old CCA pucks and JBL Link speakers).
For now I am using Roon Ready on the WiiM Ultra, but I want to have the option of using Google Cast.
Below is the WiiM Support reply to my feedback submission. WiiM says they reported the issue to Google, Google probably sees it as a Roon issue, or a Qobuz issue, or who knows what. Current Google Cast is broken with applications written for older Chromecast and there’s little sign that anyone has taken charge of the fix.
We apologize for the inconvenience.
This issue is related to the latest Google SDK, and we have reported it to Google for optimization. We kindly ask for your patience in the meantime. For now, you can use Roon Ready as an alternative.
I think the next step here is to enable some diagnostics on your account so our technical staff can get some more insight into what’s going on here.
However, before I enable this feature, I’d like to ask for your help ensuring we gather the right information.
First, can you please reproduce the issue once more and note the time at which the error occurs. Then respond here with that time, and I’ll make sure we review the diagnostics related to that timestamp.
Thanks so much. I’m away from my WiiM Ultra for a day or two, but on another network I just encountered a glitch using my WiiM Pro as a Roon Chromecast endpoint.
Playback stopped in the middle of a track and would not restart. Roon Remote showed a “pause” button, suggesting that playback was in progress. The progress bar was moving back and forth a bit. I was able to resume playback by skipping to the next track.
Time: 5:18 pm EDT while streaming from Qobuz.
Release: J.S. Bach: Violin Works, Vol. 2 (Arr. for Guitar)
Artist: Jason Vieaux
Track: Loure (Part 2 of Partita for solo violin No. 3 in E major, BWV 1006)
Thanks for the report! We were able to review a fresh diagnostic report from your Roon Server that do appear to be network-related, can you provide more details around the network hierarchy?
Reproducing in your typical home environment would be the best next step in troubleshooting, otherwise, there’s simply too many variables to rule out.
This very well could be the issue, but we’ll have our team take a closer look into a fresh diagnostic report to confirm. If you could share another timestamp when in your typical network environment.
Thanks. The details above are for a possibly separate problem on my WiiM Pro, which is connected through wifi. My original post was for a disconnection issue on my WiiM Ultra, which is on a different network in a different location now.
I should be able to report time and details for the WiiM Ultra issue when I’m back on that network in a day or two. I would expect that not to be network-related since the Ultra is connected by ethernet directly to my router. Also, WiiM did reply that there’s a known Google Cast SDK problem.
OK, it took much longer than last time I was on the network with my WiiM Ultra, but while playing a track Roon spontaneously skipped to the next track. Sometimes that’s the issue, more often last time I was here Roon disconnects from the endpoint briefly, then pauses playback. Details below.
Time: 12:45pm EDT Sept 15th, 2024
Roon Server: HP Spectre running Windows 10
Roon Endpoint: Chromecast to WiiM Ultra Firmware 5.2.628942
Roon Server Connection: Ethernet to Netgear N600 WNDR3700v4
WiiM Ultra Connection: Ethernet to Netgear N600 WNDR3700v4
Modem: Arris SURFboard SB6121
Music Source: Qobuz
Release: Here For A While by Neil Swainson and His Sextet
Skipped Track: At The End Of The Day (played 55%)
Next Track: Lagrange Point
OK, now it did the more typical playback crash. Roon paused in the middle of playback. Same info as above except for time and track.
Time: 2:13 pm EDT September 15th, 2024
Music Source: Qobuz
Release: Here For A While by Neil Swainson and His Sextet
Track: One For Rob (paused at 5:54)
Thanks for the timestamps! Upon review, we’re seeing playback stopping due to Roon losing connection via chromecast on the device :
Info: [cast] lost device CastDevice[DeviceId=WiiM-Ultra-9e7d9db0cd76898c61038804fbb0a6b8._googlecast._tcp.local, Name=Chromecast Audio, Address=192.168.1.8] because it disconnected
It would make sense in this case to be the issue, as the tracks are 100% buffered when the disconnect occurs. The error report also mentions an access timeout on the fully downloaded file, suggesting that even though the track was buffered, the system and playback zone couldn’t maintain access to it.
While I don’t believe the file source to play a role in this issue, are you able to reproduce the issue using a local track?
Thanks. I’m playing a long queue now from local files to see if the same problem occurs. It can take a long time for the first crash, but once that happens playback stops frequently.
FYI some information below that seems relevant. Am I right to assume that an important reason for Roon’s large Chromecast buffer is gapless playback? I do notice that the track progress displayed on my WiiM Ultra doesn’t match the track progress on Roon Remote.
Web Receiver apps running on audio devices must manage memory usage as follows:
Avoid downloading or using any image or graphics assets, to reduce memory footprint and shorten the time until playback starts.
When using Media Source Extensions (MSE), applications must limit the stream buffer to 2MB. If using the Media Player Library (MPL), the application’s stream buffer size is already defined by MPL.
When using HTMLMediaElement, the application’s stream buffer size is defined by Chrome based on the stream rate. Limit the audio bitrate to 2 megabits per second, which supports all codecs described in Supported Media (up to 48KHz/16bit).
HTMLMediaElement is one set of the APIs supported by the new Google Cast SDK. For Hi-Res, the media service providers can choose to implement their web receiver with Media Source Extension, which is mentioned just slightly above the line you quoted.
2MB of buffer may seem like nothing, but 1 second of uncompressed 32-bit 192hz WAV audio data uses about 1.5MB. If it’s the more realistic 24-bit 96hz data, the number is closer to 0.6MB. If the audio source is FLAC, it’s even less than that. As long as the web receiver gets the data more frequently in small batches, it’s perfectly fine.
This is the precise reason why Roon is problematic over GC4A 2.0. It goes against the guideline and uses much more buffer than that in order to achieve better audio casting quality. The more buffer you have, the less you are affected by network issues. It’s also why Plex doesn’t work, because plex expects to send the entire song to the buffer at once.
It took all day but I did duplicate the problem playing a track from a local file.
I played local files for 3 +/- hours without a problem. Then I decided to play a a very long album of Mozart piano concertos from Qobuz thinking that maybe having multi-part tracks in the queue could trigger the issue. That played for hours without a problem.
Then I picked some tracks from a locally stored album to “Play Next”. That was to test whether inserting tracks into a long queue could trigger the issue. I also moved the position of those tracks within the queue.
On the last of those inserted tracks there was a disconnection for about 15 seconds at the 4:10 mark, then the endpoint reconnected with playback paused. I don’t have the exact time but I think it was around 4:10 pm EDT.
One note: it’s a different network in a different location now. I brought my WiiM Ultra here in order to continue testing. Unlike before, the Ultra is using wifi, not ethernet.
I wonder if adding, inserted and moving tracks in the queue might be part of the problem with newer Google Cast devices. I imagine that could complicate the buffer.
It just happened again. I added a long playlist to the queue, played the queue from the added tracks, then pressed “Shuffle” for the queue. I think this may contribute to the problem.
Approximate Time: 2:34 pm EDT September 18th, 2024
Track: Chanson Pour Michele (stopped at 1:08)
Album: Casa by Jaques Morelenbaum, Paula Morelenbaum, Ryuichi Sakamoto
Roon has been continuing to pause playback in the middle of tracks, but now it spontaneously skipped to the next track without showing a disconnection. I wonder if the difference from paused playback has to do with whether the entire track has been buffered.
Time: 5:29 pm EDT September 18th, 2024
Skipped Track: Aparecida from Duos II by Luciana Souza (played 40%)
Just briefly disconnected and paused playback again (5:58pm EDT). The frequency now makes it impossible to get through playing more than a couple tracks through the WiiM Ultra Chromecast endpoint.