I purchased a PINE64 ROCKPro64 with 4GB of RAM.

Arch Linux ARM supports the Rock64 but not the RockPro64. The former includes a Rockchip 3328, while the later is based on the Rockchip 3399. The 3399 includes two additional higher performance A72 cores. The same processor is used in the Asus Chromebook Flip C101PA and Samsung Chromebook Plus.

Note that Linux 5.0 included Energy Aware Scheduling (EAS) for big.LITTLE ARM platforms (see Energy Aware Scheduling (EAS) in Linux 5.0).


I was able to boot using a Debian image generated by a Github user that may be affiliated with PINE64 (see ayufan-rock64/linux-build). More information about various images can be found on the ROCKPro64 Software Release page on the PING64 wiki. The default user and password password for that user are both rock64.


Minicom configuration file (e.g. ~/.minirc.dfl):

pu baudrate         1500000
pu bits             8
pu parity           N
pu stopbits         1
pu rtscts           No 

Kermit configuration file:

set baud 1500000
set carrier-watch off 
set flow-control none

Persistent storage

The ROCKPro64 includes 128Mb of SPI flash, a eMMC port, a SD card slot and a PCIe slot that can be used for an NVMe drive. I’ve populated the eMMC port with a 16GB module.

[email protected]:~$ lsblk --output NAME,SIZE
NAME           SIZE
mtdblock0        4M
mtdblock1       32K
mtdblock2      256K
mmcblk1       14.5G
mmcblk1boot0     4M
mmcblk1boot1     4M
mmcblk1rpmb      4M
mmcblk0        7.4G
|-mmcblk0p1    3.9M
|-mmcblk0p2     64K
|-mmcblk0p3      4M
|-mmcblk0p4      4M
|-mmcblk0p5      4M
|-mmcblk0p6    112M
`-mmcblk0p7    7.3G
nvme0n1      931.5G

The above partitions are created by ayufan’s linux-build script, which appears to be based on Rockchip’s mk-image.sh.

Name Start (hex) End
idbloader 64 0x40 8063
Reserved 1 8064 8191
Reserved 2 8192 16383
U-Boot 16384 0x4000 24575
ATF 24576 0x6000 32767
boot.img 32768 0x8000 262143
Root FS 262144 0x40000 100%

boot.img contains the Linux kernel (e.g. zImage) and initial ramdisk.

See also boot jumper configuration.

Note that ayufan’s pre-built images as of 0.7.11 do not match how the boot rom selects a device to boot. With valid images on the eMMC and SDcard (without jumping SW4) the boot rom will boot off the eMMC, but ayufan’s U-Boot will mount the rootfs off of the SDcard. It is easy to get around this by modifying the U-Boot environment or removing the SDcard and rebooting.


Rockchip appears to be actively developing firmware and related tools in their rkbin repository on Github. idbloader is described in a translation of the README as “by ddrbin, a level loader (miniloader or U-Boot SPL) merged directly in IDB format for burning to the binary of the IDB area.”

The boot process is best documented on the Rockchip wiki. It states that the idbloader consists of their a DDR initialization binary and in-house boot loader named miniloader or U-Boot TPL/SPL.

The Rockchip build repository contains a number of bash scripts to build U-Boot, the kernel, a rootfs and a single image. For the RK3399 the mk-uboot.sh script documents the process fairly poorly since it also calls binary tools provided in the build repository.

The first command calls loaderimage, a Rockchip binary, with u-boot-dtb.bin, uboot.img and 0x200000. The former two arguments can be built using Buildroot. The help indicates that the DTB binary is an input file, the uboot.img is an output file and 0x200000 is a load_addr. Using build artifacts from Buildroot and calling the command increases uboot.img from 913K to 4M. The compiled device tree ends up at 0x800, but only accounts for 876K. 0x200000 in the output binary starts with the string “LOADER”. The original uboot.img started with 0xd00dfeed, which is located in the output binary at 0x1d8580, 0x2d8580, and 0x3d8580. LOADER is found at 0x0, 0x100000, 0x200000, and 0x300000.

Another Chinese company named Firefly also uses the RK3399 in a product and maintain a fork of the kernel on Gitlab that was last updated March 14, 2018. On their wiki they note that IDB stands for the “identity block” in the eMMC, which is read and verified before booting U-Boot.

Interestingly, Rockchip seems to support the RK3399 in coreboot (see coreboot source), as well as Google for their Chromebooks.


Rockchip maintains a fork of U-Boot appears to be well maintained (see rockchip-linux/u-boot).

Broadcom NetXtreme II

I purchased a NetXtreme II 4 port Ethernet PCIe card to allow the ROCKPro64 to function as a switch. When I booted using ayufan’s Debian based image the PCI the system failed to boot.