MythTV  0.28pre
MythTV Network Protocol

This line is filler that is ignored by Doxygen. More...

This line is filler that is ignored by Doxygen.

The MythTV backend process currently opens sockets for three different types of commands; a custom protocol (by default at port 6543), an HTML server (by default http://127.0.0.1:6544/Status for the status, and other services under that, like < HREF="http://127.0.0.1:6544/Myth/GetMusic?Id=1"> http://127.0.0.1:6544/Myth/GetMusic?Id=1 ), and a UPnP media server (several ports that I cannot remember right now that throw around lots of little bits of XML :-)

The custom protocol is an ASCII encoded length and command string. Command sequences can be easily sent to the backend using telnet. e.g.

telnet 127.0.0.1 6543
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

21      MYTH_PROTO_VERSION 44 23     ANN Playback hostname 1   10   QUERY_LOAD       4DONE

13      ACCEPT[]:[]442       OK34      0.919922[]:[]0.908203[]:[]0.856445Connection closed by foreign host.

The command string is prefixed by 8 characters, containing the length of the forthcoming command. This can be justified in any way (as the above example shows)

The backend responds with a length, and the response to the command. This can be numbers (up to 32 bit, represented in ASCII), a single string, or an ASCII encoding of a QStringList. The 5 byte sequence "[]:[]" separates items in the stringlist. Any 64 bit numbers are represented as a stringlist of two 32bit words (MSB first).

Commands

There are three main types of networking interactions in MythTV; identification commands (which tell the backend about this client), query commands that are sent to the master backend (e.g. listing recordings or viewing guide data), and file streaming commands (when a frontend is watching or editing a recording).

Until a client is identified to the backend (via the ANN commands), any of the query or file streaming commands will silently fail.

The following summarises some of these commands. For a full understanding of all the commands, either read the source code (programs/mythbackend/mainserver.cpp), or look on the Wiki (http://www.mythtv.org/wiki/Category:Myth_Protocol_Commands).

QUERY_LOAD
Returns the Unix load on this backend (three floats - the average over 1, 5 and 15 mins).
QUERY_UPTIME
Returns the number of seconds this backend's host has been running
QUERY_HOSTNAME
Returns the hostname of this backend
QUERY_MEMSTATS
Returns total RAM, free RAM, total VM and free VM (all in MB)
QUERY_TIME_ZONE
Returns time zone ID, current offset, current time
QUERY_FILE_EXISTS filename storagegroup
QUERY_FILE_HASH storagegroup filename
MYTH_PROTO_VERSION version token
Checks that version and token match the backend's version. If it matches, the stringlist of "ACCEPT" "version" is returned. If it does not, "REJECT" "version" is returned, and the socket is closed (for this client)
ANN Playback host wantevents
Register host as a non-frontend client, and prevent shutdown of the socket.
ANN Frontend host wantevents
Register host as a Frontend client, and allow shutdown of the socket when idle
ANN Monitor host wantevents
Register host as a client, and allow shutdown of the socket
ANN SlaveBackend IPaddress
ANN MediaServer IPaddress
ANN FileTransfer stringlist(hostname, filename)
ANN FileTransfer stringlist(hostname, filename) useReadahead retries
DONE
Closes this client's socket.
QUERY_RECORDINGS type
The type parameter can be either "Recording", "Unsorted", "Ascending", or "Descending". Returns programinfo (title, subtitle, description, category, chanid, channum, callsign, channel.name, fileURL, et cetera)
QUERY_RECORDING BASENAME basename
QUERY_RECORDING TIMESLOT chanid starttime
QUERY_FREE_SPACE
Returns the free space on this backend, as a list of hostname, directory, 1, -1, total size, used (both in K and 64bit, so two 32bit numbers each).
QUERY_FREE_SPACE_LIST
Returns the free space on all hosts. (each host as above, except that the directory becomes a URL, and a TotalDiskSpace is appended)
QUERY_FREE_SPACE_SUMMARY
Summarises the free space on this backend, as list of total size, used
QUERY_CHECKFILE checkslaves programinfo