For the ADS-L registry
skyBlip applies for AMT entry 58, and for the exception OGN-Tracker has.
skyBlip builds open-source electronic conspicuity equipment for general aviation. The devices transmit and receive ADS-L 4 SRD-860 air-to-air, receive the ADS-L traffic uplink from ground stations, and receive FLARM-generation traffic. Under ADS-L.4.SRD860.F.2.2 we apply for entry 58 of the Address Mapping Table, manufacturers page 49, and we ask that it carry the whole 24-bit address with no manufacturer prefix, exactly as entry 7 carries OGN-Tracker addresses. A skyBlip would then mint its address inside a space that is ours, whether it was shipped by us or built by its owner.
This page is what accompanies the application to registry@ads-l.aero: who is applying, what the equipment does on the air, why the manufacturer prefix of F.2.2 does not fit this fleet, and one question we would like the registry’s view on.
Where it stands
Manufacturer page 49, AMT entry 58, prefix 0, assigned on 5 October 2026.
The registry gave skyBlip manufacturer page 49, which is AMT entry 58, and manufacturer prefix 0 inside it. The assignment carries a prefix, so it is the structured scheme of F.2.2 rather than the flat 24-bit space we applied for: the 16 bits below the prefix are ours to fill densely, one per unit. The application below is as we sent it on 20 September 2026.
Who we dealt with
| Contact | Role |
|---|---|
| ADS-L registry, registry@ads-l.aero | receives applications, run by FLARM’s helpdesk, ticket #228794 |
| FLARM | answered for the registry, took the application to EASA, issued the assignment |
| EASA | decided on the application, sets the requirements on manufacturers |
Log
| Date | With | Event |
|---|---|---|
| 20 Sep 2026 | ADS-L registry | Application sent: one AMT entry, 58, flat over 24 bits. |
| 2 Oct 2026 | FLARM, EASA | Meeting on the application. A manufacturer issues a declaration of conformity for its equipment. |
| 5 Oct 2026 | FLARM | AMT entry 58 assigned: manufacturer page 49, manufacturer prefix 0. |
Who is applying
An open-source project, built against the published specification.
| Applicant | François Catuhe, France — skyBlip |
|---|---|
| Site | skyblip.eu |
| Sources | github.com/fcatuhe/skyblip — firmware GPL-3.0-only |
| Specification implemented | ADS-L 4 SRD-860 Issue 2, ED Decision 2022/024/R |
The firmware is public, so every claim below can be read rather than
trusted: the address logic is one file, core/settings/address.cpp,
and the wire format another, core/protocol/adsl.cpp. The host
test suite generates a behavior index,
docs/BEHAVIOR.md,
which lists what the firmware is checked to do and is regenerated from the
tests themselves. Conformance has a suite of its own, below.
The equipment
Two airborne devices, two ground stations, one radio design.
| Device | Transmits | Receives | Status |
|---|---|---|---|
| skyBlip Go | ADS-L Traffic, M-band | ADS-L Traffic, ADS-L Traffic Uplink, FLARM-generation traffic | flying, firmware published |
| skyBlip Panel | ADS-L Traffic, M-band | as above, output to the panel display over RS-232, Bluetooth and WiFi | in development |
| skyPost Helio | ADS-L Traffic Uplink, O-band HDR | ADS-L, FLARM-generation traffic, ADS-B 1090 | in development |
| skyPost Bridge | ADS-L Traffic Uplink, O-band HDR | from an existing receiving station (OGN, PiAware) | in development |
FLARM-generation traffic is decoded and shown to the pilot. It is never re-transmitted: an airborne skyBlip transmits its own position and nothing else, and the uplink is a ground station function.
On the air
| M-band channels | 868.2 and 868.4 MHz, alternating by UTC second (§C.2, §C.2.5) |
|---|---|
| O-band HDR | 869.525 MHz, uplink slot (§C.4, §C.5) |
| Transmit power | +14 dBm e.r.p., the ERC 70-03 band h1.4 and EN 300 220 ceiling |
| Duty cycle | 1 % of any hour, metered on the device; one 5 ms burst per second is about half of it |
| Transmitted payload | Traffic (type 2), 1 Hz airborne, 0.1 Hz on the ground (§G.1.16) |
| Receive dwells | 400 ms on each M-band channel and 190 ms on the uplink slot, one SX1262; M-band receive is declared Partial under §G.2.2, a single radio cannot hold both channels at once |
| Design assurance | none claimed: the payload carries DAL 0 |
Conformance
The specification is a test suite here, read clause by clause.
Issue 2 has 80 numbered clauses.
firmware/test/adsl/
holds at least one case for each of them, named after the clause it reads,
and scripts/check_adsl_clauses.py fails the build if a clause
has no case or if a case names a clause the document does not contain.
Where the specification prints an algorithm or a worked example, the case
carries the document’s own version of it rather than restating ours:
E.2’s XXTEA, E.3.1’s CRC-24, G.1.6’s exponential encoder
and the example tables of G.1.7 to G.1.9.
104 cases, of which 64 run and pass and 40 are skipped. A skipped case is written as the clause requires it and skipped over a one-line note saying why, so what this device does not do is a list rather than a silence. Fourteen of the skips are clauses with nothing executable in them, such as the block diagram and the OSI table, and two are duties of the manufacturer rather than of the device. The rest is the honest part:
| Clause | What is missing, and why |
|---|---|
| G.2, G.2.1 to G.2.11 — Status payload | not transmitted. It is the next protocol work, and soft versioning (B.5) waits on it. |
| C.3 to C.3.2 — O-band LDR | not received. One radio, and the second is already spent on the two M-band channels and the O-band HDR uplink slot. |
| E.4 to E.4.2 — secure signature | no Ed25519 key is held, generated or transmitted. |
| G.4, G.5 — FIS-B and Remote Identification | neither received nor sent. RID is a UAV payload this aircraft device has no use for. |
| D.3 — media access | a deliberate deviation, not an omission: no listen-before-talk. The burst instant is drawn at random inside the slot and re-keyed every second, and the 1 % hourly duty cycle is the channel-access route. The argument is written out in core/timing/README.md, and none of the reference implementations cancels a burst either. |
| G.1.17 — quality indicators | this firmware transmits SIL 1 and a DOP-derived NIC, which was the Issue 1 reading. Issue 2 asks an uncertified device with no protection bound for 0 in both. Being aligned. |
The whole list, with the note on every skip, is the suite’s own output:
build/skyblip_tests --no-skip --test-case="ADS-L*".
The address
What we do today, and what an entry would change.
Today a skyBlip has no range to draw from, so it mints its own: the 24-bit address is derived from the MCU serial number and transmitted under an AMT entry in the self-minted group, 0 to 4. Because that space is shared with every other tracker that derives its identity the same way, the device moves off the prefixes known to be crowded — 0xD0, 0xDD to 0xDF and 0x11 — and refuses the two addresses that mean “none” and “dead SPI read”, 0x000000 and 0xFFFFFF.
F.2.2 offers a manufacturer a page of the AMT and an 8-bit prefix inside it, and asks that the remaining 16 bits be filled densely. That shape assumes a production line: someone issues address n+1 to the next unit and writes it down. This firmware is GPL-3.0 and builds from source, so a share of the fleet is assembled by its owner, flashed at a kitchen table, and passes through no counter we could run. Such a device mints its address the only way an offline device can, from the MCU serial number, and 16 bits are too few to absorb that: derived addresses collide at even odds by about 300 devices.
So the application is for one AMT entry with the structuring of F.2.2 waived: 6 bits of AMT and 24 bits of address, no 8-bit prefix in between. We are asking for a deviation and say so plainly, but it is one the table already grants three times over. Entries 6, 7 and 8 are flat 24-bit spaces, and OGN-Tracker at entry 7 is a fleet of exactly this shape: devices built rather than bought, each deriving its identity locally, with a public database resolving who is who. Assigned that way, the entry costs the table one page out of 55 and ends the guesswork for every skyBlip ever built, not only for the ones we ship.
The entry we ask for is 58, manufacturers page 49, for one reason only: 58 reads as SB. It is the single piece of vanity in this application and the registry should overrule it without hesitation, since a page issued out of order is a favour and the exception above is the part that matters. Any entry in 9 to 63 works for us.
A 24-bit space does not make collisions impossible either. It makes them rare enough to settle one at a time: about 4,800 derived addresses before even odds of a single colliding pair. What settles them is a register, which is the first of the two answers in the question below.
One question
Where does an aircraft’s callsign go?
In VFR the identity everyone uses — the pilot on the radio, the club, the EFB, the field — is the registration: F-GXXX on a certified aircraft, an F-J callsign on a French microlight. It belongs to the aircraft for its life. It is not a per-flight item like an airline flight number, and a receiver that could show it would be showing the traffic the way a pilot already thinks about it.
We think this matters in the air rather than on paper. A pilot hears “F-JABC, joining downwind for 25” on the frequency, and what turns that call into an aircraft he can look for is a display showing the same callsign on the target: the radio tells him who, the screen tells him where, and only the callsign joins the two. Without it he has a call on one side and an anonymous return on the other, and traffic a pilot cannot correlate is traffic he ends up looking for in the wrong part of the sky.
Issue 2 carries no field for it. The Traffic payload (G.1) has none, the Status payload (G.2) has none, and the only identity on the air is the 30-bit sender address of F.2.2: 6 bits of AMT and 24 bits of address. That address is ours rather than the aircraft’s, and nothing in the frame ties it to the registration on the fuselage. The aircraft this equipment addresses are the ones carrying no other identity on the air: a French microlight, a paraglider, a paramotor.
So we would like the registry’s view on which of the two answers it intends, because we would rather implement the one that becomes the standard:
| Answer | What it would take |
|---|---|
| A published address-to-registration database | the way the OGN device database resolves FLARM and OGN addresses today. We would publish our assigned range, let owners bind their address to their registration, and expose the mapping under an open license. |
| A callsign payload | a low-rate broadcast payload carrying the registration, transmitted every few seconds rather than every second. A new payload type has to be approved by the governing body (F.2.5), which is why this is a question to the registry and not a proposal we would ship on our own. |
Either is a small amount of work here. Neither is worth doing twice, and a manufacturer that invents its own answer is how a standard stops being one.
References
- EASA — ADS-L 4 SRD-860, ED Decision 2022/024/R, Issue 2. F.2.2 sender address and the AMT, G.1 Traffic, G.2 Status.
- skyBlip firmware — github.com/fcatuhe/skyblip. The implementation, its host test suite, and the generated behavior index.