From 29f3fc6f963c83b0d8fc18c8482c3aa47757b301 Mon Sep 17 00:00:00 2001 From: Tobias Gesellchen Date: Sun, 17 May 2026 19:30:18 +0200 Subject: [PATCH] docs: replace real Bose account IDs in examples with placeholders MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two real Bose customer account IDs were embedded in documentation examples: 3230304 (16 files repo-wide, 5 of them .md/.txt) and 9569497 (2 files, 1 .md). Account IDs look numeric and innocuous but they're tied to a specific Bose customer — same exposure class as MACs and home-LAN IPs. Mapping: 3230304 → 1000001 9569497 → 1000002 6 .md files touched in this commit. Remaining occurrences live in test files and one Python script (scripts/convert_mitm_script.py) — those are out-of-scope for the docs sweep and will be handled in a dedicated test-fixtures commit. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/REQUEST_RECORDING_CONCEPT.md | 2 +- docs/analysis/SETUP-WEBSOCKET-EXPERIMENT.md | 6 ++--- ...vice-lifecycle-and-power-on-enhancement.md | 2 +- docs/guides/MAC-ADDRESS-MAPPING.md | 22 +++++++++---------- docs/guides/TROUBLESHOOTING.md | 6 ++--- docs/reference/DEVICE-PAIRING-FLOW.md | 6 ++--- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/REQUEST_RECORDING_CONCEPT.md b/docs/REQUEST_RECORDING_CONCEPT.md index 6a5510c..3641708 100644 --- a/docs/REQUEST_RECORDING_CONCEPT.md +++ b/docs/REQUEST_RECORDING_CONCEPT.md @@ -22,7 +22,7 @@ Content-Type: text/json; charset=utf-8 Content-Length: 587 Authorization: Bearer jGwEmFWr... -{"envelope":{"monoTime":234906,"payloadProtocolVersion":"3.1","payloadType":"scmudc","protocolVersion":"1.0","time":"2026-02-25T23:03:14.976349+00:00","uniqueId":"AABBCCDDEEFF"},"payload":{"deviceInfo":{"boseID":"3230304","deviceID":"AABBCCDDEEFF","deviceType":"SoundTouch 10","serialNumber":"I6332527703739342000020","softwareVersion":"27.0.6.46330.5043500 epdbuild.trunk.hepdswbld04.2022-08-04T11:20:29","systemSerialNumber":"069231P63364828AE"},"events":[{"data":{"play-state":"PAUSE_STATE"},"monoTime":234904,"time":"2026-02-25T23:03:14.973466+00:00","type":"play-state-changed"}]}} +{"envelope":{"monoTime":234906,"payloadProtocolVersion":"3.1","payloadType":"scmudc","protocolVersion":"1.0","time":"2026-02-25T23:03:14.976349+00:00","uniqueId":"AABBCCDDEEFF"},"payload":{"deviceInfo":{"boseID":"1000001","deviceID":"AABBCCDDEEFF","deviceType":"SoundTouch 10","serialNumber":"I6332527703739342000020","softwareVersion":"27.0.6.46330.5043500 epdbuild.trunk.hepdswbld04.2022-08-04T11:20:29","systemSerialNumber":"069231P63364828AE"},"events":[{"data":{"play-state":"PAUSE_STATE"},"monoTime":234904,"time":"2026-02-25T23:03:14.973466+00:00","type":"play-state-changed"}]}} {% raw %} > {% diff --git a/docs/analysis/SETUP-WEBSOCKET-EXPERIMENT.md b/docs/analysis/SETUP-WEBSOCKET-EXPERIMENT.md index 58c2bea..2ddea3e 100644 --- a/docs/analysis/SETUP-WEBSOCKET-EXPERIMENT.md +++ b/docs/analysis/SETUP-WEBSOCKET-EXPERIMENT.md @@ -192,13 +192,13 @@ One row per device tested. Once two devices on different firmware confirm the sa ### Appendix — SystemConfigurationDB.xml comparison -Post-experiment we compared the device-written `/mnt/nv/BoseApp-Persistence/1/SystemConfigurationDB.xml` from the bare-paired speaker against two SSH backups taken from speakers originally paired by the official Bose app (account 3230304, devices `A_Sound_Machine` and `Sound_Machinechen`). The diff is much smaller than expected — only two fields differ, and neither is set by the pairing protocol itself: +Post-experiment we compared the device-written `/mnt/nv/BoseApp-Persistence/1/SystemConfigurationDB.xml` from the bare-paired speaker against two SSH backups taken from speakers originally paired by the official Bose app (account 1000001, devices `A_Sound_Machine` and `Sound_Machinechen`). The diff is much smaller than expected — only two fields differ, and neither is set by the pairing protocol itself: -| Field | Bare-paired (1111111) | Real-Bose-paired (3230304) | Set by | +| Field | Bare-paired (1111111) | Real-Bose-paired (1000001) | Set by | |--------------------------|--------------------------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------| | `DeviceName` | `Bose SoundTouch 536A98` (factory default) | `Living Room SoundTouch` | `name` WS message — only sent in `--mode=full` | | `AccountAssociatedEMail` | empty | **empty** | Never populated, even by real Bose | -| `AccountUUID` | `1111111` | `3230304` | `setMargeAccount` — both paths set it | +| `AccountUUID` | `1111111` | `1000001` | `setMargeAccount` — both paths set it | | `Locale` | empty | **empty** | Never populated, even by real Bose | | `acctMode` | `global` | `global` | Firmware-default; no protocol path observed to change it | | `isMultiDeviceAccount` | `false` | `true` | Derived from the cloud's `/streaming/account/{id}/full` response — count of `` > 1 flips it true | diff --git a/docs/device-lifecycle-and-power-on-enhancement.md b/docs/device-lifecycle-and-power-on-enhancement.md index bd463f4..fe32c36 100644 --- a/docs/device-lifecycle-and-power-on-enhancement.md +++ b/docs/device-lifecycle-and-power-on-enhancement.md @@ -39,7 +39,7 @@ The current system uses multiple data collection methods to build a complete dev My SoundTouch Device SoundTouch 10 - 3230304 + 1000001 SCM diff --git a/docs/guides/MAC-ADDRESS-MAPPING.md b/docs/guides/MAC-ADDRESS-MAPPING.md index b9fa215..96afeff 100644 --- a/docs/guides/MAC-ADDRESS-MAPPING.md +++ b/docs/guides/MAC-ADDRESS-MAPPING.md @@ -17,9 +17,9 @@ The service automatically maps between these identifiers so that API requests us ### Request Flow ``` -1. HTTP Request: GET /streaming/account/3230304/device/AABBCCDDEEFF/presets +1. HTTP Request: GET /streaming/account/1000001/device/AABBCCDDEEFF/presets 2. MAC Resolution: AABBCCDDEEFF → I6332527703739342000020 -3. File Access: accounts/3230304/devices/I6332527703739342000020/Presets.xml +3. File Access: accounts/1000001/devices/I6332527703739342000020/Presets.xml ``` ### UPnP Discovery Integration @@ -64,7 +64,7 @@ The service handles all common MAC address formats automatically: **Symptoms:** ``` -GET /streaming/account/3230304/device/AABBCCDDEEFF/presets +GET /streaming/account/1000001/device/AABBCCDDEEFF/presets → 500 Internal Server Error → Log: "open .../devices/AABBCCDDEEFF/Presets.xml: no such file or directory" ``` @@ -73,13 +73,13 @@ GET /streaming/account/3230304/device/AABBCCDDEEFF/presets 1. Check if mapping exists: ```bash # Look for device directory - ls data/accounts/3230304/devices/ + ls data/accounts/1000001/devices/ # Should show serial numbers like: I6332527703739342000020 ``` 2. Check DeviceInfo.xml: ```bash - cat data/accounts/3230304/devices/I6332527703739342000020/DeviceInfo.xml + cat data/accounts/1000001/devices/I6332527703739342000020/DeviceInfo.xml # Look for field ``` @@ -106,10 +106,10 @@ Ensure the MAC address is present: If the device was added manually, ensure proper structure: ```bash # Create device directory using serial number -mkdir -p data/accounts/3230304/devices/I6332527703739342000020 +mkdir -p data/accounts/1000001/devices/I6332527703739342000020 # Create DeviceInfo.xml with MAC address -cat > data/accounts/3230304/devices/I6332527703739342000020/DeviceInfo.xml << EOF +cat > data/accounts/1000001/devices/I6332527703739342000020/DeviceInfo.xml << EOF My SoundTouch Device @@ -144,9 +144,9 @@ This should be handled automatically, but you can verify: **Test different formats:** ```bash # All of these should work the same: -curl http://localhost:8000/streaming/account/3230304/device/AABBCCDDEEFF/presets -curl http://localhost:8000/streaming/account/3230304/device/a81b6a536a98/presets -curl http://localhost:8000/streaming/account/3230304/device/AA:BB:CC:DD:EE:FF/presets +curl http://localhost:8000/streaming/account/1000001/device/AABBCCDDEEFF/presets +curl http://localhost:8000/streaming/account/1000001/device/a81b6a536a98/presets +curl http://localhost:8000/streaming/account/1000001/device/AA:BB:CC:DD:EE:FF/presets ``` ## 📊 **Monitoring and Diagnostics** @@ -162,7 +162,7 @@ Ensure proper directory organization: ``` data/ └── accounts/ - └── 3230304/ + └── 1000001/ └── devices/ └── I6332527703739342000020/ # Serial number directory ├── DeviceInfo.xml # Contains MAC address diff --git a/docs/guides/TROUBLESHOOTING.md b/docs/guides/TROUBLESHOOTING.md index dedf6a3..96d3ef1 100644 --- a/docs/guides/TROUBLESHOOTING.md +++ b/docs/guides/TROUBLESHOOTING.md @@ -1008,7 +1008,7 @@ Use this checklist to systematically troubleshoot issues: **Symptoms:** ``` -GET /streaming/account/3230304/device/AABBCCDDEEFF/presets +GET /streaming/account/1000001/device/AABBCCDDEEFF/presets → 500 Internal Server Error → Log: "open .../devices/AABBCCDDEEFF/Presets.xml: no such file or directory" ``` @@ -1025,13 +1025,13 @@ sudo systemctl restart soundtouch-service 2. **Check device directory structure**: ```bash # Files should be stored by serial number, not MAC -ls data/accounts/3230304/devices/ +ls data/accounts/1000001/devices/ # Should show: I6332527703739342000020/ (not AABBCCDDEEFF/) ``` 3. **Verify DeviceInfo.xml contains MAC address**: ```bash -cat data/accounts/3230304/devices/*/DeviceInfo.xml | grep macAddress +cat data/accounts/1000001/devices/*/DeviceInfo.xml | grep macAddress ``` **For detailed diagnosis and solutions**, see: [**MAC Address Mapping Guide**](MAC-ADDRESS-MAPPING.md) diff --git a/docs/reference/DEVICE-PAIRING-FLOW.md b/docs/reference/DEVICE-PAIRING-FLOW.md index d0940dc..79bac2d 100644 --- a/docs/reference/DEVICE-PAIRING-FLOW.md +++ b/docs/reference/DEVICE-PAIRING-FLOW.md @@ -86,7 +86,7 @@ All subsequent messages (except `selectLastWiFiSource`, see below) use this enve SoundTouch 10 SoundTouch 10 - 9569497 + 1000002 https://streaming.bose.com ... @@ -165,7 +165,7 @@ The pairing flow uses a setup state machine on the device. States must be sent i The server also pushes several `sourcesUpdated` events after successful pairing. -**`{accountId}`** — the numeric Bose account ID (e.g. `9569497`), obtainable from +**`{accountId}`** — the numeric Bose account ID (e.g. `1000002`), obtainable from `GET /streaming/account/login` on soundtouch-service. **`{token}`** — a Bearer token issued by Bose authentication (or soundtouch-service). @@ -515,7 +515,7 @@ running and authenticated): ## Source References -- `bose-pairing-20260502-155542` — Session 1: initial pairing of SoundTouch 10 to account 9569497 +- `bose-pairing-20260502-155542` — Session 1: initial pairing of SoundTouch 10 to account 1000002 - `bose-pairing-20260502-165549` — Session 2: re-pairing and full operation (TuneIn, Spotify, presets) - Raw WebSocket files: `scripts/android/mitm/{session}/mirror/{n}-websocket/*.txt` - Companion HTTP upgrade files: `scripts/android/mitm/{session}/mirror/{n}-*.http`