# Docs - Tutorials - [Tutorials](/tutorials): Learn go-udap by doing - [Configure your first Squeezebox in 5 minutes](/tutorials/configure-your-first-squeezebox): A complete walkthrough from factory state to a working device - How-to guides - [How-to guides](/how-to): Task-oriented recipes - [Capture wire traces](/how-to/capture-wire-traces): Record real-SBR UDAP traffic for fixture generation - [Configure a Squeezebox for DHCP](/how-to/configure-for-dhcp): Wired Ethernet, DHCP-assigned IP - [Configure a Squeezebox for static IP](/how-to/configure-for-static-ip): Wired Ethernet with a fixed IP address - [Configure a Squeezebox for Wi-Fi with WPA2](/how-to/configure-wifi-wpa2): Wireless networking with WPA2-PSK authentication - [Discover on a multi-NIC laptop](/how-to/discover-on-multi-nic-laptop): Use --bind-interface or --all-interfaces when your dev machine has multiple network interfaces - [Handle permission errors](/how-to/handle-permission-errors): When binding UDP port 17784 needs elevated privileges - [Install go-udap](/how-to/install-go-udap): Get the go-udap binary onto your machine - [Install shell completions](/how-to/install-shell-completions): Tab-completion for bash, zsh, and fish - [Troubleshoot "no devices found"](/how-to/no-devices-found): Diagnostic steps when go-udap discover returns nothing - [Onboard a Squeezebox over Wi-Fi (ad-hoc)](/how-to/onboard-over-wifi-ad-hoc): Configure a factory-state device without plugging in Ethernet - [Recover a Squeezebox stuck in init mode](/how-to/recover-stuck-in-init-mode): When a device won't leave init/setup state - Reference - [Reference](/reference): Technical descriptions of go-udap's surface - Commands - [Commands](/reference/commands): Every go-udap subcommand - [discover](/reference/commands/discover): Discover Squeezebox devices on the network - [info](/reference/commands/info): Show metadata for one device - [read](/reference/commands/read): Read NVRAM parameters from a device - [get](/reference/commands/get): Read specific parameters from a device - [set](/reference/commands/set): Write NVRAM parameters to a device - [reboot](/reference/commands/reboot): Reboot the device - [getip](/reference/commands/getip): Query the device's IP / subnet / gateway - [interfaces](/reference/commands/interfaces): List network interfaces usable for discovery - [Global flags](/reference/global-flags): Flags that apply to every go-udap subcommand - [Config file format](/reference/config-file-format): INI syntax for go-udap set --config FILE - [NVRAM parameters](/reference/nvram-parameters): The 26 known UDAP NVRAM parameters, by category - [Exit codes](/reference/exit-codes): What go-udap's exit codes mean - [Library API](/reference/api): Using go-udap as a Go library - Concepts - [Concepts](/concepts): How go-udap works, and why - [How UDAP discovery works](/concepts/how-udap-discovery-works): The wire-level mechanics of finding devices - [Multi-NIC discovery](/concepts/multi-nic-discovery): How --bind-interface and --all-interfaces work under the hood - [Setup mode vs. run mode](/concepts/setup-vs-run-mode): Why most UDAP operations only work when the device is in setup mode - [Squeezeplay UDAP cross-check](/concepts/squeezeplay-comparison): How go-udap's UDAP implementation compares to ralph-irving/squeezeplay - [Why 26 NVRAM parameters?](/concepts/the-26-nvram-parameters): How go-udap's parameter table relates to the UDAP protocol - [What is go-udap?](/concepts/what-is-go-udap): The tool, the protocol, and what they do - Contributing - [Contributing](/contributing): Building, testing, and developing go-udap - [Documentation style](/contributing/docs-style): Heading conventions and page archetypes for this site - [Building from source](/contributing/building-from-source): Build, test, and lint go-udap locally - [Cross-compilation](/contributing/cross-compilation): Building go-udap for other platforms - [Release process](/contributing/release-process): How releases are cut and published