Skip to content

OnFlight Hub and Hub Plus / Developer Manual

UDP input format

External air data, AGL altitude, and analog input message layouts.

On this page

To send sensor measurements to the Hub, connect your device to the Hub’s Wi-Fi network and broadcast UDP messages on the appropriate port below. Each message contains the measurement and status information reported by your device.

Input ports

Name Port Direction Introduced Purpose
Air data 2001 Input Firmware 1 External air data; later revised for CAS and wind estimates.
AGL altimeter 2002 Input Firmware 1 External AGL altitude.
Analog channel 0 2006 Input Firmware 6 Channel 0 measurement and status.
Analog channel 1 2007 Input Firmware 6 Channel 1 measurement and status.
Analog channel 2 2008 Input Firmware 6 Channel 2 measurement and status.
Analog channel 3 2009 Input Firmware 6 Channel 3 measurement and status.

Send 1–50 messages per second for each input. For analog inputs, send each channel on its own port.

Connection and measurement status

The Hub marks an input disconnected if no message arrives for five seconds. It checks each analog channel separately. Keep transmitting at 1–50 Hz during normal operation.

These indicators describe different conditions:

Indicator Meaning
Connected The Hub has recently received messages from that input. It does not establish measurement validity.
New message The Hub received an input message during the current processing cycle.
New measurement The external sensor’s status flags indicate a fresh sensor sample. A new packet can carry a repeated measurement.
Healthy The external device reports that its sensor is operating correctly.
Available / in range The corresponding value is provided or within the sensor’s usable range, where defined by that message.

A connected sensor can still report a measurement problem. Check health and, where provided, availability and range status before using a value. A value can remain in the log after the sensor disconnects. Use the new-measurement flag to distinguish a new sensor reading from a repeated one.

Encoding

Each message begins with a version byte, followed by the fields in table order. The Type column gives each field’s size:

Notation Meaning
U1, U2, U4 Unsigned integer, 1 / 2 / 4 bytes
I1, I2, I4 Signed integer, 1 / 2 / 4 bytes
C1 One character byte
F4 Four-byte, single-precision floating point
[N] Array of N elements

The Scale column describes how the Hub converts a stored integer to a measurement. To send a measurement, divide it by that scale. For example, send an OAT of 20.5°C as the signed integer 2050, because the scale is 1 / 100. Follow the description for fields with offsets or status bits. These UDP messages have no log-file header, payload length, or Fletcher-16 checksum.

Send multibyte fields in little-endian order, least significant byte first, with no padding between fields. Air-data version 0 messages are 22 bytes and version 1 messages are 28 bytes. Analog values use IEEE-754 single-precision floating point.

Air data

Port 2001 · input · 1-50 Hz

The Hub can receive external static/differential pressure, airspeed, altitude, wind, outside-air-temperature, and angle-of-attack measurements. The Hub forwards indicated and true airspeed through its GDL 90 AHRS output, subject to the connection and availability rules described there.

Compatibility

Air-data message v1 was introduced in Hub firmware 3 and adds CAS and wind estimates. It requires firmware 3 or later and is not compatible with firmware 1 or 2. External-device developers should support both message versions and let users select the version appropriate for their Hub firmware.

The receiver accepts version 0 only when the message is exactly 22 bytes. For version 1 or higher, it requires at least 28 bytes and reads the version 1 fields. It ignores any bytes after those fields. A newer sender must therefore keep the version 1 fields in the same positions and use the same encoding.

Version 0 fields

Type Name Scale Unit Description
U1 version - - Interface version number, 0.
I1 die_temp_c 1 C Module die temperature.
U2 status - - Flags listed in the status table below.
U2 static_pres_pa 2 Pa Static pressure.
U2 diff_pres_pa 1 Pa Differential pressure.
I2 oat_c 1 / 100 C Outside Air Temperature (OAT).
U2 ias_kts 1 / 100 kts Indicated Air Speed (IAS).
U2 tas_kts 1 / 100 kts True Air Speed (TAS).
U2 pres_alt_ft - ft Pressure altitude, biased by +10,000 ft (pres_alt = pres_alt_ft - 10000).
U2 density_alt_ft - ft Density altitude, biased by +10,000 ft (density_alt = density_alt_ft - 10000).
I2 aoa 1 / 100 deg or ratio Angle of attack. The AOA type flag selects degrees or pressure ratio.

Version 1 fields

Type Name Scale Unit Description
U1 version - - Interface version number, 1.
I1 die_temp_c 1 C Module die temperature.
U2 status - - Flags listed in the status table below.
U2 static_pres_pa 2 Pa Static pressure.
U2 diff_pres_pa 1 Pa Differential pressure.
I2 oat_c 1 / 100 C Outside Air Temperature (OAT).
U2 ias_kts 1 / 100 kts Indicated Air Speed (IAS).
U2 tas_kts 1 / 100 kts True Air Speed (TAS).
U2 pres_alt_ft - ft Pressure altitude, biased by +10,000 ft (pres_alt = pres_alt_ft - 10000).
U2 density_alt_ft - ft Density altitude, biased by +10,000 ft (density_alt = density_alt_ft - 10000).
I2 aoa 1 / 100 deg or ratio Angle of attack. The AOA type flag selects degrees or pressure ratio.
U2 cas_kts 1 / 100 kts Calibrated airspeed (CAS): IAS corrected for installation error.
U2 wind_spd_kts 1 / 100 kts Estimated wind speed.
U2 wind_dir_true_deg 1 / 100 deg Wind direction relative to true north (0 - 359).

For both versions, decode aoa as the signed integer divided by 100. Status bit 0x2000 selects degrees when set and a dimensionless pressure ratio when clear. For example, a stored value of 125 represents 1.25 degrees or a ratio of 1.25.

Status flags

A set bit has the meaning below. CAS and wind availability (0x4000, 0x8000) were added in version 1.

Mask Meaning when set
0x0001 Battery warning: charge the device.
0x0002 Battery critically low; the device may power down soon.
0x0004 Module temperature is within limits.
0x0008 OAT data is available from the module.
0x0010 AOA data is available from the module.
0x0020 New static pressure data is available.
0x0040 Static pressure sensor is healthy and communicating at the expected rate.
0x0080 New differential pressure data is available.
0x0100 Differential pressure sensor is healthy and communicating at the expected rate.
0x0200 New OAT data is available.
0x0400 OAT sensor is healthy and communicating at the expected rate.
0x0800 New AOA data is available.
0x1000 AOA sensor is healthy and communicating at the expected rate.
0x2000 AOA data is transmitted in degrees. If not set, it is assumed the data is transmitted as a pressure ratio.
0x4000 KCAS data is available.
0x8000 Wind speed and direction estimation data is available.

External AGL altimeter

Port 2002 · input · 1-50 Hz

The external AGL message provides measured height above ground for analysis of approach, flare, landing, and rollout.

Type Name Scale Unit Description
U1 version - - Message version number, 0.
U1 resv - - Reserved.
U1 status - - Flags listed in the status table below.
I1 die_temp_c 1 C Module die temperature
I2 agl_alt_in 1 in Height above ground level, inches

AGL status

Mask Meaning when set
0x01 Battery warning: charge the device.
0x02 Battery critically low; the device may power down soon.
0x04 Module temperature is within limits.
0x08 New AGL altitude data is available.
0x10 The AGL altitude sensor is healthy and communicating at the expected rate.
0x20 The AGL altitude sensor is within range and the data is valid.

Analog inputs

Ports 2006-2009 · input · 1-50 Hz per channel · introduced in firmware 6

Up to four analog channels are supported. A device may measure one channel or all four. Send each channel independently to its assigned port: channel 0 → 2006, channel 1 → 2007, channel 2 → 2008, channel 3 → 2009.

The table below describes one channel. voltage is the measured input voltage. value is the reading after calibration, stored as a 32-bit floating-point number. Its units depend on the external device.

Type Name Scale Unit Description
U1 version - - Message version number, 0.
U1 status - - Flags listed in the status table below.
I1 die_temp_c 1 C Module die temperature
U2 voltage 1e-4 V Measured voltage
F4 value - - Calibrated value, single precision (32 bit) floating point.

Analog status

Mask Meaning when set
0x01 Battery warning: charge the device.
0x02 Battery critically low; the device may power down soon.
0x04 Module temperature is within limits.
0x08 New analog input data is available.
0x10 The analog input sensor is healthy and communicating at the expected rate.