Khadas Captain / Edge SBC Review – Part 2: Ubuntu 18.04

Orange Pi Development Boards

I received Khadas Edge Developer Package with Khadas Edge RK3399 module, Khadas Captain carrier board, and several accessories a few weeks ago, and after checking the hardware in the first part of the review, I’ve now taken the time to review software support, specially Ubuntu 18.04 on the board.

Khadas Edge / Captain Firmware

There are currently four main choices of firmware for Khadas Edge / Khadas Captain:

I decided to focus on Ubuntu 18.04 for this review, and Karl who has he own sample will review the stable Android Nougat firmware that has been released a few days ago.

Khadas Captain First Boot to Android, and Firmware Update to Ubuntu 18.04

Let’s connect the board to an HDMI TV, Ethernet, and the USB type-C power supply, to see if it boots just fine.

Khadas Edge USB-C Power Supply, HDMI, Ethernet

After applying power, Android OS will boot within a few seconds.

Khadas Edge Android
Click to Enlarge

But we want to upgrade the firmware, and it’s possible to do so with SDcard or USB type-C cable method. I went with the USB method in Ubuntu 18.04:

But initially there was just a small problem:

Oops, so this would only work with Ubuntu 16.04, so I tried with docker:

But the installation would not complete, and then tried to modify the script to force it to work in Ubuntu 18.04, but it turned out not to be such a good idea with carefully reading the code, as bad things happened with my file system on my laptop switching to read-only, and after rebooting to “solve the issue”, my computer would not boot anymore. It took me 6 hours to solve… Oh well.

I finally switched to an Ubuntu 16.04 laptop with I picked to fix my main laptop.

But luckily, if you run the latest LTS version of Ubuntu, you don’t have to through the pain I experienced, as the company reacted, and eventually added support for Ubuntu 18.04:

The new step is to download the firmware, extract it:

But before flashing the firmware, you’ll need to enter Upgrade Mode with one of five methods. If you don’t, the flash tool will return an error:

I used to TST (Terry’s Smart Tweezers) method to enter firmware upgrade mode, and connected relevant cables as shown below.

Khadas Edge Upgrade ModeIt does not matter which USB type-C port is used for power and data connection. To enter firmware upgrade mode, I pressed the functions key three times within 2 seconds, and the Blue LED started to blink to indicate upgrade mode is activate. We can now run the command to flash the firmware:

The board will automatically reboot, and boot to Ubuntu 18.04 with LXDE.

Khadas Edge Ubuntu 18.04

Khadas Captain & Edge System Information

Use khadas /khadas username and password to login. I also connected more peripherals include a USB hard drive, and a USB RF dongle for my keyboard and mouse.

Khadas Edge Review
Click to Enlarge

I also connected through SSH from my laptop since it’s easier to copy/paste terminal output that way:

The board run Ubuntu 18.04 with Linux 4.4.154, and since I have Khadas Edge Basic board fitted into Khadas Captain carrier board there’s 1.9GB RAM, and a 15 GB rootfs partition. Khadas team also decided to enable ZRAM by default which is not a bad idea.

All the four partitions in my hard drive are detected, but only EXT4 and NTFS partitions could be mounted, since BTRFS and exFAT are not enabled in the kernel. That should be something easy enough to do on your own.

Load kernel modules are mostly for ZRAM support, except for bcmdhd WiFi driver.

GPIO are enabled like in other RK3399 boards:

The GPIO definitions are a little different, and it does not look like all are enabled in the current Ubuntu image:

3D Graphics Acceleration on Khadas Edge with Ubuntu 18.04

es2_info and es2gears are already installed.

es2gears works OK, but the framerate is a little on the low side.

Khadas Edge es2gears Ubuntu-18.04

I could run glmark2-es2 after installing it:

khadas edge glmark2-es2
Click to Enlarge

The score was 42 with some of the benchmark maxing out at 50 fps because video output was 720p50. But then I wanted to repeat glmark2-es2 benchmark in offscreen  mode, and I decided to install gimp as well. After a while, the system logged out automatically, and 3D GPU drivers did not work any more:

I first through gimp may have messed with the GPU drivers somehow, and reinstalled the firmware with rk-flash-tool, but the resulting remained the same, and Khadas was unable to provide a solution in time for this review. So I somehow permanently lost accelerated 3D graphics on the board for the rest of the review.

Khadas Edge Video Playback

When trying to play videos from the NTFS partition of the USB drive, or copy files from the USB to the eMMC flash the connection would often fail, interrupting video playback or file copy. That’s what it would look like in the kernel log:

At some point, I finally managed to play a 1080p60 video with mpv, but it relies on software decoding at this point, and the video was very choppy.

Khadas Edge Ubuntu Video Playback
Click to Enlarge

It’s unclear how to play 1080p or 4K videos smoothly in Ubuntu 18.04, so instead you may have to use LibreELEC image instead if that’s something you need. So far, I’ve been unable to play videos in any of the RK3399 boards I tested with Ubuntu Desktop firmware.

Web browsing in Khadas Captain

The Ubuntu 18.04 images comes with Chromium pre-installed.

Khadas Edge Ubuntu Screenshot
Click for Original Size

However, Thai fonts  are missing, so characters will show as blocks with this language when accessing Google and Facebook from my location, so I installed Thai fonts:

I wanted to install Thai language support and the corresponding keyboard, but it failed due to permissions issues:

Khadas Captain Ubuntu Language Support

Followed by more error messages:

You are not allowed to perform this action You don’t have the required privileges to perform this action.

That’s a minor issue that should be easy to fix.

Overall “standard” web browsing worked well, just like on other RK3399 boards and I edited a lot of this review on the board itself. However, I could not play Candy Crush Saga in Facebook as flash player is missing:

No Flash Player found. 11.0.0 version required.   


YouTube videos can play at 720p with very few dropped frames, but some tearing is clearly visible. 3D graphics acceleration is broken on my board, but I went to visit WelGL Quake demo anyway, and unsurpringsly was greeted with an error message:

Sorry, but your browser does not support WebGL or does not have it enabled.

eMMC flash and USB Storage Performance 

Let’s run the usual iozone benchmark in the eMMC flash:

Up to 300MB/s sequential read speed, up to around 50MB/s sequential write speed, and random I/O values also look pretty good here.

But then I switched to USB storage performance, and the NTFS test performance would not complete:

After two more tries, I switched to EXT-4 and that was OK, so maybe I really do have a hardware issue on the NTFS partition…

The values are really low at about 33MB/s for read and write, and then I realized oops… The USB port on one of the edges of the board is USB 2.0, so I moved the drive to the  USB 3.0 port, and results were inline with expectations for a mechanical drive:

Around  93MB/s sequential read speed, and 91 MB/s sequential write speed.

As a side note, since the tests take time on the hard drive I tried to do some debugging/monitoring, first by checking syslog but it’s filled with message related to IR remote control:

and iotop – used to see whether any I/O occured – did not work either:

But this one seems to be a bug with iotop while using the latest version of Python. One way might have been to downgrade Python version, but instead I used:

in order to monitor I/Os to partitions.

Network performance – Gigabit Ethernet & 802.11ac WiFi

Let’s test Gigabit Ethernet performance with iperf starting with a full duplex data transfer:

That’s fairly typical for a Rockchip RK3399 platform. Upload only result looks fine…

and download only is even closer to the limit:

So Gigabit Ethernet is working just as expected.

Time to test WiFi 5 (802.11ac) performance. Please note that I have the Khadas Edge Basic board with AP6356S module, while Edge Pro and Max boards come with AP6398S that support RSDB (Real Simulataneous Dual Band) , and should offer even better performance.

802.11ac WiFi upload result:

802.11ac WiFi download result:

I’ve frequently found asymmetries between upload and download, but usually that’s at the benefit of the download part. That’s somehow the opposite with Khadas Edge, and I had to double check it to confirm. 222 Mbps upload is very good with the router I use, but 104 Mbps download could be better, as some other platforms could achieve a little over 250 Mbps.

WiFi Data Throughput in Mbps – Click to Enlarge

USB-C DisplayPort Alternate Mode on Khadas Captain

When I connected MINIX NEO-C plus USB-C adapter to RockPro64 RK3399 board in order to make use of USB-C DisplayPort Alternate mode over HDMI it did not work quite as expected (although it may be fixed now), but I did not have such issue with Khadas Edge.

Khadas Edge USB-C DisplayPort / HDMI
Click to Enlarge

I just move the HDMI cable that I had connected to the HDMI port of Khadas Edge to the HDMI port in the MINIX USB-C adapter, and within a few seconds the image was up and running. I only have access to one TV right now, so I was not able to test dual monitor setups, and things like extended desktop.


The hardware design looks solid with a fast eMMC flash, excellent Gigabit Ethernet performance, and acceptable WiFi AC performance, dual video output, and more.

But while Ubuntu 18.04 LXDE image is mostly usable, there were several issues such as accelerated 3D graphics support breaking after a while, even after reinstalling the firmware, and the lack of hardware video decoding is a recurring issues on RK3399 platforms at least on desktop Linux images, as LibreELEC is another story. I also encountered several less important software only issues like failure to install language packs, as well as some potential (power?) issues when connecting the USB hard drive that would disconnect from time to time when connected to the USB 2.0 port. 

But bear in mind Khadas Edge and Captain boards are not shipping yet, so what I did here was really beta testing, and I’m pretty sure Shenzhen Wesion will look into the issues and fix many of them before the rewards ship to backers later in January.

Khadas Edge crowdfunding campaign is still on-going, and you can back the project on Indiegogo if you are interested.

Support CNX Software - Donate via PayPal or become a Patron on Patreon

Leave a Reply

2 Comment threads
1 Thread replies
Most reacted comment
Hottest comment thread
3 Comment authors
cnxsoftnumbqqblu Recent comment authors
newest oldest most voted
Notify of

Framebuffer presentation layer seems botched (ergo the low glgears fps), but at least the GLES stack is 3.2 and the revision quite recent. Now they need to fix eglSwapBuffers() and they’re in GLES business! : )


Thanks for your review.

About some issues in this review:

1. there were several issues such as accelerated 3D graphics support breaking after a while, even after reinstalling the firmware

How does this happend? When you reinstall the firmware it still not working?

2. How to play 1080p or 4K videos?

You can use gstreamer to play videos. And I added a simple command to use.

E.g., play_video /path/to/video

And for latest version you can use QT5 player, Sound & Video->QT5 Media Player

3. WebGL not working

WebGL is enabled. If 3D graphics acceleration not working, it will not work.

4. but only EXT4 and NTFS partitions could be mounted, since BTRFS and exFAT are not enabled in the kernel.

BTRFS & exFAT are enabled, they are built in kernel, not as modules.

5. After two more tries, I switched to EXT-4 and that was OK, so maybe I really do have a hardware issue on the NTFS partition…

I’ll check this issue..