finds.dev← search

// the find

junzis/pyModeS

★ 664 · Python · GPL-3.0 · updated Jul 2026

Python decoder for Mode S and ADS-B signals

pyModeS is a Python library for decoding Mode-S and ADS-B radio signals — the transponder data broadcast by aircraft. v3 is a ground-up rewrite that collapses the old per-field function API into a single `decode()` call returning a dict. It's aimed at researchers, hobbyists with RTL-SDR setups, and anyone building flight tracking tools without paying for commercial data feeds.

The unified `decode()` API is a real improvement over the old `pms.adsb.callsign(msg)` style — one call, one dict, no need to know which sub-decoder to invoke. `PipeDecoder` handles the stateful work (CPR pair matching, per-ICAO TTL eviction, DF20/21 ICAO verification) that trips up anyone who's tried to build a streaming decoder from scratch. The golden-file regression suite against v2.21.1 is exactly the right call for a protocol decoder — behavioral drift is the silent killer here. Full mypy strict coverage on a library this old is rare and genuinely useful.

The v3 breaking change ships on the same PyPI slot with no major version namespace separation — `pip install -U pyModeS` silently upgrades existing v2 users and hits the removal shims, which is a bad default for production consumers who pin loosely. DF11 support is explicitly partial (II/SI decoding deferred), which matters if you're working with secondary surveillance radar data rather than pure ADS-B. The Comm-B BDS inference for 5,0/6,0 disambiguation requires passing `known=` aircraft state, meaning stateless callers get ambiguous results silently rather than an error. Meteorological registers (BDS 4,4/4,5) are heuristic and opt-in, but the docs don't quantify false-positive rates, so you have no basis for deciding whether to trust them in a production feed.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →