A selfcontained solution for Bose SoundTouch speakers to preset and play custom radio streams without using a BMX service. If root access is too complicated for you look at SoundPloy V2. The idea was first documented here: deborahgu/soundcork#62
- The speaker is connected to your network
- You know it's IP or hostname
- You have root access to the speaker via remote_services file or via 3.5 mm audio jack
- Free disk space is available on the root filesystem
- You have a list of stream URLs you want to use as presets
Make sure you meet the required prior conditions from above.
Create a Bose stream json file for each preset and place it in the root of the USB drive's filesystem.
For example, for AC/DC on preset 1 you would create file 1.json with the following content
{
"audio": {
"hasPlaylist": false,
"isRealtime": true,
"streamUrl": "http://streams.radiobob.de/bob-acdc/mp3-192/mediaplayer"
},
"name": "AC/DC",
"streamType": "liveRadio"
}For stream urls I recommend to use http only and avoid https.
If anyone provides a guide how to update the trusted certificates on device let me know.
This step will install file services.json and configure the bmxRegistryUrl accordingly.
Additionally, it creates or overrides Sources.xml.
Plug in the USB drive to the device, login to the speaker with user root and run:
curl -s soundploy.gmuth.de/v1/install | sh && reboot
Set preset 1
Set preset 2
Set preset 3
Set preset 4
Set preset 5
Set preset 6
The system is going down for reboot NOW!
After reboot, the presets should be available and you can start listening to your custom streams.
To update presets, simply change the content of the json files on the USB drive.
Then, plug in the USB drive again, login to the speaker with user root and run: copy_presets.
No reboot is required, the new presets are available immediately. Expert users can run rw and vi /opt/Bose/html/1.json to update their presets on device.
You are not limited by the stream json files from localhost - remote services can also be used. Check out the example POST requests in the Postman Workspace Bose SoundTouch.
We've successfully tested this on SoundTouch 20 Series 1 and SoundTouch 10. A technical requirement is that /opt/Bose/html is internally served via port 8080. In case your device uses another port you need to fix the preset location url or use the orion station api (examples in Postman collection). To validate the location url is reachable run curl on the device.
curl -i http://localhost:8080/1.json
Cool, you're an expert!
Old preset names appear because they are cached and haven't been changed. I've updated the install script to set new item names.
I don't know. Maybe it does not serve /opt/Bose/html internally on port 8080. Try 80, 82, 8080 or 17008.