I enabled DMR last week and spent some time configuring it. This week I had to set the DMR transmit deviation in order to get it to work.
Essentially setting the TX deviation for DMR is the same as how I set the transmit deviation for DSTAR in the beginning. I used a service monitor and checked the deviation level while the repeater was transmitting. It was lower than it should have been, so I increased the level in the expert MMDVMHost editor on the line that said DMR Level. This adjusted the deviation for just DMR, leaving the deviation alone for all other modes.
I also created a box/case for my project out of a large crayon box that I found at WalMart for about $3.
- I used a template for the Pi to drill four holes in this box for some #4 screws to mount the Pi and MMDVM duplex. I also put a piece of acrylic between the Pi and this case so that it wouldn’t be pressing against the back of the Pi.
- I then cut out a hole for the size of my 3.2in Nextion Display.
- I also drilled holes around the display cutout to mount the display in place.
- I used plastic from an old ice cream container to create a bezel to go around the display since part of the display doesn’t show anything and is instead used for the touch screen controller/wiring.
- I added two external antenna connectors. I bought two male to female jack/panel mount SMA connector extensions for about $6 each and then I added some right angle SMA connectors (male to female) 5 for about $4.
- For the external antennas I drilled the holes in the box as far apart as I could and installed the female jack connectors through the hole.
- Then I screwed a right angle SMA connector on each jack.
- Next, I used a couple right angle SMA connectors on the MMDVM hotspot/repeater board.
- Finally, I installed all of the electronics.Here is the finished case.
Last week, I had three problems, two of which I couldn’t fix.
Problems & Solutions
Problem 1 was solved by recompiling the Nextion Driver and reinstalling it by hand.
Problem 2 was that the repeater wasn’t starting up as quickly as it does at home. I thought this was caused by the enterprise WiFi at my university. I’m fairly certain that was the problem. This issue seems to sort itself out, if you’re patient. I’m certain the issue is due to the time it takes the Pi to authenticate with the enterprise WiFi. I did add a button to restart the WiFi from the Nextion display. It is two simple commands.
I added a button to the display’s “System” or utilities screen and made it execute the following commands.
sudo ifdown wlan0 && sudo ifup wlan0
Basically this turns off the wlan0 interface and turns it back on.
Problem 3 was that I couldn’t always access the PiStar dashboard over the WiFi. That problem wasn’t really a problem. Again it had to do with the time the Pi takes to authenticate with the WiFi. I found that if I wait about a minute or two after the display shows the IP address, then go to the displayed IP address in a web browser, the PiStar dashboard appears as it should.
As for the issue with the self-assigned IP address over the ethernet connection, it doesn’t appear to matter. The two devices will communicate with one another given enough time.
A problem I ran into this week was that the repeater board doesn’t always initialize and connect to the software on the raspberry Pi, this is fixed by stopping and starting the mmdvmhost service, which can be done from the Nextion display.
Enable & configure dmr
The first thing I did was enable DMR and I did this from the expert settings for MMDVMHost instead of the main configuration tab. The reason for this is that when you configure from the main tab and click apply changes, you can lose settings you set in the expert MMDVMHost page.
- Navigate to the expert editor for MMDVMHost.
- Scroll down to DMR.
- Your settings should look like this:
- What do those settings mean?
Enable – On (1) or Off (0)
Beacon – Turn on (1) or off (0) beacon or a transmission that happens every so many minutes/hours to tell others your repeater exists.
ColorCode – A number for your repeater, typically 1, but may be different. A radio set to a color code of 1 cannot talk to a station with their color code set to 2.
SelfOnly – Limit DMR communication to your own callsign only (a Private hotspot)
DumpTAData – (1) – Talker Alias data (person’s name/location/callsign) are dropped (0) – Talker Alias data (person’s name/location/callsign) are sent to the RF stations. This can cause issues with some radios, but I set mine to off (0).
ModeHang – The number of seconds the repeater should stay listening for DMR over RF after the end of a transmission.
- Next scroll down to the DMR Network section of MMDVMHost.
- What do these settings mean/do?
Enable – Turns on the DMR network/gateway to the internet.
Address – The IP Address of the Master Server you’re using. I used Brandmeister 3108 and found its IP address on the Brandmeister website under “Masters.” I believe this is only visible after you’ve logged in with your callsign and Brandmeister password.
Port – This is the port on the server you’re connecting too. Leave this as the default.
Password – The password to the Master Server. The default for most Masters is “passw0rd”. That’s a zero in place of the letter “o”.
Slot1 – This turns on or off slot 1. DMR transmissions are sent in one of two “Time Slots.” Repeaters can receive and carry on two completely separate conversations with one on each time slot.
Slot2 – This turns on or off time slot 2.
ModeHang – This is the number of seconds the repeater should remain in DMR mode after the end of a network transmission.
- Click “Apply Changes”
Add Brandmeister panel
- Next I added the Brandmeister control panel to the repeater’s admin dashboard. I followed these instructions.
- This is what the Admin Dashboard looks like after adding the Brandmeister control panel. This screenshot was taken before I changed to the US Brandmeister 3108 Server which is why it says “BM United Kingdom” as the DMR Master.
This week, I downloaded a Nextion Display layout created by PD0DIB and modified it to include a system control page and an information page. After trying out the Nextion Driver Installer created by ON7LDS, I could get the screen to display information one time, but after switching pages, the data would disappear. To solve this problem, I looked at the Nextion Driver Installer script and followed most of the steps manually. Doing it this way also allowed me to switch the displayed CPU temperature from celsius to Fahrenheit. This pretty much solved the issues with the display.
In the Nextion Driver Installer Script, I followed this section:
if [ "$ND" = "" ]; then
echo "+ No NextionDriver found, trying to install one."
killall -q -I MMDVMHost
killall -9 -q -I MMDVMHost
if [ "$CHECK" = "PISTAR" ]; then
cp $DIR"/mmdvmhost.service.pistar" /usr/local/sbin/mmdvmhost.service
if [ "$CHECK" = "JESSIE" ]; then
cp $DIR"/mmdvmhost.service.jessie" /lib/systemd/system/mmdvmhost.service
cp $DIR"/mmdvmhost.timer.jessie" /lib/systemd/system/mmdvmhost.timer
cp $DIR"/nextion-helper.service.jessie" /lib/systemd/system/nextion-helper.service
if [ -e /etc/systemd/system/nextion-helper.service ]; then
echo "+ there is already a link /etc/systemd/system/nextion-helper.service"
echo "+ I'll leave it like that."
ln -s /lib/systemd/system/nextion-helper.service /etc/systemd/system/nextion-helper.service
cp NextionDriver $BINDIR
echo "+ Check version :"
echo -e "+ NextionDriver installed\n"
echo -e "+ -----------------------------------------------"
echo -e "+ We will now start the configuration program ...\n"
Basically all I did was the following:
- Stop MMDVMHost with “sudo service mmdvmhost stop”
- Download the Nextion Driver from github into the /tmp folder
git clone https://github.com/on7lds/NextionDriver.git
- Compile the driver by running “make”
- Then you should end up with a binary called “NextionDriver”.
- Copy the binary into /usr/local/bin with
sudo cp NextionDriver /usr/local/bin/NextionDriver
- This was all done AFTER running NextionDriverInstaller.sh on its own. So, my installation had all the helper files already installed before I ran through these commands.
The hotspot/repeater doesn’t startup right away like it does at home. I’m guessing this is because of the enterprise WiFi at my University. Sometimes the repeater starts right up and works perfectly and other times it does not work.
Problem 2 Solutions
- Create a simple script to reset the WiFi connection on the Pi and create a button on the Nextion Display Layout that would allow me to run this script.
- Use the same script, but have it run after the Pi is completely booted and add a line to restart the MMDVMHost service.
I could not always access the PiStar dashboard through the ethernet/crossover cable or through the University’s WiFi. Again sometimes I had no issues and other times it would not connect. At first I thought this was due to having both the ethernet and the WiFi running on the Pi, but after removing the ethernet, I had the same issue. I’m growing more suspicious of the enterprise WiFi. As for it not working over the crossover cable, I believe this is due to the fact that the computer is addressing itself with a self-assigned IP address (a 169 address). The problem appears intermittent.
Problem 3 Solutions
- Use the solutions for problem 2 as I believe the two problems may be related.
- Create a static IP on the Pi and the Computer for the ethernet connection.
- Change the PiStar firewall rule for the dashboard from “Private” to “Public.”
- Enable DMR and configure it.
- Install the Brandmeister control panel on PiStar.
- Program the DMR Radio.
- Create a blog post about programming the DSTAR and DMR radios.
I also wanted to create a 3D printed case for this project, however I am not sure I will have enough time to do that, especially with encountering these problems.
In this post I will explain how to update, upgrade, and configure the basic settings for Pi-Star. I will also explain how to register your amateur radio callsign for DSTAR and DMR use.
Part 1 of this post: https://n3tdm.tdmorris.com/week-4-setup-part-1/
First of all, for this project you MUST be a licensed Amateur Radio Operator. In the USA, that means passing a licensing exam and being assigned a callsign from the Federal Communications Commission (FCC). For licensing information check out the American Radio Relay League.
Register your Callsign for Dstar
- Follow the instructions to register your own callsign found here: http://www.dstargateway.org/D-Star_Registration.html
- After you receive your confirmation email, go to this page to learn how to assign terminal ID’s to your callsign (STEP 1 only). Terminal ID’s are just what they sound like, it’s an identifier for your individual station. If you’re just using one radio, you can typically set a terminal ID of a single space, however we’re setting up a repeater, so you would need the space terminal ID and whatever module you’re using B for 70CM or C for 2M frequencies.
- My terminal ID’s look like the following:
- Here is more information on Terminal ID’s: https://wb1gof.dstargateway.org/DStarTerminalIDs.html
- After you’ve registered for DSTAR you need to get a CCS7 ID for DMR.
Get a ccs7 id number for DMR / DSTAR
- Head over to this site and fill out the form selecting the option for a private callsign and NOT a repeater. I’m going to be setting up a private repeater for experimentation so it won’t be running 24/7.
- Once your request is processed, you’ll receive an email containing your CCS7 ID number. Put that in a safe place.
Setup and Configure wifi
In order to configure this, because I had no way of getting the IP address from a headless Raspberry Pi, I connected a crossover cat5e cable between the Pi and a PC so I could connect into it and make adjustments.
That said, I want to first explain how I setup the enterprise WiFi for the Pi to work on Pitt’s wireless network.
- I followed the instructions located here: https://gist.github.com/chatchavan/3c58511e3d48f478b0c2
- First open a new tab in your browser and go to
- Enter “pi-star” without the quotes for the username and press enter.
- Enter “raspberry” for the password without quotes and press enter.
- You should be greeted with a screen spelling out PI-STAR.
- Now type
sudo nano /etc/networking/interfaces
- You should see the following screen:
- Use the arrow keys to navigate the page and move down to the section that says
iface wlan1 inet manual
- Erase the section above and enter the following:
iface wlan1 inet dhcp
pre-up wpa_supplicant -B -Dwext -i wlan1 -c/etc/wpa_supplicant/wpa_supplicant.conf
post-down killall -q wpa_supplicant
- Press CTRL+o and press enter, then press CTRL+x to exit the nano editor.
- Then go to the Configuration page of your Pi, then to the Expert tab, then click “WiFi” in the “Full Edit” line of editors.
- You should see a list of networks (probably just one) after a header of sorts
- Make sure the country code following “country=” matches your country code. In the USA it’s “country=US” without quotes.
- For the enterprise wifi you need to make a new network in this config file. For WIRELESS-PITTNET at the University of Pittsburgh at Bradford, I used the following settings. In this editor I set up the following network:
- Go back to your SSH access page in your browser and do the follow steps.
- Enter the following substituting YOUR_PASSWORD with your university email password leave the single quotes around your password. and press enter.
echo -n 'YOUR_PASSWORD' | iconv -t utf16le | openssl md4
- Next copy the resulting random letters and numbers into the WiFi editor in the other tab after the colon where it says “password=hash:”
- Now go back to your SSH editor and clear your history by typing:
- Press “Apply Changes” at the bottom of the page beneath the wifi editor.
- If you followed these steps correctly your pi should connect to WIRELESS-PITTNET.
- In your browser go the main page of your Pi-Star dashboard at:
- You should see the following page:
- Start by selecting MMDVMHost and Duplex (repeaters) or Simplex (personal hotspots), then click apply changes.
- After the services are restarted, you should see the following page:
- I started the configuration process without the actual interface board, keep that in mind. I did not activate any services yet, however I set the hostname, the node callsign, the RX/TX Frequencies, the GPS coordinates, the town (in the format of “city”, “grid locator”, the country, the URL (this can be either a manual URL of the dashboard for the repeater or automatic and will default the QRZ page for the node callsign), the node type (public – anyone can use it / private – only the node callsign can use it), the time zone, and the dashboard language_country code.
- You can also setup the firewall if you wish. Private makes it only work within your local network, public will make it work from outside your network provided the correct ports are forwarded on the router.
- I left Auto AP on because if the Pi doesn’t/can’t make a network connection, it will create a wifi hotspot of it’s own so you can connect to it and configure the network settings.
- I left UPNP turned off. If your router also has UPNP, you can turn this feature on and Pi-Star will configure your router’s firewall to open the necessary ports.
I found a neat little circuit board on eBay that works with MMDVMHost software and is a mini personal repeater on a single board. I thought this would be a great way to demonstrate a repeater without having to bring in multiple radios, a power supply, the computer, etc. So I’m going to use the MMDVM_HS_Dual_Hat. The board on eBay is a cheaper Chinese “clone” of the original board which is pictured below.
This week I continued my research on digital repeaters and software. I’ve decided to use a Raspberry Pi with the Pi-Star image, which contains software used to setup, configure, and maintain a digital repeater. It’s the most complete package I’ve seen and is widely recommended by other hams running digital repeaters. I have worked with this particular software package before so I have some understanding of how it works and how to use it. It basically contains many pieces of software which work together to manage and control a digital repeater. It can also be used to control digital multimode hotspots (duplex or simplex hotspots).
Pi-Star contains the popular digital radio software created by Jonathan Naylor, G4KLX: ircDDBGateway, DSTARRepeater, DMRGateway, and MMDVMHost. It also contains a complete dashboard and can support a wide variety of hardware. MMDVM stands for Multi Mode Digital Voice Modem.
The Raspberry Pi is a great piece of hardware for projects like this due to its cost, reliability, availability, and small size. I will be using the one I have already, a Pi 3B.
For my capstone project, I want to build a digital multimode amateur radio repeater.
Amateur Radio is a two way radio service which in the United States is licensed by the Federal Communications Commission (FCC). It allows amateur radio operators the ability to talk to one another around the world using radio and to experiment with/design radio(s) and radio antennas. Amateur radio is often called “ham” radio. Ham radio is also used during natural disasters/emergencies to communicate when all other means of communication have failed.
I earned my Extra Class license about nine years ago. The Extra Class license is the highest license class that one can earn. While I’m not very active on the air talking to people, I enjoy the electronics and technology side of ham radio. More recently I have been working with digital repeaters, mainly Digital Smart Technology Amateur Radio (DSTAR) repeaters and occasionally Digital Mobile Radio (DMR) repeaters.
For my capstone I want to setup a multimode digital repeater that will switch between DSTAR and DMR depending on the signal it receives. This will be accomplished through the use of readily available software running on a Raspberry Pi that will be interfaced with a radio operating in the 70cm band.
The project will include a Nextion display to display information about the repeater and who is currently talking & allow one to control the repeater via touchscreen. I will design a screen layout for the Nextion display using Nextion Editor.
I will also add or enable a few extra features such as remote control through the ircDDBRemote app for DSTAR, remote SSH access, automatic linking based on a schedule, and possibly a few more as time permits.
I would like to learn how to design or modify and print a 3D printed case for my project too. 3D printing is something I have very limited experience with and would like to learn more about.