Raspberry Pi 4 Available!

The UK based Raspberry Pi Foundation has announced the availability of the latest advancement in the Raspberry Pi single board computer series. The Raspberry Pi 4 Model B offers:

  • 1.5 GHz quad-core 64 bit Arm Cortex-A72 CPU
  • Up to 4 GB RAM
  • Full throughput gigabit ethernet speed
  • Dual band wireless networking
  • 4k video decode in hardware

For the first time, the amount of memory is an option selected at time of purchase.

While some may view this upgrade as incrememental, those with larger memory or dual monitor needs will see this as a transformative improvement. A new release of the Raspian operating system based upon Debian Buster will support the RPi 4 B+ and its new features.

A complete desktop kit is also being offered. Can the Raspberry Pi replace your desktop PC? Perhaps.

Turn off HDMI on Pi-Star (Easier)

Here’s an even easier way to turn off HDMI on your Pi-Star image running under Raspbian. If you’re running one of the Pi-Star 4.0 release candidates, the tvservice command may already be installed. You can check by issuing the following command:

which tvservice

If it is installed, just add the HDMI off command to /etc/rc.local.

# Turn off HDMI
/usr/bin/tvservice -o

If you’re running Pi-Star 3.x, I learned that you can install tvservice from a .deb package.

sudo apt-get install libraspberrypi-bin

For some reason this did not turn up during my initial searches but was pointed out over in the Pi-Star Forums by Dennis (W1MT).

It also seems that Andy (MM0MWZ) is considering adding a button in the future which would allow turning off HDMI from the web interface.

Turn off HDMI on Pi-Star Image

It is common practice on headless Raspberry Pi computers to turn off the HDMI to save some power. Even without a monitor attached, the HDMI hardware seems to draw ~ 50 ma of current. However, in the interest of saving space in the image, Pi-Star (as distributed) lacks the necessary tvservice command to turn off the HDMI hardware.

This command is part of the Raspberry PI “userland” package, which for some reason is not packaged as a .deb. So you’ll have to grab the code off github, but it is pretty easy. Before starting, make certain that you have expanded the filesystem of your image to fill the SD card.

sudo pistar-expand
sudo reboot

After the reboot, do the following:

rpi-rw
git clone https://github.com/raspberrypi/userland
sudo apt-get install cmake -y
cd userland
./buildme

Add the libraries to the ld.so search patch by creating a file named “userland.conf” in /etc/ld.so.conf.d. In that file add the following line:

/opt/vc/lib

Next, update the ld.so search path:

sudo ldconfig -v

You can now run the tvservice command:

## Status
sudo /opt/vc/bin/tvservice -s
## Turn off HDMI
sudo /opt/vc/bin/tvservice -o

All that is left to be done is to add the HDMI off command to your /etc/rc.local file so that it will run every time the system boots.

A New Raspberry Pi for π Day

The Raspberry Pi Foundation has announced the new Raspberry Pi 3 Model B+. This incremental design improvement provides some interesting features.

  • 1.4GHz 64-bit quad-core ARM Cortex-A53 CPU
  • Dual-band 802.11ac wireless LAN and Bluetooth 4.2
  • Faster Ethernet (Gigabit Ethernet over USB 2.0)
  • Power-over-Ethernet support (with separate PoE HAT)
  • Improved PXE network and USB mass-storage booting
  • Improved thermal management

Raspberry Pi 3 Model B+

The 5 GHz wifi and power over ethernet capabilities are especially interesting improvements. The Raspberry Pi is a great experimenter’s computer. Many amateur radio operators and makers are using them in purpose built applications such as digital hotspots and home control. You can see more here.

Update: 03/19/2018 — One difference that I failed to note betwee the RPI 3 Model B and the B+ is that while the RPi 3 Model B sported 1 GB of RAM, the B+ cuts it back down to 512 MB. While 512 MB may be enough for your application, if it is not, you may with to stick with the original RPi 3 Model B.

Update: 05/03/2018 — I have verified that RPi 3 Model B+ does still have 1 GB of RAM.  The reference to 512 MB RAM came from the specifications listed on the RPi Foundation web page when originally released.

Update: Monitoring NextGen ATC (on the cheap!)

Note: This article was originally published in March 2017. I’ve revisited and updated it in preparation for a talk that I’ll be giving at the 2018 Winter SWL Fest. I’ve simplified the installation process. While doing so, I learned that Google now requires an API key for the application to have access to their maps. My github fork of the dump 1090 code has been updated to account for this development.

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.

dump1090 as viewed via a remote web browser.

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 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 Stretch 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.

There is a security change that comes along with Stretch. ssh is now disabled by default. After copying the initial Stretch image to the SD card and BEFORE removing it to place the Raspberry Pi, mount the boot partition and create an empty file named “ssh”. If you are not using ethernet, you could also pre-configure wifi settings.

First, bring the Raspbian Stretch 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 librtlsdr-dev rtl-sdr

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.

git clone https://github.com/K2DLS/dump1090.git
cd dump1090
make
sudo make install

Configure dump1090 options.

cd /etc/default
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 dump1090 --help.

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 ifconfig.

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 http://192.168.1.123:8080.

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.

November DV4mini Image Update

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.

Reducing SD Card Writes With Raspbian

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:

[Journal]
#Storage=auto

Uncomment the line by removing the #.  Change auto to volatile:

[Journal]
Storage=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.

DV4mini RPi Image Update

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.

BMXTG 1.2 Released

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.

DV4mini control panel in the background with the Brandmeister XTG Dialer in the foreground.

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.

RetroPie, A Tasty Gaming Platform

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!