Most hotspot guides start with Pi-Star or WPSD. This one doesn't. This is a dedicated, single-mode M17 hotspot built on the M17 Project's own software stack — a Raspberry Pi, a USB modem stick that was never modified, and about four repositories from one GitHub organisation.
The usual multi-mode distributions are built around MMDVMHost. In July 2025 M17 support was removed from MMDVM upstream, and WPSD followed. Pi-Star kept it, so a Pi-Star hotspot can still do M17 alongside everything else.
But a general-purpose distribution carries a lot of machinery you don't need if M17 is all you want. The M17 Project publishes its own gateway and its own dashboard. Running those directly gives you a machine that does one thing, with a much shorter path between the radio and the reflector — and no dependence on whether the next MMDVMHost release still speaks the mode.
| Computer | Raspberry Pi 4B |
| Modem | ZUM USB stick, completely unmodified — stock firmware, no reflash |
| Antenna | The standard stub antenna supplied with the stick |
| Connection | USB, presenting as /dev/ttyACM0 at 460800 baud |
| Band | UHF, simplex |
On the USB bus the stick appears as a Leaflabs Maple serial interface
(1eaf:0004) — the STM32 development identity that most MMDVM modem hardware
reports. Nothing about it was changed for this build.
You do not have to guess what firmware a stick is running. The gateway asks it at startup, and the modem answers with a description string. On this one:
GetVersion response
ZUMspot-v1.6.1 20231115_WPSD 14.7456MHz ADF7021 FW by CA6JAU, G4KLX, W0CHP. GitID #7e16099
| Firmware | ZUMspot v1.6.1 |
| Build date | 15 November 2023 |
| Flavour | WPSD build (W0CHP) |
| Reference oscillator | 14.7456 MHz TCXO |
| RF chip | ADF7021 |
| Git ID | #7e16099 |
The one thing worth knowing
That build date is the whole story. November 2023 predates the removal of M17 from MMDVM upstream in July 2025 — which is exactly why this stick still speaks M17 on its factory firmware, with no reflash. A stick carrying a newer build may not. If you are buying hardware for an M17-only machine, ask what firmware is on it before you order, and read the version string as soon as it arrives.
Worth noting where the two parted: the modem firmware on this stick still carries M17, while the host software above it no longer does. Firmware and host are updated separately and do not have to support the same set of modes.
Before anything else, read the version string off your own stick. The gateway logs it at startup, and on a Pi-Star or WPSD machine the dashboard displays it. You cannot decide what you need until you know what you have.
| Source | What it is |
|---|---|
| M17‑Project/MMDVM_HS | The M17 Project's own fork of the hotspot firmware. The maintained path for M17 today, and the one to build from if your stick's firmware has no M17. |
| juribeparada/MMDVM_HS | The original MMDVM_HS by CA6JAU, with tagged releases going back years. Where the ZUMspot firmware line comes from. |
| WPSD modem firmware | W0CHP's builds and update procedure — the flavour running on this stick. |
If you are chasing an M17-capable build
Note the date, not just the version. M17 left MMDVM upstream in July 2025, so a build from before that point is the one that carries the mode. If you would rather not depend on an old binary, build from the M17 Project's fork instead — that is the version kept current specifically for this mode.
Everything comes from the M17 Project organisation on GitHub. There is no
third-party distribution image involved, and no apt repository to add.
| Component | What it does |
|---|---|
| m17-gateway | The core. Talks to the modem over the serial link, and to the reflector over UDP. Distributed as a prebuilt binary. |
| rpi-dashboard | The web interface — status, recent activity, gateway configuration, a map, and text messages. Served by nginx. |
| MMDVM | The M17 Project's fork of the MMDVM modem firmware. |
| MMDVM_HS | The hotspot variant of the same, for stick-style modems. |
| CC1200_HAT-fw | Firmware for the CC1200 HAT — present for the alternative radio front end, not used in this build. |
The operating system underneath is a current Debian — nothing unusual, nothing pinned. The gateway and the dashboard API run as their own unprivileged users, and nginx serves the dashboard on the local network only.
One file does the work: /etc/m17-gateway.ini. It is short enough to read in a
minute, which is a large part of the appeal.
| Setting | Value |
|---|---|
| Callsign | The station callsign |
| RX / TX frequency | The same UHF simplex frequency for both — entered in hertz, e.g. 430000000 |
| Power | 10.0 — the gateway's own 0–100 scale, not watts |
| Frequency correction | +5 |
| Reflector | Name and module, e.g. M17-JET module B |
| Host file | The reflector list the dashboard maintains |
| Modem | Type mmdvm, port /dev/ttyACM0, 460800 baud |
| Levels | RX and TX level, TX delay, TX hang |
There is no codeplug and no programming software. The dashboard's own configuration page edits this file, and the gateway reloads when it restarts.
Watch this one
The reflector module in the config and the destination your radio transmits to must match. If the radio calls module B while the gateway is linked to module A, the hotspot receives your audio perfectly and then discards it — no error, no dashboard entry, nothing on the reflector. It looks exactly like a dead hotspot.
An M17 receiver has no squelch in the traditional sense — it decides a transmission has started by detecting a sync pattern in the noise. On a quiet, sensitive receiver, noise will occasionally produce that pattern by chance, and the dashboard records a transmission that never happened.
These are easy to recognise once you know the signature: a callsign of nine nonsense characters, a duration under a second, and an error rate around 10 percent where a real signal sits near 3. They are cosmetic, they are infrequent, and they are not a fault.
The short version
A Raspberry Pi, an unmodified USB modem stick, four repositories from one GitHub organisation, and a config file you can read in a minute. If M17 is the only mode you care about, this is a considerably simpler machine than a multi-mode hotspot — and one whose every moving part is maintained by the people who wrote the protocol.
Return to n6jet.com — 73 de N6JET
A noncommercial hobby reference compiled by N6JET, gathered from public sources and shared freely for anyone interested in amateur digital voice.