Norns on Raspberry Pi



making norns receive osc is not really the issue
i think the ‘difficulty’ is , how do you plan to generate the encoder and button events?

afaik, this is not exposed to lua, so you are going to have to do this by forking/extending matron.

if you have the relevant skills to understand the matron C code, its not too hard, but likely to be fiddly (if my experience with push2 is to go by) … the event generation is ‘easy’ , the main bit is wiring it (possibly via oracle?)

as for Arc, would have thought the arc support would eventually be added ‘natively’ rather than going via an OSC bridge, Id have thought that approach would be pretty simple.
(wether encoder events are the right thing to be throwing to lua from an Arc is another matter :wink: (given the current acceleration code etc)


I know, I was just yanking my own chain, ha ha!

This is good food for thought and thanks for sharing but I’m not sure what you meant by

do you mean getting it linked permanantly?

Is this referring to the varying speeds of OSC sending/receiving?

//edit actually I realize what you mean by acceleration code, the code that handles the accel value from the encoder

P.S. how did you go about getting the Push2 encoders to act as the native encoders? or is this a clever illusion?


Is norns running serialosc under the hood somewhere?

I don’t see a serialosc/serialoscd process running but i remember my friend’s grid just showing up without any fiddling around.

Would I want to install serialosc separately? Would this screw anything up with norns?


I believe I read in one of these threads that it’s just communicating with grids directly through the USB port (raw serial, no OSC). Naturally, I can’t actually find that to link to now.

I haven’t tried to set up the pi-norns yet. raspberry porns?
(I was waiting on a software update to support newer B+ boards, which may well have happened already.)

This mostly means that I can’t confirm for you that my grid “just works” in this setup. But it does just work on the official hardware, so that’s something.

Anyway… I don’t imagine it would screw anything up. It’d just sit in memory, ignored.


In reading the development thread today I think i understand a bit better - I believe grid is detected by libmonome - which might be happening inside the matron process (?)

Mostly what I’m looking for is some kind of “a device has been added” output when plugging something in (like a grid, or whatever).

FWIW - i have things running on a pi3b+, but i had to jump thru a bunch of hoops recompiling to get a version that works.


hey @TheTechnobear i have a push two and i’d love to try the NornRpiP2 solution if your willing to share it


like the development thread, we’ve decided that this thread has been prone to redundancy and information loss— it’s much better to do this sort of development via git issues.

ideally this information should be collected in a README in norns-image: i’ve started an issue here:

let’s continue this conversation there, and help build information that will persist without searching through hundreds of scattered forum posts.



Is there a GitHub ticket discussing running the various pieces of norns software on a desktop/laptop computer?

Approaching: norns
Norns technical discussions on lines (& moderation)

I’ve got it running on a Linux desktop (in VMware) without too many issues


Is it documented anywhere?

Apparently one can run supercollider and jackd inside a privileged docker container, which should have close to 0 performance overhead.

(I haven’t tried running it myself yet though)

I like the idea of getting the whole thing running in docker as it’s easily reproducible, it might also be useful for CI down the road.

When I get some free time, probably nearer to September realistically, I might have a go getting it working.


I think I made some posts at the time of doing it, on one of the ill-fated threads (rPI or development, can’t remember)

but basically I followed the instructions in the norns and maiden repos.
think the only thing, I had to do ‘unusually’ was to build supercollider, as at the time 3.9 was not available via apt-get. (but the build is very easy, so no issue)
obviously given the power of the desktop (relative to a rPI) , you don’t need to worry about performance setting… it works fine out of the box.

only small issue I had with VMware Fusion, was the ‘virtual soundcard’, causes glitches, which im talking to them about - but this is a specific issue, as my usb audio interface works fine in the VM.
(fortunately, PD/SC all have issues in the VM, so its easy for VMware to replicate)

anyway, definitely useful , I used it whilst I was developing the Push 2 ‘driver’ - primarily because I cant get sublime text on arm :wink:

docker, yeah this is not something ive got into, but would definitely be interesting if it makes an easy install.



Okay wow, I’m literally building this same thing but by accident (didn’t consider it could act like Norns)! Imma read the backlog and I’ll get my repo in order since I wrote a bunch of systemd units to manage jackd and scsynth processes.


Oh, wow. You already did that in the norns-image repo. You are all so rad! Installing the system now.


Not sure if anyone else has had this issue, but whilst using earthsea (on raspi 3 with pisound, premptive kernel, 1000hz, performance governor) I’m getting a noticeable input lag from grid and midi controller. Interestingly enough, I don’t have the same lag using @TheTechnobear’s push2 install guide. Any pointers for things I should start looking at?



Main thing to check is that performance mode is really active , because even if you set in kernel often it gets set back to the default (desktop?) by a service during startup, so you need to make sure you have a service that is run later that sets it back.
( a pain, but that’s how it is with rPI at times :wink: )


When executing: install ....... dnsmasq while building norns theres a file conflict between a local file and that in the package. The default is to keep the local file. Is that right? ./ and ./ are failing for me, and norns-init fails

Its strange, I installed norns on an existing Pi image without any issues and got an external USB soundcard working with my Grid and default script. I decided to do a fresh clean install before working on hardware and ive not been able to get or to run since (ws-wrapper fails)


i thought stretch light already had dnsmasq installed ? so you should not need to reinstall.

generally though overwriting is ok, unless you have done local modifications, in which case you’ll need to redo those changes.

(its a while since i did this, so my memory is a bit vague e.g. if dnsmasq was brought in as a dependency, if it was, id very likely have accepted the default and overwritten, that’s my usual approach)

if ws-wrapper is failing, check you have the updated scripts, there was a change a while back where the order of parameters changed.

other than that, I think you’d have to post the errors your seeing (or more details) to give us more of an idea whats failing.


@TheTechnobear - Although what I did today was not for norns, I found something weird on desktop installs using stretch - and the dnsmasq does seem to be there. Earlier it was not though :confused:

Post install errors for Raspbian Pixel & Debian (stretch).

Error 0 - From me being being hasty…
Error 1 - Using guest access wifi (caused a managed dns flag over master with a broken CLI on Pixel)

My first goal to explore the core structure, and then doing a doing nano edit to /etc/network/interfaces config, I found it was mostly an issue on my router.

It seemed to be that extra utils or commands were not included, but later seemed to be there(dnsmasq and others)

This error sent me both times into an annoying loop, that boots to a restricted ash. In the ash shell, I couldnt fsck the file system and exit the boot loader.

The shell had a very limited set of commands. Maybe its worth a look for stretch structure?

@sam- Not quite GitHub, but on SourceForge, You may like testing or modifying Raspbian Pixel (Raspbian for Desktops)

In all fairness it was from Raspbian Pixel distributed from the SourceForge distro based on the Exton modified Build