Highlights
📱 A companion app + an on-device control bridge — a phone/desktop remote for the
Q (volume, LED theme + brightness, now-playing), replacing the dead 2012 Google
companion app.
nexusq-control — a new LAN control bridge (pure-Python, TCP 45015, mDNS
_nexusq._tcp, line-delimited JSON). It fans out to: the ALSA softvol
(volume/mute), nexusqd over its Unix socket (LED theme + brightness), and a
librespot --onevent hook (now-playing). Protocol: companion/PROTOCOL.md.
Software master volume — a nexusq_soft softvol control (NexusQ) layered on
the v1.6.2 audio tee, shared by librespot (--mixer alsa --alsa-mixer-control NexusQ)
and the companion, so Spotify-Connect volume and companion volume are one knob —
and the LED visualizer still tracks the (post-volume) output.
nexusqd brightness <0-255> — a software ring-brightness scalar (no firmware change).
Companion app (companion/app) — a cross-platform Flutter remote (sphere UI,
animated LED ring, mDNS auto-discovery; volume + LED theme/brightness + now-playing).
Built and installed separately on the phone — not part of the device image.
Verified live on a clean flash: the bridge auto-starts (active), answers every
protocol method, volume works, the LED visualizer still reacts to playback, and mDNS
advertises "Nexus Q". (Getting the bridge to auto-start was a saga — see
docs/2026-07-01-companion-bridge-boot-enablement.md: a systemd-preset to survive
preset-all, and dropping an After= that formed a boot ordering cycle.)
The kernel is unchanged from v1.6.1/v1.6.2 —
nexusq-boot-v1.6.3.imgis
byte-identical to v1.6.2's. Only the rootfs changed, so if v1.6.2's boot is
already on the device you only need to flashuserdata.
Known issues
- Transport (play/pause/next) is
unavailablein v1 — librespot is a
Spotify-Connect receiver with no local transport API; transport happens from the
Spotify app. The protocol reserves the slot for a future backend.
Install
zstd -d nexusq-rootfs-v1.6.3-sparse.img.zst
fastboot flash boot nexusq-boot-v1.6.3.img # optional if v1.6.2 boot is already flashed
fastboot -S 100M flash userdata nexusq-rootfs-v1.6.3-sparse.imgWiFi is per-device (a flash wipes it). Once on WiFi, the companion app auto-discovers
the device via mDNS; the Spotify "Nexus Q" target appears on the same network.
Assets
nexusq-boot-v1.6.3.img(5.0 MiB) — kernel + appended SMP DTB; identical to v1.6.2nexusq-rootfs-v1.6.3-sparse.img.zst(447 MiB; ~2.08 GiB raw) — zstd all-RAW sparsenexusq-v1.6.3.sha256— checksums