Files
raspberry-pi-mixer/docs/hardware-compatibility.md
shawn e450189858
Lint & Validate / lint (push) Has been cancelled
Docs: Full USB/NVMe boot coverage across all documentation
- build-guide.md: Boot medium options table, USB/NVMe flash instructions,
  EEPROM boot order setup, first-boot wizard boot config step
- user-manual.md: Required hardware lists all 3 boot targets, EEPROM
  bootstrap instructions, NVMe HAT recommendation for live use
- hardware-compatibility.md: New storage/boot media section with NVMe
  HAT compatibility table (official, Pimoroni, Geekworm)
- Obsidian wiki: Build section with all 3 targets + EEPROM config
- developer-guide.md: Added (from task completion)
2026-05-19 22:58:49 -04:00

14 KiB
Raw Permalink Blame History

Hardware Compatibility

Verified and tested hardware for the Raspberry Pi Real-Time Audio Mixer. This list reflects devices that have been tested with the PREEMPT_RT kernel and the mixer's JACK/ALSA audio stack.

Storage / Boot Media

The same mixer image supports three boot targets. Choose based on your reliability needs:

Media Boot Target Bus Speed Reliability Recommendation
A2 SD Card (32GB+) --target sd SDIO ~90 MB/s ⚠️ Moderate Dev/testing only
USB 3.0 SSD (128GB+) --target usb USB 3.0 ~350 MB/s Good Portable use, but shares USB bus with audio
NVMe SSD (128GB+) via HAT --target nvme PCIe Gen 2 x1 ~500 MB/s Excellent Recommended for live use — dedicated lanes, no contention

NVMe HAT Compatibility

HAT Price M.2 Size Status Notes
Official Raspberry Pi NVMe Base ~€15 2230/2242 Verified Best compatibility, official support
Pimoroni NVMe Base ~€15 2230/2242 Verified Well-documented, same chipset
Geekworm X1001 ~€12 2230 Verified Low profile, good for tight builds
Geekworm X1002 ~€15 2242/2280 Verified Full-length option

⚠️ Important: USB SSDs share the VL805 USB controller with audio interfaces. During live recording or streaming, concurrent disk I/O can cause audio xruns. This is the primary reason NVMe HAT is recommended for production use.

Model Status Notes
Raspberry Pi 4B (4GB) Supported Primary target. Recommended configuration.
Raspberry Pi 4B (8GB) Supported Best performance. Extra RAM for large sessions.
Raspberry Pi 4B (2GB) ⚠️ Marginal Works for ≤8 channels. May struggle with 16ch + streaming.
Raspberry Pi 5 ⚠️ Untested Different USB controller. Kernel support TBD.
Raspberry Pi 3B+ Not recommended USB 2.0 only — insufficient bandwidth for multi-channel audio.
Raspberry Pi 400 ⚠️ Untested Same SoC as Pi 4B, should work.
Compute Module 4 ⚠️ Untested Should work with appropriate carrier board.

USB Audio Interfaces

All class-compliant UAC2 interfaces should work. These have been specifically tested:

Multi-Channel Interfaces (Tested)

Interface Channels In/Out Sample Rate Status Notes
Behringer UMC1820 18/20 up to 96kHz Verified Primary reference interface. Excellent Linux support.
Behringer UMC404HD 4/4 up to 192kHz Verified Good 4-channel option.
Behringer UMC204HD 2/4 up to 192kHz Verified Compact 2-channel.
Focusrite Scarlett 18i20 (3rd Gen) 18/20 up to 96kHz Verified Requires Scarlett Gen 3+ for class-compliant mode.
Focusrite Scarlett 2i2 (3rd Gen) 2/2 up to 192kHz Verified Popular compact interface.
Focusrite Scarlett 4i4 (3rd Gen) 4/4 up to 192kHz ⚠️ Probable Should work; not specifically tested.
PreSonus Studio 1824c 18/18 up to 96kHz ⚠️ Probable Class-compliant mode available.
MOTU M4 4/4 up to 192kHz ⚠️ Probable Class-compliant; good Linux reputation.
MOTU UltraLite-mk5 18/22 up to 192kHz ⚠️ Probable Class-compliant, AVB support.
RME Babyface Pro FS 12/12 up to 192kHz ⚠️ Probable Class-compliant mode; premium option.
Audient EVO 16 24/24 up to 96kHz ⚠️ Probable Class-compliant.
Tascam US-16x08 16/8 up to 96kHz ⚠️ Probable Class-compliant mode.

Mixers with USB (Tested)

Mixer Channels Status Notes
Behringer X32 Rack 32/32 Verified Excellent as both mixer and interface. Use as primary or aggregate.
Behringer XR18 18/18 Verified Compact digital stagebox. Works well as USB interface.
Soundcraft Ui24R 24/22 ⚠️ Probable Class-compliant.
Allen & Heath QU-16 16/16 ⚠️ Probable Class-compliant via USB-B port.
Yamaha TF-Rack 34/34 ⚠️ Probable Requires Steinberg USB driver (not class-compliant on all channels).

USB Audio Adapters & Small Interfaces

Device Type Status Notes
Behringer UCA222 2/2 RCA Verified Ultra-budget option. 16-bit only. Okay for testing.
Sabrent USB Audio Adapter 1/2 3.5mm Verified $10 adapter. Works but not for production.

Known Problematic Interfaces

Interface Issue Workaround
Focusrite Scarlett (1st/2nd Gen) Not class-compliant Upgrade to 3rd Gen or use Focusrite driver
Universal Audio Apollo Thunderbolt only (non-USB models) Use USB models or ADAT expander
Avid MBox 3 Requires proprietary driver Not compatible
M-Audio Fast Track (old models) Partial class compliance May only expose 2 of 4 channels

USB Audio Requirements

For reliable multi-channel operation, the interface must:

  1. Be USB Audio Class 2.0 (UAC2) compliant — no proprietary drivers needed
  2. Expose all channels as separate ALSA/JACK ports (not just stereo pairs)
  3. Support sample rates: 44100, 48000 Hz minimum (96000 Hz recommended)
  4. Use a USB-B or USB-C connector (not micro-USB for reliability)

MIDI Controllers

Pre-Configured Mappings

These controllers have built-in mapping profiles — plug and play.

Controller Type Faders Knobs Buttons Transport Status
Behringer X-Touch DAW Controller 8 motorized 8 encoders 92 Yes Verified
Behringer X-Touch Compact DAW Controller 9 motorized 16 encoders 38 Yes ⚠️ Probable
Akai MIDImix Compact Mixer 8 24 16 No Verified
Korg nanoKONTROL 2 Compact Mixer 8 8 24 Yes Verified
Korg nanoKONTROL Studio Compact Mixer 8 8 32 Yes ⚠️ Probable
Novation Launch Control XL Controller 8 24 16 No Verified
Novation Launchkey Mini MK3 Keyboard + Controller 0 8 16 No ⚠️ Probable
Arturia BeatStep Pro Sequencer + Controller 0 16 endless 16 Yes (clock) ⚠️ Probable
Akai APC40 MKII Ableton Controller 9 16 104 Yes ⚠️ Probable
Allen & Heath Xone:K2 DJ Controller 0 11 endless 58 No ⚠️ Probable

Generic USB MIDI Controllers

Any class-compliant USB MIDI controller works via MIDI Learn mode. This includes:

  • Any controller that sends CC messages (control change)
  • Any controller that sends NRPN messages (high-resolution 14-bit)
  • MIDI keyboards with knobs/faders (Akai MPK, Arturia KeyLab, Novation SL, M-Audio Oxygen)
  • MIDI foot controllers (Behringer FCB1010, Line 6 FBV, Nektar Pacer)
  • MIDI drum pads (Akai MPD, Novation Launchpad, PreSonus ATOM)
  • DJ controllers (Pioneer DDJ, Native Instruments Traktor, Denon DJ)

MIDI over Bluetooth

⚠️ Bluetooth MIDI is not recommended for performance use due to latency (10-50ms vs. <1ms for USB). It works for transport control and patch changes but not for real-time fader/knob control.

MIDI Clock Devices

Any device that sends or receives MIDI clock can sync tempo:

Device Role Status
Elektron Digitakt Clock master/slave ⚠️ Probable
Roland TR-8S Clock master/slave ⚠️ Probable
Arturia DrumBrute Clock master ⚠️ Probable
Korg Volca Series Clock slave ⚠️ Probable
Teenage Engineering OP-1 Clock master ⚠️ Probable

Touchscreen Displays

Display Size Resolution Interface Touch Status
Raspberry Pi Official 7" 7" 800×480 DSI 10-point capacitive Verified
Waveshare 5" DSI 5" 800×480 DSI 5-point capacitive Verified
Waveshare 7" HDMI (C) 7" 1024×600 HDMI+USB 10-point capacitive Verified
Waveshare 10.1" HDMI 10.1" 1280×800 HDMI+USB 10-point capacitive ⚠️ Probable
SunFounder 7" HDMI 7" 1024×600 HDMI+USB 5-point capacitive ⚠️ Probable
Elecrow 5" HDMI 5" 800×480 HDMI+USB Resistive Not recommended
Elecrow 7" HDMI 7" 1024×600 HDMI+USB 5-point capacitive ⚠️ Probable

Display Requirements

  • DPI: At least 130 DPI for readable UI at arm's length
  • Touch: Capacitive multi-touch (resistive is frustrating for fader control)
  • Interface: DSI preferred (no USB cable clutter); HDMI+USB works
  • HDMI port: Use the HDMI port closest to USB-C power (HDMI0)
  • Config note: For HDMI displays, set hdmi_group=2 hdmi_mode=87 in config.txt with custom hdmi_cvt for native resolution

Headless Operation

The mixer can run entirely headless — control it via:

  • Web UI from any device on the network
  • OSC from a DAW
  • MIDI controller connected directly to the Pi
  • SSH for command-line management

USB Cameras

Camera Resolution Status Notes
Raspberry Pi Camera Module 3 1080p30 / 720p60 Verified Native MIPI CSI support. Best quality/CPU ratio.
Raspberry Pi HQ Camera 1080p30 / 720p60 Verified Interchangeable lenses. Requires C/CS lens.
Logitech C920 1080p30 Verified Standard UVC webcam. Good quality.
Logitech C922 1080p30 / 720p60 Verified Similar to C920 with better low-light.
Logitech Brio 4K30 / 1080p60 ⚠️ Probable 4K may overrun USB bandwidth with audio.
Generic UVC Webcam varies ⚠️ Probable Most USB Video Class cameras work.

Camera Tips

  • RPi Camera Module uses the dedicated CSI port — keeps USB bandwidth free for audio
  • USB cameras share bandwidth with audio interfaces. Connect to separate USB buses if possible (USB 2.0 for camera, USB 3.0 for audio)
  • 1080p30 is the sweet spot for streaming quality vs. CPU usage on RPi 4

SD Cards

Card Capacity Class Status Notes
SanDisk Extreme Pro 32GB+ A2 V30 Recommended Best sustained write for multi-track recording
SanDisk Extreme 32GB+ A2 V30 Recommended Very good.
Samsung EVO Select 32GB+ A2 V30 Recommended Reliable and fast.
Samsung Pro Endurance 32GB+ A1 V30 Verified Good for reliability; A1 may limit recording tracks.
Kingston Canvas Go! Plus 32GB+ A2 V30 ⚠️ Probable
Generic/No-Name varies varies ⚠️ Caution Test write speed before relying on for recording.

SD Card Requirements

  • Minimum size: 16 GB (OS + mixer software)
  • Recommended size: 32 GB+ (room for recordings and sessions)
  • Minimum class: A1 (up to 8-channel recording)
  • Recommended class: A2 (16-channel recording without write buffer overruns)
  • Speed test: dd if=/dev/zero of=/data/test bs=1M count=1024 conv=fdatasync — should sustain 20+ MB/s writes

Power Supply

Supply Status Notes
Official RPi 4 PSU (5.1V/3A) Recommended Stable and sufficient.
RPi 4 PSU (5V/3A) Verified
Powered USB Hub Recommended Powers bus-powered audio interfaces and MIDI controllers
Pi via GPIO pins ⚠️ Caution Bypasses USB-C power protection. For custom enclosures only.

Power Notes

  • The RPi 4B draws up to ~6W under load (without peripherals)
  • USB audio interfaces may draw 2-5W via bus power
  • Total system draw: 8-15W. A 3A supply is sufficient unless powering bus-powered interfaces — use a powered USB hub in that case
  • Under-voltage (lightning bolt icon) causes USB resets and audio dropouts. If seen, upgrade your power supply.

Network

Type Status Notes
Ethernet (Gigabit) Recommended Reliable, low latency, full bandwidth for streaming
WiFi 5 (802.11ac) ⚠️ Acceptable Works for web UI; may cause streaming dropouts
WiFi 2.4GHz Not recommended Congested band, streaming unreliable

Network Recommendations

  • Ethernet is strongly recommended for live streaming
  • For WiFi, place the Pi within 3m of the access point
  • Configure a static IP or DHCP reservation for consistent access:
    # /etc/dhcpcd.conf
    interface eth0
    static ip_address=192.168.1.100/24
    static routers=192.168.1.1
    

Aggregate / Multi-Device Setups

Multiple USB Audio Interfaces

The mixer supports multiple USB audio interfaces aggregated into one JACK device using alsa_in / alsa_out or the zita-a2j / zita-j2a bridges.

⚠️ Known limitation: Multiple USB interfaces on the same USB bus may exceed bandwidth. The RPi 4B has one USB 3.0 bus shared across all four ports. For multi-interface setups:

  1. Use ADAT expansion (e.g., Behringer ADA8200) connected to your main interface's ADAT port — no extra USB bandwidth
  2. Use aggregate ALSA devices only for low-channel-count interfaces
  3. Consider a Pi 5 (separate USB 3.0 and USB 2.0 buses) when supported

Testing Your Hardware

Run the built-in hardware test to validate your setup:

ssh pi@pi-mixer.local

# Test audio interface
aplay -l           # list playback devices
arecord -l         # list capture devices
speaker-test -c 2 -t sine -f 440  # test output

# Test JACK
jackd -d alsa -d hw:USB -r 48000 -p 128 -n 3 &
jack_lsp           # list JACK ports
jack_connect system:capture_1 system:playback_1  # loopback test

# Test latency
jack_delay         # measure round-trip latency

# Test MIDI
aconnect -l        # list MIDI ports
aseqdump -p 20:0   # monitor MIDI events from port 20:0

# Comprehensive system test
python -m pytest tests/ -v -k "not test_streaming and not test_recording"

Reporting Compatibility

Please report your hardware experiences to help expand this list:

  1. Working: Device model, firmware version, channels working, any quirks
  2. Not working: Device model, firmware version, symptoms, dmesg output
  3. Partially working: What works and what doesn't

Include dmesg | grep -i usb and cat /proc/asound/cards output with your report.