Skip to content

1. Norns 2.0 Full Build on RasPi

Steven Noreyko edited this page Apr 9, 2019 · 24 revisions

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
sudo apt install network-manager

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

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-init.service

	# comment out these lines for analog gain stage (put # in front, we dont want any i2cset)
	#ExecStart=-/usr/sbin/i2cset -y 1 0x28 0x00
	#ExecStart=-/usr/sbin/i2cset -y 1 0x28 0x40

	# may need to comment out Mixer line ??

	#ADD after description
	After=raspi-config.service

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 
	# add -f/dev/fb1
	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

[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
Requires=norns-init.service
```

now run setup.sh  
`./setup.sh`  


### install norns
```
cd ~
git clone https://github.com/monome/norns.git
cd norns
git checkout dev  // PRE 2.0

./waf configure
./waf
```

### run sclang   
`sclang`  

### install sc
```
cd sc
./install.sh
```

Framebuffer setup for oled

edit `matron.sh`to 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

### Copy dust from updater

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

```
wget https://github.com/monome/maiden/releases/download/v0.12/maiden-v0.12.tgz
tar -xvf maiden-v0.12.tgz
rm maiden-v0.12.tgz
```


# Overlays
compile dts files for overlays  
.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

remove `wlan0` reference from `/etc/network/interfaces `  
rename /etc/wpa_supplicant/wpa_supplicant.conf to something else and reboot.   
this should get network manager to take over