[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-70559":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},70559,"Bose-SoundTouch","gesellix\u002FBose-SoundTouch","gesellix","Controlling and preserving Bose SoundTouch devices",null,"https:\u002F\u002Fgithub.com\u002Fgesellix\u002FBose-SoundTouch","Go",180,19,8,16,0,5,18,76,15,3.9,false,"main",[25,26],"bose","soundtouch","2026-06-12 02:02:34","# Bose SoundTouch Toolkit\n\n[![Go Reference](https:\u002F\u002Fpkg.go.dev\u002Fbadge\u002Fgithub.com\u002Fgesellix\u002Fbose-soundtouch.svg)](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fgesellix\u002Fbose-soundtouch)\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fgesellix\u002Fbose-soundtouch)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fgesellix\u002Fbose-soundtouch)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n\n> Independent project. **Not affiliated with, endorsed by, sponsored\n> by, or otherwise connected to Bose Corporation.** See\n> [Disclaimer](#disclaimer) for the full statement.\n\n## Context: Cloud Shutdown\n\nBose is shutting down SoundTouch cloud services on **May 6, 2026**. After that, music service browsing, preset sync, and the official SoundTouch app stop working. This toolkit lets you keep your speakers fully functional.\n\nSee the [Survival Guide](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FSURVIVAL-GUIDE.html) for the full picture.\n\n---\n\n## Tools\n\n### soundtouch-service — AfterTouch\n\nA local server that replaces the Bose cloud (\"AfterTouch\"). Once your speaker is redirected to it, you have full control without any Bose cloud dependency. The built-in web UI at `http:\u002F\u002Flocalhost:8000` handles all setup — no config files needed to get started.\n\nIf you don't want to run a server for this - no problem. The service is small enough to run on the SoundTouch itself. See the [On-Device Installer](.\u002Fscripts\u002Fon-device-install\u002FREADME.md) for instructions.\n\n**Two scenarios:**\n\n**Before shutdown — migrate your existing setup**\nWhile the Bose cloud is still running, use `soundtouch-backup` to save your account data. The local service web UI then helps with the migration so your speaker keeps its presets and credentials.\n\n**After shutdown or factory reset — start fresh**\nCreate a local account, configure your speakers, and start using them immediately. No Bose infrastructure required.\n\n**Redirecting your speaker**\n\nThe service needs a stable address on your local network (e.g. `soundtouch.fritz.box` or `soundtouch.local`). The speaker must then be redirected to resolve the Bose cloud hostnames to that address. Two supported methods:\n\n| Method       | How it works                        | Notes                                                        |\n|--------------|-------------------------------------|--------------------------------------------------------------|\n| XML redirect | Upload a config XML via the Web API | Surgical; covers only registered endpoints; best for testing |\n| DNS\u002FDHCP     | Serve custom DNS on your network    | Covers all devices at once; requires port 53 and TLS         |\n\nThe web UI walks you through each method. DNS redirect requires HTTPS — the service manages its own CA certificate and the web UI guides you through trusting it on each speaker.\n\n> **Note:** A hosts-file method (direct SSH edits to `\u002Fetc\u002Fhosts`) also exists in the codebase but is deprecated and not exposed in the web UI.\n\n**Enabling SSH via USB stick**\n\nSome setup steps require SSH access to the speaker. Enable it once per device: create a file named `remote_services` on a FAT-formatted USB drive (the drive may need its bootable flag set — see [SoundCork issue #172](https:\u002F\u002Fgithub.com\u002Fdeborahgu\u002Fsoundcork\u002Fissues\u002F172)), and insert it while the speaker is powered on. After reboot, root SSH is available with no password.\n\nSee [Device Initial Setup](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FDEVICE-INITIAL-SETUP.html) and [Migration Guide](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FMIGRATION-GUIDE.html) for step-by-step instructions.\n\n---\n\n### soundtouch-backup\n\nBacks up your Bose cloud account (presets, paired devices, music sources) and each speaker's local state before the shutdown. Run `soundtouch-backup all` to capture everything in one step; it authenticates with the Bose cloud, then polls each paired speaker over the local network.\n\nSee the [soundtouch-backup README](cmd\u002Fsoundtouch-backup\u002FREADME.md) for usage.\n\n---\n\n### soundtouch-cli\n\nCommand-line control of any SoundTouch device: play\u002Fpause\u002Fvolume, presets, source selection, multiroom zones, device discovery, and more. Works entirely over the local network — no cloud dependency. Well-suited for scripting and home automation.\n\nSee the [CLI Reference](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FCLI-REFERENCE.html) for full usage.\n\n---\n\n### soundtouch-web\n\nA standalone web UI for device control — play, pause, volume, preset selection, real-time status — served from a local Go binary. Complements `soundtouch-service` when you want a dedicated device-control interface separate from the setup\u002Fadmin UI.\n\nSee the [soundtouch-web README](cmd\u002Fsoundtouch-web\u002FREADME.md) for usage.\n\n---\n\n### Go library\n\n`pkg\u002Fclient` provides a Go API for all SoundTouch device endpoints: media control, volume, presets, sources, zones, real-time WebSocket events, and device discovery. Use it to build your own integrations.\n\n```\ngo get github.com\u002Fgesellix\u002Fbose-soundtouch\n```\n\nSee the [API Reference](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Freference\u002FAPI-ENDPOINTS.html) and [pkg.go.dev](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fgesellix\u002Fbose-soundtouch) for documentation.\n\n---\n\n## Documentation\n\n- [Getting Started](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FGETTING-STARTED.html)\n- [Survival Guide](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FSURVIVAL-GUIDE.html)\n- [Migration Guide](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FMIGRATION-GUIDE.html)\n- [Device Initial Setup](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FDEVICE-INITIAL-SETUP.html)\n- [Migration & Safety Guide](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FMIGRATION-SAFETY.html)\n- [CLI Reference](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FCLI-REFERENCE.html)\n- [SoundTouch Service Guide](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FSOUNDTOUCH-SERVICE.html)\n- [HTTPS & CA Setup](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Fguides\u002FHTTPS-SETUP.html)\n- [API Reference](https:\u002F\u002Fgesellix.github.io\u002FBose-SoundTouch\u002Freference\u002FAPI-ENDPOINTS.html)\n\n---\n\n## Related projects\n\n- **[SoundCork](https:\u002F\u002Fgithub.com\u002Fdeborahgu\u002Fsoundcork)** (Deborah Kaplan et al.) — Python service interception; pioneered the cloud emulation approach this project builds on\n- **[SoundCork Stockholm App](https:\u002F\u002Fgithub.com\u002Fkrahl\u002Fsoundcork-stockholm-app)** — Companion app for SoundCork\n- **[SoundTouch Plus](https:\u002F\u002Fgithub.com\u002Fthlucas1\u002Fhomeassistantcomponent_soundtouchplus)** (Todd Lucas) — Home Assistant integration; extensive undocumented API documentation\n- **[ÜberBöse API](https:\u002F\u002Fgithub.com\u002Fjulius-d\u002Fueberboese-api)** (Julius) — API research and advanced endpoint discovery\n- **[Bose SoundTouch Hook](https:\u002F\u002Fgithub.com\u002FCodeFinder2\u002Fbose-soundtouch-hook)** (Adrian Böckenkamp) — `LD_PRELOAD` hooking for reverse engineering device internals\n\n---\n\n## Support\n\n- Bug reports: [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fgesellix\u002Fbose-soundtouch\u002Fissues\u002Fnew)\n- Questions & discussions: [GitHub Discussions](https:\u002F\u002Fgithub.com\u002Fgesellix\u002Fbose-soundtouch\u002Fdiscussions)\n\n---\n\n**Star this project** ⭐ if you find it useful!\n\n---\n\n## Contributing\n\nIssues and pull requests welcome — code, documentation, bug reports, and feature ideas all land in the same place. By submitting a contribution you agree to license it under MIT. For significant changes please open an issue first to discuss the approach. See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.\n\n## Support the project\n\nIf this toolkit kept a speaker (or several) of yours alive past the Bose cloud shutdown and you want to give back, [GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fgesellix) is open. No expectation — everything in this repo stays MIT regardless.\n\n[![GitHub Sponsors](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fsponsors\u002Fgesellix?label=Sponsor%20on%20GitHub&logo=GitHub&color=ea4aaa)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fgesellix)\n\n## Disclaimer\n\nThis is an independent open-source project. **Bose** and **SoundTouch**\nare registered trademarks of Bose Corporation in the United States and\nother countries. This project is **not affiliated with, endorsed by,\nsponsored by, or otherwise connected to** Bose Corporation.\n\nThe toolkit exists solely to restore functionality of Bose SoundTouch\nspeakers after the official cloud service shutdown on May 6, 2026.\nReverse engineering for the sole purpose of interoperability is\npermitted under [EU Directive 2009\u002F24\u002FEC, Article 6](https:\u002F\u002Feur-lex.europa.eu\u002Flegal-content\u002FEN\u002FTXT\u002F?uri=CELEX:32009L0024)\n(\"Decompilation\"), and comparable provisions in other jurisdictions.\n\nThe optional Stockholm frontend integration (`STOCKHOLM_DIR`) requires\nthe user to supply the Stockholm web-app sources themselves; no Bose\ncode is redistributed in this repository.\n\nThe software is provided AS IS, without warranty. Use at your own risk.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","该项目提供了一套工具来控制和保存Bose SoundTouch设备。核心功能包括通过本地服务器替代即将关闭的Bose云服务，使用户能够继续使用其SoundTouch音箱而无需依赖官方云服务。该工具包采用Go语言编写，具有一个内置的Web界面，便于用户配置和管理设备。它支持在Bose云服务关闭前迁移现有设置或之后重新开始配置新的本地账户，适用于希望在Bose云服务停止后仍能保持音箱全部功能的用户场景。此外，项目还提供了两种重定向方法（XML重定向和DNS\u002FDHCP重定向）以确保音箱能够正确连接到本地服务。",2,"2026-06-11 03:32:47","trending"]