Build your own M17 Receiver
Building your own M17 receiver
You will need:
- a Raspberry Pi 3 or 4 with Raspbian (or Raspberry Pi OS) installed and SSH access.
- an RTL-SDR with known frequency offset
- optional: USB soundcard
- headphones or active speakers
- Open up your RPi terminal. You can use SSH or GUI terminal, if you have a screen connected to your RPi.
- Run the following commands:
sudo apt update && sudo apt upgrade ⚠️ - this may take up to an hour to complete
sudo apt install build-essential cmake git libusb-1.0-0-dev rtl-sdr libboost-all-dev alsa-utils
Install Dave Rowe’s codec2
git clone https://github.com/drowe67/codec2 cd codec2 mkdir build && cd build cmake .. make sudo make install cd ../..
git clone https://github.com/mobilinkd/m17-cxx-demod cd m17-cxx-demod mkdir build && cd build cmake .. make sudo make install cd ../..
- Now that we have all the software installed and ready, try the following command:
rtl_fm -E offset -p -2 -f 435.0000M -s 48k | m17-demod -l | aplay -r 8000 -c 1 -f S16_LE
“-p -2” is the offset compensation. Use your own value here.
It is recommended to set the terminal window width to 132 characters. If you are using an external USB soundcard, you will need to know “where” it is in the system. Run the following command to find out:
That should list all sound devices. An example would be for device 1, output 0
Knowing where your soundcard is, try:
rtl_fm -E offset -p -2 -f 435.0000M -s 48k | m17-demod -l | aplay -D plughw:1,0 -r 8000 -c 1 -f S16_LE
That’s it. A list of all received streams should appear in the terminal window. Voice is being decoded automatically and should be audible in the speakers/headphones.
Setting up your M17 “beacon” transmitter (Windows + PlutoSDR method)
You will need:
- Windows 7 or 10
- .bin file with your audio/speech converted to M17 format
Download m17-gr3.7.grc: https://gist.github.com/sp5wwp/b465343761c78777b00b4d27f33f6afd
Open it up using GNURadio Companion, double click on “File Source” block on the left. Point it to the .bin file with your record. Double click on the “Variable, Id: frequency” block to set the frequency.
- Press the “>” button in the menu (“Execute the flow graph”).
An empty window should pop up. Your PlutoSDR should transmit M17 voice frames until you close that window.