ROCKPro64
The ROCKPro64 is the most powerful Single Board Computer released by Pine64. It is powered by a Rockchip RK3399 Hexa-Core (dual ARM Cortex A72 and quad ARM Cortex A53) 64-Bit Processor with a MALI T-860 Quad-Core GPU.
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.
The ROCKPro64 is equipped with 2GB or 4GB LPDDR4 system memory, and 128Mb SPI boot Flash. There is also an optional eMMC module (up to 128GB) and microSD slot for booting. The board is equipped with 1x USB 3.0 type C Host with DP 1.2, 1x USB 3.0 type A Host, 2x USB 2.0 Host, Gigabit Ethernet, PI-2 GPIO Bus, MiPi DSI interface, eDP interface, touch Panel interface, stereo MiPi CSI interface, as well as many other device interfaces such as UART, SPI, I2C, for makers to integrate with sensors and other peripherals. Many different Operating Systems (OS) are freely available from the open source community, such as Android, Linux (Ubuntu, Debian, Arch), and BSD.
Board layout
Main chips
- RK3399 system-on-chip (1)
- LPDDR4 SDRAM 1 (18)
- LPDDR4 SDRAM 2 (3)
- SPI NOR flash memory (17)
- RK808 power management (near 19)
- RTL8211 ethernet transceiver (near 25)
- ES8316 Sound Codec (on rear of board)
- The heatsink mounting holes around the RK3399 are 59 mm apart
Switches
The Power button (11): is the same as on your mobile phone - press and release after about 1 second to power on. Press and hold for about 3 seconds to power off.
The Reset button (10): perfoms a reset.
The Recover button (28): used to enter maskrom mode.
Connectors, sockets and headers
Diagram | Schematic designator |
Silkscreen label |
Number of pins |
Description |
---|---|---|---|---|
2 | U39 | PI-2-bus | 40 | Pi-2 bus |
4 | J8 | +FAN- | 2 | PWM controlled fan header |
5 | J10 | SPDIF | 3 | SPDIF header |
6 | U6 | +RTC- | 2 | RTC battery backup header |
7 | U31 | Wifi-BT | 16 | SDIO WIFI/BT module-MIMO 2 |
8 | USB3 | 9 | USB-3 and USB Type C | |
9 | USB1 | 2×4 | Dual USB-2 | |
12 | IR1 | IR | 3 | infrared receiver socket |
13 | J16 | Headphone+mic | 4 | Headphone + mic 3.5mm jack |
14 | U29 | EMMC | 34 | eMMC connector |
14* | J13 | 13 | TF-card, a.k.a. microSD (* under 14 on the bottom side) | |
15 | U30 | 14 | SDIO WIFI/BT module-MIMO 1 | |
19 | J15 | PCI | 64 | PCI-express X4 socket |
20 | J21 | DSI | 30 | DSI |
21 | J22 | EDP | 30 | LCD EDP |
22 | CON1 | TP | 6 | touch panel connector |
23 | CON15 | 4 | DC out for SATA disk cable (direct connect from DC-IN) | |
24 | J11 | DC-IN | 2 | Power input, positive tip; 12V/3A (minimum) recommended |
25 | U32 | 8 | RJ45 | |
26 | J14 | 19 | HDMI | |
27 | J17 | MIPI CAM | 32 | MIPI-1 |
29 | J19 | MIPI CAM | 32 | MIPI-2 |
30 | J18 | CIF | 26 | CIF |
LEDs
A green LED next to the 12V input barrel connector will light as long as there is 12V applied to the connector. (Even if the RockPro64 is powered off.)
A white LED behind the reset button will light as long as the RockPro64 is running (it comes on a few seconds after power on, when control is passed to the operating system.)
A red LED behind the reset button is DIY - it is lit for example if the board is in OTG mode with an Ayufan image, or if an Android image is in standby mode.
Yellow and green LEDs on the LAN socket behave in a standard way.
Jumpers
They are used for boot device selection, as described in the following section.
Disable eMMC
There is an unlabelled (on the PCB silk-screen) 2-pin jumper (16) between the eMMC socket (14) and the SPI chip (17). It is designated as SW4 on the schematic diagram. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:
Default boot device (with no SPI software) is eMMC, then SDcard. If both the eMMC and the SDcard contain bootable images then the eMMC can be disabled by installing the jumper. This completely removes the eMMC from the resulting OS. If you wish the eMMC to be visible in the booted OS the jumper should be removed 2 seconds after applying power (and before the white LED comes on).
The possible combinations are summarised in the table below (1 = present, 0 = not present, S = boot from the µSD card, M = boot from the eMMC module, X = unsupported combination):
µSD | eMMC | SW4 | boot |
---|---|---|---|
0 | 0 | 0 | X |
0 | 0 | 1 | X |
0 | 1 | 0 | M |
0 | 1 | 1 | X |
1 | 0 | 0 | S |
1 | 0 | 1 | S |
1 | 1 | 0 | M |
1 | 1 | 1 | S |
Disable SPI (while booting)
There is a second possibility to jumper your ROCKPro64: If you mess-up your SPI and are unable to boot, jumpering pins 23 (CLK) and 25 pin (GND) on the PI-2-bus header will disable the SPI as a boot device. (This was taken from the IRC logs, 09 August 2018 @ 17:23) You have to remove the jumper 2 seconds after having started your RP64 (before the white LED turns ON) otherwise the SPI will be missing and you won't be able to flash it. Ayufan images contain (at the moment) only one script for the SPI and the RP64, it's "rockpro64_reset_spi_flash". Other SPI scripts are dedicated to the R64 (as it is written on the name) and it will mess-up your RP64 SPI if you use them.
Getting Started
This section gives important information to get the board up and running.
Start here - Software and OS Image Builds
In the 'ROCKPro64 Software Release' page you will find a complete list of currently supported Operating System images that work with the ROCKPro64 as well as other related software. The Software Release page has links to download the images as well as high level instructions how to load each image.
The list includes OS images and descriptions of:
Armbian (microSD and eMMC Boot)
Debian (microSD and eMMC Boot)
DietPi (microSD and eMMC Boot)
Open Media Vault (microSD and eMMC Boot)
LibreELEC for KODI (microSD and eMMC Boot)
Slackware (microSD and eMMC Boot)
Nagios Enterprise Monitoring Server (microSD and eMMC Boot)
NextCloudPi (microSD and eMMC Boot)
Manjaro ARM (microSD and eMMC Boot)
OpenWrt (microSD and eMMC Boot)
Please see the NOOB page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.
More advanced Linux bits
Some Linux tips are given below.
How to update your Linux
For Debian/Ubuntu images entering the following commands at a terminal prompt
sudo apt-get update
sudo apt-get upgrade
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command
sudo apt-get dist-upgrade
If you are happy to update your system to pre-releases of Ayufan images then modify /etc/apt/sources.list.d/ayufan-rock64.list as per the comment in that file.
The kernel in Ayufan releases is under active development and, if you wish to install a later version, then it is best to use a package manager. In synaptic (for example), if you search for package names linux-image-4.4 you should see your currently installed version(s) as well as any more recent ones. Similarly if you wish to install the mainline kernel then searching for linux-image-4.18 will show you what is available. At the time of writing (August 2018) there are significant features missing from the mainline kernel for aarch64 processors (e.g. HDMI sound).
Useful scripts
After you install an Ayufan image you will find some scripts in /usr/local/sbin/ and /usr/local/bin/ that may be useful. (Need to expand this section)
Video playback
Ayufan has some old documentation on video playback here. For your ROCKPro64 the install should be
sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm
(These modules are included in the Ayufan deskop releases.) At which stage rkmpv myvideo.mp4 will play a fullscreen, hardware assisted, version of your video. rkmpv is at /usr/local/bin/rkmpv
Swapping kernel versions
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - intro documentation is here. In particular after you install any additional kernels, you can edit your /boot/extlinux/extlinux.conf file to specify which of the kernels you have installed to use for the next boot.
From Ayufan version 0.7.11 the script /usr/local/sbin/change-default-kernel.sh does a nice little menu swap for you if you run it as root (sudo).
Using an NVMe disk for rootfs
Forum member Bullet64 has documented how to move rootfs to an NVMe disk. This is useful until we get a full SPI option to boot from the NVMe.
This section gives some hints for advanced users.
Setup a serial console (UART)
The early adopters (and late-comers who fiddle excessively with their boards!) have a need to monitor the low-level boot behaviour: this is done with a serial console and there is a great description how to get this working specifically for your ROCKPro64 here.
Booting from USB or PXE
The default choice of boot device is first eMMC (if present) then SDcard. See jumpers above for details on adjusting this sequence.
It is possible to flash the SPI to extend the options for boot devices to USB drives or PXE. The preferred method is now the rock64_write_spi_flash.sh script (see useful scripts above.) The NOOB wiki page has more details here.
Background info and historic details of this usage can be found here.
Boot sequence
The RockPro64 boot sequence has been documented here by sigmaris.
OTG mode
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see switch 28 above.) Note there are 2 OTG ports on your ROCKPro64: the type-C USB 3 socket is definitely one. From the schematic it appears the USB 3 (type A) socket is the other, but this has yet to be confirmed.
The method is to power off the board. Then push and hold the Recover button and push and release the Power button.
- If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes described here including Android fastboot, RockUSB and MaskROM modes. Releasing the Recover button as soon as the white LED lights counts as 1 blink. Keeping it pressed you will get 2 blinks of the white LED etc. Once the board enters OTG mode the red LED will be lit. In mode 1 the boot and linux-root partitions of the card with the Ayufan image (partitions 6 & 7 of a linux installation) are made available as devices. In all cases the USB device made available at the host has device ID 18d1:d00d.
- If you do not have an Ayufan image in either the SDcard or the eMMC, then neither white nor red LEDs will light, but the board will enter MaskROM mode where the USB device made available at the host has device ID 2207:330c.
NVMe drives
Please be aware that the Pine64 SSD interface card is intended for use with NVMe devices. These can be identified by the fact they have a single (Key M) notch, e.g. the WD Black devices.
While M2/NGFF SATA devices (with a Key B notch, typically have Key M as well) will physically fit, they will not work. e.g. WD Blue devices.
SATA drives
SATA drives can be connected directly via the ROCKPro64 PCIe interface card. Please note the card does not include the power cable - that is a separate item. Equally you must be aware that connecting SATA drives in this manner means they will be drawing power from your ROCKPro64 - please ensure you are using a 5A or better power supply.
ExplainingComputers did a YouTube ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.
Wi-Fi & Bluetooth module
If you have bought the Wi-Fi and Bluetooth module from the Pine store then instructions for connecting it can be found on the accessories page here. Please note that the 0.7.9 linux releases (August 2018) have deliberately DISABLED support for this module in the search for stability. It can be tested and used with the Android image.
7" LCD Touch Screen
Instructions for connecting the LCD touch screen from the Pine are here.
Note at present (August 2018) this screen is only supported by the Android image.
RTC battery backup
The Pine store has a couple of options for RTC battery backups: a AAA version here or a CR-2032 version here. Instructions for plugging in either of them are also on the Accessories page
Acryllic open enclosure
Assembly instructions for the acryllic enclosure from the Pine store are also on the Accessories page
NAS case
The Exploded View Installation Diagram for the [1] from the Pine store.
Detailed NAS Case overview and assembly instructions can be found here.
Hardware Compatibility
Hardware Compatibility Page
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.
Limitations
PCIe card issue and/or asynchronous external abort on flash read/write
Older firmware overwrites actively used memory
Some people get system freeze when:
- use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)
- or do read or write 4GB to the flash. (not using PCIe)
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.
Both issues are in fact the same software BUG. There is no hardware problem. Currently most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. People are currently fixing this BUG, but it may take some time. In the mean time, you can fix it manually.
The latest u-boot can boot the rockpro64 without any blobs from rockchip. Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31 git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot cd u-boot/ git checkout v2020.01-rc5 make rockpro64-rk3399_defconfig BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
Which gives you idbloader.img and u-boot.itb. Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64 sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384 sync
PCIe controller hardware error handling bug
There is an issue with the rk3399 pcie controller that is currently unmitigated:
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.
The error type is determined by which cpu cluster handles the message.
Virtualization
The PCIe controller on the rk3399 is not behind an IOMMU. This means it is not possible to safely pass through PCIe devices to a virtual machine.
Board Features
This section outlines the most important characteristics of the board and its components.
SoC and Memory Specification
- Based on Rockchip RK3399
CPU Architecture
- Dual-core Cortex-A72 up to 2.0GHz CPU
- Quad-core Cortex-A53 up to 1.5GHz CPU
- big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU
- Cortex-A72:
- 1-4x Symmetrical Multiprocessing (SMP) within a single processor cluster, and multiple coherent SMP processor clusters through AMBA 5 CHI or AMBA 4 ACE technology
- AArch64 for 64-bit support and new architectural features
- L1 cache 48KB Icache and 32KB Dcache for each A72
- L2 cache 1024KB for big cluster
- DSP & SIMD extensions
- VFPv4 floating point
- Hardware virtualization support
- Cortex-A53:
- L1 cache 32KB Icache and 32KB Dcache for each A53
- L2 cache 512KB for little cluster
- Full implementation of the ARM architecture v8-A instruction set
- ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation
- ARMv8 Cryptography Extensions
- In-order pipeline with symmetric dual-issue of most instructions
- Include VFP v3 hardware to support single and double-precision operations
- TrustZone technology support
- Full CoreSight debug solution
- One isolated voltage domain to support DVFS
GPU Architecture
- ARM Mali-T860MP4 Quad-core GPU
- The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provide stunning visuals for UHD content.
- Frequency 650MHz
- Throughput 1300Mtri/s, 10.4Gpix/s
- OpenGL® ES 1.1, 1.2, 2.0, 3.1, 3.2., Vulkan 1.0*., OpenCL™ 1.1, 1.2., DirectX® 11 FL11_1., RenderScript™.
System Memory
- LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.
- Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).
Display
- Dual VOP: one supports 4096x2160 with AFBC supported;The other supports 2560x1600
- Dual channel MIPI-DSI (4 lanes per channel)
- eDP 1.3 (4 lanes with 10.8Gbps) to support display, with PSR
- Digital Video port up to 4Kp60
- DisplayPort 1.2 (4 lanes, up to 4K 60Hz)
- Supports Rec.2020 and conversion to Rec.709
Video
- Digital Video output up to 4K@60Hz
- 4K HDR @ 30fps
- H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps
- H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps
- VP9, up to 4Kx2K @ 60fps
- MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps
- MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps
- MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps
- VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps
- MVC is supported based on H.264 or H.265, up to 1080P @ 60fps
Audio
- 3.5mm Phone Jack
- 3-pin S/PDIF header
- Audio via Digital Video port
Camera
- Dual mipi CSI,dual ISP,Maximum input resolution of 13M pixels
Network
- 10/100/1000Mbps Ethernet
- Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (optional)
Storage
- microSD - bootable, support SDHC and SDXC, storage up to 256GB
- eMMC - bootable (optional eMMC Module)
- 1 USB3.0 Host port
- 1 USB type C OTG port with DP output
- 2 USB2.0 Dedicated Host ports
Expansion Ports
- 2x20 pins "Pi2" GPIO Header
- PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port
Working Features
Feature/Option | Android | Android Version | Linux | Linux Version | Test/Verify Steps | Notes | Product Link |
---|---|---|---|---|---|---|---|
Pine64 LCD Touchscreen (Screen/Touch) | Yes/Yes | No/No | Maybe this will help get this working? https://github.com/avafinger/pine64-touchscreen | https://store.pine64.org/?product=7-lcd-touch-screen-panel | |||
ROCKPro64 2×2 MIMO Dual Band WIFI 802.11AC/BLUETOOTH 4.2 MODULE | Yes/Yes | No/No | In 0.7.9 this is deliberately disabled for stability reasons. | https://store.pine64.org/?product=rockpro64-2x2-mimo-dual-band-wifi-802-11acbluetooth-4-1-module | |||
USB OTG | use this script: https://github.com/ayufan-rock64/linux-package/blob/master/root-rockpro64/usr/local/sbin/rockpro64_enable_otg.sh then configure ip on usb0: ifconfig usb0 169.169.222.222 and run iperf, you should likely see about 200-300MB/s | http://wiki.pine64.org/index.php/ROCKPro64_Main_Page#OTG_mode | |||||
USB Mass Storage USB2/USB3 | Yes/yes | Yes/Yes | |||||
Dedicated Fan Power (pwm1) | Yes | You might want to use ATS. https://github.com/tuxd3v/ats | |||||
GPIO pins (raw or via RPI python scripts) | Check out what Frank Mankel has done. https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2 | ||||||
MIPI CSI Camera 1 and 2 | |||||||
eDP | |||||||
HDMI Audio | Yes | 7.1.2 | Yes | 4.4.132-1083 - 4.4.138-1100 | Stopped working in 4.4.154.1105. Ayufan is looking into it. | ||
3.5mm Audio/Mic | |||||||
USB-C Host | |||||||
Display via USB-C | Yes | 7.x and 8.x | eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x | ||||
ROCKPro64 PLAYBOX ENCLOSURE | N/A | N/A | N/A | Ventilation does not exist, thus requires manual changes to add venting. Case should be modified to account power adapter not being centered in cut holes. Opening the case once close without modifying it first is near impossible without special tools. Graphene heatsink is included and does well for Linux but not Android. | https://store.pine64.org/?product=rockpro64-playbox-enclosure | ||
ROCKPro64 30mm Tall Profile Heatsink | N/A | N/A | N/A | https://store.pine64.org/?product=rockpro64-heatsink | |||
ROCKPro64 20mm Mid Profile Heatsink | N/A | N/A | N/A | https://store.pine64.org/?product=rockpro64-20mm-mid-profile-heatsink | |||
Fan For ROCKPro64 20mm Mid Profile Heatsink | N/A | N/A | N/A | You might want to use fanctl to control the fan while keeping your CPU cool https://github.com/tuxd3v/fanctl | https://store.pine64.org/?product=fan-for-rockpro64-20mm-mid-profile-heatsink | ||
HDMI output 4K@60Hz | |||||||
PCIe 2.1 | |||||||
Real Time Clock (RTC) battery backup | https://store.pine64.org/?product=rtc-backup-battery-cr-battery | ||||||
Boot from USB/PXE |
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions in their wiki here.
Board Information, Schematics and Certifications
- Board Dimensions: 133mm x 80mm x 19mm
- Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector
- ROCKPro64 Schematic v2.1 (Second Batch Production Release)
- ROCKPro64 Schematic v2.0 (Pilot Production Release)
- ROCKPro64 AP6359SA Wifi/BT Schematic
- ROCKPro64 Pi-2 Pin assignment and definition
- ROCKPro64 3D model
- Certifications:
- Disclaimer: Please note that PINE64 SBC is not a "final" product and in general certification is not necessary. However, PINE64 still submit the SBC for FCC, CE, and ROHS certification and obtain the certificates to proof that SBC board is capable on passing the testing. Please note a final commercial product needs to performs its owns testing and obtains its owns certificates.
- ROCKPro64 FCC Certificate
- ROCKPro64 CE Certificate
- ROCK64 RoHS Report
Datasheets for Components and Peripherals
- Rockchip RK3399 SoC information:
- LPDDR4 (200 Balls) SDRAM:
- eMMC information:
- SPI NOR Flash information:
- Heatsink related info:
- Wireless related info:
- Ethernet related info:
- Peripheral related info:
- Remote control button mapping
- Audio Codec (ES8316) (Under Board)
The NAS Case for the ROCKPro64
Please follow this this link for detailed instructions on how to assemble the ROCKPro64 NAS Case.
The NAS Case instructions also contains detailed information about:
- what the NAS Case ships with
- What additional things you need to purchase for your NAS Case
- What optional things you can consider purchasing for your NAS build
- What OS Image we recommend you use for your NAS build
- IO accessibility after installing the ROCKPro64 into the NAS Case
Other Resources
- ROCKPro64 Forum
- RockPro64 Guides
- IRC Server: irc.pine64.org Channel: ROCK64
- Pine64 shop
- Rockchip Linux GitHub Repo
- Rockchip Open Source Wiki
- ExplainingComputers have a video review of the RockPro64 here, including linux first boot.