Rock Pi 4: How to set up a board with barely any official documentation
Easy peasy, right?
The Rock Pi 4 is a cheap and powerful ARM-based single board computer. This little board is relatively new and unheard of, but it has some insane specs, including a hexa-core RK3399 SoC, 4GB of RAM, and a Mali T860 GPU (which actually supports OpenCL and was a critical deciding factor for us) — all for $95.
However, buying a brand new SBC that was literally released 3 months ago (at the time of writing) means taking some risks — and encountering a lot of obstacles. Here are just a few problems we ran into while setting it up:
- Barely any official documentation
- RK3399 Quirks & Boot Issues
- armhf vs aarch64
Let’s tackle these issues one by one.
Where are all the docs?
Buying an obscure, brand new SBC from a relatively unknown manufacturer (ever heard of Radxa? Me neither) means you forgo certain comforts.
Such as having any documentation at all on how to use the board properly.
At the time of writing, there are only a few pages of docs written by the Radxa team that developed the Rock Pi, and even these pages are tucked away in a “Wiki” tab in the top right corner of the site. Once you get there, the important info (such as the default login user and password) are further hidden behind plain-looking links.
One of the fixes to the lack of official documentation is to look at the documentation for the RK3399 chip the board is based on, as well as the docs for other RK3399-based boards such as the Rock64.
RK3399’s weird boot quirks
Speaking of the RK3399 chip, let’s talk about the piece of silicon that runs the show. Made by Rockchip, this hexa-core ARM64 processor is possibly one of the cheapest and most powerful ARM processors out there. It’s also ridiculously sensitive. When I tried to load regular Raspbian onto the Rock Pi, it wouldn’t boot. Not a big surprise, I thought to myself, it’s probably just a difference with SoCs.
So after a bit of digging around, I finally found and loaded Radxa’s official Debian image onto the SD card. After waiting for around 15 seconds or so, it booted into LXDE. I tried opening a terminal and running a few commands. So far so good. Thinking everything was fine, I started setting up the system by installing the python package manager:
sudo apt install python3-pip
> Error: package python3-pip not found
After a bit of digging around, I figured out that Radxa’s version of Debian had extremely old and limited apt repositories and was therefore completely unusable. In this moment, I had a flash of genius: why not install Arch Linux on it?
I think you can see where this is heading.
After tangling with a few weird tar errors, I managed to get a correctly flashed Arch for ARM image on the SD card. I insert it.
It turns out that the RK3399 chip requires not one, not two, but five special partitions in order to boot the image. (For comparison, the Raspberry Pi SoC only requires 2.) With enough work, it would theoretically be possible to boot Arch on the Rock Pi, but at this point I just wanted a working board.
After a little more searching, I downloaded an Ubuntu Snappy Core image that did support RK3399, and it booted. I set to work installing everything I needed: Python, Git, etc. Everything installed fine. Bolstered by this success, I decided to try compiling ArduPilot, an open source autopilot (see other post here), on the Rock Pi. Everything went well until I tried to execute the built executable, which kept giving me an inexplicable “File does not exist” error.
Whoops, Ardupilot only built for 32-bit armhf instead of 64-bit aarch64! Double whoops, even when you install 32-bit support, it throws a weird permission error!
This is where the journey has led me so far. It seems like a bit of a dead end for ArduPilot support — which is why our team is getting a standalone PX4 to cover those needs. For now, this is it. Maybe I’ll come back to this later, when Arch support is added, or when I figure out how to fix ArduPilot.
TL;DR: Rock Pi 4 is great if you’re willing to dig through a bit of documentation. It’s not so great if you want a time-tested and well-supported board.