Odroid XU4

I've been looking for a power efficient and not too expensive replacement for my Zotac AD10. I have previously tested a Raspberry Pi B, and later on a Beaglebone Black; but both had their shortcomings. The Pi was unreliable because of the SD storage, and i found the lack of a power button particularly annoying. The Beaglebone Black, relying on eMMC, was more resilient, but the HDMI output was acting weird, so they both didn't cut it. ARM platforms are an ideal solution though - their growing popularity means they're often supported by multiple major distributions (especially Debian), and they're a fraction of the cost for a complete x86 setup. So when I was pointed to the Odroid XU4, which comes with a physical power button, can use eMMC memory, and should idle around 2W, I decided to order one.

Hardware specifications

  • Samsung Exynos 5422 Cortex™-A15 2Ghz and Cortex™-A7 octacore CPU
  • Mali-T628 MP6 GPU
  • 2 GiB DDR3L RAM
  • 8 GB eMMC
  • Gigabit Ethernet
  • regular HDMI out
  • 2x USB 3.0, 1x USB 2.0
  • microSD card slot

Hardkernel, the manufacturer, is nice enough to include a power supply in the package. They also offer eMMC modules (or microSD cards) with Linux pre-installed - I picked the minimum size (8 GB). They come with Ubuntu or Android. You also get a microSD adapter to flash the eMMC module with. Hardkernel ships an older LTS kernel (3.10). The upside of course is this will be maintained for a while, and that's where my AD10 was problematic - for HDMI audio to work in a command line environment, I was stuck with kernel 3.11. Here, everything works out of the box. All I needed to do was install MPD, mount the music NFS share, make sure the HDMI output was kept active - append consoleblank=0 to your kernel command line in /boot/boot.ini - and the box was good to go.

I only found out after ordering that Hardkernel reports their C1 heatsink to be compatible with the XU4. If you get it, just don't apply the TIM.

For older Debian versions on the XU4, see the archived notes on Debian 8/9/10.

Installing Armbian 11 'Bullseye'

Flashing Armbian is rather straightforward, although the nand-sata-install script did not adapt the UUID of the eMMC root partition - it was still pointing to the µSD root instead of the eMMC one. You can use dd just like with most other Linux images, or tools like Etcher e.g. (see the link). I used the Bullseye server image, which is experimental, both because it uses kernel 5.4 and the Bullseye userland (which is Debian Testing for now). Trying the 5.0 kernel Hardkernel themselves made available broke HDMI audio for me, so I wanted to make sure there was a migration path to a newer kernel. Armbian offers you a dedicated configuration tool (armbian-config) which e.g. allows you to switch easily between available kernels, so a rollback to 4.14 (which is confirmed working) would be smooth and easy.

Whereas on (more or less) vanilla Debian 9/10 I'd need to add some hackery to /etc/rc.local to limit clock speeds, Armbian allows you to set that through armbian-config. It looks like you do not need to set fan trip points anymore either - the contents of /sys/devices/virtual/thermal/thermal_zone0/trip_point_*_temp are what I used to set manually on Debian 9/10. So progress all across the board.

HDMI audio defaults to mono

Armbian detected the HDMI out as a mono audio device; you can fix this by defining an /etc/asound.conf like this:

pcm.!default {
    type plug
    slave {
            pcm "hw:0,0"
            }
    }

ctl.!default {
    type hw
    card 0
}

Hardware on/off button

I kind of hoped (naively, I guess) that the presence of a hardware button would mean I could plug in the device and push that button to start it. Alas, it does not - the moment you plug it into a wall socket, the Odroid will boot up. It does allow you though to shut it down - it's not clear if this happens cleanly or not; it certainly works, but the VFAT /boot partition always has its dirty bit set next time it comes up. Either way: shutdown works, and after that, you can boot up just fine as well by pushing the power button.

General impression

The Odroid XU4 feels very responsive, especially compared to the AD10 it is replacing, and which is, after all, still an x86 system. I am not sure whether the AD10's sluggishness was due solely to the CPU or the 5400 RPM HD; regular operations like package management were always slow. So far, I'm very happy with this little machine.

Updated: 2020-10-12