The 1090 Megahertz Riddle (second edition)

A Guide to Decoding Mode S and ADS-B Signals
By: Junzi Sun (junzis.com)

Mode S meteorological services

In the current Mode S design, two message formats are used for aircraft to communicate meteorological conditions. These messages are meteorological routine air report (MRAR) and meteorological hazard report (MHR). In this chapter, we focus on explaining the information contained in these two types of messages.

Meteorological routine air report (BDS 4,4)

In MRAR messages, information on wind, air temperature, pressure, and humidity is transmitted. The structure of the message is shown in Table 1.1.

Meteorological routine air report (BDS 4,4), MB field
FIELD MSG MB BITS
Figure of merit / source 33-36 1-4 4
Status (for wind) 37 5 1
Wind speed 38-46 6-14 9
  Range: [0, 511] knots
  LSB: 1 knots
Wind direction 47-55 15-23 9
  Range: [0, 360] degrees
  LSB: 180/256 degrees
Sign (for temperature) 56 24 1
Static air temperature 57-66 25-34 10
  Range: [-128, +128] \(^\circ\)C
  LSB: 0.25 \(^\circ\)C
Status (for pressure) 67 35 1
Average static pressure 68-78 36-46 11
  Range: [0, 2048] hPa
  LSB: 1 hPa
Status (for turbulence) 79 47 1
Turbulence 80-81 48-49 2
Status (for humidity) 82 50 1
Humidity 83-88 51-56 6
  Range: [0%, 100%]
  LSB: 100/64 %

The first field of the message defined the figure of merit (FOM) / source of the information. The values indicate the following:

  • 0: Invalid

  • 1: Inertial system (INS)

  • 2: Global Navigation Satellite System (GNSS)

  • 3: Distance measuring equipment-based navigation (DME/DME)

  • 4: Very High Frequency omnidirectional range / distance measuring equipment-based navigation (VOR/DME)

  • 5-15: Reserved

For static air temperature, the encoded value can be negative. Hence, two’s complement coding (see section [sec:two_complement]) is used for decoding. The actual maximum range of temperature is from -80 \(^\circ\)C to +60 \(^\circ\)C.

It is also worth pointing out a discrepancy in the design. The temperature is encoded using 10 bits, where the least significant bit value should have been 0.125\(^\circ\). However, according to the official document , the LSB value is 0.25\(^\circ\). ICAO has planned to update this to 0.125\(^\circ\) in the future. Most current implementations still use 0.25\(^\circ\).

In Figure 1.1, the decoding of an MRAR example message is shown.

Try it out Using pyModeS, we can decode information of BDS 4,4 messages as:

import pyModeS as pms

msg = "A0001692185BD5CF400000DFC696"

wind = pms.commb.wind44(msg)
temperature = pms.commb.temp44(msg)
pressure = pms.commb.p44(msg)
humidity = pms.commb.hum44(msg)

Meteorological hazard report (BDS 4,5)

In MHR messages, different hazard condition levels are reported, such as turbulence, wind shear, microburst, icing, and wake vortex. It also includes temperature, pressure, and radio height. In Table 1.2, the structure of the MHR message is shown.

It is worth noting that during real flights, MHR messages are much rarer than MARA messages. Whenever they are available, most of the messages only contain temperature information.

Meteorological harzard report (BDS 4,5), MB field
FIELD MSG MB BITS
Status (for turbulence) 33 1 1
Turbulence 34-35 2-3 2
Status (for wind shear) 36 4 1
Wind shear 37-38 5-6 2
Status (for microburst) 39 7 1
Microburst 40-41 8-9 2
Status (for icing) 42 10 1
Icing 43-44 11-12 2
Status (for wake vortex) 45 13 1
Wake vortex 46-47 14-15 2
Status (for temperature) 48 16 1
Sign (for temperature) 49 17 1
Static air temperature 50-58 18-26 9
  Range: [-128, +128] \(^\circ\)C
  LSB: 0.25 \(^\circ\)C
Status (for pressure) 59 27 1
Average static pressure 60-70 28-38 11
  Range: [0, 2048] hPa
  LSB: 1 hPa
Status (for height) 71 39 1
Radio height 72-83 40-51 12
  Range: [0, 65 528] ft
  LSB: 16 ft
Reserved 84-88 52-56 5

The levels for turbulence, wind shear, microburst, icing, and wake vortex are encoded as follows:

  • 00: NIL

  • 01: LIGHT

  • 10: MODERATE

  • 11: SEVERE

As is the case for MRAR messages, the actual range of the temperature is from -80 \(^\circ\)C to +60 \(^\circ\)C, and it is encoded using the two’s complement coding.

In Figure 1.2, the decoding of an example message is shown. Note that in this example, only the air temperature information is included. None of the hazard conditions is reported.

Note The availability of BDS 4,4 messages is quite low. Very few aircraft’s transponders have these capabilities enabled. BDS 4,5 message is even rarer. When a message is transmitted, it is very common that information in many fields are not available.

Site maintained by @junzis. Build with LaTeX, Pandoc, and GitHub