Volumio + 2.42" OLED + PSU in one aluminium case

Hello all,

I recently completed my own DIY Volumio installation inspired by some of the threads here and thought I’d share mine as well.

The hardware is a RPI 3B with the allo Kali and Piano 2.1 heads which were in an acrylic case. In addition there was a much larger linear power supply. The setup was standing at the TV board but didn’t really look appealing especially since there were cables at three sides of the RPI plugged in making it kinda messy. I thought of putting the RPI and the PSU into one case and looked for something suitable which I found at the bay searching for DIY amp cases. A simple aluminium case out of 6 pieces and some screws. It’s not very high quality but it’s fitting the needs and allows enough modifications to put in what was needed.

First I started dissassembling the old RPI case as well as the PSU and started mounting both at the bottom plate with some distance screws. On the outside I ground the tips of the screws even to the nuts.

The hardest part was cutting out the holes for the Ethernet and USB ports. Since I don’t have a CNC machine I had to rely on a drill a Dremel and some files. The result was satisfying enough. The power socket was already built in and didn’t require any work except soldering.
Since the RCA connectors of the Piano DAC face another direction than the RPI ports I had to build in some new RCA connectors at the back plate as well.

By the way does anyone have tips on how to label such connectors (“R” and “L”) on aluminium? Engraving by hand seems to be the only suitable idea at the moment. I’d rather like to have printed descriptions like on regular amps though.

Internally I had to connect the new RCA connectors with the DAC of course and allo might be upset with doing some soldering on their board.

On the front panel I drilled the hole of the PSU power button. I also ordered a custom Volumio label to make the front more appealing. However something was missing. I wanted to have some LEDs at the front to show me the status of the new network player. I had in mind one for the general power status, a additional one for Volumio UI readiness and another one indicating activity like active music playback.

For this I purchased some 2V LEDs and 680Ohm resistors to connect those to the remaining GPIO pins allo made available at the top of the Piano DAC. With some connecting wires (and allo might dislike this again as I had to bend the pins due to lack of space at the top) I connected everything and found out that there is already the GPIO Control plugin which spared me from scripting work I was afraid of having to do.

After configuring the plugin everything runs fine as expected. The right LED indicates power being connected to the PSU directly, the center indicates Volumio readiness and the left one indicates music playback. In general I’m quite happy with the overall result considering that this project was mostly initiated out of boredom however with some additional tools like a stand drill I could have gotten the positions of the front panel LEDs more accurate but it’s barely visible. Hope you like it!


You could use Letraset to label the inlet & outlets. then spray the back cover with a varnish to protect the labels

You may want to move either the leads to the RCA’s or the mains cables as they are close to each other and could induce mains hum into the system. Signal leads and mains should never be run parallel with each other (but can cross at 90° to each other. It may also be better to use shielded cable for the RCA’s rather than speaker cable

Nice project by the way

Hi Andrew,

Thanks for the tip for the labels! I’ll look into that.

About the cables I’m aware of this issue and I’m still planing to improve that. Currently I positioned the cables to have as much space as possible between them which might not be well visible in the pictures. While the main power leads run close to the bottom plate the signal leads for the RCAs run close to the top plate so there is some room in between. I initially wanted to arrange the PCBs differently inside the case to avoid such cross cabling issues but the space didn’t allow it. Maybe I can improve that when replacing the wires. I unfortunately didn’t have shielded ones near so I used those instead. Thanks for the reminder though! :slightly_smiling_face:

If your house is anything like mine, I bet you have loads of AV cables in a manbox somewhere lol That’s where I harvest my shielded cable from

1 Like

Nice - congratulations.

Do the hats require separate power or are they powered from the pi? Does the PSU offer dual supplies? (Its kind of hard to make out the specs on the transformer.) Did you consider a switched power supply at all?

Very nice ! Simple but nice.
The only thing it is missing IMHO is an LCD or TFT panel…does not have to be big …

Well done

@DannyBoyNYC: Thank you! The hats do not require separate power but you can provide power to the KALI reclocker hat to exclude influences from the RPI by changing a jumper on the board.
You can find the specs of the power supply here https://www.audiophonics.fr/en/hifi-power-supply/audiophonics-lpsu25-linear-regulated-low-noise-power-supply-usb-115v-to-5v-2a-25va-p-12581.html
The transformer seems to have two outputs at 7.5V/12.5VA and the power supply has 3 outputs in total (originally 2 USB and 1 Jack) which seem to be filtered with individual capacitors but I don’t have more details than that. I first had a very simple switched power supply and then upgraded to this one which seemed to provide a slight subjective improvement to the sound.

@noire: Thank you! I indeed wanted a simple setup as it fits the rest of my equipment. A small LCD is something I indeed considered but I wasn’t sure whether it would be possible with the KALI + Piano DAC and the little number of GPIO pins you have left to use. Maybe I’ll dig a little deeper into that to see if it’s doable and then I can redesign the front panel with one. It would be a great feature!

1 Like

A small I2C 0.96" OLED Display works well & only uses pins 3 & 5 on the header (plus power & Gnd) Like This

This is mine being tested (still waiting for the slow boat from China to deliver my case)

If you do add a display, use a different SSD to try everything out rather than the current one as things tend to go wrong, so good to have a backup

What case do you use for integrating this lcd device. I also have a 1.3 lcd display…

Oh well, looks like I have to redesign my front panel. This looks simpler than I thought it would be!

@Lintbf I’ve ordered Case

I’ll replace the front plate with a frosted acrylic one until I get access to a milling machine to cut the aluminium. There’s just enough space on the back for network socket, power connector & RCA’s

The dimensions are given in wide x height x length, for example I want one with height 50mm , for those the wide is only 20 mm.?
What size do you have exactly? I want to make an ideea

the case is 76mm wide, 35mm high and 100mm long

I guess my lcd 1.3 inch display won’t fit in this because the height of the display is 35.5 and case is 35mm what do you think?

It won’t fit as they are external dimensions, so probably only 30mm internal - they also do this one 106x55x150mm

So I now was able to exchange the cables to the RCA sockets with shielded ones. In addition I got a 0.96" OLED from AZDelivery using the SSD1306 driver.
I then proceeded to install the pydPiper plugin as described on https://github.com/dhrone/pydPiper/. For the pydpiper.service file I used the following parameters:

ExecStart=/usr/bin/docker run --network=host --privileged -v /var/log:/var/log:rw dhrone/pydpiper:latest python /app/pydPiper.py --volumio --driver ssd1306_i2c --width 128 --height 64 --i2caddress 0x3C --i2cport 1 --timezone ‘France/Paris’ --temperature celsius --pages pages_ssd1306.py

I only seem to have a partial success. After rebooting Volumio the display indeed turns on but only shows the volume bar like in the picture below.

In addition, if I change the volume on the UI it doesn’t seem to be updated on the display. I didn’t modify the pages_ssd1306.py file yet as it seems to have a standard set of widgets already in place.

Is there anything I missed and someone could help me getting fixed please?

Thank you!

Sorry I can’t help with this as I installed this one for my OLED

But I have used pydPiper on 40x2, 20x4 & 16x2 character LCD display - on all these I had to edit the pages file to get what I wanted on the display.

Also I used Saiyato’s plugin rather than following pydPiper github install

You can install it by hand, or do this:

sudo wget -O volumio_install_from_zip.sh https://raw.githubusercontent.com/Saiyato/volumio-plugin-helper/master/volumio_install_from_zip.sh

Wait for it to download the file, you might need to enter the volumio password. And then this:

sh volumio_install_from_zip.sh Saiyato volumio-pydpiper-plugin
1 Like

Thanks, Andrew! With the install commands to use Saiyato’s pydPiper plugin and after adjusting the ExecStart command to the following at /data/plugins/accessory/pydpiper/unit/pydpiper.service it worked instantly!

ExecStart=/usr/bin/docker run --rm --network=host --privileged -v /var/log:/var/log:rw -v /home/volumio/pydPiper:/app:ro dhrone/pydpiper:v0.31-alpha python /app/pydPiper.py --volumio --driver ssd1306_i2c --width 128 --height 64 --i2caddress 0x3C --i2cport 1 --timezone ‘Europe/Amsterdam’ --temperature celsius --pages pages_ssd1306.py

Now I only need to find a way to get a clean rectangle cutout at the front panel for the display.without a milling machine but then my project shall be finished. Thanks for your help!

1 Like

Happy it all worked out

Assuming you use facebook, post a status asking if anyone has access to a milling machine, you may find a friend of a friend can do it for you - worked for me - or will work when the case arrives :slight_smile:

So here is a little update on my project.

With the tip of andrewnorth for the plug labels at the back I came to scale model decals which you apply with water. You can get sets of individual letters which I used. It’s a bit tedious to get the letters all in line but the result is great.

After playing around a little bit with the 0.96" display I rather found it too small to read from the couch or near it as the system is standing on a lower shelf under the TV. I started looking at the 2.42" OLEDs. They obviously use a different driver (SSD1309) however seem to be compatible with SSD1306 so I ordered on from AZDelivery. At many of those you seem to have to move a resistor (R4 to R3) and bridge a contact (R5) at the PCB in order to make it work with I2C. So I gave it a try but the display remained black and with the i2cdetect command I couldn’t find its address either.

Eventually I found a German community where someone pointed out the specialities with these OLEDs and that the RES pin has to be connected as well in order to make it work. Since there doesn’t seem to be a way to control the RES pin on the RPI easily he seems to have found a different solution.
He used a 18kOhm resistor between VCC and RES and a 47nF foil capacitor (must be foil) between GND and RES. His statement was that the RES pin must be first connected to GND and then to VCC which he realized with this wiring.


I thought I’d give it try. What else shall I do? And see there it works! The only thing I had to adapt in the pydPiper page file was the volume change bar. The size seems to have caused the image to flicker which I could solve by just shrinking it by some pixels. I have no explanation for this. The rest works fine.

With the new display I of course also needed a new solution for the front panel. Since I already drilled holes into the old panel for the LEDs I rather wanted to replace it with a new one without so many LEDs and the OLED in the center instead. Somewhere in a thread here I stumbled upon https://www.schaeffer-ag.de/ who can produce front panels by your needs if you create the 3D model with their software. A bit pricy for a single panel but the quality is perfect, it has colored engravings and I’m quite happy how it ended up.