ROC-RK3328-CC Board Review, or the Case for Fast Storage and Adequate Power Supply

Firefly team from T-chip company has send me some of their Rockchip development boards, and we’ve already checked the provided boards and accessories, so today I’ll report my experience with one of the board: ROC-RK3328-CC also known as Renegade.

I won’t test it with Android, since I have already reviewed RK3328 Android TV boxes such as Zidoo X7, and I’ve been told the team is hard at work with Android 8.1 SDK, so an Oreo image should be released in a few weeks/months.

So I had initially planned to report my experience with one of the Linux images,  then show how to install mainline Linux (currently 4.17) to the board, and reports what works. However, I encountered many issues, although likely not directly related to the board or its software support, so instead I’ll write about my experience getting started with the board, and list all the issues I had so that people can avoid those – or at least easily find the root cause of their issues – with ROC-RK3328-CC and potentially other Arm Linux boards.

Hardware preparations & requirements

The board does not ship with a heatsink by default, but you should certainly add one to your order to avoid throttling and better & stable performance.

Installing the heatsink is very easy, since you just need to push it until the two bits on the corner clip with the board. Just remember to peel off the blue protective film.ROC-RK3328-CC Heatsink Mount

If you’ve ever used a Raspberry Pi board, the required accessories will pretty much be the same, and the company recommends a 5V/2A USB power supply, as well as micro SD card with 4GB or greater capacity, and you may also need a micro SD card reader to flash the firmware, if your host computer does not already have one. A serial debug board may be useful to debug issues.

Micro-SD-Card-Reader-Power-Supply-Serial-Debug
Click to Enlarge

In case you wonder where I got the 5V/2A power supply above with a switch, that’s the one I got with Libre Computer AML-S905X-CC “Le Potato” board.

You’ll probably want to add other optional cables and accessories like Ethernet, HDMI cable and monitor/TV, and USB keyboard & mouse.

Getting Started with Linux on ROC-RK3328-CC

The board is supported by two companies Firefly Team and Libre Computer, and that means we end up with two sets of documentations: one in Firefly Wiki, and the  other on Readthedocs.io. I’ve had a quick look at both, and they appear to be in sync, but if something is not clear in one location, it may pay off to check the other link just in case.

That also means we have two separate support forums: Firefly BBS and LoveRpi forums, and obviously the content is different, so you may want to browse both in case you are looking for a solution.

The board was sent to me by T-chip  / Firefly team so I’ll rely on their documentation and firmware images for this guide / review.

Time to go to the download page to find a Linux image for the board, and there are three Linux firmware images listed: Debian, LibreELEC, and Ubuntu. You’ll notice the dates on the website are a little old (January and April), but if you click you’ll see the actual binary images are more recent May/June.

ROC-RK3328-CC-Ubuntu-Firmware
Click to Enlarge

I decided to go with the Ubuntu 18.04 LXDE image, and first selected the “official server”, but since it was slow 25 KB/s, I went with the Mediafire link with was much faster (550 KB/s).Firmware Download Official / MediaFireThe official download server may work well in China, but outside of China I’d recommend the Google Drive or MediaFire links instead.

Now we can install Etcher and flash the image (ROC-RK3328-CC-ubuntu18.04-LXDE_20180605.img.xz) to a micro SD card. I used a cheap Kingmax 32GB micro SD card that I had used for other reviews before.

ROC-RK3328-CC Review - Board ConnectionI inserted the micro SD card into the board, and connected everything else, including a USB 3.0 hard drive, but not the USB to serial board. I had already setup the serial connection on ROCK64 board before, and it will be similar for ROC-RK3328-CC, except the header pinout is different.

I pressed the power switch on the power adapter cord, and within a few seconds I could see the login prompt on my HDMI TV, and could even login through SSH with firefly/firefly credential:

And Then The Problems Started…

But then I noticed the LXDE desktop environment would not show up… and shortly after I noticed interesting messages on the TV…

ROC-RK3328-CC Kernel Panic

Kernel panic at boot time. I disconnected the hard drive in case it could be related to power issues, and tried again and it still failed. Hmmm. Maybe that image is not stable yet, so I tried with with the Ubuntu 16.04 image (ROC-RK3328-CC_Ubuntu16.04_Arch64_20180514.img.xz), and the desktop environment would not show up either, but after a while I noticed a different kind of message.

dwmmc_rockchip unexpected interrupt latency

Lots of “dwmmc_rockchip ff500000.dwmmc: Unexpected interrupt latency” messages. What are those? Some other people also had this issue, and dwmmc_rockchip is Rockchip MMC driver which handles flash storage. A little later the kernel panic kicked in just like with the Ubuntu 18.04 image.

So after all, maybe my micro SD card is not good anymore, although it passed Etcher verification process. So I switched to another micro SD card (ADATA 16GB), but sadly the problem occurred yet again. Can I have two bad micro SD cards? Possible, but unlikely. I though maybe there’s some driver issue in the Ubuntu image, and I’d try with the Debian image.

Debian 9 in ROC-RK3328-CC Board

So I download and flash ROC-RK3328-CC_Debian9-Arch64_20180525.img.xz, and while booting I got some other messages:

Debian Resize Rootfs Partition

During the first boot, the firmware will automatically resize the rootfs partition to make use of all storage available on the board. That’s a good thing, but the first boot will take a while, and maybe many I/Os during Ubuntu boot revealed some performance in my micro SD card with some code potentially timing out, and leading to the errors.

ROC-RK3328-CC-Debian

But nevertheless, I finally could get to LXDE desktop environment. I started on Saturday afternoon, and managed to boot on Sunday morning. It took me around 5-6 hours of my time to achieve this “feat”.

Here’s the first boot log for reference:

We can see it took 220 seconds (3m 20s) to boot with my 16GB card, but subsequent boot arre much faster, well under a minute.

Some more info:


The rootfs was indeed properly resized, and I’ve got 13GB storage free. However, while the company alledgedly sent me the 2GB version of the board – that’s what the sticker say – only 1GB RAM is shown in Linux. So I went back to check the resolution photos of ROC-RK3328-CC board, and found out it had two Samsung K4A4G165WE-BCRC DDR4 chip with 4Gb capacity each, so that’s 1GB RAM in total. So just a sticker issue, not a technical issue.

The processor details are exactly the same as in ROCK64 board, which should be expected. Now let’s check for module:


None are loaded, but for example the GPIO drivers is there, just built into the kernel, and not as a module. GPIO should work, but I have not tested them, as the produced will be the same as for GPIO’s on ROCK64 board just with a different pin layout.

3D Acceleration with OpenGL ES

At this stage, I wanted to test 3D acceleration, by installing the packages required for es2gears and glmark2-es2:


Hmm. it failed, so I ran:


and the system tried to install linux-libc-dev, but could not complete as the board hung. After restarting the board, I had a facepalm moment when I found out the tools were already pre-installed.

So I could run es2_info:


es2_info will not end graciously, but it was also the case for es2_info on ROCK64, but at least it shows Mali-450 MP drivers are installed, and OpenGL ES enabled.

ROC-RK3328-CC es2gearses2gears worked, but at just about 30 fps, which may be because video output was set to 1080p30 (TBC). Anyway, ROCK64 was not much better at around 35 fps with the exact same 1.4 Linux-r7p00-00rel0 Mali driver.

ROC-RK3328-CC glmark2-es2
Click to Enlarge

glmark2-es2 works too, but again with a rather low score:


The score (21) is actually lower than the one on ROCK64 (26) but still in the same ballpark. glmark2-es2 program installed in  ROC-RK3328-CC is more recent (2017 vs 2014), and can passed a few more tests, e.g. refract failed on ROCK64, but passed in our Renegade board.

Problems are back with HDD and Micro SD Card

Having just shown 3D graphics acceleration on the board, I wanted to try to play some videos now, so I connected my USB 3.0 hard drive where I store test videos, and it was properly detected:


However, none of the partition were detected:


I could see my power meter show around 10 Watts, so that 5V/2A power supply may not be powerful enough, and I could not find any 5V/2.5A USB power adapter in my house. So I reverted to connect my USB hard drive to one of the USB 2.0 port of the board, while connecting the keyboard to the USB 3.0 port, and… success!:


I’m pretty sure using a 5V/2.5A power supply or greater would have fixed this issue. I have many such power adapter, just none with a micro USB plug, so I went to eBay and purchased a 5.5/2.1mm to micro USB adapter for one $1, so next time I won’t have this issue with (micro) USB powered boards.

All four partitions (NTFS, EXT-4, exFAT, and BTRFS) could be mounted:


I intended to play a 1080p H.264 video at this stage, but ffmpeg, nor any other video player like vlc or smplayer, were installed.

So I tried to install ffmpeg:


But it failed, and even switched my rootfs to read-only. Looking at the kernel, it does not look like a low level error, but a file system error:


Using remount,rw option to remount the drive as read/write would not work, but after rebooting I could get back to read/write mode. So I tried again, and same error. I repeated this a third and still the same problem. After all it may be some hardware issue, and the file in /tmp is downloaded/extracted each time.

eMMC flash Module to the Rescue, and Ubuntu 18.04 on ROC-RK3328-CC Board

Then I remembered I got an eMMC flash module with Libre Computer’s Le Potato board, and thought it might be good idea to give it a try on ROC-RK3328-CC “Renegade” board, even using the Ubuntu image to see if the problems would just magically go away. I also used an eMMC flash module with Rock64 board, but since those modules are compatible with Hardkernel’s eMMC flash module, I could flash it like micro SD cards  using a micro SD card to eMMC flash adapter. Libre Computer’s eMMC flash modules have a different layout to deliver more current, and I don’t have a adapter, so the flashing method is differrent. First let’s install the module on the board, and take out the micro SD card.

ROC-RK3328-CC Renegade eMMC Flash Module

You’ll also need a male to male USB type A cable for flashing the firmware to the board. If you don’t have one, you should definitely get one since those are often required for reflashing firmware in TV boxes and/or development boards with eMMC flash.

If you want to flash an SD card image (aka raw firmware), you’ll need rkdeveloptool command line tool, and I explain the fully procedure in more details in the post entitled Flashing Firmware to Rockchip Devices in Linux with rkdeveloptool Open Source Utility. Basically I had to run five commands to flash Ubuntu 18.04 to the eMMC flash module:


The first command extract the raw image file, the second downloads the bootloader, the third and four flash the bootloader and raw image respectively, and the last one simply reboots the board.

And lo and behold within a short time, I could access the Ubuntu desktop.

Ubuntu 18.04 ROC-RK3328-CC
Click to Enlarge

Everything appears to work, and the only issue was the lack of support for exFAT file system, so one of the partitions on my hard drive could not be mounted. Anyway, that means the system may have trouble running in a stable fashion with slow storage. I’ve covered potential performance issues about micro SD cards for development board, but it’s the first time I actually experienced stability issues, beside programs appearing to freeze due to poor random I/O performance,  with kernel panic and so on.  So maybe there’s a driver issue too. But based on my experience, with faster storage like the eMMC flash module I used in the review, and likely better micro SD card, many problems seem to go away.

Here’s the boot log (not the fist one) for reference: