Linux Kernel 4.14: ODROID-XU3/4/MC1/HC1 Support

Linux Kernel For ODROID

Exynos 5422 is a Samsung System-on-a-chip (SoC) that has been at the core of Hardkernel’s products for several years. Starting with the high-end ODROID-XU3, it has been released later in a more affordable variant, the ODROID-XU3 Lite, went through a completely redesign in the ODROID-XU4 and XU4Q, and recently found itself at the core of the new ODROID-HC1 and MC1, geared towards NAS usage and clusters, respectively.  Initially released with Linux kernel version 3.10, there has been many tries to update the Exynos 5422-based ODROID products to a more recent Linux kernel, with experimental kernels released for versions 4.0, 4.2, 4.4, and 4.8 by the community, until Hardkernel helped developed and released a stable kernel version 4.9.

During each Linux kernel development cycle, the SoC gained more updates in the mainline kernel due to the efforts of Samsung and the community. Thus, it is getting easier to get updated to the latest version of the kernel. In fact, for a while, Exynos 5422-based ODROIDs can use the mainline kernel without modifications. The issue however is that mainline version does not have all the drivers included and some systems won’t work.  The next Linux kernel with Long Time Support (LTS) is version 4.14, due to be released in November. Coincidentally, it was recently revealed that LTS kernel support is being extended to 6 years. This means that version 4.14 will get support until the end of 2022. This is great news for the owners of small, extensible, powerful and inexpensive boards such as the ODROIDs.

This kernel version becomes particularly attractive for the Exynos 5422 ODROIDs, especially since it includes important fixes for the hardware video decoder and encoder (MFC), the hardware scaler and color space converter (GScaler), and a brand new driver for the HDMI CEC, that exposes the device as a infrared remote control.  In addition, there are a myriad of fixes from the version 4.9 maintained by Hardkernel that can benefit ODROID users, such as improvements to the EXT4 and BTRFS filesystems, improvements to the kernel-based virtual machine (KVM), new and updated WiFi drivers, and improvements to the media drivers (for e.g. better TV tuners support).

The community stepped in and started fixing the remaining issues even before the 4.14 kernel is released:

  • Mali drivers were updated to version r20p0
  • Support was added for the Heterogeneous Multi-Processing (HMP) CPU scheduler
  • Fixes for the USB3 ports in the ODROID
  • Fix for the Gigabit Ethernet interface
  • Added support for interfaces such as the power button, SPI, ADC, GPIOs
  • HDMI Sound driver for the ODROID-XU4
  • Improvements for the emmc/sd card including support for higher speeds
  • Improved support for the virtual machine hypervisor
  • Enabled support for the hardware watchdog
  • Added support for the CPU hardware performance counters (PMU)
  • Included the official support for ODROID-HC1 (scheduled for the kernel version 4.15)
  • Added support for extra CPU frequencies, and improved thermal characteristics
  • Added support for Samsung CPU ASV tables to improve CPU voltage selection and thermals

With most fixes and patches developed or imported from kernel 4.9, kernel version 4.14 is already ready for public testing. Those interested can download, compile, and install the kernel on the official Hardkernel Ubuntu distribution using these instructions:

$ git clone --depth 1 --single-branch -b odroidxu4-4.14.y https://github.com/mihailescu2m/linux
$ cd linux  
$ wget https://gist.github.com/mihailescu2m/115c9e2135f9b12f3d05669e18137c3d -O .config
$ make -j 8 zImage dtbs modules
$ sudo cp arch/arm/boot/zImage arch/arm/boot/dts/*.dtb /media/boot
$ sudo cp .config /media/boot/config
$ sudo make modules_install
$ kver=`make kernelrelease`
$ sudo cp .config /boot/config-${kver}
$ cd /boot
$ sudo update-initramfs -c -k ${kver}
$ sudo mkimage -A arm -O linux -T ramdisk -a 0x0 -e 0x0 -n initrd.img-${kver} -d initrd.img-${kver} uInitrd-${kver}
$ sudo cp uInitrd-${kver} /media/boot/uInitrd

Feedback and testing results are welcomed on the “Kernel 4.14 debugging party” forum thread at http://bit.ly/2ltTPbD.

Be the first to comment

Leave a Reply