Ubuntu Trusty for i.MX6 boards - September 2014
Published on September 25, 2014
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.
- The Chromium web browser is now accelerated (WebGL and preliminary video decode).
- Now supports WiFi and Bluetooth (with some caveats) on Nitrogen6 Lite.
- Includes the latest GPU patches from the Freescale 3.10.17_1.0.1 release.
- It boots faster through the use of allow-hotplug for the ethernet device
- Full BlueZ (and GUI) support for Bluetooth on Nitrogen6x and Nitrogen6_Max boards.
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.