SoundTouchPlus Integration

if i try to use the sountouch+ integration from inside music assistant i got the following error (on play, next, prev, and so on):
media_player/media_next_track SoundTouchError: “BST1002E - ‘SoundTouch Sala’: SoundTouch Web-services API returned an error status: ‘unsupported device’”, code=“403”, name=“HTTP_STATUS_FORBIDDEN”, severity=“Unknown”
the “normal” sountouch integration works… hope someone will make a native soundtouch integration now that api are pubic

FYI - just released a new version of the SoundTouchPlus Integration

Be sure to check out the SoundTouchPlus Card as well.

This update includes new state attributes for input selection monitoring. This will allow HA to trigger automations based on the press of the Prefix 1-6 buttons, or the Aux/BlueTooth button. Note that the prefix button presses will not be detected if the preset slot is empty / not set. That's not something I can control - it's just the way the Bose SoundTouch websockets work.

Also note that this update does not restore TUNEIN functionality for presets.

I put together the SoundTouch NowSelected Preset Button Event Handler Example automation, which gives you an idea of the possibilities. Pay particular attention to the How It Works and Limitations sections of the example. I was surprised the SoundTouch websockets did not raise the nowSelectionUpdated event if a prefix slot was empty.

[ 1.0.174 ] - 2026/05/15

  • Added extra state variable: stp_nowselection_id. Returns the Preset Id of the preset (or other input) selection button that was selected. This value will be zero if a non-preset button was selected (e.g. BLUETOOTH, AUXIN, etc).
  • Added extra state variable: stp_nowselection_source. Returns the source value of the selection update event.
  • Added extra state variable: stp_nowselection_dateutc. Returns the date and time (in epoch format) of when the selection update event took place.
  • Updated bosesoundtouchapi package requirement to bosesoundtouchapi>=1.0.87.

Hi, I have downloaded and installed the latest version (1.0.174) and started using the the blueprint template to be able to use the local preset buttons. However, I have 5 Bose Soundtouch units, both ST-10 and ST-20 and only 3 of them show up in HA with the new attributes and can be controlled. Also, the units that show up and works with local preset buttons suddenly does not work anymore? Is anybody experiencing the same behavior and/or have some good input? Anything I am missing?

@henninne
Things to verify:

  1. Make sure all of your SoundTouch devices reside on the same IP subnet (e.g. 192.168.1.x) as your HA instance.
  2. Make sure all of your SoundTouch devices have static IP / DHCP reserved addresses. An address change after a power outage / reboot could cause issues.

Note that some music services are no longer supported after Bose SoundTouch End of Life date. You will no longer be able to play TUNEIN stations, or any url's that starts with https://. It appears that Bose left a couple of their cloud services running after the May 8th cutoff date, and they appear to have been shut down this week. You will see errors like ALLEGROWEBSERVER TIMEOUT, etc.

Also note that Bose SoundTouch NowSelectionUpdated websocket event will not be raised if the Preset value is empty. The script relies on that event to be raised in order to detect a Preset button press. You will need to store something to the Preset in order for the script to detect the Preset press.

Hope it helps!

FYI - just released a new version of the SoundTouchPlus Integration.

Be sure to check out the SoundTouchPlus Card as well.

This update adds a new preset_store service to allow direct storing of Preset information. The ability to do that has existed in the underlying API, but I just never created a service for it in the integration (until now). Note this only stores the prefix information on the specified device (does not sync to other devices). I may add prefix syncing in the next release if it's requested, to mimic the sync behavior of the deprecated Bose SoundTouch Cloud Services.

The other item of note is the ability to automatically redirect playing of LOCAL_INTERNET_RADIO content to utilize the play_url_dlna service. Use the ?bosetype=play_url_dlna querystring parameter in the location value of the play_contentitem service to force the stream to play via the Play Url DLNA service. Note that only http:// url's are supported at this time.

Note that I could not find a way to play TUNEIN streams at this time, as I could not locate the underlying streaming url for my favorite station(s). It seems that TUNEIN is using some sort of API now that controls access to their streams - not sure if there is another way or not. If you know of one for TUNEIN, then please let me know so I can document it.

Here are a few Radio Station Browser links to find streamable radio content for the LOCAL_INTERNET_RADIO source (modify your search criteria as desired):

Note that Bose SoundTouch supports the following file formats and bit rates when streaming:

  • MP3: 8 kbit/s ~ 320 kbit/s
  • AAC: 24 kbit/s ~ 128 kbit/s
  • HE-AAC: 48 kbit/s ~ 64 kbit/s
  • WMA: 8 kbit/s ~ 329 kbit/s
  • Vorbis: 32 kbit/S ~ 500 kbit/s
  • FLAC: VBR: 0bit/s ~ 1.4 Mbit/s, up to CD quality (2 channels / 48 kHz / 16 bit)
  • ALAC: 300 kbit/s ~ 5 Mbit/s, HD (2 channels / 96 kHz / 32 bit)

For example, use the following to play an internet radio stream:

# play local internet radio station content.
action: soundtouchplus.play_contentitem
data:
  entity_id: media_player.soundtouch_10
  name: K-LOVE 90's Radio
  source: LOCAL_INTERNET_RADIO
  item_type: stationurl
  location: >-
    http://maestro.emfcdn.com/stream_for/k-love-90s/airable/aac?bosetype=play_url_dlna
  container_art: >-
    https://cdn-profiles.tunein.com/s309605/images/logod.png?t=637986891960000000
  is_presetable: true

Use the following to store a preset to play an internet radio stream:

# store preset number 2 information to the device.
action: soundtouchplus.preset_store
data:
  entity_id: media_player.soundtouch_10
  preset_id: 2
  name: K-LOVE 90's Radio
  source: LOCAL_INTERNET_RADIO
  item_type: stationurl
  location: >-
    http://maestro.emfcdn.com/stream_for/k-love-90s/airable/aac?bosetype=play_url_dlna
  container_art: >-
    https://cdn-profiles.tunein.com/s309605/images/logod.png?t=637986891960000000

Release Notes

[ 1.0.175 ] - 2026/05/29

  • Added service preset_store; Stores the given Preset information to the device list of presets. Note this only stores the prefix information on the specified device (does not sync to other devices).
  • Added play_url_dlna content item type detection, which will automatically redirect a station location to play using the play_url_dlna service.

[ 1.0.174 ]
:white_check_mark: All SoundTouch players are on the same subnet, in my case (10.0.1.xxx)
:white_check_mark: All have reserved/static IP addresses
:white_check_mark: Only using Play Url DLNA service with http:// -url
:white_check_mark: Presets are configured/no empty slots

Some new observations is that the Blueprint automation with attribute (stp_nowselection_dateutc) is only triggering when I press the power button on the device, i.e. no trigger when pressing the preset buttons. Also I can select the presets in the HA UI player and everything works fine. Could this "signal" be stopped or something on my network, but still detected for the power button? This does not make sense to me :thinking:

[ 1.0.175 ]
I downloaded the newest version yesterday and stored all new presets according to the instructions, but I still cannot get the local device preset buttons to work. (Tested with the previous preset detection automation from 1.0.174 enabled and disabled)

Example of one of the stored presets:

- PresetId: 3
    SourceTitle: "LOCAL_INTERNET_RADIO:"
    ContentItem:
      ContainerArt: https://info.nrk.no/wp-content/uploads/2019/09/NRKP3-hovedlogo_c_RGB.jpg
      IsPresetable: true
      Location: http://lyd.nrk.no/nrk_radio_p3_mp3_h?bosetype=play_url_dlna
      Name: NRK P3
      Source: LOCAL_INTERNET_RADIO
      TypeValue: stationurl

BUT, except my issues - really great work on the plugin! Thanks.

1 Like

@henninne
It sounds like you don't have websocket support enabled for the device, or the device does not support websockets. You can check the soundtouchplus_websockets_enabled state attribute to determine if websockets are currently enabled (true) or not (false).

I believe the only device that supports websockets is the SoundTouch 10. The SoundTouch 20 does not support websockets.

Websocket event detection has to be enabled when you add a new device - set to port 8080. If the port was set to 0 (zero) then event detection is disabled, and you won't receive the nowSelectionUpdated events when a preset is pressed.

I forgot to mention, I added your preset definition to my ST-10, and it worked fine.

action: soundtouchplus.preset_store
data:
  entity_id: media_player.bose_st10_2
  preset_id: 3
  name: NRK P3
  source: LOCAL_INTERNET_RADIO
  item_type: stationurl
  location: >-
    http://lyd.nrk.no/nrk_radio_p3_mp3_h?bosetype=play_url_dlna
  container_art: >-
    https://info.nrk.no/wp-content/uploads/2019/09/NRKP3-hovedlogo_c_RGB.jpg