Receiving M17

From M17 Foundation Wiki
Jump to navigation Jump to search

Receiving M17 doesn't require any exceptional or expensive hardware. This article demonstrates how to receive and decode M17 using inexpensive SDRs.

Receiving M17 texts

To receive M17 text messages, you will need:

  • an SDR receiver: an RTL-SDRv3 would do great, other revisions are fine too
  • a PC running Linux with installed GNU Radio
  • a tiny bit of patience and will

GNU Radio installation is not covered by this article.

Fetch the required software

m17-packet-decoder from the M17_Implementations GitHub repository: here

Run

git clone --recursive

to clone the repository. Change the directory to SP5WWP/m17-packet and use make:

make && make install

At this point you should have the packet decoder and encoder ready. Should you get errors regarding missing libm17, change the directory to libm17 and run:

make && make install && sudo ldconfig

That should deal with libm17 dependency. Go one step back and retry.

Create a named pipe

Before we point our freshly compiled decoder to a stream of M17 symbols, we need to execute a GNU Radio flowgraph. Let's start with creating a named pipe:

mkfifo /tmp/fifo1

Now, we are ready to connect the decoder with the receiver through this named pipe.

Start the decoder

Start the decoder by running

cat /tmp/fifo1 | m17-packet-decoder -c

The -c argument tells the decoder to display callsigns in decoded form (instead of hexadecimal values). At this point, nothing should happen - there is no signal reaching the decoder yet.

Run the gnuradio flowgraph

GNU Radio: RTL-SDR receiving static. The plot changes into an eye-diagram as soon as valid 4FSK M17 signal is received.

The flowgraph is here. Make sure that the output from the Symbol Sync block is connected to a File Sink (/tmp/fifo1) and the other blocks connected to its output are grayed out. In case they are not, you can disable blocks by selecting them and pressing 'D'.

Execute the flowgraph by pressing the Play button.

Result

m17-packet-decode CLI tool decoding a valid M17 packet - text message.

Upon valid packet reception, the terminal window should show a message similar to the one shown to the right.