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.

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 documentation: one in Firefly Wiki, and the  other on 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 (now down, Sep. 2021), 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.

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 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.


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”.

You can check out the full first boot log for reference.

We can see it took 220 seconds (3m 20s) to boot with my 16GB card, but subsequent boots are 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 allegedly sent me the 2GB version of the board – that’s what the sticker says – 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:

Based on timing provided by dmesg, the kernel boots up in less than 12 seconds to the point where we get network connectivity, and drive partitions are mounted right at the 15 seconds, and we can get from power desktop to using the desktop in less than 20 seconds. But bad for a $35 board.

Some more details about OS, memory and storage:

This time uas module is loaded as I connected a USB hard drive, and GPIO are stil supported just like in Debian:

Before going further, let me throw iozone results for the eMMC flash module as somebody may ask:

Sequential read/write speed are not that impressive at 45 MB/s and 40 MB/s, but random I/Os looks pretty good, and that’s the important thing for this type of appication.

es2gears and glmark2-es2 are not installed in Ubuntu 18.04, but this time I could indeed install both with:

Both worked, but es2gears was limited to around 23 fps, and the score for glmark2-es2 was also quite lower:

Video Playback in ROC-RK3328-CC Board

But let’s go back to the test I wanted to do in Debian before the micro SD problem came back: video playback. ffmpeg is already installed in Ubuntu 18.04 so we can try to play a 1080p H.264 video straightaway:

But all I got was a full screen transparent window, and some error / warning messages such as:

Failed to initialize a hardware accelerated renderer: Couldn’t find matching renderer driver

No accelerated colorspace conversion found from yuv420 to rgba.

ffplay Ubuntu 18.04 rk3328

So I just killed the process. That’s the full output of ffplay:

So I went to check out the forums, but there’s not that much activity on Firefly forums, and instead I found some info on LoveRpi forums dated from March/April:

Android and LibreELEC will decode properly. Ubuntu does not feature hardware decoding yet. Every OS has a different decoding pipeline that needs to be implemented. It’s like Windows and Linux. Just because it works on Windows does not mean it works on Linux and vice versa.

It looks like hardware video decoding it still not supported in Ubuntu or Debian using X11, so if you want to play videos on ROC-RK3328 board, your options are Android and LibreELEC, so it won’t work in Linux “Desktop” distributions just yet. [Update: It’s possible to play 1080p H.264 videos with, see comments section for details]

Conclusion & Lesson Learned

Kernel panic can be due to a software bug, but usually for stable firmware, I always think about unsufficient power supply, but in this case, it appears slow micro SD card caused troubles wih the MMC driver and eventually a kernel panic. So you should either get an eMMC flash module like I did in the second part of the review, or a fast and reliable micro SD card such as Samsung 32GB EVO Plus or some class A1 / A2 micro SD cards which can be found on Amazon for around $12 and up.

Firefly and Libre Computer recommend a 5V/2A power supply for ROC-RK3328-CC “Renegade” board, and it works well, as long as you don’t plug a USB 3.0 drive into the USB 3.0 drive, in that case a 5V/2.5A or greater is needed, at least that’s my experience in this review.

Once you get fast storage and a decent power supply everything appears to work fairly well with GPIO supported, and 3D graphics acceleration working in Ubuntu and Debian, although performance looks a bit lower than accepted. However, video hardware decoding is not supported at all in those two operating systems, at least for now, so for media playback, you’d have to go  with Android, or Linux based LibreELEC distribution running Kodi only. Since the board comes with DDR4 memory it may perform better than competing solution relying on DRR3 for 4K videos with HDR, but this would be tested, so maybe in another post if time permits.

ROC-RK3328-CC board can be purchased from $35 on Amazon, Firefly Shop, or LoveRpi store.

Share this:
FacebookTwitterHacker NewsSlashdotRedditLinkedInPinterestFlipboardMeWeLineEmailShare

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK 5 ITX RK3588 mini-ITX motherboard

22 Replies to “ROC-RK3328-CC Board Review, or the Case for Fast Storage and Adequate Power Supply”

      1. micro-USB just isn’t able to carry that kind of current without an excessive voltage drop. Boards needing >1A of current really need to use a different connector or include an integrated buck/boost SMPS.

        My recommendation is to use a standard 5.5×2.5mm (or 2.1mm if you’re odd) jack and put a buck SMPS on it that’s capable of taking in >20V. That way you can use anything as a source of power that’s >5V–2S Li, 12V, 19V laptop supply, etc.

  1. The Firefly kernel and images are still a little iffy at this point in terms of SD card phase tuning and clock rates. It is the only other board besides Le Potato to support UHS. The issue you mentioned doesn’t pop up on other boards because ROCK64 doesn’t support UHS.
    3D and video decode is supported across the board now on Firefly images. For 3D, try glmark-es-drm. X11 is crap for ARM. For H.264, try on X11. Upstream kernel work on V4L2 is still WIP so Rockchip mpp the reliable way to get video working properly.
    The power supply you are using should be sufficient for USB hard drives. The issue is most likely somewhere else. Do you get any USB disconnect messages?

    1. 3D worked for me, but I’ve just tried glmark2-es2-drm, and it also workss. Similar test but fully screen, and the glmark2 score is 12. works for 1080p60 (Big buck bunny), the 4K sample I tried (H.264 30 fps) only played in “slideshow” mode.
      Some notes to self: make sure to copy the video to /home/firefly/h264.mp4, or modify the script in /usr/local/bin/ It’s based on gst-launch-1.0 (gstreamer)
      There’s also for H.264 encoding.

    2. With regards to the hard drive, I tried again with Ubuntu 18.04 on the eMMC flash, and there was no problem this time. I also ran iozone on one partition to stress test it a bit, and no disconnection or anything.

      I did have some related error messages at boot time however. I don’t know if those are normal:

      1. I repeated the iozone test with a large file, but it did not end (hung):

        When I check the kernel log:

        Can those message also happen for I/O on hard drives? Or does that means the eMMC flash module may have the same problem?

        1. FYR. I wanted to check iotop, but some features are not enabled in the kernel:

          1. The kernel flags they use are not well configured. The SDK is crap. I’ll shoot you a mainline image when I am done with them.

        2. Those error messages can be safely ignored: dwmmc_rockchip ff520000.dwmmc: Unexpected interrupt latency

      2. Getting this ‘ERROR Transfer event for disabled endpoint or incorrect stream ring’ message once when the kernel accesses an USB3 superspeed disk the first time is ‘normal’ with RK3328 and RK’s 4.4 kernel.

        If you get more of these messages in operation there’s something wrong. See here with ODROID-XU4 and an underpowered 2.5″ disk: (as with your situation the random IO test needing more juice triggered the problem).

        You still power the board via Micro USB?

          1. Just realized you use a Seagate USB3 disk (‘idVendor=0bc2, idProduct=2312’). Those things all ship with a somewhat broken firmware causing UAS issues with Linux. In Armbian/OMV we therefore blacklist them completely. In upstream Linux with 4.14 a less invasive way of dealing with them (applying a quirk then causing issues with SMART queries) has been included. This fix got backported by Rockchip to their 4.4 kernel but I’ve no idea whether Firefly uses the ‘fix’ or not.

  2. well micro usb power & sd card errors really are recurring themes with those dev boards, if only a dc plug had been implemented on the rpi it would have trickle solved so many problems..

    besides that, are there any noticeable differences (improvements/features) from the rock64 board ?

    On a side note, i’ve been using my z28 pro tv box (rk3328 / gbe) with armbian “no support” image for a week, in a headless server context, and i must say it is a massive improvement over my amlogic s905.

    I’m still tempted to get a H6 board as well and see how it performs but so far that rk3328 soc seems to be a favorite choice for any cheap high bandwidth nas/server thing.

    1. The differences to Rock64 as follows:

      – slightly faster memory (DDR4 vs. DDR3 — check page 4 of the thread I linked to for some examples)
      – once SD card issues are resolved much better SD card storage performance compared to Rock64 if crappy SD cards are avoided and performant ones are used (SanDisk Extreme (Plus) A1, Samsung Pro or something like that)
      – Unfortunatenly Micro USB for DC-IN so novice users run in the usual undervoltage sh*t show

  3. thx tkaiser for the summary.

    i went out and found a recent video from a libre computer guy who discusses their various boards, shenzen fun facts and other stuff.

    The interviewer is a little bit all over the place (not too technical hardware wise) but you get some interesting insights on the production of the boards, including their incredibly low prices (sales are done at a loss), check it out :

    1. I don’t know the exact meaning but the -CC, -AC or -PC suffixes describe the form factor. -CC is like Raspberry Pi, -AC is smaller and -PC is the form factor they use for all the boards with a high(er) power budget. Renegade Elite based on RK3399 being the first and Amlogic S922 and S905D2/X2 following.

      1. “the -CC, -AC or -PC suffixes describe the form factor. ”

        Ah … then … CC = CreditCard sized?

Leave a Reply

Your email address will not be published. Required fields are marked *

Khadas VIM4 SBC
Khadas VIM4 SBC