I’m excited to share benlink, a project for reverse-engineering the Bluetooth (BLE & RFCOMM) protocol used by Benshi radios—including the BTech UV-PRO, Vero VR-N7500, and others. It provides:
- A documented implementation of the Benshi Bluetooth protocol in Python
- A cross-platform async Python API for easy integration into new projects
I hope this inspires more folks to build cool apps! One project, HTCommander ([1]), has already reimplemented the Benshi protocol in C# and is building an awesome APRS/WinLink messaging app. If anyone is looking for a fun frontend project, benlink would be a perfect backend for cross-platform Web UI for Benshi radios. I'd also love to see Benshi radios supported in an alternative backend for the KV4P-HT Android app ([2]).
One part I'm particularly proud of: I built a bitfield serialization system inspired by Pydantic and parser combinators. It lets you define bitfields as Python classes with declarative types which automatically handle serialization/deserialization (e.g. [3]). It's super composable but still works within the limits of Python's type hinting system. If there's interest, I might spin this off into a standalone library.
Lastly, I’m proud to have actually shipped a working, documented project! Too often, I start things and never publish them—Benlink is me turning over a new leaf.
Would love your thoughts, feedback, or ideas for where to take this next!
[1] https://github.com/Ylianst/HTCommander
[2] https://github.com/VanceVagell/kv4p-ht
[3] https://github.com/khusmann/benlink/blob/main/src/benlink/pr...