Skip to content

Instantly share code, notes, and snippets.

@rody64
Last active May 29, 2026 09:38
Show Gist options
  • Select an option

  • Save rody64/98a59990ff60ea962cac72cbe93edf56 to your computer and use it in GitHub Desktop.

Select an option

Save rody64/98a59990ff60ea962cac72cbe93edf56 to your computer and use it in GitHub Desktop.
A comprehensive guide to a possible solution for streaming internet radio to Bose SoundTouch speakers via local UPnP (Gerbera) and configure presets using Home Assistant, Python API, or WebServices after Bose's cloud service EOL in Feb 2026.

🎵 Play Internet Radio on Bose SoundTouch After Cloud Shutdown (Feb 2026)

This setup should allow your Bose SoundTouch speakers to continue playing Internet radio locally after Bose discontinues its cloud services (February 2026).
This method is experimental until confirmed after the official EOL.

It replaces the soon-to-be-retired TuneIn integration while keeping local playback working.

Note: Based on recent community testing, SoundTouch presets will likely stop working after the Bose cloud shutdown in February–March 2026 unless a workaround is found.

08-12-2025 — Removed most of this Gist because there’s a much simpler solution than using the Gerbera media server: hosting a JSON description of the radio station on an HTTP server (thanks to user gmuth).
19-11-2025 — Added testing notes:
thlucas1/homeassistantcomponent_soundtouchplus#37 (comment)


🧪 Preliminary Conclusion

Testing strongly indicates that even for “local” services like UPnP (STORED_MUSIC), Bose SoundTouch devices still rely heavily on the Bose cloud for initial setup and for enabling/persisting certain features.

This means that once the Bose cloud services are truly shut down, it is highly likely that:

  • Factory-reset devices will not be able to register new UPnP or other music services via the API or the app.
  • Existing configurations may disappear, especially presets, if the device attempts to “re-authenticate” or periodically sync with the now-absent cloud.

This reinforces the need to have SoundTouch devices fully configured and cloud-registered before the EOL date, hoping that existing configurations will continue to work for local playback afterward.

Possible directions for long-term solutions

  • Reverse-engineering the cloud interaction and simulating the required responses locally
  • Using an external device on AUX IN (e.g., a streamer or Raspberry Pi) to provide radio and other sources independent of the SoundTouch cloud

📡 Using JSON to Store a Radio Station

You can host a JSON description of the radio station on any HTTP server, e.g. bbc1.json.

Create a file such as bbc1.json containing:

{
  "audio": {
    "hasPlaylist": false,
    "isRealtime": true,
    "streamUrl": "http://bbc.com/stream/..."
  },
  "imageUrl": "",
  "name": "BBC 1",
  "streamType": "liveRadio"
}

Place this file on your HTTP server.

Now store the station to preset 1 using:

curl -d @- http://soundtouch:8090/storePreset << XML
<preset id="1">
  <ContentItem source="LOCAL_INTERNET_RADIO" type="stationurl" location="http://yourserver/bbc1.json">
    <itemName>BBC 1</itemName>
  </ContentItem>
</preset>
XML

📝 Notes

  • Stream URLs must use HTTP, not HTTPS.
  • Sometimes the SoundTouch does not start the preset immediately — a reboot usually fixes it.
  • This method remains experimental until confirmed after the SoundTouch cloud EOL in February 2026.
  • Also check out soundcork, which aims to intercept SoundTouch API calls and may offer a long-term solution:
    https://github.com/deborahgu/soundcork
@musnuxer

musnuxer commented May 9, 2026

Copy link
Copy Markdown

@timvahlbrock
yes cool!!! That's what I am looking for...
Any chance to get the script already "kind of beta testing"?

@Olivier822

Copy link
Copy Markdown

@dirkdesmet Thank you. The beginning seems not working on my Window's laptop. I will try tomorrow on another laptop with Ubuntu.

@timvahlbrock

Copy link
Copy Markdown

@timvahlbrock yes cool!!! That's what I am looking for... Any chance to get the script already "kind of beta testing"?

Yeah, the variables in the installer script can be overridden. Before you run the install command (rw && curl ....) run

export VERSION=0.72.2
export INIT_SCRIPT_URL="https://raw.githubusercontent.com/timvahlbrock/Bose-SoundTouch/feat/on-device-install/scripts/on-device-install/aftertouch"

The version needs to be overwritten because the install script already points to the next release and the init script url needs to be overwritten because the init script is not in the base repo yet.

@phfuh

phfuh commented May 9, 2026

Copy link
Copy Markdown

@gmuth

@phfuh, the cloudfare worker is really cool! - Is the source available? For tunein a id-to-url-resolver cloudflare worker could solve potential rate limit issues I had when using a cloud server. Radio-Browser also supports the Bose SoundTouch format: https://all.api.radio-browser.info/soundtouch/stations/byuuid/960e57c5-0601-11e8-ae97-52543be04c81 It doesn't matter if you use this api with a RADIO_BROWSER source or a LOCAL_INTERNET_RADIO source. The latter supports absolute location urls (instead of having the baseUrl of the source appended by the location attribute of the content item).

Oh cool, I don't recognize that. Because of this, my Cloudflare Worker is now obsolete. I'm changing my UI to the RadioBrowser API. The Worker's source code is now available in the repository. Hopefully it helps you.

@gmuth

gmuth commented May 9, 2026

Copy link
Copy Markdown

@phfuh @Olivier822 The phfuh UI is doing its job > it is modifying the presets. But the problem: LOCAL_INTERNET_RADIO service needs to connect to a server > either Bose (all are shut down!) or a local solution (soundcork, opencloudtouch, ....). So phfuh UI alone isn't helping at all...

So again, I am voting for the dev of a basic onboard-solution that is integrated on the Soundtouch system. Assigning Radio-Stations to presets and beeing able to play them, this is the only thing I would need for instance...

Have a look at SoundPloy V1

@musnuxer

musnuxer commented May 9, 2026

Copy link
Copy Markdown

@timvahlbrock
have tried with 0.72.0 (did not find 0.72.2 anywhere) on an ST10 > but have not been successful because the ST10 is struggling with disk space!

@gmuth
yes, cool and simple! That is the very basic I am looking for.

@timvahlbrock

Copy link
Copy Markdown

@timvahlbrock
have tried with 0.72.0 (did not find 0.72.2 anywhere) on an ST10 > but have not been successful because the ST10 is struggling with disk space!

Okay, thanks for letting me know.

@ebanfr-cell

Copy link
Copy Markdown

@phfuh Hey there ! tried to use your software and the web interface aswell, but unfortunately i'm unable to play anything. The presets seem to be saved on the device as i can see them by visiting http://SPEAKERIP:8090/presets , but when I press the preset button on the remote the speakers says "preset 1 empty". Any idea ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment