Ok, we’re a little late on this one, but who knows how many days there are in February, anways?
February marked the release of some major improvements to the ADSBee 1090 firmware, and a key milestone for the project. Here’s what’s changed!
Firmware Version 0.7.3
CPR Decoder and Message Demodulation Fixes
Firmware version 0.7.3 re-implemented the Compact Position Reporting (CPR) decoder algorithm used by the ADSBee 1090 to use a formally verified CPR decoder provided by NASA, providing much better position decode accuracy than the previous custom solution. According to beta testers, instances of aircraft with poor signal quality “jumping around” on the map due to incorrectly decoded position message sequences are greatly reduced.
An aside: in these days of unprecedented government “efficiency,” I’d like to express my sincere gratitude to civil servants who make contributions to infrastructure that benefits us all. The researchers at NASA Langley who put the time and effort into writing and formally verifying a CPR decoder, and then releasing it as an open source tool for the world, have made a material contribution to the safety and efficacy of the ADSBee project and a number of other (very important) projects that use the same codebase to make the skies a little bit safer all around the world. If you’d like to drop a token in their bucket, consider giving their github repo a star (as of writing, it only has 13), or send their NASA contact (Cesar Munoz, cesar.a.munoz@nasa.gov) an email to let him know that his team’s work is appreciated.
Another major improvement to receiver performance in the 0.7.3 update was the fixing of a message demodulation bug caused by the message demodulator PIO state machine failing to halt at the end of a message. This caused the last word of received transponder messages to often end up garbled, greatly reducing the valid message receive rate. With some careful changes to the interactions between the PIO preamble detector and demodulator state machines, the demodulators are now halting properly and valid message decode rates are way up! ADSBee is now consistently outperforming unfiltered SDR-based ADSB receivers (like the RTL-SDR v3) and competitor FPGA-based receivers (Aerobits TT-SC1) in receive range, and aircraft tracks are much smoother than in previous firmware releases.


MAVLINK Debugging and Field Testing
Firmware version 0.7.3 also introduced a host of compatibility fixes for working with various platforms that communicate with MAVLINK, including iNAV, mwptools, and QGroundControl. Many thanks to our dedicated beta testers, who worked through bugs ranging from intermittent ADSBee crashes (caused by ingesting unexpected binary data and overflowing some buffers) to issues with other applications’ MAVLINK decoder implementations. As a result of their many hours of testing and helpful feedback, ADSBee is working well with MAVLINK interfaces of all types!

Some of our beta testers have installed ADSBee 1090’s into remote-controlled aircraft of various sizes in order to enhance situational awareness and aid in avoiding areas where full-scale aircraft are operating. I’ve loved seeing the various creative builds, including some modifications to the included 1090MHz coaxial sleeve dipole antenna to reduce weight. We will hopefully have some lighter weight 1090MHz antennas in stock soon!


Additional Stability Improvements
Firmware version 0.7.3 also introduced a host of additional stability improvements to the firmware. This update fixed some bugs that previously made the ADSBee incompatible with software like PyPi (hilariously, PyPi was opening USB ports with a default baud rate that matched the magic baud rate used by the RP2040 to initiate a reboot automatically), and also fixed a number of bugs that were in 0.7.2 with the addition of multicore processing. The full list of changes is too long to describe here, so please feel free to check out the release notes if you’re interested!
Firmware Update 0.7.4
Firmware update 0.7.4 is a much smaller update than 0.7.3, and mostly cleans up a few loose ends with MAVLINK reporting (a few additional flags were missing from 0.7.3, and weren’t noticed without additional testing). This update also increases the maximum allowable callsign length to 8 characters, and stops removing trailing spaces from aircraft callsigns.
An interesting aside on aircraft callsigns: rules dicatate that aircraft can only use a maximum of 7 characters in their callsign (e.g. SWA1162), but the callsign field in ADS-B messages is actually 8 characters long. While the vast majority of aircraft do in fact have 7 character callsigns, some ground vehicles, ground obstacles, transponders being tested, and a few other edge cases do regularly utilize 8 characters in their callsigns. Now, ADSBee should be able to receive those messages as well!
ADSBee 1090 Beta Kits Sold Out (For Now)!
Thanks to our enthusiastic beta testers, we’ve reached the end of our original stock of ADSBee 1090 beta units! There may be some small quantities of additional units available if devices get released from rework or testing, but all units from the initial beta batch have happily found their homes. The data that we’ve gathered during this first phase of the project has been invaluable for improving the firmware and guiding future revisions of the design. Firmware updates will continue to be released regularly, and we have a new generation of hardware making its way down the pipe. Stay tuned for what’s next!