In July 2025, G4KLX removed M17 from MMDVMHost and M17 was removed from WPSD. The M17 Project responded by creating forks of the code that kept M17 working, but those forks had fallen behind upstream. Working with Claude Code, I (Jim Ancona N1ADJ) brought the underlying code up to date. With these updates, the M17 Project forks of MMDVMHost and M17Gateway are now current with the upstream repositories. In addition, M17 packet mode (SMS) works from end to end: radio, hotspot, gateway, reflector and dashboard. WPSD users will see the changes with their next nightly update or they can trigger a manual update to get them sooner.
MMDVMHost Branches
Earlier this year, upstream started to add MQTT functionality to MMDVMHost. Those changes broke backwards compatibility, so the last compatible release is tagged as v1.0. Dashboard software like WPSD and Pi-Star hasn’t moved to the MQTT release yet. The M17 Project’s MMDVMHost has these branches:
- v1.0: G4KLX’s last release before the move to MQTT, with M17 restored. It still talks to dashboards through log files, which is what WPSD uses. It also includes a set of bug and security fixes backported from G4KLX’s current code.
- master: G4KLX’s current code, with M17 restored. This is the version with MQTT (next section).
- archived-master: The fork’s previous code. We don’t plan to modify this branch. If you cloned the repo before October 2026 you should review the README.
Each branch is G4KLX’s code plus a small set of M17 commits. That makes future upstream updates straightforward and easy to review.
The M17 WPSD fork now uses the v1.0 branch. If you’re running a custom hotspot or repeater setup and want to try the MQTT approach, master is the branch to use. On master, MMDVMHost publishes its status and activity as JSON over MQTT instead of writing log files for dashboards to parse. M17-related messages are documented in the repository’s schema.json. They include:
- M17: voice and data activity including callsigns, source (RF/network), action (start/end/lost…), type (voice, data or packet), duration, ber, and rssi with min/max/average.
- M17Packet (new): one message per packet, with protocol, length, and text for SMS or data (hex) for anything else.
M17 Packet Mode (SMS)
M17 packet mode allows sending SMS messages and other data over the air with M17. It’s been in the M17 spec and supported in other software for a while, but now it’s available in MMDVMHost-based software like WPSD.
The new code:
- receives and decodes M17 packet transmissions, including SMS
- repeats them on repeaters and duplex hotspots
- forwards them to reflectors on the network
- transmits packets received from the network
You need SMS-capable radio firmware to use this. The OpenRTX developers are working on it, so keep an eye out for a release.
M17Gateway
M17Gateway, the component that communicates with M17 reflectors like mrefd, got some updates as well:
- Packet support: carries packets (M17P) between the hotspot and reflectors that support it, and ECHO returns packets as well as voice.
- Reflector protocol update: We now support both legacy and current releases of mrefd along with urfd and other reflectors that support the M17 INet spec. (Thanks to Tom, N7TAE for his help with the design!)
- Voice announcements: give the full reflector name and module letter for all reflectors.
WPSD
The updates to M17 are live now. New binaries arrive through WPSD’s normal nightly update, and the dashboard will show SMS in the last heard list. The binaries are now built automatically with GitHub Actions from the M17 Project repositories, so future fixes will reach users quickly and easily.
One caveat: SMS also needs modem firmware with M17 packet support. For MMDVM_HS_Hat, Dual Hat, generic GPIO and MMDVM repeater boards, you will need to update the firmware with WPSD’s firmware updater, unless you’ve already done that using m17-hotspot-installer. Other hotspot boards (ZUMspot, Nano hotSPOT, NanoDV, SkyBridge…) don’t have packet-capable firmware yet.
Another known limitation: ADF7021 hotspot boards (ZUMspot, MMDVM_HS_Hat, the dual hats…) can only listen for one mode at a time. With multiple modes enabled, they take turns, so they hear M17 only part of the time. M17 voice can recover from a late start, but a short SMS can be lost completely. So our recommendation is that for reliable SMS you only enable M17. Full MMDVM repeater boards don’t have this problem.
The code is on GitHub in the M17-Project organization:
I’ve tested the v1.0 branch on M17 and DMR, but the community can help a lot by trying different branches, modes and hardware. If something doesn’t work or you have questions, we’d like to hear about them on the M17 Discord or by creating an issue in the corresponding GitHub repository.
Acknowledgements
Thanks to the developers and projects that this work builds on, including:
- G4KLX for MMDVMHost and M17Gateway
- CA6JAU for the MMDVM_HS firmware
- W0CHP and the WPSD developers
- The OpenRTX developers
- KD0OSS for the original packet work, which the firmware support builds on
- Ember for the backported MMDVMHost fixes