Reorganize the repo so it can rebuild the audio hub on any Pi, not just the live `adac` box: - README.md: now a project landing page (overview, repo map, deploy summary) instead of the adac-specific maintenance guide. - MAINTENANCE.md: the "how it's wired / day-to-day upkeep" guide, genericized with <pi-host>/<pi-ip>/<lan-cidr>/<desktop-host> placeholders. - config/: the actual PipeWire/WirePlumber drop-ins as deploy-ready templates (<VOLT_SOURCE>/<VOLT_SINK>/<LAN_CIDR> placeholders, with the commands to resolve them in each file's header comment). - systemd/bt-agent.service, firmware/config.txt.snippet: the remaining deployable artifacts. - instances/adac.md: the live deployment's real values (host, IP, Volt serial, paired phones, history) — the one place machine-specific data lives. - RUNBOOK.md: replace the hardcoded LAN subnet with <lan-cidr>. - root-README.md: genericized; .gitignore keeps local harness settings out. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Raspberry Pi PipeWire Audio Hub
Turn a headless Raspberry Pi 4 + Universal Audio Volt 4 USB interface into a multi-source audio hub built around an analog mixer:
- a phone plays in over Bluetooth (A2DP),
- one or more desktops play in over the wired LAN (PipeWire/PulseAudio network),
- the mixer's main output is captured back and re-published on the network so OBS machines can record it.
Phone (Bluetooth) ───────────────────────▶ Volt OUT 1/2 ─┐
Desktop (default sink) ──────────────────▶ Volt OUT 1/2 ─┤
├─▶ MIXER ─▶ main out
Desktop ("Desktop (Volt 3/4)" sink) ─────▶ Volt OUT 3/4 ─┘ │
│
OBS machines ◀── network ◀── Volt IN 3/4 ◀────────────────────┘
The Pi does no software mixing — it just feeds the Volt's outputs and captures its inputs. All levels/EQ/mute live on the physical mixer.
What's in this repo
| Path | What it is |
|---|---|
RUNBOOK.md |
Build from a blank SD card, step by step (the install guide). |
MAINTENANCE.md |
How a built hub is wired together + day-to-day upkeep (operate it). |
config/ |
The actual PipeWire/WirePlumber drop-in files, as deploy-ready templates. |
systemd/ |
bt-agent.service — headless auto-accept Bluetooth pairing. |
firmware/ |
The /boot/firmware/config.txt lines to set (disable HDMI/onboard audio + Wi-Fi). |
instances/ |
Per-deployment real values (host, IP, Volt serial, phones). E.g. instances/adac.md. |
The docs use placeholders — <pi-host>, <pi-ip>, <lan-cidr>, <VOLT_SOURCE>,
<VOLT_SINK> — filled in per box from the matching instances/ file.
Deploying to a Pi
RUNBOOK.md is the authoritative walkthrough. In short, once the OS + packages are
in place (RUNBOOK §1–§2):
- Copy
config/into~/.config/for theuseraccount (PipeWire runs per-user). - In
30-mixer-return.conf/40-desktop-34.confreplace<VOLT_SOURCE>/<VOLT_SINK>with this unit's real node names (the commands are in each file's header comment), and put your subnet in20-network.conf(<LAN_CIDR>). - Install
systemd/bt-agent.serviceto/etc/systemd/system/andenable --nowit. - Apply the
firmware/config.txt.snippetedits and reboot. MAINTENANCE.md§7 has the health checks to confirm it all came up.
The deployed Pi also carries two on-box READMEs (a
/rootredirect to "log in asuser", and a copy ofMAINTENANCE.mdat/home/user/README.md). The redirect's text isroot-README.mdin this repo.