M17

The M17 Project: “M17 is a new digital radio protocol in development as an alternative to those currently available, with freedom in mind. Freedom in the code, protocol, voice codecs, and hardware. The goal is to provide a better option for digital radios in the future.”

It’s hard to describe my work on this kind of thing without feeling like I’m tooting my own horn, but here we go.

I’m all-in on M17, and one of the core software developers.

Why? See the “Why M17?” post

I wrote significant parts of the copy, and much of the copy that wasn’t mine was based on my ramblings on Discord or IRC. I have some several significant contributions to the early spec including at least a few rewrites. Some of that might survive today - it’s grown dramatically and become much better thanks to many contributors and the dedicated attention from Steve KC1AWV to keeping it in good shape.

I wrote the vast majority of the two grants we’ve received so far - though I’m not involved in writing the third one. I don’t anticipate they’ll have any trouble without me, M17 is proven and continues to grow at an astonishing rate.

I’ve written documentation, tutorials, code, priorities, and CI/CD pipelines for critical projects.

I’ve talked for six hours straight at ham fests, spreading the good word.

I’ve soldered, troubleshot, and sold M17/OpenRTX devices.

I wrote dmr.tools and made it the absolute simplest way to try OpenRTX, and revert back to OEM firmware.

I spent a year working 100% on M17 and related work like dmr.tools unemployed, as a way of coping with the burnout from the previous job. It was some of the most fun I’ve had while working.

I was the only M17 member with M17 checks, made most of our purchases for the first grant year, and helped organize and sort the purchases for our (ORI’s) tax preparation vendor among other responsibilities.

I burnt the hell out on this from some conflicts related to our fiscal sponsor, grant provider, and our team.

With the transfer to a different fiscal sponsor I stepped out of the money side of things nearly completely.

Significant subprojects:

  • PyM17 (pypi M17).
  • PiM17 An M17-focused MMDVM hotspot distribution, packaging, and tools based on Alpine.
  • mmdvm_easyflash, a simple python project to take the guesswork out of flashing a modem with updated firmware.
  • CI/CD work for hotspots in MMDVM_HS_CICD
  • maidenhead: a tiny arbitrary precision maidenhead grid square library in C. For the Github Hacktoberfest last year @kabiirk ported it to Python!
  • cables: A handly little reference for making cables.
  • WIP: A micro dashboard for hotspots, including a minimalist config file editor.
  • WIP: pyMMDVM which currently has some basic tools for the MMDVM serial protocol.

Less significant but still interesting projects:

  • codec_blinding: Which allowed for fully-blind codec audio quality tests.
  • https://github.com/tarxvftech/m17ref2dns : replace the manual reflector registration and lookup system with a pure DNS setup.

Part of the PyM17 work includes a reference design for IP framing, a full UDP voice client, a simple (sans linking) reflector, an M17 to Echolink bridge, an icecast server for testing M17 streams, and more. This was the first IP implementation, and early versions included a simple UDP reflector, echolink bridge, etc. It let us (me, SP5WWP, and N7TAE) hammer out the details of IP framing. N7TAE then layered a nice reflector protocol on top of that and made mrefd.

PyM17 also has capabilities for tuned AI voice transcription that I don’t know if I want to release.

The Python serves as an experimentation testbed: I spent some time playing with DHT networking as applied to M17 callsign routing and M17 reflectors. Later I was able to convince N7TAE to experiment with this too, which eventually made it into mrefd.

One of the first things I built was a small M17 address calculator demo webapp which is probably still on the m17project website somewhere.

Not a lot of my code ends up in enduser hands. Most of my work has been in building proofs of concept, or experimenting with novel ideas. These include the m17ref2dns project.

For a full list, you’ll have to go check for my contributions to any m17-project and openrtx repos, and all the linked accounts. Many things aren’t worth linking here.