Clone
3
Build-Instructions
Shawn edited this page 2026-05-19 23:23:26 -04:00

Build Instructions

Quick Start

git clone https://gitea.ourpad.casa/shawn/raspberry-pi-mixer.git
cd raspberry-pi-mixer

Dependencies

sudo apt install wget xz-utils dosfstools e2fsprogs qemu-user-static parted git
# Optional (PREEMPT_RT kernel):
sudo apt install gcc-aarch64-linux-gnu build-essential flex bison libssl-dev bc rsync

Build Modes

Build Flag Target Use Case Time
(none) SD Card (default) Development / testing 30-45 min
--skip-kernel SD Card (stock kernel) Quick iteration 10-15 min
--target usb USB 3.0 SSD Portable, shares USB with audio 30-45 min
--target nvme NVMe HAT Production — PCIe, no bus contention 30-45 min
--kernel-only Kernel only Custom RT kernel builds 10-15 min

Flashing

Linux

# SD Card:
sudo dd if=build/out/rpi-audio-mixer-*.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync

# USB SSD:
sudo dd if=build/out/rpi-audio-mixer-*.img of=/dev/sda bs=4M status=progress conv=fsync

# NVMe HAT:
sudo dd if=build/out/rpi-audio-mixer-*.img of=/dev/nvme0n1 bs=4M status=progress conv=fsync

macOS

xz -d build/out/rpi-audio-mixer-*.img.xz
diskutil list
diskutil unmountDisk /dev/diskX
sudo dd if=build/out/rpi-audio-mixer-*.img of=/dev/rdiskX bs=4m status=progress
diskutil eject /dev/diskX

Windows

Use Raspberry Pi Imager or balenaEtcher.

Configuring EEPROM Boot Order

The RPi4B boots from SD card by default. To boot from USB or NVMe, configure the EEPROM once:

# Check current
sudo rpi-eeprom-config

# Edit
sudo rpi-eeprom-config --edit
Boot Order Sequence
BOOT_ORDER=0xf41 USB → SD → Restart
BOOT_ORDER=0xf614 NVMe → USB → SD → Restart

First-Boot Bootstrap

Without a working SD card, flash RPiOS Lite to a temporary SD, boot, configure EEPROM, then switch to your USB/NVMe drive.

Boot Device Codes

  • 0x0 = SD Card (SDIO)
  • 0x1 = USB Mass Storage
  • 0x2 = NVMe (PCIe)
  • 0x6 = Network (PXE)
  • 0xf = Stop/Restart

First Boot

The setup wizard runs automatically and configures:

  1. Audio interface detection
  2. WiFi network
  3. Hostname
  4. API key
  5. JACK buffer/latency
  6. EEPROM boot order (USB/NVMe option)