Skip to content

b-spatz/gdl90

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

114 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gdl90

A minimal GDL90 (over WiFi) tester using selected AvareX code (thanks ZK) as a base, with additional decoding and instrumentation. I use on Android (mostly) as a simple, portable, stand-alone app to assert GDL90 over WiFi reception, message types, help out Avare* forum users, diagnose my non-compliant new Dynon HDX   :-(   , etc.

Installing

You will have to "side-load" the (latest) .apk from this page (0.0.10 is current). If that's not something you understand or are comfortable with, then I can't help you with additional support. This information from Avare* may help.

Choosing the right Android ABI File

To minimize file sizes (~13-17 MB), there are three separate versions of the app-*.apk files here. Choose the version corresponding to your Android device's Application Binary Interface (ABI). The primary ABIs are arm64-v8a (64-bit, most modern devices), armeabi-v7a (32-bit, common older devices), and x86_64 (emulators and some Intel-based devices).

Usage Hints

The "refresh" button at the bottom right flushes the console queue to control scrolling, etc. That console window is scrollable, but doesn't (yet?) update until you click the refresh button (do it often).

The example screenshot below (against stratux v1.6r1-eu027) shows various GDL90 message counts at the top, plus more per-message detail in the Console by port (4000 in this case). Selected values explained:

  • Heartbeat shows 36 messages of standard GDL90 Heartbeat and 33 of the stratux-identifying Heartbeat plus some bit decoding)
  • Ownship shows 33 messages, decoded as N342ME/mode-S plus lat/long and integrity bit decoding
  • 90 Traffic messages, latest target is SWA2276 with pressure altitude
  • Unknown shows 33 messages of type 0x53 which is a non-standard GDL90 message the tester is currently not decoding, such as:
  • Counts by port: AvareX 4000, 43211, 49002, 5557 (as of 0.55) plus 8384 for proprietary Dynon msgs (in-progress beta adds counts by Dynon msg type and some detail if unfiltered)

GDL90 Decoding

Reflecting the base AvareX code we listen on ports 4000, 43211, 49002, 5557 (storage.dart).
AvareX message_factory.dart defines the known message types and processing, but the tester will decode the stratux Heartbeat and report any message type, including "unknown" types. AvareX summary:

  Hex  Message                  Process?
  0x00 heartBeat                no
  0xCC stratux Heartbeat        no, but PR submitted for PFD roll-orientation reversal
  0x07 uplink                   yes
  0x0A ownShip                  yes
  0x0B ownShipGeometricAltitude yes
  0x14 trafficReport            yes
  0x1E basicReport              no   [but reported by this tester]
  0x1F longReport               no   [but reported by this tester]
  0x4C ahrsReport               yes
  0x7A deviceReport             no   [but reported by this tester]

stratux and GPS fix scenarios

stratux encodes the GPS fix state but only in the stratux-specific HeartBeat (0xCC) message in byte1 bit 1 (along with AHRS enabled bit 0) -- but NOT in the GDL90 Heartbeat message status byte 1 bit 7 per the spec! (see p. 10). If the stratux has no GPS fix, only the 0xCC msg will reflect this, along with no Ownship msg with position every second (1 Hz).

The GDL90 spec allows a GPS fix of 0,0 to be sent (see section 3.4 p. 16) and this along with NIC=0 is supposed to signify an invalid fix, although at least AvareX ignores this scenario and assumes 0,0 is valid without checking NIC or HeartBeats(s), etc. stratux is also non-compliant and does not use the 0x00 msg bit and just stops sending Ownship (spec says send ownship but 0,0 and NIC=0 means invalid). Either I misunderstand the spec or many hardware/software implementors are out of spec.

Dynon HDX

Using my tester I confirmed that my new (March 2025) Dynon Skyview HDX is not GDL90-compliant: the HDX sends no Heartbeat or Ownship messages! These issues have been reported by me and others and I've discussed with Dynon over tickets and in-person, but no traction yet for Dynon to shore up basic GDL90 standard compliance. Frankly, I'm surprised (and disappointed) that Dynon with their reputation isn't GDL90 standard compliant.

The screenshot below from 2026-01-30 shows this, including that HDX includes my ship (N342ME) in the Traffic report rather than filtering from received (TIS-B?) and just emitting as a proper Ownship for N342ME. The HDX should know my tail number as integrated avionics, whereas the stratux requiries configuring your tail/ICAO, or ideally, at the EFB client (consider a CFI moving their stratux between aircraft: better to configure from a menu/list at the EFB, but some people argue this point).

Dynon Proprietary Protocol Decoding

Warning

As of 0.0.10 there is Dynon proprietary protocol (port 8384) detection and counting of all message types. If the "filter" icon (bottom right, next to refresh) is removed (default: enabled, detail suppressed), then decoded message detail is provided in the console. WARNING -- there can be a LOT due to ADAHRS and other high-frequency messages, so be careful with removing the default filtering. Future use (e.g. flight plan push/pull, GDL90 AHRS support) is possible.

Sample Console Output

You can cut&paste console outout for exporting data from the tester. No, no output saved to a file (yet, maybe ever).
Here is a sample which includes Dynon protocol detail.

Platform

I wanted a stand-alone tool for Android (my use case, and occasionally Windows), so I decided to use the multi-platform Flutter framework (despite the extra multi-platform overhead) since that's what AvareX uses and I was already developing some code contributions for AvareX (Nexrad/layer opacity/sliders, TFRs fix after FAA change, bug fixes, etc.). Perhaps this instrumentation/diagnostic code will work back into AvareX at some point, if ZK allows it...

References

To-Do

  • Done: Add timeout for Ownship if older than, say, 5 sec (should be 1/sec)
  • Note any GPS fix bits when 0/false (or NIC/NACp are noteworthy)
  • Collect exemplary iLevil screenshot from Oshkosh 2025 (looks compliant, yay iLevil)

About

Basic GDL90 tester

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors