wm: doc

ref: 16c4183118767e7ec041ab5b71eddcdc8fd26b22
dir: /pi.ms/

View raw version
.HTML "plan 9 on pi"
.TL
plan 9 on pi

.AU
mkf

.AB
Tips for running plan 9 on raspberry pi

.AE

.LP
Raspberry pi is a single board computer made raspberry pi people
somewhere in uk, in 2012(?) richard miller ported plan 9 port.
this is known as miller's pi. at some point 9front have imported miller's code.
9front have since got a 64-bit version of bcm kernel.
this guide covers 9front, more info on miller's is appercited.
.NH
installtion
.LP
As time of writing by default 9front ships with hjfs on installation image and that image is sized 2Gb.
You can dd (or cp, or whatever your prefered method may be) that into your sdcard.
That's all.
.NH .1
Resizing the paritions
.LP
Hjfs however does not support growing a parition (gefs seems to be the only file system capable of doing so),
Thus to do so. you may need to do a classic installation, there are many ways for it;
but the easiest way is to install using a usb thumb drive.
.IP \(bu
copy 9front image into your sdcard, we need to do this since we need to have the kernel and boot blobs
.IP \(bu
then copy same thing into your sdcard, for file system contents
.IP \(bu
boot the pi, select the usb in bootargs
.IP \(bu
run inst/start, make the partitions as you would on the sdcard, and install.
.NH
ISSUES
.NH .1
audio
.LP
Pi is odd, audio hardware in pi is perhaps the most odd part of it.
Use usb audio cards if you can, but if you can't:
.IP 1.
3.5mm audio uses a PWM connected to arm core, and offers poor quality:
but is much simpler. load on cpu sometimes casues noticable effects on PWM,
and thus audiable and annoying noise.
.IP 2.
HDMI audio is much more sophisticated (or horribly complex, depending on your point of view),
and uses a RPC protocol to communicate with broadcom core. offers better audio.
.LP
There are two drivers for PWM, one is located under
CW /n/extra/src/audiobcm.tgz
and said to be working for first pi (bcm2385).
I haven't tested it, but PWM audio interface have been realtively same since
bcm2385 (with some minor improvments) from arm core's view point.
.NH
Wireless
.LP
9front has recently added support for raspberry pi's wifi.
this supports 3+ and zero 2. zero too should work but requires changes to kernel.
On pi 3 and zero, wireless card is
.CW ether0 .
source code for wireless driver is available in
.CW /sys/src/9/bcm/ether4330.c
.NH
UART
.NH
Compiling a kernel
.LP
Kernels for pi port are located under
.CW /sys/src/9/bcm
for 32-bit port (all raspberry pis)
and
.CW /sys/src/9/bcm64
for 64-bit kernel (late revisions of pi 2, pi zero 2 and pi 3 and newer)
.P1
# 32 bit kernels (work on 64 bit pis as well)
cd /sys/src/9/bcm
mk 'CONF=pi'
mk 'CONF=pi2'

# 64 bit kernels:
cd /sys/src/9/bcm64
mk 'CONF=pi3' # for pi 3
mk 'CONF=pi4' # for pi 4
.P2