Oled User Inteface for Volumio with Rotary and 4 Buttons, modular, highly, configurable supports ssd1306 and ssd1322

Hi there!
I’m building my own device.
Therefore i needed an Interface for Volumio, so i made one :wink:
The Code is on GitHub and highly configurable, have a look and/or give it a try :wink:
Here are some Pictures of the UI:
ssd1306 (1) ssd1306 (2) ssd1306 (3)

ssd1306Screen1 (1) ssd1306Screen1 (2)

ssd1306Screen2 (1) ssd1306Screen2 (2)

ssd1322 (1) ssd1322 (2)

ssd1322 (3) ssd1322Screenselect

ssd1322Screen1 (1) ssd1322Screen1 (2)

ssd1322Screen2 (1) ssd1322Screen2 (2)

ssd1322Screen3 (1) ssd1322Screen3 (2)

ssd1322Screen4 (1) ssd1322Screen4 (2)

ssd1322Screen5 (1) ssd1322Screen5 (2)

ssd1322Screen6 (1) ssd1322Screen6 (2)

ssd1322Screen7 (1) ssd1322Screen7 (2)

ssd1322Screen8 (1) ssd1322Screen8 (2)

And here are some Pics of my own-build-Receiver:

You can find everything on my GitHub Page.
I’m actually codiing on some features, so the code will improve from time to time.
Additionally i will make manuals, wiring diagrams etc. for the wiki on Github.
If something is missing that you need to know, or if you got an feature request, please contact me :wink:

Or use the Discord Server

Best wishes!


Just one word : amazing! :+1::wink:

1 Like

Fantastic! I have been wishing for something like this!

Now, if it could be installed like a plugin… :wink:

1 Like

This is also on my wishlist. But i have not understand how to build a plugin yet… So if anybody could assist me with thatt topic, it would be great!


what a brilliant idea! I have to get me one of those T2‘s!!!

I am looking for a case for my player for a while now and was originally looking into a Mac mini sized case. However this formfactor is not to common and usually comes without holes.
And now there is you dishing out this player.
My dad used to have a Braun Atelier Stereo and I always loved to look. Thanks for the inspiration and sorry but I have to steel this idea!

You are f***ing brilliant, seriously!

1 Like

Thank you for your nice words!
Here is a Discord Server for this project.
I can provide CAD Files for the Backpanel 3D-Print Files for the Housing, Frontpanel etc…
-> If anyone is interested, just join :wink:

1 Like

Damn you, now I need to get one of those displays to have a play with.

Nice work

1 Like

Continuing the discussion from Oled User Inteface for Volumio with Rotary and 4 Buttons, modular, highly, configurable supports ssd1306 and ssd1322:

Hey, is there a chance that the display shows the tracks played from tidal. at the moment when I play tidal the screen freezes.

1 Like

Hi, i just fixed the Issue.
Please do the following steps or make a clean install:


sudo systemctl stop nr1ui.service

sudo systemctl disable nr1ui.service

sudo rm -r NR1-UI

git clone https://github.com/Maschine2501/NR1-UI.git
chmod +x ~/NR1-UI/nr1ui.py

sudo cp ~/NR1-UI/service-files/nr1ui.service /lib/systemd/system/

sudo systemctl daemon-reload
sudo systemctl enable nr1ui.service

sudo systemctl start nr1ui.service

hey, this error pops up after typing “sudo journalctl -fu nr1ui.service”: nr1ui [716]: render error

@Pawel_Grudnik : Hi, the “render error” indeed happens regulary.
I’ve tried my best to get rid of it, but did not succeed yet. I guess it is caused by the Data-Stream of Cava, which is not realy consistent. The Cava Stream should deliver 64 Values of Peak Data, but sometimes it delivers 34, 48, 17, 56 etc… To prevent a freeze of the Code, i’ve made an If statement, which only displays Spectrum parts if “length(data)” is above or equal to 64. I suspect that this does not work correct every time.
I have the “render error” to, but in my case it shows up without any direct dependency. -> Should mean: In my setup the Display/code runs fine, but in the log, randomly, the “render error” appears.

To help you, i need more Informations:
What Hardware do you use? (RPi 1, 2, 3, 4, Zero?)
What Display do you use? (ssd1306, ssd1322?)
What is about the function of the code itself? -> Does it freeze and state “render error”? -> Does it run, but “render error” in journal?
What are the circumstances when it happens? (playback from Tidal? Standbyscreen?..)

By the way: The first submited Issue (Tidal) was fixed by me 3 Hours after you reported it. As I am developing and deploying it all by myself, I realy would appreciate a feedback to the provided “workaround”/“bugfix”, like: “Tidal playback now works…” or something.
And yeah, a simple: “Thank you” afterwards would have been nice too…

For future failure reports, please describe the circumstances, like: Hardware, behaviour of the code, when, what, why…
Otherwise it is nearly impossible to help you or to fix the issue.

Here is an bad Example:
Customer: “Email does not work, Karen”
Support: “oh dear… sigh

Here is an good example:
customer: “since i moved my pc from the office to my Flat, i can not send and receive emails. Strangely the normal Internet does work fine, but i noticed that corporat related stuff (intranet…) does not work. Here is my PC Name: XXXXXXXXXX you can reach me under the phone number: YYYYYYYY, best wishes Jane”
support: “I guess you have no connection to the corporate network. In order to send and receive emails, you need a connection to the corporate network. To get the corporate-network connection please use the VPN- Icon on your desktop, open it, click “connect”. Afterwards your mail client should be connected. Best wishes, your support”

Of course, thanks for the quick response and the plug. I have an RPI 3 and the newest volumio. Display on SSD1306. The start-up graphic appears on the display during startup, followed by complete darkness. :slight_smile: :slight_smile:

@Pawel_Grudnik : Hi, thanks for the informations.
I’ve just ttried to reproduce the failure… (Fresh installation as mentioned in reply (tidal))
Failure did not happen here. (RPi4)
In the past I’ve used a RPi3 and I’m sure that the only diference is the performance.
I’ll ask a friend of mine to reproduce it with a RPi3…

What have you changed in the nr1ui.py? Only the “displayTechnology”?
With an ssd1306 only the two screen layouts from “ScreenList” will work…

if DisplayTechnology == 'ssd1306':
    ScreenList = ['Progress-Bar', 'Spectrum-Screen']
if DisplayTechnology != 'ssd1306':
    if NowPlayingLayout not in ScreenList:
        WriteScreen1 = open('/home/volumio/NR1-UI/config/LayoutSet.txt', 'w')
        NowPlayingLayout = 'No-Spectrum'
if DisplayTechnology == 'ssd1306':
    if NowPlayingLayout not in ScreenList:
        WriteScreen1 = open('/home/volumio/NR1-UI/config/LayoutSet.txt', 'w')
        NowPlayingLayout = 'Progress-Bar'

Are you able to join the discord server? This would make it easier to help you… (real time comunication, screensharing, etc…)

hey, you made it. Today I reset my mpd again and it started. The error was also on my other rpi4 device. Thanks for the help

1 Like

Hey guys!

Today I managed the Update to latest Python (3.8.5)!

Here’s the new Version: Main-Installation steps (Python 3.8.5) (Bash-Script)

Remeber to proceed a clean installation, beginning wit the Basic Installation Steps


Hi. Thanks for this awesome project shared.
I followed your instructions on github (both basic and main installation steps) and unfortunately it seems as python is not in its supposed version.

volumio@volumio:~$ python3 -V
Python 3.4.2

Trying to execute your script, there is a lot of import errors, like the one below:

volumio@volumio:/NR1-UI$ python3 nr1ui.py
Traceback (most recent call last):   
File "nr1ui.py", line 42, in <module>
from socketIO_client import SocketIO
ImportError: No module named 'socketIO_client'

Can U give me a hint, what went wrong with installation?

I have RPI 3B+ and latest volumio 2.834

Hi there!
Python 3.8.5 is installed… but it is installed as “altinstall” otherwise all ssh related stuff, like WEB-UI, SHH would break.
You can check that Python 3.8.5 is installed with this:

/home/volumio/src/Python-3.8.5/bin/python3.8 -V

Normaly nr1ui is started by a service file on startup. (tthis is activated automaticly in setup )
If nr1ui does not show anything, please use the journal:

sudo journalctl -fu nr1ui.service

If the service is running this will print out some status Information.

To stop the code use this:

sudo systemctl stop nr1ui.service

To start the code use this command:

sudo systemctl start nr1ui.service

If you don’t want the service file to load nr1ui on startup, deactivate it:

sudo systemctl disable nr1ui.service

To enable it aggain use this:

sudo systemctl enable nr1ui.service

If the service is NOT running, you can launch nr1ui dircetly with python 3.8.5:

/home/volumio/src/Python-3.8.5/bin/python3.8 -u /home/volumio/NR1-UI/nr1ui.py

Reason for missing “Modules”:

As i could see in your command, you tried to launch nr1ui with tthe preinstalled python3 (3.4.x). Thios python has not a single moduled installed. During Setup, all needed Moduels are installed for python 3.8.5. Therfore you need to launch it with python3.8.5.
The “command” for python 3.8.5 is:


To launch nr1ui.py you can use it like this:

/home/volumio/src/Python-3.8.5/bin/python3.8 -u /home/volumio/NR1-UI/nr1ui.py

PS: for PIP3 its nearly the same:

/home/volumio/src/Python-3.8.5/bin/pip3.8 -V


Hope this clearifys the situation. Feel free to join the Discord Channel for furrther assistance.

Best wishes! :smile:

Wow, thank you for such a substantive response. I will check it out tomorrow.

1 Like

Thanks for your sterling work on this, I’m planning to get a classic NAD receiver and replace the tuner with my Volumio raspberry pi, this looks perfect for what I’ll need, so glad you posted instructions and everything but I’m a noob so would be super interested to know if this makes its way to plugin territory.

1 Like

@AdamM: Thank you!
I hope that there will be a NR1-UI Plugin this year… :sweat_smile: :sweat_smile: