Android Oreo 8.1.0 release for Nitrogen8M

Published on July 17, 2018

// We are glad to deliver the latest Android Oreo 8.1 GA release for most our i.MX8MQ Nitrogen8M platform. Android Nougat


For the impatient

You can download the Android Oreo images from here: Update 20181120 changelog:
  • Update Kernel/U-Boot to latest
  • Fixes for bootaux
  • LTK0680YTMDB mipi display support
Update 20181108 changelog:
  • Fixed DCSS (HDMI) brightness issue
  • Update Kernel/U-Boot to latest
Update 20181011 changelog:
  • Fixed camera initialization
  • Update kernel to latest (v4.9.130)
  • Fixed audio to be like i.MX6 releases:
    • Audio always goes to WM8960 codec by default
    • In order to force HDMI output for all sounds: adb shell setprop persist.audio.hdmi_out 1
  • Improved SDIO performances (WiFi, eMMC)
Update 20180828 changelog:
  • Switch to U-Boot v2018.07
    • Allow to configure MIPI display
    • Better USB3.0 support
  • Update kernel to latest
    • Merged stable release v4.9.117
    • Various drivers improvements (camera, display)
  • Fixed OTA update issues
This archive includes all the files to be flashed using fastboot. First you need to enter fastboot mode which can be done in two different ways:
  • Way #1: Press the "FASTBOOT" button on the board while powering it up, U-Boot should automatically start fastboot
OR
  • Way #2: From U-Boot prompt, enter the following command:
=> fastboot 0 Once the platform is in fastboot mode, you simply need to call the flashing script: ~/$ unzip o810-nitrogen8m-*.zip -d o810-nitrogen8m ~/$ cd o810-nitrogen8m ~/o810-nitrogen8m$ ./device/boundary/scripts/flash_fastboot.sh Note that you can also use fastboot from a Windows Host PC, see following blog post to learn how: C:o810-nitrogen8m> deviceboundaryscriptsflash_fastboot.bat nitrogen8m Note that it is recommended to use a standard USB2.0 mini-USB cable for fastboot to work, it has been reported that U-Boot has some issues with USB3.0 OTG cable. For those wishing to see how this release looks like on the platform, please make sure to read this blog post: For those interested in performances of the i.MX8M, please make sure to read this blog post:

What's new?

This section will only describe the changes brought either by the OS update itself or modified/added features.

Android Oreo OS updates

The main UI difference you might notice, compare to our previous releases for i.MX6, is the change of launcher app, since we switched from Launcher2 to Launcher3: launcher3Google also provides a list of notable changes for developers:

Linux Kernel 4.9.x

This Android Oreo release is based on a 4.9.x kernel. It therefore benefits from all our latest drivers/fixes as well as newest Vivante graphics libraries (v6.2.4p1.2). Just like our other 4.9.x branches, we will include latest security updates to it. As of this writing, the kernel already includes fixes up to v4.9.111 although NXP only released the v4.9.78 version.

Boundary Devices additions

Just like our previous releases, this one includes unique features that only Boundary Devices provides:
  • Optimized Camera HALv3 version
    • This releases offers continuous autofocus support for our cameras
  • Support for new 802.11b/g/n/ac + BT4.1 Silex Module
  • Display rotation setting from U-Boot
=> setenv hwrotation 270 => saveenv => reset
  • Rooted device (su)
    • A very simple su application is present, allowing only root / system / shell to use it by default
    • If you want any app to be able to use (at your own risks) add the following to your BoardConfig.mk
BOARD_SU_ALLOW_ALL := true But the most notable change relies in the source code and its architecture. Indeed Oreo brought a new architecture called Treble in order to improve BSP porting from one version of AOSP to another. While this release isn't entirely compliant with Treble, it did improve a lot:
  • All vendor-specific components are now properly placed under the /vendor partition
    • Platform firmwares (VPU, WiFi, BT)
    • HAL libraries (camera, lights, sensors, etc...)
    • Proprietary libraries (GPU, VPU, codecs)
    • Platform configurations (features, permissions)
    • 3rd -party apps (FslOTA, Ethernet)
  • As few changes to AOSP core framework as possible
    • No more modification to init/recovery dynamically mount partitions
      • Using GPT partition names instead
    • No more addition of filesystems support
      • Only sdcardfs should be used now
The goal is to be able, in the future, to just flash a new OS version system.img which will work nicely with the previous vendor.img. We hope you'll enjoy that new partitioning and that you'll find it easier to navigate through.

Source code access

For the newcomers, please make sure to read our "Android Getting Started Guide" since it contains all the information you need to download, build and flash an Android image. For those already familiar with our releases, here is a condensed version to get the Android Oreo source code: ~/$ mkdir myandroid ~/$ cd myandroid ~/myandroid$ repo init -u git://github.com/boundarydevices/android-manifest.git -b boundary-imx-o8.1.0_1.3.0_8m-ga ~/myandroid$ repo sync ~/myandroid$ source build/envsetup.sh ~/myandroid$ lunch nitrogen8m-eng ~/myandroid$ make 2>&1 | tee build.out As always, let us know your experiences (both good and bad) when you test out this image.