Using the RTCM3 Decoder Dialog

The RTCM3 Decoder Dialog provides a real time summary of decoded RTCM3 message type contents from one or more streams at once.

You can use the RTCM3 Decoder to confirm the presence or the absence of specific message types in the stream, and to examine the detailed data being sent. Typical example uses include:

  • Easily see and observe the SNR or the cycle slip counts for a given SV from a given base station.
  • Determine how often a given message type is sent (if at all).
  • Determine if the selected stream contains any orbital data.

The RTCM3 Decoder can decode various popular RTCM3 messages down to the atomic data element level.  Proprietary messages (and messages in the experiential range) are simply decoded by the framing and counts.   In order to use the decoder, the stream must be parsed for its RTCM3 content (enable the parsing menu item).  And of course such content must also be present in the stream (a common mistake during initial setup). A blank screen typically indicates that no RTCM3 data is present in the selected stream.

Display Modes:

The RTCM3 Decoder Dialog operates in two basic display modes, a “View Message By Stream” sequential mode and a  “View Message by Message Type” mode displaying the last message of that type (see note A).  Screen images of both modes are shown below.

DecodebyStream   DecodebyType

The two Display Modes of the RTCM3 Decoder

The By-Stream mode is useful to see the sequential order in which the messages arrive in a given stream along with their local time stamps.  The By-Type mode provides a convenient way to view and watch the contents of the last message of each given type. The dialog defaults to the By-Type mode at startup.  In both cases a small visual widget along the left side is used to expand the message to see more of its contents.

In the example screen shot above, one can see that a Type 1006 Message has been expanded in both views and the details provide the EFEC coordinates of this base station.  Converting from ECEF to LLH is left as an exercise for those that care to.  On detailed examination, one can see that the Type 1006 Message is being sent every ~5 seconds, it is 24 bytes long, and that this base station (AL50) is part of network using the ID 500.  Taken as a whole, this is a typical state run reference station sending both GPS and GLONASS corrections in the normal way.

Checking the small arrows on the left side expands the message entry to show its decoded contents.

Usage:

Starting a Stream:  The RTCM3 Decoder is enabled from within each stream by right-clicking and selecting the “Show in RTCM3 Viewer” menu item.  The RTCM3 Decoder will then be brought up as the front window displaying the selected stream and any other active streams.

Hint: If this menu item is disabled, simply enable parsing on the stream, which is a menu item right above it.

Hint: If you are unsure of what the data stream may contain, use the Universal Decoder to first examine the data steam itself.  This tool is useful to detect multiple kinds of data which may need filtering before use. While it does not decode to the level of detail that the RTCM3 Decoder provides, it should be an initial step in examining any suspect stream.

On the dialog itself, the display mode is toggled to the other display state by pressing on the two long buttons labeled “View Messages by Stream” and “View Messages sorted by Message Type.”

As new mount points (streams) are added they accumulate as tabbed entries along the top of the display.  Click on the tab desired to bring it to the front.  Click on the Close button of the desired tab to remove a stream.

To pause the display, press the Pause button.  It will toggle to display Continue.  Press it again to resume decoding messages.  Note that the displayed counts for each message type which are displayed do not accumulate during periods of time when the RTCM3 Decoder is paused.

To edit the mount point use the Mount Points… button.  A dialog is presented to allow selecting which mount points to have in each tab.  As a general rule you will only need to consider one or two streams to resolve any problems.  This is normally only used in enterprise deployments when there is a need for checking for common data stream issues.

The number of simultaneous data streams which can be viewed in the RTCM3 Decoder Dialog is limited by the SNIP license level on your machine.  A set of combo boxes in the dialog allows to you select which streams to remove or to view should there be a conflict.

Examples:

Here are three short articles illustrating the the use the RTCM3 Decoder to solve a common operational problem.

  1. Observe the SNR or the cycle slip counts for an SV from a given base station.
  2. Using the RTCM3 Decoder to detect orbital ephemeris messages in a stream.
  3. Using the RTCM3 Decoder to compare RTCM3 type 1013 message contents.

Hint:  People often ask why the RTCM3 Decoder is implemented in a front-most window style blocking other visual elements of SNIP.  This is done on purpose to remind the user to dismiss the dialog when done with it.  The extra effort of decoding multiple streams into this rich graphical display requires processor MIPS that might be better employed servicing your NTRIP Clients a few milliseconds sooner, or running navigation filters to check the real time quality of your data streams.  As a general best practice, it serves no purpose to leave the RTCM3 Decoder running at all times.  If you need to decode the messages at a detailed level after the fact, replay the raw RTCM data log file for that stream through a utility  tool, or convert it to a RINEX file. [For how to set up SNIP for data logging see this article.]

Note A:  The “last message of each type” display mode takes some small liberties to organize all the orbital data from each GNSS type into one section of the display.  Strictly speaking, RTCM SC104 presents each SV’s orbital data in its own message (unlike Type 1004 where observational measurements from all SVs are in the same message).

Was this article helpful?

Related Articles

Help us make this topic better...