RTCM SC-104 is a communication protocol for sending differential GPS (DGPS) to a GPS receiver from a secondary source like a radio receiver. The standard is named for the Special Committee 104 of the Radio Technical Commission for Maritime Services (RTCM) that created it. The format does not define the source of the messages and has been used with systems as varied as longwave marine radio, communications satellite broadcasts, and internet distribution.

The first widely used version of the format was released in 1990 and was based on the 30-bit long packet used by the GPS satellites, known as a "frame". Each message started with standardized two-frame header and then one or more data frames following. The frames were designed to be similar to GPS to make integration in GPS receivers easier, but had the disadvantage of having low channel efficiency and limiting the number of messages that could be sent in a given time.

RTCM SC-104

A completely new message format was introduced in 2003 for version 3 of the standard which used a variable-length format to improve efficiency and increase the number of messages that could be sent, which was important for real-time GPS corrections. The new standard also greatly increased the number of possible message types. As part of the standards process, the naming of the standard was changed, and version 3.1 became RTCM Standard 10403.1. , the latest version is 3.3, or 10403.3, with Amendments 1 and 2.

RTCM SC-104

RTCM SC-104 is not the only standard for DGPS; Trimble introduced the Compact Measurement Record (CMRx) format for the same basic purpose and there are several other similar standards used for special purposes. Most of these have fallen into disuse with the introduction of 10403.1.

RTCM SC-104

Description

Version 1

The original SC-104 work was published as a preliminary standard in 1985, but never widely adopted. It was replaced by Version 2, which is very similar.

Version 2

RTCM Version 2 was released in January 1990 and last updated to 2.3 released in August 2001.

RTCM Version 2 is based on a set of fixed-length 30-bit "words" which are strung together into longer messages known as "frames". All words end with a 6-bit "parity" code using the same algorithm as the GPS signals, based on Hamming codes. This leaves 24 bits available for data. The format was deliberately modelled on that of the actual GPS messages, in order to maintain familiarity. Data within the 24-bit payload is extracted into individual data and then encoded for local transmission as strings of 6-bits of data with a leading 1 start bit and trailing 0 stop bit to form a single 8-bit value suitable for use on ASCII-based serial links and similar. The data is encoded in most significant bit format, as opposed to ASCII's LSB, so some decoding is required to return it to its original format after reception.

All of the frames start with a standard two-word header. The first word starts with a magic number, the 8-bit "preamble" which always contains 01100110. The next six bits encode the message type, 0 to 64. This is followed by a 10-bit station ID. The second header word begins with a 13-bit version of the z-count, the unit of time in GPS, a 3-bit sequence number to ensure frames can be sorted if they arrive out-of-order, a five-bit length that counts the total number of words in the frame, including the header, and a three-bit "station health" code, where 111 indicates the station is not working properly.

A total of 64 message types were allowed, although a number of these were deliberately left unused for future expansion, or formats that were rarely used and later abandoned. The original standard includes six message formats, 1 for correction data, 2 for updating previous corrections, 3 that provided the location of the measuring station, 6 as a null message to fill unused slots, 16 which included an arbitrary 90 ASCII characters for sending test messages, and 59, for proprietary messages used by the equipment vendors.

Type 1 was a complete DPGS correction set that would be broadcast by a ground station for all of the satellites in its view. The data for a single satellite's correction required 40-bits, so to efficiently encode the data into 24 bits of payload, the corrections for three satellites were folded into five words. A single satellite's correction started with the 1-bit "scale factor" (S) and 2-bit "user differential range error" (UDRE), then the satellite's 5-bit identifier. The correction itself was in two parts, the 16-bit "pseudorange correction" (PRC) and 8-bit "range-rate correction" (RRC), and finally an 8-bit "issue of data" number.