
I couldn’t find the perfect smart amplifier, so I built it myself

I’m not your typical modern music listener. While I occasionally dabble in streaming to discover new albums and artists, my main library is built from purchased CDs, vinyl, and digital downloads stored on a DIY NAS. Free from subscription costs, this setup gives me Hi-Res home and transcoding roaming access to my music on my phone, laptop, and even my smart TV, courtesy of Jellyfin and apps like Finamp.
But what I’m really missing is a nice way to integrate this setup into my living room. While I can cast or Bluetooth my music to wireless speakers, the multi-step pairing and app-opening process is clunky, to put it mildly. Plus, there’s little point in owning a FLAC collection just to compress it over the air.
An affordable smart amplifier for a digital music collection seems to be a tall ask.
What I’d really like is a smart amplifier that supports my NAS-hosted library, has a great-looking display to navigate it without my phone, and lets me bring my own speakers of choice. The frustrating part is that products offering this sort of experience do exist, but this hi-fi gear is often priced well above $1,000 and comes with dreaded ecosystem lock-ins of its own.
So, rather than spend a small fortune on an amplifier that doesn’t quite do what I want, I started wondering whether I could build one myself.
MoOde is an awesome audio platform for your Pi

I’ve had a spare Raspberry Pi 4B sitting on my desk for over a year now, so I figured I’d investigate whether I could turn it into a music center that can play my collection directly from my NAS. Much to my good fortune, it turns out lots of very talented people have already had this idea.
There’s a small choice of well-refined music-oriented Linux distributions built explicitly for this purpose, including Odio, piCorePlayer, and Volumio. I settled on MoOde because it ticked all the right boxes for my project: USB and SMB networked storage sources for my collection, a pretty UI to show off album art, and AirPlay, Spotify, and Bluetooth streaming for guests. There’s also support for PlexAmp, RoonBridge, and more, should you be interested in your own setup. Perhaps my favorite feature is that it can be controlled either via a display or a local web server, meaning I can control it with any phone, tablet, or laptop in my house as well. It’s a seriously brilliant piece of kit.
MoOde turns a cheap Raspberry Pi into an expensive Hi-Fi interface, but I still needed an amp.
With the software half of my problem solved, the second part was how to actually get audio from the Pi to my speakers. There are plenty of Pi HATs (Hardware Attached on Top) on the market, but nothing jumped out at me as capable of powering a pair of passive speakers at living-room listening levels. Most Pi audio HATs seem designed to turn the Pi into a DAC or headphone amp, rather than a powerful hi-fi system.
I didn’t look that hard, though, as this seemed like the perfect opportunity to flex my audio engineering muscles and design the audio amplifier circuit myself.
Designing a custom hybrid amplifier

There are a few ways I could have approached this project. A class-D chip would have been the obvious solution: smaller, more efficient, cooler-running, and considerably easier to build. It would also have made for a rather boring project (and article).
I wanted to see whether I could build something with a little more character, so I took the unnecessarily complicated route: a hybrid class-AB amplifier with a low-voltage vacuum tube.
At a high level, the signal takes a pretty straightforward journey. The Raspberry Pi provides the digital audio; the DAC converts it to an analog signal; the voltage amplifier stage (VAS) boosts that signal; and finally, the output stage provides the current needed to drive the speakers. That’s where my three main design choices come in.

Choosing a DAC chip
First, the DAC integrated circuit. The Raspberry Pi and MoOde make a great digital source, but getting that audio into the analog realm isn’t quite as simple as plugging in any old DAC chip. MoOde doesn’t provide a master clock as part of its standard I²S output, so I needed a DAC that could work without one.
If you’re interested in the super-technical bit, I²S typically uses a data/serial clock, frame select, and in- and out-data lines, with a master clock sometimes required to power and synchronize the DAC’s internal clock circuitry. In this case, we are omitting the master and data-in wires, leaving us with just three connections to break out from the Pi’s header.
I settled on Texas Instruments’ PCM5122PWR. It doesn’t need that external clock, and it also gave me some useful gain-selection hardware for debugging the PCB without wiring up any extra microcontroller pins. The 5122 supports 24-bit / 192 kHz output, although most of my collection is CD-quality FLAC, and has a very reasonable ideal noise floor of 112dB and THD of -93dB. It’s a very solid starting point for the project.
A low-voltage vacuum tube
Then comes the slightly unconventional bit: the vacuum tube. The idea isn’t that tubes are somehow better than transistors. I wanted to see what happened if I deliberately introduced a little harmonic coloration into an otherwise solid-state amplifier. The vacuum tube provides voltage gain after the DAC, adds some even-order harmonics when driven hard, and gives me a place to apply feedback from the output stage.
There was one obvious problem: conventional tubes are normally much happier at hundreds of volts, whereas this amplifier is running at 36V or below. There are low-voltage radio tubes, but I wanted to use a tube I could easily get my hands on at an affordable price.
Tube amplification at low voltages makes for smooth saturation.
Fortunately, I’d already spent my university dissertation researching low-voltage valves, so I had a head start. The popular 12AU7/ECC82 can work surprisingly well at these lower voltages, although biasing becomes rather more finicky. I used a bypassed potentiometer in the cathode feedback network for simplicity, and added a switch to optionally feed around 3dB of feedback from the speaker output back into the VAS.

Picking power transistors
Finally, there’s the part that actually has to move the speakers. The tube can provide voltage gain, but it can’t deliver the current a low-impedance speaker needs. That’s the job of the complementary transistor output stage. There are plenty of ways I could have built this, but I went with tried-and-tested MJE2955 and MJE3055 transistors configured as Sziklai pairs.
These transistors are rated for up to 10 A, 60 V, and 75 W of power dissipation — far more than I need. They’re inexpensive, rugged, and more than fast enough for the audio band. There’s little justification for spending a fortune on exotic “audiophile” output transistors here. Once we comfortably meet the bandwidth, power, and thermal requirements, you quickly run into diminishing returns.
Unnecessarily complicated or an inspired design? I’ll let you be the judge.
One particularly useful property of the Sziklai arrangement is that it keeps the amplifier’s idle current steady as the transistors heat up. The reason is local negative feedback: the power transistor is effectively enclosed within the feedback loop of the smaller driver transistor, so variations in the power transistor’s base-emitter voltage (Vbe) have much less influence on the quiescent current. The bias circuit, therefore, primarily needs to track the temperature of the driver transistor rather than the hotter output transistor. That doesn’t eliminate the need for proper thermal design or bias control, but it makes the thermal-management problem more forgiving. Combined with just a single Vbe drop rather than two, this is a handy topology for squeezing a fairly serious amplifier into a small enclosure with a modest voltage budget.
I still specified an intentionally oversized external heatsink for the four main power transistors. The single 1.9 W tube heater and the bias circuitry, meanwhile, dissipate relatively little power, so they won’t present a thermal problem in a reasonably well-ventilated enclosure.
After crunching the numbers and running a few circuit simulations, I was hoping for around 15W per channel at 36V, or about 6.8W per channel at 24V into my 6-ohm speakers. That seemed like plenty for my living room.
I laid the whole thing out on a PCB, including switches, bias potentiometers, and test points for debugging. Then there was nothing left to do but wait a week for the board to arrive.
Building the enclosure

While I waited, I also needed an enclosure. I’m pretty terrible at hand woodworking, so I designed the enclosure panels in FreeCAD to be cut out on an affordable desktop CNC machine. This would allow me to make rectangular display cutouts and drill precise holes without relying on my terrible ability to eyeball it from my drill press.
I had planned to make the enclosure out of hardwood, but I built the first draft from more affordable plywood to hone my CNC skills. In hindsight, plywood was a terrible choice to work with because it easily strips and frays as my standard drill bit removed shavings. However, after a little sanding, the first results turned out so well that I’ve stuck with the plywood design, for now. Though I might revisit it when I have a bit more spare time.

With six panels cut to size, it was simply a case of fitting everything together. The back panel cutout had room for that oversized heat sink and the stereo outputs. The front snugly fits a 4.2-inch DSI display and also bolts the Pi in place behind it, along with an encoder to control volume at the software level. Simple yet effective, especially since the amplifier can also be controlled from the display, phone, or laptop.
So, how does it sound?

Well, pretty darn good to my ears. I initially powered it up at 36V into my 6-ohm speakers and nearly perforated my eardrums. It turns out 15W per channel is far more than I’ll ever need with these, so I bought a 24V DC adapter that still delivers ample volume even at 40% and runs the transistors a bit cooler.
The tube is effectively invisible at normal listening levels, but has progressively more influence as you push the amplifier. At max volume, the 12AU7 introduces noticeable 2nd through to 5th order harmonic distortion, but never allows the transistor stage to hard clip. Instead, it gradually compresses the waveform, producing subtle overdrive rather than outright distortion. At lower volumes, there’s a small element of non-linear 2nd-harmonics, but any higher-order harmonics fall below the 60dBV noise floor of my oscilloscope.
While not Hi-Fi clean, the tube VAS offers some interesting sonic and limiting characteristics. It shaves a few volts off our peak output swing, but it does prevent us from ever slamming the output transistors for far heavier-sounding distortion. Thankfully, power output isn’t a problem for my use case.
What did it cost?
Now, this project wasn’t dirt cheap to build, but it still cost considerably less than the commercial alternatives I’d been considering. Overall, the cost of the amp itself is somewhere in the region of $200, plus many hours of effort. Not pocket change, but certainly a lot cheaper than buying something off the shelf.
The most expensive individual part is the Raspberry Pi 4B. I had one lying around, but brand new, these retail for $60 or more, depending on the RAM configuration. Fortunately, MoOde can run on the older Pi 3, which could save a little cash. PCB manufacturing was also a reasonably expensive part of the project, but it saved a lot of time compared to hand-soldering. The PCB itself was only $3.30, the components cost $38.30 for two boards worth, and I paid around $20 in assembly fees. Throw in shipping and taxes, and it set me back just under $90 for two fully populated circuits (so let’s call that $45 each).
It wasn’t cheap, but I ended up with the exact experience I want from a modern streaming amp.
The other smaller costs add up too. A new-old-stock 12AU7 can cost as little as $15 delivered, the display was $30, and the knob and switches cost about $5. I bought about $30 worth of plywood to build the demo enclosure, but I haven’t counted the CNC machine, since it’s a general-purpose tool I use for other projects. Plus, you need to bring your own passive speakers, which can obviously vary widely in price.
Things I’d do differently
Anyway, the results are worth far more than the cost. I now have exactly what I wanted in the first place: a box that plays the music I own, from the storage I control, through the speakers I chose, without needing someone else’s ecosystem or subscription service. In other words, I ended up with the experience I want from a modern streaming amplifier, without the price tag or the ecosystem. AirPlay, Spotify, and Bluetooth are just useful bonuses when guests want to play something from their own devices.
If I build a second version, I’d be tempted to switch to a class-D amplifier topology. That would eliminate much of the circuit and thermal complexity of the class-AB design, while making the whole amplifier considerably more efficient. The drawback is that it removes the point of the hybrid tube, making the design comparatively “boring.” Then again, the tube is arguably doing more aesthetically than electronically at sensible listening volumes, so perhaps that wouldn’t be much of a loss. I could instead spend time on useful features like play/pause, mute, source selection, and a headphone output.
But for now, I’m very, very pleased with how my DIY smart amplifier turned out. Now to enjoy the tunes.
En savoir plus sur UniversSmartphone
Subscribe to get the latest posts sent to your email.


