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:


Time for some storage benchmark, first the eMMC flash with iozone:


So that means up to 68MB/s sequential write, 194MB/s sequential read,  and pretty high values for random I/Os too (175MB/s & 69.5MB/s).

I’ve also tested USB 3.0 sequential speed using a hard drive starting with NTFS:


We can see the board can max out the performance achivable with a mechanical drive (around 100 MB/s) both for write and read speed. Using an SSD should yield even better results.

Final benchmark: iperf to test full duplex Gigabit Ethernet.


Performance is not too bad, but during a full duplex transfer one direction is limited to around 400 Mbits/sec. Let’s repeat the test but only for

  • Download

  • Upload


It cannot get much better than that.

Checking out Ubuntu 18.04 MATE on ODROID-XU3 Lite

So far, we’ve test Ubuntu 18.04 on ODROID-XU4Q board that released last year. It’s one thing to support a one year old board, and another to support a board launched nearly four years ago. But if we look at the eMMC module’s boot partition we can find dtb files for all Exynos 5422 boards.

So I took out the eMMC flash module from ODROID-XU4Q, dusted out my old ODROID-XU3 Lite board, and insert the module in place of the 16GB one I had.

Click to Enlarge

I connected the micro HDMI cable, and power supply, and within a few seconds the MATE desktop showed up, and after some short tests everything seemed in order. The following output from the terminal shows Ubuntu 18.04 running on ODROID-XU3 hardware:


Not bad for an “old” board.

All in all Ubuntu 18.04 on ODROID-XU4Q board was a fairly satisfying experience, despite some performance issues with Candy Crush Saga, in most cases the system performed well and reliably with fast programs loading times, H.264 hardware video coding, 3D graphics acceleration for OpenGL ES (3.1), and most features working as expected. As we’ve seen there are limitations, but this is to be expected for a low cost board.



ODROID-XU4Q can be purchased for $59 and up plus shipping on Hardkernel, Amazon, Ameridroid, and other distributors. You may also consider accessories like power supply, enclosure, eMMC reader, and RTC battery.

Leave a Reply

5 Comments on "Review of Ubuntu 18.04 on ODROID-XU4Q Development Board"

avatar
  Subscribe  
newest oldest most voted
Notify of
tkaiser
Guest

Some additions:

* It’s not a ’12V/4A’ but a 5V PSU
* The more primitive eMMC adapter is the better choice on fast ports (I read/write with 80 MB/s on my MacBook).
* eMMC performance test looks weird since lower numbers with larger blocksizes (throttling occured?)
* Would be interesting to repeat tests with activated zram and Ubuntu defaults (using up to half of the RAM)

blu
Guest

I got really low numbers from an old Odroid eMMC (“black”) in combination with the ‘primitive’ adapter and several SD HS slots, while getting 30-ish MB/s using the same adapter with a decent USB3 reader. Go figure.

tkaiser
Guest

And wrt iperf tests: this tool is not really a network throughput benchmark since way too often simply limited by a CPU bottleneck. On a big.LITTLE architecture like here when iperf is ending up on one of the little cores low throughput can be related to 100% CPU utilization and the following might draw a totally different picture:

Also iperf3 is a better tool since able to report retransmits that can trash performance and doing 2 second updates which is nice to watch since huge performance drops over time usually indicate a problem somewhere else (e.g. the scheduler moving the iperf3 task from a slow to a fast CPU core and vice versa or cpufreq problems)