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
@Olivier822
This method isn’t working for me either. I think that without root access, you won’t be able to reactivate radio streams on your device. However, here is how you can get it:
Buy an OTG adapter "micro usb to female usb a" (like this one if your device is an ST10: https://amzn.eu/d/0bfXhowD). Format a USB drive to FAT32 (most are already FAT32) and create a file named

remote_services. Check the file properties to ensure there is no file extension (e.g., it shouldn't be .txt).Put your favorite radio streams into a JSON file as mentioned above and save it alongside the remote_services file on the USB Drive. Use the adapter to plug the USB drive into your SoundTouch device and turn it on. SSH should now be activated; you can connect with PuTTY via ssh on port 22 using the username
root; no password required.Finally, you can execute gmuth's script:
curl -s soundploy.gmuth.de/v1/install | sh && rebootNever mind! Gmuth has also published a method that doesn't require root access, in case you aren't successful with this one.: https://github.com/gmuth/soundploy