Raspberry Pi 4 Released: Improvements to CPU, Networking, USB, RAM and more
The Raspberry Pi is the most popular credit sized computing board in the world. It is commonly used as a low cost and portable computing platform for SDRs like the RTL-SDR. Today the Raspberry Pi 4 was released, bringing us a new US$35 single board computer with many improvements. Some of the main improvements that make the Pi 4 great for software defined radios are listed below:
CPU: The Pi 4 uses a Quad-Core Broadcom ARM A72 clocked at 1.5 GHz. This chip should be significantly faster compared to the older chip used on the Pi3B+ with performance now being similar to that of the Tinkerboard. This will be especially useful for CPU intensive SDR applications like the direction finding and passive radar software for our coherent 4-tuner RTL-SDR known as the KerberosSDR. It should also help allow OpenWebRX servers to serve more simultaneous users, allow graphical programs like GQRX to run smoother, and allow for higher sample rates on higher end SDRs.
GPU: The new faster GPU should help graphical SDR programs run smoother.
RAM: The Pi 4 comes with three RAM options, either 1GB, 2GB or 4GB of RAM. The versions with more RAM will be great for memory intensive applications such as GNU Radio (and compiling GNU Radio). It will also allow more programs to run in the background, and perhaps combined with the improved CPU speed allow for multiple SDRs to be used on demanding tasks.
Networking: The Pi 4 finally support Gigabit Ethernet which will be very useful to people using the board as an SDR server over the internet.
USB: There are now two USB 3.0 ports available which means that USB 3.0 SDRs like the LimeSDR could in theory be used at higher sample rates on the Pi 4.
There are also many other improvements such as dual 4K HDMI ports, a USB-C power supply port and faster SD card transfers.
It is not yet known if the very useful Raspberry Pi specific software known as RPiTX will continue to function on the new Pi 4. RPiTX is software that turns Raspberry Pi units into fully functional RF transmitters without the need for any additional transmitting hardware - just attach an antenna wire to a GPIO pin. It works by modulating the GPIO pin in such a way to create almost any type of RF transmission. RPiTX only functions on the specific proprietary Broadcom CPU chips that the Raspberry Pi's use. The Pi 4 does continue to use a Broadcom CPU, so we are hopeful.
The new changes bring the Raspberry Pi up to speed with rivals like the Tinkerboard, but at a lower price and with a much better amount of software and OS support provided. The boards currently cost $35 for the 1GB version, $45 for the 2GB version and $55 for the 4GB version. They are sold via local resellers which can be found on the official Pi 4 product page.
Has anybody been able to use the Pi 4 with the Kerberos SDR ( https://www.rtl-sdr.com/ksdr/ ) Demo image that is written for the Pi3 / B+? If so, is there anything you feel I should know?
We’ll be getting a ready to use Pi4 image out soon-ish.
I would love to use OpenWebRx but seemingly it can’t be tuned like the Kiwi and is set to one frequency ?
Turns out it was actually a hardware issue with the Raspberry Pi 4 that they did fix in software / firmware. Anyone who wishes to use RTL dongles with their rPi4 should do a firmware upgrade before hand.
sudo apt update
sudo apt upgrade
sudo apt install rpi-update
sudo apt dist-upgrade
I’m personally having trouble with the new rPi4 with GQRX (That installs, but throws a Pulse Audio Error once you try to run the application.) and all of the rtl_ commands can’t seem to capture the various connected dongles, no matter if they are plugged into the USB 2 side or the USB 3 side. It sees that they are there, but it can’t pull any other information out of them, like their serial number. Even pulling and compiling from the osmocom github doesn’t help that. So if you’re planning on Using the Raspberry Pi 4 for SDR work, you haev a little bit of a wait.
As a follow up to my previous post, the error that I’m getting is -7, according to it’s value within libusb_error enum, -7 is LIBUSB_ERROR_TIMEOUT. I’ve been told that -6 (LIBUSB_ERROR_BUSY) is due to a lack of power on the USB Bus, perhaps that’s the same problem here? But that seems very unlikely given that this Pi is meant to have a lot more power delivery capability towards the USB ports. I’ve had it plugged into the USB 3.0 ports and the USB 2.0 ports both resulting in the same error. I’m also using the official Raspberry Pi 4 USB-C power adaptor, so it should be able to fully power the unit, regardless of load CPU load state of USB peripheral count. But to be sure, I removed everything but the RTL and then SSH’d into the Pi4B. Still no luck.
As a sanity check, I plugged the dongles that didn’t work on the rPi4B into a rPi3B+, both are running up to date versions of Raspbian Buster as of about 30 minutes prior to this post. I went though the install test from Raspberry Pi Stretch Install process that I wrote for the trunk_recorder wiki. Installed all dependencies and compiled all of the software from the last master versions on their official public git repositories. And … It works completely fine on the rPi3B+. I’m at a loss as to what to do next? A powered USB Hub, I guess. At least I can rule that out …
Seems there is a software issue, that is going to need to be fixed.