RockPro64 RK3399 Board Linux Review with Ubuntu 18.04 + LXDE

Let’s do one more RK3399 Linux review using Pine64 RockPro64 development board. After shortly checking out the hardware, I’ll test Ubuntu 18.04 “Bionic” LXDE on the board, test 3D graphics acceleration, video playback, USB storage and network performance among other things on the board.

RockPro64 Board Unboxing

The board came in a cardboard package, and the sticker made it clear I had received the 2GB LPDDR4 version.

Even after FriendlyELEC NanoPi M4 announcement, Rockchip ROCKPro64 is still the cheapest RK3399 development board around, so it should come as no surprise that the board does not come with any accessories by default.

Click to Enlarge

Another way to keep the price low was not to include any built-in storage apart from SPI flash, so instead most people will either boot from micro SD card or an eMMC flash module both of which need to be purchase separately. Another cost-saving is the lack of built-in wireless module for WiFi and/or Bluetooth connectivity, which makes sense as FCC certification is easier that way, and the board is cheaper for people who do not need WiFi. WiFi can be added via Pine64 802.11ac 2×2 + Bluetooth 4.2 module ($15.99 – Ampak AP6359SA),  or USB. The power supply is not included either, and you’ll need a 12V/3A or greater, especially if you connect power-hungry devices to the USB 3.0 port and/or the PCIe slot, in which case a 12V/5A power supply is recommended. The latter is an exclusivity for RockPro64 as I can’t remember seeing it on any other RK3399 maker boards. I won’t test PCIe myself in this review since I don’t have any compatible card, but Pine64 provides card mostly for storage with a PCI-e to Dual SATA-II Interface Card ($9.99) and a PCI-e X4 to M.2/NGFF NVMe SSD Interface Card ($5.99). Note that Rockchip RK3399’s PCIe interface is not suitable for graphics card since addressable memory is limited to 32 MB.

Click to Enlarge

There’s not much to see on the bottom of the board except for the micro SD card and Everest Semi ES8316 audio codec.

It’s also interested to look at the sides fo the board, especially with regards to the USB 3.0 + USB type-C connector which I don’t think I have seen in the past.

Click to Enlarge

The other side is more “traditional” with an HDMI 2.0 port, RJ45 connector for Gigabit Ethernet, and the DC jack.

Since I’ve tested five Rockchip RK3399 development boards so far,  I thought it would be interested to take a photo of all five models to compare the form factors.

Click to Enlarge

From top left to bottom right: RockPro64, NanoPC-T4, Videostrong VS-RD-RK3399, AIO-3399J, and Firefly-RK3399. The smallest of the lot is NanoPC-T4, but now we have a smaller board with business card sized NanoPi M4 board, and soon an even smaller RK3399 SBC with the upcoming NanoPi NEO4.

Initial Setup and First Boot

While RockPro64 does not come with a heatsink by default, some sort of cooling solution is a must for Rockchip RK3399, as we’ve seen with Firefly-RK3399 that a fansink can make a big difference in terms of performance compared to a thin heatsink, so I can’t imagine what would happen if I run the board without any heatsink at all.

I first try the same heatsink as used in AIO-3399J review, and it was close but no cigar, so instead I went with another thicker heatsink and some old thermal paste.

Click to Enlarge

I connected Ethernet, HDMI, USB key board and mouse, as well as USB 3.0 drive, but I did not connect a USB-C adapter with HDMI output just yet, since it caused issues with other boards (HDMI disabled when USB-C DisplayPort Alternate mode is enabled). I also connected a serial debug board as explained in Pine64 forums.

But first we need to get some firmware to play with. News about Ayufan firmware images is also reported in the forums, so I went to Github release page and download one of the latest stable image, currently v 0.7.9 with  bionic-lxde-rockpro64-0.7.9-1067-arm64.img.xz.

I flashed the image to a 16GB micro SD card using Etcher, inserted the micro Card into the board, connected the power, some light turned on, and …nothing. I connected the serial console using 1.5 Mbps 8N1 no flow control and no output in the serial console. I took out the micro SD card, and pushed it back in the socket, and … success!

Click to Enlarge

I would get a login prompt in the HDMI display for Rock64 and in the serial console. Default username/password for RockPro64 images are: rock64/rock64.

Here’s the boot log for reference (N.B.: not the first boot).

RockPro64 Ubuntu 18.04 System Info & Drivers

Once we login into the serial console we can find out the board is indeed running the latest Ubuntu 18.04.1 LTS on top of Linux 4.4.135.

The micro SD card was automatically resized and I get a 14.30 GB root partition with about 14.7% used.

Some more info about storage and memory:

This confirms I really got the 2GB version of the board, and that’s one of the first time I see a Linux firmware image where ZRAM is enabled by default. There;s one problem though… None of of USB partition are automatically mounted despite all four partitions being properly detected:

We’ll have a look at that a little later…. Moving on to loaded kernel modules:

Contrary to Firefly Team who build all drivers inside the kernel, Pine64 guys built many drivers as modules.

The info about GPIOs is exactly the same as in AIO-3399J in /sys/class/gpio, but the GPIO definitions are quite different:

I does not look like all GPIO available via the expansion header have been made available (TBC),. You’ll find the Pi-2 header’s pinout diagram here.

3D Graphics Acceleration on RockPro64 Board with Ubuntu 18.04

es2_info and es2gears were already installed.


So 3D hardware acceleration works here, and slightly faster than on AIO-3399J (75 fps vs ~59 fps).

I also ran glmark2-es2 after installing it

It works OK, but with a slightly lower score than on AIO-3399J board (48 points):

Off-screen results for reference:

The score is also slightly lower here (201 vs 222), but this could be because of the thermal issue (heatsink).

The Quake WebGL demo is not working  in Chromium since WebGL is not enabled…

…and while it could launch in in Firefox the demo is quite slow since it is  rendered at 9 to 11 fps, instead of the 50 to 60 fps I got with AIO-3399J board, or even ODROID-XU4Q running Ubuntu 18.04 .

Solving USB automount Issue (& RockPro64 Community Support)

I plan to play some videos from my USB harddrive, but first, it’s time to solve USB HDD automount. I could mount NTFS and EXT-4 partitions as root, but then the files are only accessible to root. I tried to mess up with PCManFM settings to automount partitions, but no luck. Finally, I discovered pmount tool that allows to mount drive as a normal user:

It worked just fine:

I failed to mount exFAT since this file system is not included in the firmware images, that’s probably just a question of building those as kernel modules.

One main benefit of Pine64 boards is that they have active user forums, and IRC channels #pine64 and #rock64 where there’s always somebody who will try to help you.  I did not use the forums, but I asked several questions on #Rock64 IRC channel, and people tried to help. One person who got automount to work but forgot this exact solution while in IRC, even contacted me later on by email telling to install gvfs (thanks dukla!):

and sure enough the three partitions were automatically mounted in /media/rock64 directory as shown in the screenshot below.

Video Playback in RockPro64 Board

AIO3399-J did not come with any video player, and for good reasons since I did not manage to play any videos with hardware decoding in that board, although software decoding works up to 1080p.

But in the case of RockPro64 Ubuntu 18.04 image, SMPlayer, YouTube Browser for SMPlayer, and mpv Media Player were already installed. So let’s play some videos.

Click to Enlarge

Sadly the video was very choppy, and as you can see SMPlayer relies on mpv Media Player with everything decoded by software.

The good people in IRC told me to use rkmpv instead, but my first attempt failed miserably:

I was then told to following video playback instructions in the Wiki which basically asks us to install the following:

I did miss the libmail-rk-midgard thing, and after that I could play the video… sort of:

The video played in full screen mode, was very choppy, and from the error messages above it’s pretty clear hardware video decoding failed. People told me they manage to use rkmpv, but I failed to fix the issue in a reasonable amount of time. Anyway, I’m pretty sure this will be working in subsequent firmware releases, and rkmpv is the program to look into for hardware video playback.

Another interesting issue is YouTube videos are playing at accelerated speed in both Firefox and YouTube Browser for SMPlayer, but the issue is known and being worked on.

Web browsing in RockPro64

Both Firefox and Chromium are pre-installed.

However, Thai fonts  are missing, so characters will show as blocks, so I installed Thai fonts:

Apart from that little issue, web browsing was quite fast like on other RK3399 boards both with Chromium or Firefox.

I could not play Candy Crush Saga in Chromium however due to missing Adobe Flash player, but Firefox could handle it somehow, but only in really slow motion. Both Core 5/6 (Cortex A72 AFAIK) were heavily used while playing the game, but core 1 to 4 (Cortex A53) cores were basically sleeping.

As mentioned previously, Youtube acts funny (2x or 4x accelerated playback), and WebGL is slow in Firefox, and not working in Chromium.  So there are still some issue with web browsing, but in the current firmware, Firefox works a little better.

USB 3.0 Storage Performance

I normally test internal storage and USB 3.0 performance, but since I’m running the OS on the micro SD card instead of an eMMC module, I’ve gone straight to  USB 3.0 testing on the EXT-4 partition of the drive:

That’s about 91 MB/s sequential write speed, and 95 MB/s sequential read speed, and about the numbers to be expected from this mechanical hard drive over USB 3.0. Over the test appeared to be stuck for a while, and looking at the kernel log…

… we can see the drive got disconnected, before the EXT-4 got remounted about 13 seconds later. The always useful people in IRC also mentioned a USB3.0 disconnect issue to me when I had troubles with USB automount. More details can be found here.

Network performance – Gigabit Ethernet

Although you can add a WiFi module through headers,  there’s no WiFi built-into RockPro64,  so I only tested Gigabit Ethernet performance using iperf.

  • Full duplex

Just like in Android on other RK3399 boards, and in Linux with AIO-3399J, one direction is quite slower than the other while doing full duplex. I’ve been told to monitor the CPU usage while doing so, and I could see 4 iperf thread apparently distributed on Cortex A53 and A72 cores.

But as usual once we transfer data in one direction only at a time, everything is good:

  • Upload only

  • Download only

Fore reference, upload was handled by a Cortex A53 core not fully utilized (40%), while download was moved to a Cortex A72 core (Core 5 / 6).

USB-C DisplayPort Alternate Mode on RockPro64

I previously reviewed MINIX NEO-C plus USB-C adapter with RK3399 boards using one of its HDMI port, and it worked, except HDMI and USB-C video output would not work at the same time. I’ve been told it should just be a device tree configuration thing, but I’ve not had time to look into it yet.

The good news is that with RockPro64 board I can get output to displays connected to HDMI and USB-C at the same time.

The bad news – as you can see above – is that the output to the display connected to the USB-C port is completely scrambled. Again it’s probably a configuration option, but I could not find information related to this in the Wiki.

Final Words

Just like other Linux firmware image on Rockchip RK3399, Ubuntu 18.04 + LXDE on RockPro64 does work but with some issues which are being worked on by the team. Overall performance is very good, 3D graphics works, Gigabit Ethernet performs as expected, but some features are not working well in web browsers with WebGL and HTML5 games being slow in Firefox, USB 3.0 having some potential disconnect issues, and hardware video decoding not working (yet) in my case, among other smaller issues like USB automount, which can be easily fixed by install an extra package.

IMHO, one advantage of Pine64 over companies like FriendlyELEC or Firefly is their community which seems more active in forums and IRC.

RockPro64 is the cheapest RK3399 board available on the market to date, but you also have to consider the need to add boot storage (micro SD card or eMMC module), and potentially WiFi + Bluetooth module, so the actual price difference is not as large as the promoted price may imply.

RockPro64 (2GB RAM) board reviewed here sells for just $59.99, or you could get the 4GB RAM version for $79.99 instead. Both are amazing value, but remember you need some cooling solution (heatsink or fansink), a micro SD card or eMMC flash, and a 12V/3A power supply at least in order to use the board. Alternatively it’s also possible to purchase the board on Ameridroid, and eventually I’d expect the board to be listed on Amazon too since its older sibling – Rock64 – is also offered there.

Share this:

Support CNX Software! Donate via PayPal or cryptocurrencies, become a Patron on Patreon, or buy review samples

15 Replies to “RockPro64 RK3399 Board Linux Review with Ubuntu 18.04 + LXDE”

  1. Re low GLES performance, clearly the issue is in the display manager/framebuffer presentation layer, as off-screen results are in-line with other boards.

  2. Too bad about the 32mb addressable memory PCI-e limit. A couple more bits (2^25 -> 2^27) and they’d qualify for something like Nvidia Quadro NVS 285 128MB PCI-e which are covered by nouveau.

  3. > you’ll need a 12V/3A or greater if you connect power-hungry devices to the USB 3.0 port and/or the PCIe slot. The latter is an exclusivity for RockPro64 as I can’t remember seeing it on any other RK3399 maker boards

    With demanding PCIe cards or disks to be connected to the board I would better choose Pine’s 12V/5A PSU. The Rock960 EE (Enterprise Edition) will also have a PCIe slot (mechanical x16 but of course only 4 lanes available due to SoC limitation)

  4. Could I ask what USB2TTL are you using for debug UART?

    I’m recently doing some some experiments on USB2TTL with RK3399.

    1. I’m using a CP2102 USB2TTL board. See photo:

      Output from host computer when connecting the board:

      I’m assuming your already have someone like that, but if not better tell me today if you want to test something, as I plan to start packing my office tonight or tomorrow morning.

  5. It looks like everybody is using their own method for video hardware decoding.
    FriendlyELEC told me their Ubuntu 18.04 firmware for NanoPC-T4 can play videos using Menu->Sound & Video->Qt5-VideoPlayer

    1. Thing is, it would be interesting to compare with the boards that have the RK3399 mounted on the bottom of the PCB, where a much better heatsink can be mounted (Renegade Elite and NanoPi M4 AFAIK). Because it might be that the board from Libre Computer, with it’s slim design and nice case, does not need any forced cooling and is usable anywhere, while for the RP64 with tall heatsink it is much more difficult to find proper casing.

      1. After adding a ‘thermal test’ mode to sbc-bench I’m just about to do exactly that: test for the thermal efficiency of various heatsinks variations:

        (Not so) surprisingly these thermal pads used by board makers to connect SoC with heatsink are rather inefficient. By simply replacing such a pad with a copper shim + thermal paste temperatures decrease by more than 10°C. Now imagine saving the copper shim too and directly connecting SoC and heatsink with a superiour thermal paste (mine was something lying in the drawer for more than 20 years — no idea if aging effects apply here too)

  6. Glad could help with pcmanfm, sorry couldnt get your video playback going.

    Just did some tests tonight: a bionic minimal install with only apt-get install mpv ffmpeg libmali-rk-midgard-t86x-r14p0-gbm
    does work. Also did a Big Buck run on my desktop with sbc-bench in monitor mode in another terminal, results are in pastebin here
    Stuff before *** is terminal playing video, I got bored at 1:38 and quit but no dropped frames. After *** is monitor results, CPU barely reaching 30% and no temp rise.

    1. With that CPU usage, it should certainly be running on the hardware decoder. That’s just odd you have all those errors that seem to imply the hardware failed to initialize like:


  7. I have to set up a web server on the ROCK64pro board so that when it runs , it creates a wifi network around it and the client mobile devices or tablets can connect to the SSID of the ROCK64 to access the web-resources/website present on the web-server.
    How to create a network SSID without the availability of internet connectivity.
    If 50, 60 people can connect to web-server simultaneously that will be awesome.

Leave a Reply

Your email address will not be published.