A Display & Control Kit for 256x64 SPI OLED's

Hi everyone,

I’m not a coder by trade, just someone with too much time on their hands…

The project started after I was inspired by the NR1-UI by @maschine2501 GitHub repo and the Audiophonics plugin so cheers to @olivier_audiophonics. Those projects showed me what was possible, but I found there wasn’t a decent, up-to-date script for 256x64 SPI OLEDs in the Volumio world. That became my starting point.

From there, I’ve built Quadify, a toolkit that adds advanced display and control support for Raspberry Pi audio systems running Volumio. It brings OLED display integration, rotary encoders, buttons, and LEDs together in a clean, modular way, making it much easier to add these features to your setup.

If you’re looking for a way to bring an SPI OLED to life on Volumio (or just want to see what else is possible), check it out:
GitHub: GitHub - theshepherdmatt/Quadify: Quadify transforms classic audio gear, like Quad FM4 tuners, into modern streaming systems with OLED display, VU meters, menu control, and spectrum visualisation, all powered by Raspberry Pi and Volumio.

Happy to answer questions, share installation steps, or help get you started.

Cheers
Matt

5 Likes

very nice indeed!

could you post some pictures of the end result?

1 Like

Hey @Darmur,

When Quadify starts up it pulls a list of available services and sources from Volumio, then grabs the icons for the main menu. These update dynamically depending on what’s enabled. Once a service is selected, Quadify fetches the navigation from Volumio and builds a menu list. From there, the user can scroll through the options, play a track, or switch between different screen views.

We’re a small group of Quad enthusiasts and have put together a website showing how to breathe new life into the almost-redundant FM4 tuner by turning it into a modern streamer. Many of our members are in their 70s and had never streamed music before, some had never even heard of a Raspberry Pi, so helping them get set up with SSH and installation scripts has been both a challenge and a hugely rewarding experience.

I have attempted to make this into a plugin but hit a few walls regarding volumio saving the users choices in the plugin settings.

https://quadify.co.uk

6 Likes

awesome! well done!

1 Like

I see real potential here. There have been several requests to control Volumio exclusively via RC remote, this could be a step in that direction. Where the Rotary is replaced by UP, DOWN, LEFT, RIGHT and ENTER.

1 Like

Hey @Wheaten,

Yes, we’ve experimented with both triggerhappy and LIRC for this. As you say, the mapping is flexible, for example scroll left/right on the rotary can just as easily be mapped to up/down on a remote. I haven’t tested every plugin or service yet, but so far they all seem to follow the same navigation pattern.

Cheers,
Matt

1 Like

Hi Matt, this is amazing, as I was a bit upset when the old 265x64 did RIP but I have this display in my trunk, Will your Plugin also work with Raspberry Pi 5?
Cheers
Benjamin from Frankfurt.

1 Like

Hi Benjamin,

Glad to hear you’ve got that display handy! I’ve had it working on the Pi 5, but it’s not fully ready just yet. The main challenge has been getting Raspberry Pi OS (still on Buster for Volumio) to play nicely with the newer Luma OLED libraries, matching them up was a bit of a headache.

It’s definitely doable, but not quite plug-and-play at the moment. I’ll keep you posted once I’ve got a smoother install path for Pi 5.

Cheers,
Matt

1 Like

Hello,
With volumio 4.cx beta based on bookworm, luma OLED is a package you can install using apt.

sudo apt install python3-luma.oled
1 Like

Thanks for the Luma heads-up!

We’ve got Luma running on the Pi 5 now, it just took a bit of jiggery-pokery to make it play nicely with Quadify (wiring overlays/initialisation and some version pinning). Appreciate the tip!

You’re welcome.
And pillow is available too as python3-pillow package.
Very nice project!:+1:

1 Like

Awesome, thanks for the Pillow tip too!

We’ll lean on the Debian packages (python3-luma.oled, python3-pillow) on Bookworm/Pi 5 to keep installs faster and less brittle, and only pin the few Python deps we still need in requirements.txt. Appreciate the heads-up and the kind words, glad you like the project! If you spot anything else, keep ’em coming.

what python package cause you headache?
Installing pip packet on bookworm requires to use venv

sudo apt install --no-install-recommends python3-venv

You create the venv* then inside you can use pip without breaking the system!

  • ask an AI to assist you :wink:

Short version of “what hurt” for us on Pi 5:

  • Buster vs Bookworm mismatch. Early builds were on Buster/Python 3.7 while newer luma.oled wheels expected newer Pillow/ABI. Pip installs dragged in versions that didn’t play nice with the older base.
  • Pillow/pycairo/cairosvg stack. Building from pip wanted libjpeg/freetype/cairo dev headers and the versions didn’t always line up. We’ve since moved to the Debian packages on Bookworm where possible.
  • RPi.GPIO on Pi 5. The Pi 5 GPIO stack changed; we hit edge cases with RPi.GPIO availability/backends. We tweaked our code/service to a setup that works reliably on Volumio’s Bookworm images.
  • I²C detection script. Our old awk-based i2cdetect parse tripped over BusyBox awk (no strtonum). We replaced it with a tiny Python/smbus probe.

Your venv suggestion is spot on. Our current pattern on Bookworm/Pi 5:

# system packages (prefer these)
sudo apt update
sudo apt install -y python3-luma.oled python3-pillow python3-yaml python3-smbus

# isolate the few pip-only bits
sudo apt install --no-install-recommends -y python3-venv
python3 -m venv /home/volumio/Quadify/.venv
/home/volumio/Quadify/.venv/bin/pip install --upgrade pip
/home/volumio/Quadify/.venv/bin/pip install smbus2 transitions websocket-client

And in the systemd unit we point to the venv Python:

ExecStart=/home/volumio/Quadify/.venv/bin/python /home/volumio/Quadify/src/main.py

That combo (APT for luma.oled/Pillow, venv for the few pip deps) has been the least brittle. Appreciate the nudge, made our setup cleaner! If you spot any other rough edges, I’m all ears.