Last week, I tested Android 7.1 on NanoPC-T4 Rockchip RK3399 SBC, and this week, I’ve given a try at Android 8.1 (Beta) on Firefly-RK3399 Board. Since it’s still a beta version, I’m expecting some issues and we’ll have to see how it performs at this stage of development.
Firefly-RK3399 Kit Assembly
I had to do some assembly before starting the board. It took me some 30 minutes to complete, so I’ll quickly go through the steps. Beside the default kit, the company also sent me a fansink ($7.9) and an M.2 to SATA board + required cable ($16) which will be part of the assembly instructions.
The first step is to peel off the protective films on both sides of the acrylic case. I then fastened my own 2.5″ hard drive with four screws provided in the default kit.
I then installed the M.2 to dual SATA adapter board in the M.2 socket on the top of the board, inserted the small screw adapter, and fastened everything with the provided screws on the top and bottom.
The next step is to put the small spacers under the bottom acrylic plate, and screws the medium spacers on top. before placing the board on top.
The fansink wires need to be instead into the fan header with the black cable (GND) on the right, and we can also insert the u.FL to SMA antenna cables.
So instead I used my own short spacers to move up the top cover a little bit, and now everything looks nice and tidy.
First Boot and Firmware Upgrade
I made sure I connected something to most of the ports with a USB 3.0 expansion drive, MINIX NEO C Plus USB-C adapter, HDMI cable, Ethernet cable, USB mouse and keyboard, as well as the RF dongles for an air mouse and gamepad.
The board started as soon as connected the power supply to the mains, but it was pre-installed with Android 7.1 Nougat.
But we want to use the more recent Android 8.1 “Oreo” image instead. SO I went to the the download page for the Firefly-RK3399 board, and since the board was released in 2016 we have three different Android firmware version available.
I first download the file Firefly-RK3399_Android8.1.0_NNAPI_MP_Beta_180803.zip from Google Drive, which comes with one folder with AndroidTool v2.54 for Windows, and a rockdev folder.
I tried to update in Linux, first with Rkflashkit GUI program, but since it did not support automatically loading multiple files, I just found it just going with upgrade_tool command line utility would be easier. I type the many commands for each partition, but my board would be stuck in the bootloader. I then tried in Windows 7, but AndroidTool would keep on crashing as launch. Finally, T-chip was very helpful and provided a single image that can be flashed from Linux using upgrade_tool:
upgrade_tool uf Firefly-RK3399_Android8.1.0_NNAPI_MP_Beta_180817.img
Support Type:RK330C FW Ver:8.1.00 FW Time:2018-08-17 10:16:02
Loader ver:1.12 Loader Time:2018-07-20 09:43:03
Upgrade firmware ok.
All good we now have Android 8.1 “Nougat” running in our board.
Default Apps & Settings
If we look at the list of pre-installed apps, you’ll notice Google Play is missing, so I installed APKPure apk to easily install any app without having Google Play services.
At this stage I’d normally have a look at board’s specific settings, but there’s really anything the like and even Ethernet and HDMI output settings are missing. It’s not really a problem with Ethernet as long as you use DHCP, but HDMI output is set to 1080p60 on my board, and I could not find any option to change it in the current firmware.
RKMC, the fork of Kodi specific to Rockchip is not installed in the firmware. I’ve heard Kodi drop support for Rockchip, but I still install it Kodi 17.x with APKPure, and sure enough it just crashed…
I’ll just try another player a little later, let’s play some YouTube videos before that.
So I decided to play video in an media player app I had not used for a long while: MX Player. I started with some Linaro media + Elecard samples all played from the NTFS partition of my USB hard drive:
- H.264 codec / MP4 container (Big Buck Bunny) – 1080p – OK
- MPEG2 codec / MPG container – 1080p – OK
- MPEG4 codec, AVI container – 1080p – OK
- VC1 codec (WMV) – 1080p – OK
- WebM / VP8 – 1080p – OK
- H.265 codec / MPEG TS container – 1080p – OK
All codec could be handled properly, however some videos had no audio, but this could be easily solved by switching to S/W audio decode in the menu. Of course, there’s no automatic frame rate switching and output was fixed to 1080p60.
Most 4K videos could play just fine however HDMI output was 1080p60 since there’s no menu to change video output in the current Android firmware, and MX Player does not do this automatically:
- HD.Club-4K-Chimei-inn-60mbps.mp4 (H.264, 30 fps) – OK
- sintel-2010-4k.mkv (H.264, 24 fps, 4096×1744) – OK
- Beauty_3840x2160_120fps_420_8bit_HEVC_MP4.mp4 (H.265) – OK
- BT.2020.20140602.ts (Rec.2020 compliant video; 36 Mbps; 59.97 Hz) – OK
- big_buck_bunny_4k_H264_30fps.mp4 – OK
- Fifa_WorldCup2014_Uruguay-Colombia_4K-x265.mp4 (4K, H.265, 60 fps) – OK
- Samsung_UHD_Dubai_10-bit_HEVC_51.4Mbps.ts (10-bit HEVC / MPEG-4 AAC) – OK
- 暗流涌动-4K.mp4 (10-bit H.264; 120 Mbps) – 3 to 4 fps using software decode, although RK3399 VPU supports 10-bit H.264 (See results in NanoPC-T4 Video Playback review)
- tara-no9-vp9.webm (4K VP9 YouTube video @ 60 fps, Vorbis audio) – OK
- The.Curvature.of.Earth.4K.60FPS-YT-UceRgEyfSsc.VP9.3840×2160.OPUS.160K.webm (4K VP9 @ 60 fps + opus audio) – OK, with the exception of some scenes not being 100% smooth, but this could be due to a problem with the video itself since it happens on many other TV boxes.
So putting 10-bit H.264 aside, all main codec are supported, so there’s just a bit more integration work to do with RKMC/Kodi, or implementing HDMI output selection to improve the status.
Contrary to Android 7.1 in NanoPC-T4 (as of mid August), Firefly-RK3399 Android 8.1 comes with Widewine Level L3 DRM by default.
Firefly-RK3399 System Info & Benchmarks
Before running some benchmark, I launched DevCheck to check for system info.
RK3399 processor with six cores from 2 clusters are properly detected with Cortex A53 cores clocked between 408 MHz and 1416 MHz, and the Cortex A72 cores between 408 and 1800 Mhz. My board comes with 2GB RAM of which 1.9 GB are available to Android in total, and the GPU is properly detected as an Arm Mali-T860(MP) GPU.
Just like in NanoPC-T4, DevCheck app found three temperature sensors for the GPU and SoC, plus the dummy “test_battery” sensor. Temperature stays cool at all times with 38 to 40°C being common through most of testing. An IR thermometer reports around 35°C on the fansink.
More than the switch from Android 7.1 to Android 8.0 it appears the fansink really make a big difference in benchmarks, and as we’ll see later on higher loads.
For example, Firelfy-RK3399 scored 99,041 points in Antutu 7 which compares to just 70,657 points with NanoPC-T4 with a simple heatsink. Percentage-wise it’s massive gain of 40%.
I then switched to 3D graphics testing with 3D mark, and specifically Ice Storm Extreme.
It turns out than combining RK3399 with fan makes it “too powerful for this test” and Firefly-RK3399 simply maxed out the benchmark. It’s only the second time it happens in all Android devices I reviewed with the other exception being Mediatek Helio X20 powered Vernee Apollo Lite smartphone.
So I switched to Sling Shot Extreme as recommended, and just like in NanoPC-T4 (and Android 7.1), Vulkan drivers are not available on RK3399, so the test was run with OpenGL ES 3.1 instead.
The score (819 points) is nearly 45% higher than the one (566 points) obtained on NanoPC-T4 board. At this point, I should probably point out I stay in a relatively warm room with an ambient temperature of around 28°C, and if you stay in cooler room the performance difference is likely to be lower between an actively cooled solution like I use in Firefly-RK3399, and the passive cooling alternative such as the default (thin) heatsink found on NanoPC-T4.
Once I complete the review, I removed the fansink, and instead used the same heatsink I fitted to AIO-3399J board and that is similar to the one fitted on NanoPC-T4.
Below are the result from A1 SD bench app.
RAM speed is much slower than on NanoPC-T4 because the latter relies on DDR4 and achieved 7486.75 MB/s instead of just 4525.64 MB/s with the DDR3 memory found on Firefly-RK3399 board.
Network Performance – Gigabit Ethernet and WiFi AC
iPerf does not show using the search function in APKPure app, but I could install it after a web search since using APKPure iperf page.
Gigabit Ethernet goes first:
- iperf full duplex (both direction at the same time)
[ 6] local 192.168.1.6 port 40042 connected with 192.168.1.25 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-60.0 sec 5.45 GBytes 780 Mbits/sec
[ 6] 0.0-60.0 sec 1.98 GBytes 283 Mbits/sec
[ 4] local 192.168.1.6 port 5001 connected with 192.168.1.25 port 35584
Just like with NanoPC-T4 there’s an asymmetry with full duplex transfer, but when testing in one direction only results are much better:
- Upload only:
[ 4] local 192.168.1.6 port 5001 connected with 192.168.1.25 port 35584
[ 4] 0.0-60.0 sec 6.06 GBytes 868 Mbits/sec
- Download only
[ 3] local 192.168.1.6 port 40084 connected with 192.168.1.25 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.0 sec 6.55 GBytes 937 Mbits/sec
The results are similar to what I got on NanoPC-T4, but in some case a little lower. It could just normal variation during testing.
Time to disconnect Ethernet, connect the board to my AC router,
and repeat the upload and download tests:
- Upload only
TCP window size: 85.3 KByte (default)
[ 4] local 192.168.1.6 port 5001 connected with 192.168.1.40 port 50384
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-60.0 sec 1.69 GBytes 242 Mbits/sec
- Download only
Client connecting to 192.168.1.40, TCP port 5001
TCP window size: 85.0 KByte (default)
[ 3] local 192.168.1.6 port 42176 connected with 192.168.1.40 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.0 sec 1.80 GBytes 258 Mbits/sec
Performance is very good and similar to the best devices I ever tested, unlike the results I got on NanoPC-T4 which were rather underwhelming.
No problem with Candy Crush Saga using either the USB mouse or MINIX NEO A2 Lie air mouse. Just like NanoPC-T4, Beach Buggy Racing was super smooth even with maximum resolution settings and I could play it using Tronsmart Mars G01 2.4GHz RF gamepad.
The main difference was with Riptide GP2, as I had a framerate likely close to 25 to 40 fps with maximum resolution which, even though not perfect, was much enjoyable than the 15 to 25 fps on NanoPC-T4. I played the latter game for 20 minutes and performance was constant throughout. The difference can easily be explained with the running temperature of the board. I measured 36°C with an IR thermometer, and DevCheck reported only 42°C and 46°C for the GPU and SoC respectively right after exiting the game.
By comparison DevCheck reported 81°C and 80°C on NanoPC-T4 after the same test. Just to be clear there’s probably no problem with NanoPC-T4 board per se, but if you want to extract maximum performance out of the board, a single heatsink may not be sufficient, and using a fansink makes a huge difference.
Bluetooth audio may need some work. I could pair X1T bluetooth earbuds, but HDMI audio worked at the same time, and I had frequent audio cuts in the headset, until the connected drop.It happens while watching a video with MX Player.
However, I could transfer a few photos from Xiaomi Mi A1 smartphone to the board without any issues.
I also measured power consumption with various accessories and power states. The first three are with no external drives, only USB mouse and keyboard.
- Power off – 0.1 Watt
- Standby – 8.1 to 9.4 Watts (fan on)
- Idle – 9.0 ~ 10.4 Watts (fan on)
- Power off + USB HDD – 0.1 Watt
- Power off + USB HDD + SATA HDD – 4.3 Watts
- Standby + USB HDD + SATA HDD + Fan – 15.2 to 16.3 Watts (Note fan is turning and USB HDD light on)
- Idle + USB HDD + SATA HDD + Fan – 16.1 ~ 18.0 Watts
When doing a power off request, I could see the power draw jump to over 25 Watts. A side effect of using a cooling fan is the higher power consumption. Not the fan turns all the doing even in standby mode. The only exception is power off mode. The SATA drive still consumes about 4 Watts in power off, this should not happen…
I was expecting to compare Android 7.1 to Android 8.1 on Rockchip RK3399, and I could do that when it comes to features, but when it comes to performance I ended comparing passive and active cooling. I was just expecting a few percent improvement in performance with a fan, but it turns out Firefly-RK3399 was 40 to 45% faster in several benchmarks, and that’s definitely not only because of the upgrade to Android 8.1
Apart from that, Android 8.1 (Beta) firmware has a good & stable base, but it’s also clearly beta software with issues with external storage due a lack of supported file systems at least, some settings that’s you take for granted (Ethernet and HDMI output) are missing, I had issues with Bluetooth audio, and the company also not provided any workable Kodi/RKMC solution yet. Many issues will likely be fixed in weeks or months ahead with new Android 8.1 firmware release. In this meantime, and depending on your project, sticking to Android 7.1 may be preferable.
Firefly-RK3399 board with 2GB RAM can be purchased on Firefly shop for $149 plus shipping. You’ll also find the 4GB/16GB version for $209, and a 4GB/128GB “MAX” version for $259 if you really need a lot of storage. The board and kits are also sold on Amazon.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
20 Replies to “Review of Firefly-RK3399 Board with Android 8.1 Firmware”
Does it support Treble?
Can you run an AOSP GSI on it? Perhaps even Android Pie?
About Treble support possibly:
Seeing how Android 8.1 works, I doubt Android Pie would work in any usable manner.
Well, compare that to a Mini-ITX board of the same price, and you’ll notice that you got screwed over.
We all like small, cheap SBC’s, but in this price region I’ll stay with PC hardware.
An Intel J4205 board + RAM costs about the same, but will run Windows, Linux, Android, BSD, whatever, has 4 SATA, 1-2 Gigabit Ethernet, USB3, is passively cooled, plays 4k video, etc.
The bigger ARM boards are just too expensive and too limited as of now. This may change in the future, though. (I hope it does).
> The bigger ARM boards are just too expensive and too limited as of now
The Firefly-RK3399 is just a pretty bad example. It might be one of the earliest RK3399 dev boards but is clearly both overpriced and inferior wrt technical details (only DDR3 memory, weird PCIe setup). The Renegade Elite developed together with Libre Computer is a much better choice and I really hope it will replace the Firefly-RK3399 entirely.
We get RK3399 boards starting at 60 bucks already (Pine and LibreELEC offers) and at this price point IMO they’re interesting: https://forum.openmediavault.org/index.php/Thread/23508
But I agree: for most use cases such an ARM board for 150 or even 200 bucks is a weird choice given the x86 alternatives.
You’re both underplaying the issue of support for low-power embedded and consumer Intel products. The old Atoms all had their drivers go undeveloped and practically abandoned. The firmwares were similarly made full of bugs and were never fixed. For many, microcode wasn’t released to deal with Spectre and Meltdown. Microsoft similarly hasn’t given much attention to bug reports dealing with those and Intel hasn’t been too eager to get Linux to run well on them either…
Fact of the matter is, this firefly board is seeing a new OS port years after release, drivers are still being developed and optimized and the RK3399 is/will have proper mainline support. That’s nothing to scoff at when Windows won’t support 5 years old Intel hardware and most of Intel’s low-power boards products have terrible linux support and barely passable Windows support.
You’re pointing out the J4205 itx boards. Well, how about you actually look up year old searched using Google’s Time feature? There bug reports on top of bug reports and bios releases hitting the two digits filled with issues. Some couldn’t do audio over HDMI… Others would halt every other day… Others would corrupt data… Some had mysterious performance issues… It seems things cooled off the last couple of month. But whose to say a regression won’t come along and the board OEM or Intel won’t bother fixing it? At least with the firefly you’re seeing a token of ongoing support.
Personally, I’d rather run a home NAS hooked to a TV on a RK3399 than any J4205 out there. This firefly board might be a bit on the pricier side. But you ARE getting your money’s worth via software support at least. I can’t say the same for Intel’s products.
Nice write up คุณCNX, I particularly enjoyed the coverage of the temperature variations of the different cooling strategies and the differences in resulting outputs. I am interested in the 3399 board and I live in similar climate to you. Did the fan on your setup make much noise?
> Did the fan on your setup make much noise?
I also tested with the NanoPC-T4 and one obvious observation is that their included heatsink is insufficient since throttling occurs under constant load. But there’s no need for an annoying fansink (usually the smaller the fan the more annoying the sound) since huge heatsinks with appropriate fin spacing work quite well, see the great heatsink for RK3399 equipped RockPro64: https://forum.armbian.com/topic/7310-rockpro64/
You can also use a large, slow rotating and absilutely silent fan to blow laterally over an insufficient heatsink. Funnily only little airflow is needed to keep the RK3399 on NanoPC-T4 ‘cool’ (below 80°C throttling treshold) if the airflow is directed appropriately (blowing directly over the heatsink’s surface and not somewhere around)
Yes, tkaiser I have been following your performance testing of the 3399 boards of there on the armbian forums which is what attracted me to these boards in the first place. My house has ambient temperatures of at least 30c for eight months of the year so running cool is important if the power of these things is to be utilised. If they can be made to run flat out with just the appropriate heatsink so much the better as these boards seem to use quite a bit of energy.
> as these boards seem to use quite a bit of energy
Sorry, but when testing with other RK3399 boards the consumption numbers do not look that insane as with the above Firefly-RK3399 setup.
On the (unfortunately canceled) ODROID-N1 I got 3.2W idle using same setup as Jean-Luc’s (also with an active ASM1061 PCIe SATA controller and fansink). When running heavy CPU loads (cpuburn or openssl encryption on all 6 CPU cores in parallel) it’s just 10W more (fansink included): https://forum.armbian.com/topic/6496-odroid-n1-not-a-review-yet/?do=findComment&comment=49443
When I measured NanoPC-T4 the first time I got 4W in idle (this board had no active PCIe SATA adapter) but this time using their 12V PSU (I have no 12V power measurement equipment here so have to measure at the wall with PSU included which makes these numbers somewhat useless since efficiency of the PSU influences consumption numbers)
Consumption increases and generated heat between different RK3399 devices only depend on PCB components (inefficient DC-DC circuitry for example) and settings. Poor DVFS settings might easily result in much higher consumption leading to higher temperatures leading to earlier throttling compared to fine-tuned ones. This process is time-intensive so most board makers skip this and use SoC vendor’s (very conservative) defaults.
Anyway: With a huge heatsink and maybe a little bit of airflow between the heatsink fins any RK3399 should be able to be passively cooled. Rock64Pro’s huge heatsink or Renegade Elite, NanoPi M4 and NEO4 all show how easy it’s to achieve this (the latter 3 by putting the SoC on the right side of the PCB and using parts of the metal enclosure as heatsink)
The answer is that I don’t know because my tower PC easily covers any noise from other sources.
So I refitted the fansink, and turned off the PC. The fan is not as noisy as my fridge, but I can still hear it one meter away.
The Standby Consumption looks like a nightmare: >8Watt
Since idle consumption is a nightmare too I would immediately take a look at the PSU and not the board (assuming consumption numbers include the PSU)
The fan is probably responsible for a lot of the power consumption. If Firefly Team would just disable the fan in standby mode, power consumption would drop a lot. The PSU is also included in the measurement since I use a kill-a-watt thing.
I can tell the PSU can make a huge difference. I tested it myself some time ago with a cubieboard with a ssd attached. The first readings with a sony psp PSU was 6W. Then I tried some others and the lowest value I measured was 2.1W with a no-brand psu.
> The fan is probably responsible for a lot of the power consumption
Would be surprising. Hardkernel folks used a PWM controlled fansink on their N1. With full load (cpuburn/cpuminer) when the fan was running with maximum speed I measured 12.1W compared to 3.2W in idle (with the fan stopped of course). That’s a difference of less than 9W fan included.
BTW: M.2 specs define 3.3V max on the connector while Firefly’s M.2 card you tested obviously must be fed with a voltage above since providing 2 times SATA power (at least 4.75V must be available to the drives). I still wonder how they do this:
* violating the M.2 specs and feeding +5V to some pins on the connector?
* using a step-up converter on the M.2 card? Two connected 2.5″ HDD might result in up to 2A peak consumption at 5V which translates to above 3A at 3.3V. Scary, especially since IIRC max bus power with M.2 is 7W
Would be interesting to check consumption again without the card being inserted (two DC-DC conversions less: 12V PSU to 3.3V M.2 –> 3.3V to 5V SATA power)
Just removed the M.2 card… But my power meter has decided to “sleep” showing 0.0W all the time. It happens sometimes, I just need to wait for it to wake up… I don’t understand why this would happen, but if somebody has a tip to make it work more than welcome
Finally… it’s working again. Numbers are without any SATA/USB drives
* Idle without M.2 card + fansink: 8.0 to 8.4 Watts
* Standby without M.2 card + fansink: 7.2 to 8.1 Watts
* Standby without M.2 card + fan cable disconnected:6.0 to 6.4 Watts.
* Same as above but removing USB type C cable to connect to USB hub connected to PC: 2.0W to 6.4W! When 6.4W occurs a blue LED lits up on the board.
So the M.2 card appears to play a role (maybe less than a one watt), the fan too (around 1 Watt), but the really issue is that I left the USB cable connected… If I remove it the behaviour is a bit weird. Stays at 2.0~2.4 Watts most of the time, but every 3 to 5 seconds sometimes longer that blue LED turns on, and power consumption just to 6.4W for a short time. It’s clearly not because of that LED, but the board is doing something in the background.
This is absolutely a perfect scenario for these: https://www.amazon.com/Silverstone-Lateral-Low-Profile-Connectors-CP11/dp/B00HDEBGSQ
I had to use them in a mITX NAS build that left almost no room at the back end of the board where the SATA ports face backward into the PSU. Unfortunately they don’t make a left hand version so it was a pain to jam even these into place.
Can this firmware works on the RK3399 Videostrong board?
do you have any idea when Android 9.0 SDK for RK3399 will released ?