Summary

Roku SoundBridge is a network-connected digital audio receiver. RCP protocol supports TCP (Telnet ports 5555/4445) and serial (RS-232/I2S). Commands are ASCII with CRLF terminators. Three command classes: synchronous (immediate), transacted (background, cancelable), and subscription (state-change events).

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 5555
serial:
  baud_rate: null
  data_bits: null
  parity: null
  stop_bits: null
  flow_control: null
auth:
  type: none

Traits

- powerable
- queryable
- routable
- levelable

Actions

- id: cancel_transaction
  label: CancelTransaction
  kind: action
  params:
    - name: command_id
      type: string
      description: Command name of transacted command to cancel
- id: get_list_result_type
  label: GetListResultType
  kind: action
  params: []
- id: set_list_result_type
  label: SetListResultType
  kind: action
  params:
    - name: type
      type: enum
      values:
        - full
        - partial
- id: get_list_result
  label: GetListResult
  kind: action
  params:
    - name: start_index
      type: integer
    - name: end_index
      type: integer
- id: delete_list
  label: DeleteList
  kind: action
  params: []
- id: get_data_result_type
  label: GetDataResultType
  kind: action
  params: []
- id: set_data_result_type
  label: SetDataResultType
  kind: action
  params:
    - name: type
      type: enum
      values:
        - binary
        - hex
- id: get_progress_mode
  label: GetProgressMode
  kind: action
  params: []
- id: set_progress_mode
  label: SetProgressMode
  kind: action
  params:
    - name: mode
      type: enum
      values:
        - verbose
        - off
- id: get_initial_setup_complete
  label: GetInitialSetupComplete
  kind: action
  params: []
- id: set_initial_setup_complete
  label: SetInitialSetupComplete
  kind: action
  params: []
- id: get_required_setup_steps
  label: GetRequiredSetupSteps
  kind: action
  params: []
- id: list_languages
  label: ListLanguages
  kind: action
  params: []
- id: get_language
  label: GetLanguage
  kind: action
  params: []
- id: set_language
  label: SetLanguage
  kind: action
  params:
    - name: language
      type: union
      variants:
        - type: integer
        - type: string
- id: list_regions
  label: ListRegions
  kind: action
  params: []
- id: set_region
  label: SetRegion
  kind: action
  params:
    - name: region
      type: integer
- id: get_terms_of_service_url
  label: GetTermsOfServiceUrl
  kind: action
  params: []
- id: accept_terms_of_service
  label: AcceptTermsOfService
  kind: action
  params: []
- id: get_if_config
  label: GetIfConfig
  kind: action
  params: []
- id: get_link_status
  label: GetLinkStatus
  kind: action
  params:
    - name: interface
      type: union
      variants:
        - type: string
        - type: integer
      default: null
- id: get_ip_address
  label: GetIPAddress
  kind: action
  params:
    - name: interface
      type: union
      variants:
        - type: string
        - type: integer
      default: null
- id: get_mac_address
  label: GetMACAddress
  kind: action
  params:
    - name: interface
      type: union
      variants:
        - type: string
        - type: integer
      default: null
- id: list_wifi_networks
  label: ListWiFiNetworks
  kind: action
  params: []
- id: get_wifi_network_selection
  label: GetWiFiNetworkSelection
  kind: action
  params: []
- id: set_wifi_network_selection
  label: SetWiFiNetworkSelection
  kind: action
  params:
    - name: network
      type: union
      variants:
        - type: string
        - type: integer
- id: set_wifi_password
  label: SetWiFiPassword
  kind: action
  params:
    - name: password
      type: string
- id: wifi_network_connect
  label: WiFiNetworkConnect
  kind: action
  params: []
- id: get_connected_wifi_network
  label: GetConnectedWiFiNetwork
  kind: action
  params: []
- id: get_wifi_signal_quality
  label: GetWiFiSignalQuality
  kind: action
  params: []
- id: get_time
  label: GetTime
  kind: action
  params:
    - name: verbose
      type: boolean
      default: false
- id: get_date
  label: GetDate
  kind: action
  params:
    - name: verbose
      type: boolean
      default: false
- id: set_time
  label: SetTime
  kind: action
  params:
    - name: time
      type: string
      description: HH:MM:SS format
- id: set_date
  label: SetDate
  kind: action
  params:
    - name: date
      type: string
      description: MM-DD-YYYY format
- id: list_time_zones
  label: ListTimeZones
  kind: action
  params: []
- id: get_time_zone
  label: GetTimeZone
  kind: action
  params: []
- id: set_time_zone
  label: SetTimeZone
  kind: action
  params:
    - name: timezone
      type: integer
- id: get_software_version
  label: GetSoftwareVersion
  kind: action
  params: []
- id: get_boot_mode
  label: GetBootMode
  kind: action
  params: []
- id: check_software_upgrade
  label: CheckSoftwareUpgrade
  kind: action
  params:
    - name: local
      type: boolean
      default: false
- id: execute_software_upgrade
  label: ExecuteSoftwareUpgrade
  kind: action
  params:
    - name: local
      type: boolean
      default: false
- id: reboot
  label: Reboot
  kind: action
  params: []
- id: reset_to_factory_defaults
  label: ResetToFactoryDefaults
  kind: action
  params: []
- id: get_friendly_name
  label: GetFriendlyName
  kind: action
  params: []
- id: set_friendly_name
  label: SetFriendlyName
  kind: action
  params:
    - name: name
      type: string
- id: get_option
  label: GetOption
  kind: action
  params:
    - name: name
      type: string
- id: set_option
  label: SetOption
  kind: action
  params:
    - name: name
      type: string
    - name: value
      type: string
- id: get_visualizer
  label: GetVisualizer
  kind: action
  params:
    - name: verbose
      type: boolean
      default: false
- id: set_visualizer
  label: SetVisualizer
  kind: action
  params:
    - name: visualizer
      type: union
      variants:
        - type: integer
        - type: string
- id: get_visualizer_mode
  label: GetVisualizerMode
  kind: action
  params: []
- id: set_visualizer_mode
  label: SetVisualizerMode
  kind: action
  params:
    - name: mode
      type: enum
      values:
        - full
        - partial
        - off
- id: list_visualizers
  label: ListVisualizers
  kind: action
  params:
    - name: verbose
      type: boolean
      default: false
- id: get_viz_data_vu
  label: GetVizDataVU
  kind: action
  params: []
- id: get_viz_data_freq
  label: GetVizDataFreq
  kind: action
  params: []
- id: get_viz_data_scope
  label: GetVizDataScope
  kind: action
  params: []
- id: display_update_event_subscribe
  label: DisplayUpdateEventSubscribe
  kind: action
  params: []
- id: display_update_event_unsubscribe
  label: DisplayUpdateEventUnsubscribe
  kind: action
  params: []
- id: get_display_data
  label: GetDisplayData
  kind: action
  params: []
- id: ir_dispatch_command
  label: IrDispatchCommand
  kind: action
  params:
    - name: command
      type: union
      variants:
        - type: string
        - type: integer
- id: ir_demod_subscribe
  label: IrDemodSubscribe
  kind: action
  params:
    - name: updown
      type: boolean
      default: null
- id: ir_demod_unsubscribe
  label: IrDemodUnsubscribe
  kind: action
  params: []
- id: list_servers
  label: ListServers
  kind: action
  params: []
- id: set_server_filter
  label: SetServerFilter
  kind: action
  params:
    - name: filter_tokens
      type: array
      items:
        type: string
- id: set_server_connect_password
  label: SetServerConnectPassword
  kind: action
  params:
    - name: password
      type: string
      default: null
- id: server_connect
  label: ServerConnect
  kind: action
  params:
    - name: index
      type: integer
- id: server_launch_ui
  label: ServerLaunchUI
  kind: action
  params:
    - name: index
      type: integer
- id: server_disconnect
  label: ServerDisconnect
  kind: action
  params: []
- id: get_connected_server
  label: GetConnectedServer
  kind: action
  params: []
- id: get_active_server_info
  label: GetActiveServerInfo
  kind: action
  params: []
- id: server_get_capabilities
  label: ServerGetCapabilities
  kind: action
  params: []
- id: list_songs
  label: ListSongs
  kind: action
  params: []
- id: list_albums
  label: ListAlbums
  kind: action
  params: []
- id: list_artists
  label: ListArtists
  kind: action
  params: []
- id: list_composers
  label: ListComposers
  kind: action
  params: []
- id: list_genres
  label: ListGenres
  kind: action
  params: []
- id: list_locations
  label: ListLocations
  kind: action
  params: []
- id: list_media_languages
  label: ListMediaLanguages
  kind: action
  params: []
- id: list_playlists
  label: ListPlaylists
  kind: action
  params: []
- id: list_playlist_songs
  label: ListPlaylistSongs
  kind: action
  params:
    - name: index
      type: integer
- id: list_container_contents
  label: ListContainerContents
  kind: action
  params: []
- id: get_current_container_path
  label: GetCurrentContainerPath
  kind: action
  params: []
- id: container_enter
  label: ContainerEnter
  kind: action
  params:
    - name: index
      type: integer
- id: container_exit
  label: ContainerExit
  kind: action
  params: []
- id: search_songs
  label: SearchSongs
  kind: action
  params:
    - name: search_string
      type: string
- id: search_artists
  label: SearchArtists
  kind: action
  params:
    - name: search_string
      type: string
- id: search_albums
  label: SearchAlbums
  kind: action
  params:
    - name: search_string
      type: string
- id: search_composers
  label: SearchComposers
  kind: action
  params:
    - name: search_string
      type: string
- id: search_all
  label: SearchAll
  kind: action
  params:
    - name: search_string
      type: string
- id: set_browse_filter_artist
  label: SetBrowseFilterArtist
  kind: action
  params:
    - name: filter_string
      type: string
- id: set_browse_filter_album
  label: SetBrowseFilterAlbum
  kind: action
  params:
    - name: filter_string
      type: string
- id: set_browse_filter_composer
  label: SetBrowseFilterComposer
  kind: action
  params:
    - name: filter_string
      type: string
- id: set_browse_filter_genre
  label: SetBrowseFilterGenre
  kind: action
  params:
    - name: filter_string
      type: string
- id: set_browse_filter_location
  label: SetBrowseFilterLocation
  kind: action
  params:
    - name: filter_string
      type: string
- id: set_browse_filter_media_language
  label: SetBrowseFilterMediaLanguage
  kind: action
  params:
    - name: filter_string
      type: string
- id: set_browse_filter_top_stations
  label: SetBrowseFilterTopStations
  kind: action
  params: []
- id: set_browse_filter_favorites
  label: SetBrowseFilterFavorites
  kind: action
  params: []
- id: set_song_list_sort
  label: SetSongListSort
  kind: action
  params:
    - name: sort
      type: enum
      values:
        - alpha
        - albumTrack
- id: set_browse_list_sort
  label: SetBrowseListSort
  kind: action
  params:
    - name: sort
      type: enum
      values:
        - alpha
        - ignoreThe
- id: get_song_info
  label: GetSongInfo
  kind: action
  params:
    - name: index
      type: integer
- id: get_current_song_info
  label: GetCurrentSongInfo
  kind: action
  params: []
- id: now_playing_clear
  label: NowPlayingClear
  kind: action
  params: []
- id: list_now_playing_queue
  label: ListNowPlayingQueue
  kind: action
  params: []
- id: play_index
  label: PlayIndex
  kind: action
  params:
    - name: index
      type: integer
- id: now_playing_insert
  label: NowPlayingInsert
  kind: action
  params:
    - name: index
      type: integer
    - name: insert_index
      type: integer
      default: null
- id: now_playing_remove_at
  label: NowPlayingRemoveAt
  kind: action
  params:
    - name: index
      type: integer
- id: queue_and_play
  label: QueueAndPlay
  kind: action
  params:
    - name: index
      type: integer
- id: queue_and_play_one
  label: QueueAndPlayOne
  kind: action
  params:
    - name: index
      type: union
      variants:
        - type: integer
        - type: string
- id: play
  label: Play
  kind: action
  params: []
- id: pause
  label: Pause
  kind: action
  params: []
- id: play_pause
  label: PlayPause
  kind: action
  params: []
- id: next
  label: Next
  kind: action
  params: []
- id: previous
  label: Previous
  kind: action
  params: []
- id: stop
  label: Stop
  kind: action
  params: []
- id: shuffle
  label: Shuffle
  kind: action
  params:
    - name: mode
      type: enum
      values:
        - on
        - off
        - cycle
      default: null
- id: repeat
  label: Repeat
  kind: action
  params:
    - name: mode
      type: enum
      values:
        - one
        - all
        - none
        - cycle
      default: null
- id: get_volume
  label: GetVolume
  kind: action
  params: []
- id: set_volume
  label: SetVolume
  kind: action
  params:
    - name: volume
      type: integer
- id: list_presets
  label: ListPresets
  kind: action
  params: []
- id: get_preset_info
  label: GetPresetInfo
  kind: action
  params:
    - name: index
      type: integer
- id: play_preset
  label: PlayPreset
  kind: action
  params:
    - name: index
      type: integer
- id: set_preset
  label: SetPreset
  kind: action
  params:
    - name: index
      type: integer
- id: get_working_song_info
  label: GetWorkingSongInfo
  kind: action
  params: []
- id: set_working_song_info
  label: SetWorkingSongInfo
  kind: action
  params:
    - name: index
      type: integer
- id: clear_working_song
  label: ClearWorkingSong
  kind: action
  params: []
- id: get_transport_state
  label: GetTransportState
  kind: query
  params: []
- id: get_elapsed_time
  label: GetElapsedTime
  kind: query
  params: []
- id: get_total_time
  label: GetTotalTime
  kind: query
  params: []
- id: get_current_now_playing_index
  label: GetCurrentNowPlayingIndex
  kind: query
  params: []
- id: socket_stream_open
  label: SocketStreamOpen
  kind: action
  params:
    - name: address
      type: string
      description: ipaddr:port format
- id: socket_close
  label: SocketClose
  kind: action
  params:
    - name: socket_id
      type: integer
- id: socket_receive_bytes
  label: SocketReceiveBytes
  kind: action
  params:
    - name: socket_id
      type: integer
    - name: max_bytes
      type: integer
- id: socket_send_bytes
  label: SocketSendBytes
  kind: action
  params:
    - name: socket_id
      type: integer
    - name: num_bytes
      type: integer
- id: socket_event_subscribe
  label: SocketEventSubscribe
  kind: action
  params: []
- id: socket_event_unsubscribe
  label: SocketEventUnsubscribe
  kind: action
  params: []
- id: upnp_search
  label: UPnPSearch
  kind: action
  params:
    - name: search_term
      type: string
- id: upnp_get_device_info
  label: UPnPGetDeviceInfo
  kind: query
  params:
    - name: device
      type: string
      description: index number or UUID string
- id: upnp_get_device_description
  label: UPnPGetDeviceDescription
  kind: query
  params:
    - name: device
      type: string
      description: index number or UUID string
- id: get_power_state
  label: GetPowerState
  kind: query
  params: []
- id: set_power_state
  label: SetPowerState
  kind: action
  params:
    - name: state
      type: enum
      values:
        - on
        - standby
    - name: reconnect
      type: enum
      values:
        - yes
        - no
- id: visualizer_mode
  label: VisualizerMode
  kind: action
  params:
    - name: mode
      type: enum
      values:
        - full
        - partial
        - off
- id: subscribe_transport_update_events
  label: SubscribeTransportUpdateEvents
  kind: action
  params: []

Feedbacks

- id: transport_state
  type: enum
  values:
    - Play
    - Pause
    - Stop
    - Buffering
    - Disconnected
    - Standby
- id: transaction_result
  type: enum
  values:
    - TransactionInitiated
    - TransactionCanceled
    - TransactionComplete
    - ListResultSize
    - ListResultEnd
- id: list_result_type
  type: enum
  values:
    - full
    - partial
- id: data_result_type
  type: enum
  values:
    - hex
    - binary
- id: progress_mode
  type: enum
  values:
    - verbose
    - off
- id: visualizer_mode
  type: enum
  values:
    - full
    - partial
    - off
- id: shuffle_state
  type: enum
  values:
    - on
    - off
- id: repeat_state
  type: enum
  values:
    - one
    - all
    - off
- id: initial_setup_complete
  type: enum
  values:
    - Complete
    - NotComplete
- id: setup_steps
  type: array
  items:
    type: string
- id: wifi_signal_quality
  type: object
  properties:
    - name: quality
      type: integer
    - name: signal
      type: integer
    - name: noise
      type: integer
- id: software_version
  type: string
- id: boot_mode
  type: enum
  values:
    - Release
    - Safe
- id: upgrade_progress
  type: enum
  values:
    - CheckingUpgradeAvailability
    - CopyingUpgrade
    - DownloadingUpgrade
    - VerifyingMD5
    - ErasingFlash
    - BurningFlash
    - VerifyingFlash
    - SavingAdditionalData
    - UpgradeComplete
- id: display_data
  type: object
  properties:
    - name: type
      type: string
    - name: dimensions
      type: string
- id: viz_data_vu
  type: string
- id: viz_data_freq
  type: string
- id: viz_data_scope
  type: string
- id: ir_demod_event
  type: string
- id: display_update_event
  type: string
- id: transport_event
  type: enum
  values:
    - Stop
    - TrackChange
    - Buffering
    - Play
- id: elapsed_time
  type: string
- id: total_time
  type: string
- id: volume_level
  type: integer
- id: now_playing_index
  type: integer
- id: song_info
  type: object
- id: server_info
  type: object
  properties:
    - name: Type
      type: string
    - name: Name
      type: string
- id: server_capabilities
  type: object
- id: if_config
  type: object
- id: ip_address
  type: string
- id: mac_address
  type: string
- id: friendly_name
  type: string
- id: container_path
  type: string

Variables

- id: shuffle
  type: enum
  values:
    - on
    - off
    - cycle
- id: repeat
  type: enum
  values:
    - one
    - all
    - none
    - cycle
- id: volume
  type: integer
- id: language
  type: union
  variants:
    - type: integer
    - type: string
- id: region
  type: integer
- id: time_zone
  type: integer
- id: wifi_network_selection
  type: string
- id: server_filter
  type: array
  items:
    type: string
- id: visualizer
  type: union
  variants:
    - type: integer
    - type: string
- id: visualizer_mode
  type: enum
  values:
    - full
    - partial
    - off
- id: list_result_type
  type: enum
  values:
    - full
    - partial
- id: data_result_type
  type: enum
  values:
    - hex
    - binary
- id: progress_mode
  type: enum
  values:
    - verbose
    - off
- id: browse_filter_artist
  type: string
- id: browse_filter_album
  type: string
- id: browse_filter_composer
  type: string
- id: browse_filter_genre
  type: string
- id: browse_filter_location
  type: string
- id: browse_filter_media_language
  type: string
- id: song_list_sort
  type: enum
  values:
    - alpha
    - albumTrack
- id: browse_list_sort
  type: enum
  values:
    - alpha
    - ignoreThe
- id: friendly_name
  type: string
- id: option
  type: string

Events

- id: transport_event
  description: Unsolicited transport state change notifications
  params:
    - name: state
      type: enum
      values:
        - Stop
        - TrackChange
        - Buffering
        - Play
- id: display_update_event
  description: Display data update notifications
  params:
    - name: data
      type: string
- id: ir_demod_event
  description: IR command demodulation notifications
  params:
    - name: command
      type: string

Macros

- id: software_upgrade_sequence
  description: |
    Preconditions: unit must not be connected to a music server.
    1. CheckSoftwareUpgrade
    2. ExecuteSoftwareUpgrade
    Progress responses: CheckingUpgradeAvailability → DownloadingUpgrade (0-100) → VerifyingMD5 → ErasingFlash → BurningFlash → VerifyingFlash → SavingAdditionalData → UpgradeComplete
- id: internet_radio_playback
  description: |
    1. ServerDisconnect
    2. SetServerFilter radio
    3. ListServers
    4. ServerConnect n
    5. ListPlaylistSongs or content browsing commands

Safety

confirmation_required_for: []
interlocks:
  - description: Software upgrade requires unit to be disconnected from music server
    source: "In order for a software upgrade to succeed, the unit must not be connected to a music server."

Notes

RCP protocol uses ASCII commands with CRLF (\r\n) terminators. Command classes: synchronous (immediate response), transacted (background, cancelable via CancelTransaction), subscription (state-change events until unsubscribed). Two TCP Telnet ports: 5555 (RCP shell) and 4444 (SoundBridge shell, requires "mmc" command to start RCP). Serial RS-232/I2S also supported via Wi-Fi Media Module. No authentication required. Verbose progress mode available for long-running transacted commands (ListSongs, SearchSongs, etc.).

Provenance

source_domains:
  - raw.githubusercontent.com
  - applicationmarket.crestron.com
source_urls:
  - https://raw.githubusercontent.com/noyhrynban/Roku-SoundBridge-Controller/master/SoundBridgeRCPSpecification2-4.pdf
  - https://applicationmarket.crestron.com/pinacle-soundbridge/
retrieved_at: 2026-04-26T19:25:06.790Z
last_checked_at: 2026-06-02T22:13:08.310Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:13:08.310Z
matched_actions: 141
action_count: 141
confidence: medium
summary: "All 141 spec actions traced to source (dip-safe re-verify). (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "manufacturer stated as \"Roku\" in source; input specified \"Pinacle\" — using input value"
- "serial baud rate, data bits, parity, stop bits not stated in source"
- "TCP port 4444 not listed in main transport block — alternate RCP shell port"
- "manufacturer discrepancy — source says \"Roku\", input says \"Pinacle\""

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0