Repository navigation
Tutorial M17
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.
- 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).
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.
- 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).
- 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.
- Press Start. The panel says start the receiver to hear M17 and then nothing heard yet.
- Now shows ON AIR and the callsign; Activity lists the log; Messages the text; Map the positions.
- The voice indicator reads voice: libcodec2 when codec2 is found.
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.
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.
- 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: ....
- 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.
- Record the channel (Tutorial-Record-IQ-then-the-Signal-workbench) while it is busy and replay it to try settings.
- A scan (Main-window, tab Scan) helps to find an active channel.
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.
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.
Mode-M17, Tutorial-D-STAR, Tutorial-DMR, Tutorial-Digital-voice-DMR-D-STAR-P25, Voice-codecs, Radio-RTL-SDR, Live-map, FAQ
Getting started
Using OnAir
Tools and guides (0.2.7)
- Band survey
- Message database
- Watchlists
- TV recorder
- Time machine
- Pass scheduler
- Plugin SDK
- Headless server
- All guides
Radios
Modes by group
- TV
- Broadcast radio
- Aviation
- Maritime
- Satellite & navigation
- Two-way radio
- Cellular & rail
- Pagers
- IoT & sensors
- Weather & science
- Amateur: digital
- Amateur: voice & packet
- HF utility
- General & tools
Tutorials
- DVB-T2 TV with a HackRF
- FM radio with RDS
- Aircraft with ADS-B and the map
- Ships with AIS
- DAB+ digital radio
- Weather satellite images
- HF digital: FT8 and WSPR
- Digital voice: DMR, D-STAR, P25
- Pagers: POCSAG and FLEX
- Time stations and the clock
- Record IQ, then the Signal workbench
- The signal sample library
- Control a rig with Hamlib
- Two receivers and the multi-decoder
Reference
Help
Legal and privacy
More