I finally bit the bullet and bought one of these RockPi 4B boards for some experimentation:
I’ve been holding off since distro support for most RK3399 boards has been sparse to say the least, but these guys have been gaining steam and their support forums are quite active now:
After scouring through this board’s schematics, I noticed that it contains separate lanes for USB3.0 and USB 2.0 hubs unto the SOC. (Multiple hubs) - Which got me wondering if it could handle (unlike the Rpi4) running an Airspy R2 going full-tilt at 24Mhz with anything else plugged unto another USB port and still maintain full data/MLAT integrity. Well… My recent tests prove that it does, and well!
Here are some screenshots of this board running an AirspyR2 @ 24Mhz through Dump1090-FA, An FA Orange dongle running Dump978 and a Ublox USB GPS spitting out coordinates through GPSD without packet loss with full sustained MLAT for proof of concept.
RPIMonitor (Not refined for this board yet) - Ignore throttles, etc as those calls dont work on this distro
The setup was pretty much out of the box using the following:
Distro (linked up top): Armbian_5.67_Rockpi4b_Debian_stretch_default_4.4.154_desktop_20181210-gpt
sudo apt -y remove --purge bluez avahi-daemon x11-common cups #Remove Desktop & other useless junk sudo apt -y autoremove sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list #Upgrade to Buster sudo dpkg --add-architecture armhf sudo apt update sudo sh -c "echo 'GOVERNOR=\"performance\"' > /etc/default/cpufrequtils" sudo systemctl restart cpufrequtils sudo apt -y dist-upgrade sudo apt -y autoremove sudo apt clean sudo apt -y install git build-essential cmake libtool autoconf automake bc libusb-1.0-0-dev pkg-config zlib1g-dev \ librtlsdr-dev libsndfile1-dev libasound2-dev debhelper pkg-config dh-systemd libncurses5-dev libbladerf1 libbladerf-dev \ adduser lighttpd tcl8.6-dev python-dev python3-dev python3-venv virtualenv dh-systemd zlib1g-dev tclx8.4 tcllib tcl-tls itcl3 \ net-tools libboost-system-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev gpsd gpsd-clients python-gps \ locate libc6:armhf libstdc++6:armhf libusb-1.0-0:armhf fakeroot git clone https://github.com/jprochazka/adsb-receiver.git ~/adsb-receiver && cd $_ sed -i 'N;/CheckPackage postfix/,+2!P;D' bash/portal/install.sh sed -i 's/\"9\" \]\]\; then DISTRO_PHP_VERSION=\".*\"/\"9\" \]\]\; then DISTRO_PHP_VERSION=\"7.3\"/' bash/portal/install.sh sed -i 's/DUMP1090_FA_VERSION=\".*\"/DUMP1090_FA_VERSION=\"3.7.2\"/' bash/variables.sh sed -i 's/PIAWARE_VERSION=\".*\"/PIAWARE_VERSION=\"3.7.2\"/' bash/variables.sh sed -i 's/MLAT_CLIENT_VERSION=\".*\"/MLAT_CLIENT_VERSION=\"0.2.10\"/' bash/variables.sh sed -i 's/MLAT_CLIENT_TAG=\".*\"/MLAT_CLIENT_TAG=\"0.2.10\"/' bash/variables.sh sed -i 's/jessie/stretch/g' bash/feeders/piaware.sh sed -i 's/dpkg-buildpackage -b 2>\&1/sudo rm -rf cx_Freeze-5.1.1\n wget https:\/\/github.com\/anthony-tuininga\/cx_Freeze\/archive\/511f4733e6fb0070409a654cf5e8d2aea2dc5417.zip\n unzip *.zip\n mv cx* cx_Freeze-5.1.1\n dpkg-buildpackage -b 2>\&1/' bash/feeders/piaware.sh chmod +x install.sh ./install.sh (Choose: Dump1090-FA, Dump978, Portal) sudo bash -c "$(wget -q -O - https://raw.githubusercontent.com/wiedehopf/graphs1090/master/install.sh)" sudo bash -c "$(wget -O - https://raw.githubusercontent.com/wiedehopf/airspy-conf/master/install.sh)"
Note, the above uses some dirty hacks for Joe’s script, but can just as well install dump1090-fa and piaware manually if you so choose as well as use dump978-fa. I just used the ‘old’ method due to my experience with it.
So you may also see through the screenshots that the SBC is still somewhat “bored” when running the AirspyR2 @24Mhz, -e 7.5. (I recently switched to -w 1 for another test, I use -w 3 otherwise). There is a lot more CPU left to work with on the airspy_adsb thread. Graphs show solid MLAT, but current feeder is #24259 should anyone want to verify (this feeder changes hardware often though as it’s one of my test sites)
Also here is the GPS unit I bought and have attached to feed location through GPSD: (Plug & Play with Buster)
So proof of concept is there and working for those that have been looking for a way to do everything on one board while still maintaining MLAT. I have zero affiliation with anything linked above, I’m just a tester.
ADD: I failed to mention upstream hardware: Dual band antenna sourced from China -> Mini-Circuits LNA-1150LN+ LNA -> 5 meters RG-6 (Copper) -> FA Filter -> Mini-Circuits ZAPD-21 splitter -> AirspyR2/FA-Orange