Page 1 of 1

Satellite Identification Numbers

Posted: Mon Dec 12, 2016 7:56 am
by jimh
Satellite Identification Numbers

In a global navigation satellite system (GNSS), the signals received from satellites are typically identified in some manner using a numerical index. In the USA's Global Positioning System (GPS), signals are identified by their psuedo-random noise code number that modulates the L1 C/A signal, called the PRN code. The PRN code numbers generally range from 1 to 32 for satellites sending ranging signals.

The assignment of PRN codes in the GPS is controlled by the Air Force--they are the operators of the GPS--and they specify what PRN codes are used for what purposes. See

As the referenced document shows, PRN codes 1 to 63 are reserved for GPS. Codes 64 to 119 are reserved for Ground Based Augmentation Systems (GBAS). Codes 120 to 138 are reserved for Space Based Augmentation Systems (SBAS). Codes 139 to 158 are reserved for SBAS expansion and testing. Codes 159 to 210 are reserved for other GNSS and other applications.

It is common that a GPS or GNSS receiver outputs its data electronically to other devices using NMEA-0183 protocols. The field in the NMEA-0183 protocol sentence (in early revisions) that identifies the satellite is limited to two digits. When satellite identification numbers grew to three digits, some transformations had to be applied to the larger numbers to fit them into a two-digit limit. There were three groups of number ranges, and a system was devised to break up the 00 to 99 range of integers to handle the three groups of numbers:

01 to 32 = GPS PRN
33 to 64 = SBAS PRN
65 to 96 = GLONASS slot number

The conversion from PRN or GLONASS slot number to NMEA field ID appears to be as follows:

NMEA ----> GPS PRN or GLONASS slot number
01 to 32 = PRN 01 to PRN 32; no conversion necessary
33 to 64 = PRN 120 to 151; conversion is NMEA = (PRN - 87)
65 to 96 = GLONASS slot number 1 to 32; conversion is NMEA = (GLONASS slot number + 64)


NMEA number 17 is GPS PRN 17 (NMEA ID = PRN)
NMEA number 51 is SBAS PRN 138 (NMEA ID = PRN - 87 )
NMEA number 67 is GLONASS SLOT NUMBER 3 (NMEA ID = slot number + 64 )

For GLONASS there is no equivalent to a PRN because GLONASS satellites all use the same psuedo-random noise code modulation. The slot number refers to the orbital slot the satellite has been placed.

The newest GNSS receivers available for marine recreational chart plotters are able to receive both GPS and GLONASS. If some strange satellite ID codes are seen on the satellites-in-view screen of these chartplotters, they are probably from GLONASS satellites.

Re: Satellite Identification Numbers

Posted: Tue Dec 20, 2016 10:16 am
by jimh
A prominent manufacturer of GNSS receiver chips, u-Blox, reports in their user support literature that satellite identification numbering schemes through version 4.0 of the NMEA specification only provide for identification of satellites in the GPS, GLONASS, and SBAS constellations. With GALILEO satellites now operational (as of December 15, 2016), it remains to be seen how some GNSS receivers will identify GALILEO satellites in their NMEA data output. u-Blox notes that only in NMEA version 4.1 will GALILEO satellites be identified, although they do refer to an "extended" implementation of version 4.0 that may use three digit numbers in the range 301 to 336. This limitation of the NMEA satellite identification reporting may cause some confusion to users regarding what satellites are being received and used by their GNSS receivers.

It is unfortunate that more information is not available about NMEA satellite identification. The NMEA organization only provides this information as a for-sale publication, and, even if those publications are purchased, the buyer is forbidden to disclose the information they contain. It is only through third-party disclosures, such as the programming guide for devices that utilize NMEA protocols, that any knowledge is provided about the details.

Re: Satellite Identification Numbers

Posted: Thu Dec 22, 2016 11:30 am
by jimh
Here is a screen capture from a Garmin GPS 19x receiver showing satellites in view with identification numbers. The screen capture deserves a bit of annotation. The polar plot shows elevation and azimuth to three categories of satellites:

--several GPS satellites, shown in GREEN
--an SBAS satellite, shown in WHITE (because it has no psuedo-range used in the position solution)
--several GLONASS satellites, shown in BLUE

garminGPS19xPolarPlotAnnotated.jpg (31.94 KiB) Viewed 11970 times

The identification numbers are in NMEA format. This means we have to apply a translation to them to figure out the actual space vehicle identifier. That translation results in the following satellites in view:

GPS: PRN 3, 14, 16, 22, 23, 27, 29, 31, 32
GLONASS: Slot numbers 2, 3, 6, 9

Translating from NMEA to Satellite ID

The method of translating from a NMEA number to the actual satellite identification number, or vice versa, is not particularly obvious. It relies on an unusual mapping of numbers in the range of 00 to 99 in order to fit into the two-digit space allowed by early NMEA protocol descriptions.

For GPS satellites, the NMEA number translates to space vehicle identifier by the PRN code in use: NMEA = PRN code for a satellite, which can only up to 32. In this instance, the satellites in view from the GPS constellation were PRN 3, 14, 16, 22, 23, 27, 29, 31, and 32.

For SBAS satellites, the NMEA number translates to space vehicle identifier by the PRN code in use: NMEA = (PRN code - 87). To convert back to the PRN number from the NMEA number the relationship is PRN = (NMEA + 87). In this instance, the satellite in view is PRN = 133. This is the WAAS signal from INMARSAT-4F3, located at geostationary orbital slot 98.5-degree West longitude. The position shown in the polar plot is not accurate, that is, the view to this satellite is not due North and on the horizon. I believe Garmin represents the satellite in that incorrect position because in the particular case of PRN 133 the satellite is not sending a ranging signal; it only sends the correction signals. This seems to be a quirk of the Garmin software to show the SBAS satellite on the polar plot in an incorrect location when it is not sending a ranging signal.

For GLONASS satellites, the NMEA number translates to space vehicle identifier by the GLONASS slot number: NMEA = (GLONASS slot number + 64). To convert back to the GLONASS slot number the relationship is then GLONASS slot number = (NMEA - 64). The Garmin is showing NMEA number 66, 67, 70, and 73. These convert to GLONASS slot numbers 2, 3, 6, 9.

This odd method of number representation and translation was employed because the original NMEA specification only allowed for two digits to identify the satellite. As I mentioned earlier, the very latest versions of NMEA protocol may have expanded the data field for satellite identification to three digits. This would allow up to 999 satellites to be identified, but translation schemes would still have to be used as the identification numbers could overlap. Another possible improved method is to expand to two fields for satellite identification. The first field would be a single-digit that identifies the constellation. Nine constellations would be possible. The second field would be three digits, to identify the satellite in a particular constellation. Exactly how NMEA protocols will expand and come into use remains to be seen. With the addition of GALILEO to operational status this month, it seems the older NMEA protocol has run out of room.