The K2DLS DV4mini image for the Raspberry Pi 2 and 3 (only!) has been updated to include the October 12 release of the DV4mini Control Panel. This includes XRF through letter Z and REF up to 100 for the D-Star users. The image will fit nicely on an 8 GB SD Card.
A common concern of those running applications on a Raspberry Pi is SD Card exhaustion. It seems that after some amount of write activity, some SD cards fail to record further data. I first noticed this on an APRS system when system updates disappeared upon reboot.
The systemd journal is a useful tool that has largely replaced the syslog in modern Linux systems. It can also be redirected from the SD card to volatile memory. Note that by changing this you will reduce the number of SD card writes but your journal will not survive reboots.
The key to changing the storage location of the journal is found in /etc/systemd/journald.conf. Look for this line:
Uncomment the line by removing the #. Change auto to volatile:
Restart the systemd journal and your journal data will be written to /run/log, which is memory resident.
sudo systemctl restart systemd-journald.service
Only use good quality SD cards such, such as the SanDisk Ultra Class 10 memory cards. I recently had one that failed but was pleased when the SanDisk warranty program replaced the card at no charge.
Note: This image has been replaced by this one.
I’ve created an updated image for use with the DV4mini and the Raspberry Pi 2 and 3. It incorporates changes through dv4mini software version date 20170517. It also includes my Brandmeister XTG Dialer for use with extended routing.
Changes include enhacements for YSF reflectors, DMR, DStar as well as the introduction of a text chat window.
Thanks to Ulrich Prinz (DC3AX) for his hard work in support of the DV4 community!
For default passwords, see this post.
The Brandmeister XTG Dialer (BMXTG) has been updated to version 1.2. Enhancements include automatic download of the masters address list and automatic download of talkgroup IDs and labels. Any talkgroup label may be changed through use of the talkgroups.conf file. Be sure to review the README file for changes.
The changes will make BMXTG easier to configure and the user no longer needs to be concerned about IP address changes of the BM servers. A simple stop and start of the program will refresh the server list and talkgroup list automatically.
I’ve also updated the DV4mini Raspberry Pi 2/3 image to include BMXTG v1.2.
BMXTG is licensed under the Creative Commons Attribution + Noncommercial 3.0 License. Attribution Required / Noncommercial use permitted.
Retrogaming, the enjoyment of older computer based games and platforms, has been growing in popularity. I was intrigued a couple of years ago when, at a Vintage Computer Fest, I saw a multigame platform with hundreds of game ROMs copied onto a single emulation device. I had been wondering what the old games would look like connected via an HDMI input as opposed to the old low resolution RF transmitter method.
Then I came across the RetroPie project. RetroPie is a framework, delivered as an image, that allows you to run a number of game and computer system emulators on a Raspberry Pi. RPi models 2 and 3 are much better than older versions for this application. It is very simple to install and I was even able to use an old Colecovision controller to play Donkey Kong, Ladybug, and Carnival.
To connect the old controller, I came across a device called the Vision-daptor. One side sports a DB9 male connector, the other a USB B jack. It arrived just a couple of days after my order. The RPi recognized the device as a joystick controller without adding any additional drivers.
The Coleco emulation is handled by an optional component called CoolCV. CoolCV will also run under Linux, Mac and Windows. If you use a controller, rather than a keyboard, you may need to make some changes to key mappings in a configuration file.
There are plenty of sources for games online, but remember that games may still be covered by copyright. Some folks copy the contents of ROMs that they have purchased allowing them to play games for which they no longer have a gaming device. This requires some specialized hardware.
If you do download games via the internet, keep in mind that some sites may be vectors for the transmission of viruses and other malware. Exercise caution while you kill off those space invaders. And the games do look great on an HDMI monitor!
A key component of next generation air traffic control is Automatic Dependent Surveillance – Broadcast (ADS-B). The current FAA mandate is for all included aircraft to output ADB-B transmissions no later than January 1, 2020. But you don’t have to wait to receive and map ADS-B. There is a lot of air traffic to be seen.
Some folks are using complete downloadable images that are set up to feed flight tracking services such as FlightAware. If you’re interested in doing this, The SWLing Post recently featured an article that you’ll enjoy. I wanted to explore whether I could use some items already on hand to see a map of overhead aircraft on any computer on my home network.
I pulled out an older Raspberry Pi Model B and a 4 GB SD-Card and installed a copy of Raspbian Jessie Lite. The Model B has been retroactively called a Raspberry Pi 1 Model B. It is equipped with 512 MB of RAM, two USB ports and a 100mb Ethernet port.
I decided to use a spare older RTL-SDR stick based on the RTL2832U and R820T chips. This USB device comes with a small antenna that I hoped would be good enough to get me started. It is not in any way optimized for the 1090 MHz signals that are used by ADS-B and is roughly 19 parts per million (ppm) off frequency. It cost a bit over $10 at a hamfest a couple of years ago. The designs have improved since the early models were offered. Newer models include a TCXO (thermally compensated crystal oscillator) for stability and accuracy.
I needed software to take signals from the RTL-SDR stick and plot them on a map. That software is “dump1090”, originally written by Salvatore Sanfilippo. I added an install stanza to the Makefile, along with a systemd service file, for a smooth system install. I also needed to install the RTL-SDR USB drivers. The complete installation runs “headless”, meaning no monitor, keyboard or mouse need be connected. Remote management can be done via ssh.
First, bring the Raspbian Jessie installation up to date.
sudo apt-get update
sudo apt-get upgrade
Add some needed packages.
sudo apt-get install git cmake libusb-1.0-0-dev
Compile and install RTL-SDR drivers.
git clone git://git.osmocom.org/rtl-sdr.git
cmake ../ -DINSTALL_UDEV_RULES=ON
sudo make install
sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
Prevent native DVB-T drivers from loading.
sudo vi blacklist.conf
blacklist dvb_usb_rtl28xxu to the file and save. You may now reboot. After the system comes back online, plug in your RTL-SDR device and the driver should load. You may test by running
rtl_test -t. If the device is properly seen by the driver you should see the following:
Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T tuner Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 [R82XX] PLL not locked! Sampling at 2048000 S/s. No E4000 tuner found, aborting.
Don’t be concerned by the “No E4000 tuner found” message. The E4000 is an older chipset that is no longer used by today’s RTL-SDR devices.
Compile and install the dump1090 code.
sudo make install
sudo systemctl daemon-reload
Configure dump1090 options.
sudo vi dump1090
Here’s what I placed in the file.
# Default settings for dump1090.
DUMP1090_OPTS="--quiet --net --lat xx.xxxxx --lon -yy.yyyyy --ppm 19 --gain -10"
–quiet runs in the background
–net starts a webserver so that you can access via a web browser
–lat set to YOUR decimal latitude (negative for South)
–lon set to YOUR decimal latitude (negative for West)
–ppm if you know the ppm tolerance of your device (otherwise omit)
–gain -10 which sets gain automatically
A full parameter list can be reviewed by typing
With an antenna connected you can perform a quick device check by typing
dump1090 --interactive. If all is well you’ll see a screen like this:
Hex Mode Sqwk Flight Alt Spd Hdg Lat Long Sig Msgs Ti/ ------------------------------------------------------------------------------- A39D11 S 6 1 4 A25D36 S 1775 7 4 3 AAA593 S 2575 205 075 7 2 7 A25238 S 4 1 12 A0480B S 19650 8 28 3 ACF4DD S 3825 7 2 14 A41F61 S FDX3018 2800 211 025 40.428 -74.332 23 83 0 A6FFFE S 1753 LXJ550 30475 371 226 8 63 0 C060B3 S 4625 6 14 1 ACF69B S 23250 6 25 1 A2D27C S 24000 13 42 2 A0BF90 S 9500 249 257 5 3 9 A7D30A S 40000 8 111 1 AE0192 S SPAR958 32675 22 93 0 ACC040 S 7825 8 146 2 ACA5DF S 26600 6 79 0 A80C7B S 4550 9 108 1 A7CC00 S 7825 35 123 0 ACF841 S 1507 14425 50 132 0 A8C802 S NKS149 23575 332 216 39.995 -74.262 12 160 0 A61949 S UAL1105 2725 14 60 0 AC2E20 S 1006 19925 22 130 0 AB766A S DAL1526 8525 216 038 40.444 -74.213 81 249 0 AA4440 S 5400 253 066 6 6 13
Control-C exits this screen.
Now start the dump1090.service.
sudo systemctl start dump1090.service
If all goes well, a
netstat -an will show that there is a binding to port 8080.
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
Now you can start up a web browser from any computer on your home network and see a map of planes overhead. If your router supports internal dynamic DNS you can name the RPi and access via something like
http://skynet:8080. Alternatively, use the IP address, which can be obtained via
eth0 Link encap:Ethernet HWaddr b8:27:eb:12:34:56 inet addr:192.168.1.123 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::1234:5678:8765:abcd/64 Scope:Link inet6 addr: fd68:bee:1f21:2221::5/128 Scope:Global inet6 addr: fd68:bee:1f21:2221:1234:5678:8765/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:990830 errors:0 dropped:418120 overruns:0 frame:0 TX packets:323700 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:87491798 (83.4 MiB) TX bytes:207659746 (198.0 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
In this case, the URL would be
Once the map appears, re-position it to your part of the world and enjoy learning about what is flying overhead. You can enhance your enjoyment by listening to your closest airport tower or air traffic control frequencies on a scanner. These transmissions use amplitude modulation (AM) and can be monitored an another RTL-SDR stick or a scanner, even a relatively old model.
Note: This image has been replaced by this one.
The DV4mini software developers have been hard at work fixing bugs, especially with DMR, and making things work better. So, I thought it time to create a new DV4mini RPi image for your enjoyment. I first built my own image last year when I wanted to have turnkey vnc access to my DV4mini/RPi system.
This build no longer contains the unsupported DV4MF2 software. Rather, it has the most recent version of the DV4mini dashboard (201.77), the updated dv_serial (20170106) and my add on Brandmeister XTG Dialer. If you haven’t used the XTG dialer before, you’re in for a treat. It works great with a touchscreen display, but just fine with a keyboard and a mouse too. You might need to edit a couple of text files to set it up to your liking. For details, see /opt/dv4mini/bmxtg/README once you have the distro up and running.
Important default password info follows.
root / raspberry
pi / dv4m
vncviewer – dv4m
You SHOULD change the default passwords after you get things going. The standard unix passwd command is used to change the root and pi passwords. To change the vnc password, use
[Update January 17, 2017:
The Brandmeister XTG Dialer (bmxtg.py) is now easier to configure. The program itself no longer needs to be edited to get it up and running. All configuration items have been moved to separate files. Download version 1.1 and be sure to read and understand the README file before you begin.]
I’ve received some inquiries on how to get the Brandmeister XTG Dialer script running. Assumptions here are that you can navigate your way around Linux, you know how to use a text editor, and you can look at the python program and figure out how to make a simple change.
1 — Copy the bmxtg.py program file along with the three configuration files (talkgroups.com, buttons.conf and masters.conf) to your home directory. It doesn’t even need to be on the same computer that your dv4mini is connected to, as long as you are behind the same NAT router.
2 — Figure out the URL for the BM Master that you are currently connected to. To do this look at the Brandmeister Masters page. Looks through the list, locate your master, click the status button and note the URL host portion before the first slash. It could be a name or it could be an IP address. 3 — Edit the bmxtg.py program and look for the bm_master assignment statement. There are currently two, with one of them commented out. You’ll need the bm_master variable to point to the master that your dv4mini is currently connected to. For example, master 3021 is in Canada. Clicking the status button returns http://220.127.116.11/status/status.htm. The line would read:
bm_master = '18.104.22.168'
Be sure that only one bm_master assginment statement is active. You can leave the others there but comment them out by starting the line with a #.
2 — Carefully read and follow the instructions in the README file.
I’ve long hoped for a way to make it easier to change DMR talkgroups. I use a DV4mini and software installed on a Raspberry Pi 3 with a touch screen display. Wouldn’t it be nice if I could key in a Brandmeister extended talkgroup (XTG) number directly on the RPi, rather than use an Android app or a web browser? The now defunct DV4MF2 dashboard was a step in the right direction with XTG support, but its talkgroup list is now hopelessly out of date. Wireless Holding’s version of the dashboard allows connection to Brandmeister reflectors and to TG 4999, but doesn’t directly provide access to the XTGs.
So in the true Amateur Radio spirit, I built my own solution. Long ago, I made my living as a software developer. It was so long ago that we were called computer programmers. Nonetheless, I did some research and found that GTK provides support that I could use from within a Python program to create windows, buttons and so on in a Linux GUI environment.
To further date myself, most Linux based programming that I’ve done in the past 20 years has been in Perl or Bash. I have recently gotten involved in implementing the Open Source Fail2ban host IPS system, which uses Python regular expressions. I have become slightly proficient with regexes, but knowing how to use them to match text in logs wasn’t going to help me.
Thankfully, a fellow named Kris Occhipinti put together a treasure trove of programming instruction videos, some of them covering Python, GTK, and specifically how to create a keypad. His intent in some of the videos was to create an app for spoofing caller id, but I could borrow what I needed.
What I came up with is a Python/GTK app that opens two windows. One window is a dialer keypad and the other window is a memory present keypad. A Brandmeister TGID can be keyed in from a keyboard, pressed on a touchscreen, clicked with a mouse…or you can just use a preset with a label like “USA” or “Tri State” instead of a number. The app makes use of the published Brandmeister API, which is very simple, uses HTTP and returns data in JSON format. Python very nimbly handles it all.
If you’re a licensed amateur radio operator, have a DV4mini, and are Linux proficient, please give it a try and leave your feedback below.