Skip to content

1. Norns 2.0 Full Build on RasPi

Steven Noreyko edited this page Jun 30, 2019 · 24 revisions

This information is from April 2019 and may now be out of date.

Proceed at your own risk.

Download raspbian stretch lite

https://www.raspberrypi.org/downloads/raspbian/ (tested with 2018-11-13 release)

write to sdcard

Use balenaEtcher - https://www.balena.io/etcher/

add ssh and wpa-supplicant files to boot partition of sd card

Some details here https://caffinc.github.io/2016/12/raspberry-pi-3-headless/

PI Setup

Boot the pi and login with default user:pass - pi:raspberry

Follow new Compile instructions

There's a new set of instructions to get the same kernel setup used by pisound along with the ssd1322 oled driver.

https://github.com/okyeron/norns-linux-bits/blob/master/README.md

Follow all those instructions then come back here

package installs

follow instructions for apt-get, accept all defaults
updated to use https://package.monome.org/

curl https://keybase.io/artfwo/pgp_keys.asc | sudo apt-key add -
echo "deb https://package.monome.org/ stretch main" | sudo tee /etc/apt/sources.list.d/norns.list

sudo apt update
sudo apt install --no-install-recommends jackd2
sudo apt-get install libboost1.62-dev
sudo apt-get install libjack-jackd2-dev
sudo apt install libmonome-dev libnanomsg-dev supercollider-language supercollider-server supercollider-supernova supercollider-dev liblua5.3-dev libudev-dev libevdev-dev liblo-dev libcairo2-dev liblua5.3-dev libavahi-compat-libdnssd-dev libasound2-dev 
sudo apt install dnsmasq
sudo apt install sc3-plugins ladspalist
sudo apt install usbmount

for DAC Audio

sudo apt-get install alsa-utils
sudo apt-get install libi2c-dev

sudo nano /lib/systemd/system/systemd-udevd.service
change slave to shared

Follow DAC install instructions

https://github.com/okyeron/norns-image/wiki/2.-DAC-Audio-Config-(WM3731)

USB Audio Config (if using USB audio)

https://github.com/okyeron/norns-image/wiki/3.-USB-Audio-Setup

Network Manager

Make a quick change to network interfaces so network-manager does not take over wifi

NOTE - At the end of the network-manager install you will get kicked of off wifi and will be assigned a new IP address. You will want to have a keyboard and monitor attached here to login directly and get your IP address with ifconfig - or you can fake it by checking a tool like LanScan to find the device on your network.

Also - the IP address will likely change each time you reboot.

We will fix this at the very end of the install.

sudo nano /etc/network/interfaces

#add this
auto wlan0

Then install network-manager and reboot

sudo apt install network-manager

NORNS SETUP

setup norns image

git clone https://github.com/monome/norns-image.git 
cd norns-image

do not run setup.sh YET

norns setup config

nano setup.sh

	# comment out 
	#sudo apt install network-manager dnsmasq-base midisport-firmware

	# comment out dhcp/interfaces copies so it does not hose your wifi when you install
	#sudo cp config/interfaces /etc/network/interfaces

nano config/norns-jack.service

	# if your using a usb soundcard, you'll may need to change this and also maybe change the buffer size (-p) 

Framebuffer setup for ssd1322 oled

nano config/norns-matron.service 
	# replace the line that starts with ExecStart with this one
	ExecStart=/home/we/norns/build/ws-wrapper/ws-wrapper ws://*:5555 /home/we/norns/build/matron/matron -f/dev/fb1

nano scripts/init-norns.sh

	# comment out i2cset for analog gain stages again
	#sudo i2cset -y 1 0x28 0x00
	#sudo i2cset -y 1 0x28 0x40
	
	#sudo i2cset -y 1 0x29 0x00
	#sudo i2cset -y 1 0x29 0x40
	
	# may need to comment out Mixer line depending on your DAC setup

Create norns-init.service sudo nano /etc/systemd/system/norns-init.service

[Unit]
Description=norns-init

[Service]
Type=oneshot

ExecStart=/bin/sh -c "/bin/echo -n performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"

[Install]
WantedBy=norns.target

then re-add norns-init to norns.target

nano config/norns.target

#add above norns-jack.service
Requires=norns-init.service

now run setup.sh
./setup.sh

install norns

cd ~
git clone https://github.com/monome/norns.git
cd norns


./waf configure
./waf

run sclang

sclang

install sc

cd sc
./install.sh

Framebuffer setup for oled

edit matron.shto add -f/dev/fb1

sudo nano ~/norns/matron.sh

./build/ws-wrapper/ws-wrapper ws://*:5555 ./build/matron/matron -f/dev/fb1

Dust and Maiden

Get dust from updater and push to device over SFTP

Or... trying another way - included with the other linux bits...

cd ~
cp ~/norns-linux-bits/dust.tar .
tar -xvf dust.tar
rm dust.tar

Get maiden from github releases: https://github.com/monome/maiden/releases

cd ~
wget https://github.com/monome/maiden/releases/download/v0.13/maiden-v0.13.tgz
tar -xvf maiden-v0.13.tgz
rm maiden-v0.13.tgz

Compiling Overlays

compile dts files for overlays if needed (or if you're using different GPIO pins)

.dts needs to be compiled to .dtbo and then the .dtbo and copy to /boot/overlays/

norns-buttons-encoders-overlay

sudo dtc -W no-unit_address_vs_reg -@ -I dts -O dtb -o /boot/overlays/norns-buttons-encoders.dtbo norns-buttons-encoders-overlay.dts

ssd1322

sudo dtc -W no-unit_address_vs_reg -@ -I dts -O dtb -o /boot/overlays/ssd1322-fates.dtbo ssd1322-fates-overlay.dts

Add overlay to /boot/config.txt so it loads the button/encoder overlay:
sudo nano /boot/config.txt

	# Buttons and encoders
	dtoverlay=norns-buttons-encoders
	dtoverlay=ssd1322-fates

Maiden Test

test: `./maiden.arm -debug -app app/build/ -data ~/norns/lua'

check functionality from browser http://norns.local/maiden/

Network / Wifi

DO THIS AFTER YOU'RE SCREEN IS UP AND RUNNING PROPERLY

reset /etc/network/interfaces to norns default

sudo cp ~/norns-linux-bits/interfaces /etc/network/interfaces

rename /etc/wpa_supplicant/wpa_supplicant.conf to something else and reboot.
this should get network manager to take over

mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant_bak.conf

Reboot

At this point you will want to login to your wifi from the device screen so network manager remembers your wifi info.