Skip to content

O2 Headphone Amp

As you have probably noticed, my reviews are free of advertising. Instead of distracting you with annoying ads, I kindly request your donation. If you find the contents of this page to be useful, please consider making a donation by clicking the Donate button below.

O2 Headphone Amp 

The O2 is widely hailed as state of the art headphone amp. It was designed by 'NwAvGuy', who has now disappeared into the ether, and is distributed under a Creative Commons type license. Curious to see what the hub-hub was about, I decided to pick one up and perform a little comparative analysis.



The O2 version distributed by JDS Labs is shown below.

JDS Labs O2

The O2 arrives in an anodized extruded aluminum enclosure. The enclosure is pretty basic but certainly does the job. I found it a bit concerning that the circuit board appears to be loose inside the enclosure. This means the amp rattles when moved and the circuit board slides back and forth during mating/unmating of the connectors. The connectors feel mushy in operation, which, along with the rattling circuit board, gives the O2 a rather cheap feel to it. The volume knob is nice, though.

Removing the four screws holding the front panel in place reveals the internal circuit.

JDS Labs O2

The amp fits in the chassis with the tiniest amount of free space. Nicely done.

JDS Labs O2

The solder mask on the circuit board is a matte black colour which makes following the circuit traces difficult. It is not clear whether this is done to deliberately conceal the traces or if it's done to look stealthy cool. It looks cool though. The assembly quality is pretty standard fare for a low-cost assembly house and similar to what you'll find on eBay and the like places. I was surprised to find the O2 to be an all leaded build with socketed ICs. I was pleasantly surprised to find the batteries had been secured to the circuit board with a bead of hot glue. I would have preferred an actual battery holder, but the glue seems to do the job.

JDS Labs O2

The bottom side of the board is not pretty. Whomever soldered this used way too much solder. Also, no attempt has been made to clean the board of excess flux. Sadly, this is a common sight for low-cost assembly jobs. According to JDS Labs, flux in the solder used to assemble the O2 is the no-clean type, which does not require cleaning, so this issue is mostly cosmetic. Most worrisome, though, is the grounding wire seen in the upper right of the picture above. First off, using a wire loop like that is not a very reliable way of grounding. Secondly, given that the board is allowed to rattle and move within the chassis, that wire loop will fail over time due to metal fatigue. The proper way to ground the board would have been to use a grounding bracket. This would also have prevented the board from rattling. That said, JDS Labs stated in a follow-up email after this review was first posted that they have not seen any failures of the grounding wire in their warranty returns.

The O2 comes with a two-page instruction sheet (which has been expanded considerably since I took delivery of my O2) and an AC wall wart power supply for charging the batteries. According to the instruction sheet provided with the amp, the charging time is 12-24 hours. Unfortunately there is no indicator on the amp to indicate when the batteries are fully charged. I left it charging for a week before taking the measurements listed below.  

Summary of Key Performance Parameters

The key performance parameters for the O2 are tabulated below.

Parameter Value Notes
Output Power 350 mW 20 Ω, THD+N < 0.010 %
Output Power 470 mW 32 Ω, THD+N < 0.010 %
Output Power 410 mW 50 Ω, THD+N < 0.005 %
Output Power 90 mW 300 Ω, THD+N < 0.005 %
THD 0.00096 % 1 kHz, 50 mW, 300 Ω
THD 0.00225 % 1 kHz, 200 mW, 32 Ω
THD+N 0.00117 % 1 kHz, 50 mW, 300 Ω, 20 kHz BW
THD+N 0.00260 % 1 kHz, 200 mW, 32 Ω, 20 kHz BW
IMD: SMPTE 60 Hz + 7 kHz @ 4:1 0.0088 % 200 mW, 32 Ω
IMD: DFD 18 kHz + 19 kHz @ 1:1 0.0012 % 200 mW, 32 Ω
IMD: SMPTE 60 Hz + 7 kHz @ 4:1 0.0037 % 50 mW, 300 Ω
IMD: DFD 18 kHz + 19 kHz @ 1:1 0.0014 % 50 mW, 300 Ω
Multi-Tone IMD Residual < -117 dBV AP 32-tone, 50 mW, 300 Ω
Channel Separation > 85 dB 20 Hz - 20 kHz
Gain 7.7/16 dB 1 kHz, Switch-selectable
Gain Variation ±0.04 dB 20 Hz - 20 kHz
Input Sensitivity 2.15/0.82 V RMS Low/high gain, 90 mW, 300 Ω
Bandwidth 6 Hz - 300 kHz 10 mW, 300 Ω
Full-Power Bandwidth 58.6 kHz
Slew Rate 2.95 V/µs 300 Ω || 220 pF load
Total Integrated Noise and Residual Mains Hum 1.76 µV RMS 20 Hz - 20 kHz, A-weighted, min. volume
Total Integrated Noise and Residual Mains Hum 2.20 µV RMS 20 Hz - 20 kHz, Unweighted, min. volume
Residual Mains Hum < -118/-135 dBV Mains/battery powered
Dynamic Range (AES17) 125 dB 1 kHz
All parameters measured using battery power at the maximum setting of the volume control and the lowest gain setting unless otherwise noted.

Performance Characterization & Measurements

The output power of the O2 is limited by the roughly ±8 - ±9 V supply rails set by the two 9 V batteries. 90 mW into 300 Ω is a bit underwhelming, in particular as it dropped to well below 70 mW after only a couple of hours of testing, but that is what the supply voltage (and dropout of the NJM4556 output driver) will allow. I tend to listen at a reasonable volume and the O2 drove my Sennheiser HD-650 to plenty loud SPL for my tastes. I do strongly suspect that those who want to listen to loud music or have headphones that are more challenging to drive than my HD-650 will find the O2 rather lacking.

The measurement below shows the THD+N vs output voltage swing for the O2 at various load impedances. The amplifier's output power is limited by the supply rails for load impedances of 150 Ω and above. At 20, 32, and 50 Ω, the amplifier was limited by its output current drive capability. The output current drive capability of the O2 is approx. 175 mA, peak, for this sample. That's actually higher than the output drive of the QRV08 and higher than the 140 mA promised in the NJM4556 data sheet. I may have gotten a good sample of the NJM4556.

JDS Labs O2: THD+N vs output power

The THD+N is nice and low at low output power, but note the rather dramatic rise in THD+N at higher output powers.

The rise in THD+N at higher output power could be due to the output impedance of the batteries. Therefore, I repeated the measurement with the O2 powered by the AC power adapter. The result is shown below. This measurement shows the same THD+N profile, thus, the rise in THD+N at higher output power is most likely due to the driver IC.

JDS Labs O2: THD+N vs output power

When using the AC adapter, the power supply voltage is increased to ±12 V, resulting in slightly higher output power. The only exception is the 20 Ω case, where the output power is actually slightly lower than for battery operation. This points to either a thermal limitation in the driver IC when powered by ±12 V rails or a drive current limitation, possibly both.

The left and right channels measured nearly identically, thus, only one channel was measured for the remaining measurements. Unless specifically mentioned, battery power was used.

The THD+N vs output power is shown for 300 Ω below. The amp starts clipping at 90 mW with a 300 Ω load.

JDS Labs O2: THD+N vs output power (300Ω)

Repeating this measurement for 32 Ω load yields the result shown below.

JDS Labs O2: THD+N vs output power (32Ω)

The THD+N vs frequency profile of the O2 is shown below for 50 mW into 300 Ω. No surprises there.

JDS Labs O2: THD+N vs frequency (300 Ω)

Interestingly, the 200 mW, 32 Ω case shows a hint of the same S-shaped THD+N vs frequency profile as I measured on the Sjöström QRV08. The overall THD+N is quite a bit higher than the 300 Ω case due to the heavier load and, thereby, higher output current. The drop in THD+N at 12 kHz is caused by the 5th harmonic distortion component falling outside the 60 kHz measurement bandwidth.

JDS Labs O2: THD+N vs frequency (32 Ω)

Due to the relatively high THD of the O2, there was no need for the precision 1 kHz oscillator I normally use for THD measurements. The harmonic spectrum of 1 kHz at 50 mW into 300 Ω is shown below. The THD measured 0.00096 %.

JDS Labs O2: Harmonic spectrum (300 Ω)

At heavier load, the THD degrades quite a bit. This is to be expected due to the higher output current needed to drive the lower load impedance. The harmonic spectrum for 1 kHz at 200 mW into 32 Ω is shown below. The THD measured 0.00225 %.

JDS Labs O2: Harmonic spectrum (32Ω)

Another way of showing the THD is to look at the output signal as well as the THD residual. This measurement is shown below for 50 mW into 300 Ω. Note that the THD residual was amplified by 80 dB (×10k). The residual shows significant high-order THD components, which is congruent with the harmonic spectrum shown above.

JDS Labs O2: Distortion residual (300Ω)

Repeating the measurement at 200 mW into 32 Ω yields the result below.

JDS Labs O2: Distortion residual (32Ω)

The DFD intermodulation test using 18 kHz and 19 kHz at 1:1 amplitude ratio is useful for determining the available loop gain towards the end of the audio band. This measure is indicative of quality circuit design and layout and likely well correlated with the perceived sound quality as well. I generally find that an amp with good DFD IMD and low THD sounds open and natural, whereas amps with poor DFD IMD and high THD tend to sound harsh.

The intermodulation distortion (IMD) of the O2 is not fantastic. As shown in the plot below the IMD measures 0.0014 % at 50 mW into 300 Ω.

JDS Labs O2: 18+19 kHz IMD

The SMPTE (60 Hz + 7 kHz @ 4:1 amplitude ratio) IMD for 50 mW into 300 Ω is shown below. The SMPTE IMD measures 0.0037 %.


With the 60 Hz frequency component in the test signal, the SMPTE test is useful for finding power supply issues and thermal issues. As the O2 is battery powered, I suspect the somewhat lacklustre SMPTE IMD is due to on-die thermal cycling in the output driver IC.

The DFD IMD measurement for 200 mW into 32 Ω is shown below. The IMD measures 0.0012 %.

JDS Labs O2: 18+19 kHz IMD (32Ω)

The SMPTE IMD at 200 mW, 300 Ω is shown below. The IMD measures 0.0088 %.

JDS Labs O2: SMPTE IMD (32Ω)

The multi-tone IMD test uses a test signal with 32 logarithmically spaced tones. This test signal sounds a lot like an out-of-tune pipe organ and is a reasonable representation of a typical music signal, thus this test provides a good measure for how the amplifier behaves when reproducing music. It is also a very challenging test for the amplifier, thus, provides reliable discrimination of the good amplifiers versus the truly great amplifiers.

For the multi-tone IMD measurement shown below (50 mW, 300 Ω).

JDS Labs O2: Multi-tone IMD (300Ω)

The forest of IMD products is quite dense and, while decent, isn't exactly impressive.

As one might expect, the IMD gets quite a bit worse with heavier load. The result for 200 mW into 32 Ω is shown below.

JDS Labs O2: Multi-tone IMD (32Ω)

The gain is flat vs frequency within the audio band as shown below. The two gain settings allow the O2 to be driven to clipping with both consumer sources, such as CD players and DACs, as well as low-voltage sources, such as phones and tablets.

JDS Labs O2: Amplitude response vs gain setting

At 20 Hz, the gain is down about 0.04 dB from midband as the amp's gain rolls off to -3 dB at 6 Hz.

JDS Labs O2: Gain flatness

The channel separation of the O2 is quite good. It measures a hair above 85 dB midband, with hardly any degradation at 20 kHz. The measurement is shown below.

JDS Labs O2: Channel separation

Finally, the residual mains hum and noise is shown below. As you would expect from a battery powered amplifier, the mains hum is extremely low. What you see in the measurement below is likely what is being picked up by the cabling in the test setup.

JDS Labs O2: Residual hum & noise

Powering the O2 by the AC adapter does increase the mains components a bit. When powered by the AC adapter, the O2's supply rails are generated by a pair of LM7812/LM7912 ±12 V voltage regulators. They generally do a fine job of ripple filtering, but some mains hum does make it to the output of the amp. Even when mains powered, the hum is very low as can be seen in the measurement below.

JDS Labs O2: Residual hum & noise when mains powered

The transient response is clean and free of overshoot. With a slew rate of just shy of 3 V/µs, the O2 is not the fastest amp in the world and slewing is clearly seen in the measurement below. That said, the amplifier is capable of reproducing a rail-to-rail sine wave up to nearly 59 kHz without hitting the slew rate limit, so it is plenty fast for audio reproduction.

JDS Labs O2: Transient Response (300 Ω || 0 nF)

Adding capacitance in parallel with the load resistance creates a bit of ringing, which is barely visible in the measurement below.

JDS Labs O2: Transient Response (300 Ω || 10 nF)

Zooming in on the rising edge makes the ringing more obvious.

JDS Labs O2: Transient Response (300 Ω || 10 nF) - zoom

Note that 10 nF is a very heavy capacitive load for a headphone amplifier and this type of ringing is normal. Also note that the ringing dies out within a few µs, thus is not an issue in actual use of the amp.  

What Happens When the Battery Dies?

In a battery powered amplifier, it is imperative that the amplifier shuts down gracefully when the battery is discharged. The instruction sheet does mention that there is the possibility of  "popping sounds" on the output of the amplifier as the batteries run out of charge. The instruction sheet further mentions that operating the amp while it is producing these "popping sounds" for an extended period of time can damage your headphones.

I decided to characterize the amplifier's behaviour over time by letting the O2 deliver 200 mW into 32 Ω for three hours. I used the APx525's recorder mode to measure the THD+N and RMS output voltage versus time. The THD+N vs time measurement is shown below.

JDS Labs O2: THD+N as battery discharges

The graph shows the THD+N increasing gradually until about 2.5 hours into the test where the battery dies and the THD+N shoots up. The four spikes at approximately 10, 30, 50, and 90 minutes result from electrostatic discharge (me approaching the workbench to check on the test). While the O2 does contain a simple first order RF input filter, it does not appear to be very effective as the extremely high-frequency ESD discharge 'zaps' are allowed to degrade the output signal. This is not something I have seen when measuring other circuits.

The measurement below shows the output power into 32 Ω vs time during the test.

JDS Labs O2: Output power vs time as battery discarges

The output power is nearly constant until the battery dies after 2.5 hours. It is clear from the plot above that the amplifier does not shut down gracefully at all when the battery dies.

The O2 does contain a battery monitoring circuit. This circuit consists of a comparator which monitors the battery voltage along with a pair of MOSFETs to turn the power off to the amplifier section. The power-on LED is used as a voltage reference for the comparator, which is a nice trick if you can live with the -2 mV/ºC temperature coefficient of the LED's forward voltage. While the low battery detection circuit does contain some hysteresis, it does not contain enough hysteresis. This is a very common design flaw of these types of monitoring circuits and the result is that the circuit will chatter as the battery voltage reaches the low battery threshold. According to NwAvGuy's blog, he was aware of the issue and attempted to address it by changing two resistors. He claims his build shuts down cleanly, but that "some" builds don't. Clearly, this amp is in the "don't" category. This issue should have been addressed by adding a latch to turn the power off once the low battery indicator triggers and keep the power off until the next cycling of the power switch.

The output waveform of the O2 operating at low battery voltage is shown below.

JDS Labs O2: Output chatter as the battery dies

Now I can't show with 100 % certainty that this would destroy your headphones, but I can't imagine it being all that healthy for them. This measurement combined with the warning in the instructions about the amp's behaviour as the battery drains make me nervous. I tend to use my headphones for nighttime listening and often forget to turn off the amplifier before going to bed. During my listening tests I was very careful to always power the O2 off when I was done listening.  

Charging the Batteries

The instruction sheet mentions that it takes 12-24 hours to fully charge the included batteries. That is quite a range and the amplifier offers no indication of whether the batteries are fully charged. To determine how long it would take to fully charge the batteries, I performed the following test: First the amplifier was made to deliver 50 mW into 300 Ω until the battery died, which took about 4.5 hours starting from a full charge. Then the amplifier was charged using the provided AC adapter for six hours and a THD+N vs output power measurement was performed. The amp was then turned off and charged another two hours, after which the THD+N vs output power was remeasured. These two-hour charge/remeasure cycles were repeated until the amp provided the full 90 mW into 300 Ω on two consecutive measurements. The result is shown below.

JDS Labs O2: THD+N vs battery charge time

The measurement above shows that the O2 needs 14-16 hours of charging to provide the full performance.

The charging circuit in the O2 is a trickle charger. This type of charger is the simplest to implement (it's a 220 Ω resistor between the output of the ±12 V regulators and each battery) but it is also by far the slowest. It would have been nice if an actual battery management IC had been used. This would have allowed for much faster charging of the batteries and it would have eliminated the erratic low battery behaviour. In this day and age I think it is reasonable to expect that a battery operated piece of gear can be recharged in a few hours. The O2 was designed in 2011 and is not ready for use even if you leave it plugged in overnight as it needs 14-16 hours of charging to provide the full performance.

Some will rightfully argue that charging batteries for 4+2+2+2... hours is not the same as charging them for 14-16 hours straight. To address this, I did perform a test where I charged the batteries for 12 hours and then measured the THD+N vs output power. The results were line-on-line with the "12 hours" results in the graph above. Thus, the time to fully charge the batteries is definitely over 12 hours.  

Listening Impressions

After listening to the O2 for the better part of a week I have a decidedly 'meh' feeling about it. I would call it decent, but not good, and certainly not stellar or high end. I find the presentation hazy and muddy across the audio range. The O2 lacks the precision of a good semiconductor amp and it doesn't make up for it by being engaging or adding an "out of the head" experience like a good tube amp would. At one point I actually found myself wondering if it sounded better or about the same as the stock headphone output of my iPhone 5S.

I used my Sennheiser HD-650 headphones for the test. They're easy to drive, so the O2 had every chance to shine.  


The noise floor and residual mains hum of the O2 is impressively low. This is where the O2 shines. Some of the other measurements did show some localized bright spots as well. Unfortunately, when examining the graphs in full the shine quickly fades. The high distortion at even moderate power levels is disappointing and the IMD is lacklustre as well. This is also very likely the reason I found the O2 to be unimpressive in actual listening tests.

Due to the amplifier's erratic behaviour as the battery runs low, I would not trust my headphones to it unless the batteries were freshly charged and the listening session kept reasonably short (a few hours). Thus, if you build or buy this amp, I recommend running it using the supplied AC adapter.

That said, DIYers will be happy to note that the amplifier uses leaded components and socketed ICs, hence, offers ample opportunities for tweaking. If the amp is operated on mains power, one could consider replacing the opamps with some higher performing ones and maybe improve the sound quality a bit.  

Revision History

Update 2017/01/27: Within 12 hours of posting this review, I received an email from JDS Labs with some clarification regarding the type of flux used and the reliability of the grounding wire. They also mentioned that the charging time (12-24 hours) was mentioned in the instruction sheet. I missed it the first time I read it. My bad. These clarifications have been integrated into the text above.  

Update 2019/09/22: JDS Labs have updated the two-page instruction sheet considerably and it is now in a proper instruction manual form. I've changed the text above to reflect this. You can download the new manual here: JDS Labs O2 Instructional Guide.

Please Donate!

Did you find this content useful? If so, please consider making a donation by clicking the Donate button below.