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.


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) merged directly in IDB format for burning to the binary of the IDB area.” Depending on the processor the idbloader may be a U-Boot compiled device tree in one case or the Rockchip “miniloader” in the three other cases, which includes the 3399.

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.

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.