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”.
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.”
After setting up the MMDVM duplex hotspot board, it is necessary to adjust the transmit and receive offsets in the MMDVMHost expert editor section. Basically this corrects the transmit (TX) and receive (RX) frequency of the board, if they’re not on frequency.
I went to a fellow amateur radio operator’s house recently to test my board with his HP 8920A Service Monitor. According to this ham, the service monitor is about 30 years old and cost around $30,000 new. Every 2 years he has it calibrated to NIST standards and it is accurate to +/- 1 Hertz.
The back of the board recommends a TX and RX offset of 500 and then tells you to adjust until the BER or Bit Error Rate is less than 5%. With my friend’s help, I tested the output frequency of the repeater/hotspot board without setting any TX offset and the transmit frequency (FRQ) was about 442.999300Mhz. So I adjusted the TX offset to 500 and retested the transmit frequency. It appears to be getting closer, showing a frequency of about 442.999700Mhz. So I bumped the TX offset up to 800 and that brought the TX frequency up to approximately. 443.000000Mhz, which is right on frequency.
Setting the RX offset is a bit more difficult because there isn’t really a way to test that within Pi-Star. So, I transmitted to the repeater board with my DSTAR handheld and found that I had a bit error rate of 0.1% which really doesn’t need to be fixed.
I set the RX offset equal to the TX offset (800) and that brought the bit error rate down to 0.0%, which is perfect.
I also worked on installing the Nextion Display Driver, however I’m encountering problems with it. The screen layout disconnects from the MMDVMHost software every time the screen changes. I need to work on this a little bit more to solve that problem. I’m thinking the problem is the layout I used. I was testing with a layout from another ham that displays a lot of information and I think the screen has trouble keeping up with the amount of data. I will detail this process in my next post.
First we’ll go turn on the DSTAR digital mode and configure it.
Start by going to your PiStar dashboard in your web browser.
After logging into your dashboard, click on the “Configure” tab.
Next we’ll turn on DSTAR in the MMDVMHost Configuration.
Notice that I also set the RF Hangtime and Net Hangtime to 5 seconds. The hangtime is the amount of time the MMDVM will stay in that mode before allowing other digital mode signals a chance to reach the repeater. RF Hangtime is the amount of time the MMDVM waits after the end of an incoming RF (Radio Frequency) signal. Net Hangtime is the amount of time the MMDVM waits after the end of an incoming network transmission from a distant station.
Click “Apply Changes.”
After the changes are applied, scroll down and you will see a new configuration box named “DSTAR Configuration.” The defaults will look like this:
Here are my settings for DSTAR and I’ll explain them after the photo.
Explanation of Settings
RPT1 Callsign – This is the callsign of the node or repeater with its module letter. B = 70CM / C = 2M
RPT2 Callsign – This is the callsign of the gateway, which in our case will be the same as the repeater, but instead of module “B” it will be “G” for “Gateway.”
Remote Password – This is the password used by the ircDDBRemote application as well as the command-line Remote Control application.
Default Reflector – This is the default reflector that the repeater will connect to. A reflector is like a group chat or conference server for many repeaters to connect to. Note that this can be set to “Startup” or “Manual.” I chose “Manual” because I do not want my repeater to automatically connect to a reflector when the repeater turns on.
APRS HOST – APRS stands for Amateur Packet Reporting System and allows data like GPS coordinates, altitude, speed, etc to be reported to other amateurs. This data can be viewed online at a few sites like https://aprs.fi the “rotate” APRS Host is a round robin server according to http://www.aprs-is.net/aprsservers.aspx
ircDDBGateway Language – Select your language and country code if applicable. I selected “english_(US).”
Time Announcements – If turned on, the hotspot/repeater will announce the time every hour.
Use DPLUS for XRF – I don’t use XRF reflectors, so I left it turned off, but this would allow you to use the DPLUS protocol to connect to XRF Reflectors.
Later this week, I’ll discuss programming your DSTAR radio as well as enabling DMR. I’ll also be adding a Nextion Display to this project and attempting to create my own Nextion Display layout in the Nextion Editor Software.
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.
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.
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.
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.
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.