MMDVM, Raspberry Pi, PiStar & DMR

This is a work in progress and I will be revisiting this article to update and organize it as time passes and I learn more....

I've been interested in digital radio, having some experience with P25 in the last few years. As I started to buy equipment, I kept this in mind. I bought both a Baofeng RD-5R and a TYT MD-9600 to use with DMR Tier II as the prices were reasonable as I learned about 2m and 70cm.

I can just reach the VE7RAG repeater which does DMR from my home with the RD-5R if I stand outside in just the right place. The VE7NHR repeater is closer to me and also does DMR with the same settings as VE7RAG, but I have never been able to use it successfully. Perhaps there is some high rock in the way?

I knew that a digital radio "hotspot" connected to the internet in my shack would allow me to make connections around the world quite easily. I already had a couple of Raspberry Pi single board computers (the older of the two is currently in use as a PiHole) in addition to the radios, so I was already partly prepared for this project.

So, the fun begins! I bought a Multi Mode Digital Voice Modem (MMDVM) with OLED display from a seller on eBay for about $26 Canadian, but you can even order these from Walmart if you want to!

What I needed to do this project:

  1. The MMDVM board
  2. Some model of Raspberry Pi (I had a 3B+)
  3. A GPIO header extension for my Pi
  4. A DMR ID
  5. A Brandmeister account
  6. Soldering tools
  7. PiStar v4 software
  8. A radio capable of DMR

Of course, you could choose to do this with another digital mode such as D-Star, P25, etc.

Beware eBay: the item description said "fully assembled." Not so. Not a big deal, but the item was supposed to be fully assembled, which was why I bought it instead of one that I knew was not.

The OLED board and antenna connector needed to be soldered onto the MMDVM board. The pins in this picture are necessary if you use the MMDVM with a Pi Zero W.

So, after a soldering mishap that I remedied, this is sitting atop my Raspberry Pi 3. My Pi had a case already and the MMDVM "hat" would not fit with the case in place. A header extension brought the GPIO pins up high enough that I could install the hat.

I learned the hard way about the extra pins in the header extension. I had bent the pins below the LCD to the side so that they would not make contact with the underside of the MMDVM board. Dumb idea. Either pull the unneeded pins out (it's easy) or clip them off. I bumped the LCD and the pins must have made contact as the OLED no longer lights up. Fortunately it is not needed for the modem to operate and the modem was not damaged.

I downloaded the latest version of the Pi-Star software and wrote it to the SD card for my Pi. I'm a Linux user so I used dd to write the image. There are tools and instruction for this step for any operating system, just do a quick search to find the one that is useful to you.

Once I had the image written to the SD card, I used the WiFi Builder to create and download a configuration file for my home network. Copy the file in the the /boot directory of the SD card and your Pi will connect to your wireless network without any further fuss when you boot it up.

When I did, the display says "starting" and that's all I see. I was expecting to see more based on all the YouTube videos that I watched. Turns out that you don't until you configure the screensaver and tell it to scroll later on in the initial setup.

Setup of the Pi Star software was simple. I opened a web browser and entered the IP address of the Raspberry Pi as the URL.

From top to bottom I set the following:

  1. Turned on DMR
  2. Set OLED Type 3 as my display was 0.9"
  3. Set my callsign, DMR ID and address details
  4. I chose the frequency of 433.900 MHz as that is what the eBay listing for my MMDVM suggested
  5. Set STM32-DVM / MMDVM_HS Raspberry Pi Hat (GPIO) for the radio type
  6. There was no need to set an APRS host for me, but I did anyway
  7. Chose Brandmeister_Canada_3201 as my server
  8. Set a security password in my Brandmeister account and added it to the configuration

You do need to click the Apply Changes button as you proceed to set your choices.

It is likely that I can set other frequencies to operate on but I have not tried. The one that I did set is within the 70 cm band plan for BC.

At this point I added the simplex frequency to my HT and tried transmitting on the lowest power setting. Pi-Star did not show any activity. Now what?

From poking around on the net I knew that I had to set the Tx and Rx offset in Pi-Star to take into account that the MMDVM is not that accurate. This is found in Configuration > Expert > MMDVMHost and scrolling down to the Modem section.

The trouble is, I did not get the setting information with the MMDVM and the vendor was not able to provide it. I was on my own.

It seemed that these settings were either the Pi-Star default of 0 or in the negative numbers as low as -500 from the YouTube videos that I found. A couple of random guesses were not helpful.

I next found the MMDVMCAL utility that is included with Pi-Star for setting the offsets. I was not able to successfully receive anything with my HT at this point either, but I set up my RTL-SDR with SDR# (AirSpy) and could see that there was a signal at 432.980 MHz.

Now what? I did not know anyone to call on that had done this before and my fellow hams locally had not heard of an MMDVM.

I went to the Brandmeister web site, listed the hotspots and then filtered them by VA7. I found Ben, VA7FI who had an MMDVM based hotspot. I e-mailed and asked if he had time to share some of his wisdom.

It turns out that he did have an MMDVM board like mine and was very generous with advice. Between the two of us the consensus was that the Tx / Rx frequencies were probably not matching.

I knew my MMDVM was transmitting as I could hear it on my RTL-SDR using AirSpy. I knew my HT was transmitting as my computer speakers rumbled when I pushed PTT. I finally took a wild guess and set my offsets to 1000, nothing happened. but 1000 allowed me to see the HT transmitting on the Pi-Star dashboard but with a high BER. I worked it down to a setting of 660 by transmitting to the Parrot and seem to be good to go.

I was still a bit buffaloed as I could see the PiStar interface changing in the YouTube videos and conversations progressed. My interface did not show that. Ben suggested adding a static talkgroup and once I began to see what I expected.

At this point I was able to make a successful QSO with a gentleman in Toronto on the Canada wide TalkGroup 302. After a bit of investigation I've found that I can hold a conversation up to about a block away from the house, even though the PiStar is in the basement. It would be interesting to try with a decent sized antenna somewhere higher in the air.

I now have two things left to try:

  1. If you have an SDR, you can use it to refine the BER of your MMVDM.
  2. Use MMDVMCAL to tweak the Tx / Rx offsets

So far I cannot make my handheld hear the MMDVMCAL tone and I suspect it is a bad setting in the codeplug that is preventing this. I'm guessing that I have to set the DMR ID in the radio to 1 instead of using the DMR ID assigned to me. We'll see.

I will return and polish this as I learn more or anyone comments.