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. |