

This feature originally appeared in Australian Hi-Fi magazine, an Australian sister publication to What Hi-Fi?. Click here to find more information on Australian Hi-Fi, including digital editions and details on how you can subscribe.
Last year I went on a mission to prove whether or not Tidal streams were, as the streaming service claimed, truly lossless – and the results were pretty reassuring.
Now, it's time to don my detective cap once again and hold my magnifying glass to the audio quality of other streaming technologies – not a streaming service this time, but instead the three most popular streaming protocols that many of us streaming-savvy music listeners use every single day.
Let me set the scene: you have music on your phone or perhaps on some networked source in your home – and you are at home.
In your home, you have a wonderful hi-fi system through which you want to listen to that music, so you cast that music. That is, you dial up the music on your phone (or indeed tablet) via an app and tell it to play on some device connected to your system, over a shared internet connection.
The three most popular ways of casting music between devices in this consumer audio context are Apple AirPlay (aka 'AirPlay 2'), Google Cast and DLNA/UPnP (which stand for Digital Living Network Alliance and Universal Plug and Play, respectively).
Between them, these three protocols play ball with the majority of networked audio hardware and music streaming services out there.
But which is most accurate in delivering your source’s audio to your system? That’s what I set out to discover.
How good the casted sound you ultimately hear will, of course, largely depend on the talents of your system handling and outputting it, but if the elements of the digital audio are lost in the transmission in the first place, that will most likely degrade quality.
Ideally, and hopefully, the audio will be delivered ‘bit-perfect’. That is, every sample in the original digital audio file will arrive at your system’s DAC (digital-to-analogue converter) with its value exactly preserved.
It will then be up to the rest of your system to do the very best it can with all those bits, just as it would from, say, a CD transport.
There is a wealth of information out there about which streaming protocols work properly (i.e. which are and aren’t bit-perfect), and much of it conflicts. It's time to sort it all out...
My method
This is the boring bit and you are naturally free to scroll past it, but it is necessary to give confidence to the results.
I used two short test tracks: a rip from the 2009 remaster of Eleanor Rigby from The Beatles’ Revolver CD, which is in standard CD format (16-bit/44.1kHz PCM); and a rip of the stereo version of The Awakening from the DVD Audio of Alice Cooper’s Welcome to My Nightmare (24-bit/96kHz PCM, losslessly compressed using MLP on disc, but expanded to the original PCM).
The procedure for testing each casting method is as follows:
- I played the music file using an iPad or one of three Android devices, and several apps, casting it to one of several devices.
- I connected the S/PDIF output of the receiving devices to an RME ADI-2 Pro FS R Black Edition ADC/DAC.
- That ADC/DAC was connected via USB to my computer, which I used (with Reaper DAW software) to capture the digital stream.
- I then chopped the ends off the recorded file to match the original rip, and merge-pasted it into the original rip to see what was left.
After this inverse merge, a bit-perfect match would result in a digital music file the exact length of the original track, but with every single sample at zero. I would get a flat line, in other words.
Is Apple AirPlay bit-perfect?

For obvious reasons, I could only test AirPlay 2 with an iOS device. I therefore used an iPad (Gen 6), alongside two different receiving devices: a WiiM Pro music streamer and an Apple TV 4K video streamer.
Since the latter doesn’t have an S/PDIF output, I used an HDMI breakout box to separate the audio and convert it into S/PDIF for delivery. (The HDMI breakout box does not alter the format in any way; I use it with my Oppo Blu-ray player to extract DSD audio from SACDs to take advantage of the superior performance of my DAC.)
Grok AI had told me, to my surprise, that AirPlay 2 (at least sometimes) employed the Apple Lossless format for transmission. The CD-standard track was delivered to the WiiM Pro streamer with the correct sampling frequency (44.1kHz), though it soon became apparent that lossy compression had been employed or that other alterations had been applied to the track.
After subtracting the recording of the stream from the original, the average level of the remainder – that is, the difference between the two – was around -43.3dB, while the peak difference was just -21.6 (the smaller the negative number, the louder it is).
Listening to the remainder, it sounded similar to the original, just a lot quieter and somewhat distorted.
But hey, while the WiiM Pro supports AirPlay 2, it isn’t an Apple device, so I repeated the process with the Apple TV 4K. Or rather, I intended to. It actually wasn’t worth doing the recording because with the video streamer everything was being converted to 48kHz sampling. I tried sample rates between 44.1kHz and 192kHz and they all came out the same. That is, not bit-perfect.
I went back to check the different sample rates using the WiiM Pro streamer, and it turned out that all the audio had been converted to 44.1kHz by AirPlay 2. Why the difference? Who knows.
But what I do know is that you would expect a system-wide digital audio output protocol to employ a fixed sampling rate. Because, of course, at the same time as you’re playing music, the iPhone or iPad might also have to produce audio from other apps, or even notifications from iOS itself.
They all must have the same sampling frequency so that they can be mixed together for casting.
To state the obvious, high-resolution audio could not be bit-perfect because of the sample rate conversion.
Is Google Cast bit-perfect?

There are two quite different forms of Google Cast. Many audio apps (such as Tidal) directly support Google Cast, even versions developed for iOS. They connect the app directly to the receiving device.
But you can also use Cast within Google's own Home app to cast selected apps (or anything on the phone) to a compatible playback device. In this mode, Cast is not bit-perfect, since every digital signal is converted to 48kHz sampling.
But from within certain apps, it is... almost bit-perfect. I used the BubbleUPnP app on three devices running various versions of Android: a Google Pixel 6 phone, a Samsung Tab A tablet and a FiiO M11 Plus portable digital audio player.
BubbleUPnP allows you to directly select Cast-compatible devices for playback. For example, I can (but don’t, natch) use that app to send music to a Google Nest Mini.
So almost bit-perfect, eh? Using this app on the trio of devices to send 44.1kHz audio via Google Cast to the WiiM Pro streamer, a significant proportion of samples were misplaced... but only by a mere -1 compared to the original.
I don’t understand what is going on here. I can affirm that this is not dither added somewhere in the stream. (For the uninitiated, dither is the random displacement of samples by one bit.)
The displacement here was neither random nor orderly. Zooming in over the full length of the song, the left and right channels looked like two UPC barcodes, but with many of the displacements clumped.
Yet a 22-second section in the left channel was absolutely bit-perfect, while the number of displacements in a row appeared to top out at about seven samples.
Oddly, the differences were identical with all three devices, meaning that this was somehow being generated algorithmically.
The result was a difference from the original averaging at: -116dB, peaking at -90dB. In other words, while not strictly bit-perfect, the differences were utterly inaudible.
That was just one receiving device, though. I therefore tried Google’s own (now discontinued) Chromecast Audio streamer dongle, and that was a little less than almost bit-perfect.
Instead of any given sample being out by only one bit in one direction, it could be out by anywhere between -2 and +1. The vast majority were out by -1, 0 or +1, with only a few out by -2.
To triple-check, I also tried a Google Chromecast TV dongle. I plugged its HDMI output into the HDMI audio breakout box, but once again the audio was converted to 48kHz, thus not bit-perfect. That’s probably because this dongle, like the Apple TV, is really intended for video.
How about high-resolution audio? I tested this only with the WiiM streamer, and again the result was almost bit-perfect.
There was just one bit of variation from 24-bit perfection, this time in the positive direction. And this looked a lot more like dither.
The effect of this would be a white noise floor of -144.5dB, which isn’t something I would be particularly concerned about since it sits under the natural noise floor by at least 30dB.
Is DLNA bit-perfect?

So far, so close, and yet still short of perfection! Not for much longer...
Out of 20 different equipment and streaming protocol trials with the CD-standard 16-bit/44.1kHz tracks, nine delivered an absolutely bit-perfect performance – and every one of those used DLNA.
Indeed, every trial of CD-style sound with DLNA delivered bit-perfection.
I used DLNA on the WiiM app (the standard connectivity for it) on both the iPad and the Pixel 6 phone. I used DLNA with the BubbleUPnP app on the Pixel phone, Samsung tablet and FiiO music player, and with the MConnect HD app on the iPad, and every single one gave a perfect result on the CD test track.
There’s nothing more to be said about that really. Well, there is one thing. Knowledgeable sceptics may ask: with DLNA, doesn’t the phone/tablet simply act as a controller, telling the music to stream directly from the network storage to the streamer? In other words, the music itself isn’t casting through the phone/tablet.
Except that with all of these, I also loaded the test track on both the phone and the tablet and repeated the tests. The only way for the music to get to the streamer in this instance was through the air, carried by the test protocol.
What about the 24-bit/96kHz test track then? The results here were mixed on the two different trials. With the Pixel 6 and BubbleUPnP, I had near perfection: that 1-bit dither-like noise at -144.5dB, just the same as with Google Cast.
But with the iPad and the MConnect HD app, I had absolute perfection, with not a single dot of difference in more than 29 million samples! In both scenarios I used the WiiM Pro streamer, so it appears it was not contributing the dither, nor was the Reaper DAW software.
I couldn’t find any setting with the Pixel 6 or BubbleUPnP app that might have changed that dither.
Anyway, in short, DLNA works to perfection – or so close to perfection – with 24-bit music that it seems to be the best way to stream audio wirelessly.
What about the wired route?

There is a fourth method of delivery that could also potentially be bit-perfect: via a wire. This would mean connecting the Lightning or USB socket of your phone/tablet directly to your DAC using a cable.
So I gave this method a go too. I used a USB-C-to-optical adapter dongle (CUI ILUX UCO-B1) to feed the device’s output to the RME ADC.
(For the connections, I used nondescript cables and connectors throughout. For example, with the iPad wired test, the CUI ILUX adaptor was plugged into a standard USB-C-to-USB-A adaptor, which in turn was plugged into a USB-A-to-iPod-32-pin camera kit adapter, which was then connected to the iPad via an iPod-32-pin-to-Lightning adaptor. Phew.)
So let’s say you have a USB Type-B port on the back of your DAC, allowing it to act as a USB Audio Device. I’m assuming USB Class 2 here, which supports resolutions beyond the 24-bit/96kHz limit of USB Class 1.
Maybe you don’t quite trust the wi-fi connectivity in your location or would simply rather go the more stable cabled route.
It turned out that with CD-quality audio, both the iPad and the Pixel 6 were capable of delivering bit-perfect performance.
In the case of the Pixel 6, though, I had to use the right app. I found that with BubbleUPnP, the output was converted to 48kHz on one DAC, and 96kHz on two others. Why the difference? It certainly eluded me.
I instead used an app specifically designed for USB output: the USB Audio Player Pro. By default, this sends out CD-standard audio with 24 bits of resolution for some reason, but I found a couple of app settings that made it bit-perfect, after which it delivered 16-bit/44.1kHz properly.
With this app, bit-perfection was achieved. As it was using both the MConnect and standard Apple Music apps on the iPad.
Moving to hi-res audio, I discovered something interesting with the iPad. Using MConnect, the sound came through kind of bit-perfect. The difference was clear: only the most significant 16 bits were used while the bottom eight bits were ignored.
In other words, although the full frequency range provided by 96kHz sampling was retained, only a 16-bit resolution was available.
Finally, delivering 24-bit/96kHz over a wire from the Pixel 6 using USB Audio Player Pro gave me another ‘almost’.
Again, it included one bit of dither, amounting to a noise floor of around -144dB.
Ladies and gentleman, we have a winner...
It seems there is no snappy answer to the question ‘what is the highest quality way of getting music from my device to my audio system?’
It turns out to be complicated: the source device, the app you use, the settings within it, and the receiving device all have an impact.
Intuitively, you would think the wired route would be the best, but at least in my testing environment, the most consistent perfection was achieved by the iPad running the MConnect Pro app and DLNA. Indeed, this even outperformed a wired connection from the iPad.
But the various Android devices were almost as good: bit-perfect with DLNA to the WiiM streamer on CD quality, and markedly better than the iPad when it came to 24-bit audio connected by wire.
Good luck experimenting yourself!
MORE:
Hi-res music streaming services compared: is Tidal, Qobuz, Amazon or Apple Music better?
The best music streamers you can buy