Single Board Computers
Mike Richards G4WNC shows how three single board computers can be pressed into data modes service.
Mike Richards G4WNC shows how three single board computers can be pressed into data modes service.
This month I’m looking at using SBC (Single Board Computers) for Data Modes operation. The processing power available from these boards has been increasing rapidly over recent years and many of the current crop make good candidates for a stand-alone Data Modes terminal. With the rising popularity of the WSJT modes I decided to try installing WSJT-X on three of the most popular SBCs, the Raspberry Pi, Odroid UX-4 and the ASUS Tinkerboard.
Let’s begin by taking an overview of each of the board.
The Raspberry Pi, Fig. 1, is the board that disrupted the market and still leads the way in this class of SBC. Weighing heavily in its favour is the vast support knowledge that’s out there. If you have any problems with the Pi or its software, just turn to Google and you will find pages of solutions. The Raspberry Pi is also very well supported with software and code libraries, thus making it an ideal development platform. The Pi formula certainly works well and is confirmed by their sales figures that show close to 20 million units have been sold! The Pi also enjoys frequent hardware and software updates and the latest has been the introduction of the Pi 3B+, which is the fastest Pi to date.
One of the common complaints with earlier models has been the bandwidth bottleneck that affects the USB and Ethernet ports. This is a result of using a single chip to provide both ports. However, the latest 3B+ goes some way to overcoming the problems with a chip upgrade that still provides Ethernet over USB2 but gives a speed increase from the previous max of 90Mb/s to 300Mb/s which puts it in Gigabit Ethernet territory. The 3B+ also has a new variant of the Broadcom SoC (System on a Chip) processor which has improved heat management and a metal casing. This enables the 64-bit quad-core processor to be safely clocked at 1.4GHz, thus giving a useful speed increase. The other big improvement has been the addition of dual-band Wi-Fi using a PCB antenna, as first seen on the Pi Zero-W. The addition of 5GHz Wi-Fi is particularly helpful because this band currently enjoys much less interference and can support faster data rates. While the Pi can run several operating systems, the official Raspbian variant of Debian is the best place to start because it’s under constant review and has excellent support.
The Asus Tinkerboard, Fig. 2, was launched just over a year ago and provides an interesting alternative to the Raspberry Pi. The size and layout mimics the Pi very closely, to the point that it fits perfectly in the official Pi cases, Fig. 3. At the heart of the Tinkerboard is a Rockchip RK3288 ARM Cortex-A17 quad-core 32-bit processor running at 1.8GHz. This is supported by an ARM GPU (Graphics Processing Unit) with support for 4k video and 2GB of DDR3 memory. Wi-Fi (single-band) and Bluetooth 4.0 are also included. The Tinkerboard has a networking advantage over the Pi because it features an independent Gigabit Ethernet port that is unaffected by USB bandwidth. Another plus point over the Pi is the provision of on-board audio (Realtek RTL-4040) that can handle playback sample rates of up to 24-bit/192kHz and recordings at 24-bit/96kHz. The audio input/output is presented on a 4-pole 3.5mm jack using the same wiring scheme as smartphones. The downside of the Tinkerboard has been poor support and the manufacturer’s supplied operating system has been a bit fragile. Things have improved recently but I’ve found the best performance comes from using the Armbian variant of the Linux OS; more on this later.
The Odroid XU4, Fig. 4, is the muscle machine in the world of SBCs, featuring a Samsung Exynos 5422 Octa-core processor. This comprise a quad-core Cortex A15 running at 2GHz and a second quad-core A7 running at 1.4GHz. It also has a separate 600MHz GPU and 2GB of general purpose DDR3 RAM. With so much processing power available, the XU4 can support two USB3 ports, one USB2 port plus full Gigabit Ethernet. The XU4 has a unique layout, so is not compatible with any of the Pi add-on boards or cases. One penalty of the higher processing power is increased power consumption and the XU4 requires a 5V 4A power supply for reliable operation. You also need to consider heat management as the XU4 can dissipate around 15W of heat when working hard! To help with this, the standard model is fitted with a temperature-triggered fan.
Despite its processing muscle, the XU4 doesn’t have onboard sound so we need to add a USB soundcard to support data modes operation. Another important consideration is the OS storage device because this impacts the performance. Ideally, you should use a fast Class 10 microSD card or an eMMC5 memory card. Both are available from the XU4 manufacturers HardKernel.
Using SBCs for WSJT-X
I’ve spent some time experimenting with these boards to find the best operating system to support running WSJT-X and other radio applications. In the following section I’ll run through what I think is the best way to operate each board.
WSJT-X on the Raspberry Pi
WSJT-X on the Raspberry Pi is the easiest for me because I’ve been working with the Raspberry Pi since it was launched. By far the best operating system for the Pi is the official Raspbian Stretch release. This benefits from frequent updates and is used by a huge number of people, so problems are identified and fixed very quickly. One weakness relates to amateur radio applications from the official software repository. When using Linux, new software is normally installed by downloading the required package from the standard software repository. Unfortunately, much of the amateur radio software held in the Raspbian repository is out of date. As a result, most radio related packages will have to be compiled from the source code which tends to deter newcomers. However, I have up-to-date, fully configured SD cards available from my website (below) if you’re not comfortable with compiling software on Linux.
With WSJT-X, the situation is simpler because, with each new release, the development team produce a compiled binary package that’s ready for installation on the Raspberry Pi and other ARM-based systems. You will need a Pi-3 or 3+ to operate WSJT-X successfully. Before you install WSJT-X, you need to open a terminal session, update the OS and install a few prerequisites. Here’s the step-by-step guide:
- We’ll begin by updating the OS with the following commands:
- sudo apt update && sudo apt -y upgrade
- When this completes, reboot the Pi to make sure all is well.
- Next you can install the supporting software for WSJT-X using the following command:
- sudo apt install libqt5multimedia5-plugins libqt5serialport5 libfftw3-single3
That completes all the preparatory work, so we can now go ahead and install WSJT-X:
- Visit: https://physics.princeton.edu/pulsar/k1jt/wsjtx.html and scroll to the bottom of the page. Click on the Raspbian Jessie, ARMv6 link to download the file. Note that when the download finishes, you will have to click the Keep button at the bottom of the browser window.
- Open a new terminal session and change to the download directory with:
- cd Downloads
- Now enter: dpkg -I wsjtx_1.9.1_armhf.deb (Linux tip: once you’ve typed wsjtx, press the tab key and the rest of the name will be supplied automatically)
That completes the installation and WSJT-X will be available via the Start button on the Sound & Video menu. Before you can get on the air, you will need to add a USB soundcard. This is necessary because the Pi doesn’t have an audio input. Fortunately, USB sound cards can be had for under £10 and work well with the Pi. I currently use the Ugreen USB Audio Adapter, Fig. 5, but most common adapters work. The final step is to configure WSJT-X as follows:
- Make sure your USB soundcard is attached and start WSJT-X; it will be in the Sound & Video menu. You will get several sound errors, just OK these.
- Choose File – Setting and select the General tab. Enter your callsign and locator.
- Click the Audio tab and use the drop-down menu to select the Input and Output soundcards. You will be presented with a long list of soundcard options but the ones you want will show as plughw:Card=Device,DEV=0 or similar.
- You will also need access to the volume controls and you can find them Start – Preferences – Audio Device Settings. In the panel that opens, select your soundcard (USB Audio Device) and click Select Controls to show the input and output sliders. When you’ve finished, click Set Default.
That’s finished the configuration so you can connect-up your rig and start operating.
WSJT-X on the ASUS Tinkerboard
The Tinkerboard has on-board high-quality sound so you won’t need a USB soundcard but you will need to either make a custom lead or use a Y-cable, Fig. 6, to access the audio input/output. As I mentioned earlier, the OS support for the Tinkerboard has been a bit weak but I have found the OS produced by the Armbian organisation to be excellent. Armbian are a group of enthusiasts that develop and maintain Linux distributions for a wide range of SBCs. I’ve found these OS distributions to be excellent and are generally my first choice when working with a new board. The best operating system for Tinkerboard with WSJT-X is Armbian 5.41 with kernel 4.14. You can find and download this by visiting the website below and selecting the Tinkerboard.
Once you’ve downloaded the OS on your PC, you should use the free Etcher software to burn a microSD card:
Once the microSD card is ready, plug it into the Tinkerboard, connect Screen/keyboard/mouse and your soundcard. Power-up and prepare the OS as follows:
- When the login screen appears, login as root/1234
- You will be prompted to change your password, so enter the old password (1234) followed by your new password twice.
- Next, you will be asked for a new username. Enter something obvious such as your first name followed by a new password, twice.
- Next you can optionally add your details, I usually just add my name and hit Return for the other fields.
- Type y to confirm the changes and the desktop will start.
- Go to Applications and select Terminal Emulator.
- Now we need to update the OS by entering: sudo apt update && sudo apt -y upgrade.
- Enter your username password to proceed. The update will take a while, so be patient.
With the OS ready to go, we can begin the installation of WSJT-X:
- Open the web browser and go to the WSJT-X web site and download the latest ARM v6 release. You will find this near the bottom of the page. Note that at the end of the download you need to click Keep in the bottom left-hand corner of the browser window.
- Next install the prerequisites by entering the following three lines in the Terminal Emulator (NB: don’t include the a. b. or c.)
- sudo apt -y install gcc g++ gfortran make libqt5multimedia5-plugins \
- libfftw3-dev libpulse-dev libhamlib-dev qtbase5-dev qtmultimedia5-dev \
- subversion libqt5serialport5
- Change to the Downloads directory by entering: cd ~/Downloads
- Enter the following to install WSJT-X*: sudo dpkg -I wsjtx_1.9.1_armhf.deb
*Alter the WSJT-X filename to match the file you downloaded. Linux has a helpful self-completion facility for file names. Start typing with wsjt and then press the tab key and Linux will complete the name. This only works if there’s just one file that begins with wsjt.
That completes the installation but now you need to reboot the Tinkerboard and configure WSJT-X. Here are the steps:
- We’ll start with the audio so left-click on the speaker icon at the top-right of the screen.
- Hover over Default Sink and select Headset-Output.
- Hover over Default Source and select Headset-Input.
- From the speaker icon select Manager then the Devices tab
- Make a note of the names associated with Headphone Input and Output. This will probably be alsa_input.OnBoard_D1 and alsa_output.OnBoard_D2 respectively.
- Open WSJTX via the Applications menu - Multimedia and then wsjtx
- Open the File menu and then the Settings panel and choose the General tab. Here you can enter your callsign and grid location.
- Click the Audio tab and set the Input and Output to the device names you noted earlier.
With all the preparation complete, you should be able to connect your rig and get on the air. However, you will need access to the input/output volume sliders and you can find these by clicking the speaker icon and choosing Volume Control. You will then find the volume controls under Input and Output devices.
Next month I’ll cover using the Odroid XU-4 for data modes and show you how to add VOX control.
This article was featured in the August 2018 issue of Practical Wireless