M17 Quickstart OpenWebRX

This is meant to be a series of short and sweet guide to a few ways to run M17 over RF today. This one focuses on receiving M17 with OpenWebRX.


There are a few options for basic testing, that need more work for integration:

  • SDR receiver - rtl_fm
  • SDR transmitter - GNU Radio Companion

And some that are closer to being useful, if not outright usable already:

  • SDR receiver - OpenWebRX
  • WX9O’s TNC3 and a capable mobile radio + m17_kiss_ht
  • G4KLX’s M17Client and an MMDVM interface or hotspot

I’m going to start with OpenWebRX simply because I dislike writing guides and I’m hoping it’s the easiest. Let’s go!


I know DD5JFK runs https://www.openwebrx.de/ so I started there. The website helpfully has “Get OpenWebRX” right in the top menu, and a drop down menu shows “Raspberry Pi” images, so I clicked that and downloaded the latest .zip.


While that downloaded to my laptop, I went looking for the instructions and found them here: https://github.com/jketterl/openwebrx/wiki/Setup-Guide

Installation to the SD card from linux was easy. I also noticed the line The ssh server is disabled by default. If you want to enable it, put a file named ssh (no content needed) on the "boot" volume after flashing the image. and so I made sure to create that file after everything copied over.

[root@ryokan Downloads]# cd /tmp/
[root@ryokan tmp]# mkdir rpi
[root@ryokan tmp]# cd rpi
[root@ryokan rpi]# unzip ~mike/Downloads/2021-08-03-OpenWebRX-full.zip
Archive:  /home/mike/Downloads/2021-08-03-OpenWebRX-full.zip
  inflating: 2021-08-03-OpenWebRX-full.img
[root@ryokan rpi]# dd if=2021-08-03-OpenWebRX-full.img of=/dev/mmcblk0 bs=4096
641024+0 records in
641024+0 records out
2625634304 bytes (2.6 GB, 2.4 GiB) copied, 99.6565 s, 26.3 MB/s
[root@ryokan rpi]#
[root@ryokan rpi]# sync
[root@ryokan rpi]# mount /dev/mmcblk0<tab>
mmcblk0    mmcblk0p1  mmcblk0p2
[root@ryokan rpi]# mount /dev/mmcblk0p1 /mnt/1/
[root@ryokan rpi]# cd /mnt/1/
[root@ryokan 1]# touch ssh
[root@ryokan 1]# cd
[root@ryokan ~]# umount /mnt/1/
[root@ryokan ~]#

At this point I ejected the sd card and put it in a waiting Raspberry Pi 3. While it booted I grabbed an RTL-SDR - one with a good TCXO, specifically the nooelec nesdr smart - and plugged it in on the raspi.

Very shortly after, I typed in http://openwebrx into my web browser and it was already running!

(If local DNS doesn’t work for you, you can usually find the raspberry pi’s ip address listed somewhere on your router - look for a page called something like “connected devices” or “DHCP leases”).

I tried to login to the OpenWebRX settings page, but couldn’t figure out the password - pi:raspberry wasn’t accepted. I’ll come back to that, my goal right now is to see if M17 is received properly.

So I went and found my HackRF, and got that transmitting an M17 test signal per the next guide. I did notice that the default openwebrx 2m band doesn’t include all of my privileges on 2m so I had to adjust my transmit frequency.

After that, OpenWebRX just worked. Clear, beautiful M17 audio.

Make sure to compare the audio in the video with this original file - 4 seconds into the video corresponds to around 50 seconds into the audio.

Note that most of the artifacts are from the original recording!

Very nicely done, DD5JFK, WX9O, and friends. That was easy.