Norns on Raspberry Pi



this is the 800$ question right now [along with the /dev/events stuff :slight_smile:



at line 71:

/* Use fb0 if no fram buffer is specified */
if (fb_name == NULL) {
fb_name = “/dev/fb0”;

and line 138:

void screen_init(void) {
surfacefb = cairo_linuxfb_surface_create("/dev/fb0");
if(surfacefb == NULL) { return; }
crfb = cairo_create(surfacefb);


thus - change line 138 to fb1 ?

I don’t have my install working yet so can’t try.


Not 100% sure about this but here’s my instructions/notes for getting the SH1106 OLED display working.

Please test if you like and let me know if you run into problems


thats it!!!


after you replaced /dev/fb0 with /dev/fb1 you have to rebuild norns:

./waf configure


Based on your ps listing it would appear you are trying to use the systemd unit setup - if that is setup correctly the things should be accessible from port 80. If you are starting maiden by hand without the -fd flag then things should be accessible on port 5000.


Thanks. I got it running in the meantime :blush:


i would love that but it looks like the piSound uses all the pins So i am going to continue to hopeully find a software solution but as of now unless i hear something else fabulous [as this surely is]
i am going to tap out or Raspi Norns Dev


Heck yeah! Thanks for the additional work to make that work!


great stuff @reijo , really good progress.


I’m not worried about replicating a pair of encoders and buttons. Those aren’t a dealbreaker for me, and the prospect of integrating an external controller for those didn’t dissuade me from ordering a PiSound instead of some other DAC, either.

(I’m also planning to test whether or not MODEP is a viable backup for my MOD Duo…)

That’s burying the lede, I suppose. I ordered a PiSound last night. It’ll probably take a while to ship overseas, so I’m still only lurking. But, I’m at least that committed now, and I’ve got more of a timeline before me.


good luck ,
with time this nut will be cracked :slight_smile:

ive been playing with a variety of kernels configurations today (between beers with friends) , not much to show as yet, but you learn something on each interaction (if only how to type faster :wink: )


Untitled.m4v (3.0 MB)

Norns running on RasPi with OLED and USB Audio (also got the oled to startup on boot!)


Anyone got the encoder or button GPIOs figured out?

The ones listed at seem wrong as GPIO39 (which I think means pin 39) is GND… ???

I also tried wiring up with those pin assignments and got nothing. :frowning:

EDIT - the compute module (cm3) in Norns has a different pinout, so that explains the GPIO numbers being higher than are available on the RasPi 3


very nice - what’s your OLED ?

now a bit torn - was going to go with pisound but having the display for this seems very nice.


OLED is an SH1106 chip version from ebay - about $5-6 each
“HQ 1.3” 128*64 OLED Graphic Display Module SPI LCD"

Now… the pisound gets you audio I/O - which is a whole different thing. However, I think shreeswifty said something above that the pisound uses all the available gpio pins, so you might investigate that a bit further.

I’m gonna look into another DAC solution later, but don’t hold your breath. :slight_smile:


yeah - the pisound does appear to (not bought anything yet but going to press the trigger soon)

hmm. questions questions! :slight_smile:


warning pisound
I determined last night that the pisound was disabling preemption, which is i believe the cause for me not getting the performance id hoped.
blokas have suggested i can hack the pisound driver to make it work (as a temp fix, till they can get a proper solution) , so thats my plan for today…

if that fails, im going to transfer a hifiberry dac+, that i have currently on a pi2, to the pi3…

think i might also order a rpi3b+, so i’ll have the dac+ on the rpi3b and pisound on a pi3b as … norns on one, orac on the other :slight_smile:


That’s gonna need some clarifying.

According to this thread:

There’s a 14 pin header on the side somewhere, which routes back to these gpio pins on the Raspberry Pi:

1 Ground
2 5v Power
3 BCM 7 (CE1)
4 3v3 Power
5 BCM 5
6 BCM 6
7 BCM 22
8 BCM 23
9 BCM 27
10 BCM 4 (GPCLK0)
11 BCM 15 (RXD)
12 BCM 14 (TXD)
13 BCM 2 (SDA)
14 BCM 3 (SLC)

I would assume that the pins listed are sufficient to drive your input controls (two buttons and two press-enabled encoders — these are humble requirements).

But I wouldn’t guess these are the specific pins expected for driving an off the shelf 3” screen directly off the board.

That may be what @shreeswifty was describing?

(Your display, in this configuration, might need to connect via USB, or HDMI. Or some wireless solution, like a web app. Or OSC.)

Regardless, gpio driven displays seem to have data bottlenecks that restrict frame rate, so you probably don’t want that anyway.


Yes there’s a bare header but not enough to drive the 3 encoders , 3 buttons and display you’ll need.
You could use multiplexing or drive an Arduino with more pins.
But both solutions would require you to write a Matron driver , not hard for this task if your familiar with C and hardware interfacing.