UNAVCO Logo
 
 
BINEX Record 0x01: GNSS Navigation Information

Binary Exchange format for GPS/GNSS
Data/Metadata/Ephemerides/Orbits/Solutions


Index:
BINEX homepage
current BINEX Record 0x01 outline


Contact: UNAVCO data guru
Last modified: 10 Nov 2011





Record 0x01 Outline:
Each record 0x01 = 1 holds GNSS navigation information for a specific satellite. The format depends on the specific subrecord value. Depending on the subrecord, the navigaition information may correspond to the binary broadcast messeage, a decoded version of the message analogous to what would appear in a RINEX NAV file, or other orbit formats such as SP3, and so on.

Once the BINEX file or stream has been parsed and a record ID = 0x01 has been identified, the user should consult this page for decoding information of the record 0x01 message. For all 0x01 record messages, the first 1-4 bytes of the message should be examined to determine the subrecord ID. The C/C++ function read_ubnxi() can be used to do this. Once the subrecord ID has been determined, consult the appropriate subrecord description.




Record 0x01 Subrecord 0x00: 0x01-00 — Coded GNSS Ephemeris
The first byte of the 0x01-00 message will be the byte 0x00, denoting the subrecord 0x00. Subrecord 0x00 requires that the satellite number being stored is in the range of 1-32.

Immediately following the subrecord 0x01 byte will be a byte specifying the satellite ID. (See details on decoding.) The interpretation of the rest of the record message depends on which satellite system is specified in the satellite ID byte.

Following the SVid1 byte, the contents depend on the specific satellite system:

  • for GPS:
    • uint1, containing:
      • bit 0: information from subframe 4, page 25 available = uint1 & 0x01; if bit 0 = 1 and this indicates that bits 1-4 have the assigned meaning defined below; if the information is not available, bit 0 = 0 and the meaning of bits 1-4 are currently undefined
      • bits 1-3: 3-bit "SV configuration" (whether SV is Block I or II, from subframe 4, page 25) = uint1 >> 1 & 0x03
      • bit 4: 1-bit anti-spoof flag/y-code on (from subframe 4, page 25) = uint1 >> 4 & 0x01
      • bit 5: ToW in the next sint4 is valid = uint1 >> 5 & 0x01; if bit 5 = 1, the ToW is valid; if bit 5 = 0, the ToW is unknown
      • (upper 2 bits, 6-7, of this uint1 are reserved)
    • sint4 = ToW (time of week/time of message), in seconds, if it is known (also, bit 5 in the uint1 above should be set equal to 1); otherwise, set this sint4 equal to 0 (also, bit 5 in the uint1 above should be set equal to 0)
    • 72 bytes: The rest of the message for GPS will be the 72 bytes from GPS ephemeris subframes 1, 2, and 3, words 3-10, minus the 6 parity bits per each word, representing the encoded GPS navigation message, ordered in the same way as the subframes 1-3 and words 3-10. The MSB (bit 7) of the first byte of the rest of the message of subrecord 0x00 therefore corresponds to "Bit 61" of subframe 1 (the MSB of the 10-bit GPS week number), and so on. See the ICD-GPS-200 for details on decoding. No byte-swapping occurs in these 72 bytes of 0x01-00, regardless of the endian-ness of the synchronization/endian byte fo the record.
  • for non-GPS constellations: under consideration, but details of broadcast bits for these navigation messages must be completely understood first




Record 0x01 Subrecord 0x01: 0x01-01 — Decoded GPS Ephemeris
The first byte of the 0x01-01 message will be the byte 0x01, denoting the subrecord 0x01. Note: Subrecord 0x01 was originally hoped to be extensible to non-GPS navigation messages, but now it is exclusively meant for only GPS, with PRN values in the range of 1-32. For the NAVSTAR GPS navigation message, the ToE value must be equal to the ToC value (which has been the case for all valid GPS navigation messages for years).

  • uint1 = subrecord ID, 0x01
  • uint1 = PRN - 1 (originally, this byte was meant to be a full satellite ID bytes — see details on decoding — but as 0x01-01 is restricted to be GPS-only and has ever only been used for the GPS constellation, which has a satellite system ID of 0, one can evalute this byte directly as PRN - 1)
  • uint2 = GPS week (whole weeks completed since 6.0 Jan 1980) of ToC = ToE (i.e. same as in the RINEX specification)
  • sint4 = ToW, time of week/time of message (seconds into GPS week), adjusted by ±604800 seconds to refer to the specified GPS week, if necessary (i.e. same as in the RINEX specification)
  • sint4 = ToC, time of clock = ToE, time of ephemeris (seconds into GPS week)
  • real4 = TGD (seconds)
  • sint4 = IODC, Issue of Data/Clock
  • real4 = af2, SV clock drift rate (second/second^2)
  • real4 = af1, SV clock drift (second/second)
  • real4 = af0, SV clock bias (seconds)
  • sint4 = IODE, Issue of Data/Ephemeris
  • real4 = delta n (semicircles/second; multiply by exactly 3.1415926535898 to obtain radians/second)
  • real8 = M0, mean anomaly at reference time (radians)
  • real8 = e, eccentricity
  • real8 = sqrt a, square root of semi-major axis (meters^0.5)
  • real4 = Cic pertubation harmonic (radians)
  • real4 = Crc pertubation harmonic (meters)
  • real4 = Cis pertubation harmonic (radians)
  • real4 = Crs pertubation harmonic (meters)
  • real4 = Cuc pertubation harmonic (radians)
  • real4 = Cus pertubation harmonic (radians)
  • real8 = OMEGA0, lon. of asc. node (radians)
  • real8 = omega, arg. of perigee (radians)
  • real8 = i0, inclination at reference time (radians)
  • real4 = OMEGA dot, rate of right asc. (semicircles/second; multiply by exactly 3.1415926535898 to obtain radians/second)
  • real4 = i dot, rate of inclination (semicircles/second; multiply by exactly 3.1415926535898 to obtain radians/second)
  • real4 = nominal URA (user range accuracy) value (decimeters; multiply by 0.1 to obtain meters), rounded to the nearest decimeter (see ICD-GPS-200 20.3.3.3.1.3); if the URA index X = 15, then a value of 327670 decimeters should be stored for the nominal URA value, consistent with the convention used in RINEX
  • uint2 to hold the SV health coded value:
    • 6-bit SV health (coded) = bits 0-5 = uint2 & 0x003f
    • (upper 10 bits, 6-15, of this uint2 are reserved)
  • uint2 to hold three remaining pieces derived from the GPS navigation message in subframes 1-3:
    • curve fit interval, hours = bits 0-7 = uint2 & 0x00ff (value to be derived from the 1-bit fit interval flag and the value of the IODC; see ICD-GPS-200 Table 20-XII for details)
    • 1-bit L2 P data flag = bit 8 = uint2 >> 8 & 0x01, if available (if not available, always set bit 8 = 0)
    • 2-bit codes on L2 channel = bits 9-10 = uint2 >> 9 & 0x03, if available (if not available, always set bits 9,10 = 0)
    • (upper 5 bits, 11-15, of this uint2 are reserved)




Record 0x01 Subrecord 0x02: 0x01-02 — Decoded GLONASS — FDMA Ephemeris
The first byte of the 0x01-02 message will be the byte 0x02, denoting the subrecord 0x02. This record is designed to hold the decoded GLONASS ephemeris information for SVs broadcasting in FDMA. The definition of the fields in 0x01-02 are identical to those in RINEX 2.10 GLONASS NAVIGATION MESSAGE FILE — DATA RECORD DESCRIPTION.

  • uint1 = subrecord ID, 0x02
  • uint1 = GLONASS slot # ID
  • uint2 = GLONASS day number
  • uint4 = time of day (seconds)
  • real8 = SV clock bias (-TauN, seconds)
  • real8 = SV relative frequency bias (+GammaN)
  • uint4 = message frame time (tk, seconds)
  • real8 = SV X position (km)
  • real8 = SV X velocity (km/second)
  • real8 = SV X acceleration (km/second/second)
  • real8 = SV Y position (km)
  • real8 = SV Y velocity (km/second)
  • real8 = SV Y acceleration (km/second/second)
  • real8 = SV Z position (km)
  • real8 = SV Z velocity (km/second)
  • real8 = SV Z acceleration (km/second/second)
  • uint1 = SV health/operability defined as follows:
    • bit 0: MSB from Bn word (bit 0 = 0 = "health" in accordance with ephemeris data)
    • bit 1: (optional *) Cn from almanac (bit 1 = 1 = "health" in accordance with almanac data)
    • bit 2: (optional *) Cn available (bit 2 = 1 = "Cn almanac bit available and being used in bit 1")
    • bits 3-7: reserved **
    * Using bits 1 and 2 is highly recommended given that in the ICD-GLONASS (e.g. Edition 5.1, 2008), section 5.3, Table 5.1, states that the operability of the SV depends on both Bn and Cn, and that operability requires a Bn = 0 and Cn = 1, i.e. a Bn = 0 is insufficient.
    ** The ln bit in GLONASS-M navigation data is being considered, if necessary.
  • sint1 = frequency channel number for this slot # (as of 2005: -7, -6, ..., 5, 6)
  • uint1 = age of operation (days)
  • uint1 = leap seconds since 6.0 Jan 1980
  • real8 = A0, difference between GLONASS time and GPS time (seconds)
  • real8 = L1L2Delta, estimate of L1/L2 group delay




Record 0x01 Subrecord 0x03: 0x01-03 — Decoded SBAS Ephemeris
The first byte of the 0x01-03 message will be the byte 0x03, denoting the subrecord 0x03. This record is designed to hold the decoded SBAS ephemeris information. The definition of the fields in 0x01-03 are identical to those in RINEX 2.11 GEOSTATIONARY NAVIGATION MESSAGE FILE — DATA RECORD DESCRIPTION.

  • uint1 = subrecord ID, 0x03
  • uint1 = SBAS PRN (full ID, 120-138)
  • uint2 = GPS week (whole weeks completed since 6.0 Jan 1980)
  • uint4 = ToW, time of week/time of message (seconds)
  • real8 = SV clock bias (seconds)
  • real4 = transmission time of message (seconds)
  • uint4 = message frame time (seconds)
  • real8 = SV X position (km)
  • real8 = SV X velocity (km/second)
  • real8 = SV X acceleration (km/second/second)
  • real8 = SV Y position (km)
  • real8 = SV Y velocity (km/second)
  • real8 = SV Y acceleration (km/second/second)
  • real8 = SV Z position (km)
  • real8 = SV Z velocity (km/second)
  • real8 = SV Z acceleration (km/second/second)
  • uint1 = health bits (all bits zero = OK)
  • uint1 = accuracy code
  • uint1 = IODN, Issue of Data Navigation (DO229, first 8 bits after Message if MT9)




Record 0x01 Subrecord 0x04: 0x01-04 — Decoded Galileo Ephemeris (proposed)
The first byte of the 0x01-04 message will be the byte 0x04, denoting the subrecord 0x04. This record is designed to hold the decoded Galileo ephemeris information. The definition of the fields in 0x01-04 are identical to those in RINEX 3.00/3.01 GALILEO NAVIGATION MESSAGE FILE — DATA RECORD DESCRIPTION. Note: this record is provisional until further notice.

  • uint1 = subrecord ID, 0x04
  • uint1 = PRN - 1
  • uint2 = Galileo week (whole weeks completed since 6.0 Jan 1980, so therefore aligned to and identical to the GPS week value)
  • sint4 = ToW, transmission time of message (seconds in week, derived from WN and ToW of page type 1)
  • sint4 = ToE, time of ephemeris (seconds of week)
  • real4 = BGD E5a/E1 (seconds)
  • real4 = BGD E5b/E1 (seconds)
  • sint4 = IODnav, Issue of Data of the nav batch
  • real4 = af2, SV clock drift rate (second/second^2)
  • real4 = af1, SV clock drift (second/second)
  • real4 = af0, SV clock bias (seconds)
  • real4 = delta n (semicircles/second)
  • real8 = M0, mean anomaly at reference time (radians)
  • real8 = e, eccentricity
  • real8 = sqrt a, square root of semi-major axis (meters^0.5)
  • real4 = Cic pertubation harmonic (radians)
  • real4 = Crc pertubation harmonic (meters)
  • real4 = Cis pertubation harmonic (radians)
  • real4 = Crs pertubation harmonic (meters)
  • real4 = Cuc pertubation harmonic (radians)
  • real4 = Cus pertubation harmonic (radians)
  • real8 = OMEGA0, lon. of asc. node (radians)
  • real8 = omega, arg. of perigee (radians)
  • real8 = i0, inclination at reference time (radians)
  • real4 = OMEGA dot, rate of right asc. (semicircles/second)
  • real4 = i dot, rate of inclination (semicircles/second)
  • real4 = SISA, Signal in space accuracy (decimeters; multiply by 0.1 to obtain meters), rounded to the nearest decimeter
  • uint2 = SV health:
    • bit 0: E1B DVS
    • bit 1,2: E1B HS
    • bit 3: E5a DVS
    • bit 4,5: E5a HS
    • bit 6: E5b DVS
    • bit 7,8: E5b HS
  • uint2 = data sources:
    • bit 0: I/NAV E1-B
    • bit 1: F/NAV E5a-I
    • bit 2: I/NAV E5b-I
    • bit 8: af0-af2, ToC are for E5a,E1
    • bit 9: af0-af2, ToC are for E5b,E1




Record 0x01 Subrecord 0x05: 0x01-05 — Decoded Compass Ephemeris (reserved)
The first byte of the 0x01-05 message will be the byte 0x05, denoting the subrecord 0x05. Note: This record is reserved to hold the decoded Compass ephemeris information once details become available.




Record 0x01 Subrecord 0x06: 0x01-06 — Decoded QZSS Ephemeris
The first byte of the 0x01-06 message will be the byte 0x06, denoting the subrecord 0x06. This record is designed to hold the decoded QZSS ephemeris information. Note: this record is provisional until further notice.

  • uint1 = subrecord ID, 0x06
  • uint1 = PRN
  • uint2 = GPS week (whole weeks completed since 6.0 Jan 1980)
  • sint4 = ToW, transmission time of week (seconds in week)
  • sint4 = ToC, time of clock = ToE, time of ephemeris (seconds)
  • real4 = TGD (seconds)
  • sint4 = IODC, Issue of Data/Clock
  • real4 = af2, SV clock drift rate (second/second^2)
  • real4 = af1, SV clock drift (second/second)
  • real4 = af0, SV clock bias (seconds)
  • sint4 = IODE, Issue of Data/Ephemeris
  • real4 = delta n (semicircles/second)
  • real8 = M0, mean anomaly at reference time (radians)
  • real8 = e, eccentricity
  • real8 = sqrt a, square root of semi-major axis (meters^0.5)
  • real4 = Cic pertubation harmonic (radians)
  • real4 = Crc pertubation harmonic (meters)
  • real4 = Cis pertubation harmonic (radians)
  • real4 = Crs pertubation harmonic (meters)
  • real4 = Cuc pertubation harmonic (radians)
  • real4 = Cus pertubation harmonic (radians)
  • real8 = OMEGA0, lon. of asc. node (radians)
  • real8 = omega, arg. of perigee (radians)
  • real8 = i0, inclination at reference time (radians)
  • real4 = OMEGA dot, rate of right asc. (semicircles/second)
  • real4 = i dot, rate of inclination (semicircles/second)
  • real4 = SV accuracy (decimeters; multiply by 0.1 to obtain meters), rounded to the nearest decimeter
  • uint2 = SV health, bits 17-22 w 3 sf 1
  • uint2 to hold three remaining pieces derived from the QZSS navigation message:
    • curve fit interval (bit 17 w 10 of sf 2), bit 0 = uint2 & 0x0001
    • 2-bit codes on L2 channel = bits 9-10 = uint2 >> 9 & 0x03, if available (if not available, always set bits 9,10 = 0)
    • (bit 8 and upper 5 bits, 11-15, of this uint2 are reserved)




The BINEX record 0x01 outline for each subrecord on this page should be intepreted as complete and finalized. Since other subrecords may be specified in the future, all other subrecord IDs not explicitly specified on this page are currently reserved.

Last modified Wednesday, 16-Nov-2011 16:02:29 UTC