Skip to content

Tutorial M17

adswill edited this page Oct 17, 2026 · 1 revision

Tutorial: M17

What it is

M17 is an open digital voice and data protocol for amateur radio, designed as an alternative to the patented systems. It uses codec2 for voice, which comes with OnAir, so unlike DMR or D-STAR you hear voice without installing anything. OnAir shows callsigns, text messages, GNSS positions and the activity of each station.

What you need

  • Any SDR that tunes the band: an RTL-SDR covers roughly 24 MHz to 1.7 GHz at up to about 2.4 Msps (see Radio-RTL-SDR), and so do HackRF, Airspy, SDRplay and others (Supported-radios). The narrow signals here need only a small sample rate; the mode asks for 2 Msps.
  • Antenna: a 70 cm vertical (the default is 433.475 MHz) outdoors.
  • Frequencies (database): 433.475 MHz, the M17 70 cm suggestion for IARU Region 1 from IARU VHF+ newsletter 92 (June 2023). Use local repeater or hotspot frequencies otherwise. The channel is 9 kHz (12.5 kHz in the panel).

Before you start

Set the gain so that the ADC level in the status line stays clear of full scale; use Auto-tune or Optimise gain (Your-first-reception). Too much gain makes strong neighbours (paging, FM broadcast, repeaters) leave spurs in the channel. Make sure the radio is on frequency: a cheap RTL-SDR can be several kHz off at 430 MHz, so enter its correction (ppm) in Radio settings or watch the carrier offset the panel shows. Narrow digital voice channels need an offset under about 1 kHz.

Step by step

  1. Connect the radio and antenna and start OnAir. Open the group Amateur: voice & packet and choose Digital voice (the entry reads Digital voice, 433.475 MHz).
  2. The Calling button jumps to the IARU R1 suggestion. Set the CAN (channel access number) to play only stations with that CAN; all stations are still shown.
  3. Press Start. The panel says start the receiver to hear M17 and then nothing heard yet.
  4. Now shows ON AIR and the callsign; Activity lists the log; Messages the text; Map the positions.
  5. The voice indicator reads voice: libcodec2 when codec2 is found.

What you should see

Callsigns with a length, a symbol SNR, the deviation (2400 Hz nominal) and the percentage of bit errors corrected. Streams show as Codec 2 frames; packets (text, data) as separate rows. A sent text message shows as [META] or in Messages.

Reading the screen

Now: the current station. Activity: Carrier, Time UTC, From, Type, Length, Notes (for example encrypted). Messages: Text. Map: positions from GNSS META. Station / Heard: stations heard.

Options and settings

  • CAN: only play stations with this number.
  • Calling: jump to the IARU R1 frequency.
  • The ? next to the codec shows what the voice needs: found: ....

Troubleshooting

  • Callsigns but no sound. libcodec2 not found (this copy of OnAir came without it); see Voice-codecs. Or the CAN is set to another number.
  • Nothing heard. M17 is quiet in many places. Try a local hotspot or repeater.
  • Encrypted. Reported as encrypted and not decoded.
  • Frames lost. Offset or weak signal.
  • Mirrored spectrum. The panel says spectrum mirrored when it detects it.

Tips

Legal and privacy notes

M17 is an amateur radio protocol and its stations identify with callsigns. Receiving is legal in most countries. Encrypted M17 traffic is reported as encrypted and not decoded. Positions on the map are what stations broadcast. Transmit works in OnAir (used on a real radio by the maintainer and in loop-back tests) but needs an amateur licence; see Transmit and Legal.

Under the hood

M17 is 4FSK at 4800 symbols/s (9 kHz occupied), with a link setup frame (LSF) carrying the callsigns, type and optional META (GNSS, text) data, stream frames with codec2 3200 or 1600 bit/s voice, and packet mode. Error correction is a Golay code on the LICH and a convolutional code on the payload. The specification is published by the M17 Project.

Related

Mode-M17, Tutorial-D-STAR, Tutorial-DMR, Tutorial-Digital-voice-DMR-D-STAR-P25, Voice-codecs, Radio-RTL-SDR, Live-map, FAQ

Clone this wiki locally