# 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 — ``, ``, ``, ``, `` — 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): 1. Copy `config/` into `~/.config/` for the `user` account (PipeWire runs per-user). 2. In `30-mixer-return.conf` / `40-desktop-34.conf` replace `` / `` with this unit's real node names (the commands are in each file's header comment), and put your subnet in `20-network.conf` (``). 3. Install `systemd/bt-agent.service` to `/etc/systemd/system/` and `enable --now` it. 4. Apply the `firmware/config.txt.snippet` edits and reboot. 5. `MAINTENANCE.md` §7 has the health checks to confirm it all came up. > The deployed Pi also carries two on-box READMEs (a `/root` redirect to "log in as > `user`", and a copy of `MAINTENANCE.md` at `/home/user/README.md`). The redirect's > text is `root-README.md` in this repo.