the audio streaming series

My new desktop streaming system (DIY)

The winter season, a great time to do some hardware work. Doesn't happen that often around here - hardware work.
Why not getting rid of a bare board DAC and a bare RPi and build a nice looking desktop streaming solution!?!?  That idea triggered this little project...


...and what you see above is the result of this little project. So, what are we looking at !??!

A streamer based on RPi4 technology and a DAC based on the IMO still excellent performing
Khadas Toneboard 1.

To get more in detail:

  • the streamer is a Raspberry CM4 4GB module
  • on a WaveShare Mini Base Board (B) CM4-IO-BASE-A 
  • and a NVME M.2 256GB Samsung SSD
  • the Dickson heatsink keeps the CM4 below 40C°.
  • the DAC is a Khadas Toneboard 1
  • and there's also a iFi USB filter attached

Inside the cases there's some powerrail filtering and buffering in place. Powering is done through the GPIO headers on both devices.

A slightly modified dual-DC-rail linear Allo Shanti feeds both devices.
The Shanti IMO still is one of the best 5V-DC supplies out there. 


Slightly modified !?!? That's what I did to the Shanti:



As you can see I added switches to the Shanti to be able to turn both rails on and off separately.
Further I am able to avoid the Shanti supercap discharge over the connected devices. 

There's a small drawback: Adding any switches, plugs, soldering joints etc. to a DC power rail will degrade its (audio) performance. This fact alone actually speaks for not adding switches.
However. No matter what you do, you'll end up with a compromise at one point. And, as you can also see, I didn't cut or replace the DC cables on the Shanti. My main system Shanti looks different.


Let's talk a bit about software. 

The streamer runs my own custom-build (from scratch) 64bit Raspberry Pi OS based streaming OS.
The audio streaming solution is based on a Logitechmediaserver and squeezelite. Both applications are running on the same system. 

My own latest custom realtime kernel builds the core of the system.

The system optimizations and tweaks I've been applying follow the same strategy as outlined on this blog. Just have a look the audio streaming series, sKit, etc.. 

However. The level of optimizations go further of what you learn in the Audio Streaming Series.

My solution can also act as Airplay client. I can feed Qobuz streams from the iPhone right into 
my system. It doesn't sound as good as the LMS/squeezelite setup. However, it's closer than I expected it to be. On the first try I was shocked how close it was. The to me huge advantage for this Airplay setup is its convenience factor. With minor effort you can set up a pretty good sounding system in no time. And everybody with an Airplay capable device can stream audio to that device.

All that fun, at what price ???

The project took me a couple - partly challenging - hours of work.
Let's get a "couple of hours" defined. All in all the project ran over a period of three weeks. I'd estimate a 16 to 20 net hours effort for research, planning, sourcing, building, testing etc.

I spent roughly $/€ 40 for the two cases, $/€20 for some little parts, such as switches, LEDs, asf.  and another $/€40 for tools, such as a special cone drill for the large holes.

The electronics, RPi, DAC, cabling, etc. I had lying around.  And, to be honest, that's what actually makes the project feasible.


Bottom line, to wrap things up. All in all it's been a fun project.  Something different compared to all the hacking. 

There's a lot to think of. All these tiny details. ...where to drill the hole, how to drill it, how to avoid scratching these very sensitive surfaces, what parts, what switches, what LEDs, where to source it, asf, asf.  There's a lot to do and a lot can go wrong. For sure, you'll learn a lot. And yep, there's some stuff you do more than once. ;)  For sure you'll face a steep learning curve. And you also feel some kind of pressure (I did)  if you intend to build something like that properly with an appealing touch to it at the first shot.

And last but not least... ...what about perceived sound quality.

The setup sounds really nice on my Adam speakers. Very clean and punchy. Lot's of energy. Lot of details. Nothing to complain about. Even though I have a few commercial DACs and well cased RPi's around, I kind of prefer this new solution. A good working and sounding setup all done by yourself is simply more enjoyable.

Now there's one major caveat that comes with above solution. As you might have noticed I am using a CM4 on Waveshare board with NVME-m.2 SSD attached. This solution was prefered over any other RPi based solution. However. The Waveshare motherboard won't come with a seperate USB controller, like the RPi4. That's a problem. And I am not just talking about the lack of USB3.0. The PCI lane is occupied by the NVME adapter.  The USB2 ports run in a OTG-driver mode. And that's not good, not at all. You can face nasty XRUNS on your DAC. Running a realtime kernel, like I do,  makes things worse. It took me a major effort to get the XRUN issue somewhat under control up to 96kHz. All I am saying. Things can get tricky with such a setup!

My today's main audio system looks pretty similar to above desktop system. The main difference is the DAC. I am using an Allo Katana HAT DAC with class-A output stage. No need for USB. I have turned USB completely off. The main system performs - non-surprisingly - better then my new desktop setup. Beside that the main system still lacks a nice housing... ...the next winter is coming soon. ;)
And just to mention it: On the main system, the Shanti switches, you saw above, are replaced with remote controlled relays (Wifi-ESP8266).  Why?  The main audio system requires 6 power switches, a mix of AC and DC switches. It requires a certain timing for the power-on and another one for the power-off cycle. E.g. The Katana DAC should get some 20s settling time before the RPi starts up, after that I start the amp to avoid the turn-on thumps.  That works really nice.  By pushing a single shortcut on iOS - see below - the whole system starts up piece by piece. Finally, after more than a decade of DIY chaos the entire family can handle the stereo system. ;)



Enjoy.






7 comments:

  1. Great stuff! I'm down a different path upsampling to dsd (lms or hqplayer) on the server. I find different power supplies, usb cables, rpi settings, etc all change the sound. My next project to try to reduce the amount of variables with the TI ISOUSB211DPEVM usb isolator. Measurements of the Intona isolators are good, but there are some reports of issues with some dacs due to it being a sofware solution. I'm interested in the TI board since it is a chip solution and much less expensive and looks like the eval board allows multiple power supplies, etc. My goal is to make the source much less important. I did try the Topping HS01 and was not impressed, have you tried the Intona?

    ReplyDelete
  2. Hi Klaus what about using a self-powered SSD ? And why are you using a high current demanding NVME SSD ? I suppose squeezelite to be an in memory player, so with 4GB RAM buffering, the disk access should not be a limitation. I suppose RPI would behave better without having to power a SSD.
    Jo

    ReplyDelete
    Replies
    1. I used to use a self-powered USB -SATA SSDs. You (1) load your USB bus and (2) compete with a USB DAC and (3) you need to have the entire USB stack up'n running. (It's off on my main system with Allo Katana HAT and NVME SSD)
      In comparison the NVME SSD setup simply sounded better to me - meaning - it had less audible impact on my chain then the USB SSD. Just to mention it one more.
      Everything matters! Even different types/brands of SSDs or USB/Sata cables can make a difference.

      Good luck.

      Delete
  3. And since disk access matters, did you ever try to read music from a RAM disk ?
    Jo

    ReplyDelete
    Replies
    1. I claim to be the first who was pushing fullfile RAM buffers for audio playback around 15 years ago. ;) My squeezelite setup recommendations list fullfile RAM buffers as prefered setup since more than a decade. And... Guess what...The storage media still matters... BTW. Network File storage (NAS) I consider even worse than whatever local file storage. I've been trying pretty much everything. I loaded a full album on a RAM disk to see how that works btw. I also tried the RPi eMMC setup. I tried flacs vs wav. You name it.
      Above setup is my best streaming setup for the time being.

      Delete
  4. Thank you for sharing and preventing us from burning time with bogus good ideas
    Jo

    ReplyDelete
    Replies
    1. Don't get me wrong. RAM playback is not a bogus idea. It's great. And to me a must! All I am saying. It's not the end. Everything else (still) matters! Enjoy.

      Delete