I received Khadas VIM3 Amlogic A311D SBC in early July and started testing it with Android running some benchmarks and playing games last month.
I was impressed by graphics performance and overall benchmark results in Android, especially the results I got with a heatsink matched Khadas own results with heatsink + fan. So I installed the latest Ubuntu 18.04 available at the time (July 19) in order to repeat benchmarks in Linux and see how it goes.
System info in Ubuntu 18.04:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
khadas@Khadas:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS" khadas@Khadas:~$ uname -a Linux Khadas 4.9.179 #73 SMP PREEMPT Fri Jul 19 09:56:46 CST 2019 aarch64 aarch64 aarch64 GNU/Linux khadas@Khadas:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 305M 0 305M 0% /dev tmpfs 187M 9.5M 177M 6% /run /dev/rootfs 15G 2.6G 12G 19% / tmpfs 931M 0 931M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 931M 0 931M 0% /sys/fs/cgroup tmpfs 187M 12K 187M 1% /run/user/1000 khadas@Khadas:~$ free -m total used free shared buff/cache available Mem: 1861 358 1100 10 402 1479 Swap: 930 0 930 |
I decided to install armbianmonitor to draw some nice temperature charts as I did with Raspberry Pi 4:
1 2 3 4 5 6 |
wget https://github.com/armbian/build/raw/master/packages/bsp/common/usr/bin/armbianmonitor sudo cp armbianmonitor /usr/bin/ sudo chmod +x /usr/bin/armbianmonitor sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2C0D3C0F sudo wget http://goo.gl/vewCLL -O /etc/apt/sources.list.d/rpimonitor.list sudo armbianmonitor -r |
But I had some error during installation:
1 2 3 4 |
sudo armbianmonitor -r Installing RPi-Monitor. This can take up to 5 minutes. Be patient please/usr/bin/armbianmonitor: line 189: /etc/armbian-release: No such file or directory Now you're able to enjoy RPi-Monitor at http://192.168.1.8:8888 |
And while I can load the webpage with top menu appearing, it won’t show any data, as its name implies it may only work in Armbian.
SBC Bench on Khadas VIM3
Let’s download SBC bench:
1 |
wget https://raw.githubusercontent.com/ThomasKaiser/sbc-bench/master/sbc-bench.sh |
Note that I had to comment out CheckLoad in the script because Amlogic processor’s average will converge to 1.0 instead of 0.0 at idle. This happens on ODROID-N2 as well. Now we can run the benchmark on VIM3 with the provided heatsink:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
sudo /bin/bash ./sbc-bench.sh -c sbc-bench v0.6.8 Installing needed tools. This may take some time... Done. Checking cpufreq OPP... Done. Executing tinymembench. This will take a long time... Done. Executing OpenSSL benchmark. This will take 3 minutes... Done. Executing 7-zip benchmark. This will take a long time... Done. Executing cpuminer. This will take 5 minutes... Done. Checking cpufreq OPP... Done. ./sbc-bench.sh: line 802: [: too many arguments ./sbc-bench.sh: line 805: 80 67817 - 80 532 : syntax error in expression (error token is "67817 - 80 532 ") ATTENTION: Throttling might have occured on CPUs 0-3. Check the log for details. ./sbc-bench.sh: line 802: [: too many arguments ./sbc-bench.sh: line 805: 84 28235 - 84 69 : syntax error in expression (error token is "28235 - 84 69 ") ATTENTION: Throttling might have occured on CPUs 4-5. Check the log for details. Memory performance (big.LITTLE cores measured individually): memcpy: 2130.6 MB/s memset: 7418.0 MB/s memcpy: 5036.1 MB/s memset: 8135.3 MB/s (0.9%) Cpuminer total scores (5 minutes execution): 6.91,6.90,6.89,6.88,6.87,6.86,6.85,6.84,6.82,6.79,6.76,6.71,6.64 kH/s 7-zip total scores (3 consecutive runs): 5754,5448,5306 OpenSSL results (big.LITTLE cores measured individually): type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 158465.23k 470183.21k 901837.14k 1210448.55k 1344091.48k 1352657.58k aes-128-cbc 359546.09k 862461.76k 1355292.42k 1570375.34k 1650657.96k 1652086.10k aes-192-cbc 149392.59k 415316.37k 736699.48k 933361.66k 1011316.05k 1016801.96k aes-192-cbc 330477.60k 734483.16k 1031148.89k 1200931.16k 1248881.32k 1238275.41k aes-256-cbc 146340.63k 382336.90k 638294.87k 780882.94k 834742.95k 838423.89k aes-256-cbc 309884.73k 654790.34k 929396.14k 1037305.51k 1057524.39k 1061644.97k Unable to upload full test results. Please copy&paste the below stuff to pastebin.com and provide the URL. Check the output for throttling and swapping please. |
Some ugly errors, but the test completed, and the full results are available here. Wow, it’s not pretty with lots of throttling:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
System health while running 7-zip multi core benchmark: Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp 19:29:07: 2208/1398MHz 5.87 4% 0% 3% 0% 0% 0% 72.0°C 19:29:29: 1000/1000MHz 6.26 84% 1% 83% 0% 0% 0% 73.0°C 19:29:50: 1000/1000MHz 6.40 91% 1% 90% 0% 0% 0% 72.9°C 19:30:11: 1200/1200MHz 6.64 87% 2% 85% 0% 0% 0% 72.6°C 19:30:32: 1000/1000MHz 6.38 86% 1% 85% 0% 0% 0% 72.7°C 19:30:53: 1200/1000MHz 6.29 87% 0% 86% 0% 0% 0% 72.7°C 19:31:13: 1000/1000MHz 6.24 88% 1% 86% 0% 0% 0% 72.8°C 19:31:33: 1000/1200MHz 6.66 93% 2% 91% 0% 0% 0% 72.7°C 19:31:55: 1000/1000MHz 6.47 85% 1% 84% 0% 0% 0% 72.5°C 19:32:15: 1200/1200MHz 6.23 86% 1% 85% 0% 0% 0% 72.3°C 19:32:35: 1000/1200MHz 6.58 87% 1% 85% 0% 0% 0% 72.5°C 19:32:56: 1000/1200MHz 6.82 94% 2% 92% 0% 0% 0% 72.4°C System health while running cpuminer: Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp 19:33:06: 2208/1398MHz 6.53 7% 0% 6% 0% 0% 0% 72.7°C 19:33:27: 1000/1000MHz 6.80 99% 0% 99% 0% 0% 0% 72.7°C 19:33:49: 1000/1000MHz 6.86 100% 0% 99% 0% 0% 0% 72.2°C 19:34:10: 1000/1000MHz 6.96 100% 0% 99% 0% 0% 0% 72.5°C 19:34:32: 1200/1000MHz 7.10 100% 0% 99% 0% 0% 0% 72.6°C 19:34:53: 1200/1200MHz 7.07 100% 0% 99% 0% 0% 0% 72.6°C 19:35:14: 1000/1000MHz 7.12 100% 0% 99% 0% 0% 0% 72.6°C 19:35:36: 1000/1000MHz 7.08 100% 0% 99% 0% 0% 0% 72.1°C 19:35:57: 1200/1200MHz 7.17 100% 0% 99% 0% 0% 0% 72.5°C 19:36:18: 1000/1200MHz 7.20 100% 0% 99% 0% 0% 0% 72.5°C 19:36:40: 1000/1000MHz 7.14 100% 0% 99% 0% 0% 0% 72.6°C 19:37:01: 1000/1000MHz 7.17 100% 0% 99% 0% 0% 0% 72.5°C 19:37:23: 1000/1000MHz 7.33 100% 0% 99% 0% 0% 0% 72.2°C 19:37:45: 1200/1000MHz 7.23 100% 0% 99% 0% 0% 0% 72.2°C Throttling statistics (time spent on each cpufreq OPP) for CPUs 0-3: 1800 MHz: 730.53 sec 1704 MHz: 1.87 sec 1608 MHz: 0.63 sec 1512 MHz: 2.49 sec 1398 MHz: 11.03 sec 1200 MHz: 264.31 sec 1000 MHz: 672.85 sec 667 MHz: 0 sec 500 MHz: 0 sec 250 MHz: 0 sec 100 MHz: sec Throttling statistics (time spent on each cpufreq OPP) for CPUs 4-5: 2208 MHz: 962.30 sec 2100 MHz: 72.99 sec 2016 MHz: 51.18 sec 1908 MHz: 47.23 sec 1800 MHz: 9.68 sec 1704 MHz: 5.51 sec 1608 MHz: 8.84 sec 1512 MHz: 9.15 sec 1398 MHz: 2.29 sec 1200 MHz: 232.89 sec 1000 MHz: 281.66 sec 667 MHz: 0 sec 500 MHz: 0 sec 250 MHz: 0 sec 100 MHz: sec |
If we compare the results to Raspberry Pi 4 with and without heatsink, it shows something is really wrong for the multi-threaded 7-zip benchmark:

memset and memcpy are quite good since single-threaded. AES is about 10 times faster on VIM3.

If you wonder why, here’s a clue:
1 2 |
file /usr/bin/apt /usr/bin/apt: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 3.7.0, BuildID[sha1]=3beb63c750eae93ef7ee09743cb01578d5f32262, stripped |
Khadas VIM3 runs Ubuntu 18.04 64-bit, against Debian 10 32-bit on RPi 4, which means it can use Armv8 crypto extensions while the Raspberry Pi Foundation board cannot. Note this will only affect a few applications.
I was surprised the temperature would never go above 73°C, so I contacted Khadas and they told me the board will throttle if the temperature reaches 75°C. For some reasons the system runs at full speed in Android with just the heatsink, but Linux appears to need further cooling. As reference, Broadcom BCM2711 processor in Raspberry Pi can reach up to 85°C, so I don’t know if Amlogic is being extra cautious here.
Khadas VIM3 Fan Installation
Nevertheless, the company sent me their 3705 cooling fan specifically designed for their VIM and Edge boards. It costs $14.95 on their store.

The fan has four wire as it’s controlled via PWM, meaning it can be turned off, and/or the speed can be adjusted depending on the temperature or user settings.
It comes with four screws which we’ll use on the heatsink we already got with VIM3 SBC the first time.
Tighten the heatsink on the SBC, and connect the cable to the 4-pin fan header.
We can now place the top cover and tighten everything. As a side-note, I had not used the board for a while, so I upgrade the system as follows:
1 2 3 |
sudo apt update sudo apt dist-upgrade sudo reboot |
This upgraded Ubuntu 18.04.2 to Ubuntu 18.04.3 and the system still boot, but with some funny colors.
It turns out it was because u-boot package had changed name, and was not automatically upgraded. So I reinstalled it manually:
1 2 |
sudo apt install --reinstall linux-u-boot-vim3-vendor sudo reboot |
I was using an older version of the OS, and it’s unlikely to happen to anybody else. But if it does, you know where to look.
Nevertheless, we can run the benchmark again:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
sudo /bin/bash ./sbc-bench.sh -c [sudo] password for khadas: sbc-bench v0.6.8 Installing needed tools. This may take some time... Done. Checking cpufreq OPP... Done. Executing tinymembench. This will take a long time... Done. Executing OpenSSL benchmark. This will take 3 minutes... Done. Executing 7-zip benchmark. This will take a long time... Done. Executing cpuminer. This will take 5 minutes... Done. Checking cpufreq OPP... Done. ATTENTION: Throttling might have occured on CPUs 4-5. Check the log for details. Memory performance (big.LITTLE cores measured individually): memcpy: 2049.4 MB/s memset: 7360.1 MB/s memcpy: 5037.7 MB/s memset: 9321.2 MB/s (1.0%) Cpuminer total scores (5 minutes execution): 13.10,13.09,13.08,13.07,13.05,12.99 kH/s 7-zip total scores (3 consecutive runs): 8589,8589,8588 OpenSSL results (big.LITTLE cores measured individually): type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 158488.14k 470345.41k 902567.51k 1210803.88k 1344648.53k 1353383.94k aes-128-cbc 391893.01k 963920.28k 1460022.19k 1667237.21k 1752132.27k 1758445.57k aes-192-cbc 150968.87k 418386.50k 736863.49k 933591.72k 1012277.25k 1017271.64k aes-192-cbc 363905.69k 858793.26k 1226616.66k 1399928.83k 1461602.99k 1466078.55k aes-256-cbc 146373.89k 385097.66k 638347.43k 781122.56k 835392.85k 837626.54k aes-256-cbc 351193.97k 784096.90k 1094371.67k 1208373.93k 1253968.55k 1257248.09k Full results uploaded to http://ix.io/1U7s. Please check the log for anomalies (e.g. swapping or throttling happenend) and otherwise share this URL. |
That’s more like it although sbc-bench detected throttling on the big cores, but not the little ones this time:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
System health while running 7-zip multi core benchmark: Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp 10:28:41: 2208/1800MHz 5.83 12% 0% 12% 0% 0% 0% 51.2°C 10:29:02: 2208/1800MHz 6.00 77% 1% 75% 0% 0% 0% 65.1°C 10:29:22: 2208/1800MHz 6.36 85% 1% 84% 0% 0% 0% 66.1°C 10:29:43: 2208/1800MHz 6.17 84% 1% 83% 0% 0% 0% 71.3°C 10:30:03: 2208/1800MHz 6.56 85% 1% 83% 0% 0% 0% 69.7°C 10:30:24: 2208/1800MHz 6.44 87% 1% 86% 0% 0% 0% 62.3°C 10:30:45: 2208/1800MHz 6.26 79% 1% 78% 0% 0% 0% 69.6°C 10:31:05: 2208/1800MHz 5.89 81% 1% 79% 0% 0% 0% 63.2°C System health while running cpuminer: Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp 10:31:24: 2208/1800MHz 6.27 18% 0% 18% 0% 0% 0% 59.5°C 10:31:45: 2208/1800MHz 6.54 99% 0% 99% 0% 0% 0% 71.3°C 10:32:06: 2208/1800MHz 6.67 100% 0% 99% 0% 0% 0% 71.5°C 10:32:26: 2208/1800MHz 6.77 100% 0% 99% 0% 0% 0% 71.3°C 10:32:47: 2208/1800MHz 6.91 100% 0% 99% 0% 0% 0% 71.3°C 10:33:08: 2208/1800MHz 6.93 100% 0% 99% 0% 0% 0% 71.2°C 10:33:29: 2208/1800MHz 7.03 100% 0% 99% 0% 0% 0% 71.2°C 10:33:50: 2208/1800MHz 7.02 100% 0% 99% 0% 0% 0% 71.2°C 10:34:11: 2208/1800MHz 7.02 100% 0% 99% 0% 0% 0% 71.2°C 10:34:31: 2208/1800MHz 7.01 100% 0% 99% 0% 0% 0% 71.1°C 10:34:52: 2208/1800MHz 7.01 100% 0% 99% 0% 0% 0% 71.1°C 10:35:13: 2208/1800MHz 7.14 100% 0% 99% 0% 0% 0% 71.2°C 10:35:34: 2208/1800MHz 7.10 100% 0% 99% 0% 0% 0% 71.2°C 10:35:55: 2208/1800MHz 7.07 100% 0% 99% 0% 0% 0% 71.2°C 10:36:16: 2208/1800MHz 7.05 100% 0% 99% 0% 0% 0% 71.1°C Throttling statistics (time spent on each cpufreq OPP) for CPUs 4-5: 2208 MHz: 1721.62 sec 2100 MHz: 0 sec 2016 MHz: 0 sec 1908 MHz: 0.07 sec 1800 MHz: 0 sec 1704 MHz: 0 sec 1608 MHz: 0 sec 1512 MHz: 0 sec 1398 MHz: 0 sec 1200 MHz: 0 sec 1000 MHz: 0 sec 667 MHz: 0 sec 500 MHz: 0 sec |
It we really look at the details, throttling did not really occur in any meaning ful manner, as frequency dropped to 1908 MHz for seven tenth of a second only, and temperature did not go over 72°C.
After boot, the fan is basically off, and as the workload increases the speed and noise go up. The fan is really noisy during cpuminer. To avoid throttling completely, I was told to edit /boot/env.txt and change “auto” to “high”, and reboot. This makes the fan rotate at high speed at all times.

Let’s see what our new results benchmarks look against Raspberry Pi 4 both at the stock 1.5 GHz frequency and overclocked to 2.0 GHz.This time everything is as expected with Khadas VIM3 taking the lead for 7-zip with the help of its fan. Memset and memcpy scores although slightly improved.

OpenSSL / AES benchmark as well, meaning Khadas VIM3 is almost 20 times faster than Raspberry Pi 4 at stock frequency thanks to 64-bit userspace.
Speedometer 2.0
SBC bench is fine to test headless use case, but for people who rely on the board for desktop use cases like web browsing, I’ve also run Speedometer 2.0 in Khadas VIM3 equipped with heatsink and fan using the pre-loaded Chromium.
We can see the results are pretty constant, and VIM3 achieves 25.6 runs per minutes. Let’s see what a Raspberry Pi 4 overclocked to 2.0 GHz can do.
I also wanted to test GPU performance, but Ubuntu 18.04.3 in Khadas VIM3 does not seem to support it yet, or there has been an issue during the upgrade:
1 2 |
es2gears EGLUT: failed to initialize EGL display |
Once it works, I’ll write a separate post about GPU performance.
Note that Khadas VIM3 (2GB RAM) sells for $99 while the equivalent Raspberry Pi 4 (2GB) goes for $45. VIM3 does have other advantages however in terms of media playback, and proper HDMI 2.0 support (4K YUV420 supported).

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.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress