mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-18 16:46:17 +00:00
docs: replace real Bose account IDs in examples with placeholders
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) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
fa51a6f610
commit
29f3fc6f96
@@ -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 %}
|
||||
> {%
|
||||
|
||||
@@ -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 `<devices>` > 1 flips it true |
|
||||
|
||||
@@ -39,7 +39,7 @@ The current system uses multiple data collection methods to build a complete dev
|
||||
<info deviceID="ABCD1234EFGH">
|
||||
<name>My SoundTouch Device</name>
|
||||
<type>SoundTouch 10</type>
|
||||
<margeAccountUUID>3230304</margeAccountUUID>
|
||||
<margeAccountUUID>1000001</margeAccountUUID>
|
||||
<components>
|
||||
<component>
|
||||
<componentCategory>SCM</componentCategory>
|
||||
|
||||
@@ -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 <macAddress> 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
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<info deviceID="I6332527703739342000020">
|
||||
<name>My SoundTouch Device</name>
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -86,7 +86,7 @@ All subsequent messages (except `selectLastWiFiSource`, see below) use this enve
|
||||
<info deviceID="{device_id}">
|
||||
<name>SoundTouch 10</name>
|
||||
<type>SoundTouch 10</type>
|
||||
<margeAccountUUID>9569497</margeAccountUUID> <!-- empty = unpaired -->
|
||||
<margeAccountUUID>1000002</margeAccountUUID> <!-- empty = unpaired -->
|
||||
<margeURL>https://streaming.bose.com</margeURL>
|
||||
...
|
||||
</info>
|
||||
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user