Skip to content

Android Pie 9.0.0 for Toradex Apalis i.MX8QM 1.0B

Android Pie 9.0.0 for Toradex Apalis i.MX8QM V1.0B

by Roberto Sartori

Introduction

The Apalis iMX8 is a small form-factor System on Module based on the latest NXP i.MX 8 SoCs. The most performant i.MX 8 SoC, the i.MX 8QuadMax, features 2x Cortex-A72 and 4x Cortex-A53 application processor cores, and 2x additional Cortex-M4F, which also include a FPU, microcontroller cores. The integrated high-performance dual GC7000 3D GPU supports Open GL ES 3.1 and Vulkan on up to 4x 1080p or one 4K display.

The Apalis iMX8 is pin-compatible with the other SoMs in the Apalis family. This allows existing Apalis-based products to easily scale and migrate to the new Apalis iMX8. All Toradex's Apalis Carrier Boards are compatible with Apalis i.MX8.

Kynetics, as part of the Toradex early access program, has worked on the Android Kernel for the Toradex Apalis i.MX8QM and built an image based on Android 9.0 (Pie) compatibe with the Ixora carrier board.

Release Notes

Here are some important notes about our build:

  • Android 9.0, U-Boot 2018.03, Linux Kernel 4.14
  • Based on NXP release: p9.0.0_2.0.1-ga
  • Compatible with Toradex Apalis i.MX8QM V1.0B with the Ixora carrier board V1.1A
  • Userdebug build with permissive SELinux and disabled DM-Verity
  • Application updates can be deployed by using Update Factory: Learn more about our Android client for Update Factory.
  • This is an unsupported release. For commercial support please contact us.

Flash Instructions

The following steps will guide you through the installation of Android 9.0 on the Apalis i.MX8QM.

Hardware Requirements

  • Toradex Apalis i.MX8QM V1.0B (SOC Rev. B0) with the Ixora carrier board, V1.1A
    • SOM with wifi and bluetooth support, 4GB of RAM and 16GB of eMMC
  • The Toradex 10 inches LVDS display (1280x800)
  • A USB mouse to use as an input device
  • A USB drive formatted in FAT32 (at least 4 GB)
  • A host computer running GNU/Linux
  • Toradex serial cable adapter as per this serial console tutorial

Optional for debugging:

  • Micro USB cable - adb access

This release supports boards shipped in Oct 2018 and later. If you are experiencing random reboots at runtime you are likely affected by an issue documented on the Toradex Errata at: https://developer.toradex.com/products/apalis-som-family/modules/apalis-imx8#errata

Software Requirements

  • The Apalis board running the Toradex Easy Installer
  • Kynetics Android 9.0 Easy Installer archive, downloadable here
  • Android platform tools installed on the host computer - Optional for debugging

Installation procedure

  • Download the Toradex Easy Installer archive for the Apalis iMX8QM version 2.0b2 here
  • Unpack the Toradex Easy Installer archive in the root directory of the FAT32 formatted USB drive
  • Unpack the Kynetics Android 9.0 Easy Installer archive in the same USB drive
  • Insert the USB drive in the top USB port of the connectox X8 on the Ixora board
  • Connect the USB mouse to the USB port on the connector X7 on the Ixora board

The USB drive folder structure should be like this:

  • KyneticsAndroidPieDirectory/
    • binaries/
    • image.json
    • ...
  • tezi.itb
  • flash.bin
  • hdmitxfw.bin
  • ...
Part 1: load the Toradex Easy Installer

If your board is already running the Toradex Easy Installer, skip Part 1 and start from the Part 2.
Note that some USB drives may not be recognized on U-Boot. If this happens, please try with a different USB drive.

  • Connect the serial cable connector to the X22 connector on the Ixora board and to the Linux host pc
  • Power up the board and stop it with any button on the U-Boot prompt
  • From the U-Boot prompt, flash the bootloader provided with the Toradex Easy Installer archive:
=> env default -a
=> usb start
=> fatload usb 0:1 ${loadaddr} flash.bin
=> setexpr blkcnt ${filesize} + 0x1ff
=> setexpr blkcnt ${blkcnt} / 0x200
=> mmc dev 0 1
=> mmc write ${loadaddr} 0x0 ${blkcnt}
  • Hardware reset the board with the reset button SW2
  • Stop the boot on the U-Boot prompt with any button
  • From the U-Boot prompt, start the Toradex Easy Installer:
=> env default -a
=> setenv bootargs "quiet console=ttyLP1,115200 earlycon=lpuart32,0x5a070000,115200 video=HDMI-A-1:640X480 rootfstype=squashfs root=/dev/ram autoinstall ${teziargs}"
=> usb start
=> setenv ramdisk_addr_r 0x94400000 ;setenv fdt_high ;fatload usb 0:1 ${ramdisk_addr_r} tezi.itb
=> fatload usb 0:1 ${hdp_addr} ${hdp_file}
=> hdp load ${hdp_addr}
=> bootm ${ramdisk_addr_r}
Part 2: flash Android

The Toradex Easy Installer should automatically recognize the Kynetics Android 9.0 image on the RNDIS tab of the Easy Installer interface. Using the mouse, start the flashing procedure.
When the flashing has ended, power cycle the board with the SW2 reset button and Android should start.

Source code

The source code for this build is available here.
The archive with the sources also include the documentation needed to build and flash Android.

Q&A

  • Is ADB available?
    • Yes, ADB works using the microUSB port on connector X8. Note that in order to have ADB working the port should work as USB device port: the jumper JP2 should be configured as open. If the jumper is closed, the port works as USB host port and it is possible to use it with a mouse or a USB drive. Refer to the Ixora datasheet for further information.
  • Is the audio working?
    • Yes. By default, audio is routed to the 3.5mm jack on the X12 connector. It is possible to route the audio to the HDMI port changing a property from adb: $ setprop persist.audio.hdmi_out 1. The changes will take effect after a reboot.
  • Is fastboot working?
    • Yes, however the first time fastboot is used it is necessary to unlock the device, with the command fastboot flashing unlock. This will wipe the data on the device.
  • Is the HDMI display supported?
    • Yes, the HDMI is supported by default. If the Toradex 10 inches LVDS is not connected, Android will use the HDMI port.

Enjoy the Art of Coding™