BoseFix32

BoseFix32 — Web Flasher

Local SoundTouch cloud replacement on an ESP32 stick.
Bose shut their cloud down — this brings the preset buttons back.

Install BoseFix32 on your ESP32

Plug your ESP32 board into USB, click below, and pick the serial port that appears.
The browser detects the chip and flashes the matching factory image.

Version — same image you build locally with ./scripts/build_release.sh.

⚠ Auto-migration runs by default. Right after WiFi provisioning, BoseFix32 will automatically discover every SoundTouch speaker on your LAN (model whitelist SoundTouch 10/20/30, firmware 27.0.6.x / 27.0.3.x) and rewrite its cloud URLs to point at the stick — each speaker reboots once in the process (~60 s). Existing presets are preserved automatically. After the initial boot pass the auto-mode stays armed as a periodic cron (default every 30 minutes) and picks up newcomers automatically.

If you want to drive migrations by hand, open http://bosefix.local/ right after provisioning and flip the Auto-Migrate at Boot switch at the top before the device finishes discovering your speakers.
Recommended hardware: ESP32-S3-DevKitC-1-N16R8 — 16 MB flash, 8 MB PSRAM, mature WiFi 5 stack. In extended end-to-end testing this was the most robust target. ESP32 / C3 / C6 work too (factory image auto-selected), but the C6's WiFi 6 stack occasionally needed a second boot to discover all speakers, and the 4-MB targets are tight on flash for future features.
Browser requirement: Web Serial is only implemented in Chromium-based desktop browsers — Chrome, Edge, Opera, Brave on macOS / Windows / Linux. Safari, Firefox and all mobile browsers are not supported.

Supported targets

How it works

  1. Click CONNECT above and pick the serial port of your ESP32.
  2. esp-web-tools reads the chip family from the bootloader and selects the matching factory image from manifest.json.
  3. The factory image — bootloader + partition table + firmware + Web UI — is written to 0x0 in one shot. Old contents are erased.
  4. After reboot, BoseFix32 starts in Improv-Wi-Fi mode and waits for credentials. esp-web-tools offers the Improv flow right after flashing, so you can hand over Wi-Fi SSID and password from the same page.
  5. The device then advertises itself as bosefix.local on mDNS; open http://bosefix.local/ to manage your Bose speakers.
OTA updates later: once BoseFix32 runs on the device, future updates can be uploaded via the Web UI's System panel without USB — that's what the *-firmware.bin and *-littlefs.bin files next to the factory images are for.

Manual install (if Web Serial doesn't work)

Each target ships three artefacts you can download and flash manually with esptool.py:

Example:

esptool.py --chip esp32s3 -p /dev/ttyACM0 write_flash 0x0 bosefix32-s3-factory.bin