Roku M1000 Software Manual

Roku M1000 Software Manual

Roku soundbridge m1000 digital media receiver: software guide
Hide thumbs Also See for M1000:
Table of Contents

Advertisement

Roku
Functional Specification
Roku Control Protocol
Date:
13-July-06
Document Version:
2.0
Software versions:
SoundBridge 2.5.171
WMM 2.6.6
Copyright© 2006 Roku, LLC
Page 1
www.rokulabs.com

Advertisement

Table of Contents
loading

Summary of Contents for Roku M1000

  • Page 1 Roku Functional Specification Roku Control Protocol Date: 13-July-06 Document Version: Software versions: SoundBridge 2.5.171 WMM 2.6.6 Copyright© 2006 Roku, LLC Page 1 www.rokulabs.com...
  • Page 2: Table Of Contents

    Listing and Connecting to Media Servers...20 Overview...20 ListServers...22 SetServerFilter...24 SetServerConnectPassword...26 ServerConnect...27 ServerLaunchUI...29 ServerDisconnect ...31 GetConnectedServer ...33 Content Selection And Playback ...35 Overview...35 ListSongs ...37 ListAlbums ...38 ListArtists ...39 ListComposers...40 ListGenres ...41 ListLocations...42 ListMediaLanguages...43 ListPlaylists ...44 Copyright© 2006 Roku, LLC Page 2 www.rokulabs.com...
  • Page 3 QueueAndPlayOne...73 Transport ...74 Play...75 Pause ...76 PlayPause...77 Next ...78 Previous...79 Stop ...80 Shuffle ...81 Repeat ...82 GetTransportState ...83 GetElapsedTime ...84 GetTotalTime ...85 GetCurrentNowPlayingIndex ...86 IR Demod/Dispatch ...87 IrDispatchCommand ...88 IrDemodSubscribe ...89 IrDemodUnsubscribe ...89 Copyright© 2006 Roku, LLC Page 3 www.rokulabs.com...
  • Page 4 Usage Scenario: Playing a Music File on the Local Network ...113 ListPresets ...115 GetPresetInfo...116 PlayPreset ...117 SetPreset ...118 GetWorkingSongInfo ...119 SetWorkingSongInfo...120 ClearWorkingSong...122 Socket Commands for Generalized Network Communication...123 SocketStreamOpen ...124 SocketClose...126 SocketReceiveBytes...127 SocketSendBytes ...128 UPnP Searching Commands...130 UPnPSearch ...131 UPnPGetDeviceInfo...133 UPnPGetDeviceDescription...134 Copyright© 2006 Roku, LLC Page 4 www.rokulabs.com...
  • Page 5: Overview

    This document describes the Roku Control Protocol (RCP). RCP is a control protocol implemented by the Roku SoundBridge line of digital audio players with software version 2.3 or later, and the Roku Wi-Fi Media Module (WMM), a drop- in hardware solution for implementing digital audio functionality targeted for OEMs.
  • Page 6: Rcp Sessions

    RCP-capable device and the client controller. Any communication medium that can transmit full-duplex byte stream data could be utilized. In practice, Roku devices expose RCP via the following types of connections: 1. Serial (RS232 or I2S) – The Wi-Fi Media Module (WMM) exposes RS232...
  • Page 7: Terminology

    When this document refers to the RCP host, it refers to the device that exposes the RCP interface and processes RCP commands. The RCP host can be any Roku SoundBridge device running software version 2.3 or later, or it can be a Roku Wi-Fi Media Module (WMM).
  • Page 8: Protocol Summary

    GetTransportState GetTransportState: Stop The RCP client sends the command id (“GetTransportState”) followed by a line terminator sequence of CRLF (i.e., “\r\n” or “0d 0a” in hex), and the RCP host Copyright© 2006 Roku, LLC Protocol Summary Page 8 www.rokulabs.com...
  • Page 9: Transacted Commands

    However, an RCP client could not have two instances of the GetSongInfo command executing at the same time. (Try it, you’ll get the following error: “ErrorTransactionPending”.) Also, since most transacted commands return list Copyright© 2006 Roku, LLC Transmissions ListArtists ListArtists: TransactionInitiated...
  • Page 10: Transaction Initiation

    WMM notify it automatically every time there is a change in the transport state, e.g. when the currently playing track changes, or when there is a buffer underrun during playback. (On the other hand, some clients may prefer to poll Copyright© 2006 Roku, LLC Page 10 www.rokulabs.com...
  • Page 11: List Results

    For example, after getting a list of music servers from the ListServers command, the RCP client can connect to one of these servers with the ServerConnect command by indicating the zero-based list position of the desired server in the list results. Copyright© 2006 Roku, LLC Transmission SubscribeTransportUpdateEvents SubscribeTransportUpdateEvents: OK...
  • Page 12: Partial-Results Mode

    Elapsed Time (ms) 5000 5000 5001 5002 5002 5002 5002 5003 Copyright© 2006 Roku, LLC Transmissions SetListResultType partial SetListResultType: OK ListSongs ListSongs: TransactionInitiated ListSongs: ListResultSize 5123 ListSongs: TransactionComplete GetListResult 0 2 GetListResult: ListResultSize 3 GetListResult: Ace Of Spades...
  • Page 13: User-Interface Models

    PLAY buttons. To keep the physical display up to date with changes to the RCP host-generated UI, you can subscribe to display-update events (to receive notification whenever Copyright© 2006 Roku, LLC Page 13 www.rokulabs.com...
  • Page 14 UI has changed), you can poll for a display-update counter, or you can simply download the display data (using the command GetDisplayData) several times a second. Copyright© 2006 Roku, LLC Page 14 www.rokulabs.com...
  • Page 15: Rcp Limitations And Future Directions

    These capabilities are constant and don’t change. (Although note that Roku may for example add a searching capability to the Internet Radio server in a future software release, so even this is not a hard and fast rule.) But the capabilities of servers from the local network are hard to...
  • Page 16: Standby Mode

    Planned Server Description RCP Support To alleviate these problems, Roku plans on adding new commands to provide the name and content selection capabilities of the current active server. This will most likely be with the addition of a single command like GetActiveServerInfo.
  • Page 17: Rcp Host Configuration

    But for WMM users these setup commands will be necessary. Planned Host Configuration RCP Support Roku will add RCP commands to allow the setting of the wi-fi region, the user- interface language, the wi-fi SSID and password, and manual IP configuration.
  • Page 18: Other Areas For Improvement

    RCP support for socket commands only supports simple TCP sockets at present. See the section “Socket Commands for Generalized Network Communication”. Roku plans on adding full socket support including datagram (UDP) sockets and listening stream (TCP) sockets. RCP is planned to offer support for drawing on the display using drawing primitive commands.
  • Page 19: Command Reference

    A single invocation of the command is listed here with an example result. SetServerFilter daap upnp SetServerFilter: OK Finally, additional description of the command goes here. Copyright© 2006 Roku, LLC Command Reference ‘n’ stands Optional parameters Functions that Note that...
  • Page 20: Listing And Connecting To Media Servers

    If the unit is connected to a music server outside of the RCP session, the RCP session must use the GetConnectedServer command to “attach” its active server to the server that the unit has been connected to. Once the session has Copyright© 2006 Roku, LLC Page 20 www.rokulabs.com...
  • Page 21 UI and wait for remote key presses from the user to complete the connection.) All of the content browsing, searching, and queuing commands require a valid active server, so understanding these server connection commands is vital for full utilization of RCP. Copyright© 2006 Roku, LLC Page 21 www.rokulabs.com...
  • Page 22: Listservers

    UPnP and Rendezvous protocols. Also note that the server names for the Internet Radio server and AM / FM Tuner servers are localized depending on the currently active language selection. Copyright© 2006 Roku, LLC Page 22 www.rokulabs.com...
  • Page 23 The side-effect of this command is that it returns list results, clobbering any existing list results held by the RCP session, which can be used by subsequent invocations of ServerConnect or ServerLaucnhUI. The scope of this command is restricted to the RCP session. Copyright© 2006 Roku, LLC Page 23 www.rokulabs.com...
  • Page 24: Setserverfilter

    NOTE: The browsing, searching and queuing RCP functions do not work with slim servers, so the only use for connecting to a slim server in RCP is to use the RCP host-generated UI to access it. Copyright© 2006 Roku, LLC Page 24 www.rokulabs.com...
  • Page 25 HISTORICAL NOTE: Until software version 2.5.155, the RCP server filter was global across all RCP sessions. Copyright© 2006 Roku, LLC Page 25 www.rokulabs.com...
  • Page 26: Setserverconnectpassword

    Note that the password to a password-protected media server only needs to be provided once during the boot session of the RCP host. The server can be connected and disconnected subsequently without having to re-supply the password. Copyright© 2006 Roku, LLC Page 26 www.rokulabs.com...
  • Page 27: Serverconnect

    ServerConnect will connect to a music server, setting the RCP session’s active server on success. To use this function, you must first call ListServers to set the current per-RCP session list result to a list of available servers. Then execute Copyright© 2006 Roku, LLC Page 27 www.rokulabs.com...
  • Page 28 RCP host-generated UI to block waiting for user input if the server requires a password, and it will wait for several seconds displaying an error message if the connection fails. Copyright© 2006 Roku, LLC Page 28 www.rokulabs.com...
  • Page 29: Serverlaunchui

    In this case, the host device will generate a password entry screen on its display and wait for user input to complete the connection process. Copyright© 2006 Roku, LLC Page 29 www.rokulabs.com...
  • Page 30 Also, ServerLaunchUI does NOT use the per-RCP session server connect password set by the SetServerConnectPassword command. ServerLaunchUI will reset the per-RCP session container path to the root upon successful connection. Copyright© 2006 Roku, LLC Page 30 www.rokulabs.com...
  • Page 31: Serverdisconnect

    ServerLaunchUI or by a user using the remote control, then the RCP host will generate a disconnection message and display it for 5 seconds during the server disconnect process to notify the interactive user that the server Copyright© 2006 Roku, LLC Page 31 www.rokulabs.com...
  • Page 32 (The ServerDisconnect transaction will wait this additional 5 seconds as well before completing.) Copyright© 2006 Roku, LLC Page 32 www.rokulabs.com...
  • Page 33: Getconnectedserver

    • If ServerConnect or ServerLaunchUI returns ConnectionFailedAlreadyConnected • If any of the RCP commands that access a music server start failing. (They currently return GenericError in this instance; in future software releases this might change to ErrorDisconnected.) Copyright© 2006 Roku, LLC Page 33 www.rokulabs.com...
  • Page 34 BUG: When GetConnectedServer syncs up the RCP session’s active server to a new server, the RCP session’s current container path is NOT reset to the root path. This will be addressed in a future software release. Copyright© 2006 Roku, LLC Page 34 www.rokulabs.com...
  • Page 35: Content Selection And Playback

    Each RCP session has a “browse filter” object that you can set up with parameters to modify the lists returned by the next call to a ListXXXX command. For example, to list the albums by the artist Led Zeppelin, you could issue the following commands: Copyright© 2006 Roku, LLC Page 35 www.rokulabs.com...
  • Page 36 Each RCP session contains a container path variable that contains the current container path. The RCP session can list the contents of the current container, and then enter sub-containers and list the contents there. See the descriptions of the container commands for further details. Copyright© 2006 Roku, LLC Page 36 www.rokulabs.com...
  • Page 37: Listsongs

    As a side effect of executing this command, the current browse filters are cleared. Copyright© 2006 Roku, LLC This song list Page 37 www.rokulabs.com...
  • Page 38: Listalbums

    ListAlbums and the resulting album list will be restricted to the albums by that artist. As a side effect of executing this command, the current browse filters are cleared. Copyright© 2006 Roku, LLC Page 38 www.rokulabs.com...
  • Page 39: Listartists

    As a side effect of executing this command, the current browse filters are cleared. Copyright© 2006 Roku, LLC Page 39 www.rokulabs.com...
  • Page 40: Listcomposers

    ListComposers. As a side effect of executing this command, the current browse filters are cleared. Copyright© 2006 Roku, LLC Page 40 www.rokulabs.com...
  • Page 41: Listgenres

    NOTE: The Internet Radio server does support browsing by genres, but it does not support filtering the list of genre results. As a side effect of executing this command, the current browse filters are cleared. Copyright© 2006 Roku, LLC Page 41 www.rokulabs.com...
  • Page 42: Listlocations

    ListLocations lists the originating locations of internet radio stations. Only the Internet Radio server supports browsing by location. Location results can NOT be filtered using the browse filters. As a side effect of executing this command, the current browse filters are cleared. Copyright© 2006 Roku, LLC Page 42 www.rokulabs.com...
  • Page 43: Listmedialanguages

    ListMediaLanguages lists the languages of internet radio stations. Only the Internet Radio server supports browsing by language. Language results can NOT be filtered using the browse filters. As a side effect of executing this command, the current browse filters are cleared. Copyright© 2006 Roku, LLC Page 43 www.rokulabs.com...
  • Page 44: Listplaylists

    NOTE: In order to play the songs in a playlist, the RCP client must first list the contents of the playlist using the GetPlaylistSongs command. The list of songs returned by that command can then be queued for playback. Copyright© 2006 Roku, LLC This list Page 44...
  • Page 45: Listplaylistsongs

    ListPlaylistSongs lists the songs in a playlist. The current RCP session list results must be a list of playlists returned by the ListPlaylists command. The parameter is a zero-based index of the desired playlist in that list. Copyright© 2006 Roku, LLC This list can be Page 45...
  • Page 46: Listcontainercontents

    UPnP servers, it is fairly safe to assume that all the items within the same container are either all containers or all songs. This might not be the case for Copyright© 2006 Roku, LLC This list can be Page 46...
  • Page 47 RCP session’s current container path is NOT reset to the root path. This will be addressed in a future software release. HISTORICAL NOTE: Until software version 2.5.155, the current container path was global across all RCP sessions. Copyright© 2006 Roku, LLC Page 47 www.rokulabs.com...
  • Page 48: Getcurrentcontainerpath

    ISSUE: Containers whose names contain a forward slash are not currently escaped. This bug will be addressed in a future software release. HISTORICAL NOTE: Until software version 2.5.155, the current container path was global across all RCP sessions. Copyright© 2006 Roku, LLC Page 48 www.rokulabs.com...
  • Page 49: Containerenter

    ListContainerContents command. NOTE: Not all servers publish a container hierarchy, but most UPnP servers do. HISTORICAL NOTE: Until software version 2.5.155, the current container path was global across all RCP sessions. Copyright© 2006 Roku, LLC Page 49 www.rokulabs.com...
  • Page 50: Containerexit

    ListContainerContents command. NOTE: Not all servers publish a container hierarchy, but most UPnP servers do. HISTORICAL NOTE: Until software version 2.5.155, the current container path was global across all RCP sessions. Copyright© 2006 Roku, LLC Page 50 www.rokulabs.com...
  • Page 51: Searchsongs

    In order to be included in the results list, a contiguous substring of the song’s title attribute must match the search string. The string comparison is case insensitive. NOTE: Not all music servers support searching. Copyright© 2006 Roku, LLC This list can be Page 51 www.rokulabs.com...
  • Page 52: Searchartists

    The string comparison is case insensitive. Any of the strings returned in the results list can be used as a parameter to the SetBrowseFilterArtist command. NOTE: Not all music servers support searching. Copyright© 2006 Roku, LLC Page 52 www.rokulabs.com...
  • Page 53: Searchalbums

    The string comparison is case insensitive. Any of the strings returned in the results list can be used as a parameter to the SetBrowseFilterAlbum command. NOTE: Not all music servers support searching. Copyright© 2006 Roku, LLC Page 53 www.rokulabs.com...
  • Page 54: Searchcomposers

    The string comparison is case insensitive. Any of the strings returned in the results list can be used as a parameter to the SetBrowseFilterComposer command. NOTE: Not all music servers support searching. Copyright© 2006 Roku, LLC Page 54 www.rokulabs.com...
  • Page 55: Searchall

    The string comparison is case insensitive. NOTE: Not all music servers support searching. Copyright© 2006 Roku, LLC This list can be Page 55...
  • Page 56: Setbrowsefilterartist

    ISSUE: After setting browse filter, there is no way to clear it until calling one of the browse listing commands (like ListSongs, ListArtists, etc.). HISTORICAL NOTE: Until software version 2.5.155, the browse filters were global across all RCP sessions. Copyright© 2006 Roku, LLC Page 56 www.rokulabs.com...
  • Page 57: Setbrowsefilteralbum

    ISSUE: After setting browse filter, there is no way to clear it until calling one of the browse listing commands (like ListSongs, ListArtists, etc.). HISTORICAL NOTE: Until software version 2.5.155, the browse filters were global across all RCP sessions. Copyright© 2006 Roku, LLC Page 57 www.rokulabs.com...
  • Page 58: Setbrowsefiltercomposer

    ISSUE: After setting browse filter, there is no way to clear it until calling one of the browse listing commands (like ListSongs, ListArtists, etc.). HISTORICAL NOTE: Until software version 2.5.155, the browse filters were global across all RCP sessions. Copyright© 2006 Roku, LLC Page 58 www.rokulabs.com...
  • Page 59: Setbrowsefiltergenre

    ISSUE: After setting browse filter, there is no way to clear it until calling one of the browse listing commands (like ListSongs, ListArtists, etc.). HISTORICAL NOTE: Until software version 2.5.155, the browse filters were global across all RCP sessions. Copyright© 2006 Roku, LLC Page 59 www.rokulabs.com...
  • Page 60: Setbrowsefilterlocation

    ISSUE: After setting browse filter, there is no way to clear it until calling one of the browse listing commands (like ListSongs, ListArtists, etc.). HISTORICAL NOTE: Browsing by location was added to RCP in 2.5.155. Copyright© 2006 Roku, LLC Page 60 www.rokulabs.com...
  • Page 61: Setbrowsefiltermedialanguage

    ISSUE: After setting browse filter, there is no way to clear it until calling one of the browse listing commands (like ListSongs, ListArtists, etc.). HISTORICAL NOTE: Browsing by media language was added to RCP in 2.5.155. Copyright© 2006 Roku, LLC Page 61 www.rokulabs.com...
  • Page 62: Getting Detailed Song Info

    The RCP session’s active server must be valid and connected for these commands to succeed. See the “Listing and Connecting to Media Servers” section for more details. These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 62 www.rokulabs.com...
  • Page 63: Getsonginfo

    GetSongInfo reports all attributes of a song with a given index as reported by the currently connected server. The index argument refers to any list of songs generated by a browsing or searching command. Copyright© 2006 Roku, LLC Page 63 www.rokulabs.com...
  • Page 64: Getcurrentsonginfo

    GetCurrentSongInfo: resource[0] format: MP3 GetCurrentSongInfo: resource[0] bitrate: 128 GetCurrentSongInfo: resource[0] sampleRate: 44100 GetCurrentSongInfo: resource[0] sizeBytes: 405442 GetCurrentSongInfo: OK GetCurrentSongInfo reports all attributes of the song currently playing as reported by the currently connected server. Copyright© 2006 Roku, LLC Page 64 www.rokulabs.com...
  • Page 65: Managing The Now Playing (Ad-Hoc) Playlist

    This list is called the “Now Playing” playlist, or the “Ad-Hoc” playlist. The WMM offers several commands to the client for manipulating this list: • NowPlayingClear • ListNowPlayingQueue These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 65 www.rokulabs.com...
  • Page 66: Nowplayingclear

    GenericError – no connected server Example: NowPlayingClear NowPlayingClear: OK NowPlayingClear clears the Now Playing playlist. This has the side effect that any media being played on the unit will be stopped and cleared from the queue. Copyright© 2006 Roku, LLC Page 66 www.rokulabs.com...
  • Page 67: Listnowplayingqueue

    GenericError – no connected server Example: ListNowPlayingQueue ListNowPlayingQueue: ListResultSize 3 ListNowPlayingQueue: Brick House ListNowPlayingQueue: Insane in the Brain ListNowPlayingQueue: Jamming ListNowPlayingQueue: ListResultEnd ListNowPlayingQueue lists all songs in the Now Playing playlist. Copyright© 2006 Roku, LLC This list can be Page 67 www.rokulabs.com...
  • Page 68: Initiating Media Playback

    • QueueAndPlay (creates ad-hoc playlist from current item list and starts playback) • QueueAndPlayOne (creates ad-hoc playlist from one item and plays) These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 68 www.rokulabs.com...
  • Page 69: Playindex

    (not the nth song after the currently playing song). If there aren’t any songs in the “Now Playing” queue, PlayIndex will result in a ParameterError. Copyright© 2006 Roku, LLC Page 69 www.rokulabs.com...
  • Page 70: Nowplayinginsert

    Now Playing queue at which to insert the song(s). If the second argument is not given, then the songs are appended to the Now Playing queue. Copyright© 2006 Roku, LLC Page 70 www.rokulabs.com...
  • Page 71: Nowplayingremoveat

    ListNowPlayingQueue: Zealots ListNowPlayingQueue: ListResultEnd NowPlayingRemoveAt removes a single song from the specified zero-based index of the “Now Playing” queue. The contents of the “Now Playing” queue following that index are shifted up by one. Copyright© 2006 Roku, LLC Page 71 www.rokulabs.com...
  • Page 72: Queueandplay

    (or of the current container), and then it begins playback of the list starting at the song at the zero-based index indicated by the parameter n. The previous contents of the Now Playing queue are deleted. Copyright© 2006 Roku, LLC Page 72 www.rokulabs.com...
  • Page 73: Queueandplayone

    The parameter can also be the token string, “working”, which indicates that the contents of the RCP session’s current “working” song should be played. See the command SetWorkingSongInfo for more information on the “working” song. Copyright© 2006 Roku, LLC Page 73 www.rokulabs.com...
  • Page 74: Transport

    • Play • Pause • Next • Previous • Stop • Shuffle • Repeat • GetTransportState • GetElapsedTime • GetTotalTime • GetCurrentNowPlayingIndex These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 74 www.rokulabs.com...
  • Page 75: Play

    Synchronous Result Type: No result Responses: Example: Play Play: OK Play starts playback at the current track offset. If the RCP host is already playing, this command has no effect. See also PlayPause Copyright© 2006 Roku, LLC Page 75 www.rokulabs.com...
  • Page 76: Pause

    Responses: Example: Pause Pause: OK Pause halts playback and maintains the position of playback in the current track. If the RCP host is not playing, this command has no effect. See also PlayPause Copyright© 2006 Roku, LLC Page 76 www.rokulabs.com...
  • Page 77: Playpause

    If the RCP host is playing, PlayPause halts playback and maintains the position of playback in the current track. If the RCP host is not playing, PlayPause starts playback at the current playback position. See also Play, Pause Copyright© 2006 Roku, LLC Page 77 www.rokulabs.com...
  • Page 78: Next

    Next Next: OK Next moves the currently playing song to the next song in the Now Playing queue, and causes playback to begin (regardless of whether the unit was playing, paused, or stopped). Copyright© 2006 Roku, LLC Page 78 www.rokulabs.com...
  • Page 79: Previous

    If the song playback is between zero and five seconds after the start of the song, the Previous command causes playback to skip to the previous song. After five seconds, the Previous command causes playback to skip to the beginning of the current song. Copyright© 2006 Roku, LLC Page 79 www.rokulabs.com...
  • Page 80: Stop

    Stop stops the currently playing song (regardless of whether the unit was playing, paused, or stopped). If playback is resumed, it is always relative to the beginning of the first song in the Now Playing queue. Copyright© 2006 Roku, LLC Page 80 www.rokulabs.com...
  • Page 81: Shuffle

    When this attribute is set to off, playback is in order of the original queue or playlist. Given an argument of “on” or “off”, Shuffle sets the attribute accordingly. Given an argument of “cycle”, Shuffle toggles the attribute value. Copyright© 2006 Roku, LLC Page 81 www.rokulabs.com...
  • Page 82: Repeat

    Given an argument of “one”, “all”, or “none”, Repeat sets the attribute accordingly. Given an argument of “cycle”, Repeat cycles the value of the repeat attribute among each of the 3 options. Copyright© 2006 Roku, LLC Page 82 www.rokulabs.com...
  • Page 83: Gettransportstate

    Next Prev Stop Buffering Disconnected Standby Example: GetTransportState GetTransportState: Pause GetTransportState reports the state of the unit's audio playback. The return values are Play, Pause, Next, Prev, Stop, Buffering, Disconnected, Standby, and Error. Copyright© 2006 Roku, LLC Page 83 www.rokulabs.com...
  • Page 84: Getelapsedtime

    GetElapsedTime Syntax: GetElapsedTime Classification: Synchronous Result Type: Returns a time string Responses: GenericError Example: GetElaspedTime GetElaspedTime: 0:00:55 GetElapsedTime reports the hours, minutes, and seconds since the beginning of the currently playing song. Copyright© 2006 Roku, LLC Page 84 www.rokulabs.com...
  • Page 85: Gettotaltime

    GetTotalTime Syntax: GetTotalTime Classification: Synchronous Result Type: Returns a time string Responses: GenericError Example: GetTotalTime GetTotalTime: 0:03:15 GetElapsedTime reports the total duration of the currently playing song in hours, minutes, and seconds. Copyright© 2006 Roku, LLC Page 85 www.rokulabs.com...
  • Page 86: Getcurrentnowplayingindex

    GetTransportState Classification: Synchronous Result Type: Returns a numeric result Responses: GenericError Example: GetCurrentNowPlayingIndex GetCurrentNowPlayingIndex: 6 GetCurrentNowPlayingIndex reports the zero-based index into the Now Playing queue of the song that is being played back. Copyright© 2006 Roku, LLC Page 86 www.rokulabs.com...
  • Page 87: Ir Demod/Dispatch

    By intercepting IR commands, an RCP client can perform special actions on user key events and keep the RCP host-generated UI from reacting to them. • IrDispatchCommand • IrDemodSubscribe • IrDemodUnsubscribe These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 87 www.rokulabs.com...
  • Page 88: Irdispatchcommand

    CK_POWER CK_POWER_ON CK_POWER_OFF CK_SEARCH CK_ADD CK_SHUFFLE CK_REPEAT CK_VOLUME_UP CK_VOLUME_DOWN CK_BRIGHTNESS CK_ROTARY_CLOCKWISE CK_ROTARY_COUNTERCLOCKWISE CK_ROTARY_SWITCH CK_SNOOZE CK_SOURCE CK_SCAN_UP CK_SCAN_DOWN CK_GROUP Copyright© 2006 Roku, LLC CK_ALARM CK_PLAYLISTS CK_BROWSE_ARTISTS CK_BROWSE_ALBUMS CK_BROWSE_SONGS CK_BROWSE_GENRES CK_BROWSE_COMPOSERS CK_PRESET_A1 CK_PRESET_A2 CK_PRESET_A3 CK_PRESET_A4 CK_PRESET_A5 CK_PRESET_A6 CK_PRESET_B1 CK_PRESET_B2 CK_PRESET_B3 CK_PRESET_B4 CK_PRESET_B5...
  • Page 89: Irdemodsubscribe

    RCP session. IrDemodUnsubscribe reconnects the stream of IR commands sent from the RCP host’s IR decoder to the command processor, and they will no longer be echoed to the RCP session. Copyright© 2006 Roku, LLC Page 89 www.rokulabs.com...
  • Page 90: Setup Commands

    The WMM maintains many settings in onboard non-volatile FLASH storage. Here is the list of commands which allow you to change those stored settings: • GetLanguage • SetLanguage • ListLanguages These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 90 www.rokulabs.com...
  • Page 91: Getlanguage

    GetLanguage Syntax: GetLanguage Classification: Synchronous Result Type: Returns a language name Responses: No responses Example: GetLanguage GetLanguage: English GetLanguage displays the name of the language which is used for the UI display text. Copyright© 2006 Roku, LLC Page 91 www.rokulabs.com...
  • Page 92: Setlanguage

    SetLanguage sets the language which is to be used for the UI display text to the language of index n. The index value is with respect to the list output by the ListLanguages command. The parameter can also be a language name as returned by ListLanguages. Copyright© 2006 Roku, LLC Page 92 www.rokulabs.com...
  • Page 93: Listlanguages

    Returns a list of language names Responses: No responses Example: ListLanguages ListLanguages: ListResultSize 5 ListLanguages: Svenska ListLanguages: Français ListLanguages: Espanol ListLanguages: Deutsch ListLanguages: English ListLanguages: ListResultEnd ListLanguage lists all languages supported for use in the UI display. Copyright© 2006 Roku, LLC Page 93 www.rokulabs.com...
  • Page 94: Volume Commands

    Volume Commands These commands affect the unit playback volume: • GetVolume • SetVolume These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 94 www.rokulabs.com...
  • Page 95: Getvolume

    0 and 100 (inclusive). The return value of GetVolume is always 0 when the unit is not connected to a media server, regardless of what the true stored volume setting may be. Copyright© 2006 Roku, LLC Page 95 www.rokulabs.com...
  • Page 96: Setvolume

    SetVolume sets the volume level used for playback. The integer argument n must be a number between 0 and 100, inclusive. The SetVolume command only works if the unit is connected to a media server. Copyright© 2006 Roku, LLC Page 96 www.rokulabs.com...
  • Page 97: Protocol Control Commands

    Protocol Control Commands These commands are “meta” commands which affect the protocol itself: • CancelTransaction • SetListResultType • GetListResult • SetDataResultType These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 97 www.rokulabs.com...
  • Page 98: Canceltransaction

    NOTE: The success of canceling a transacted command is non-deterministic, even if that command has not sent a TransactionComplete result at the moment the RCP client issues a CancelTransaction command. See the “Transacted Commands” section above. Copyright© 2006 Roku, LLC Page 98 www.rokulabs.com...
  • Page 99: Setlistresulttype

    In parital results mode, such commands only return their ListResultSize, the number of results available for accessing using GetListResult. See also the section on “List Results” above. Copyright© 2006 Roku, LLC Page 99 www.rokulabs.com...
  • Page 100: Getlistresult

    GetListResult: ListResultSize 3 GetListResult: Magic Touch GetListResult: Rag Doll GetListResult: Hangman Jury GetListResult: ListResultEnd GetListResult accesses results that were generated while in “partial” result mode. See also the section on “List Results” above. Copyright© 2006 Roku, LLC Page 100 www.rokulabs.com...
  • Page 101: Setdataresulttype

    In binary mode, data results are streamed to the RCP client as an un-modified binary byte stream. In hex mode, data results are streamed to the RCP client as a stream of hex digits. Copyright© 2006 Roku, LLC Page 101 www.rokulabs.com...
  • Page 102: Display Control Commands

    These commands interact with the display subsystem: • SetVisualizer • VisualizerMode • ListVisualizers • GetVizDataVU • GetVizDataFreq • GetVizDataScope • DisplayUpdateEventSubscribe • DisplayUpdateEventUnsubscribe • GetDisplayData These commands are described in the pages that follow. Copyright© 2006 Roku, LLC Page 102 www.rokulabs.com...
  • Page 103: Setvisualizer

    UI generated by the RCP host. The visualizer can be identified either by name or by a zero-based index into the list results of the ListVisualizers command. NOTE: Visualizer names are internationalized and depend on the current language setting. Copyright© 2006 Roku, LLC Page 103 www.rokulabs.com...
  • Page 104: Visualizermode

    VisualizerMode sets the visualizer display mode as full (full-screen visualizer), partial (only to the right-hand side of “Now Playing” information), or off (no visualizer). NOTE: RCP currently does not currently have a way to query the visualizer mode. Copyright© 2006 Roku, LLC Page 104 www.rokulabs.com...
  • Page 105: Listvisualizers

    ISSUE: Unlike most commands that return list results, ListVisualizers returns an additional OK result token after returning the list results. This extra token will likely be removed in a future software release. Copyright© 2006 Roku, LLC This list Page 105...
  • Page 106: Getvizdatavu

    0 – 255. This command only returns data if there is a song currently being played. The data result is returned as a stream of hex digits or as binary data. See SetDataResultType. Copyright© 2006 Roku, LLC Page 106 www.rokulabs.com...
  • Page 107: Getvizdatafreq

    Each frequency value is encoded in a single unsigned byte on the range 0 – 255. This command only returns data if there is a song currently being played. Copyright© 2006 Roku, LLC Page 107 www.rokulabs.com...
  • Page 108: Getvizdatascope

    The data returned is 128 unsigned bytes on the range 0 – 255, each representing a waveform value centered at 128. This command only returns data if there is a song currently being played. Copyright© 2006 Roku, LLC Page 108 www.rokulabs.com...
  • Page 109: Displayupdateeventsubscribe

    DisplayUpdateEvent is sent the very next time the display is changed. NOTE: The RCP host does NOT send an initial DisplayUpdateEvent on subscription, but it instead waits for the display to change first. Copyright© 2006 Roku, LLC Page 109 www.rokulabs.com...
  • Page 110: Getdisplaydata

    4444) and call the ‘displaytype’ shell command. The following table indicates the types and dimensions of each type based on the return value of the displaytype shell command: Copyright© 2006 Roku, LLC Page 110 > No <...
  • Page 111 Within each byte, the most-significant bit represents the pixel nearest the top of the bitmap, and the least-significant bit represents the pixel nearest the bottom of the bitmap. Copyright© 2006 Roku, LLC Type Dimensions Character...
  • Page 112: Commands For Using Presets

    QueueAndPlayOne command. First, we ensure that we’re connected to the Internet Radio music server. Note that we set the server filter to “radio” before invoking the ListServers command, Copyright© 2006 Roku, LLC Page 112 www.rokulabs.com...
  • Page 113: Usage Scenario: Playing A Music File On The Local Network

    This is possible using the RCP session’s working song variable. The RCP client must set up the working song’s url and format fields and then call QueueAndPlayOne. It is recommended to not set the Copyright© 2006 Roku, LLC Page 113 www.rokulabs.com...
  • Page 114 QueueAndPlayOne command is issued. (The Internet Radio server is a good candidate for this purpose.) ClearWorkingSongInfo ClearWorkingSongInfo: OK SetWorkingSongInfo title Cat SetWorkingSongInfo: OK SetWorkingSongInfo url http://172.17.21.10/cat.mp3 SetWorkingSongInfo: OK SetWorkingSongInfo format MP3 SetWorkingSongInfo: OK QueueAndPlayOne working QueueAndPlayOne: OK Copyright© 2006 Roku, LLC Page 114 www.rokulabs.com...
  • Page 115: Listpresets

    ListPresets lists the titles of all user presets on the RCP host. The first 6 results correspond to presets A1 – A6, the next 6 results correspond to presets B1 – B6, and the final 6 results correspond to presets C1 – C6. Copyright© 2006 Roku, LLC Page 115 www.rokulabs.com...
  • Page 116: Getpresetinfo

    “A6”, where the first character is a capitalized letter ‘A’, ‘B’, or ‘C’, and the second character is a digit from 1 to 6. Copyright© 2006 Roku, LLC Page 116 www.rokulabs.com...
  • Page 117: Playpreset

    If the unit is in standby mode when this command is executed, the unit will come out of standby mode, and the RCP client will be notified with the following output: PlayPreset: PowerStateOn Copyright© 2006 Roku, LLC Page 117 www.rokulabs.com...
  • Page 118: Setpreset

    URL in its “playlistURL” field. The preset name will be taken from the “title” field. Support for setting other types of user presets will be available in a future software release. Copyright© 2006 Roku, LLC Page 118 www.rokulabs.com...
  • Page 119: Getworkingsonginfo

    Gets detailed song info on the “working” song. Each RCP session has its own working song variable. The working song may be saved as an internet radio preset with the SetPreset command or queued for playback with the QueueAndPlayOne command. Copyright© 2006 Roku, LLC Page 119 www.rokulabs.com...
  • Page 120: Setworkingsonginfo

    Copyright© 2006 Roku, LLC album genre composer comment songFormat formatDescription playlistURL stationInfoURL stationInfoString location language format bitrate sampleRate bitsPerSample numChannels sizeBytes bigEndian Page 120 www.rokulabs.com...
  • Page 121 When setting the working song’s format field, the following value names are accepted: unknown unsupported AAC_DRM AIFF remotePLS remoteM3U remoteASX remoteRhapsody Copyright© 2006 Roku, LLC WMA_WMDRM WMA_Rhapsody WMA_Lossless LPCM container playlist AMRadio FMRadio microphone Page 121 www.rokulabs.com...
  • Page 122: Clearworkingsong

    ClearWorkingSong Syntax: ClearWorkingSong Classification: Synchronous Result Type: No results Responses: OK – indicates success Example: ClearWorkingSong ClearWorkingSong: OK Clears all fields in the RCP session’s “working” song variable to a known empty state. Copyright© 2006 Roku, LLC Page 122 www.rokulabs.com...
  • Page 123: Socket Commands For Generalized Network Communication

    • SocketReceiveBytes • SocketSendBytes HISTORICAL NOTE: These 4 socket commands were added to RCP in software release 2.6.4. (As of this writing on 7/13/06, the 2.6 software is not available for general release.) Copyright© 2006 Roku, LLC Page 123 www.rokulabs.com...
  • Page 124: Socketstreamopen

    SocketClose command. Failing to do so can result in the eventual socket starvation of the RCP host and will cause network failures in the normal operation of the RCP host as a network music player. Copyright© 2006 Roku, LLC Page 124 www.rokulabs.com...
  • Page 125 16 sockets if they can guarantee that they are the only active RCP client, and should try to use a minimal number of sockets. NOTE: Socket ids can get re-used after the original socket is closed. Copyright© 2006 Roku, LLC Page 125 www.rokulabs.com...
  • Page 126: Socketclose

    To close an open socket, use the SocketClose command. It takes one required parameter which is the socket id. Once a socket is closed, the RCP client can not use that socket id for any subsequent socket commands. Copyright© 2006 Roku, LLC Page 126 www.rokulabs.com...
  • Page 127: Socketreceivebytes

    PLANNED FUNCTIONALITY: In a future software release, it is intended that if the max-bytes parameter is set to zero, then SocketReceiveBytes will return a result that indicates if any data is ready for receiving at that moment. Copyright© 2006 Roku, LLC Page 127 www.rokulabs.com...
  • Page 128: Socketsendbytes

    RCP client sends data to the RCP host during the data input handshaking procedure. The RCP client must always send binary data, and must send the exact number of bytes indicated as a parameter. Copyright© 2006 Roku, LLC Page 128 www.rokulabs.com...
  • Page 129 NOTE: Under consideration is the possibility of making SocketSendBytes become transacted when the local network buffers are not big enough to queue the data to send immediately. This does not happen now, though. Copyright© 2006 Roku, LLC Page 129 www.rokulabs.com...
  • Page 130: Upnp Searching Commands

    UPnP devices on the network. • UPnPSearch • UPnPGetDeviceInfo • UPnPGetDeviceDescription HISTORICAL NOTE: UPnP Searching Commands were added in software version 2.6.3 for WMM, and are not yet available in general release for SoundBridge models. Copyright© 2006 Roku, LLC Page 130 www.rokulabs.com...
  • Page 131: Upnpsearch

    The search term “upnp:rootdevice” will search for all UPnP root devices. The search term “uuid:<theUUID>” will search for a specific UPnP device by UUID. (Replace <theUUID> with the actual UUID of the Copyright© 2006 Roku, LLC Page 131 www.rokulabs.com...
  • Page 132 Also, it is important to note that UPnP search results are currently shared among all RCP sessions on an RCP host, so it is best to use the search results soon after generating them. Copyright© 2006 Roku, LLC Page 132 www.rokulabs.com...
  • Page 133: Upnpgetdeviceinfo

    UPnP device search initiated with UPnPSearch. The RCP client must have already called UPnPSearch prior to executing this command. The parameter is either a zero-based index into the search results or the uuid of the device to get info for. Copyright© 2006 Roku, LLC Page 133 www.rokulabs.com...
  • Page 134: Upnpgetdevicedescription

    UPnPGetDeviceDescription: serviceType[0]: urn:schemas-upnp- org:service:ContentDirectory:1 UPnPGetDeviceDescription: serviceId[0]: urn:upnp-org:serviceId:ContentDirectory UPnPGetDeviceDescription: scpdURL[0]: http://172.17.0.60:9000/ContentDirectory.xml UPnPGetDeviceDescription: controlURL[0]: http://172.17.0.60:9000/ContentDirectory/Control UPnPGetDeviceDescription: eventSubURL[0]: http://172.17.0.60:9000/ContentDirectory/Event UPnPGetDeviceDescription: serviceType[1]: urn:schemas-upnp- org:service:ConnectionManager:1 UPnPGetDeviceDescription: serviceId[1]: urn:upnp- org:serviceId:ConnectionManager UPnPGetDeviceDescription: scpdURL[1]: http://172.17.0.60:9000/ConnectionManager.xml UPnPGetDeviceDescription: controlURL[1]: http://172.17.0.60:9000/ConnectionManager/Control UPnPGetDeviceDescription: eventSubURL[1]: http://172.17.0.60:9000/ConnectionManager/Event UPnPGetDeviceDescription: TransactionComplete Copyright© 2006 Roku, LLC Page 134 www.rokulabs.com...
  • Page 135 RCP client must have already called UPnPSearch prior to executing this command. The parameter is either a zero-based index into the search results or the uuid of the device to get info for. Copyright© 2006 Roku, LLC Page 135 www.rokulabs.com...

This manual is also suitable for:

M2000M500

Table of Contents