Linaro on Freescale i.MX6Q Sabre Lite Board

i.MX6x SABRE Lite Board is a low-cost development platform featuring the powerful i.MX 6Quad Application Processor. The hardware specifications for the Sabre Lite Board are the following:

  • Quad-Core ARM® Cortex A9 processor at 1GHz per core
  • 1GByte of 64-bit wide DDR3 @ 532MHz
  • Three display ports (RGB, LVDS, and HDMI 1.4a)
  • Two camera ports (1xParallel, 1x MIPI CSI-2)
  • Multi-stream-capable HD video engine delivering H.264 1080p60 decode,1080p30 encode and 3-D video playback in HD
  • Triple Play Graphics system consisting of a Quad-shader 3D unit, and a separate 2-D and separate OpenVG Vertex acceleration engine for superior 3D, 2D and user interface acceleration
  • Serial ATA 2.5 (SATA) at 3Gbps
  • Dual SD 3.0/SDXC card slots
  • PCIe port (1 lane)
  • Analog (headphone/mic) and Digital (HDMI) audio
  • 10/100/Gb Ethernet
  • 10-pin JTAG interface
  • 3 High speed USB ports (2xHost, 1xOTG)
  • 1xCAN2 port
  • I2C
  • General Purpose I/O for Device Control

Getting Started

Boot from SD

By default, the SabreLite boards come with u-boot which is loaded from the SPI NOR flash. These boards need to be reflashed with a small SD card loader to support boot from SD card. This small SD card loader will be flashed into the SPI NOR, the board will still boot from SPI NOR, but the loader will in turn request the BootROM to load the u-boot from SD card.

The respective binaries can be downloaded from the attachments of this page:

To update the SPI-NOR on the SABRE Lite board without the manufacturing tool, use the following procedure:

1. Write the iMX6DQ_SPI_to_uSDHC3.bin SD card loader onto a full size (not micro) SD card using:

sudo dd if=iMX6DQ_SPI_to_uSDHC3.bin of=/dev/sdx

This writes SD card loader at address 0 of the SD card.

Note: Use the uSDHC3 binary! The contains two binaries, one to use the micro SD slot SD4 on the top of the board, one to use the full size SD3 slot at the bottom of the board. As all Linaro images are built to use the SD3, use iMX6DQ_SPI_to_uSDHC3.bin.

2. Put this SD card into the slot for the full sized SD card (SD3 on the bottom of the board)

3. Power-up the SABRE Lite, press “space” to enter command mode in uBoot and enter the following commands:

MX6Q SABRELITE U-Boot > mmc dev 0
MX6Q SABRELITE U-Boot > mmc read 0x10800000 0 200
MX6Q SABRELITE U-Boot > sf probe 1
MX6Q SABRELITE U-Boot > sf erase 0 0x40000
MX6Q SABRELITE U-Boot > sf write 0x10800000 0 0x40000

4. done.

In case you somehow do not succeed with this procedure you will have to use the manufacturing tool from Freescale which can be downloaded from here:

There is a special profile for Linaro which should be added to the MFG tool profiles which is attached to this page:

In order to reflash the SPI-NOR. In that case please let me know and I can send you instructions how to program the new loader with the manufacturing tool.

Install linaro-image-tools and qemu-user-static

The tool to create a bootable image is called linaro-media-create, and is provided by package linaro-image-tools. linaro-media-create will use qemu to install and run code while building the image. You need to install the latest qemu-user-static package as well.

sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get update
sudo apt-get install linaro-image-tools
sudo apt-get install qemu-user-static

Downloading Linaro Evaluation Builds (LEB)

To get the latest Ubuntu LEB snapshots (for Oneiric), one can download from:

If a full netbook experience is not necessary, one can download the Nano deveoper build to test some basic features in console command line mode. The Nano build can be downloaded from:

Downloading Hardware Pack

The releases of hardware pack for i.MX6Q SabreLite board can be obtained from:

Creating Your Own Bootable SD Card

Insert the SD card, check with command 'dmesg | tail' to see which device it's corresponding to. For example, assume it's /dev/sdc:

linaro-image-tools/linaro-media-create --mmc /dev/sdc --dev mx6qsabrelite --hwpack hwpack_linaro-lt-mx6_20yymmdd_armel_supported.tar.gz --binary linaro-o-ubuntu-desktop-tar-20yymmdd-0.tar.gz

Provide the sudo password when prompted and wait until finished.

Plug the SD card to the SabreLite board and power on.

In the headless configuration, just connect a serial adapter (115k, 8n1 no flow control) and plug in the SD card; it should then boot into Linaro.

Test, report and fix bugs

Test the generated image, and should you find any issues, file a bug on launchpad:

And follows by discussion and fixing of this bug.


Building the Kernel from source

The kernel source from the landing team is available at:

  • git://

The branches for different kernel versions will be named like below:

  • lt-3.2-imx6

And so on, the corresponding branches with debian packaging are named as:

  • lt-3.2-imx6-ubuntu

One has to install the required packages before building:

sudo apt-get build-dep linux-image
sudo apt-get install kernel-wedge
sudo apt-get install gcc-arm-linux-gnueabi

To build a kernel package from the source, check out the lt-*-ubuntu branch on a temporary branch and one can do a cross building on a PC as below:

export $(dpkg-architecture -aarmel); export CROSS_COMPILE=arm-linux-gnueabi-
git checkout -b tmp origin/lt-2.6.38-ubuntu
fakeroot debian/rules clean
fakeroot debian/rules binary-linaro-lt-mx6

or do a cross debuild as follows:

debuild -aarmel -eCROSS_COMPILE=arm-linux-gnueabi- -b -uc -us

After the building is finished, the binary kernel packages will be generated in the parent directory. And the generated kernel package can be copied to the target board and installed by the following command:

sudo dpkg --install linux-image-xxxx.deb

To go the simpler way for only building a uImage for testing, one can do:

mkdir ../build
make ARCH=arm O=../build CROSS_COMPILE=arm-linux-gnueabi- lt-mx6_defconfig
make ARCH=arm O=../build CROSS_COMPILE=arm-linux-gnueabi- uImage

Uploading the kernel to PPA

To upload the kernel to PPA, one needs to check out branch 'lt-3.2-imx6-ubuntu',

git checkout lt-3.2-imx6-ubuntu
git clean -f -x -d
fdr clean
debuild -S -sa -I.git -I.gitignore -i'\.git.*'

'git clean' will try to remove any irrelevant files to prepare a clean upload, please make sure that any local changes been backed up before do so. 'fdr clean' will generate the necessary files (changelog and so on) for source package generation. And 'debuild -S' will prepare the source package for uploading, and exclude the unnecessary files (local .git files).

'debuild -S' will generate the source package signed with your GPG key ready for uploading in the directory one level above. dput is the command which does the actual uploading job. To make it easy for the command, one can put the PPA URL in the ~/ file like below:

fqdn =
method = ftp
incoming = ~linaro-landing-team-freescale/public/ubuntu
login = anonymous
passive_ftp = 1
allow_unsigned_uploads = 0

And to actually upload the package, do:

dput fsl-lt-public ../linux-linaro-lt-mx6-<version>.changes

Change Kernel Command Line

To change the kernel command line, the best way is to modify the boot script source file 'boot.txt' on the 'boot' partition of the SD card, and generating the u-boot script file 'boot.scr' that u-boot understands. The following command will generate the boot.scr from boot.txt:

mkimage -A arm -T script -O linux -d boot.txt boot.scr

And if command mkimage is missing, one will need to install the package uboot-mkimage:

sudo apt-get install uboot-mkimage

Enable HDMI output

To enable HDMI output as primary display device, please input the following setting in cmdline:


"1920x1080M@60" is a basic video mode to tell hdmi driver, normally, hdmi driver will read EDID through DDC, and try to find a nearest one in it, if the monitor support cea 1080P60, then this mode will be choosen. If you want to set another mode for example cea 720P60, just input as "1280x720M@60".

Enable LVDS output

To enable LVDS output as primary display device, please input the following setting in cmdline:


Dual display

By default, linux is setting primary display device as HDMI and second display device as LVDS or vice versa. If you want to control by yourself, please input the following setting in cmdline(for example, lvds as primary, hdmi as secondly):


Hardware Accelerated Graphics

Due to boot performance issue, the graphics kernel driver has been built as a module. As the graphics kernel driver module (i.e. galcore.ko) needs 128MB vmalloc space by default, it's recommended that the following be placed in the kernel command line:


And the module won't be loaded automatically, as the modalias has changed after moving to device tree, one has to load the module manually before the graphics demos can be executed:

modprobe galcore

The graphics user space libraries are installed to /usr/lib, and the demo binaries are installed to /opt/viv_samples.

Hardware Accelerated Video

The video codecs from Freescale along with the gstreamer plugins are currently packaged in the private PPA until the freely redistribution issue could be solved. Provided that you have the permission to access Freescale Landing Team's private PPA, you can install the packages by the command line on the board:

sudo apt-get install imx-meta-mx6

Known issues

Bug 906316 - Sabrelite HDMI display being turned off after system is up Bug 918690 - Audio doesn't always work after reset and need power recycle Bug 919081 - Segmentation fault when running the graphics demos as normal user Bug 912907 - gpu-viv-bin-mx6q should use versoined SONAME


Boards/MX6QSabreLite (last modified 2013-06-20 03:35:41)