Documentation for controlling and preserving Bose SoundTouch devices
This document provides a comparative analysis of the current Go implementation and the deborahgu/soundcork project, identifying functional gaps and potential improvements.
chi for routing and encoding/xml for data. High performance, strong typing, and precise MIME type handling (application/vnd.bose.streaming-v1.2+xml).FastAPI and xml.etree.ElementTree. Prioritizes flexibility and rapid prototyping of streaming service mocks.| Feature | Bose-SoundTouch (Go) | SoundCork (Python) |
|---|---|---|
| Group Management | Placeholder handlers (return <group/> or 404). |
Active group management (groups.py), supporting /addGroup and stereo pairing logic. |
| BMX Services | Supports TuneIn, Orion, and custom streams. | More modular bmx_services.json registry with broader mock support. |
| Persistence | Mixed JSON/XML datastore. | Pure XML-based persistence per device/account. |
| Admin UI | CLI-based (soundtouch-cli) or API-driven. |
Draft Web UI for device discovery and account management (admin.py). |
| Discovery | Integrated setup tools and SSDP/MDNS awareness. | Leverages bosesoundtouchapi Python library for active discovery. |
customerSupport).pkg/service/marge to handle /addGroup and /updateGroup.HandleBMXRegistry into an external bmx-services.json file.sourceAccount and sourceName metadata is correctly captured during synchronization, using patterns from soundcork’s learnSource.While our Go implementation is structurally more consistent with recent reference recordings (e.g., buttonNumber, detailed components), SoundCork provides better coverage of multi-device coordination (Groups) and service emulation (BMX) that we should adopt for a more complete offline experience.