Ubuntu Trusty for i.MX6 boards - September 2014

Published on September 25, 2014

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've just uploaded a new image of Ubuntu Trusty for our i.MX6 boards that contains some nice new features that deserve some explanation.

Since the the initial release contains proper packaging, you could upgrade using sudo apt-get update, sudo apt-get dist-upgrade, and sudo apt-get install of a couple of packages (chromium-webgl and nitrogen-firmware).
This is a little inconvenient, though, and an updated image is easier.


For the impatient


This image contains Freescale-licensed content, so you will need to register on our web-site and log in before you can accept the license agreement and download the image from here:

This image contains support for all of our publicly available i.MX6 boards, though using it with the Nitrogen6 Lite requires a couple of tweaks (described below).

Programming the image

The image is a slightly-less-than-4GiB image file containing the partition table, so you can copy it to an SD card or SATA drive on /dev/sdc using zcat and dd like so:

~/Downloads$ sudo umount /dev/sdc* ~/Downloads$ zcat 20140925-nitrogen*.img.gz | sudo dd of=/dev/sdc bs=1M ~/Downloads$ sync

Or you can use Alex Page's USB Image Tool under Windows.

If you're using our latest U-Boot and a Nitrogen6 Max board, you can use the new USB Mass Storage Gadget to program the eMMC. If not, there were some notes in our first release that describe a more complicated way of programming eMMC.


Source code access


The kernel image is based on the boundary-imx_3.10.17_1.0.1_ga branch of our Github kernel repository using nitrogen6x_defconfig, tweaked slightly to include support for the Broadcom 4331 Wi-Fi/Bluetooth module on our Nitrogen6 Lite board.


Highlights of this release

Chromium Browser acceleration


Several Desktop shortcuts highlight support for various features of the Chromium Browser.


WebGL:





And HTML5:





And HTML5 video acceleration.





Note that H.264/MP4 video is not yet working.

Many thanks to Carlos Giani for all of his hard work integrating i.MX acceleration into the Chromium browser.


Bluetooth support on Nitrogen6x/6Max


On the Nitrogen6X and Nitrogen6_Max boards, the Bluetooth stack is fully integrated using the BlueMan package, as shown in the following screen-shot:




Using this image on Nitrogen6_Lite


There are a few quirks to the use of this image on Nitrogen6 Lite.


In particular:

  • The boot script requires variable dtbname in order to identify the board as a Nitrogen6_Lite,
  • The default settings of 128MiB of GPU memory are excessive, since the Nitrogen6_Lite board only has 512MiB, and
  • The Bluetooth stack is not fully integrated, and conflicts with the Nitrogen6X/6Max boards because a different chip is used.

We have a fairly easy work-around for the first two in the form of a text file named /uEnv-nit6xlite.txt. The boot script is configured as shown here to look for a file named uEnv.txt and read a set of environment variables from the file if found using the env import command of U-Boot.

If you re-name or copy the file uEnv-nit6xlite.txt to uEnv.txt on the SD card after you copy from the image downloaded, you'll tell U-Boot to read these two variables:

gpumem=67108864
dtbname=imx6dl-nit6xlite.dtb

You can also set these at the U-Boot prompt by using the setenv command, but that's just a tad harder, and requires access to a serial adapter:

U-Boot > setenv gpumem 67108864 U-Boot > setenv dtbname imx6dl-nit6xlite.dtb U-Boot > saveenv

The Bluetooth conflict is overcome by manually installing a package named brcm-patchram-plus-boundary that has the tool needed to connect the Broadcom Bluetooth device to the Bluetooth subsystem:

root@nitrogen:~# apt-get install brcm-patchram-plus-boundary root@nitrogen:~# sync && reboot ...

The full Bluetooth stack is not (yet) functional, though, so we've limited testing to the use of the command-line tools:

root@nitrogen:~# hciconfig hci0 hci0: Type: BR/EDR Bus: UART BD Address: 00:00:00:00:00:00 ACL MTU: 1021:8 SCO MTU: 64:1 DOWN RX bytes:574 acl:0 sco:0 events:27 errors:0 TX bytes:411 acl:0 sco:0 commands:27 errors:0 root@nitrogen:~# hciconfig hci0 up root@nitrogen:~# hcitool -i hci0 scan Scanning ... C4:85:08:01:FB:E3 devicename

This is effectively the same situation we were in with the TiWi Bluetooth module in our first release, so we're making progress!

Keep in touch

We hope this helps you get started running on Ubuntu and our i.MX6 boards.

As always, please give us some feedback and let us know how things work for you.