Building an M17 Hotspot

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.


Why not Pi-Star or WPSD

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.

The hardware

ComputerRaspberry Pi 4B
ModemZUM USB stick, completely unmodified — stock firmware, no reflash
AntennaThe standard stub antenna supplied with the stick
ConnectionUSB, presenting as /dev/ttyACM0 at 460800 baud
BandUHF, 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.

The modem firmware

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

FirmwareZUMspot v1.6.1
Build date15 November 2023
FlavourWPSD build (W0CHP)
Reference oscillator14.7456 MHz TCXO
RF chipADF7021
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.

Where to get the firmware

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.

SourceWhat it is
M17‑Project/MMDVM_HSThe 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_HSThe original MMDVM_HS by CA6JAU, with tagged releases going back years. Where the ZUMspot firmware line comes from.
WPSD modem firmwareW0CHP'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.

The software

Everything comes from the M17 Project organisation on GitHub. There is no third-party distribution image involved, and no apt repository to add.

ComponentWhat it does
m17-gatewayThe core. Talks to the modem over the serial link, and to the reflector over UDP. Distributed as a prebuilt binary.
rpi-dashboardThe web interface — status, recent activity, gateway configuration, a map, and text messages. Served by nginx.
MMDVMThe M17 Project's fork of the MMDVM modem firmware.
MMDVM_HSThe hotspot variant of the same, for stick-style modems.
CC1200_HAT-fwFirmware 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.

Configuration

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.

SettingValue
CallsignThe station callsign
RX / TX frequencyThe same UHF simplex frequency for both — entered in hertz, e.g. 430000000
Power10.0 — the gateway's own 0–100 scale, not watts
Frequency correction+5
ReflectorName and module, e.g. M17-JET module B
Host fileThe reflector list the dashboard maintains
ModemType mmdvm, port /dev/ttyACM0, 460800 baud
LevelsRX 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.

What it does, and what it doesn't

A quirk worth expecting

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.