diff --git a/protocols/airspy_adsb.md b/protocols/airspy_adsb.md new file mode 100644 index 0000000..b9f5d33 --- /dev/null +++ b/protocols/airspy_adsb.md @@ -0,0 +1,43 @@ +# Airspy protocol + +## Ports + +* ??: server -> client feed + +## Format + +Textual format, similar to [raw](raw.md), but extended with MLAT and signal +level data. Unlike raw format, lines are terminated with `0x0d 0x0a` (`\r\n`). + + +## Frame structure +* `0x2a` (`*`) +* 7 or 14 byte frame (see [raw](raw.md)) +* `0x3b` (`;`) +* 4 byte MLAT timestamp (see below) +* `0x3b` (`;`) +* 1 byte MLAT precision (see below) +* `0x3b` (`;`) +* 2 byte big-endian RSSI +* `0x3b 0x0d 0x0a` (`;\r\n`) + + +## MLAT timestamp +The MLAT timestamp included in each frame is the big-endian value of a counter +at the time of packet reception. The counter runs at a rate determined by the +precision value multiplied by 2 MHz (e.g. `0x0a` means `10 * 2 MHz = 20 MHz`). +This counter isn't calibrated to external time, but receiving software can +calculate its offset from other receiving stations across multiple packets, and +then use the differences between station receive timing to calculate signal +source position. + + +## Examples + +* `*5DA7DA1CE30DE5;D03B5A4B;0A;7AF3;\r\n` +* `*8DA07CD89915908778A01E4B4C86;D03D33F9;0A;8437;\r\n` + + +## Implementations + +* [Airspy ADSB decoder](http://airspy.com/download/)