https://wiki.pine64.org/api.php?action=feedcontributions&user=Kreyren0&feedformat=atomPINE64 - User contributions [en]2024-03-29T05:06:48ZUser contributionsMediaWiki 1.37.1https://wiki.pine64.org/index.php?title=ROCKPro64&diff=13405ROCKPro642022-07-29T18:25:32Z<p>Kreyren0: Booting from SPI using u-boot - Armbian doesn't have u-boot by default it seems</p>
<hr />
<div><div style="float: right; margin-left: 1ch; max-width: 24em;">__TOC__</div><br />
<br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Pictures =<br />
<gallery heights="400" mode="packed"><br />
Image:ROCKPro64v21FRONT.jpg|A hi-res picture of v2.1 front.|alt="A hi-res picture of v2.1 front."<br />
Image:ROCKPro64v21REAR.jpg|A hi-res picture of v2.1 rear.|alt="A hi-res picture of v2.1 rear."<br />
Image:FLIR 20220619 125451 686.jpg|A thermal image of v2.1 front (upside-down).|alt="A thermal image of v2.1 front (upside-down)."<br />
</gallery><br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg|An annotated ROCKPro64]]<br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable" style="line-height: 1.4;"<br />
|- style="font-size: .9em;"<br />
! Diagram !! Schematic<br>designator !! Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|- <br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated<br>header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD<br>(* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable<br>(direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip;<br>12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
The possible combinations are summarised in the table below.<br />
<br />
* 1 = present<br />
* 0 = not present<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot from<br />
|-<br />
| 0 || 0 || 0 || unsupported<br />
|-<br />
| 0 || 0 || 1 || unsupported<br />
|-<br />
| 0 || 1 || 0 || eMMC<br />
|-<br />
| 0 || 1 || 1 || unsupported<br />
|-<br />
| 1 || 0 || 0 || SDCard<br />
|-<br />
| 1 || 0 || 1 || SDCard<br />
|-<br />
| 1 || 1 || 0 || eMMC<br />
|-<br />
| 1 || 1 || 1 || SDCard<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. Some links:<br />
<br />
* [[ROCKPro64_Software_Release#Armbian | Armbian]]<br />
* [[ROCKPro64_Software_Release#Debian | Debian]]<br />
* [[ROCKPro64_Software_Release#DietPi | DietPi]]<br />
* [[ROCKPro64_Software_Release#OpenMediaVault | Open Media Vault]]<br />
* [[ROCKPro64_Software_Release#LibreELEC_.28KODI.29 | LibreELEC for KODI]]<br />
* [[ROCKPro64_Software_Release#Slackware | Slackware]]<br />
* [[ROCKPro64_Software_Release#NextCloudPi | NextCloudPi]]<br />
* [[ROCKPro64_Software_Release#Manjaro_ARM | Manjaro ARM]]<br />
* [[ROCKPro64_Software_Release#OpenWrt | OpenWrt]]<br />
<br />
Those linked OS support both microSD and eMMC Boot.<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART2)===<br />
<br />
{{warning|1=RockPro64 is designed to use 3VDC3A (3 Volts Direct Current 3 Ampere) for the connection, using 5VDC and more might damage the board!}}<br />
<br />
To use Serial Console you will a need operating system that supports it on your RockPro64, by default the serial console is provided for baud 9 600 which is far too slow for rockpro64 so consider using 1 500 000 (1.5Mbps) instead <b>IF</b> your serial console device supports it (many doesn't which results in their unability to use the console).<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
In terms of connections you need to perform the following from your serial console-capable device e.g. Pine64's Woodpecker available in store:<br />
* GND <-> GND (pin 6)<br />
* RxD <-> TxD (pin 8)<br />
* TxD <-> RxD (pin 10)<br />
<br />
After the configuration of your preferred operating system you can connect to the serial console using any of these commands:<br />
<br />
$ screen /dev/ttyUSB0 1500000<br />
<br />
$ picocom /dev/ttyUSB0 -b 1500000<br />
<br />
$ minicom -D /dev/ttyUSB0 -b 1500000<br />
<br />
NOTE: You might need a root permission if your user is not in the appropriate user-group e.g. <code>dialup</code> on GNU/Linux<br />
<br />
Alternatively there is a detailed guide on forums: https://forum.pine64.org/showthread.php?tid=6387<br />
<br />
==== GNU/Linux ====<br />
<br />
With GNU/Linux on your RockPro64 the built-in support for serial console can be enabled by parsing parse e.g. <code>console=ttyS2,1500000n8</code> in the kernel command line, many distributions make this available by default, but consider verifying the contents of <code>/boot/extlinux/extlinux.conf</code> if you encounter issues.<br />
<br />
NOTE: the <code>n8</code> in the kernel argument means <b>no parity, 8 bits per character</b><br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
<br />
=== Booting from SPI using u-boot ===<br />
<br />
{{warning|1=idbloader is not open-source}}<br />
<br />
Always be prepared to recover from a broken SPI boot BEFORE flashing or you will end up with a broken boot.<br />
<br />
In general the recovery is killswitching SPI through shorting pins 23 <-> 25 together and then loading u-boot from a storage device e.g. sd-card or eMMC where majority of GNU distributions e.g. Manjaro usually have u-boot packaged with the provided images.<br />
<br />
Follow instructions in https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI#instructions-for-rockpro64<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]. For the ROCKPro64, the backup plugs into the RTC connector, number 6 in the board layout diagram above, next to the USB3 and case screw point.<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== Older firmware overwrites actively used memory ===<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
<br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
The latest u-boot can boot the rockpro64 without any blobs from rockchip.<br />
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
Which gives you idbloader.img and u-boot.itb.<br />
Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
=== PCIe Controller Hardware Error Handling Bug ===<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
* [https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Notes ====<br />
<ol style="list-style-type:lower-alpha"><br />
<li>pulled high to 3.3V through 2.2kOhm resistor</li><br />
</ol><br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
{| class="wikitable plainrowheaders" style="float: right; margin: 0 0 0 1ch; line-height: 1.4; text-align: center;"<br />
|- style="font-size: .9em;"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3 || 1 || 20<br />
|-<br />
| 5 || 1 || 21 <br />
|-<br />
| 7 || 4 || 24 <br />
|-<br />
| 8 || 4 || 20 <br />
|-<br />
| 10 || 4 || 19 <br />
|-<br />
| 11 || 1 || 22 <br />
|-<br />
| 12 || 3 || 24 <br />
|-<br />
| 13 || 1 || 18 <br />
|-<br />
| 15 || 1 || 1 <br />
|-<br />
| 16 || 1 || 4 <br />
|-<br />
| 18 || 4 || 21 <br />
|-<br />
| 19 || 1 || 8 <br />
|-<br />
| 21 || 1 || 7 <br />
|-<br />
| 22 || 4 || 25 <br />
|-<br />
| 23 || 1 || 9 <br />
|-<br />
| 24 || 1 || 10 <br />
|-<br />
| 26 || 1 || 13 <br />
|-<br />
| 27 || 1 || 11 <br />
|-<br />
| 28 || 1 || 12 <br />
|-<br />
| 29 || 4 || 27 <br />
|-<br />
| 31 || 4 || 28 <br />
|-<br />
| 32 || 3 || 28 <br />
|-<br />
| 33 || 3 || 29 <br />
|-<br />
| 35 || 3 || 26 <br />
|-<br />
| 36 || 3 || 30 <br />
|-<br />
| 37 || 3 || 25 <br />
|-<br />
| 38 || 3 || 27 <br />
|-<br />
| 40 || 3 || 31<br />
|}<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API,<br />
the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>,<br />
and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source.<br />
Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them,<br />
and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on.<br />
Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
The conversion table at right is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
<div style="clear: both;"></div><br />
<br />
== Working Features ==<br />
<div style="overflow: auto"><br />
{| class="wikitable sortable"<br />
! Feature/Option<br />
! Android<br />
! Android Version<br />
! Linux<br />
! Linux Version<br />
! Test/Verify Steps<br />
! Notes<br />
! Product Link<br />
|-<br />
| PINE64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe [https://github.com/avafinger/pine64-touchscreen this] will help get this working?<br />
| [https://pine64.com/?product=7-lcd-touch-screen-panel 7″ LCD Touch Screen Panel]<br />
|-<br />
| Wireless<br />
<small>ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old)<br />
ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new)</small><br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| [https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module]<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| use this script: [https://github.com/ayufan-rock64/linux-package/blob/master/root-rockpro64/usr/local/sbin/rockpro64_enable_otg.sh 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<br />
| [[ROCKPro64_Main_Page#OTG_mode]]<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use [https://github.com/tuxd3v/ats ATS].<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out [https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2 what Frank Mankel has done].<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use [https://github.com/tuxd3v/fanctl fanctl] to control the fan while keeping your CPU cool<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
</div><br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [http://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here].<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [http://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet V2.1]<br />
** [http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf (v. 1.3)] [http://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf (v. 1.7)]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [http://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
* PWM controlled fan, SPDIF, and RTC Battery Backup headers<br />
** [https://www.jst-mfg.com/product/pdf/eng/ePH.pdf JST-PH connector]<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
* [[ROCKPro64 Device Tree Overlays on Mainline]]<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= 3D printable ITX mounting brackets =<br />
[[file:ITX-Bracket-Mounted.jpg|300px|thumb|right|A Quartz64-A mounted in an ITX case using 3D printed brackets]]<br />
<br />
Allows mounting a ROCKPro64-A or Quartz64-A board inside a regular PC case that conforms to the ITX standard, using 3D printed brackets:<br />
<br />
* AMF/STL/STEP files plus the original FreeCAD file used to create the models [[File:RP64-A_Q64-A_to_ITX_mounting_brackets.zip]]<br />
* Make sure to flip the two brackets by 180 degrees on one of the horizontal axes (X/Y) in your slicer of choice before printing to avoid unnecessary supports<br />
* To allow enough clearance between the board and the bracket you either need to print four copies of the washer model or add nut(s) between the board and the bracket<br />
* If using nuts for the clearance between the board and the brackets, make sure it creates at least 3.2mm of spacing in between<br />
* Depending on the accuracy and calibration of a 3D printer, slight deviation can occur and you likely need to manually widen some of the holes to allow screws to fit<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product PINE64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [http://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
= Troubleshooting =<br />
<br />
== No Video or GPU Acceleration on Debian ==<br />
<br />
If you can log in through serial but don't get any video or GPU acceleration on Debian, this is likely due to Debian's decision to compile the devfreq governors as loadable modules but not including them early enough for panfrost to be able to be provided with one of them.<br />
<br />
The usual sign of this being the case is the following line in your log: <code>[drm:panfrost_devfreq_init [panfrost]] *ERROR* Couldn't initialize GPU devfreq</code><br />
<br />
Log in to your ROCKPro64, and run the following:<br />
<br />
sudo -i<br />
echo governor_simpleondemand >> /etc/initramfs-tools/modules && update-initramfs -u -k $(uname -r)<br />
exit<br />
<br />
Then, reboot.<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64&diff=13404ROCKPro642022-07-29T17:42:03Z<p>Kreyren0: Setup a Serial Console (UART2) - Better wording to specify that the configuration is for linux ON rockpro64 instead of local system</p>
<hr />
<div><div style="float: right; margin-left: 1ch; max-width: 24em;">__TOC__</div><br />
<br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Pictures =<br />
<gallery heights="400" mode="packed"><br />
Image:ROCKPro64v21FRONT.jpg|A hi-res picture of v2.1 front.|alt="A hi-res picture of v2.1 front."<br />
Image:ROCKPro64v21REAR.jpg|A hi-res picture of v2.1 rear.|alt="A hi-res picture of v2.1 rear."<br />
Image:FLIR 20220619 125451 686.jpg|A thermal image of v2.1 front (upside-down).|alt="A thermal image of v2.1 front (upside-down)."<br />
</gallery><br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg|An annotated ROCKPro64]]<br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable" style="line-height: 1.4;"<br />
|- style="font-size: .9em;"<br />
! Diagram !! Schematic<br>designator !! Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|- <br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated<br>header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD<br>(* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable<br>(direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip;<br>12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
The possible combinations are summarised in the table below.<br />
<br />
* 1 = present<br />
* 0 = not present<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot from<br />
|-<br />
| 0 || 0 || 0 || unsupported<br />
|-<br />
| 0 || 0 || 1 || unsupported<br />
|-<br />
| 0 || 1 || 0 || eMMC<br />
|-<br />
| 0 || 1 || 1 || unsupported<br />
|-<br />
| 1 || 0 || 0 || SDCard<br />
|-<br />
| 1 || 0 || 1 || SDCard<br />
|-<br />
| 1 || 1 || 0 || eMMC<br />
|-<br />
| 1 || 1 || 1 || SDCard<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. Some links:<br />
<br />
* [[ROCKPro64_Software_Release#Armbian | Armbian]]<br />
* [[ROCKPro64_Software_Release#Debian | Debian]]<br />
* [[ROCKPro64_Software_Release#DietPi | DietPi]]<br />
* [[ROCKPro64_Software_Release#OpenMediaVault | Open Media Vault]]<br />
* [[ROCKPro64_Software_Release#LibreELEC_.28KODI.29 | LibreELEC for KODI]]<br />
* [[ROCKPro64_Software_Release#Slackware | Slackware]]<br />
* [[ROCKPro64_Software_Release#NextCloudPi | NextCloudPi]]<br />
* [[ROCKPro64_Software_Release#Manjaro_ARM | Manjaro ARM]]<br />
* [[ROCKPro64_Software_Release#OpenWrt | OpenWrt]]<br />
<br />
Those linked OS support both microSD and eMMC Boot.<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART2)===<br />
<br />
{{warning|1=RockPro64 is designed to use 3VDC3A (3 Volts Direct Current 3 Ampere) for the connection, using 5VDC and more might damage the board!}}<br />
<br />
To use Serial Console you will a need operating system that supports it on your RockPro64, by default the serial console is provided for baud 9 600 which is far too slow for rockpro64 so consider using 1 500 000 (1.5Mbps) instead <b>IF</b> your serial console device supports it (many doesn't which results in their unability to use the console).<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
In terms of connections you need to perform the following from your serial console-capable device e.g. Pine64's Woodpecker available in store:<br />
* GND <-> GND (pin 6)<br />
* RxD <-> TxD (pin 8)<br />
* TxD <-> RxD (pin 10)<br />
<br />
After the configuration of your preferred operating system you can connect to the serial console using any of these commands:<br />
<br />
$ screen /dev/ttyUSB0 1500000<br />
<br />
$ picocom /dev/ttyUSB0 -b 1500000<br />
<br />
$ minicom -D /dev/ttyUSB0 -b 1500000<br />
<br />
NOTE: You might need a root permission if your user is not in the appropriate user-group e.g. <code>dialup</code> on GNU/Linux<br />
<br />
Alternatively there is a detailed guide on forums: https://forum.pine64.org/showthread.php?tid=6387<br />
<br />
==== GNU/Linux ====<br />
<br />
With GNU/Linux on your RockPro64 the built-in support for serial console can be enabled by parsing parse e.g. <code>console=ttyS2,1500000n8</code> in the kernel command line, many distributions make this available by default, but consider verifying the contents of <code>/boot/extlinux/extlinux.conf</code> if you encounter issues.<br />
<br />
NOTE: the <code>n8</code> in the kernel argument means <b>no parity, 8 bits per character</b><br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
<br />
=== Booting from SPI using u-boot ===<br />
<br />
{{warning|1=idbloader is not open-source}}<br />
<br />
Always be prepared to recover from a broken SPI boot BEFORE flashing or you will end up with a broken boot.<br />
<br />
In general the recovery is killswitching SPI through shorting pins 23 <-> 25 together and then loading u-boot from a storage device e.g. sd-card or eMMC where majority of GNU distributions e.g. Armbian and Manjaro usually have u-boot packaged with the provided images.<br />
<br />
Follow instructions in https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI#instructions-for-rockpro64<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]. For the ROCKPro64, the backup plugs into the RTC connector, number 6 in the board layout diagram above, next to the USB3 and case screw point.<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== Older firmware overwrites actively used memory ===<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
<br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
The latest u-boot can boot the rockpro64 without any blobs from rockchip.<br />
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
Which gives you idbloader.img and u-boot.itb.<br />
Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
=== PCIe Controller Hardware Error Handling Bug ===<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
* [https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Notes ====<br />
<ol style="list-style-type:lower-alpha"><br />
<li>pulled high to 3.3V through 2.2kOhm resistor</li><br />
</ol><br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
{| class="wikitable plainrowheaders" style="float: right; margin: 0 0 0 1ch; line-height: 1.4; text-align: center;"<br />
|- style="font-size: .9em;"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3 || 1 || 20<br />
|-<br />
| 5 || 1 || 21 <br />
|-<br />
| 7 || 4 || 24 <br />
|-<br />
| 8 || 4 || 20 <br />
|-<br />
| 10 || 4 || 19 <br />
|-<br />
| 11 || 1 || 22 <br />
|-<br />
| 12 || 3 || 24 <br />
|-<br />
| 13 || 1 || 18 <br />
|-<br />
| 15 || 1 || 1 <br />
|-<br />
| 16 || 1 || 4 <br />
|-<br />
| 18 || 4 || 21 <br />
|-<br />
| 19 || 1 || 8 <br />
|-<br />
| 21 || 1 || 7 <br />
|-<br />
| 22 || 4 || 25 <br />
|-<br />
| 23 || 1 || 9 <br />
|-<br />
| 24 || 1 || 10 <br />
|-<br />
| 26 || 1 || 13 <br />
|-<br />
| 27 || 1 || 11 <br />
|-<br />
| 28 || 1 || 12 <br />
|-<br />
| 29 || 4 || 27 <br />
|-<br />
| 31 || 4 || 28 <br />
|-<br />
| 32 || 3 || 28 <br />
|-<br />
| 33 || 3 || 29 <br />
|-<br />
| 35 || 3 || 26 <br />
|-<br />
| 36 || 3 || 30 <br />
|-<br />
| 37 || 3 || 25 <br />
|-<br />
| 38 || 3 || 27 <br />
|-<br />
| 40 || 3 || 31<br />
|}<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API,<br />
the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>,<br />
and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source.<br />
Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them,<br />
and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on.<br />
Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
The conversion table at right is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
<div style="clear: both;"></div><br />
<br />
== Working Features ==<br />
<div style="overflow: auto"><br />
{| class="wikitable sortable"<br />
! Feature/Option<br />
! Android<br />
! Android Version<br />
! Linux<br />
! Linux Version<br />
! Test/Verify Steps<br />
! Notes<br />
! Product Link<br />
|-<br />
| PINE64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe [https://github.com/avafinger/pine64-touchscreen this] will help get this working?<br />
| [https://pine64.com/?product=7-lcd-touch-screen-panel 7″ LCD Touch Screen Panel]<br />
|-<br />
| Wireless<br />
<small>ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old)<br />
ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new)</small><br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| [https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module]<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| use this script: [https://github.com/ayufan-rock64/linux-package/blob/master/root-rockpro64/usr/local/sbin/rockpro64_enable_otg.sh 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<br />
| [[ROCKPro64_Main_Page#OTG_mode]]<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use [https://github.com/tuxd3v/ats ATS].<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out [https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2 what Frank Mankel has done].<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use [https://github.com/tuxd3v/fanctl fanctl] to control the fan while keeping your CPU cool<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
</div><br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [http://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here].<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [http://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet V2.1]<br />
** [http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf (v. 1.3)] [http://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf (v. 1.7)]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [http://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
* PWM controlled fan, SPDIF, and RTC Battery Backup headers<br />
** [https://www.jst-mfg.com/product/pdf/eng/ePH.pdf JST-PH connector]<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
* [[ROCKPro64 Device Tree Overlays on Mainline]]<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= 3D printable ITX mounting brackets =<br />
[[file:ITX-Bracket-Mounted.jpg|300px|thumb|right|A Quartz64-A mounted in an ITX case using 3D printed brackets]]<br />
<br />
Allows mounting a ROCKPro64-A or Quartz64-A board inside a regular PC case that conforms to the ITX standard, using 3D printed brackets:<br />
<br />
* AMF/STL/STEP files plus the original FreeCAD file used to create the models [[File:RP64-A_Q64-A_to_ITX_mounting_brackets.zip]]<br />
* Make sure to flip the two brackets by 180 degrees on one of the horizontal axes (X/Y) in your slicer of choice before printing to avoid unnecessary supports<br />
* To allow enough clearance between the board and the bracket you either need to print four copies of the washer model or add nut(s) between the board and the bracket<br />
* If using nuts for the clearance between the board and the brackets, make sure it creates at least 3.2mm of spacing in between<br />
* Depending on the accuracy and calibration of a 3D printer, slight deviation can occur and you likely need to manually widen some of the holes to allow screws to fit<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product PINE64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [http://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
= Troubleshooting =<br />
<br />
== No Video or GPU Acceleration on Debian ==<br />
<br />
If you can log in through serial but don't get any video or GPU acceleration on Debian, this is likely due to Debian's decision to compile the devfreq governors as loadable modules but not including them early enough for panfrost to be able to be provided with one of them.<br />
<br />
The usual sign of this being the case is the following line in your log: <code>[drm:panfrost_devfreq_init [panfrost]] *ERROR* Couldn't initialize GPU devfreq</code><br />
<br />
Log in to your ROCKPro64, and run the following:<br />
<br />
sudo -i<br />
echo governor_simpleondemand >> /etc/initramfs-tools/modules && update-initramfs -u -k $(uname -r)<br />
exit<br />
<br />
Then, reboot.<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64&diff=13403ROCKPro642022-07-29T17:24:35Z<p>Kreyren0: Booting from SPI using u-boot - Attempt at better and less intimidating wording</p>
<hr />
<div><div style="float: right; margin-left: 1ch; max-width: 24em;">__TOC__</div><br />
<br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Pictures =<br />
<gallery heights="400" mode="packed"><br />
Image:ROCKPro64v21FRONT.jpg|A hi-res picture of v2.1 front.|alt="A hi-res picture of v2.1 front."<br />
Image:ROCKPro64v21REAR.jpg|A hi-res picture of v2.1 rear.|alt="A hi-res picture of v2.1 rear."<br />
Image:FLIR 20220619 125451 686.jpg|A thermal image of v2.1 front (upside-down).|alt="A thermal image of v2.1 front (upside-down)."<br />
</gallery><br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg|An annotated ROCKPro64]]<br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable" style="line-height: 1.4;"<br />
|- style="font-size: .9em;"<br />
! Diagram !! Schematic<br>designator !! Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|- <br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated<br>header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD<br>(* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable<br>(direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip;<br>12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
The possible combinations are summarised in the table below.<br />
<br />
* 1 = present<br />
* 0 = not present<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot from<br />
|-<br />
| 0 || 0 || 0 || unsupported<br />
|-<br />
| 0 || 0 || 1 || unsupported<br />
|-<br />
| 0 || 1 || 0 || eMMC<br />
|-<br />
| 0 || 1 || 1 || unsupported<br />
|-<br />
| 1 || 0 || 0 || SDCard<br />
|-<br />
| 1 || 0 || 1 || SDCard<br />
|-<br />
| 1 || 1 || 0 || eMMC<br />
|-<br />
| 1 || 1 || 1 || SDCard<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. Some links:<br />
<br />
* [[ROCKPro64_Software_Release#Armbian | Armbian]]<br />
* [[ROCKPro64_Software_Release#Debian | Debian]]<br />
* [[ROCKPro64_Software_Release#DietPi | DietPi]]<br />
* [[ROCKPro64_Software_Release#OpenMediaVault | Open Media Vault]]<br />
* [[ROCKPro64_Software_Release#LibreELEC_.28KODI.29 | LibreELEC for KODI]]<br />
* [[ROCKPro64_Software_Release#Slackware | Slackware]]<br />
* [[ROCKPro64_Software_Release#NextCloudPi | NextCloudPi]]<br />
* [[ROCKPro64_Software_Release#Manjaro_ARM | Manjaro ARM]]<br />
* [[ROCKPro64_Software_Release#OpenWrt | OpenWrt]]<br />
<br />
Those linked OS support both microSD and eMMC Boot.<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART2)===<br />
<br />
{{warning|1=RockPro64 is designed to use 3VDC3A (3 Volts Direct Current 3 Ampere) for the connection, using 5VDC and more might damage the board!}}<br />
<br />
To use Serial Console you will need an operating system that supports it, by default the serial console is provided for baud 9 600 which is far too slow for rockpro64 so consider using 1 500 000 (1.5Mbps) instead <b>IF</b> your serial console device supports it (many doesn't which results in their unability to use the console).<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
In terms of connections you need to perform the following from your serial console-capable device e.g. Pine64's Woodpecker available in store:<br />
* GND <-> GND (pin 6)<br />
* RxD <-> TxD (pin 8)<br />
* TxD <-> RxD (pin 10)<br />
<br />
After the configuration of your preferred operating system you can connect to the serial console using any of these commands:<br />
<br />
$ screen /dev/ttyUSB0 1500000<br />
<br />
$ picocom /dev/ttyUSB0 -b 1500000<br />
<br />
$ minicom -D /dev/ttyUSB0 -b 1500000<br />
<br />
NOTE: You might need a root permission if your user is not in the appropriate user-group e.g. <code>dialup</code> on GNU/Linux<br />
<br />
Alternatively there is a detailed guide on forums: https://forum.pine64.org/showthread.php?tid=6387<br />
<br />
==== GNU/Linux ====<br />
<br />
.. has a built-in support for serial console, all is needed is to parse e.g. <code>console=ttyS2,1500000n8</code> in the kernel command line for it to make it available, many distributions make this available by default, but consider verifying the contents of [code]/boot/extlinux/extlinux.conf[/code] if you encounter issues.<br />
<br />
NOTE: the <code>n8</code> in the kernel argument means <b>no parity, 8 bits per character</b><br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
<br />
=== Booting from SPI using u-boot ===<br />
<br />
{{warning|1=idbloader is not open-source}}<br />
<br />
Always be prepared to recover from a broken SPI boot BEFORE flashing or you will end up with a broken boot.<br />
<br />
In general the recovery is killswitching SPI through shorting pins 23 <-> 25 together and then loading u-boot from a storage device e.g. sd-card or eMMC where majority of GNU distributions e.g. Armbian and Manjaro usually have u-boot packaged with the provided images.<br />
<br />
Follow instructions in https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI#instructions-for-rockpro64<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]. For the ROCKPro64, the backup plugs into the RTC connector, number 6 in the board layout diagram above, next to the USB3 and case screw point.<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== Older firmware overwrites actively used memory ===<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
<br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
The latest u-boot can boot the rockpro64 without any blobs from rockchip.<br />
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
Which gives you idbloader.img and u-boot.itb.<br />
Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
=== PCIe Controller Hardware Error Handling Bug ===<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
* [https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Notes ====<br />
<ol style="list-style-type:lower-alpha"><br />
<li>pulled high to 3.3V through 2.2kOhm resistor</li><br />
</ol><br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
{| class="wikitable plainrowheaders" style="float: right; margin: 0 0 0 1ch; line-height: 1.4; text-align: center;"<br />
|- style="font-size: .9em;"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3 || 1 || 20<br />
|-<br />
| 5 || 1 || 21 <br />
|-<br />
| 7 || 4 || 24 <br />
|-<br />
| 8 || 4 || 20 <br />
|-<br />
| 10 || 4 || 19 <br />
|-<br />
| 11 || 1 || 22 <br />
|-<br />
| 12 || 3 || 24 <br />
|-<br />
| 13 || 1 || 18 <br />
|-<br />
| 15 || 1 || 1 <br />
|-<br />
| 16 || 1 || 4 <br />
|-<br />
| 18 || 4 || 21 <br />
|-<br />
| 19 || 1 || 8 <br />
|-<br />
| 21 || 1 || 7 <br />
|-<br />
| 22 || 4 || 25 <br />
|-<br />
| 23 || 1 || 9 <br />
|-<br />
| 24 || 1 || 10 <br />
|-<br />
| 26 || 1 || 13 <br />
|-<br />
| 27 || 1 || 11 <br />
|-<br />
| 28 || 1 || 12 <br />
|-<br />
| 29 || 4 || 27 <br />
|-<br />
| 31 || 4 || 28 <br />
|-<br />
| 32 || 3 || 28 <br />
|-<br />
| 33 || 3 || 29 <br />
|-<br />
| 35 || 3 || 26 <br />
|-<br />
| 36 || 3 || 30 <br />
|-<br />
| 37 || 3 || 25 <br />
|-<br />
| 38 || 3 || 27 <br />
|-<br />
| 40 || 3 || 31<br />
|}<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API,<br />
the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>,<br />
and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source.<br />
Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them,<br />
and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on.<br />
Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
The conversion table at right is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
<div style="clear: both;"></div><br />
<br />
== Working Features ==<br />
<div style="overflow: auto"><br />
{| class="wikitable sortable"<br />
! Feature/Option<br />
! Android<br />
! Android Version<br />
! Linux<br />
! Linux Version<br />
! Test/Verify Steps<br />
! Notes<br />
! Product Link<br />
|-<br />
| PINE64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe [https://github.com/avafinger/pine64-touchscreen this] will help get this working?<br />
| [https://pine64.com/?product=7-lcd-touch-screen-panel 7″ LCD Touch Screen Panel]<br />
|-<br />
| Wireless<br />
<small>ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old)<br />
ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new)</small><br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| [https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module]<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| use this script: [https://github.com/ayufan-rock64/linux-package/blob/master/root-rockpro64/usr/local/sbin/rockpro64_enable_otg.sh 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<br />
| [[ROCKPro64_Main_Page#OTG_mode]]<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use [https://github.com/tuxd3v/ats ATS].<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out [https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2 what Frank Mankel has done].<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use [https://github.com/tuxd3v/fanctl fanctl] to control the fan while keeping your CPU cool<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
</div><br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [http://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here].<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [http://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet V2.1]<br />
** [http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf (v. 1.3)] [http://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf (v. 1.7)]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [http://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
* PWM controlled fan, SPDIF, and RTC Battery Backup headers<br />
** [https://www.jst-mfg.com/product/pdf/eng/ePH.pdf JST-PH connector]<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
* [[ROCKPro64 Device Tree Overlays on Mainline]]<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= 3D printable ITX mounting brackets =<br />
[[file:ITX-Bracket-Mounted.jpg|300px|thumb|right|A Quartz64-A mounted in an ITX case using 3D printed brackets]]<br />
<br />
Allows mounting a ROCKPro64-A or Quartz64-A board inside a regular PC case that conforms to the ITX standard, using 3D printed brackets:<br />
<br />
* AMF/STL/STEP files plus the original FreeCAD file used to create the models [[File:RP64-A_Q64-A_to_ITX_mounting_brackets.zip]]<br />
* Make sure to flip the two brackets by 180 degrees on one of the horizontal axes (X/Y) in your slicer of choice before printing to avoid unnecessary supports<br />
* To allow enough clearance between the board and the bracket you either need to print four copies of the washer model or add nut(s) between the board and the bracket<br />
* If using nuts for the clearance between the board and the brackets, make sure it creates at least 3.2mm of spacing in between<br />
* Depending on the accuracy and calibration of a 3D printer, slight deviation can occur and you likely need to manually widen some of the holes to allow screws to fit<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product PINE64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [http://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
= Troubleshooting =<br />
<br />
== No Video or GPU Acceleration on Debian ==<br />
<br />
If you can log in through serial but don't get any video or GPU acceleration on Debian, this is likely due to Debian's decision to compile the devfreq governors as loadable modules but not including them early enough for panfrost to be able to be provided with one of them.<br />
<br />
The usual sign of this being the case is the following line in your log: <code>[drm:panfrost_devfreq_init [panfrost]] *ERROR* Couldn't initialize GPU devfreq</code><br />
<br />
Log in to your ROCKPro64, and run the following:<br />
<br />
sudo -i<br />
echo governor_simpleondemand >> /etc/initramfs-tools/modules && update-initramfs -u -k $(uname -r)<br />
exit<br />
<br />
Then, reboot.<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64&diff=13399ROCKPro642022-07-29T12:02:27Z<p>Kreyren0: Setup a Serial Console (UART2) - Added note on what `n8` means</p>
<hr />
<div><div style="float: right; margin-left: 1ch; max-width: 24em;">__TOC__</div><br />
<br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Pictures =<br />
<gallery heights="400" mode="packed"><br />
Image:ROCKPro64v21FRONT.jpg|A hi-res picture of v2.1 front.|alt="A hi-res picture of v2.1 front."<br />
Image:ROCKPro64v21REAR.jpg|A hi-res picture of v2.1 rear.|alt="A hi-res picture of v2.1 rear."<br />
Image:FLIR 20220619 125451 686.jpg|A thermal image of v2.1 front (upside-down).|alt="A thermal image of v2.1 front (upside-down)."<br />
</gallery><br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg|An annotated ROCKPro64]]<br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable" style="line-height: 1.4;"<br />
|- style="font-size: .9em;"<br />
! Diagram !! Schematic<br>designator !! Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|- <br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated<br>header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD<br>(* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable<br>(direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip;<br>12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
The possible combinations are summarised in the table below.<br />
<br />
* 1 = present<br />
* 0 = not present<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot from<br />
|-<br />
| 0 || 0 || 0 || unsupported<br />
|-<br />
| 0 || 0 || 1 || unsupported<br />
|-<br />
| 0 || 1 || 0 || eMMC<br />
|-<br />
| 0 || 1 || 1 || unsupported<br />
|-<br />
| 1 || 0 || 0 || SDCard<br />
|-<br />
| 1 || 0 || 1 || SDCard<br />
|-<br />
| 1 || 1 || 0 || eMMC<br />
|-<br />
| 1 || 1 || 1 || SDCard<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. Some links:<br />
<br />
* [[ROCKPro64_Software_Release#Armbian | Armbian]]<br />
* [[ROCKPro64_Software_Release#Debian | Debian]]<br />
* [[ROCKPro64_Software_Release#DietPi | DietPi]]<br />
* [[ROCKPro64_Software_Release#OpenMediaVault | Open Media Vault]]<br />
* [[ROCKPro64_Software_Release#LibreELEC_.28KODI.29 | LibreELEC for KODI]]<br />
* [[ROCKPro64_Software_Release#Slackware | Slackware]]<br />
* [[ROCKPro64_Software_Release#NextCloudPi | NextCloudPi]]<br />
* [[ROCKPro64_Software_Release#Manjaro_ARM | Manjaro ARM]]<br />
* [[ROCKPro64_Software_Release#OpenWrt | OpenWrt]]<br />
<br />
Those linked OS support both microSD and eMMC Boot.<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART2)===<br />
<br />
{{warning|1=RockPro64 is designed to use 3VDC3A (3 Volts Direct Current 3 Ampere) for the connection, using 5VDC and more might damage the board!}}<br />
<br />
To use Serial Console you will need an operating system that supports it, by default the serial console is provided for baud 9 600 which is far too slow for rockpro64 so consider using 1 500 000 (1.5Mbps) instead <b>IF</b> your serial console device supports it (many doesn't which results in their unability to use the console).<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
In terms of connections you need to perform the following from your serial console-capable device e.g. Pine64's Woodpecker available in store:<br />
* GND <-> GND (pin 6)<br />
* RxD <-> TxD (pin 8)<br />
* TxD <-> RxD (pin 10)<br />
<br />
After the configuration of your preferred operating system you can connect to the serial console using any of these commands:<br />
<br />
$ screen /dev/ttyUSB0 1500000<br />
<br />
$ picocom /dev/ttyUSB0 -b 1500000<br />
<br />
$ minicom -D /dev/ttyUSB0 -b 1500000<br />
<br />
NOTE: You might need a root permission if your user is not in the appropriate user-group e.g. <code>dialup</code> on GNU/Linux<br />
<br />
Alternatively there is a detailed guide on forums: https://forum.pine64.org/showthread.php?tid=6387<br />
<br />
==== GNU/Linux ====<br />
<br />
.. has a built-in support for serial console, all is needed is to parse e.g. <code>console=ttyS2,1500000n8</code> in the kernel command line for it to make it available, many distributions make this available by default, but consider verifying the contents of [code]/boot/extlinux/extlinux.conf[/code] if you encounter issues.<br />
<br />
NOTE: the <code>n8</code> in the kernel argument means <b>no parity, 8 bits per character</b><br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
<br />
=== Booting from SPI using u-boot ===<br />
<br />
{{warning|1=idbloader is not open-source}}<br />
{{warning|do not attempt to flash SPI if you are not prepared to recover from a broken bootloader on SPI. We get a lot of support requests in the chat channels from people who managed to flash something broken on their SPI flash and now don't know how to recover from this. You have been warned.}}<br />
<br />
Follow instructions in https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI#instructions-for-rockpro64<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]. For the ROCKPro64, the backup plugs into the RTC connector, number 6 in the board layout diagram above, next to the USB3 and case screw point.<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== Older firmware overwrites actively used memory ===<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
<br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
The latest u-boot can boot the rockpro64 without any blobs from rockchip.<br />
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
Which gives you idbloader.img and u-boot.itb.<br />
Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
=== PCIe Controller Hardware Error Handling Bug ===<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
* [https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Notes ====<br />
<ol style="list-style-type:lower-alpha"><br />
<li>pulled high to 3.3V through 2.2kOhm resistor</li><br />
</ol><br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
{| class="wikitable plainrowheaders" style="float: right; margin: 0 0 0 1ch; line-height: 1.4; text-align: center;"<br />
|- style="font-size: .9em;"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3 || 1 || 20<br />
|-<br />
| 5 || 1 || 21 <br />
|-<br />
| 7 || 4 || 24 <br />
|-<br />
| 8 || 4 || 20 <br />
|-<br />
| 10 || 4 || 19 <br />
|-<br />
| 11 || 1 || 22 <br />
|-<br />
| 12 || 3 || 24 <br />
|-<br />
| 13 || 1 || 18 <br />
|-<br />
| 15 || 1 || 1 <br />
|-<br />
| 16 || 1 || 4 <br />
|-<br />
| 18 || 4 || 21 <br />
|-<br />
| 19 || 1 || 8 <br />
|-<br />
| 21 || 1 || 7 <br />
|-<br />
| 22 || 4 || 25 <br />
|-<br />
| 23 || 1 || 9 <br />
|-<br />
| 24 || 1 || 10 <br />
|-<br />
| 26 || 1 || 13 <br />
|-<br />
| 27 || 1 || 11 <br />
|-<br />
| 28 || 1 || 12 <br />
|-<br />
| 29 || 4 || 27 <br />
|-<br />
| 31 || 4 || 28 <br />
|-<br />
| 32 || 3 || 28 <br />
|-<br />
| 33 || 3 || 29 <br />
|-<br />
| 35 || 3 || 26 <br />
|-<br />
| 36 || 3 || 30 <br />
|-<br />
| 37 || 3 || 25 <br />
|-<br />
| 38 || 3 || 27 <br />
|-<br />
| 40 || 3 || 31<br />
|}<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API,<br />
the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>,<br />
and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source.<br />
Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them,<br />
and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on.<br />
Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
The conversion table at right is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
<div style="clear: both;"></div><br />
<br />
== Working Features ==<br />
<div style="overflow: auto"><br />
{| class="wikitable sortable"<br />
! Feature/Option<br />
! Android<br />
! Android Version<br />
! Linux<br />
! Linux Version<br />
! Test/Verify Steps<br />
! Notes<br />
! Product Link<br />
|-<br />
| PINE64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe [https://github.com/avafinger/pine64-touchscreen this] will help get this working?<br />
| [https://pine64.com/?product=7-lcd-touch-screen-panel 7″ LCD Touch Screen Panel]<br />
|-<br />
| Wireless<br />
<small>ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old)<br />
ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new)</small><br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| [https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module]<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| use this script: [https://github.com/ayufan-rock64/linux-package/blob/master/root-rockpro64/usr/local/sbin/rockpro64_enable_otg.sh 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<br />
| [[ROCKPro64_Main_Page#OTG_mode]]<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use [https://github.com/tuxd3v/ats ATS].<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out [https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2 what Frank Mankel has done].<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use [https://github.com/tuxd3v/fanctl fanctl] to control the fan while keeping your CPU cool<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
</div><br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [http://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here].<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [http://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet V2.1]<br />
** [http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf (v. 1.3)] [http://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf (v. 1.7)]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [http://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
* PWM controlled fan, SPDIF, and RTC Battery Backup headers<br />
** [https://www.jst-mfg.com/product/pdf/eng/ePH.pdf JST-PH connector]<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
* [[ROCKPro64 Device Tree Overlays on Mainline]]<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= 3D printable ITX mounting brackets =<br />
[[file:ITX-Bracket-Mounted.jpg|300px|thumb|right|A Quartz64-A mounted in an ITX case using 3D printed brackets]]<br />
<br />
Allows mounting a ROCKPro64-A or Quartz64-A board inside a regular PC case that conforms to the ITX standard, using 3D printed brackets:<br />
<br />
* AMF/STL/STEP files plus the original FreeCAD file used to create the models [[File:RP64-A_Q64-A_to_ITX_mounting_brackets.zip]]<br />
* Make sure to flip the two brackets by 180 degrees on one of the horizontal axes (X/Y) in your slicer of choice before printing to avoid unnecessary supports<br />
* To allow enough clearance between the board and the bracket you either need to print four copies of the washer model or add nut(s) between the board and the bracket<br />
* If using nuts for the clearance between the board and the brackets, make sure it creates at least 3.2mm of spacing in between<br />
* Depending on the accuracy and calibration of a 3D printer, slight deviation can occur and you likely need to manually widen some of the holes to allow screws to fit<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product PINE64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [http://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
= Troubleshooting =<br />
<br />
== No Video or GPU Acceleration on Debian ==<br />
<br />
If you can log in through serial but don't get any video or GPU acceleration on Debian, this is likely due to Debian's decision to compile the devfreq governors as loadable modules but not including them early enough for panfrost to be able to be provided with one of them.<br />
<br />
The usual sign of this being the case is the following line in your log: <code>[drm:panfrost_devfreq_init [panfrost]] *ERROR* Couldn't initialize GPU devfreq</code><br />
<br />
Log in to your ROCKPro64, and run the following:<br />
<br />
sudo -i<br />
echo governor_simpleondemand >> /etc/initramfs-tools/modules && update-initramfs -u -k $(uname -r)<br />
exit<br />
<br />
Then, reboot.<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64&diff=13398ROCKPro642022-07-29T11:05:51Z<p>Kreyren0: Setup a Serial Console (UART2) - Added mention of the available commands to use the serial console</p>
<hr />
<div><div style="float: right; margin-left: 1ch; max-width: 24em;">__TOC__</div><br />
<br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Pictures =<br />
<gallery heights="400" mode="packed"><br />
Image:ROCKPro64v21FRONT.jpg|A hi-res picture of v2.1 front.|alt="A hi-res picture of v2.1 front."<br />
Image:ROCKPro64v21REAR.jpg|A hi-res picture of v2.1 rear.|alt="A hi-res picture of v2.1 rear."<br />
Image:FLIR 20220619 125451 686.jpg|A thermal image of v2.1 front (upside-down).|alt="A thermal image of v2.1 front (upside-down)."<br />
</gallery><br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg|An annotated ROCKPro64]]<br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable" style="line-height: 1.4;"<br />
|- style="font-size: .9em;"<br />
! Diagram !! Schematic<br>designator !! Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|- <br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated<br>header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD<br>(* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable<br>(direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip;<br>12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
The possible combinations are summarised in the table below.<br />
<br />
* 1 = present<br />
* 0 = not present<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot from<br />
|-<br />
| 0 || 0 || 0 || unsupported<br />
|-<br />
| 0 || 0 || 1 || unsupported<br />
|-<br />
| 0 || 1 || 0 || eMMC<br />
|-<br />
| 0 || 1 || 1 || unsupported<br />
|-<br />
| 1 || 0 || 0 || SDCard<br />
|-<br />
| 1 || 0 || 1 || SDCard<br />
|-<br />
| 1 || 1 || 0 || eMMC<br />
|-<br />
| 1 || 1 || 1 || SDCard<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. Some links:<br />
<br />
* [[ROCKPro64_Software_Release#Armbian | Armbian]]<br />
* [[ROCKPro64_Software_Release#Debian | Debian]]<br />
* [[ROCKPro64_Software_Release#DietPi | DietPi]]<br />
* [[ROCKPro64_Software_Release#OpenMediaVault | Open Media Vault]]<br />
* [[ROCKPro64_Software_Release#LibreELEC_.28KODI.29 | LibreELEC for KODI]]<br />
* [[ROCKPro64_Software_Release#Slackware | Slackware]]<br />
* [[ROCKPro64_Software_Release#NextCloudPi | NextCloudPi]]<br />
* [[ROCKPro64_Software_Release#Manjaro_ARM | Manjaro ARM]]<br />
* [[ROCKPro64_Software_Release#OpenWrt | OpenWrt]]<br />
<br />
Those linked OS support both microSD and eMMC Boot.<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART2)===<br />
<br />
{{warning|1=RockPro64 is designed to use 3VDC3A (3 Volts Direct Current 3 Ampere) for the connection, using 5VDC and more might damage the board!}}<br />
<br />
To use Serial Console you will need an operating system that supports it, by default the serial console is provided for baud 9 600 which is far too slow for rockpro64 so consider using 1 500 000 (1.5Mbps) instead <b>IF</b> your serial console device supports it (many doesn't which results in their unability to use the console).<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
In terms of connections you need to perform the following from your serial console-capable device e.g. Pine64's Woodpecker available in store:<br />
* GND <-> GND (pin 6)<br />
* RxD <-> TxD (pin 8)<br />
* TxD <-> RxD (pin 10)<br />
<br />
After the configuration of your preferred operating system you can connect to the serial console using any of these commands:<br />
<br />
$ screen /dev/ttyUSB0 1500000<br />
<br />
$ picocom /dev/ttyUSB0 -b 1500000<br />
<br />
$ minicom -D /dev/ttyUSB0 -b 1500000<br />
<br />
NOTE: You might need a root permission if your user is not in the appropriate user-group e.g. <code>dialup</code> on GNU/Linux<br />
<br />
Alternatively there is a detailed guide on forums: https://forum.pine64.org/showthread.php?tid=6387<br />
<br />
==== GNU/Linux ====<br />
<br />
.. has a built-in support for serial console, all is needed is to parse e.g. <code>console=ttyS2,1500000</code> in the kernel command line for it to make it available, many distributions make this available by default, but consider verifying the contents of [code]/boot/extlinux/extlinux.conf[/code] if you encounter issues.<br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
<br />
=== Booting from SPI using u-boot ===<br />
<br />
{{warning|1=idbloader is not open-source}}<br />
{{warning|do not attempt to flash SPI if you are not prepared to recover from a broken bootloader on SPI. We get a lot of support requests in the chat channels from people who managed to flash something broken on their SPI flash and now don't know how to recover from this. You have been warned.}}<br />
<br />
Follow instructions in https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI#instructions-for-rockpro64<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]. For the ROCKPro64, the backup plugs into the RTC connector, number 6 in the board layout diagram above, next to the USB3 and case screw point.<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== Older firmware overwrites actively used memory ===<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
<br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
The latest u-boot can boot the rockpro64 without any blobs from rockchip.<br />
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
Which gives you idbloader.img and u-boot.itb.<br />
Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
=== PCIe Controller Hardware Error Handling Bug ===<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
* [https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Notes ====<br />
<ol style="list-style-type:lower-alpha"><br />
<li>pulled high to 3.3V through 2.2kOhm resistor</li><br />
</ol><br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
{| class="wikitable plainrowheaders" style="float: right; margin: 0 0 0 1ch; line-height: 1.4; text-align: center;"<br />
|- style="font-size: .9em;"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3 || 1 || 20<br />
|-<br />
| 5 || 1 || 21 <br />
|-<br />
| 7 || 4 || 24 <br />
|-<br />
| 8 || 4 || 20 <br />
|-<br />
| 10 || 4 || 19 <br />
|-<br />
| 11 || 1 || 22 <br />
|-<br />
| 12 || 3 || 24 <br />
|-<br />
| 13 || 1 || 18 <br />
|-<br />
| 15 || 1 || 1 <br />
|-<br />
| 16 || 1 || 4 <br />
|-<br />
| 18 || 4 || 21 <br />
|-<br />
| 19 || 1 || 8 <br />
|-<br />
| 21 || 1 || 7 <br />
|-<br />
| 22 || 4 || 25 <br />
|-<br />
| 23 || 1 || 9 <br />
|-<br />
| 24 || 1 || 10 <br />
|-<br />
| 26 || 1 || 13 <br />
|-<br />
| 27 || 1 || 11 <br />
|-<br />
| 28 || 1 || 12 <br />
|-<br />
| 29 || 4 || 27 <br />
|-<br />
| 31 || 4 || 28 <br />
|-<br />
| 32 || 3 || 28 <br />
|-<br />
| 33 || 3 || 29 <br />
|-<br />
| 35 || 3 || 26 <br />
|-<br />
| 36 || 3 || 30 <br />
|-<br />
| 37 || 3 || 25 <br />
|-<br />
| 38 || 3 || 27 <br />
|-<br />
| 40 || 3 || 31<br />
|}<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API,<br />
the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>,<br />
and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source.<br />
Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them,<br />
and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on.<br />
Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
The conversion table at right is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
<div style="clear: both;"></div><br />
<br />
== Working Features ==<br />
<div style="overflow: auto"><br />
{| class="wikitable sortable"<br />
! Feature/Option<br />
! Android<br />
! Android Version<br />
! Linux<br />
! Linux Version<br />
! Test/Verify Steps<br />
! Notes<br />
! Product Link<br />
|-<br />
| PINE64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe [https://github.com/avafinger/pine64-touchscreen this] will help get this working?<br />
| [https://pine64.com/?product=7-lcd-touch-screen-panel 7″ LCD Touch Screen Panel]<br />
|-<br />
| Wireless<br />
<small>ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old)<br />
ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new)</small><br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| [https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module]<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| use this script: [https://github.com/ayufan-rock64/linux-package/blob/master/root-rockpro64/usr/local/sbin/rockpro64_enable_otg.sh 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<br />
| [[ROCKPro64_Main_Page#OTG_mode]]<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use [https://github.com/tuxd3v/ats ATS].<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out [https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2 what Frank Mankel has done].<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use [https://github.com/tuxd3v/fanctl fanctl] to control the fan while keeping your CPU cool<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
</div><br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [http://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here].<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [http://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet V2.1]<br />
** [http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf (v. 1.3)] [http://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf (v. 1.7)]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [http://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
* PWM controlled fan, SPDIF, and RTC Battery Backup headers<br />
** [https://www.jst-mfg.com/product/pdf/eng/ePH.pdf JST-PH connector]<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
* [[ROCKPro64 Device Tree Overlays on Mainline]]<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= 3D printable ITX mounting brackets =<br />
[[file:ITX-Bracket-Mounted.jpg|300px|thumb|right|A Quartz64-A mounted in an ITX case using 3D printed brackets]]<br />
<br />
Allows mounting a ROCKPro64-A or Quartz64-A board inside a regular PC case that conforms to the ITX standard, using 3D printed brackets:<br />
<br />
* AMF/STL/STEP files plus the original FreeCAD file used to create the models [[File:RP64-A_Q64-A_to_ITX_mounting_brackets.zip]]<br />
* Make sure to flip the two brackets by 180 degrees on one of the horizontal axes (X/Y) in your slicer of choice before printing to avoid unnecessary supports<br />
* To allow enough clearance between the board and the bracket you either need to print four copies of the washer model or add nut(s) between the board and the bracket<br />
* If using nuts for the clearance between the board and the brackets, make sure it creates at least 3.2mm of spacing in between<br />
* Depending on the accuracy and calibration of a 3D printer, slight deviation can occur and you likely need to manually widen some of the holes to allow screws to fit<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product PINE64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [http://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
= Troubleshooting =<br />
<br />
== No Video or GPU Acceleration on Debian ==<br />
<br />
If you can log in through serial but don't get any video or GPU acceleration on Debian, this is likely due to Debian's decision to compile the devfreq governors as loadable modules but not including them early enough for panfrost to be able to be provided with one of them.<br />
<br />
The usual sign of this being the case is the following line in your log: <code>[drm:panfrost_devfreq_init [panfrost]] *ERROR* Couldn't initialize GPU devfreq</code><br />
<br />
Log in to your ROCKPro64, and run the following:<br />
<br />
sudo -i<br />
echo governor_simpleondemand >> /etc/initramfs-tools/modules && update-initramfs -u -k $(uname -r)<br />
exit<br />
<br />
Then, reboot.<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64&diff=13397ROCKPro642022-07-29T10:55:25Z<p>Kreyren0: Reworded 'Setup a Serial Console (UART2)'</p>
<hr />
<div><div style="float: right; margin-left: 1ch; max-width: 24em;">__TOC__</div><br />
<br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Pictures =<br />
<gallery heights="400" mode="packed"><br />
Image:ROCKPro64v21FRONT.jpg|A hi-res picture of v2.1 front.|alt="A hi-res picture of v2.1 front."<br />
Image:ROCKPro64v21REAR.jpg|A hi-res picture of v2.1 rear.|alt="A hi-res picture of v2.1 rear."<br />
Image:FLIR 20220619 125451 686.jpg|A thermal image of v2.1 front (upside-down).|alt="A thermal image of v2.1 front (upside-down)."<br />
</gallery><br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg|An annotated ROCKPro64]]<br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable" style="line-height: 1.4;"<br />
|- style="font-size: .9em;"<br />
! Diagram !! Schematic<br>designator !! Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|- <br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated<br>header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD<br>(* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable<br>(direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip;<br>12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
The possible combinations are summarised in the table below.<br />
<br />
* 1 = present<br />
* 0 = not present<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot from<br />
|-<br />
| 0 || 0 || 0 || unsupported<br />
|-<br />
| 0 || 0 || 1 || unsupported<br />
|-<br />
| 0 || 1 || 0 || eMMC<br />
|-<br />
| 0 || 1 || 1 || unsupported<br />
|-<br />
| 1 || 0 || 0 || SDCard<br />
|-<br />
| 1 || 0 || 1 || SDCard<br />
|-<br />
| 1 || 1 || 0 || eMMC<br />
|-<br />
| 1 || 1 || 1 || SDCard<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. Some links:<br />
<br />
* [[ROCKPro64_Software_Release#Armbian | Armbian]]<br />
* [[ROCKPro64_Software_Release#Debian | Debian]]<br />
* [[ROCKPro64_Software_Release#DietPi | DietPi]]<br />
* [[ROCKPro64_Software_Release#OpenMediaVault | Open Media Vault]]<br />
* [[ROCKPro64_Software_Release#LibreELEC_.28KODI.29 | LibreELEC for KODI]]<br />
* [[ROCKPro64_Software_Release#Slackware | Slackware]]<br />
* [[ROCKPro64_Software_Release#NextCloudPi | NextCloudPi]]<br />
* [[ROCKPro64_Software_Release#Manjaro_ARM | Manjaro ARM]]<br />
* [[ROCKPro64_Software_Release#OpenWrt | OpenWrt]]<br />
<br />
Those linked OS support both microSD and eMMC Boot.<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART2)===<br />
<br />
{{warning|1=RockPro64 is designed to use 3VDC3A (3 Volts Direct Current 3 Ampere) for the connection, using 5VDC and more might damage the board!}}<br />
<br />
To use Serial Console you will need an operating system that supports it, by default the serial console is provided for baud 9 600 which is far too slow for rockpro64 so consider using 1 500 000 (1.5Mbps) instead <b>IF</b> your serial console device supports it (many doesn't which results in their unability to use the console).<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
In terms of connections you need to perform the following from your serial console-capable device e.g. Pine64's Woodpecker available in store:<br />
* GND <-> GND (pin 6)<br />
* RxD <-> TxD (pin 8)<br />
* TxD <-> RxD (pin 10)<br />
<br />
Alternatively there is a detailed guide on forums: https://forum.pine64.org/showthread.php?tid=6387<br />
<br />
==== GNU/Linux ====<br />
<br />
.. has a built-in support for serial console, all is needed is to parse e.g. <code>console=ttyS2,1500000</code> in the kernel command line for it to make it available, many distributions make this available by default, but consider verifying the contents of [code]/boot/extlinux/extlinux.conf[/code] if you encounter issues.<br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
<br />
=== Booting from SPI using u-boot ===<br />
<br />
{{warning|1=idbloader is not open-source}}<br />
{{warning|do not attempt to flash SPI if you are not prepared to recover from a broken bootloader on SPI. We get a lot of support requests in the chat channels from people who managed to flash something broken on their SPI flash and now don't know how to recover from this. You have been warned.}}<br />
<br />
Follow instructions in https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI#instructions-for-rockpro64<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]. For the ROCKPro64, the backup plugs into the RTC connector, number 6 in the board layout diagram above, next to the USB3 and case screw point.<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== Older firmware overwrites actively used memory ===<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
<br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
The latest u-boot can boot the rockpro64 without any blobs from rockchip.<br />
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
Which gives you idbloader.img and u-boot.itb.<br />
Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
=== PCIe Controller Hardware Error Handling Bug ===<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
* [https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Notes ====<br />
<ol style="list-style-type:lower-alpha"><br />
<li>pulled high to 3.3V through 2.2kOhm resistor</li><br />
</ol><br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
{| class="wikitable plainrowheaders" style="float: right; margin: 0 0 0 1ch; line-height: 1.4; text-align: center;"<br />
|- style="font-size: .9em;"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3 || 1 || 20<br />
|-<br />
| 5 || 1 || 21 <br />
|-<br />
| 7 || 4 || 24 <br />
|-<br />
| 8 || 4 || 20 <br />
|-<br />
| 10 || 4 || 19 <br />
|-<br />
| 11 || 1 || 22 <br />
|-<br />
| 12 || 3 || 24 <br />
|-<br />
| 13 || 1 || 18 <br />
|-<br />
| 15 || 1 || 1 <br />
|-<br />
| 16 || 1 || 4 <br />
|-<br />
| 18 || 4 || 21 <br />
|-<br />
| 19 || 1 || 8 <br />
|-<br />
| 21 || 1 || 7 <br />
|-<br />
| 22 || 4 || 25 <br />
|-<br />
| 23 || 1 || 9 <br />
|-<br />
| 24 || 1 || 10 <br />
|-<br />
| 26 || 1 || 13 <br />
|-<br />
| 27 || 1 || 11 <br />
|-<br />
| 28 || 1 || 12 <br />
|-<br />
| 29 || 4 || 27 <br />
|-<br />
| 31 || 4 || 28 <br />
|-<br />
| 32 || 3 || 28 <br />
|-<br />
| 33 || 3 || 29 <br />
|-<br />
| 35 || 3 || 26 <br />
|-<br />
| 36 || 3 || 30 <br />
|-<br />
| 37 || 3 || 25 <br />
|-<br />
| 38 || 3 || 27 <br />
|-<br />
| 40 || 3 || 31<br />
|}<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API,<br />
the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>,<br />
and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source.<br />
Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them,<br />
and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on.<br />
Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
The conversion table at right is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
<div style="clear: both;"></div><br />
<br />
== Working Features ==<br />
<div style="overflow: auto"><br />
{| class="wikitable sortable"<br />
! Feature/Option<br />
! Android<br />
! Android Version<br />
! Linux<br />
! Linux Version<br />
! Test/Verify Steps<br />
! Notes<br />
! Product Link<br />
|-<br />
| PINE64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe [https://github.com/avafinger/pine64-touchscreen this] will help get this working?<br />
| [https://pine64.com/?product=7-lcd-touch-screen-panel 7″ LCD Touch Screen Panel]<br />
|-<br />
| Wireless<br />
<small>ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old)<br />
ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new)</small><br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| [https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module]<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| use this script: [https://github.com/ayufan-rock64/linux-package/blob/master/root-rockpro64/usr/local/sbin/rockpro64_enable_otg.sh 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<br />
| [[ROCKPro64_Main_Page#OTG_mode]]<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use [https://github.com/tuxd3v/ats ATS].<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out [https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2 what Frank Mankel has done].<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use [https://github.com/tuxd3v/fanctl fanctl] to control the fan while keeping your CPU cool<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
</div><br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [http://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here].<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [http://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet V2.1]<br />
** [http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf (v. 1.3)] [http://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf (v. 1.7)]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [http://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
* PWM controlled fan, SPDIF, and RTC Battery Backup headers<br />
** [https://www.jst-mfg.com/product/pdf/eng/ePH.pdf JST-PH connector]<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
* [[ROCKPro64 Device Tree Overlays on Mainline]]<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= 3D printable ITX mounting brackets =<br />
[[file:ITX-Bracket-Mounted.jpg|300px|thumb|right|A Quartz64-A mounted in an ITX case using 3D printed brackets]]<br />
<br />
Allows mounting a ROCKPro64-A or Quartz64-A board inside a regular PC case that conforms to the ITX standard, using 3D printed brackets:<br />
<br />
* AMF/STL/STEP files plus the original FreeCAD file used to create the models [[File:RP64-A_Q64-A_to_ITX_mounting_brackets.zip]]<br />
* Make sure to flip the two brackets by 180 degrees on one of the horizontal axes (X/Y) in your slicer of choice before printing to avoid unnecessary supports<br />
* To allow enough clearance between the board and the bracket you either need to print four copies of the washer model or add nut(s) between the board and the bracket<br />
* If using nuts for the clearance between the board and the brackets, make sure it creates at least 3.2mm of spacing in between<br />
* Depending on the accuracy and calibration of a 3D printer, slight deviation can occur and you likely need to manually widen some of the holes to allow screws to fit<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product PINE64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [http://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
= Troubleshooting =<br />
<br />
== No Video or GPU Acceleration on Debian ==<br />
<br />
If you can log in through serial but don't get any video or GPU acceleration on Debian, this is likely due to Debian's decision to compile the devfreq governors as loadable modules but not including them early enough for panfrost to be able to be provided with one of them.<br />
<br />
The usual sign of this being the case is the following line in your log: <code>[drm:panfrost_devfreq_init [panfrost]] *ERROR* Couldn't initialize GPU devfreq</code><br />
<br />
Log in to your ROCKPro64, and run the following:<br />
<br />
sudo -i<br />
echo governor_simpleondemand >> /etc/initramfs-tools/modules && update-initramfs -u -k $(uname -r)<br />
exit<br />
<br />
Then, reboot.<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64&diff=13390ROCKPro642022-07-28T09:39:37Z<p>Kreyren0: I keep instinctively clicking on it thinking it will give me things to flash on my board only to get annoyed over pictures of it, so this is meant to mitigate it</p>
<hr />
<div><div style="float: right; margin-left: 1ch; max-width: 24em;">__TOC__</div><br />
<br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Pictures =<br />
<gallery heights="400" mode="packed"><br />
Image:ROCKPro64v21FRONT.jpg|A hi-res picture of v2.1 front.|alt="A hi-res picture of v2.1 front."<br />
Image:ROCKPro64v21REAR.jpg|A hi-res picture of v2.1 rear.|alt="A hi-res picture of v2.1 rear."<br />
Image:FLIR 20220619 125451 686.jpg|A thermal image of v2.1 front (upside-down).|alt="A thermal image of v2.1 front (upside-down)."<br />
</gallery><br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg|An annotated ROCKPro64]]<br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable" style="line-height: 1.4;"<br />
|- style="font-size: .9em;"<br />
! Diagram !! Schematic<br>designator !! Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|- <br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated<br>header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD<br>(* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable<br>(direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip;<br>12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
The possible combinations are summarised in the table below.<br />
<br />
* 1 = present<br />
* 0 = not present<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot from<br />
|-<br />
| 0 || 0 || 0 || unsupported<br />
|-<br />
| 0 || 0 || 1 || unsupported<br />
|-<br />
| 0 || 1 || 0 || eMMC<br />
|-<br />
| 0 || 1 || 1 || unsupported<br />
|-<br />
| 1 || 0 || 0 || SDCard<br />
|-<br />
| 1 || 0 || 1 || SDCard<br />
|-<br />
| 1 || 1 || 0 || eMMC<br />
|-<br />
| 1 || 1 || 1 || SDCard<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. Some links:<br />
<br />
* [[ROCKPro64_Software_Release#Armbian | Armbian]]<br />
* [[ROCKPro64_Software_Release#Debian | Debian]]<br />
* [[ROCKPro64_Software_Release#DietPi | DietPi]]<br />
* [[ROCKPro64_Software_Release#OpenMediaVault | Open Media Vault]]<br />
* [[ROCKPro64_Software_Release#LibreELEC_.28KODI.29 | LibreELEC for KODI]]<br />
* [[ROCKPro64_Software_Release#Slackware | Slackware]]<br />
* [[ROCKPro64_Software_Release#NextCloudPi | NextCloudPi]]<br />
* [[ROCKPro64_Software_Release#Manjaro_ARM | Manjaro ARM]]<br />
* [[ROCKPro64_Software_Release#OpenWrt | OpenWrt]]<br />
<br />
Those linked OS support both microSD and eMMC Boot.<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART)===<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
The early adopters (and late-comers who fiddle excessively with their boards or don't want to use a keyboard and monitor) have a need to monitor the low-level boot behaviour: this is done with a serial console.<br />
The console is a 3.3v serial port using pins 8 (TxD from RK3399) and 10 (RxD to RK3399) of U39 (the PI-2 bus), with pin 6 as a convenient ground, running at 1500000,N,8,1 (1.5Mbps).<br />
<br />
There is a great, detailed description how to get this working specifically on the ROCKPro64 [https://forum.pine64.org/showthread.php?tid=6387 here].<br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
<br />
=== Booting from SPI using u-boot ===<br />
<br />
{{warning|1=idbloader is not open-source}}<br />
{{warning|do not attempt to flash SPI if you are not prepared to recover from a broken bootloader on SPI. We get a lot of support requests in the chat channels from people who managed to flash something broken on their SPI flash and now don't know how to recover from this. You have been warned.}}<br />
<br />
Follow instructions in https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI#instructions-for-rockpro64<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]. For the ROCKPro64, the backup plugs into the RTC connector, number 6 in the board layout diagram above, next to the USB3 and case screw point.<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== Older firmware overwrites actively used memory ===<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
<br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
The latest u-boot can boot the rockpro64 without any blobs from rockchip.<br />
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
Which gives you idbloader.img and u-boot.itb.<br />
Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
=== PCIe Controller Hardware Error Handling Bug ===<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
* [https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL) <sup style="font-style:italic;color:green">a</sup><br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Notes ====<br />
<ol style="list-style-type:lower-alpha"><br />
<li>pulled high to 3.3V through 2.2kOhm resistor</li><br />
</ol><br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
{| class="wikitable plainrowheaders" style="float: right; margin: 0 0 0 1ch; line-height: 1.4; text-align: center;"<br />
|- style="font-size: .9em;"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3 || 1 || 20<br />
|-<br />
| 5 || 1 || 21 <br />
|-<br />
| 7 || 4 || 24 <br />
|-<br />
| 8 || 4 || 20 <br />
|-<br />
| 10 || 4 || 19 <br />
|-<br />
| 11 || 1 || 22 <br />
|-<br />
| 12 || 3 || 24 <br />
|-<br />
| 13 || 1 || 18 <br />
|-<br />
| 15 || 1 || 1 <br />
|-<br />
| 16 || 1 || 4 <br />
|-<br />
| 18 || 4 || 21 <br />
|-<br />
| 19 || 1 || 8 <br />
|-<br />
| 21 || 1 || 7 <br />
|-<br />
| 22 || 4 || 25 <br />
|-<br />
| 23 || 1 || 9 <br />
|-<br />
| 24 || 1 || 10 <br />
|-<br />
| 26 || 1 || 13 <br />
|-<br />
| 27 || 1 || 11 <br />
|-<br />
| 28 || 1 || 12 <br />
|-<br />
| 29 || 4 || 27 <br />
|-<br />
| 31 || 4 || 28 <br />
|-<br />
| 32 || 3 || 28 <br />
|-<br />
| 33 || 3 || 29 <br />
|-<br />
| 35 || 3 || 26 <br />
|-<br />
| 36 || 3 || 30 <br />
|-<br />
| 37 || 3 || 25 <br />
|-<br />
| 38 || 3 || 27 <br />
|-<br />
| 40 || 3 || 31<br />
|}<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API,<br />
the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>,<br />
and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source.<br />
Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them,<br />
and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on.<br />
Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
The conversion table at right is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
<div style="clear: both;"></div><br />
<br />
== Working Features ==<br />
<div style="overflow: auto"><br />
{| class="wikitable sortable"<br />
! Feature/Option<br />
! Android<br />
! Android Version<br />
! Linux<br />
! Linux Version<br />
! Test/Verify Steps<br />
! Notes<br />
! Product Link<br />
|-<br />
| PINE64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe [https://github.com/avafinger/pine64-touchscreen this] will help get this working?<br />
| [https://pine64.com/?product=7-lcd-touch-screen-panel 7″ LCD Touch Screen Panel]<br />
|-<br />
| Wireless<br />
<small>ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old)<br />
ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new)</small><br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| [https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module]<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| use this script: [https://github.com/ayufan-rock64/linux-package/blob/master/root-rockpro64/usr/local/sbin/rockpro64_enable_otg.sh 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<br />
| [[ROCKPro64_Main_Page#OTG_mode]]<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use [https://github.com/tuxd3v/ats ATS].<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out [https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2 what Frank Mankel has done].<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use [https://github.com/tuxd3v/fanctl fanctl] to control the fan while keeping your CPU cool<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
</div><br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [http://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here].<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [http://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet V2.1]<br />
** [http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf (v. 1.3)] [http://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf (v. 1.7)]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [http://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
* PWM controlled fan, SPDIF, and RTC Battery Backup headers<br />
** [https://www.jst-mfg.com/product/pdf/eng/ePH.pdf JST-PH connector]<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
* [[ROCKPro64 Device Tree Overlays on Mainline]]<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= 3D printable ITX mounting brackets =<br />
[[file:ITX-Bracket-Mounted.jpg|300px|thumb|right|A Quartz64-A mounted in an ITX case using 3D printed brackets]]<br />
<br />
Allows mounting a ROCKPro64-A or Quartz64-A board inside a regular PC case that conforms to the ITX standard, using 3D printed brackets:<br />
<br />
* AMF/STL/STEP files plus the original FreeCAD file used to create the models [[File:RP64-A_Q64-A_to_ITX_mounting_brackets.zip]]<br />
* Make sure to flip the two brackets by 180 degrees on one of the horizontal axes (X/Y) in your slicer of choice before printing to avoid unnecessary supports<br />
* To allow enough clearance between the board and the bracket you either need to print four copies of the washer model or add nut(s) between the board and the bracket<br />
* If using nuts for the clearance between the board and the brackets, make sure it creates at least 3.2mm of spacing in between<br />
* Depending on the accuracy and calibration of a 3D printer, slight deviation can occur and you likely need to manually widen some of the holes to allow screws to fit<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product PINE64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [http://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
= Troubleshooting =<br />
<br />
== No Video or GPU Acceleration on Debian ==<br />
<br />
If you can log in through serial but don't get any video or GPU acceleration on Debian, this is likely due to Debian's decision to compile the devfreq governors as loadable modules but not including them early enough for panfrost to be able to be provided with one of them.<br />
<br />
The usual sign of this being the case is the following line in your log: <code>[drm:panfrost_devfreq_init [panfrost]] *ERROR* Couldn't initialize GPU devfreq</code><br />
<br />
Log in to your ROCKPro64, and run the following:<br />
<br />
sudo -i<br />
echo governor_simpleondemand >> /etc/initramfs-tools/modules && update-initramfs -u -k $(uname -r)<br />
exit<br />
<br />
Then, reboot.<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64_Software_Releases&diff=13382ROCKPro64 Software Releases2022-07-25T23:38:46Z<p>Kreyren0: Update url to include up-to-date images instead of legacy 2020</p>
<hr />
<div><div style=float:right>__TOC__</div><br />
= Linux =<br />
== Debian ==<br />
=== Official Debian Installer ===<br />
----<br />
<div style=float:right>[[File:debian.png|center|100px]]</div><br />
<blockquote>As of April 2020 [https://d-i.debian.org/daily-images/arm64/daily/netboot/SD-card-images/ Debian have a ROCKPro64 images available for sid daily build]. See forum thread [https://forum.pine64.org/showthread.php?tid=9744 here].</blockquote><br />
<br />
Debian 11 Bullseye images are available [https://deb.debian.org/debian/dists/bullseye/main/installer-arm64/current/images/netboot/SD-card-images/ here].<br />
<br />
Instructions for creating a bootable image are in the README file on the Debian website, as at June 2020 these were too short<br />
* Download: <code>firmware.rockpro64-rk3399.img.gz</code><br />
* Download: <code>partition.img.gz</code><br />
* Create the disk image:<br />
:: For Linux: <code>zcat firmware.rockpro64-rk3399.img.gz partition.img.gz<nowiki> > </nowiki>complete_image.img</code><br />
:: For Mac: <code>gzcat firmware.rockpro64-rk3399.img.gz partition.img.gz<nowiki> > </nowiki>complete_image.img</code><br />
* Write the image to your boot device:<br />
:: For Linux: <code>dd if=complete_image.img of=your_chosen_boot_device bs=4M</code><br />
:: For Mac: [https://www.balena.io/etcher/ Etcher]<br />
<br />
What you now have is the official Debian installer that will boot and run on your ROCKPro64. You will need an Ethernet connection and to answer the various installer questions/options.<br />
<br />
{{note|'''Note:''' See the [[ROCKPro64#No_Video_or_GPU_Acceleration_on_Debian|troubleshooting section]] if you encounter issues with GPU acceleration.}}<br />
<br />
=== Armbian===<br />
----<br />
<div style=float:right>[[File:armbian.png|right|100px]]</div><br />
<blockquote>Minimal Debian based Linux with powerful configurator and software installer. To find out more about Armbian and available options please visit their [https://www.armbian.com/rockpro64/ site]</blockquote><br />
If you are booting from a Micro SD card, then both Linux kernel versions will work. If you are trying to boot from an eMMC module then the 4.4.y will work, but the newer 5.10.y will not.<br />
<br />
* Armbian packed as 7zip, please unzip first before dd.<br />
* DD image to microSD card or eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
<br />
''' Armbian Debian Buster XFCE Desktop [microSD / eMMC Boot] '''<br />
Armbian provides a mainline kernel build images for Debian Buster with XFCE Desktop<br />
* DD image (for 8GB microSD card or eMMC Module and above)<br />
** [https://dl.armbian.com/rockpro64/Buster_current_desktop Armbian's ROCKPro64 Debian Buster XFCE Desktop download site]<br />
<br />
''' Armbian Ubuntu Focal XFCE Desktop [microSD / eMMC Boot] '''<br />
Armbian provides a mainline kernel build images for Ubuntu Focal with XFCE Desktop<br />
* DD image (for 8GB microSD card or eMMC Module and above)<br />
** [https://dl.armbian.com/rockpro64/Focal_current_desktop Armbian's ROCKPro64 Ubuntu Focal XFCE Desktop download site]<br />
<br />
''' Armbian Ubuntu Bionic for Server and Light Desktop [microSD / eMMC Boot] '''<br />
Armbian provides a mainline kernel build images for Ubuntu Bionic<br />
* DD image (for 8GB microSD card or eMMC Module and above)<br />
** [https://dl.armbian.com/rockpro64/Bionic_current Armbian's ROCKPro64 Ubuntu Bionic download site]<br />
<br />
''' Armbian Ubuntu Focal for Server and Light Desktop [microSD / eMMC Boot] '''<br />
Armbian provides a mainline kernel build images for Ubuntu Focal<br />
* DD image (for 8GB microSD card or eMMC Module and above)<br />
** [https://dl.armbian.com/rockpro64/Focal_current Armbian's ROCKPro64 Ubuntu Focal download site]<br />
<br />
=== DietPi ===<br />
<div style=float:right>[[File:dietpi.png|center|100px]]</div><br />
<br />
* DietPi is a '''lightweight''', yet '''easy to setup''' and '''feature-rich''' Linux distribution, based on '''Debian'''.<br />
* To find out more about DietPi, please visit the [https://dietpi.com/docs/ official documentation].<br />
* Discuss the ROCKPro64 build on the [https://forum.pine64.org/showthread.php?tid=12532 PINE64 forum thread].<br />
* DD image (for 4 GiB or above micro SD card or eMMC)<br />
** [https://dietpi.com/downloads/images/DietPi_ROCKPro64-ARMv8-Bullseye.7z Direct download from dietpi.com]<br />
* Login with<br />
** Username: '''root'''<br />
** Password: '''dietpi'''<br />
<br />
=== Community Debian builds ===<br />
----<br />
''' ayufan Debian and Ubuntu Release '''<br />
<div style=float:right>[[File:penguin.png|right|100px]]</div><br />
Forum thread concerning these releases can be found [https://forum.pine64.org/showthread.php?tid=6308 here]<br />
<br />
A number of release versions are available based on either Ubuntu or Debian. In addition releases are available that are [https://github.com/ayufan-rock64/linux-build/releases/tag/0.9.14 stable] (based on a 4.4 kernel which has all the RockChip patches in it) or [https://github.com/ayufan-rock64/linux-build/releases pre-releases] (based on the latest linux kernel). An overview of the philosophy is [https://github.com/ayufan-rock64/linux-build on this GitHub page.]<br />
<br />
Clicking through on any chosen release header (or expanding the "assets" section under the Changelog) will provide options to download many images suitable for the ROCKPro64 as well as others suitable for other devices such as the Rock64 and PinebookPro - please read the download filenames carefully to choose precisely the image you desire.<br />
<br />
''' Mrfixit2001 Debian Release '''<br />
<div style=float:right>[[File:debian.png|right|100px]]</div><br />
Mrfixit has engineered 2 releases based on Debian.<br />
<br />
''' Feature complete desktop release '''<br />
See forum thread [https://forum.pine64.org/showthread.php?tid=7269 here.]<br />
<br />
* DD image to microSD card or eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [https://github.com/mrfixit2001/debian_desktop/releases GitHub Release page]<br />
* Login with<br />
:: username: rock<br />
:: password: rock<br />
<br />
''' Minimal Debian '''<br />
Forum thread concerning this release can be found [https://forum.pine64.org/showthread.php?tid=7055 here]<br />
<br />
* DD image to microSD card or eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [https://github.com/mrfixit2001/debian_builds/releases GitHub Releases page]<br />
* Login with<br />
:: username: rock<br />
:: password: rock<br />
<br />
== Manjaro ARM ==<br />
<div style=float:right>[[File:Manjaro.png|right|100px]]</div><br />
To learn more about Manjaro please visit [https://forum.manjaro.org/c/arm/100 Manjaro Forum] <br />
* DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]<br />
* Console and SSH default login:<br />
:: username: manjaro<br />
:: password: manjaro<br />
<br />
* Community Build Images (for microSD / eMMC Boot)<br />
:: [https://osdn.net/projects/manjaro-arm/storage/rockpro64/kde-plasma/ Manjaro KDE ARM]<br />
:: [https://osdn.net/projects/manjaro-arm/storage/rockpro64/mate/ Manjaro MATE ARM]<br />
:: [https://osdn.net/projects/manjaro-arm/storage/rockpro64/xfce/ Manjaro XFCE ARM]<br />
:: [https://osdn.net/projects/manjaro-arm/storage/rockpro64/i3/ Manjaro I3 ARM]<br />
:: [https://osdn.net/projects/manjaro-arm/storage/rockpro64/sway/ Manjaro SWAY ARM]<br />
:: [https://github.com/manjaro-arm/rockpro64-images/releases/download/22.06/Manjaro-ARM-minimal-rockpro64-22.06.img.xz Manjaro Minimal (No DE) ARM] [https://github.com/manjaro-arm/rockpro64-images/releases/download/22.06/Manjaro-ARM-minimal-rockpro64-22.06.img.xz.sha1 (sig)]<br />
<br />
== AOSC ==<br />
<div style=float:right>[[File:aosc.png|right|100px]]</div><br />
<blockquote>Originally AnthonOS (an OpenSUSE derivative built with SUSE Studio), then remade as a Debian derivative with customised KDE 4 UI and CJK support.</blockquote><br />
To learn more about AOSC, please visit the official [https://aosc.io/ AOSC website]<br />
* AOSC using LZ4 compression algorithm, please visit the [https://github.com/lz4/lz4 LZ4 github site] for utility<br />
* 8GB microSD card or eMMC module and above<br />
* Login with<br />
:: username: aosc<br />
:: password: anthon<br />
<br />
* Community Build Images (microSD / eMMC Boot)<br />
::[https://releases.aosc.io/os-arm64/rockchip64/kde/rockpro64/ AOSC KDE]<br />
::[https://releases.aosc.io/os-arm64/rockchip64/gnome/rockpro64/ AOSC GNOME]<br />
::[https://releases.aosc.io/os-arm64/rockchip64/mate/rockpro64/ AOSC MATE]<br />
::[https://releases.aosc.io/os-arm64/rockchip64/cinnamon/rockpro64/ AOSC Cinnamon]<br />
::[https://releases.aosc.io/os-arm64/rockchip64/xfce/rockpro64/ AOSC XFCE]<br />
::[https://releases.aosc.io/os-arm64/rockchip64/lxde/rockpro64/ AOSC LXDE]<br />
<br />
== Twister OS ==<br />
<div style=float:right>[[File:Twister_OS.png|right|100px]]</div><br />
<blockquote>Desktop computing experience for SBCs, right out-of-the-box. Including themes, applications, tools, and optimizations to get the most out of your SBC.</blockquote><br />
For more information on Twister OS, please visit the {https://twisteros.com/ official site]<br />
* You can follow the ongoing discussion about Twister OS on the PINE64 forum (https://forum.pine64.org/showthread.php?tid=12192)<br />
=== Twister OS Armbian-Reforged XFCE Desktop beta images [SD boot]===<br />
After flashing image with Etcher, edit /boot/armbianEnv.txt, replace the dtb name with rk3399-rockpro64.dtb.<br />
* DD image (for 16GB microSD card / 16GB eMMC module and above):<br />
** [https://twisteros.com/twisterarmbian.html latest images from Twister OS's website]<br />
:: size: 2.8GB<br />
* Login with<br />
:: username: pi<br />
:: password: raspberry<br />
<br />
=== Twister OS Monka-Manjaro XFCE Desktop beta images [SD boot]===<br />
After flashing image with Etcher, edit /boot/armbianEnv.txt, replace the dtb name with rk3399-rockpro64.dtb.<br />
* DD image (for 16GB microSD card / 16GB eMMC module and above):<br />
** [https://drive.google.com/file/d/1I0yHIDfezqnz1jdphJ4gooWbGtNw0ArW/view?usp=sharing latest images from Google Drive]<br />
:: size: 8.9GB<br />
* Login with<br />
:: username: pi<br />
:: password: root<br />
<br />
== SkiffOS ==<br />
<div style=float:right>[[File:SkiffOS-Icon-1.png|right|100px]]</div><br />
<blockquote>Minimal cross-compiled OS optimized for hosting distributions in Docker containers. Provides the reliability of firmware with the ease-of-use of package managers.</blockquote><br />
Uses the [http://buildroot.org Buildroot] cross-compilation tool for support for all Pine64 boards.<br />
<br />
Use configuration packages to configure distro:<br />
* core/gentoo: Gentoo optimized for Rockpro64<br />
* core/nixos: NixOS arm64<br />
<br />
You can also configure the skiff core yaml file to configure multiple distros to run in parallel.<br />
<br />
The boot-up OS can be upgraded independently from the containers.<br />
<br />
'''Download location'''<br />
:The repository and instructions can be found [https://github.com/skiffos/SkiffOS/tree/master/configs/pine64 here].<br />
<br />
== Slackware ==<br />
<br />
<div style=float:right>[[File:slackware.jpg|right|100px]]</div><br />
<br />
[https://arm.slackware.com/ Slackware] is the world's oldest actively developed Linux distribution, providing a modern user land (applications) and Linux Kernel, within a more classic Unix Operating System environment.<br />
<br />
More information can be found about Slackware in this [https://www.youtube.com/watch?v=A5PFYUttsWA&list=PL1XOSJnvang3IbwySOf6m3PK1gm13hS5s 20 minute video].<br />
<br />
[https://docs.slackware.com/slackwarearm:inst Installation instructions].<br />
<br />
[https://www.youtube.com/watch?v=uXAL9jz-yaA&list=PL1XOSJnvang3VLmqke2QbRitKtOD6Rm3t Installation video guide]<br />
<br />
<br />
== slarm64 ==<br />
<br />
[https://bitbucket.org/sndwvs/slarm64-current/src/master/ slarm64] is an unofficial aarch64 / riscv64 Slackware Linux port<br />
<br />
You can follow the ongoing discussion about slarm64 on the RockPro64 on the PINE64 forum (https://forum.pine64.org/showthread.php?tid=6823)<br />
Or this forum thread for more general slarm64 information: https://www.linuxquestions.org/questions/slackware-arm-108/slarm64-aarch64-unofficial-slackware-4175613287/<br />
<br />
rsync: rsync://dl.fail.pp.ua<br />
<br />
mirror: http://mirrors.slackware.bg/<br />
<br />
<br />
* This build uses ZST compression algorithm, please visit the [https://github.com/facebook/zstd ZST github site] for utility<br />
<br />
=== slarm64 XFCE ===<br />
Community Build Image [microSD Boot] with a graphical shell<br />
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
::[http://dl.fail.pp.ua/slackware/images/rockpro64/ download] (look for slarm64-current-aarch64-xfce-rockpro64-x.xx.x-build-xxxxxxxx.img.zst)<br />
* Login with<br />
::Username: root<br />
::Password: password<br />
<br />
=== slarm64 Miniroot ===<br />
Community Build Image [microSD Boot] without a graphical shell<br />
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [http://dl.fail.pp.ua/slackware/images/rockpro64/ download] (look for slarm64-current-aarch64-base-rockpro64-x.xx.x-build-xxxxxxxx.img.zst)<br />
* Login with<br />
::Username: root<br />
::Password: password<br />
<br />
'''To run the OS on eMMC'''<br />
:Flash the image to micro SD, power up the board with micro SD and login<br />
:Copy the image file to micro SD by using SFTP. The image file must be in .img. ''note : root user are not allow transfer file to micro SD.''<br />
:After finish copy the file, power off the board and add eMMC module to the board<br />
*Bootup the board, run below command for flashing to eMMC module<br />
:<code>dd if=[image file] of=/dev/mmcblkX bs=10M</code><br />
:example: <code>dd if=slack-current-aarch64-xfce_29Sep18-4.4.162-rockpro64-build-20181126.img of=/dev/mmcblkX bs=10M</code><br />
*then edit 2 files in eMMC module:<br />
:<code>mount /dev/mmcblk1p1 /media</code><br />
:<code>echo "rootdev=/dev/mmcblk1p1"<nowiki> >> </nowiki>/media/boot/uEnv.txt</code><br />
:<code>sed -i 's:mmcblk0p1:mmcblk1p1:' /media/etc/fstab</code><br />
*After done, power off board and remove microSD. Then bootup with only eMMC module.<br />
<br />
<br />
== OpenWrt ==<br />
<div style=float:right>[[File:OpenWrt.png|right|100px]]</div><br />
<blockquote>OpenWrt is a highly extensible GNU/Linux distribution for embedded devices (typically wireless routers). Unlike many other distributions for these routers, OpenWrt is built from the ground up to be a full-featured, easily modifiable operating system for your router. In practice, this means that you can have all the features you need with none of the bloat, powered by a Linux kernel that's more recent than most other distributions.</blockquote><br />
<br />
Choose a version and DD image to SD card (for 512MB microSD card and above)<br />
* To find out more on installation process, visit OpenWrt's [https://openwrt.org/toh/pine64/rockpro64_v2.1 ROCKPro64 wiki page]<br />
* Login with SSH:<br />
:: default IP: 192.168.1.1<br />
:: username: root<br />
* Install a WebGUI: [https://openwrt.org/docs/guide-quick-start/ssh_connect_to_the_internet_and_install_luci Use SSH to connect to the internet and install Luci Web interface]<br />
<br />
<blockquote><br />
-----<br />
[https://openwrt.org/releases/snapshot OpenWrt wiki] notes: '''Main differences of buildbot snapshots vs. official stable releases'''<br />
*snapshots do not contain LuCI GUI by default. It needs to be installed by the user.<br />
*snapshots are completely untested. Just automatic builds of the most recent source code and packages. Although snapshots are usually ok, they may sometimes contain serious bugs that prevent booting the device correctly or even prevent easy sysupgrading to new versions.<br />
*snapshots are '''built daily, and that sets time limits to installing new packages''' with opkg. Due to kernel version checksums, you can only install “kmod” kernel modules and other kernel version dependent modules from the exactly same snapshot build. So, a few hours after flashing the firmware you may not be able to install new modules with opkg any more (as the next snapshot has been built into the download repo and has different checksums). See [https://openwrt.org/releases/snapshot OpenWrt wiki] for package availability time limits.<br />
-----<br />
</blockquote><br />
<br />
=== OpenWrt 21.02 ===<br />
<br />
Release Candidates:<br />
<br />
*[https://firmware-selector.openwrt.org/?version=21.02.0-rc2&target=rockchip%2Farmv8&id=pine64_rockpro64 21.02.0-rc2]<br />
*:<br />
*:Version: 21.02.0-rc2 (r16122-c2139eef27)<br />
*:Date: 2021-05-29 21:10:28<br />
<br />
*[https://firmware-selector.openwrt.org/?version=21.02.0-rc1&target=rockchip%2Farmv8&id=pine64_rockpro64 21.02.0-rc1]<br />
*:<br />
*:Version: 21.02.0-rc1 (r16046-59980f7aaf)<br />
*:Date: 2021-04-21 01:29:32<br />
<br />
*[https://firmware-selector.openwrt.org/?version=21.02-SNAPSHOT&target=rockchip%2Farmv8&id=pine64_rockpro64 21.02-SNAPSHOT]<br />
*:<br />
<br />
=== OpenWrt Snapshot Build [microSD Boot] ===<br />
* OpenWrt with 5.4 mainline linux kernel<br />
*: [https://downloads.openwrt.org/snapshots/targets/rockchip/armv8/ OpenWrt snapshot page]<br />
<br />
*[https://firmware-selector.openwrt.org/?version=SNAPSHOT&target=rockchip%2Farmv8&id=pine64_rockpro64 SNAPSHOT]<br />
*:<br />
<br />
== LibreELEC (KODI) ==<br />
<div style=float:right>[[File:libreelec.jpg|right|100px]]</div><br />
<blockquote>LibreELEC is a lightweight ‘Just enough OS’ Linux distribution purpose-built for Kodi on current and popular mediacentre hardware.</blockquote><br />
''' Official LibreElec KODI Build Image [microSD / eMMC boot] '''<br />
: Unzip and DD image to microSD card or eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
: 8GB microSD card or eMMC module and above<br />
* [https://libreelec.tv/downloads_new/rockchip/ download] (look for PINE64 RockPro64-LibreELEC-RK3399.arm-x.x.x-rockpro64.img.gz)<br />
<br />
== OpenMediaVault ==<br />
<div style=float:right>[[File:omv.png|right|100px]]</div><br />
<blockquote>OpenMediaVault is the next generation network attached storage (NAS) solution, [https://www.openmediavault.org/ click this link to OMV main page to learn more.]</blockquote><br />
Forum thread concerning this release can be found [https://forum.pine64.org/showthread.php?tid=6308 here]<br />
<br />
''' Stretch 32bit (armhf) [microSD / eMMC Boot] [0.8.3] '''<br />
: DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]<br />
: [https://github.com/ayufan-rock64/linux-build/releases/ Release notes on ayufan Linux github]<br />
:: [https://github.com/ayufan-rock64/linux-build/releases/download/0.8.3/stretch-openmediavault-rockpro64-0.8.3-1141-armhf.img.xz Direct download from ayufan's github]<br />
:: size: 392MB<br />
* WebGUI Login:<br />
:: username: admin<br />
:: password: openmediavault<br />
* SSH/Console Login:<br />
:: username: root<br />
:: password: openmediavault <br />
* '''NB! You need to enable root login in OMV WebGUI'''<br />
: [[OpenMediaVault|OpenMediaVault Basic Setup]]<br />
: [http://omv-extras.org/joomla/index.php/omv-plugins-3/3-stable OpenMediaVault Plugins]<br />
<br />
''' Stretch 64bit (aarch64) [microSD / eMMC Boot] [0.8.3] '''<br />
: DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]<br />
: [https://github.com/ayufan-rock64/linux-build/releases/ Release notes on ayufan Linux github]<br />
:: [https://github.com/ayufan-rock64/linux-build/releases/download/0.8.3/stretch-openmediavault-rockpro64-0.8.3-1141-arm64.img.xz Direct download from ayufan's github]<br />
:: size: 340MB<br />
* WebGUI Login:<br />
:: username: admin<br />
:: password: openmediavault<br />
* SSH/Console Login:<br />
:: username: root<br />
:: password: openmediavault <br />
* '''NB! You need to enable root login in OMV WebGUI'''<br />
: [[OpenMediaVault|OpenMediaVault Basic Setup]]<br />
: [http://omv-extras.org/joomla/index.php/omv-plugins-3/3-stable OpenMediaVault Plugins]<br />
<br />
== NextCloudPi==<br />
<div style=float:right>[[File:nextcloudpi.png|right|100px]]</div><br />
<blockquote>NextCloudPi includes not only NextCloud, but also management tools for backup, SSL certificates, SAMBA, enhanced security and more. Visit the project's [http://nextcloudpi.com website].</blockquote><br />
You can follow the ongoing discussion about NextCloudPi on the [https://forum.pine64.org/showthread.php?tid=7265 forum]<br />
<br />
''' NextCloudPi Community Build Image [microSD / eMMC Boot] [03-10-19] '''<br />
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [http://files.pine64.org/os/ROCKPro64/nextcloudpi/NextCloudPi_RockPro64_03-09-19.img.xz Direct download from pine64.org]<br />
::: MD5 (XZ file): 6ab1b08a8e4c2ed3abe40511749971a7<br />
::: File Size: 312MB<br />
* Login with<br />
:: username: root<br />
:: password: 1234<br />
<br />
== Batocera Linux ==<br />
<div style=float:right>[[File:batocera.png|right|100px]]</div><br />
<blockquote>It is an operating system in retrogaming. Visit the project's website here (https://batocera.org/)</blockquote><br />
You can follow the ongoing discussion about batocera.linux on the PINE64 forum (https://forum.pine64.org/showthread.php?tid=7084)<br />
<br />
'''Batocera Linux Community Build Image [microSD / eMMC Boot] [5.25-20200310] '''<br />
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [https://batocera.org/upgrades/rockpro64/stable/last/batocera-5.25-rockpro64-20200310.img.gz Direct download from batocera.org website]<br />
::: File Size: 834MB<br />
::: MD5 (gzip file): 9559c7570e48ca0a51bd9fc639b8a3c0<br />
<br />
''' Batocera Linux Community Build Image [microSD / eMMC Boot] [5.24-20191108] '''<br />
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [https://batocera.org/upgrades/rockpro64/stable/last/archives/20191108/batocera-5.24-rockpro64-20191108.img.gz Direct download from batocera.org website]<br />
::: File Size: 857MB<br />
::: MD5 (gzip file): 3228bf24e555ef75bba562dfe09f30a4<br />
<br />
== Recalbox ==<br />
<div style=float:right>[[File:RB.png|right|100px]]</div><br />
<blockquote>Recalbox allows you to re-play a variety of videogame consoles and platforms in your living room, with ease! Visit the project's website here (https://www.recalbox.com/)</blockquote><br />
You can follow the ongoing discussion about Recalbox on the PINE64 forum (https://forum.pine64.org/showthread.php?tid=7194)<br />
<br />
''' Recalbox Community Build Image [microSD / eMMC Boot] '''<br />
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [https://github.com/mrfixit2001/recalbox_rockpro64/releases download] latest release build from mrfixit2001 github.<br />
<br />
== Retro Arena==<br />
<div style=float:right>[[File:retroarena.png|right|100px]]</div><br />
''' Retro Arena Community Build Image [microSD / eMMC Boot] [Beta 0.0.8] '''<br />
<blockquote>This is a BETA and therefore is not update-able nor supported, however bugs or issues are appreciated to be identified and shared via the issues tab on our GitHub so that we can address them in the future. The Roshambo Case support is baked in with one major caveat due to kernel limitation: You can power the unit off by the POWER switch and the RESET button works 100% however to power the unit on you will need to manually plug/unplug the power cord. This limitation will not be present in future releases. Visit the project's [http://odroidarena.com/downloads/]</blockquote><br />
You can follow the ongoing discussion about Retro Arena on the [https://forum.pine64.org/showthread.php?tid=7555 forum]<br />
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [http://files.pine64.org/os/ROCKPro64/odroidretroarena/TheRA-RP64-BETA-0.8-FINAL.img.gz Direct download from pine64.org]<br />
::: MD5 (XZ file): fdfacfa8560356ba8d3aff0762c3e7cc<br />
::: File Size: 4.06GB<br />
<br />
== Nems Linux ==<br />
<div style=float:right>[[File:nems.jpg|right|100px]]</div><br />
<blockquote>NEMS stands for "Nagios Enterprise Monitoring Server" and it is a modern pre-configured, customized and ready-to-deploy Nagios Core image designed to run on low-cost micro computers.</blockquote><br />
To find out more about NEMS on the PINE64 and available tweaks to the installation please visit the [https://forum.pine64.org/showthread.php?tid=7306 PINE64 forum thread]<br />
* Login with<br />
:: Username: nemsadmin<br />
:: Password: nemsadmin<br />
<br />
''' NEMS Linux [microSD / eMMC Boot] [v1.5 - build 1] '''<br />
: DD image (for 16GB microSD card and above)<br />
:: [https://nemslinux.com/download/nagios-for-pine64.php Download page] with torrent seed or direct download.<br />
:: [http://files.pine64.org/os/ROCKPro64/nems/NEMS_v1.5-RockPro64-Build1.zip Direct download from pine64.org]<br />
::: MD5 (XZ file): 2627bc0aa81e1c55de69a621d80987a5<br />
::: File Size: 1.32GB<br />
<br />
== NixOS ==<br />
<div style=float:right>[[File:NixOS.webp|right|100px]]</div><br />
*Needs development<br />
More information can be found on the [https://nixos.wiki/wiki/NixOS_on_ARM/PINE64_ROCKPro64 NixOS wiki] and [https://github.com/AshyIsMe/nixos-installer-rockpro64 this GitHub]<br />
<br />
== CentOS [No Longer Maintained] ==<br />
<div style=float:right>[[File:Centos.png|right|100px]]</div><br />
''' CentOS-7 Community Build Image [microSD Boot] '''<br />
: Centos-7.4.1708 with kernel from Armbian-5.67 (minimum build)<br />
:: DD image (for 8GB microSD card and above)<br />
:: [https://github.com/Project31/centos-pine64/releases/download/v7.4.1708-v5.56/centos7-rock64pro.img.xz Project31 download mirrors]<br />
* To find out more on installation process, please visit their [https://project31.github.io/pine64/ Project31 site]<br />
: Login with<br />
:: username: root<br />
:: password: centos<br />
<br />
= BSD Images =<br />
==NetBSD==<br />
<div style=float:right>[[File:netbsd.png|right|100px]]</div><br />
To learn more about NetBSD please visit [https://www.netbsd.org/ NetBSD main page] <br />
<br />
* DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]<br />
:: [http://www.invisible.ca/arm/ download] latest release build from NetBSD by select 64bit - RockPro64<br />
:: size: 339 MB<br />
* Console and SSH default login:<br />
:: username: root<br />
:: password: [none]<br />
* Instructions concerning enabling SSH can be found [https://www.netbsd.org/docs/guide/en/chap-boot.html#chap-boot-ssh here]<br />
<br />
==OpenBSD==<br />
<div style=float:right>[[File:Puffy_mascot_openbsd.png|right|100px]]</div><br />
Instructions to get OpenBSD on your ROCKPro64 [https://github.com/jasperla/openbsd-rockpro64 are here] or [https://bsandro.tech/posts/openbsd-7.1-on-pine64-rockpro64/ here]<br />
<br />
Forum discussions [https://forum.pine64.org/forumdisplay.php?fid=109 are there.]<br />
<br />
==FreeBSD==<br />
<div style=float:right>[[File:Freebsd_Logo.png|right|100px]]</div><br />
The [https://wiki.freebsd.org/arm/RockChip#RockPro64 RockChip FreeBSD page] has instructions for installing FreeBSD.<br />
<br />
* Images for various FreeBSD releases can be found [https://www.freebsd.org/where/ here]<br />
* Version 13.0 and greater include prebuilt images. Find the link in the SD Card Images section and download the ROCKPRO64 image.<br />
* SSH is enable by default and can be accessed with the following account:<br />
:: username: freebsd<br />
:: password: freebsd<br />
* The root account credentials are:<br />
:: username: root<br />
:: password: root<br />
<br />
The wiki also has instructions on [https://wiki.freebsd.org/arm/RockChip#Fan_Control_on_RockPro64 enabling the PWM cooling fan].<br />
<br />
= Chromium OS =<br />
=== Chromium Community Build Image [microSD / eMMC Boot] [Beta (R76)] ===<br />
<div style=float:right>[[File:chromium.jpg|right|100px]]</div><br />
<br />
* To learn more please visit [https://forum.pine64.org/showthread.php?tid=7659 Forum] <br />
* DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]<br />
<br />
* [https://github.com/ayufan-rock64/chromiumos-build/releases/download/R76-12239.4.100.gf2199d0/chromiumos-rockpro64-R76-12239.4.100.gf2199d0.img.xz Direct download from ayufan's github]<br />
*** size: 357MB<br />
*** MD5 (Zip file): 9ead15fd85e039de3445abdfd3c5013e<br />
<br />
= Android Images =<br />
== Android 9.0.0 ==<br />
<div style=float:right>[[File:android_9.png|right|100px]]</div><br />
<br />
=== Stock for DD method [eMMC Boot] [20200804] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* Supports new RockPro64 AP6256 Wifi/BT module<br />
* Support Sony IMX214 camera module and works on both MiPi-CSI ports <br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* DD image for 8GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20200804_stock_android_9.0_emmcboot-8GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 7287fd0846616354615c8d3eff6a2a92<br />
*** File Size: 602MB<br />
* DD image for 16GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20200804_stock_android_9.0_emmcboot-16GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 78352bbf21198d062af8bab2217ee691<br />
*** File Size: 611MB<br />
* DD image for 32GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20200804_stock_android_9.0_emmcboot-32GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): c5c8dce419478f75f85f893ee4808dbd<br />
*** File Size: 624MB<br />
* DD image for 64GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20200804_stock_android_9.0_emmcboot-64GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): aab1cf4d30c4d16e6ce2672f3ecae935<br />
*** File Size: 666MB<br />
<br />
=== Stock for RK Flash tool [eMMC Boot] [20200804] ===<br />
* Please unzip first and then using Android tool to flash in<br />
* The OTG port located at USB type-C connector, needs USB type A to type C cable.<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_20200708_stock_android_9.0_emmcboot.img.gz Direct download from pine64.org]<br />
** MD5 (GZip file): 9ac830527814521e15b009fa2503c9e3<br />
** File Size: 589MB<br />
<br />
<br />
=== Stock for DD method [eMMC Boot] [20200708] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* Supports new RockPro64 AP6256 Wifi/BT module<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* DD image for 8GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20200708_stock_android_9.0_emmcboot-8GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): ef5f5a890a9270734e0adee21f006837<br />
*** File Size: 597MB<br />
* DD image for 16GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20200708_stock_android_9.0_emmcboot-16GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 179bd684a468f800a86f7c658a543bef<br />
*** File Size: 606MB<br />
* DD image for 32GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20200708_stock_android_9.0_emmcboot-32GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): d930b757c4427be07b83c37a9c8494a1<br />
*** File Size: 630MB<br />
* DD image for 64GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20200708_stock_android_9.0_emmcboot-64GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 09a970d68a10bdb3d6495d55860940e6<br />
*** File Size: 660MB<br />
<br />
=== Stock for RK Flash tool [eMMC Boot] [20200708] ===<br />
* Please unzip first and then using Android tool to flash in<br />
* The OTG port located at USB type-C connector, needs USB type A to type C cable.<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_20200708_stock_android_9.0_emmcboot.img.gz Direct download from pine64.org]<br />
** MD5 (GZip file): 6d060ddd47ebcfd5cfcdbf90ec042c97<br />
** File Size: 589MB<br />
<br />
<br />
=== Stock for DD method [eMMC Boot] [20190427] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* Please ignore "internal problem with your device" popup message if appear on Android boot-up page.<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* DD image for 16GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20190417_stock_android_9.0_emmcboot-16GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 3BA4C72D81BCFC4C21B3B5D2BCB4F9F7<br />
*** File Size: 609MB<br />
* DD image for 32GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20190417_stock_android_9.0_emmcboot-32GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 4965CCF50A8F06CEB2E4A6828A21F31C<br />
*** File Size: 627MB<br />
* DD image for 64GB eMMC module<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20190417_stock_android_9.0_emmcboot-64GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 748EC28FE5D5395D33E858C913D744BF<br />
*** File Size: 663MB<br />
<br />
=== Stock for DD method [microSD Boot] [20190506] ===<br />
* DD image to microSD card and boot. <br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* Please ignore "internal problem with your device" popup message if appear on Android boot-up page.<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* DD image for 8GB microSD card<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20190506_stock_android_9.0_sdboot-8GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): E1C551E8106E178841E1C3F71432194A<br />
*** File Size: 599MB<br />
* DD image for 16GB microSD card<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20190506_stock_android_9.0_sdboot-16GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 73592FDD5A2F52F08020F16AD99E8C8C<br />
*** File Size: 609MB<br />
* DD image for 32GB microSD card<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20190506_stock_android_9.0_sdboot-32GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): 74DE0FE528F210E4DD483B411A71904B<br />
*** File Size: 627MB<br />
* DD image for 64GB microSD card<br />
** [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20190506_stock_android_9.0_sdboot-64GB.img.gz Direct download from pine64.org]<br />
*** MD5 (GZip file): D7626BD50443A88AEB9254C88C575284<br />
*** File Size: 663MB<br />
<br />
=== Stock for RK Flash tool [eMMC Boot] [20190427] ===<br />
* Please unzip first and then using Android tool to flash in<br />
* The OTG port located at USB type-C connector, needs USB type A to type C cable.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_20190417_stock_android_9.0_emmcboot.img.gz Direct download from pine64.org]<br />
** MD5 (GZip file): 046BA4A07933120809FBE1B9577B7341<br />
** File Size: 592MB<br />
<br />
== Android 8.1.0 ==<br />
<div style=float:right>[[File:android_8.png|right|100px]]</div><br />
=== Stock for DD method [eMMC Boot] [20180828] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20180828_stock_android_8.1_emmcboot.img.xz Direct download from pine64.org]<br />
** MD5 (XZ file): 9AEE21BC1B9DE886DCB0E64FA123988A<br />
** File Size: 414MB<br />
<br />
=== Stock for DD method [microSD Boot] [20181212] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* DD image (for 8GB microSD card and above)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20181212_stock_android_8.1_sdboot.img.xz Direct download from pine64.org]<br />
** MD5 (XZ file): 5A6BB7FCD7B3F77FCEE99CE462AE7405<br />
** File Size: 616MB<br />
<br />
=== Stock for RK Flash tool [eMMC Boot] [20180828] ===<br />
* Please unzip first and then using Android tool to flash in<br />
* The OTG port located at USB type-C connector, needs USB type A to type C cable.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_20180828_stock_android_8.1_emmcboot.img.xz Direct download from pine64.org]<br />
** MD5 (XZ file): 4DACFE927BB09EE9C56B5232A7F624EE<br />
** File Size: 415MB<br />
<br />
== Android 7.1.2 ==<br />
<div style=float:right>[[File:android_7.png|right|100px]]</div><br />
=== Stock for DD method [eMMC Boot] [20180809] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20180809_stock_android_7.1_emmcboot.img.gz Direct download from pine64.org]<br />
** MD5 (XZ file): 00F194017557017C2588724686E90CEA<br />
** File Size: 498MB<br />
<br />
=== Stock for RK Flash tool [eMMC Boot] [20180809] ===<br />
* Please unzip first and then using Android tool to flash in<br />
* The OTG port located at USB type-C connector, needs USB type A to type C cable.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_20180809_stock_android_7.1_emmcboot.img.gz Direct download from pine64.org]<br />
** MD5 (XZ file): 197A9905B48441D8655E7542F4643FE9<br />
** File Size: 483MB<br />
<br />
=== Stock for DD method [microSD Boot] [20180920] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_20180920_stock_android_7.1_sdboot.img.gz Direct download from pine64.org]<br />
** MD5 (XZ file): CE39642A379B357BB3E4BC80ACA2E0CE<br />
** File Size: 765MB<br />
<br />
=== Stock for DD method [eMMC Boot] [20180518] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_dd_20180518_stock_android_7.1_emmcboot.img.xz Direct download from pine64.org]<br />
** MD5 (XZ file): 33622034ACDBC31A7D7BB01ED634E29B<br />
** File Size: 345MB<br />
<br />
=== Stock for RK Flash tool [eMMC Boot] [20180518] ===<br />
* Please unzip first and then using Android tool to flash in<br />
* The OTG port located at USB type-C connector, needs USB type A to type C cable.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_20180518_stock_android_7.1_emmcboot.img.xz Direct download from pine64.org]<br />
** MD5 (XZ file): 90C1991DADAE13ADC94E927F171F8920<br />
** File Size: 342MB<br />
<br />
=== Stock for install from SDcard to eMMC [microSD Boot] [20180921] ===<br />
* Use 'dd' to write the image to the eMMC module using the USB-to-eMMC adapter module and boot. Using [https://www.balena.io/etcher/ Etcher] or another specialized SD writing tool is preferred.<br />
* Please allow 3-5 minutes boot up time on first time for initialization<br />
* This build supports PINE64 7" LCD panel with tablet UI (not Android TV)<br />
* [http://files.pine64.org/os/ROCKPro64/android/ROCKPro64_20180921_stock_android_7.1_sdboot.img.xz Direct download from pine64.org]<br />
** MD5 (XZ file): c6900e82a1d6ef397dcac241f76f43c9<br />
** File Size: 350MB<br />
<br />
== Android SDK ==<br />
=== Android P SDK [v9.0] ===<br />
* [http://files.pine64.org/SDK/ROCKPro64/ROCKPro64_SDK_android9.0.tar.gz Direct Download from pine64.org]<br />
** MD5 (TAR-GZip file): 3CEBEEFD1A873BEEEC149148A785D92E<br />
** File Size: 125.16GB<br />
<br />
== Slash TV OS ==<br />
Android 7 based system including Play Store, working only from SD card (does not boot when installed on eMMC)<br />
* https://drive.google.com/drive/folders/1K5YhWaB7Xstuv2HCo1HkpglCEm9x-RIM<br />
<br />
= For Linux Developer =<br />
<br />
The Ayufan github page<br />
* [https://github.com/ayufan-rock64/linux-build/releases github.com/ayufan-rock64/linux-build/]<br />
<br />
Below are the LPDDR4 driver for RK3399<br />
<br />
* [http://files.pine64.org/os/ROCKPro64/driver/rk3399_loader_v1.10.112_support_1CS.bin rk3399_loader_v1.10.112_support_1CS.bin, this is 800Mhz version used in Android Build]<br />
* [http://files.pine64.org/os/ROCKPro64/driver/rk3399_ddr_666MHz_v1.11.bin rk3399_ddr_666MHz_v1.11.bin, this is alpha version]<br />
* [http://files.pine64.org/os/ROCKPro64/driver/rk3399_ddr_933MHz_v1.11.bin rk3399_ddr_933MHz_v1.11.bin, this is alpha version]<br />
<br />
ROCKPro64 related files<br />
<br />
* [http://files.pine64.org/os/ROCKPro64/driver/kernel_rockpro64.tar.gz ROCKPro64 Kernel file]<br />
* [http://files.pine64.org/os/ROCKPro64/driver/trust.img trust.img]<br />
<br />
= Miscellaneous tools =<br />
<br />
* [http://files.pine64.org/doc/rock64/tools/DriverAssitant_v4.5.zip Windows ADB driver package]<br />
* [[ROCK64 MAC Address]]<br />
* [http://files.pine64.org/doc/rock64/guide/ROCK64_Installing_Android_To_eMMC.pdf Guide to install stock Android build to eMMC module]<br />
* [http://files.pine64.org/doc/rock64/tools/SD_Firmware_Tool._v1.46.zip Tools to burn Android build into a bootable microSD card]<br />
* [http://files.pine64.org/doc/rock64/tools/AndroidTool_Release_v2.38.zip Tools that allows developer flash image into eMMC's Loader/Parameter/Misc/Kernal/Boot/Recovery/System/Backup partition]<br />
<br />
[[Category:ROCKPro64]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64&diff=10984ROCKPro642021-08-07T14:55:05Z<p>Kreyren0: /* Booting from USB or PXE */</p>
<hr />
<div><div style=float:right>__TOC__</div><br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg]]<br />
<br />
<div style=float:right>[[File:ROCKPro64v21FRONT.jpg|200px|thumb|right|A hi-res picture of v2.1 front]][[File:ROCKPro64v21REAR.jpg|200px|thumb|right|A hi-res picture of v2.1 rear]]</div><br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable"<br />
! Diagram !! Schematic<br>designator || Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|-<br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD (* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable (direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip; 12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
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):<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot<br />
|-<br />
| 0 || 0 || 0 || X<br />
|-<br />
| 0 || 0 || 1 || X<br />
|-<br />
| 0 || 1 || 0 || M<br />
|-<br />
| 0 || 1 || 1 || X<br />
|-<br />
| 1 || 0 || 0 || S<br />
|-<br />
| 1 || 0 || 1 || S<br />
|-<br />
| 1 || 1 || 0 || M<br />
|-<br />
| 1 || 1 || 1 || S<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. A short summary:<br />
<br />
::[[ROCKPro64_Software_Release#Armbian|'''Armbian''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#Debian|'''Debian''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#DietPi|'''DietPi''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#OpenMediaVault|'''Open Media Vault''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#LibreELEC_.28KODI.29|'''LibreELEC for KODI''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#Slackware|'''Slackware''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#NextCloudPi|'''NextCloudPi''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#Manjaro_ARM|'''Manjaro ARM''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#OpenWrt|'''OpenWrt''' (microSD and eMMC Boot)]]<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART)===<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
The early adopters (and late-comers who fiddle excessively with their boards or don't want to use a keyboard and monitor) have a need to monitor the low-level boot behaviour: this is done with a serial console.<br />
The console is a 3.3v serial port using pins 8 (TxD from RK3399) and 10 (RxD to RK3399) of U39 (the PI-2 bus), with pin 6 as a convenient ground, running at 1500000,N,8,1 (1.5Mbps).<br />
<br />
There is a great, detailed description how to get this working specifically on the ROCKPro64 [https://forum.pine64.org/showthread.php?tid=6387 here].<br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
<br />
=== Booting from SPI using u-boot ===<br />
<br />
{{warning|1=idbloader is not open-source}}<br />
<br />
Follow instructions in https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI#instructions-for-rockpro64<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== PCIe card issue and/or asynchronous external abort on flash read/write ===<br />
==== Older firmware overwrites actively used memory ====<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
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:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
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)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
==== PCIe Controller Hardware Error Handling Bug ====<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
*[https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
*[https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API, the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>, and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source. Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them, and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on. Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
This conversion table is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3<br />
| 1<br />
| 20<br />
|-<br />
| 5<br />
| 1<br />
| 21<br />
|-<br />
| 7<br />
| 4<br />
| 24<br />
|-<br />
| 8<br />
| 4<br />
| 20<br />
|-<br />
| 10<br />
| 4<br />
| 19<br />
|-<br />
| 11<br />
| 1<br />
| 22<br />
|-<br />
| 12<br />
| 3<br />
| 24<br />
|-<br />
| 13<br />
| 1<br />
| 18<br />
|-<br />
| 15<br />
| 1<br />
| 1<br />
|-<br />
| 16<br />
| 1<br />
| 4<br />
|-<br />
| 18<br />
| 4<br />
| 21<br />
|-<br />
| 19<br />
| 1<br />
| 8<br />
|-<br />
| 21<br />
| 1<br />
| 7<br />
|-<br />
| 22<br />
| 4<br />
| 25<br />
|-<br />
| 23<br />
| 1<br />
| 9<br />
|-<br />
| 24<br />
| 1<br />
| 10<br />
|-<br />
| 26<br />
| 1<br />
| 13<br />
|-<br />
| 27<br />
| 1<br />
| 11<br />
|-<br />
| 28<br />
| 1<br />
| 12<br />
|-<br />
| 29<br />
| 4<br />
| 27<br />
|-<br />
| 31<br />
| 4<br />
| 28<br />
|-<br />
| 32<br />
| 3<br />
| 28<br />
|-<br />
| 33<br />
| 3<br />
| 29<br />
|-<br />
| 35<br />
| 3<br />
| 26<br />
|-<br />
| 36<br />
| 3<br />
| 30<br />
|-<br />
| 37<br />
| 3<br />
| 25<br />
|-<br />
| 38<br />
| 3<br />
| 27<br />
|-<br />
| 40<br />
| 3<br />
| 31<br />
|}<br />
<br />
== Working Features ==<br />
{| class="wikitable sortable"<br />
! style="font-weight:bold;" | Feature/Option<br />
! style="font-weight:bold;" | Android<br />
! style="font-weight:bold;" | Android Version<br />
! style="font-weight:bold;" | Linux<br />
! style="font-weight:bold;" | Linux Version<br />
! style="font-weight:bold;" | Test/Verify Steps<br />
! style="font-weight:bold;" | Notes<br />
! style="font-weight:bold;" | Product Link<br />
|-<br />
| Pine64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe this will help get this working? https://github.com/avafinger/pine64-touchscreen<br />
| https://pine64.com/?product=7-lcd-touch-screen-panel<br />
|-<br />
| ROCKPro64 2×2 MIMO Dual Band WIFI 802.11AC / BLUETOOTH 4.2 MODULE (old) <br />
ROCKPro64 1x1 Dual Band WIFI 802.11AC / BLUETOOTH 5.0 MODULE (new)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| 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<br />
| https://wiki.pine64.org/index.php/ROCKPro64_Main_Page#OTG_mode<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use ATS. https://github.com/tuxd3v/ats<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out what Frank Mankel has done. https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use fanctl to control the fan while keeping your CPU cool https://github.com/tuxd3v/fanctl<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [https://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here.]<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [https://opensource.rock-chips.com/images/2/28/Rockchip_RK3399_Datasheet_V1.8-20180529.pdf Rockchip RK3399 Datasheet V1.8]<br />
** [https://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet]]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [https://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product Pine64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [https://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0https://wiki.pine64.org/index.php?title=ROCKPro64&diff=10934ROCKPro642021-07-29T19:22:34Z<p>Kreyren0: Optimization for dyslectics and people who hate reading LIKE ME who rather spent 4 days of their life trying to figure out how to fix the board to make it boot ^-^</p>
<hr />
<div><div style=float:right>__TOC__</div><br />
The [https://www.pine64.org/rockpro64/ '''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.<br />
<br />
Key features include a PCIe x4 open ended slot, the use of LPDDR4 RAM, and industry standard heatsink mounting holes.<br />
<br />
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.<br />
<br />
= Board Layout =<br />
[[File:ROCKPro64_annotated.jpg]]<br />
<br />
<div style=float:right>[[File:ROCKPro64v21FRONT.jpg|200px|thumb|right|A hi-res picture of v2.1 front]][[File:ROCKPro64v21REAR.jpg|200px|thumb|right|A hi-res picture of v2.1 rear]]</div><br />
<br />
== Main Chips ==<br />
* RK3399 system-on-chip (1)<br />
* LPDDR4 SDRAM 1 (18)<br />
* LPDDR4 SDRAM 2 (3)<br />
* SPI NOR flash memory (17)<br />
* RK808 power management (near 19)<br />
* RTL8211 ethernet transceiver (near 25)<br />
* ES8316 Sound Codec (on rear of board)<br />
* The heatsink mounting holes around the RK3399 are 59 mm apart<br />
<br />
== Switches ==<br />
<br />
The Power button (11, SW3): 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.<br />
<br />
The Reset button (10, SW901): perfoms a reset.<br />
<br />
The Recover button (28, SW900): used to enter maskrom mode.<br />
<br />
== Connectors, Sockets and Headers ==<br />
{| class="wikitable sortable"<br />
! Diagram !! Schematic<br>designator || Silkscreen<br>label !! Number<br>of pins !! Description<br />
|-<br />
| style="text-align: center;" | 2 || U39 || PI-2-bus || style="text-align: center;" | 40 || Pi-2 bus <br />
|-<br />
| style="text-align: center;" | 4 || J8 || +FAN- || style="text-align: center;" | 2 || PWM controlled fan header<br />
|-<br />
| style="text-align: center;" | 5 || J10 || SPDIF || style="text-align: center;" | 3 || SPDIF header<br />
|-<br />
| style="text-align: center;" | 6 || U6 || +RTC- || style="text-align: center;" | 2 || RTC battery backup header<br />
|-<br />
| style="text-align: center;" | 7 || U31 || Wifi-BT || style="text-align: center;" | 16 || SDIO WIFI/BT module-MIMO 2<br />
|-<br />
| style="text-align: center;" | 8 || USB3 || || style="text-align: center;" | 9 || USB-3 and USB Type C<br />
|-<br />
| style="text-align: center;" | 9 || USB1 || || style="text-align: center;" | 2×4 || Dual USB-2<br />
|-<br />
| style="text-align: center;" | 12 || IR1 || IR || style="text-align: center;" | 3 || infrared receiver socket <br />
|-<br />
| style="text-align: center;" | 13 || J16 || Headphone+mic || style="text-align: center;" | 4 || Headphone + mic 3.5mm jack<br />
|-<br />
| style="text-align: center;" | - || CON16 || GND PWR RST GND || style="text-align: center;" | 4 || Power & reset, unpopulated header near Headphone jack<br />
|-<br />
| style="text-align: center;" | 14 || U29 || EMMC || style="text-align: center;" | 34 || eMMC connector<br />
|-<br />
| style="text-align: center;" | 14* || J13 || || style="text-align: center;" | 13 || TF-card, a.k.a. microSD (* under 14 on the bottom side)<br />
|-<br />
| style="text-align: center;" | 15 || U30 || || style="text-align: center;" | 14 || SDIO WIFI/BT module-MIMO 1<br />
|-<br />
| style="text-align: center;" | 16 || SW4 || || style="text-align: center;" | 2 || Jumper to [[#Disable eMMC]]<br />
|-<br />
| style="text-align: center;" | 19 || J15 || PCI || style="text-align: center;" | 64 || PCI-express X4 socket<br />
|-<br />
| style="text-align: center;" | 20 || J21 || DSI || style="text-align: center;" | 30 || DSI<br />
|-<br />
| style="text-align: center;" | 21 || J22 || EDP || style="text-align: center;" | 30 || LCD EDP<br />
|-<br />
| style="text-align: center;" | 22 || CON1 || TP || style="text-align: center;" | 6 || touch panel connector<br />
|-<br />
| style="text-align: center;" | 23 || CON15 || || style="text-align: center;" | 4 || DC out for SATA disk cable (direct connect from DC-IN)<br />
|-<br />
| style="text-align: center;" | 24 || J11 || DC-IN || style="text-align: center;" | 2 || Power input, positive tip; 12V/3A (minimum) recommended<br />
|-<br />
| style="text-align: center;" | 25 || U32 || || style="text-align: center;" | 8 || RJ45<br />
|-<br />
| style="text-align: center;" | 26 || J14 || || style="text-align: center;" | 19 || HDMI<br />
|-<br />
| style="text-align: center;" | 27 || J17 || MIPI CAM || style="text-align: center;" | 32 || MIPI-1<br />
|-<br />
| style="text-align: center;" | 29 || J19 || MIPI CAM || style="text-align: center;" | 32 || MIPI-2<br />
|-<br />
| style="text-align: center;" | 30 || J18 || CIF || style="text-align: center;" | 26 || CIF<br />
|}<br />
<br />
== LEDs ==<br />
<br />
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.)<br />
<br />
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.)<br />
<br />
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.<br />
<br />
Yellow and green LEDs on the LAN socket behave in a standard way.<br />
<br />
== Jumpers ==<br />
They are used for boot device selection, as described in the following section.<br />
<br />
=== Disable eMMC ===<br />
<br />
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 [[#Board Information, Schematics and Certifications | schematic diagram]]. The default condition is OPEN (no jumper). It is useful for controlling the boot as follows:<br />
<br />
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).<br />
<br />
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):<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! µSD !! eMMC !! SW4 !! boot<br />
|-<br />
| 0 || 0 || 0 || X<br />
|-<br />
| 0 || 0 || 1 || X<br />
|-<br />
| 0 || 1 || 0 || M<br />
|-<br />
| 0 || 1 || 1 || X<br />
|-<br />
| 1 || 0 || 0 || S<br />
|-<br />
| 1 || 0 || 1 || S<br />
|-<br />
| 1 || 1 || 0 || M<br />
|-<br />
| 1 || 1 || 1 || S<br />
|}<br />
<br />
=== Disable SPI (while booting) ===<br />
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.<br />
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.<br />
<br />
= Getting Started =<br />
<br />
This section gives important information to get the board up and running.<br />
<br />
== Software and OS Image Builds ==<br />
<br />
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 to load each image.<br />
<br />
The page includes many OS images and descriptions. A short summary:<br />
<br />
::[[ROCKPro64_Software_Release#Armbian|'''Armbian''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#Debian|'''Debian''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#DietPi|'''DietPi''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#OpenMediaVault|'''Open Media Vault''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#LibreELEC_.28KODI.29|'''LibreELEC for KODI''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#Slackware|'''Slackware''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#NextCloudPi|'''NextCloudPi''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#Manjaro_ARM|'''Manjaro ARM''' (microSD and eMMC Boot)]]<br />
<br />
::[[ROCKPro64_Software_Release#OpenWrt|'''OpenWrt''' (microSD and eMMC Boot)]]<br />
<br />
Please see the [[NOOB]] page for detailed discussion of what you need (prerequisites) as well as instructions if the high level instructions are insufficient.<br />
<br />
== More Advanced Linux Bits ==<br />
<br />
Some Linux tips are given below.<br />
<br />
=== How to Update Your Linux ===<br />
<br />
For Debian/Ubuntu images entering the following commands at a terminal prompt<br />
<br />
<code>sudo apt-get update</code><br><br />
<code>sudo apt-get upgrade</code><br />
<br />
will keep your installation up to date. To update Ayufan images to the next release (when available) use the following command<br />
<br />
<code>sudo apt-get dist-upgrade</code><br />
<br />
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.<br />
<br />
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).'''<br />
<br />
=== Useful Scripts ===<br />
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)<br />
<br />
=== Video Playback ===<br />
Ayufan has some old documentation on [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/video-playback.md video playback here.] For your ROCKPro64 the install should be<br />
<br />
<code>sudo apt-get install ffmpeg mpv libmali-rk-midgard-t86x-r14p0-gbm</code><br />
<br />
(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<br />
<br />
=== Swapping Kernel Versions ===<br />
extlinux is in use on Ayufan images (at least) which enables some switching between installed kernel versions - [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/extlinux.md 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.<br />
<br />
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).<br />
<br />
=== Using an NVMe Disk as rootfs ===<br />
Forum member Bullet64 has documented [https://forum.frank-mankel.org/topic/208/booten-von-der-nvme-platte how to move rootfs to an NVMe disk.] This is useful until we get a full SPI option to boot from the NVMe.<br />
<br />
== More advanced bits related to any OS ==<br />
<br />
This section gives some hints for advanced users.<br />
<br />
=== Setup a Serial Console (UART)===<br />
<br />
{{warning|1=Do not connect RxD (pin 10) until the U-Boot SPL is running (see [[RK3399 boot sequence]]) or the SPL will not start}} <br />
<br />
The early adopters (and late-comers who fiddle excessively with their boards or don't want to use a keyboard and monitor) have a need to monitor the low-level boot behaviour: this is done with a serial console.<br />
The console is a 3.3v serial port using pins 8 (TxD from RK3399) and 10 (RxD to RK3399) of U39 (the PI-2 bus), with pin 6 as a convenient ground, running at 1500000,N,8,1 (1.5Mbps).<br />
<br />
There is a great, detailed description how to get this working specifically on the ROCKPro64 [https://forum.pine64.org/showthread.php?tid=6387 here].<br />
<br />
=== Booting from USB or PXE ===<br />
<br />
The default choice of boot device is first eMMC (if present) then SDcard. See [[ ROCKPro64_Main_Page#Disable_eMMC | jumpers above for details on adjusting this sequence.]]<br />
<br />
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 [[ROCKPro64_Main_Page#Useful_scripts | useful scripts above.]]) The NOOB wiki page has more details [[NOOB#Flashing_u-boot_to_SPI_Flash | here.]]<br />
<br />
Background info and historic details of this usage [https://github.com/ayufan-rock64/linux-build/blob/master/recipes/flash-spi.md can be found here.]<br />
<br />
=== Boot sequence ===<br />
<br />
The RockPro64 boot sequence has been documented [https://github.com/sigmaris/u-boot/wiki/RockPro64-boot-sequence here] by sigmaris.<br />
<br />
=== OTG Mode ===<br />
<br />
You can boot your ROCKPro64 into OTG mode with the use of the Recover button (see [[ROCKPro64_Main_Page#Switches | 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.<br />
<br />
The method is to power off the board. Then push and hold the Recover button and push and release the Power button. <br />
* If you have an Ayufan bootable image in either the SDcard or eMMC then there are 4 OTG modes [https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b 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.<br />
* 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.<br />
<br />
=== NVMe Drives ===<br />
Please be aware that [https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card 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. [https://www.wdc.com/content/dam/wdc/website/products/family/wd-black-pcie-ssd/wdfWDBlackSSD_PCIe_img1.jpg.imgw.500.500.jpg the WD Black devices.]<br />
<br />
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. [https://www.wdc.com/content/dam/wdc/website/products/personal/internal_storage/wd_blue_3d_nand_sata_ssd/blue3d_product-overview.jpg.imgw.1000.1000.jpg WD Blue devices.]<br />
<br />
=== SATA Drives ===<br />
SATA drives can be connected directly via the [https://pine64.com/?product=rockpro64-pci-e-to-dual-sata-ii-interface-card ROCKPro64 PCIe interface card.] Please note the card does not include the power cable - that is a [https://pine64.com/?product=rockpro64-power-cable-for-dual-sata-drives 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.<br />
<br />
ExplainingComputers did a YouTube [https://www.youtube.com/watch?v=9CCQicHwfDI ROCKPro64 PCIe SATA card review and tests using a Ubuntu console and OpenMediaVault.]<br />
<br />
=== Wi-Fi & Bluetooth Module ===<br />
If you have bought the [https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module Wi-Fi and Bluetooth module] from the Pine store then instructions for connecting it can be found on the accessories page [[ Accessories_Step_by_Step_Guides#Wifi.2FBluetooth_module | here.]] '''Please note that the 0.7.9 Ayufan's 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.'''<br />
<br />
It can also be used on Manjaro by installing ap6256-firmware and wireless-regdb packages.<br />
<br />
=== 7" LCD Touch Screen ===<br />
Instructions for connecting the [https://pine64.com/?product=7-lcd-touch-screen-panel LCD touch screen] from the Pine [[ Accessories_Step_by_Step_Guides#7.22_LCD_Touch_Screen_Panel | are here.]]<br />
<br />
'''Note at present (August 2018) this screen is only supported by the Android image.'''<br />
<br />
{{warning|1= When using the touchscreen ensure the cables are properly connected and tightened down and that you do not let the metal backplane touch the SBC}}<br />
<br />
=== RTC Battery Backup ===<br />
The Pine store has a couple of options for RTC battery backups: a [https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa AAA version here] or a [https://pine64.com/product/rtc-backup-battery-holder-cr-2032 CR-2032 version here.] Instructions for plugging in either of them are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== Acrylic Open Enclosure ===<br />
Assembly instructions for the [https://pine64.com/product/pine-a64-rockpro64-acrylic-open-enclosure acrylic enclosure] from the Pine store are also on the [[ Accessories_Step_by_Step_Guides| Accessories page ]]<br />
<br />
=== NAS case ===<br />
The [https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf Exploded View Installation Diagram] for the [https://pine64.com/product/rockpro64-metal-desktop-nas-casing NAS case from the Pine store].<br />
<br />
Detailed '''NAS Case overview and assembly instructions''' can be found [[NASCase | here]].<br />
<br />
= [[ROCKPro64_Hardware_Accessory_Compatibility|Hardware Compatibility]] =<br />
== Hardware Compatibility Page ==<br />
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.<br />
<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#PCIe devices|PCIe devices]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]<br />
* [[ROCKPro64_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]<br />
<br />
== Limitations ==<br />
=== PCIe card issue and/or asynchronous external abort on flash read/write ===<br />
==== Older firmware overwrites actively used memory ====<br />
Some people get system freeze when:<br />
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)<br />
* or do read or write 4GB to the flash. (not using PCIe)<br />
<br />
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.<br />
<br />
Both issues are in fact the same software BUG. There is no hardware problem.<br />
Currently most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. <br />
People are currently fixing this BUG, but it may take some time.<br />
In the mean time, you can fix it manually.<br />
<br />
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:<br />
<br />
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf<br />
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31<br />
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot<br />
cd u-boot/<br />
git checkout v2020.01-rc5<br />
make rockpro64-rk3399_defconfig<br />
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-<br />
<br />
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)<br />
<br />
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64<br />
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384<br />
sync<br />
<br />
==== PCIe Controller Hardware Error Handling Bug ====<br />
There is an issue with the rk3399 pcie controller that is currently unmitigated:<br />
*[https://lore.kernel.org/linux-pci/CAMdYz...gmail.com/ LKML Original Thread]<br />
*[https://lkml.org/lkml/2020/4/6/320 LKML Additional Information]<br />
<br />
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.<br />
<br />
The error type is determined by which cpu cluster handles the message.<br />
<br />
=== Virtualization ===<br />
The PCIe controller on the rk3399 is not behind an IOMMU.<br />
This means it is not possible to safely pass through PCIe devices to a virtual machine.<br />
<br />
= Board Features =<br />
<br />
This section outlines the most important characteristics of the board and its components.<br />
<br />
== SoC and Memory Specification ==<br />
* Based on Rockchip RK3399<br />
[[File:Rockchip_RK3399.png|right]]<br />
<br />
=== CPU Architecture ===<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]<br />
* [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]<br />
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU<br />
* Cortex-A72:<br />
** 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<br />
** AArch64 for 64-bit support and new architectural features<br />
** L1 cache 48KB Icache and 32KB Dcache for each A72 <br />
** L2 cache 1024KB for big cluster <br />
** DSP & SIMD extensions<br />
** VFPv4 floating point<br />
** Hardware virtualization support<br />
* Cortex-A53:<br />
** L1 cache 32KB Icache and 32KB Dcache for each A53<br />
** L2 cache 512KB for little cluster <br />
* Full implementation of the ARM architecture v8-A instruction set<br />
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation<br />
* ARMv8 Cryptography Extensions<br />
* In-order pipeline with symmetric dual-issue of most instructions<br />
* Include VFP v3 hardware to support single and double-precision operations<br />
* TrustZone technology support<br />
* Full CoreSight debug solution<br />
* One isolated voltage domain to support DVFS<br />
<br />
=== GPU Architecture ===<br />
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]<br />
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content.<br />
* Frequency: 650MHz <br />
* Throughput: 1300Mtri/s, 10.4Gpix/s <br />
* 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™.<br />
<br />
=== System Memory ===<br />
* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB.<br />
* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot).<br />
<br />
== Display ==<br />
* Dual VOP: one supports resolutions up to 4096x2160 and [https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression AFBC]; the other supports resolutions up to 2560x1600<br />
* Dual channel MIPI-DSI (4 lanes per channel)<br />
* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR<br />
* Digital Video port up to 4Kp60<br />
* DisplayPort 1.2 (4 lanes, up to 4K 60Hz)<br />
* Supports Rec.2020 and conversion to Rec.709 <br />
<br />
== Video ==<br />
* Digital Video output up to 4K@60Hz<br />
* 4K HDR @ 30fps<br />
* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps<br />
* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps<br />
* VP9, up to 4Kx2K @ 60fps<br />
* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps<br />
* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps<br />
* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps<br />
* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps<br />
* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps<br />
<br />
== Audio ==<br />
* 3.5mm Phone Jack<br />
* 3-pin S/PDIF header <br />
* Audio via Digital Video port<br />
<br />
== Camera ==<br />
* Dual MIPI CSI,dual ISP, maximum input resolution of 13M pixels <br />
<br />
== Network ==<br />
* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3<br />
* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional)<br />
<br />
== Storage ==<br />
* microSD - bootable, support SDHC and SDXC, storage up to 256GB<br />
* eMMC - bootable (optional eMMC Module)<br />
* 1 USB3.0 Host port<br />
* 1 USB type C OTG port with DP output <br />
* 2 USB2.0 Dedicated Host ports<br />
<br />
== Expansion Ports ==<br />
* 2x20 pins "Pi2" GPIO Header<br />
* PCIe 2.1 (4 full-duplex lanes with 20Gbps) x4 open ended port<br />
<br />
=== GPIO Pins ===<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" style="width:20em;" | Assigned To<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Pin Nr.<br />
! scope="col" style="width:20em;" | Assigned To<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 2<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C4 (I2C8_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 4<br />
| style="text-align:left;"| 5 V<br />
|-<br />
| style="text-align:right;"| GPIO1_C5 (I2C8_SCL)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 5<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 6<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D0 (CPU_GPCLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 7<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 8<br />
| style="text-align:left;"| GPIO4_C4 (UART2_TX)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 9<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 10<br />
| style="text-align:left;"| GPIO4_C3 (UART2_RX)<br />
|-<br />
| style="text-align:right;"| GPIO1_C6<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 11<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 12<br />
| style="text-align:left;"| GPIO3_D0 (I2S0_CLK)<br />
|-<br />
| style="text-align:right;"| GPIO1_C2<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 13<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 14<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO1_A1<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 15<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 16<br />
| style="text-align:left;"| GPIO1_A4<br />
|-<br />
| style="text-align:right;"| 3.3 V<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 17<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 18<br />
| style="text-align:left;"| GPIO4_C5 [SPDIF]<br />
|-<br />
| style="text-align:right;"| [UART4_TX] GPIO1_B0 (SPI1_TXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 19<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 20<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| [UART4_RX] GPIO1_A7 (SPI1_RXD)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 21<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 22<br />
| style="text-align:left;"| GPIO4_D1<br />
|-<br />
| style="text-align:right;"| GPIO1_B1 (SPI1_CLK)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 23<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 24<br />
| style="text-align:left;"| GPIO1_B2 (SPI1_CSN0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 25<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 26<br />
| style="text-align:left;"| GPIO1_B5<br />
|-<br />
| style="text-align:right;"| GPIO1_B3 (I2C4_SDA)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 27<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 28<br />
| style="text-align:left;"| GPIO1_B4 (I2C4_SCL)<br />
|-<br />
| style="text-align:right;"| GPIO4_D3<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 29<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 30<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO4_D4<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 31<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 32<br />
| style="text-align:left;"| GPIO3_D4 (I2S0_SDI1SDO3)<br />
|-<br />
| style="text-align:right;"| GPIO3_D5 (I2S0_SDI2SDO2)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 33<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 34<br />
| style="text-align:left;"| GND<br />
|-<br />
| style="text-align:right;"| GPIO3_D2 (I2S0_LRCKTX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 35<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 36<br />
| style="text-align:left;"| GPIO3_D6 (I2S0_SDI3SDO1)<br />
|-<br />
| style="text-align:right;"| GPIO3_D1 (I2S0_LRCKRX)<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 37<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 38<br />
| style="text-align:left;"| GPIO3_D3 (I2S0_SDI0)<br />
|-<br />
| style="text-align:right;"| GND<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 39<br />
| style="text-align:center; background-color:black; color:gold; font-weight:bold;"| 40<br />
| style="text-align:left;"| GPIO3_D7 (I2S0_SDO0)<br />
|}<br />
<br />
==== Linux /dev/gpiochip Assignments ====<br />
<br />
On Linux, using the new <code>/dev/gpiochip</code> API, the <code>''n''</code> in <code>GPIO''n''_''XX''</code> appears to correlate to the number of the <code>/dev/gpiochip''n''</code>, and the <code>''XX''</code> to the definition <code>RK_P''XX''</code> of lines in <code>include/dt-bindings/pinctrl/rockchip.h</code> of the Linux kernel source. Having these named in the dts would be nice.<br />
<br />
You can use [https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/ libgpiod] to drive them, and test them with the included tools (<code>gpioinfo</code>, <code>gpioset</code>, ...)<br />
<br />
For example, <code>gpioset 4 25=1</code> (run as root) would turn pin 22 on. Do beware that poking the wrong GPIO pin can lock up your system.<br />
<br />
This conversion table is also available as a [https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5 C header file].<br />
<br />
{| class="wikitable plainrowheaders" border="1"<br />
! scope="col" | Pin Nr.<br />
! scope="col" | Chip<br />
! scope="col" | Line<br />
|-<br />
| 3<br />
| 1<br />
| 20<br />
|-<br />
| 5<br />
| 1<br />
| 21<br />
|-<br />
| 7<br />
| 4<br />
| 24<br />
|-<br />
| 8<br />
| 4<br />
| 20<br />
|-<br />
| 10<br />
| 4<br />
| 19<br />
|-<br />
| 11<br />
| 1<br />
| 22<br />
|-<br />
| 12<br />
| 3<br />
| 24<br />
|-<br />
| 13<br />
| 1<br />
| 18<br />
|-<br />
| 15<br />
| 1<br />
| 1<br />
|-<br />
| 16<br />
| 1<br />
| 4<br />
|-<br />
| 18<br />
| 4<br />
| 21<br />
|-<br />
| 19<br />
| 1<br />
| 8<br />
|-<br />
| 21<br />
| 1<br />
| 7<br />
|-<br />
| 22<br />
| 4<br />
| 25<br />
|-<br />
| 23<br />
| 1<br />
| 9<br />
|-<br />
| 24<br />
| 1<br />
| 10<br />
|-<br />
| 26<br />
| 1<br />
| 13<br />
|-<br />
| 27<br />
| 1<br />
| 11<br />
|-<br />
| 28<br />
| 1<br />
| 12<br />
|-<br />
| 29<br />
| 4<br />
| 27<br />
|-<br />
| 31<br />
| 4<br />
| 28<br />
|-<br />
| 32<br />
| 3<br />
| 28<br />
|-<br />
| 33<br />
| 3<br />
| 29<br />
|-<br />
| 35<br />
| 3<br />
| 26<br />
|-<br />
| 36<br />
| 3<br />
| 30<br />
|-<br />
| 37<br />
| 3<br />
| 25<br />
|-<br />
| 38<br />
| 3<br />
| 27<br />
|-<br />
| 40<br />
| 3<br />
| 31<br />
|}<br />
<br />
== Working Features ==<br />
{| class="wikitable sortable"<br />
! style="font-weight:bold;" | Feature/Option<br />
! style="font-weight:bold;" | Android<br />
! style="font-weight:bold;" | Android Version<br />
! style="font-weight:bold;" | Linux<br />
! style="font-weight:bold;" | Linux Version<br />
! style="font-weight:bold;" | Test/Verify Steps<br />
! style="font-weight:bold;" | Notes<br />
! style="font-weight:bold;" | Product Link<br />
|-<br />
| Pine64 LCD Touchscreen (Screen/Touch)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| Maybe this will help get this working? https://github.com/avafinger/pine64-touchscreen<br />
| https://pine64.com/?product=7-lcd-touch-screen-panel<br />
|-<br />
| ROCKPro64 2×2 MIMO Dual Band WIFI 802.11AC / BLUETOOTH 4.2 MODULE (old) <br />
ROCKPro64 1x1 Dual Band WIFI 802.11AC / BLUETOOTH 5.0 MODULE (new)<br />
| Yes/Yes<br />
| <br />
| No/No<br />
| <br />
| <br />
| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons.<br />
| https://store.pine64.org/product/rockpro64-1x1-dual-band-wifi-802-11acbluetooth-5-0-module<br />
|-<br />
| USB OTG<br />
| <br />
| <br />
| <br />
| <br />
| 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<br />
| https://wiki.pine64.org/index.php/ROCKPro64_Main_Page#OTG_mode<br />
| <br />
|-<br />
| USB Mass Storage USB2/USB3<br />
| Yes/yes<br />
| <br />
| Yes/Yes<br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Dedicated Fan Power (pwm1)<br />
| <br />
| <br />
| Yes<br />
| <br />
| <br />
| You might want to use ATS. https://github.com/tuxd3v/ats<br />
| <br />
|-<br />
| GPIO pins (raw or via RPI python scripts)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| Check out what Frank Mankel has done. https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2<br />
| <br />
|-<br />
| MIPI CSI Camera 1 and 2<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| eDP<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| HDMI Audio<br />
| Yes<br />
| 7.1.2<br />
| Yes<br />
| 4.4.132-1083 - 4.4.138-1100<br />
| <br />
| Stopped working in 4.4.154.1105. Ayufan is looking into it.<br />
| <br />
|-<br />
| 3.5mm Audio/Mic<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| USB-C Host<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Display via USB-C<br />
| Yes<br />
| 7.x and 8.x<br />
| <br />
| <br />
| <br />
| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x<br />
| <br />
|-<br />
| ROCKPro64 PLAYBOX ENCLOSURE<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| 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.<br />
| https://pine64.com/?product=rockpro64-playbox-enclosure<br />
|-<br />
| ROCKPro64 30mm Tall Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://store.pine64.org/?product=rockpro64-heatsink<br />
|-<br />
| ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| Fan For ROCKPro64 20mm Mid Profile Heatsink<br />
| N/A<br />
| <br />
| N/A<br />
| <br />
| N/A<br />
| You might want to use fanctl to control the fan while keeping your CPU cool https://github.com/tuxd3v/fanctl<br />
| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink<br />
|-<br />
| HDMI output 4K@60Hz<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| PCIe 2.1<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Real Time Clock (RTC) battery backup<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| https://store.pine64.org/?product=rtc-backup-battery-cr-battery<br />
|-<br />
| Boot from USB/PXE<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|}<br />
<br />
RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [https://opensource.rock-chips.com/wiki_Status_Matrix in their wiki here.]<br />
<br />
= Board Information, Schematics and Certifications =<br />
* Board Dimensions: 133mm x 80mm x 19mm<br />
* Input Power: +12V @3A/5A with 5.5mm/2.1mm Type M Barrel type DC connector<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v21-SCH.pdf ROCKPro64 Schematic v2.1 (Second Batch Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.dxf ROCKPro64 v2.1 Board Top Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.dxf ROCKPro64 v2.1 Board Bottom Outline in AutoCad DXF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-top.pdf ROCKPro64 v2.1 Board Top Outline in PDF format]<br />
** [https://files.pine64.org/doc/rockpro64/RockPro64_v21_Boardoutline-bottom.pdf ROCKPro64 v2.1 Board Bottom Outline in PDF format]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_v20-SCH.pdf ROCKPro64 Schematic v2.0 (Pilot Production Release)]<br />
** [https://files.pine64.org/doc/rockpro64/ROCKPRo64%20Engineering%20Change%20Notice%2020180628RP01.pdf Engineering Change Notice for v2.0 to turn on 3.3V power on PCIe]<br />
* [https://files.pine64.org/doc/rockpro64/rockpro64_wifi_ap6359SA.pdf ROCKPro64 AP6359SA Wifi/BT Schematic]<br />
* [https://files.pine64.org/doc/rockpro64/Rockpro64%20Pi-2%20Connector%20ver0.2.png ROCKPro64 Pi-2 Pin assignment and definition]<br />
* [https://files.pine64.org/doc/rockpro64/RockPro-3D-model.zip ROCKPro64 3D model]<br />
<br />
* Certifications:<br />
** 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.<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20FCC%20SDOC%20Certificate.pdf ROCKPro64 FCC Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20CE-EMC%20Certificate.pdf ROCKPro64 CE Certificate]<br />
** [https://files.pine64.org/doc/cert/ROCKPro64%20ROHS%20%20SEC180529404001E%20Report.pdf ROCK64 RoHS Report]<br />
<br />
= Datasheets for Components and Peripherals =<br />
* Rockchip RK3399 SoC information:<br />
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]<br />
** [https://opensource.rock-chips.com/images/2/28/Rockchip_RK3399_Datasheet_V1.8-20180529.pdf Rockchip RK3399 Datasheet V1.8]<br />
** [https://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]<br />
* LPDDR4 (200 Balls) SDRAM:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]<br />
* eMMC information:<br />
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]<br />
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]<br />
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]<br />
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]<br />
* SPI NOR Flash information:<br />
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]<br />
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]<br />
* Heatsink related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/Rockpro%20Passive%20Heatsink%20Spec.jpg ROCKPro64 Passive Heatsink Dimension Drawing]<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/LMS-TC150%20Silicon%20Thermal%20Pad.pdf Heatsink Thermal Pad Specification]<br />
* Wireless related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet]]<br />
* Ethernet related info:<br />
** [https://files.pine64.org/doc/datasheet/rock64/RTL8211F-CG-Realtek.pdf Realtek RTL8211F 10/100/1000M Ethernet Transceiver Datasheet]<br />
* Peripheral related info:<br />
** [https://files.pine64.org/doc/datasheet/rockpro64/ASM1061_Data%20Sheet_R1_8.pdf asmedia ASM1061 PCIe SATA 2.0 Datasheet]<br />
* Remote control button mapping<br />
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE64 Button Mapping]<br />
* Audio Codec (ES8316) (Under Board)<br />
** [https://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]<br />
<br />
<br />
= Useful Articles and Blog Posts = <br />
<br />
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.<br />
<br />
* [https://stikonas.eu/wordpress/2019/09/15/blobless-boot-with-rockpro64/ Blobless boot with RockPro64 by Andrius Štikonas]<br />
<br />
* [https://marcin.juszkiewicz.com.pl/2020/06/17/ebbr-on-rockpro64/ EBBR on RockPro64 by Marcin Juszkiewicz]<br />
<br />
<br />
= The NAS Case for the ROCKPro64 =<br />
[[file:NASCaseMain.png|thumb|right|Front View of the PINE64 NAS Case for the ROCKPro64]]<br />
Please [[NASCase | follow this this link]] for '''detailed instructions on how to assemble the ROCKPro64 NAS Case'''.<br />
<br />
The NAS Case instructions also contains detailed information about:<br />
*what the NAS Case ships with<br />
*What additional things you need to purchase for your NAS Case<br />
*What optional things you can consider purchasing for your NAS build<br />
*What OS Image we recommend you use for your NAS build<br />
*IO accessibility after installing the ROCKPro64 into the NAS Case<br />
*[https://files.pine64.org/doc/rockpro64/ROCKPro64%20NAS%20Case%20Exploded%20View%20Diagram.pdf NAS Case Exploded View]<br />
*[https://files.pine64.org/doc/rockpro64/NAS%20Case%20Drawing.dwg NAS Case Drawing]<br />
<br />
= Other Resources =<br />
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]<br />
* [https://pine64.com/?post_type=product Pine64 shop]<br />
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]<br />
* [https://opensource.rock-chips.com/ Rockchip Open Source Wiki]<br />
* ExplainingComputers have a video review [https://www.youtube.com/watch?v=CeoNHGFN_30 of the RockPro64 here, including linux first boot.]<br />
<br />
<br />
[[Category:ROCKPro64]] [[Category:Rockchip RK3399]]</div>Kreyren0