Android Lollipop 5.1.1 GA release for i.MX6 boards

Published on February 27, 2016

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 release a new version of Android 5.1.1 (Lollipop) for all our platforms: BD-SL-i.MX6 (SABRE Lite)Nitrogen6x, Nitrogen6_Max (Quad and QuadPlus), Nitrogen6_SOM, Nitrogen6_SOMv2Nitrogen6_Lite, Nit6_SoloX and Nitrogen6_VM.This release went under the same testing as our previous releases.We now recommend this release for new designs.

For the impatient

You can download images from here:

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 l511*.img.gz | sudo dd of=/dev/sdX bs=1M

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

What's new?

First of all, this release includes all the features that were previously available in our last Android 5.0.0 release. We will only describe the changes brought either by the OS update itself or changes in features that have been enabled in last release.Since the Beta hasn't been publicly available, we will also re-enumerate the features from the Beta.

OS update

Here is a non-exhaustive list of noticeable changes between Android 5.0.0 and 5.1.1:

  • Quick Settings drawer allows now to access some menu such as WiFi selection

wifi_menu

  • Notifications have been heavily changed and now offer an option to temporarily dismiss them

notif_menu

  • Change the system volume level while music is playing
  • Fixes most memory leaks reported in 5.0.0 and 5.1.0

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:

Also, it is worth noting that Freescale/NXP took take of patching the security flaws discovered in the Android media server.

Linux Kernel 3.14.52

This is the first Android release based on a 3.14 kernel which brings:

  • Latest and greatest drivers support
    • Vivante graphics libraries v5.0.11 p7
  • i.MX6 Quad/Dual Plus support
  • i.MX6 SoloX support
  • No more earlysuspend mechanism as recommended by the AOSP folks

Another change is to be noted regarding our display plug-and-play experience. Since the switch to device tree, it has been hard to keep a simple/readable 6x_bootscript that fits all our platforms/displays. So we went ahead and tried another approach having a default node for display timings which U-Boot is in charge to populate. This approach requires an update of U-Boot (see next section).

U-Boot changes

First you need to update U-Boot (after flashing the sdcard image provided above). First you need to download the latest U-Boot binaries available:

Then, you need to set a uboot_defconfig variable which is unique per platform:

  • nit6xlite for Nit6xlite
  • nitrogen6_max for Nitrogen6_MAX
  • nitrogen6q for Nitrogen6x/BD-SL-i.MX6
  • nitrogen6sx for Nit6_SoloX

Below is an example for Nitrogen6x.

U-Boot> setenv uboot_defconfig nitrogen6q
U-Boot> run upgradeu

Then everything should work out of the box again. But in case you wonder how to specify a specific display, here are some useful commands:

U-Boot> fbpanel
 clock-frequency hactive vactive hback-porch hfront-porch vback-porch vfront-porch hsync-len vsync-len
hdmi: 1280x720M@60:m24:74161969,1280,720,220,110,20,5,40,5
 74161969 1280 720 220 110 20 5 40 5
hdmi: 1920x1080M@60:m24:148500148,1920,1080,148,88,36,4,44,5
 148500148 1920 1080 148 88 36 4 44 5
hdmi: 1024x768M@60:m24:64998375,1024,768,220,40,21,7,60,10
 64998375 1024 768 220 40 21 7 60 10
lvds: lg1280x800:j24:71108582,1280,800,48,80,15,2,32,6
 71108582 1280 800 48 80 15 2 32 6
...
U-Boot> setenv fb_lvds lg1280x800
U-Boot> saveenv
U-Boot> reset

The example above uses fbpanel to list all the available settings for this particular platform. Then the LVDS display is set to be the LG1280x800 display by setting fb_lvds. The same can be done for HDMI or LCD displays through fb_hdmi and fb_lcd.Behind the curtain you can have a look at the cmd_hdmi, cmd_lvds and cmd_lcd variables which are now being run from the 6x_bootscript in order to setup the display timings and resolutions.More information on those U-Boot changes on a previous blog post:

Miscellaneous additions

  • Our multi-display/multi-app demo is now part of the standard image
  • ExFAT and NTFS support for all external media
    • A USB drive and/or additional SD card doesn't need to be FAT32 formatted any more to be recognized as a valid external storage.
    • Ext4 support only works with SELinux disabled or permissive since it would require to modify AOSP base sepolicy.
  • Basic Fastboot support
    • Implied to switch to a GPT partition table.
    • Ext4 versions of boot.img and recovery.img are now created.
    • Formatting isn't supported yet due to our legacy layout.
    • Mmc card index has to be fixed in the U-Boot configuration, it is set to flash mmc1 for all configurations except for Nit6xlite:
    • But you can now flash all the images on an already formatted GPT disk as follows:
~/$ adb shell reboot bootloader
~/$ fastboot flash boot $OUT/boot.img
finished. total time: 3.762s
~/$ fastboot flash recovery $OUT/recovery.img
finished. total time: 3.402s
~/$ fastboot flash system $OUT/system.img
finished. total time: 52.153s
~/$ fastboot continue
resuming boot...
  • Support of our HDMI to MIPI daughter board by default
  • F-Droid app store
    • F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device.
    • Although it is not installed on our release by default, it has been tested on our platforms and seemed very interesting so we thought it would be worth sharing it here:
    • fdroid_list Installing another app is now as simple as using Google Play:fdroid_install
    • All the source code is available for both client and server side which means you can easily put that in place for your project/company and control what the users have access to.
    • Here is a quick procedure to install the app to your platform: 
      ~/$ wget https://f-droid.org/FDroid.apk
      ~/$ adb install FDroid.apk
    • Let us know if you'd like to have it installed on our next releases.

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

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