Review of Ubuntu 18.04 on ODROID-XU4Q Development Board

Hardkernel released their first Samsung Exynos 5422 octa-core board in July 2014 with ODROID-XU3, which at the time was really a powerful board, but also pricey at $179. Later that year, the company released a cheaper version ($99) called ODROID-XU3 Lite, which I had the chance to review with Ubuntu 14.04 and Android 4.4.

The company’s adventure with Exynos 5422 processor did not stop there, as in 2015 they released the smaller and even cheaper ($74) ODROID-XU4 board, and last year launched a fanless version of the board with ODROID-XU4Q featuring a large heatsink. More recently, the company also introduced ODROID-HC1 and ODROID-MC1 solutions for respectively network storage and clusters applications.

That’s the short history of Hardkernel Exynos 5422 boards as I remember it, and that means that since 2014, or nearly 4 years so far, the company has kept updating Ubuntu and Android firmware for their board, including the just released Ubuntu 18.04 (MATE) operating system, which I’m going to test on ODROID-XU4Q sample provided by the company in this review.

ODROID-XU4Q Unboxing

Let’s have a look at the hardware kit I got first. I received an ODROID cardboard package with two smaller white packages, an acrylic case, and a zip bag with some accessories.

Click to Enlarge

List of accessories: 5V/4A power supply, acrylic enclosure and screws, the RTC battery, and a USB 3.0 to eMMC reader.

Click to Enlarge

The board itself comes with a paper showing how to get started on ODROID-XU4 on one side…

Click to Enlarge

… and a description of the board on the other side. My board was also fitted with  a 32GB eMMC flash module pre-loaded with a beta version of their Ubuntu 18.04 MATE image.

Click to Enlarge

Looking at the board, the large Blue heatsink stands out, and on one side we have Gigabit Ethernet, a USB 2.0 port, the DC jack, a micro SD card slot, and HDMI 1.4 output…

Click to Enlarge

… while on the other side, we’ll find expansion headers, the power button, two USB3.0 ports, and on the right on the photo below header for the serial console and RTC battery.

Click to Enlarge

ODROID-XU4Q Kit Assembly

Assembly of the kit is pretty straightforward, but you’ll still have some work to do, as the case is also designed for ODROID-XU4 board with fan, so I had to cut out the top of case with a cutter to leave room for the top of the heatsink.

Click to Enlarge

I also had to connected the RTC battery, before closing the case, and securing it with two screws underneath.

If you plan on taking out the eMMC flash module often, you may consider cutting out the area on top of the module to avoid having to disassemble each time you want to flash the firmware. I’ll just use apt command to update the firmware, so I left that part of the case untouched.

USB 3.0 eMMC adapter vs micro SD card adapter

Click to Enlarge

My kit came with a USB 3.0 to eMMC reader, but previously I got Hardkernel’s microSD eMMC reader with ODROID-XU3 Lite board. The 32GB eMMC module works on both, but I was interested in whether performance would differ between the two. So I copied large files from my computer to the eMMC module to compare sequential write performance:

  • 1.6GB file using USB 3.0 to eMMC reader:  1m 01s on USB 3.0 port, or 26.85 MB/s.
  • 1.4 GB file using micro SD card adapter: 54 seconds on USB 2.0 port, or 26.54 MB/s.

So with that 32GB flash module at least, there’s no difference between the two, and the main criteria should be whether you prefer a USB interface, or using a micro SD card reader to flash firmware.  Price is also different: $9.90 for the USB eMMC reader, and $1.50 for the micro SD adapter.

[Update: I’ve been told performance with the 32GB eMMC flash module should reach 50MB/s write speed, 80MB/s read speed. See comments.

After further checking, it looks like my computer fails switch to SuperSpeed mode when I insert the USB 3.0 eMMC reader to a USB 3.0 port:

So the main takeway is that both the micro SD card & eMMC flash readers are capable of good performance up to 80MB/s, but the actual results will depend on your host computer / micro SD card reader.]

Ubuntu 18.04 MATE on ODROID-XU4

The first thing you’ll want to do is to get the Ubuntu 18.04 image for ODROID-XU4/XU3, and flash it to the eMMC module or micro SD card using Etcher. If you already own a board running Ubuntu 16.04, you can easily upgrade from the command line instead:

Click to Enlarge

I connected my board to Ethernet, the HDMI port of my TV, added a USB 3.0 hard drive for good measure, the wireless USB dongle for my keyboard and mouse, and finally applied power, and within around 30 to 40 seconds, I got the Ubuntu 18.04 MATE desktop.

Here’s the Linux part of the boot log for reference:


Some system information:

So that’s indeed Ubuntu 18.04 with Linux 4.14,  2GB RAM, and a 32GB flash with a 29GB rootfs partition. My USB drive partitions were also recognized, expcet the NTFS. But running ntfsfix on /dev/sda1 did resolve the issue, and all four file systems  (NTFS, EXTFAT, EXT4, and BTRFS) used in my external drive worked.

I installed some of my favorite applications like Firefox and Gimp, and remove some I did need, but soon I realized Firefox would just crash at startup. Hardkernel told me it’s expected since Firefox 32-bit is not supported anymore, and I’d have to use a older version.  Oh well, I kept using Chromium especially the image is supposed to support YouTube up to 720p, and WebGL.

I ran several tests to check of the supported features of Ubuntu 18.04 on the $60 board:

  • Office applications – Open odt “word” file in LibreOffice, open large PDF (ODROID Magazine 2018) in Evince
  • Emails with Thunderbird + Web browsing with Chromium – Opening multiple tab, Youtube 720p and 1080p, Candy Crush Saga (HTML5 games) in Facebook, and WebGL Quake demo
  • 3D graphics – glmark2-es2 and es2gears
  • H.264 Video Playback in Kodi 17.6 and ffplay (FFmpeg player)
  • I/Os – WiringPi installation + test, RTC control

You can see the results in the video below.  Sorry for the “grid effect” on parts of the video.

If you don’t have time to watch the 20-minutes video, basically considering the costs of the board, and 2GB RAM, I’m pleasantly surprised by the performance of the board with accelerated 3D graphics working well in demos and some webGL demos, H.264 hardware decoding in Kodi and FFmpeg working well up to 1080p, and Youtube up to 720p, fast program load times thanks to the eMMC flash module, and decent multi-tasking ability.

For the latter however, you must be aware of the 2GB RAM limitation, as if the memory is almost full (and virtual memory is not enabled), the system will still run, but very very slowly, almost as it had hung. Once I close one or two programs it run normally again.  Some webGL application are not working well (e.g. Google Experiments), but I was told it could because they may be based on OpenGL instead of OpenGL ES. Youtube works well up to 720p in Chromium, but you can also select 1080p, but don’t – just don’t – do it as video will not be smooth. The worst experience in my little test was with Candy Crush Saga which took about 2 minutes 30 seconds to load the game and one level, but once you’ve started playing all is well. I was told it’s because of complex HTML5 code. In the past I played the game on Intel Bay Trail systems with 2GB RAM and 32GB storage, and it loaded reasonably fast, but it’s not directly comparable, as the game was still based on Adobe Flash at the time.

The heatsink gets fairly hot during use up to 80°C under load, and a little above 60 C at idle. That’s normal,  and does not seem to affect performance much. So based on my short experience, if you have a sudden drop in performance, looks at the memory usage, rather than the CPU temperature.

GPIO Support

Let me provide a few more details about GPIO support. WiringPi is not installed by default, as few use GPIOs, but it’s easy enough to install.

We can now list supported GPIOs with the usual command line:

RTC Support

The board also support RTC, and my kit came with an RTC battery so even in case of power failure the time and date will be kept. I could check the date (from NTP), write it to the RTC, and read it back.

Just to make sure, I did a quick test later on, by disconnecting the Ethernet cable, and rebooting the board:

The date and time were still correct, meaning they were automatically retrieved from the RTC at boot time.

Performance Testing – Building the kernel, AV Transcoding, Storage and Network Performance

Just like I did for ODROID-XU3 Lite, I did some real-time test to give an idea of the performance for some tasks like building the Linux kernel, and transcoding a video.

The kernel compilation test also allows use to learn how to build the Linux 4.14 kernel used in the board. I just followed the instructions in the Wiki:

So the kernel build itself took almost 39 minutes with the 32GB eMMC module. That’s much longer than when I built mainline Linux on ODROID-XU3 Lite a couple of years ago, but that’s easily explained because mainline does not have that many modules enabled by default. To complete the build, we also need to install the modules,  zImage and the device tree files:

For reference, the command to install modules processed 1,442 modules… At next reboot, you’ll be using your freshly built kernel.

The next test is (software) transcoding of an MPEG-2 video into MPEG-4.

The output will show some errors, and it will exit prematurely with the output video unplayable:

It looks like aconv (ffmpeg) is attempting to use some hardware decoding / encoding for the transcoding before falling back to “Armv6 NEON”. The transcoding was done at around 7 fps which is close enough to the 8 fps I got last time with ODROID-XU3 Lite. I tried again transcoding MPEG4 to H.264, and this time it worked: