// We are glad to deliver the latest Android Oreo 8.0.0 GA release for most our i.MX6 platforms:
- BD-SL-i.MX6 (SABRE Lite)
- Nitrogen6x
- Nitrogen6_Max (Quad and QuadPlus)
- Nitrogen6_SOM
- Nitrogen6_SOMv2
- Nitrogen6_Lite
- Nit6_SoloX
- Nitrogen6_VM
For the impatient
You can download the Android Oreo images from here:
- o800-nitrogen6x-20180907.zip for Nitrogen6X/MAX/SOM/SOMv2/VM, BD-SL-i.MX6
- o800-nitrogen6x-qca-20180907.zip for same platforms but with Silex Module instead of TiWi-BLE
- o800-nit6xlite-20180907.zip for Nitrogen6_Lite
- NOTE: For boards with only 512MB of RAM, KitKat 4.4.3 is the best option.
- o800-nitrogen6sx-20180907.zip for Nit6_SoloX
These archives include all the files to be flashed using fastboot. First you need to enter fastboot mode which can be done from U-Boot prompt, enter the following command:
=> fastboot 0
Note that you'll need U-Boot v2017.07 or above for this to work and the OS to boot. Once the platform is in fastboot mode, you simply need to call the flashing script: ~/$ unzip o800*.zip -d o800-release
~/$ cd o800-release
~/o800-release$ ./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:o800-release> deviceboundaryscriptsflash_fastboot.bat nitrogen6x
Some might wonder why we deliver this release as fastboot images, here are some of the reasons:
- Fastboot is much faster than flashing regular sdcard images
- 2 minutes vs. 15+ minutes in most cases
- It takes the same amount of time to flash a storage, no matter its size
- Full sdcard images would take forever when the storage is > 4GB
- That way we don't need to maintain many scripts/indexes since it uses GPT part names
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
Google provides a list of notable changes for developers:
But the main change comes in the overall architecture since Treble, more in next section.
Treble or not Treble?
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
- No more modification to init/recovery dynamically mount partitions
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
. So you might ask:
- Can't we use a newer AOSP version already? Why is this an Oreo 8.0 release and not Pie 9.0?
- Well as said above, this BSP isn't fully Treble-compliant yet
- Some of the NXP changes are still required inside the core components of the AOSP
- But we'll hopefully get there really soon, just give it a couple of release for all the engineers to know their way around Treble
If you're interested about learning more about Treble, we recommend the following links:
- AOSP documentation about Treble
- Android Treble: Blessing or Trouble? (Karim Yaghmour)
- Android's HIDL: Treble in the HAL (Karim Yaghmour)
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.2). Also, as some people already asked about it, this kernel fixes the SPECTRE vulnerabilities found on the Cortex-A9.
Goodbye 6x_bootscript!
As mentioned in our 2017.07 U-Boot release (more than a year ago), 6x_bootscript
(formerly 6q_bootscript
) was introduced back in 2012 when there was no standard for booting an OS. Since then, U-Boot included such standard:
The default bootscript name is now boot.scr
for any OS which makes much more sense that our 6x_bootscript
that wasn’t only for i.MX6x any more. So what does it mean?
- The
boot/
partition now contains aboot.scr
file instead of6x_bootscript
- You'll need U-Boot v2017.07 or above for the OS to boot
Boundary Devices additions
Just like our previous releases, this one includes unique features that only Boundary Devices provides:
- Optimized Camera HALv3 version
- With continuous Auto-Focus support!
- 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 onlyroot
/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
- A very simple
BOARD_SU_ALLOW_ALL := true
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.0.0_1.0.0-ga
~/myandroid$ repo sync
~/myandroid$ source build/envsetup.sh
~/myandroid$ lunch
... choose nitrogen6x / nit6xlite / nitrogen6sx from the list of boards
~/myandroid$ make 2>&1 | tee build.out
As always, let us know your experiences (both good and bad) when you test out this image.