go-udap
Discover and configure Squeezebox devices from the command line
A small command-line tool that discovers and configures Squeezebox devices over UDAP — the on-the-wire protocol Logitech's original setup app spoke. One static binary, no Lyrion Music Server required for setup, no Perl runtime, no GUI.
UDAP only talks to Squeezeboxes that are in setup mode (the light flashes red). Brand-new devices arrive in setup mode; existing devices can be put back in by holding the front button for 3–6 seconds.
Features
- Discover every Squeezebox on the LAN via UDP broadcast on port 17784
- Read & write all 26 NVRAM parameters — network, wireless, server pointer, hostname, and more
- Query live network config (
getip) — actual IP / subnet / gateway, distinct from passive discovery - Multi-NIC aware — pick one interface (
--bind-interface) or fan out across all of them (--all-interfaces) - Shell completions for bash, zsh, and fish, including MAC-address completion via short-timeout discovery
- Single static binary, ~2.8 MB, no runtime dependencies — macOS / Linux / Windows on amd64 and arm64
- Round-trippable config —
read | setcycles cleanly through file or stdin
Start here
Tutorial — 5-minute setup
Walk a brand-new (or factory-reset) Squeezebox from setup mode to a working device pointed at your music server.
How-to guides
Task-oriented recipes: DHCP, static IP, Wi-Fi WPA2, multi-NIC discovery, recovery from init mode.
Reference
Every subcommand, every flag, every NVRAM parameter, every exit code. Authoritative lookup.
Concepts
How UDAP discovery works on the wire, what the 26 NVRAM parameters mean, why discovery uses limited broadcast.
Install
brew install yo61/tap/go-udapOr download a release binary from GitHub releases — macOS, Linux, and Windows builds for amd64 and arm64.
Protocol provenance
go-udap mirrors the Perl Net::UDAP reference implementation. Where the two diverge, Net::UDAP is the source of truth. See What is go-udap? for the full lineage and the rationale for the rewrite.