TECHNICAL NOTES · AVIONICS

Decoding an ARINC 429 BNR word, bit by bit

ARINC 429 is decades old and still flies on a great many aircraft. Its 32-bit word is simple — until a decoder reads the label backwards or turns a small negative altitude into 260 894 ft. Here is one word, built and taken apart by hand.

The word

BITSFIELDNOTE
1–8Labeloctal; sent most-significant bit first
9–10SDIsource/destination identifier, or data
11–28DataBNR magnitude, MSB at bit 28; unused low bits zero
29SignBNR two's-complement sign
30–31SSMsign/status matrix
32Parityodd parity over all 32 bits

A word is sent bit 1 first. The data field goes least-significant bit first, but the label goes most-significant bit first — so if you hold the word as a 32-bit integer with bit 1 as the least significant bit, the label appears bit-reversed. That is the single most common decoding bug. The bus runs at 100 kbit/s (high speed) or 12–14.5 kbit/s (low speed), with at least four bit-times of null between words.

BNR scaling

A BNR parameter is defined by its range and its number of significant bits, and its resolution is range ÷ 2significant bits. Take an altitude parameter with a range of 131 072 ft and 17 significant bits: the resolution is 1 ft, bit 28 weighs 65 536 ft, the data occupies bits 28 down to 12, and bit 11 is zero padding. With the sign, bits 29–12 hold an 18-bit two's-complement number of feet. The real label, range and resolution of every parameter come from your ICD or equipment specification — not from this note.

Encoding 35 000 ft

  • Label 203 (octal) is 10 000 011 in binary. Sent MSB first, bit 1 carries the leading 1, so bits 8…1 read 11000001.
  • SDI = 00.
  • Data: 35 000 = 01000100010111000 in bits 28–12; bit 11 = 0; sign bit 29 = 0.
  • SSM = 11, normal operation.
  • Parity: the other 31 bits hold 11 ones — already odd — so bit 32 = 0.

32 · 31–30 · 29 · 28–12 · 11 · 10–9 · 8–1
0 · 11 · 0 · 01000100010111000 · 0 · 00 · 11000001 = 0x6445C0C1

Encoding −1 250 ft

Negative values are two's complement across sign and data: −1 250 in 18 bits is 111111101100011110, so sign bit 29 = 1 and bits 28–12 = 11111101100011110. With the same label, SDI and SSM, the other 31 bits hold 18 ones — even — so parity bit 32 = 1:

1 · 11 · 1 · 11111101100011110 · 0 · 00 · 11000001 = 0xFFD8F0C1

Read bits 29–12 as unsigned and the same word decodes to 260 894 ft — the classic symptom of a missing sign extension.

Decoding, in order

  1. Check parity first, and discard words with even parity.
  2. Reverse bits 1–8 to recover the label, then route by label — and by SDI, where it is used.
  3. Check the SSM before using the value. For BNR: 11 normal operation, 10 functional test, 01 no computed data, 00 failure warning.
  4. Extract bits 29–12 for this parameter, sign-extend, and multiply by the resolution.

Then range-check against the ICD: a word can be perfectly well-formed and still physically impossible.

Where AETHER fits

DYNAMIS works through avionics interfaces like this one — ICD fields, scaling, status handling — with the bit arithmetic executed as code rather than estimated, so a word like 0xFFD8F0C1 can be built, decoded and checked against its definition in one traceable step.

Published · 9 October 2026 · All technical notes