• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Measurements of Pixel 3 + VIMVIP headphone adapter + Google Play Music

edechamps

Addicted to Fun and Learning
Forum Donor
Joined
Nov 21, 2018
Messages
910
Likes
3,620
Location
London, United Kingdom
Here we go again, this time measuring a cheap USB-C-with-charging headphone adapter dongle after reviewing the bundled Pixel 3 dongle as well as a Moshi dongle. This is the third installment, and I will follow a similar protocol to my previous reviews.

The star of this show is the VIMVIP Type C to 3.5mm Audio Headphone Jack & USB-C PD Fast Charging. At £14, it's one of the cheapest charging-capable USB-C headphone adapters I could find on Amazon UK, standing in sharp contrast to the Moshi.

Equipment under test (EUT): Google Pixel 3 running Android 9; analog output "VIMVIP Type C to 3.5mm Audio Headphone Jack & USB-C PD Fast Charging" (bought in December 2018); test signals played using the Google Play Music player; device volume at maximum unless otherwise noted; running on battery unless otherwise noted
Test equipment: QuantAsylum QA401 Audio Analyzer (using L-/R- inputs; L+/R+ properly terminated; attenuator disabled; baseline results); ASIO401 1.1; REW V5.20 Beta 5

All the raw data and measurements, including REW mdat files, can be downloaded here.

setup.jpg


Before we begin: if you're wondering whether we're going to see this weird "load impedance sensing" behaviour from the bundled Pixel 3 dongle review, the answer is no. As far as I can tell, this device behaves the same way no matter what is plugged into it.

PRELIMINARY MEASUREMENTS: SAMPLE RATE

Same thing as last time: let's play a few test signals, playing with the Nyquist frequency until we get a good sense of what we're dealing with.

Code:
sox --channels 2 --bits 16 --rate 192000 --null 20000-192000.wav synth 30 sine 20000 gain -3
sox --channels 2 --bits 16 --rate 192000 --null 22050-192000.wav synth 30 sine 22050 gain -3
sox --channels 2 --bits 16 --rate 192000 --null 24000-192000.wav synth 30 sine 24000 gain -3
sox --channels 2 --bits 16 --rate 192000 --null 44100-192000.wav synth 30 sine 44100 gain -3
sox --channels 2 --bits 16 --rate 192000 --null 48000-192000.wav synth 30 sine 48000 gain -3
sox --channels 2 --bits 16 --rate 192000 --null 65000-192000.wav synth 30 sine 65000 gain -3

I was able to measure the expected tone up to and including 24 kHz, indicating that the EUT does support a >48 kHz sample rate. I was unable, however, to measure anything with a 44.1 kHz tone, which either indicates the maximum sample rate is somewhere between 48 and 96 kHz (which would be weird), or, more plausibly, that the device frequency response simply does not reach that far. More on that later.

PRELIMINARY MEASUREMENTS: INTERSAMPLE PEAKS

Doing this test across many sample rates was useful the last time, so let's do that:

Code:
sox --channels 2 --bits 16 --rate 44100 --null intersample-peaks-44100-16-0.wav synth 30 sine 12000 0 12.5 gain -1
sox --channels 2 --bits 16 --rate 44100 --null intersample-peaks-44100-16-1.wav synth 30 sine 11025 0 12.5 gain 0
sox --channels 2 --bits 16 --rate 44100 --null intersample-peaks-44100-16-2.wav synth 30 sine 11025 0 12.5 gain 1
sox --channels 2 --bits 16 --rate 44100 --null intersample-peaks-44100-16-3.wav synth 30 sine 11025 0 12.5 gain 2
sox --channels 2 --bits 16 --rate 44100 --null intersample-peaks-44100-16-4.wav synth 30 sine 11025 0 12.5 gain 3
sox --channels 2 --bits 16 --rate 48000 --null intersample-peaks-48000-16-0.wav synth 30 sine 12000 0 12.5 gain -1
sox --channels 2 --bits 16 --rate 48000 --null intersample-peaks-48000-16-1.wav synth 30 sine 12000 0 12.5 gain 0
sox --channels 2 --bits 16 --rate 48000 --null intersample-peaks-48000-16-2.wav synth 30 sine 12000 0 12.5 gain 1
sox --channels 2 --bits 16 --rate 48000 --null intersample-peaks-48000-16-3.wav synth 30 sine 12000 0 12.5 gain 2
sox --channels 2 --bits 16 --rate 48000 --null intersample-peaks-48000-16-4.wav synth 30 sine 12000 0 12.5 gain 3
sox --channels 2 --bits 16 --rate 96000 --null intersample-peaks-96000-16-0.wav synth 30 sine 24000 0 12.5 gain -1
sox --channels 2 --bits 16 --rate 96000 --null intersample-peaks-96000-16-1.wav synth 30 sine 24000 0 12.5 gain 0
sox --channels 2 --bits 16 --rate 96000 --null intersample-peaks-96000-16-2.wav synth 30 sine 24000 0 12.5 gain 1
sox --channels 2 --bits 16 --rate 96000 --null intersample-peaks-96000-16-3.wav synth 30 sine 24000 0 12.5 gain 2
sox --channels 2 --bits 16 --rate 96000 --null intersample-peaks-96000-16-4.wav synth 30 sine 24000 0 12.5 gain 3

Here's how the waveform looks like, as seen through a high-speed oscilloscope, at the highest peak level:

intersample-peaks.png


Well look at that, that doesn't look bad at all! The EUT is behaving itself fairly well considering the circumstances. Although we once again see evidence of resampling when playing 44.1 kHz, given the variations in the sine wave peaks.

Back to the QA401, a distortion spectrum measurement basically agrees with the above:

intersample-peaks-spectrum.png


The EUT even manages to stay almost perfectly linear while producing these peaks at 48 kHz, with the main tone at 48000-16-4 being almost 4 dB above 48000-16-0. I don't think one could expect better performance considering the type of product we're dealing with.

PRELIMINARY MEASUREMENTS: BIT DEPTH

Same thing as last time. I picked 48 kHz as the sample rate because the above makes me suspect the EUT cannot operate natively at 44.1 kHz, and DACs typically have a higher noise floor when running at 96 kHz.

Code:
sox --channels 2 --bits 16 --rate 48000 --null --no-dither 997-1-48000-16.wav synth 30 sine 997 gain -1 dither -p 16
sox --channels 2 --bits 24 --rate 48000 --null --no-dither 997-1-48000-24.wav synth 30 sine 997 gain -1 dither -p 24
sox --channels 2 --bits 16 --rate 48000 --null --no-dither 997-30-48000-16.wav synth 30 sine 997 gain -30 dither -p 16
sox --channels 2 --bits 24 --rate 48000 --null --no-dither 997-30-48000-24.wav synth 30 sine 997 gain -30 dither -p 24
sox --channels 2 --bits 16 --rate 48000 --null --no-dither 997-60-48000-16.wav synth 30 sine 997 gain -60 dither -p 16
sox --channels 2 --bits 24 --rate 48000 --null --no-dither 997-60-48000-24.wav synth 30 sine 997 gain -60 dither -p 24
sox --channels 2 --bits 16 --rate 48000 --null --no-dither 997-90-48000-16.wav synth 30 sine 997 gain -90 dither -p 16
sox --channels 2 --bits 24 --rate 48000 --null --no-dither 997-90-48000-24.wav synth 30 sine 997 gain -90 dither -p 24
sox --channels 2 --bits 16 --rate 48000 --null --no-dither 997-120-48000-16.wav synth 30 sine 997 gain -120 dither -p 16
sox --channels 2 --bits 24 --rate 48000 --null --no-dither 997-120-48000-24.wav synth 30 sine 997 gain -120 dither -p 24
sox --channels 2 --bits 16 --rate 48000 --null --no-dither 997-140-48000-16.wav synth 30 sine 997 gain -140 dither -p 16
sox --channels 2 --bits 24 --rate 48000 --null --no-dither 997-140-48000-24.wav synth 30 sine 997 gain -140 dither -p 24
sox --channels 2 --bits 16 --rate 48000 --null --no-dither silence-48000-16.wav trim 0 30
sox --channels 2 --bits 24 --rate 48000 --null --no-dither silence-48000-24.wav trim 0 30

We see normal results at 16-bit:

16bit.png


When nothing is playing, we're bottoming out to the noise floor of the test equipment itself (aside from some negligible stray tones), which suggests the output literally shuts down when it's not being used, and when it does, it shorts the output instead of leaving it hanging. This is a good thing, because it means EMI interference (such as mains hum) won't show up when the output is unused.

The difference in level between the -1 dB 997 Hz signal and -140 dB signal (drowned in the 16-bit dither, as expected) is 92 dB, which confirms we have access to the full 16-bit dynamic range.

The 16-bit and 24-bit "silence" measurements are identical, which suggests the EUT is not applying additional dithering on top of the source file.

Just like last time, the low-level 24-bit measurements are a shit show when it comes to distortion and linearity:

24bit.png


There is good news, though. Contrary to the previous EUTs I've reviewed, this one seems to implement its volume control correctly!

16bit-halfvolume.png


Indeed, when one uses the device volume slider while playing a 16-bit file, the signal disappears nicely into the noise floor, without distortion appearing out of nowhere. This suggests either an analog volume control, or appropriate dithering being applied.

UNLOADED MEASUREMENTS: MAXIMUM OUTPUT VOLTAGE

The 997-1-48000-48 test signal registers at -3.8 dBV, which means the maximum output level, unloaded, is -2.8 dBV, or 0.72 Vrms, or 1.0 Vp, or 2.0 Vpp. This is mediocre, though typical of this type of hardware.

UNLOADED MEASUREMENTS: NOISE FLOOR AND DYNAMIC RANGE

The silence-24 test signal (see above) registers 93.2 dB below 997-1-48000-24, leading us to believe we have access to 94 dB of dynamic range, which is pretty much 16 bits, and a noise floor of -98 dBV.

But of course that would be too generous, because our bit depth measurements show that the EUT is not actually capable of delivering that noise floor with any kind of real signal other than pure silence. In practice, if we use the 997-140-48000-24 measurement which is more indicative of actual performance, we get 91.7 dB of dynamic range, which is closer to 15 bits than 16, and a noise floor of -95.5 dBV. That's mediocre.

I was curious to see how the noise floor looks like when the "charging" functionality of the dongle is being used - how well does it isolate from USB power supply noise? The answer is: very well - the noise floor measurements when charging (even fast charging) look pretty much identical to the others, aside from a negligible amount of mains hum. This is true when using the official bundled charger, and also when using the shittiest, cheapest USB charger I had laying around.

UNLOADED MEASUREMENTS: THD AND THD+N/SINAD (997 Hz)

Unloaded, 997-1-48000-24 shows a THD of -93.8 dB (0.0020%) and a SINAD of >84.2 dB (<0.0062% THD+N). The SINAD is close to the limits of my measurement equipment, so I can only provide a lower bound; the actual SINAD might be better. We would need better equipment, such as amirm's AP, to get a better estimate of the actual SINAD.

Obviously I cannot fault this result; as far as I can tell, there is nothing particularly wrong about the unloaded distortion performance of this device. It is certainly much better than both dongles I previously tested.

distortion.png


UNLOADED MEASUREMENTS: FREQUENCY RESPONSE

Same protocol as last time; let's look at the results:

frequency-response.png


This looks awfully similar to the Moshi dongle, to the point where I had to double-check I didn't accidentally load the wrong measurements. I wouldn't be surprised if these dongles had some parts in common. +/-0.02 dB from 30 Hz to 7 kHz. Just like the Moshi there is a rise in the treble, but it's better controlled - only 0.2 dB. Similar to the Moshi, we're only 5 dB down at Nyquist, leaving me worried about imaging artefacts. And the response as 96 kHz is just as laughable as the Mochi - that is to say, the EUT doesn't actually support 96 kHz in practice.

Okay, let's pull out spectrograms again:

aliasing.PNG


Just like the Moshi, imaging artefacts are ruining the party. I'm not going to do the hilarious 25 kHz thing again, it should be obvious at this point how that's going to play out. Go read my Moshi review for more details.

Addendum: just like with the Moshi, these poor results are Android's fault, not the dongle's. See below for native results measured from Windows, which look much better.

MEASUREMENTS INTO 16 Ω: MAXIMUM OUTPUT VOLTAGE AND POWER

Note that all loaded measurements are done with both channels loaded and playing the same test signal, but only the left channel is measured.

The difference with the maximum unloaded output voltage is completely explained by the output impedance, as we'll see below.

The 997-1-48000-24 test signal registers at -6.7 dBV, which means the maximum output level, into 16.5 Ω, is -5.7 dBV, or 0.52 Vrms, or 0.73 Vp, or 1.47 Vpp. This translates to an output power of 16 mW into 16.5 Ω. Since the EUT is voltage-limited, as load impedance increases, I would expect output power to decrease accordingly.

MEASUREMENTS INTO 16 Ω: THD AND THD+N/SINAD (997 Hz)

Into 16.5 Ω, 997-1-48000-24 shows a result that is virtually identical to the unloaded result, with similar THD and SINAD numbers, though the output level is lower. This shows that the EUT is capable of playing full scale into a 16.5 Ω load without any clipping.

MEASUREMENTS INTO 16 Ω: OUTPUT IMPEDANCE AND FREQUENCY RESPONSE

Same protocol as last time; let's look at the results:

frequency-response-16ohm.png


From these measurements we can see that connecting a 16.5 Ω load makes the output level drop by 2.7 dB compared to no load. From there we can directly deduce that the output impedance is a constant 5.9 Ω. That's mediocre and can potentially compromise the frequency response when low-impedance headphones are used, though to be fair this is the best result out of all three dongles I've tested.

CONCLUSION

I find the performance of this EUT fairly respectable in light of how cheap the dongle is. SINAD reached the limits of my QA401, which is not saying much, but was still a nice surprise. Frequency response is good. This is the only dongle among the three I've tested so far that implements the volume control correctly. I could have done without the weird imaging artefacts near 24 kHz, but honestly that's not that big a deal. Oh, and don't even think about using that thing at 96 kHz (but honestly, who cares?).

I find that the biggest practical limitation of this device is its output impedance, which will degrade the frequency response with low, variable impedance headphones. With high (or constant) impedance headphones though, it should work quite well.

It's worth noting that this EUT significantly outperforms the Moshi dongle in most aspects (especially output impedance) despite being basically unbranded and costing less than half as much. It's better behaved generally speaking.

Overall, I find this is good value for the price. I would recommend this product until someone finds a better contender in this particular category (USB-C dongle with charging support).
 
Last edited:
OP
edechamps

edechamps

Addicted to Fun and Learning
Forum Donor
Joined
Nov 21, 2018
Messages
910
Likes
3,620
Location
London, United Kingdom
ADDENDUM

Okay, so I finally managed to make the dongle work with Windows. (It turns out that you need to actually plug something into the dongle for the audio device to show up… *facepalm*)

Windows shows that the device natively supports the 44.1 kHz, 48 kHz and 96 kHz sample rates.

Here's how the frequency response looks like with Windows (WASAPI Exclusive, max gain):

frequency-response-windows.png


This shows that the VIMVIP adapter does actually support 96 kHz very well. Once again the bad results above were Android's fault.

The spectrograms look significantly better once Android's resampler is out of the way:

spectrograms-windows.PNG
 

artnoi

Member
Joined
Dec 9, 2018
Messages
48
Likes
27
Location
Bangkok, Thailand
As a user with many headphones and USB-C laptops I find your results very helpful for getting new headphone jacks.

Currently I’m using 2 Apple dongles for my laptops (macOS), and that enables me to use 3 headphones simultaneously.
 
OP
edechamps

edechamps

Addicted to Fun and Learning
Forum Donor
Joined
Nov 21, 2018
Messages
910
Likes
3,620
Location
London, United Kingdom
Thanks. You made the right choice; the Apple dongle is the best USB-C dongle on the market on the market right now, as long as you don't care about Android nor charging. The competition does not even come close due to poor output impedance.
 
OP
edechamps

edechamps

Addicted to Fun and Learning
Forum Donor
Joined
Nov 21, 2018
Messages
910
Likes
3,620
Location
London, United Kingdom
There wouldn't be much point. For devices with sufficiently low output impedance, a 15 Ω load is a worst-case scenario in terms of current draw and everything goes uphill from there. Therefore the maximum unloaded output voltage along with the output impedance should tell you most of what you need to know. I don't test with intermediate impedances unless I'm looking for something specific.

For example, maximum output voltage into a load of impedance Rload is given by Vloaded = Vunloaded / ((Routput/Rload)+1). So, in the case of a 32 Ω load, the VIMVIP adapter will output 0.52/((5.9/32)+1) = 0.44 Vrms (or 6.1 mW), and in the case of a 300 Ω load, it will output 0.52/((5.9/300)+1) = 0.51 Vrms (or 0.8 mW). These results are fairly typical for this kind of product.
 

noel_fs

Active Member
Joined
Dec 12, 2018
Messages
270
Likes
181
you should use high-res output of poweramp,neutron,uapp for this type of things, the 24bit problem would dissapear. Its like using windows media player in windows, or worse who knows.
 
Top Bottom