This is a review and detailed measurements of Google Chromecast Audio digital output. The Chromecast is a tiny dongle that allows one to "cast" (stream) audio and video to a remote device. The audio version as the name implies, foregoes the video functionality and provides audio streaming. The retail cost is $35.
Chromecast Audio has dual outputs in the same 3.5 mm jack. One is the standard stereo analog. The other, by use of a cable you need to buy, is Toslink digital optical output. The appeal, and the scenario for testing in this article is that by addition of the Chromecast audio to your own DAC using Toslink you immediately turn your DAC into a networked streamer. Concern however has been raised that the Toslink output has too much jitter to be a good interconnect. In this article, I will be digging into this aspect of the device. In a future article I will measure its DAC and analog output performance.
The Chromecast Audio is a tiny round dongle. It has a USB jack for power and the aforementioned 3.5 mm jack. Here, you see it connected with my switching USB power supply and the special Toslink to 3.5 mm cable:
The device requires setup for its Wifi functionality which I won't dig into. After that, in my admittedly limited testing it has proven to be very reliable in being recognized and streaming audio.
I have procrastinated testing the Chromecast Audio because I was not happy with using Google Cast software due to fear of it not being "bit exact." The protocol Google uses for streaming is proprietary so until recently, you were stuck with whatever opaque data path Google provided. Previous tests used PLEX media server which I have also used in other testing but I still preferred to use something more known and better.
Enter Roon's support of Chromecast audio as a remote audio device. Since I use Roon for my personal music enjoyment and for testing devices that don't act like a sound device in Windows (i.e. all networked streaming/rendering DACs), I was very happy to read that Roon can now talk to Chromecast Audio. How well was something I needed to figure out.
Let's get into measurements and answer these questions.
Measurements
Guessing that Google's CAST protocol or software is limited to 16 bits, I created a 12 kHz tone at that bit depth for test of jitter and noise. Jitter's amplitude is proportional to frequency of source material and hence the high frequency of this tone (relative to common 1 kHz we use for other measurements).
For the test setup, I connected the Chrome browser to my Chromecast audio and dragged the above file to its window. That gave me a plain play/pause control which was fine for this purpose. At connection time it asked for the volume and I set that to max. I connected the Toslink output of the Chromecast Audio to the input of my APx555 Audio Precision analyzer Toslink input.
Here is output comparing the Chromecast output (red) compared to APx555 playing the same file over its Toslink output (blue):
Yuck! We have a massive transformation of our simple 12 kHz tone. Tons and tons of distortion spikes are added along with heavily modulated noise floor. Fortunately a lot of it is either at low amplitude or masked by the main tone. Assuming they amplitude of distortions is signal dependent, then they are not as audible as the graph indicates. Still, we don't want to see this level of degradation in such a simple tone. Even if there is lossy compression going on (which I suspect there is), a pure tone should be encoded perfectly since it is so easy to compress.
Lossy codec testing is almost always done using listening tests. But some measurements should be performed to make sure simple scenarios such as flat frequency response and distortion free (or close to it) is achieved with simple tones. Clearly this is not done by Google which is a shame. So forget about 24 bit audio, we can't play 16 bit audio properly here.
Fortunately as I mentioned, I had Roon to test so I powered that up, and went all out using my 24-bit J-test file:
As we see, the results are identical to a whopping -375 dBFS!!! The APx555 internal audio representation is 32 bit floating point so it is able to achieve very low noise floors as you see.
The spikes are supposed to be there by the way. J-test signal toggles the low order bit at the rate of 250 hz which when decomposed into frequency spectrum, will have 250 Hz tone followed by odd harmonics forever. Normally you don't see this because it is buried in the noise of analog measurements (and addition of dither).
What this says is that we have perfect digital capture at 24 bits/48 kHz sampling through Roon. This allows us to then perform our standard measurements and not be limited by the audio pipeline. To that end, let's connect the Toslink output to a Topping D50 and measure its analog output and see how the two sources compare:
Since we are measuring analog output, we see aberrations such as mains contributions on the left. And a couple of jitter spikes around our main tone. Important thing here though is that the results are identical whether I use APx555 to source the bits or Chromecast audio driven by Roon. The Chromecast Audio is not at all the limitation here and is as transparent as it needs to be.
Now, the blogger Archimago found jitter to be higher in Chromecast Audio than other sources he used. His test DAC was the Teac UD-501. I tested another variation of that DAC and it is not as well behaved as the Topping DACs are (see https://audiosciencereview.com/foru...asurements-of-teac-nt-503-networked-dac.2028/). I don't have the Teac anymore but do have a Schiit Modi 2 Uber which from prior testing, shows willingness to let noise on its inputs to bleed into its output. Here is how that comparison stacks up:
Now we see that the Chromecast Audio's Toslink output (in red) is indeed more "jittery." Here it is even more so than the Teac UD-501 that Archimago tested because the Schiit Modi 2 Uber is a lesser DAC.
Conclusions
There are a few here:
1. The CAST audio functionality of Google Chrome is horrid. There is no excuse for it to be butchering even simple 16-bit signals as it did. While audibly it is not as dire as it looks, I still would avoid it if you can.
2. Roon's implementation of Chromecast streaming is superb. It is bit accurate up to 24 bits and 48 kHz that I tested. Congratulations to Roon for job well done. I assume they received support from Google to implement it as the protocol otherwise is not open to the public.
3. The Chromecast output has more jitter than an audiophile/instrument grade Toslink output. This is evident when used with low quality DACs like Schiit Modi 2 Uber.
4. Using a well-designed Dac like the Topping D50, there is no difference at all between Toslink from Chromecast or higher fidelity sources. All the jitter is filtered out resulting in the performance of the DAC itself being the limit.
#4 is a great news here. It means that if you have a good DAC and use Roon, you can turn your DAC into a streamer/renderer using the Chromecast Audio. For just $35, that is a superb addition. As such, the combination of Roon and Chromecase audio is highly recommended!
EDIT: bit-perfect playback is also supported in Android apps like Hi-Fi Cast. See: https://audiosciencereview.com/foru...omecast-audio-digital-output.4544/post-102185. So you are not just limited to Roon.
-------------
As always, questions, comments, recommendations, etc. are welcome.
If you like this review, please consider donating using Patreon (https://www.patreon.com/audiosciencereview), or upgrading your membership here though PayPal (https://audiosciencereview.com/foru...eview-and-measurements.2164/page-3#post-59054).
Chromecast Audio has dual outputs in the same 3.5 mm jack. One is the standard stereo analog. The other, by use of a cable you need to buy, is Toslink digital optical output. The appeal, and the scenario for testing in this article is that by addition of the Chromecast audio to your own DAC using Toslink you immediately turn your DAC into a networked streamer. Concern however has been raised that the Toslink output has too much jitter to be a good interconnect. In this article, I will be digging into this aspect of the device. In a future article I will measure its DAC and analog output performance.
The Chromecast Audio is a tiny round dongle. It has a USB jack for power and the aforementioned 3.5 mm jack. Here, you see it connected with my switching USB power supply and the special Toslink to 3.5 mm cable:
The device requires setup for its Wifi functionality which I won't dig into. After that, in my admittedly limited testing it has proven to be very reliable in being recognized and streaming audio.
I have procrastinated testing the Chromecast Audio because I was not happy with using Google Cast software due to fear of it not being "bit exact." The protocol Google uses for streaming is proprietary so until recently, you were stuck with whatever opaque data path Google provided. Previous tests used PLEX media server which I have also used in other testing but I still preferred to use something more known and better.
Enter Roon's support of Chromecast audio as a remote audio device. Since I use Roon for my personal music enjoyment and for testing devices that don't act like a sound device in Windows (i.e. all networked streaming/rendering DACs), I was very happy to read that Roon can now talk to Chromecast Audio. How well was something I needed to figure out.
Let's get into measurements and answer these questions.
Measurements
Guessing that Google's CAST protocol or software is limited to 16 bits, I created a 12 kHz tone at that bit depth for test of jitter and noise. Jitter's amplitude is proportional to frequency of source material and hence the high frequency of this tone (relative to common 1 kHz we use for other measurements).
For the test setup, I connected the Chrome browser to my Chromecast audio and dragged the above file to its window. That gave me a plain play/pause control which was fine for this purpose. At connection time it asked for the volume and I set that to max. I connected the Toslink output of the Chromecast Audio to the input of my APx555 Audio Precision analyzer Toslink input.
Here is output comparing the Chromecast output (red) compared to APx555 playing the same file over its Toslink output (blue):
Yuck! We have a massive transformation of our simple 12 kHz tone. Tons and tons of distortion spikes are added along with heavily modulated noise floor. Fortunately a lot of it is either at low amplitude or masked by the main tone. Assuming they amplitude of distortions is signal dependent, then they are not as audible as the graph indicates. Still, we don't want to see this level of degradation in such a simple tone. Even if there is lossy compression going on (which I suspect there is), a pure tone should be encoded perfectly since it is so easy to compress.
Lossy codec testing is almost always done using listening tests. But some measurements should be performed to make sure simple scenarios such as flat frequency response and distortion free (or close to it) is achieved with simple tones. Clearly this is not done by Google which is a shame. So forget about 24 bit audio, we can't play 16 bit audio properly here.
Fortunately as I mentioned, I had Roon to test so I powered that up, and went all out using my 24-bit J-test file:
As we see, the results are identical to a whopping -375 dBFS!!! The APx555 internal audio representation is 32 bit floating point so it is able to achieve very low noise floors as you see.
The spikes are supposed to be there by the way. J-test signal toggles the low order bit at the rate of 250 hz which when decomposed into frequency spectrum, will have 250 Hz tone followed by odd harmonics forever. Normally you don't see this because it is buried in the noise of analog measurements (and addition of dither).
What this says is that we have perfect digital capture at 24 bits/48 kHz sampling through Roon. This allows us to then perform our standard measurements and not be limited by the audio pipeline. To that end, let's connect the Toslink output to a Topping D50 and measure its analog output and see how the two sources compare:
Since we are measuring analog output, we see aberrations such as mains contributions on the left. And a couple of jitter spikes around our main tone. Important thing here though is that the results are identical whether I use APx555 to source the bits or Chromecast audio driven by Roon. The Chromecast Audio is not at all the limitation here and is as transparent as it needs to be.
Now, the blogger Archimago found jitter to be higher in Chromecast Audio than other sources he used. His test DAC was the Teac UD-501. I tested another variation of that DAC and it is not as well behaved as the Topping DACs are (see https://audiosciencereview.com/foru...asurements-of-teac-nt-503-networked-dac.2028/). I don't have the Teac anymore but do have a Schiit Modi 2 Uber which from prior testing, shows willingness to let noise on its inputs to bleed into its output. Here is how that comparison stacks up:
Now we see that the Chromecast Audio's Toslink output (in red) is indeed more "jittery." Here it is even more so than the Teac UD-501 that Archimago tested because the Schiit Modi 2 Uber is a lesser DAC.
Conclusions
There are a few here:
1. The CAST audio functionality of Google Chrome is horrid. There is no excuse for it to be butchering even simple 16-bit signals as it did. While audibly it is not as dire as it looks, I still would avoid it if you can.
2. Roon's implementation of Chromecast streaming is superb. It is bit accurate up to 24 bits and 48 kHz that I tested. Congratulations to Roon for job well done. I assume they received support from Google to implement it as the protocol otherwise is not open to the public.
3. The Chromecast output has more jitter than an audiophile/instrument grade Toslink output. This is evident when used with low quality DACs like Schiit Modi 2 Uber.
4. Using a well-designed Dac like the Topping D50, there is no difference at all between Toslink from Chromecast or higher fidelity sources. All the jitter is filtered out resulting in the performance of the DAC itself being the limit.
#4 is a great news here. It means that if you have a good DAC and use Roon, you can turn your DAC into a streamer/renderer using the Chromecast Audio. For just $35, that is a superb addition. As such, the combination of Roon and Chromecase audio is highly recommended!
EDIT: bit-perfect playback is also supported in Android apps like Hi-Fi Cast. See: https://audiosciencereview.com/foru...omecast-audio-digital-output.4544/post-102185. So you are not just limited to Roon.
-------------
As always, questions, comments, recommendations, etc. are welcome.
If you like this review, please consider donating using Patreon (https://www.patreon.com/audiosciencereview), or upgrading your membership here though PayPal (https://audiosciencereview.com/foru...eview-and-measurements.2164/page-3#post-59054).
Last edited: