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

321 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:
```bash
# /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:
```bash
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.