pi_audio/README.md
Me Here f0a07c269d Restructure into a reusable, genericized deploy kit
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>
2026-06-15 08:06:03 -05:00

2.8 KiB
Raw Permalink Blame History

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):

  1. Copy config/ into ~/.config/ for the user account (PipeWire runs per-user).
  2. In 30-mixer-return.conf / 40-desktop-34.conf replace <VOLT_SOURCE> / <VOLT_SINK> with this unit's real node names (the commands are in each file's header comment), and put your subnet in 20-network.conf (<LAN_CIDR>).
  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.