Khadas VIM4 SBC review – Part 3: Ubuntu 22.04

Here’s the last part of Khadas VIM4 review with Ubuntu 22.04 “Jammy Jellyfish”. You may want to check out our previous parts with the unboxing and first boot, followed by Android 11 if you haven’t already done so.

Ubuntu 22.04 installation on Khadas VIM4

I used the same method of installation with OOWOW firmware that can download the image directly from Khadas server, and install it to the eMMC flash. Since I already had Android 11 running on the board, I had to keep pressing the function key (middle), then shortly press the reset button,  before releasing the function key and entering OOWOW interface. From there, I selected Ubuntu 22.04 Gnome, and went ahead with the download.

Download Ubuntu 22.04 Amlogic A311D2

The download was fast with the 758.2MB compressed image downloaded in a couple of minutes, then I simply selected “Install” to go further, and replace Android 11…

Khadas VIM4 Ubuntu 22.04 install to eMMC flash

.. and after rebooting the board I was in Ubuntu 22.04. Note the username and password are “khadas”.

Khadas VIM4 Ubuntu 22.04

System Info

People who want to check the kernel boot log and do so on CNX pastebin.

I’ll mostly follow the steps from our earlier ODROID-N2+ review, starting with some system information:


It’s running Ubuntu 22.04 on Linux 5.4.125, and we’ve got about 8 GB RAM, and a 29GB root partition. Let’s install and run inxi for more details:


I notice ZRAM is enabled, and we’ve got two WLAN interfaces. I’ll explain the latter when testing WiFi.

Khadas VIM4 benchmarks in Linux

I started with sbc-bench.sh, which would not start because the load average is too high.

Khadas VIM4 load average 2.0There’s no activity at all, and I did not run anything heavy before, so that’s odd. After discussing with Thomas Kaiser, sbc-bench.sh developer, we found out the likely culprits with processes from Amlogic SDK:


At the time, I just modified sbc-bench.sh to skip the load average check and carry on with the benchmark, but the latest version of the tools should run without modifications.


Let’s compare some of the results against ODROID-N2+ and Raspberry Pi 4 @ 1.5 GHz and overclocked to 2.0 GHz.

Khadas VIM4 vs ODROID-N2+ vs Raspberry Pi 4

Khadas VIM4 is in a league of its own when it comes to memory bandwidth as shown by memcpy and memset benchmark, and 7-zip is also much faster, and over twice as fast as a Raspberry Pi 4 clocked at 1.5 GHz. Having eight cores in a multi-thread benchmark does help though. AES-256 is somewhat faster on ODROID-N2+ as a single-threaded benchmark, and with a higher 2.4 GHz frequency on the Cortex-A73 core for the Amlogic S922X processor. The Raspberry Pi 4’s AES-256 score is poor as usual due to the lack of Armv8 crypto extension.

Let’s try a browser benchmark with Speedometer 2.0 which I used in Khadas VIM3 review with Chromium.

Speedometer 2.0 Chrome

Khadas VIM4 achieved 35.65 points, against 25.6 points for the Amlogic A311D powered Khadas VIM3, and 21 points with a Raspberry Pi 4 overclocked at 2.0 GHz, which confirms the higher performance of the platform. Chromium may have been optimized since 2019 as well.

Speedometer 2.0 Firefox

Firefox does not fare as well on the same benchmark on the VIM4 board.

3D graphics testing

Here’s part of the output from glxinfo:


That looks like software rendering to me. But just to make sure let’s check out what is LLVMPipe exactly:

The Gallium llvmpipe driver is a software rasterizer that uses LLVM to do runtime code generation. Shaders, point/line/triangle rasterization and vertex processing are implemented with LLVM IR which is translated to x86, x86-64, or ppc64le machine code. Also, the driver is multithreaded to take advantage of multiple CPU cores (up to 8 at this time). It’s the fastest software rasterizer for Mesa.

Confirmed. So when I run glmark2-es2, it ends up with an error:


That means 3D hardware acceleration is not supported.

Video decoding and encoding on Khadas VIM4

Amlogic A311D2 SoC comes with an 8Kp24/4Kp60 VPU capable of decoding AV1, H.265, VP9, H.264, etc… but the documentation still shows “TO DO” in the video playback section. So I just tried to play YouTube videos in Firefox.
Khadas VIM4 YouTube 4K Firefox

… and Chromium.
Khadas VIM4 YouTube 4K Chromium

CPU usage is through the roof as hardware video decoding is not supported. The good news is that the arm processor is powerful enough to play 4Kp24 videos (rendered to a 1920×1080 viewport) relatively smoothly using software video decoding. Firefox fares a bit better with the only dropped frames when switching from embedded to full-screen view, but once in full-screen, I did not notice any dropped frames. Google will drop a frame every second, but the video is still watchable.

While the lack of hardware video decoding was disappointing, I was pleasantly surprised to have the ability to use H.264/H.265 hardware video encoding. You can read more details in the post entitled “Linux hardware video encoding on Amlogic A311D2 processor“. That’s not perfect however since only closed-source demos are available, but Khadas told me they were working on releasing the code on Github.

eMMC and USB storage

Let’s run iozone on the eMMC flash.


That’s about 178MB/s sequential read speed and 71MB sequential write speed. That’s not amazing but good enough for a relatively smooth operation.

I have a MINIX USB Hub with a 480GB SSD that I had tested at 400MB/s on other platforms.

Khadas VIM4 USB-C SSD

Sadly, the drive was not mounted, and even no recognized at all even with tools like fdisk and GParted. When double-checking Khadas VIM4 specifications, I also realized the USB Type-C port was a USB 2.0 OTG interface, so at best it should support around 40MB/s.

I also connected a USB 3.0 hard drive to the USB port:


The drive has multiple partitions, which were not mounted automatically. So I installed pmount to mount them manually:


sda1 (NTFS) and sda2 (EXT-4) were mounted without issues, but the exFAT and BTRFS partitions were not. So I installed exfat-fuse for the former:


The pmount command would not work, so I used mount instead:


Same thing for btrfs which is not supported by pmount:


Testing the ext-4 partition with iozone:


Sequential read speed was about 94MB/s and write 75MB/s. I usually got a bit over 100MB/s in reviews a few years ago, but the drive might be getting old. Still, the performance is roughly as expected over USB 3.0 (for a mechanical drive), at least for reads.

Networking benchmarks (Ethernet and WiFi 6)

Time for some networking benchmarks with iperf3.

Gigabit Ethernet download:


and upload:


No problem here, but when switching to full-duplex transfer one direction gets 808 Mbps (OK), while the other only achieves 381 Mbps:


I suppose this could only become an issue if you run something like a BitTorrent where high-speed transfer can happen in both direction.

Recent Khadas VIM boards, including the latest Khadas VIM4 support real simultaneous dual-band (RSDB) WiFi features, and that’s why we can connect two different access points to transfer data on both 2.4GHz and 5 GHz bands.


Khadas VIM4 wlan0 wlan1

I connected wlan0 to the 5 GHz network, and wlan1 to the 2.4 GHz network from my Xiaomi AX6000 WiFi 6 router.

Khadas VIM4 WiFi connections

So in theory that means the bandwidth for 2.4 GHz and 5 GHz networks can be fully utilized by the system, in this case, 270 Mbps + 1134 Mbps, or 1404 Mbps. Note that I broke the short 5 GHz antenna, so only the 2.4 GHz antenna is connected, and I noticed some instability, so I disabled one of the wlan interfaces.

I still try iperf3 starting with WiFi download:


Upload:


That seems to be on the low side, and since only the 2.4 GHz antenna was connected, I asked Khadas for their own results. It turns out it’s also in the same ballpark:

VIM3 vs VIM4 WiFiI’ll check it again if I receive an antenna replacement.

User experience in Ubuntu desktop & conclusion

I also used the board as it was a Ubuntu 22.04 computer. Tasks like checking emails with Thunderbird, browsing the web with Firefox or Chromium, photo editing with Gimp, using LibreOffice office suite, or even watching YouTube videos work pretty well, and it’s almost the same experience as on my AMD Ryzen laptop, although it was a tad more sluggish. But everything typically makes use of 3D acceleration with the GPU can still work with software rendering, but it’s really slow, and for instance, both the WebGL Aquarium demo and SuperTuxKart game had a frame rate of about 1 to 2 fps.

A Jasper Lake mini PC will cost roughly the same, and deliver a better experience, but Khadas VIM4 still has advantages for applications that require a small form factor, MIPI DSI, eDP and/or LVDS display interfaces, MIPI CSI, HDMI input (not working in Linux yet), an accelerometer, and/or other features typically not found on off-the-shelf low-cost Intel hardware.

I’d like to thank Khadas for sending the VIM4 for review. You can now buy Khadas VIM4 for $199.90 until June 4, after which it will be $219.90 but that’s without the highly recommended heatsink and fan, which brings the total to $219.90/$239.90 plus shipping, and eventual taxes depending on your country’s regulations.

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

11 Replies to “Khadas VIM4 SBC review – Part 3: Ubuntu 22.04”

  1. > IF: eth0 state: up speed: 1000 Mbps duplex: full mac: c8:63:14:72:5f:52

    By looking into the dmesg output (thanks for this!) I wonder whether all VIM4 share the same MAC address? Kernel cmdline contains:

    Can you please check whether /boot/env.txt exists and the MAC address is defined there? Asides that the serialno seems to be inherited from VIM1.

    1. Content of boot.env:

  2. > Khadas VIM4 is in a league of its own when it comes to memory bandwidth

    A311D2 is really something different than A311D/S922X. It would be interesting to check for internal bottlenecks on these 3 SoCs (with one of the most underrated kitchen-sink benchmarks available: 7-zip)

    * A311D2: taskset -c 0-3 7zr b -mmt=4
    * A311D: taskset -c 2-5 7zr b -mmt=4
    * RK3588: taskset -c 4-7 7zr b -mmt=4

    Maybe you can contribute result 1 if you’re firing up VIM4 next time?

    1. Results\ on Khadas VIM4:

      1. Thank you!

        As for the Ethernet MAC Address I found a recent u-boot commit and this older thread. Since Peter confirmed slightly different MAC address most probably it’s programmed at factory inside OTP/eFuse (or derived from SoC serial number) and can be overwritten in various ways (/boot/env.txt included).

  3. You should be able to get that GPU going with a Mesa install.
    I always refer back to this guide https://www.96boards.org/blog/panfrost-rock960/ but you just need the DRM/MESA parts and think with that kernel 21.3.8 tree is the one needed as 22 might need a later kernel.

    Its the price that confuses me as its sort of in the free delivery/return of amazon mini pcs such as https://www.amazon.co.uk/NiPoGi-Graphics-Business-Computer-DisplayPort/dp/B09C5P753M?th=1 as desktop I would prob go with the AMD and as a SBC there are a lot of more cost effective solutions out there.
    If Radxa do release an RK3588 8gb for $149.00 then the Vim4 really should be a dead duck at that price…

    1. The problem with that idea is that mesa/panfrost didn’t really exist in a stable form until Linux 5.11 (and the newer you go, the better) so you need perform a large and invasive backport of upstream DRM (and anything related it touched) code to get the panfrost kernel driver to run properly. That is a large ‘n’ hairy feat of software engineering to do well and then maintain. The alternative approach of using upstream code that already supports panfrost well is equally herculean due to the complete absence of upstream support for the A311D2 at this time (and foreseeable future) – lots of new/fun drivers need to be written. Oopsie.

      To me A311D2 looks like a really nice powerful chip with a never-ending series of awkward software compromises. And while everyone poo-poos the RPi4 in benchmarks it continues to outsell everything else by a mile because great software support for average hardware trumps average software support for great hardware.

    1. The info I got online (from BayLibre) is that A311D2 is quite different from A311D, and right now, nobody is working on mainlining A311D2 code.

    2. > kernel is Linux 5.4.125

      You seem to forget that we’re talking about a kernel from an Android SoC vendor that has been forward ported since ages. As such the kernel version doesn’t matter much or at all.

      See the following insights:

      And if you think a rather small board vendor would have the resources/bucks to mainline a new ARM SoC…

Leave a Reply

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

Khadas VIM4 SBC
Khadas VIM4 SBC