The common attenuation made playback too quiet. Inputs are now summed
without attenuation; docs note that loud simultaneous inputs can clip.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
inputs() still used GetManagedObjects on BlueZ to look up names and
silently dropped every Bluetooth input when an Apple device's
advertisement data broke the JSON conversion. Read only Alias per
device and fall back to the address.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
busctl cannot convert some BlueZ advertisement data (Apple
ManufacturerData, a{qv}) to JSON, so GetManagedObjects failed as soon as
an iPad was paired and the web showed no devices at all. Read only the
needed Device1/Adapter1 properties per object instead. Also publish the
web mixer as an _http._tcp Avahi service.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
install.sh now sets the hostname (default radxa-mixer, --hostname or
--keep-hostname to override) after a successful install so Avahi
advertises NAME.local, and the web mixer listens on port 80. The web
server's host check already accepts HOSTNAME.local.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The board stays hidden by default, so new phones could only pair via an
SSH session. Add 'radxa-audio discoverable on|off' backed by a transient
radxa-bt-pairing unit that auto-approves and trusts devices pairing in
the window, expires on its own, and expose it in the web mixer with a
countdown.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SBC medium, not the larger buffer, removed the headphone relay dropouts,
so cut dmix, bluealsa-aplay and alsaloop buffers to 200 ms and the
Shairport backend buffer to 0.15 s. Verified by listening (iPhone ->
headphones, with AirPlay mixed in) with no RTP loss or underruns.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One-shot bluetoothctl pairing exited before SSP finished, leaving the
headphone paired but not bonded, so it was lost on reboot. Pair inside a
single bluetoothctl session with a persistent agent, and clear temporary
pairings first. Document that SBC medium + 500 ms buffer removed the
iPhone -> Radxa -> headphone dropouts, verified by listening and logs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>