Android Nougat 7.1.1 release for i.MX6 boards

Published on April 7, 2017

Archived Notice

This article has been archived and may contain broken links, photos and out-of-date information. If you have any questions, please Contact Us.

//

We are glad to deliver the latest Android Nougat 7.1.1 GA release for most our i.MX platforms:

Android Nougat

We now recommend this release for new designs.


For the impatient

You can download the Android Nougat images from here:

Update 20170426 changelog:

  • Improved BT rfkill management for Silex module
  • Fixed CMA default amount for MAX boot
  • Fixed HDMI unblank issue

Update 20170711 changelog:

  • Update kernel revision to latest
    • Added support for i.MX6DL variant of SOM2
  • Better camera support:
    • Can now set back/front_camera_name/orient from U-Boot

Update 20170824 changelog:

  • Update kernel revision to latest
    • New (better) driver for GSLx680 touch controllers
  • Fixed CMA issue once and for all!

As usual, you'll need to register on our site and agree to the EULA because it contains Freescale content.

The image is a 4GB SD card image that can be restored using zcat and dd under Linux.

~$ zcat n711*.img.gz | sudo dd of=/dev/sdX bs=1M

For Windows users, please use Alex Page's USB Image Tool.

What's new?

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

Android Nougat updates

Here is a non-exhaustive list of noticeable changes between Android 6.0.1 and 7.1.1:

  • Security enhancements
    • SELinux policies more strict
    • File-based encryption: better isolate and protect files for individual users
  • UI updates
    • Customizable Quick Settings: Rearrange your Quick Setting tiles so you can get to what you want faster

Quick Settings icons

    • Settings suggestions: Within Settings, get suggestions for how to get even more out of your device

Settings Suggestions

    • 'Clear all' in Overview: Instantly close all of your apps running in the background by tapping 'clear all' in Overview

Clear All

  • Browser app is gone
    • It is instead replaced with a Browser2 which offers a simplistic WebView
    • Let us know if that affects your application, there are some people porting the old app forward
  • Multi-Window mode
    • Works a lot better than the experimental version of Marshmallow
    • Simply perform a long press on the Overview button (square next to home button) to trigger that mode

Multi-Window

Google also provides a list of notable changes for developers:

For a more complete changelog between the two versions, we invite you to look at the very nice Opersys website which lists all the different commits between every version:

Same as before, TiWi-BLE offer the WiFi-P2P feature (also called WiFi Direct) but its firmware has proven not be stable.

In case you want to disabled that feature to have a more stable connection, enter the following command line:

~/$ adb shell 'setprop persist.sys.wifidirect disabled'

Linux Kernel 4.1.15

This Android Nougat release is based on a 4.1.15 kernel. It therefore benefits from all our latest drivers/fixes as well as newest Vivante graphics libraries (v6.2.0.p2).

As a reminder, kernel 3.14 and above require to use a modern U-Boot so please make sure to update U-Boot.

U-Boot v2017.03

As said in the previous section, using a Linux Kernel >= 3.14.x now requires to have a recent U-Boot version due to our new display detection mechanism.

Moreover, U-Boot versions prior to v2017.03 did not support sparse images properly.

More information on those U-Boot changes on a previous blog post:

As of this writing, the latest version we support is the 2017.03. You can download binaries directly from this webpage:

Boundary Devices additions

  • Camera HALv3 improvements
    • This releases offers continuous autofocus support for our cameras
    • Also the 'focus to area' feature is fully working for our OV5640_MIPI
      • The OV5642 firmware seems to be limited to that regard
    • Below is an example where we force the focus to happen at the bottom right corner instead of center:

Area focus

~/myandroid$ sed -i 's/TI/QCA/' device/boundary/nitrogen6x/wifi_config.mk
    • Then in U-Boot you need to enable the proper rfkill node:
=> setenv cmd_custom 'fdt set bt_kim status disabled; fdt set bt_rfkill status okay' => savee

BLE advertising

  • Fastboot support improvement
    • Requires to use latest U-Boot v2017.03 for sparse support
    • Created some convenient scripts to generate a GPT binary and flash an empty platform:
~/myandroid$ export PRODUCT=nitrogen6x ~/myandroid$ ./device/boundary/scripts/create_gpt.sh 3600 ~/myandroid$ ./device/boundary/scripts/flash_fastboot.sh
  • ExFAT, NTFS and Ext4 file systems are supported for all external media
    • Even with SELinux enforced!
  • Display rotation setting from U-Boot
    • This release allows you to set the default orientation from U-Boot
    • Avoids having to modify the image/source code just for that
=> setenv hwrotation 270 => saveenv => reset
  • Rooted device (su)
    • Since Koush app isn't supported anymore, we didn't have a root option
    • Decided to integrate LineageOS su binary but without modifying the core OS
    • It gives a simple way to provide 'su' capability to your app
    • To enable it, you need to add the following to your init.rc:
on boot start su_daemon service su_daemon /system/xbin/su --daemon disabled
    • By default, only privileged/system apps can use 'su'
    • 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

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 Nougat source code:

~/$ mkdir myandroid ~/$ cd myandroid ~/myandroid$ repo init -u git://github.com/boundarydevices/android-manifest.git -b boundary-imx-n7.1.1_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.