FT8Decoder - A Library for the Parsing and Enrichment of FT8 Radio Messages
Posted by rabidmonkeyz54@reddit | Python | View on Reddit | 10 comments
Hey everyone! I just released my first Python package, FT8Decoder.
Earlier this summer I got into amateur radio as a hobby and stumbled across FT8 transmissions while exploring WebSDR. I was intrigued by the spooky alien sounding tones and wanted to know what they meant. I installed WSJT-X, which decodes them in real time, but as a newcomer, “CQ ABDCE FN41” or “KWB8R KCQ4N R-08” didn’t really give me the clarity I was looking for.
So, I went looking for a Python library that could translate these into readable messages in a fun little script. I couldn’t find one, so I decided to build one myself. From there my little library grew into a full FT8 logging and enrichment tool.
What my Project Does:
- Parses WSJT-X UDP packets into clean Python objects
- Classifies all FT8 message types (CQ calls, QSOs, signal reports, acknowledgments, etc.)
- Tracks and organizes the state of every FT8 QSO from CQ to 73
- Translates messages such as "KWB8R KCQ4N R-08" into readable text: "KCQ4N says Roger and reports a signal report of -08 to KWB8R."
- Enriches data with frequency offset, MHz conversion, band detection, and more
- Performs Grid square lookups with lat/lon output and interactive map support (Folium)
- Exports organized FT8 data to JSON for easy integration into other tools
- Offers a light CLI interface for easy use
Target Audience:
This is a tool for ham radio hobbyists, researchers, or developers! It's also useful for anyone looking to understand how FT8 communications are structured and gain a deeper understanding of FT8 as a whole.
Comparison:
From what I could find, there isn't really a direct comparison to this project. While there are a few other FT8 PyPi libraries out there, they are mostly in the neighborhood of signal processing and working with raw audio, while FT8Decoder is more of a post-processing tool that works with already decoded messages.
You can easily install ft8decoder by running `pip install ft8decoder`
PyPi: https://pypi.org/project/ft8decoder/
Docs: https://zappathehackka.github.io/ft8decoder/
Source: https://github.com/ZappatheHackka/ft8decoder
Would love any feedback anyone has to share. Wondering if "FT8Logger" or something similar would be a better name for this.
Thank you! :)
wysiatilmao@reddit
If you're considering a rename, FT8Logger could reflect its functionality better, emphasizing the logging aspect. Anyone using it might find it easier to identify the library's core purpose at a glance. Have you thought about features like real-time translation? Could help users engage more dynamically.
rabidmonkeyz54@reddit (OP)
Agree on both points. That would be a good feature for the next update and not too difficult to implement
andrewthetechie@reddit
Dude this is badass. I needed something like this not that long ago. Bookmarked for when I get back to my project!
rabidmonkeyz54@reddit (OP)
Happy to hear it man! Let me know if you have any questions when you get around to it :)
andrewthetechie@reddit
Some quick feedback: You need to remove pycache from github and clean up your .gitignore a bit to make sure you're not checking in stuff you don't want to. Could also use some linters (Check out Ruff) and would really benefit from a more modern packaging setup (poetry, uv, etc).
rabidmonkeyz54@reddit (OP)
Thanks for the feedback! Ill clean up the GitHub a bit. Will definitely look into linters and a better packaging system too.
Tritium02@reddit
This is great, I just got my General and will be taking a look at this when I start working FT8.
rabidmonkeyz54@reddit (OP)
Awesome!
_aleph31@reddit
Really cool, kudos!!!
rabidmonkeyz54@reddit (OP)
Thank you!