Bose SoundTouch Toolkit

Documentation for controlling and preserving Bose SoundTouch devices

View the Project on GitHub gesellix/Bose-SoundTouch

SoundTouch Device Initial Setup Variants

Based on community research from the SoundCork and ÜberBöse API projects, as well as analysis of the Stockholm firmware (firmware/Stockholm/.../setup/), this document outlines the methods used for the “out-of-the-box” setup of SoundTouch devices.

Setup Overview

Initial setup is the process of connecting a new or factory-reset device to a local Wi-Fi network and a Bose (or custom) account. This is distinct from the “Migration” process (handled by soundtouch-service), which redirects an already-configured device to a new server.


1. Bluetooth Low Energy (BLE) Setup

Used by most modern SoundTouch devices (ST-10, ST-20/30 Series III, SoundTouch 300).


2. Access Point (AP) Mode / Web Setup

The classic “failover” or “alternate” setup method.

Speaker AP mode Wi-Fi setup page at 192.0.2.1

For command-line provisioning (without a browser), see §6 below.


3. Wireless Accessory Configuration (WAC)

Specific to Apple iOS devices.


4. USB Setup (Legacy)

Primarily used for older SoundTouch Series I and II devices or as a last resort.


Technical Details: The “Gabbo” Protocol

The Stockholm firmware contains references to a communication layer called Gabbo.

Redirection during Setup

While the soundtouch-service focuses on migrating existing devices, a truly “clean” setup to a custom service would require:

  1. Intercepting the initial account pairing request.
  2. Providing a mock “Marge” service that accepts any credentials.
  3. Patching the SoundTouchSdkPrivateCfg.xml during or immediately after the Wi-Fi connection phase.


5. Factory Reset Button Sequences

A factory reset wipes Wi-Fi credentials, account pairing, and all presets, returning the device to out-of-box state. The exact sequence varies by hardware generation.

Sequences verified against official Bose reset guides in firmware/FirmwareUpdateGuide/. Confirm the reset succeeded by watching the status LEDs and by verifying the Wi-Fi indicator glows solid amber (setup mode).

Model Factory Restore Sequence Confirm
SoundTouch 10 Power on; hold Preset 1 + Volume − for 10 s Wi-Fi indicator glows solid amber
SoundTouch 20 Power on; hold Preset 1 + Volume − for 10 s Lights blink L→R, then solid amber
SoundTouch 20 Series III Hold Preset 1 + Preset 6 simultaneously for ~10 s White LED sweep
SoundTouch 30 Series III Hold Preset 1 + Preset 6 simultaneously for ~10 s White LED sweep
SoundTouch 300 Hold Volume − until light bar blinks rapidly (~15 s) Rapid blink → off → on
SoundTouch 10 (alt) Press and hold the back recessed Reset pinhole for 10 s Status LED restarts
SoundTouch 20 (soft) Hold AUX for 15 s until display goes blank (settings preserved) Display blanks

After factory restore the speaker enters setup mode automatically; no power-cycle is needed.


6. AP Mode Wi-Fi Provisioning via Console

When BLE is unavailable (e.g. when using an Android emulator), use AP mode to push Wi-Fi credentials from the Mac command line.

6.1 Connect Mac to Speaker AP

After factory reset the speaker broadcasts an SSID like Bose SoundTouch XXXX. Connect the Mac to it:

# List nearby SSIDs — use System Settings → Wi-Fi (the airport command was removed in macOS Sequoia+)
# Connect (replace with actual SSID)
networksetup -setairportnetwork en0 "Bose SoundTouch XXXX"

The speaker’s web UI gateway is at 192.0.2.1 (verified: ST10 assigns 192.0.2.2 to the client via DHCP).

# Confirm reachability
curl -sv http://192.0.2.1/ 2>&1 | head -40

6.2 Trigger Wi-Fi Site Survey (Optional)

The setup web UI at http://192.0.2.1/ uses the SoundTouch API on port 8090 — the same API as normal device operation. Trigger a network scan first so the speaker finds your SSID:

curl -s -X POST http://192.0.2.1:8090/performWirelessSiteSurvey \
  -H 'Content-Type: text/xml' \
  --data-raw '<PerformWirelessSiteSurvey timeout="5"/>'

6.3 Push Home Wi-Fi Credentials

HOME_SSID="MyHomeNetwork"
HOME_PASS="MyPassword"

curl -s -X POST http://192.0.2.1:8090/addWirelessProfile \
  -H 'Content-Type: text/xml' \
  --data-raw "<AddWirelessProfile><profile ssid=\"${HOME_SSID}\" password=\"${HOME_PASS}\" securityType=\"wpa_or_wpa2\" /></AddWirelessProfile>"

Expected response: <?xml version="1.0" encoding="UTF-8" ?><AddWirelessProfileResponse />

The speaker will disconnect from AP mode and join the home network within ~15–30 s.

6.4 Reconnect Mac to Home Network

networksetup -setairportnetwork en0 "MyHomeNetwork" "MyPassword"

Wait ~15 s for the speaker to join the home network, then verify:

# Discover the speaker's new IP via mDNS
dns-sd -B _soundtouch._tcp local &
sleep 5 ; kill %1

Comparison: Initial Setup vs. Migration

Feature Initial Setup Migration (soundtouch-service)
Connectivity BLE, AP Mode, USB, WAC Ethernet/Wi-Fi (existing)
Credentials Required (SSID/Pass) Not required (uses existing)
Access Web UI / App protocol SSH (root)
Primary File setup/index.html SoundTouchSdkPrivateCfg.xml
Use Case Out-of-the-box / Reset Redirecting active devices