Skip to end of metadata
Go to start of metadata

This is a page about Freescale's i.MX53 Quick Start Development Board.


i.mx53 Quick Start R Board at Digi-Key
Obsolete: i.mx53 Quick Start Board at Digi-Key

Basic Requirements

ARM Cross Compiler: GCC

This is a pre-built (64bit) version of Linaro GCC that runs on generic linux, sorry (32bit) x86 users, it's time to upgrade...

wget -c https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
export CC=`pwd`/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

Test Cross Compiler:

${CC}gcc --version
arm-linux-gnueabihf-gcc (Linaro GCC 6.3-2017.05) 6.3.1 20170404
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO

Bootloader: U-Boot

Das U-Boot – the Universal Boot Loader: http://www.denx.de/wiki/U-Boot
eewiki.net patch archive: https://github.com/eewiki/u-boot-patches

git clone https://github.com/u-boot/u-boot
cd u-boot/
git checkout v2017.05 -b tmp


wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2017.05/0001-mx53loco-uEnv.txt-bootz-n-fixes.patch
patch -p1 < 0001-mx53loco-uEnv.txt-bootz-n-fixes.patch

Configure and Build:

make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} mx53loco_defconfig

Linux Kernel

This script will build the kernel, modules, device tree binaries and copy them to the deploy directory.

git clone https://github.com/RobertCNelson/armv7-multiplatform
cd armv7-multiplatform/

For v4.4.x (Longterm 4.4.x):

git checkout origin/v4.4.x -b tmp

For v4.4.x-rt (Longterm 4.4.x + Real-Time Linux):

git checkout origin/v4.4.x-rt -b tmp

For v4.9.x (Longterm 4.9.x):

git checkout origin/v4.9.x -b tmp

For v4.9.x-rt (Longterm 4.9.x + Real-Time Linux):

git checkout origin/v4.9.x-rt -b tmp

For v4.11.x (Stable):

git checkout origin/v4.11.x -b tmp

For v4.12.x (Prepatch):

git checkout origin/v4.12.x -b tmp



Root File System

Debian 9








wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-9.1-minimal-armhf-2017-08-08.tar.xz


sha256sum debian-9.1-minimal-armhf-2017-08-08.tar.xz
ba8f801ee1907f362c61b1c10e7fa1a4c59d766eecfe32803588f33f29f69dd4  debian-9.1-minimal-armhf-2017-08-08.tar.xz


tar xf debian-9.1-minimal-armhf-2017-08-08.tar.xz

Ubuntu 16.04 LTS






wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-16.04.3-minimal-armhf-2017-08-08.tar.xz


sha256sum ubuntu-16.04.3-minimal-armhf-2017-08-08.tar.xz
cc2689fc2d7cd9457f1b5fd2beff2a19123b4c95fb62848584f06c7158ecfe34  ubuntu-16.04.3-minimal-armhf-2017-08-08.tar.xz


tar xf ubuntu-16.04.3-minimal-armhf-2017-08-08.tar.xz

Setup microSD card

For these instruction we are assuming, DISK=/dev/mmcblk0, lsblk is very useful for determining the device id.

export DISK=/dev/mmcblk0

Erase partition table/labels on microSD card:

sudo dd if=/dev/zero of=${DISK} bs=1M count=10

Install Bootloader:

sudo dd if=./u-boot/u-boot.imx of=${DISK} seek=2 bs=512

Create Partition Layout:
With util-linux v2.26, sfdisk was rewritten and is now based on libfdisk.

sudo sfdisk --version
sfdisk from util-linux 2.27.1
sfdisk >= 2.26.x
sudo sfdisk ${DISK} <<-__EOF__
sfdisk <= 2.25.x
sudo sfdisk --unit M ${DISK} <<-__EOF__

Format Partition:

for: DISK=/dev/mmcblk0
sudo mkfs.ext4 -L rootfs ${DISK}p1
for: DISK=/dev/sdX
sudo mkfs.ext4 -L rootfs ${DISK}1

Mount Partition:
On most systems these partitions may will be auto-mounted...

sudo mkdir -p /media/rootfs/
for: DISK=/dev/mmcblk0
sudo mount ${DISK}p1 /media/rootfs/
for: DISK=/dev/sdX
sudo mount ${DISK}1 /media/rootfs/

Install Kernel and Root File System

To help new users, since the kernel version can change on a daily basis. The kernel building scripts listed on this page will now give you a hint of what kernel version was built.

Script Complete
eewiki.net: [user@localhost:~$ export kernel_version=4.X.Y-Z]

Copy and paste that "export kernel_version=4.X.Y-Z" exactly as shown in your own build/desktop environment and hit enter to create an environment variable to be used later.

export kernel_version=4.X.Y-Z

Copy Root File System

sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/
sudo chown root:root /media/rootfs/
sudo chmod 755 /media/rootfs/

Set uname_r in /boot/uEnv.txt

sudo sh -c "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"

Copy Kernel Image

Kernel Image:

sudo cp -v ./armv7-multiplatform/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}

Copy Kernel Device Tree Binaries

sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/
sudo tar xfv ./armv7-multiplatform/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/

Copy Kernel Modules

sudo tar xfv ./armv7-multiplatform/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

File Systems Table (/etc/fstab)

sudo sh -c "echo '/dev/mmcblk0p1  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

Remove microSD/SD card

sudo umount /media/rootfs


Comments, feedback, and questions can be sent to: eewiki@digikey.com
Please use the Digi-Key's TechForum: TechForum


  1. Hi Robert I'm trying to install Debian on my i.MX53 QSB but i having a problem regarding the mc34708 PMIC. The kernel tries to access,in the boot, a DA9052, causing an error and disabling the USB ports. Is there a patch or procedure to solve this problem? My QSB have a MC34708.Thanks so much.João Paulo

    1. Hi Joao,

      Unfortunately, the "imx-bsp" branch doesn't currently support the newer MC34708, on the new "R" revision of the board. It looks like i won't be able to get a newer unit till June according to Freescale online order system. So can you test for me the v3.3 version of that tree for me?

      from the kernel build dir do:

      git checkout master -f

      then "./build_kernel.sh"

      There won't be any display/usb, although i'm tempted to make that the default for the mx51/53 boards as usb is getting closer.


      1.  Hi Robert..

        I downloaded version 3.3 of the tree.

        Usually compiled and run on the board. No video signal and USB.



  2. Hi Robert,

    The 'sudo apt-get install gcc-arm-linux-gnueabi' did not work for me.

    I am using ubuntu:

    2.6.32-40-generic #87-Ubuntu SMP Mon Mar 5 20:26:31 UTC 2012 i686 GNU/Linux

    This is what I got:

    sudo apt-get install gcc-arm-linux-gnueabi
    [sudo] password for gautham:
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Couldn't find package gcc-arm-linux-gnueabi
    gautham@gautham-laptop:~$ sudo apt-get install gcc-arm-linux-gnueabi
    [sudo] password for gautham:
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Couldn't find package gcc-arm-linux-gnueabi

    I am new to this whole business.

    Regarding codesourcery, when I go the site, which one of the tools available do I download.?

    Gautham Nookala

    1. Gautham,

      You should really upgrade to maverick (or anything else newer), as lucid did not ship with any built-in "gcc-arm-linux-gnueabi" arm cross compiler from canonical... Otherwise, now days CodeSourcery isn't really an option, as linaro has been spearheading much of the gcc arm development..

      see: https://launchpad.net/linaro-toolchain-binaries


      1. Thanks for the information

  3. Hi Robert,

    After following the steps outlined I was able to get the board to boot properly but the ethernet connection does not appear to be working.  When I do ifconfig I only see lo but no eth0.  Is there something else that needs to be done to get the ethernet connection going?

    Thanks for the help.


    1. HI Vas,

      That's strange, is the cable plugged in when power-up? You applied the u-boot eth/mac patch to the version of u-boot you built right? For reference, I'm using oneiric's "gcc-4.4-arm-linux-gnueabi" with on both my original mx53loco and the "R" version:

      Linux devel #1 PREEMPT Fri Mar 30 15:24:58 UTC 2012 armv7l GNU/Linux
      root@devel:/home/debian# dmesg | grep -i fec
      [    2.831908] FEC Ethernet Driver
      [    2.842272] fec_enet_mii_bus: probed
      [   68.591905] eth1: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=0:00, irq=-1)
      root@devel:/home/debian# ifconfig -a
      eth0      Link encap:Ethernet  HWaddr 00:04:9f:01:e3:60  
                inet addr:  Bcast:  Mask:
                inet6 addr: fe80::204:9fff:fe01:e360/64 Scope:Link
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:2 errors:0 dropped:0 overruns:0 frame:0
                TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000 
                RX bytes:692 (692.0 B)  TX bytes:992 (992.0 B)
                Base address:0xa000 


      1. Hi Robert,

        Thanks for the quick reply.  There were a couple  of things I had to do to get my network working.

        1. My MAC address was not set.  In the uBoot prompt I set the ethaddr and then saveenv.

        2. I modified /etc/network/interfaces to auto start dhclient for eth0.  Essentially I added the following line:

        auto eth0

        iface eth0 inet dhcp.

        This seems to have fixed my problem.


  4. Hi Robert

    I tried to build the kernel using the new bsp. Still, during the boot, he mentions the DA9052 and the same communication failure. Even taking the DA9052 in Kernel Drivers, it still makes the same references in the boot.




  5. How to build the latest u-boot (2012.04.01) for QSB to support both DA and the mc34708 chip:

    Took me sometime to put it all together.

    This also has a patch to allow kernel 2.6.35 recognize the correct board version, and correctly uses the mc34708 chip and not the DA chip.

    wget ftp://ftp.denx.de/pub/u-boot/u-boot-2012.04.01.tar.bz2
    tar xjf u-boot-2012.04.01.tar.bz2
    cd u-boot-2012.04.01/
    wget http://magniel.com/yuli/mx53qsb_uboot_2012.04.01.mc34708.patch
    patch -p1 -i mx53qsb_uboot_2012.04.01.mc34708.patch
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mx53loco_config
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

      1. Sweet, i saw that too.. Thanks so much for pushing those upstream.. Time to rebase the directions in u-boot patchset.


        1. Hi, Robert,

          I am trying to install Ubuntu with USB support on i.MX53 QSB with the Freescale PMIC IC.  How do I apply the patch above?  And in your instruction above, the kernel has no USB support, where can I get one with USB support?



          1. Hi Feihong,

            That freescale pmic ic patch posted by Fabio, is already in mainline u-boot, you can verify by the cpu line in u-boot:

            Board: MX53 LOCO
            I2C:   ready
            DRAM:  1 GiB
            CPU:   Freescale i.MX53 family rev2.0 at 1000 MHz

            If it's 800Mhz, your u-boot is too old...

            USB: I'm actually looking at usb on the mx51/53 today, there is kernel support, but it looks like we haven't defined the usb devices in imx53-qsb.dts yet..


            1. Thanks.  I guess I picked the right day to ask you about USB:)  This is what I have in u-boot:

              Board: MX53 LOCO
              I2C:   ready
              DRAM:  1 GiB
              CPU:   Freescale i.MX53 family rev2.1 at 1000 MHz

              Looks like I do have the u-boot changes already. 



            2. Hi, Robert,

              How can I define the usb devices?  Is that something I can download from Freescale or Ubuntu site?



              1. Hi Feihong,

                After looking at things, it's still going to be a while before we get usb working on mainline. So I pushed a rebase/cleanup of my old 2.6.35 imx-bsp branch. It's based on Freescale's later git tree from:


                Boot tested, usb tested with linaro based gcc-4.6 running Debian Wheezy on the original (pre-R) mx53loco board..

                git checkout origin/imx-bsp -b imx-bsp-tmp


                1. Great, thanks!  I'll give that a try.

  6. hi ,

    while i am running ./built_kernel.sh i am getting fallowing error how to fix it 

    root@raja-VirtualBox:/usr/arm/imx-devel# ./build_kernel.sh 

    + Detected build host [debian-]

    Using: Cross Compiler

    Using : arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

    Copyright (C) 2011 Free Software Foundation, Inc.

    This is free software; see the source for copying conditions.  There is NO


    Updating LINUX_GIT tree via: git fetch


    Resolve operation not in progress, we are not resuming.

    git tree is clean...

    [master 6ecfe49] empty cleanup commit

    Branch tmp-master set up to track remote branch master from origin.

    Switched to a new branch 'tmp-master'

    Branch master set up to track remote branch master from origin.

    Switched to a new branch 'master'

    Already up-to-date.

    fatal: git checkout: updating paths is incompatible with switching branches.

    Did you intend to checkout 'v' which can not be resolved as commit?


    1. Hi rajaganapathy,

      This looks a little suspect..

      Updating LINUX_GIT tree via: git fetch
      Resolve operation not in progress, we are not resuming.

      What did you set your "LINUX_GIT" variable too in system.sh?


  7. Hi Robert,

    thanks for this guide, but I'm unfortunately not able to play an mp3 file.
    I tried to install some "terminal player" like mplayer, but it does not play anything.
    I attach here the output error message:

    root@devel:~# uname -a
    Linux devel 3.4.1-imx0 #2 Fri Jun 8 10:45:01 CEST 2012 armv7l GNU/Linux
    root@devel:~# mplayer Kalimba.mp3
    MPlayer 1.0rc3-4.4.4 (C) 2000-2009 MPlayer Team
    mplayer: could not connect to socket
    mplayer: No such file or directory
    Failed to open LIRC support. You will not be able to use your remote control.
    Playing Kalimba.mp3.
    Audio only file format detected.
    Clip info:
     Title: Kalimba
     Artist: Mr. Scruff
     Album: Ninja Tuna
     Year: 2008
     Comment: Ninja Tune Records
     Track: 1
     Genre: Other
    Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
    mpg123: Can't rewind stream by 417 bits!
    AUDIO: 44100 Hz, 2 ch, s16le, 192.0 kbit/13.61% (ratio: 24000->176400)
    Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
    AO: [pulse] Init failed: Connection refused
    Failed to initialize audio driver 'pulse'
    [AO_ALSA] alsa-lib: confmisc.c:768:(parse_card) cannot find card '0'
    [AO_ALSA] alsa-lib: conf.c:4170:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or dy
    [AO_ALSA] alsa-lib: confmisc.c:392:(snd_func_concat) error evaluating strings
    [AO_ALSA] alsa-lib: conf.c:4170:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directy
    [AO_ALSA] alsa-lib: confmisc.c:1251:(snd_func_refer) error evaluating name
    [AO_ALSA] alsa-lib: conf.c:4170:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directoy
    [AO_ALSA] alsa-lib: conf.c:4649:(snd_config_expand) Evaluate error: No such file or directory
    [AO_ALSA] alsa-lib: pcm.c:2190:(snd_pcm_open_noupdate) Unknown PCM default
    [AO_ALSA] Playback open error: No such file or directory
    Failed to initialize audio driver 'alsa'
    [AO SDL] Samplerate: 44100Hz Channels: Stereo Format s16le
    [AO SDL] using aalib audio driver.
    [AO SDL] Unable to open audio: No available audio device
    Failed to initialize audio driver 'sdl:aalib'
    Could not open/initialize audio device -> no sound.
    Audio: no sound
    Video: no video
    Exiting... (End of file)



    1. Hi Luca,

      I never tried audio on the mx53 quick start board. I pushed a config change based on what linaro was doing in their lt-3.4 kernel tree..


      But it's not working on my original mx53 quick start board at work, will retest with my revision R later tonight when I go home..

      [    1.242384] ALSA device list:
      [    1.245413]   No soundcards found.


  8. Hi Robert,

    I downloaded the u-boot sources from the git server as you suggested, and I compile it use the method suggested in the i.MX53_START_Linux_BSP_UserGuide.pdf document.

            make ARCH=arm CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linuxgnueabi/
    bin/arm-none-linux-gnueabi- mx53loco_config
            make ARCH=arm CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linuxgnueabi/

    After doing this, the debug serial port displayed nothing !  Could you tell me what's wrong with it ?

            The FSL demon image like this:

    U-Boot 2009.08 (Oct 20 2011 - 13:11:26)

    CPU:   Freescale i.MX53 family 2.1V at 800 MHz
    mx53 pll1: 800MHz
    mx53 pll2: 400MHz
    mx53 pll3: 432MHz
    mx53 pll4: 455MHz

    Board: MX53-LOCO 1.0 Rev. B

    1. Hi Malcolm,

      Care to retest with a more recent version of gcc, such as the one installed in Natty? or gcc-4.6/gcc-4.7 found here: https://launchpad.net/linaro-toolchain-binaries.. As they do work with mainline u-boot.


      1. Hi,Robert

              I have downloaded the new compiler today, and the u-boot-2009.08 work correctly,but the source you offered still output nothing from the serial port. 

              My board is MCIMX53-START-R with the PMIC MC34708, the boot device is SD card.

              I opened the u-boot.bin of u-boot-2012.10 in UltraEdit, and I find the bin file is different form the 

        the u-boot-2009.08. 

             I can't point out where the problem is. Please kindly help me , Thanks a lot !  

        u-boot.bin (2012.10)

        00000000h 1400 00EA 14F0 9FE5 14F0 9FE5 14F0 9FE5
        00000010h 14F0 9FE5 ............
        000003f0h  13D0 A0E3 ..........
        00000400h 48D0 4DE2 FF1F 8DE8 BC23 1FE5 0C00 92E8


        00000000h 0E02 00EA 0000 0000 0000 0000 0000 0000
        00000010H 0000 0000 0000 0000 0000 0000 0000 0000
        000003F0H 0000 0000 0000 0000 0000 0000 0000 0000
        00000400H D100 2040 5864 00F8 0000 0000 0000 0000
        00000410H 2064 00F8 0064 00F8 0000 ........



        1. Hi Malcolm,

          Why are you using u-boot.bin from U-Boot 2012.10? Please reread this wiki, specifically this section:

          Install U-Boot Bootloader:

          sudo dd if=./u-boot/u-boot.imx of=${DISK} seek=1 bs=1024

          As on mainline U-Boot we need to run the imximage tool on the u-boot.bin to make it bootable for the i.MX53..


          1. Hi Robert,

            The board works well with the u-boot.imx file , Thank you !

  9. Hi,

    I am trying to set up RealTime patched kernel 3.2.28 on MX53 LOCO (Start Up Board). It is running without multimedia (I don't really need it), but have problem to startup USB ports. So far I am getting only standar messages from built in drivers, but no unit is recognized in host or OTG USB port. Any hint? Should I patch some standard drivers for Freescale port?

    Br, Marijan

    1. Hi Marijan,

      I'm assuming you used mainline 3.2.28 as your base (please correct me if I'm wrong.).. Unless you've added an external patch-set that enables usb on the mx53loco, usb support is not currently supported outside Freescale's bsp kernel.


      1. Hi Robert,

        Yes, I am using mainline kernel source. I've tried to add some patches from 2.6.35 diff's but without success. Such kernel doesn't boot up (even don't show initial messages). I guess there are also some deep differences on the kernel level regarding USB.

        However as you did implement 3.4, till 3.7 kernels I assume that you have some experience on that on latest kernels. Is it USB running on 3.6 kernel?

        Regards, Marijan

        1. Hi Marijan,

          The 2.6.35 Freescale fork is just too big of a fork at this point to be of any use for USB. For the i.mx53, watch the linux kernel mailing list for "chipidea" patches.

          v3.4 is the last "board file" based kernel that still had working sata, which I'm using on a few i.mx53 devices. For v3.6/v3.7-rc (device tree based), only the i.mx6 has working usb support (with just the boards I personally have from Freescale).


          1. Hi Robert,

            Thank you very much for sent info. Would it be starting from your collection of chipidea patches good starting point? I am afraid that I would get lost in the "complete linux kernel patches". BTW are there any signals that Freescale will support some 3.x kernel for mx53 processors? I saw some 3.0.5 branch at freescale git.

            Regards, Marijan

            1. Hi Marijan,

              Here is the collection of already mainlined chipidea patches:
              I have nothing more, other then what's been posted to the linux kernel mainline list.

              I do not know Freescale's plans, but considering right now the i.mx6x line has better upstream support then some of their older devices, Freescale seems to be really pushing mainline now.


  10. Hello. I dont know english well.

    I have iMX53-START BOARD and its my first introdution to the linux.

    Using manual from this site I make u-boot and kernel 2.65.3. Create SD-card with 2 partitions (boot and rootfs).

    Install u-boot to the SD-card and copy zImage to the boot. Also i am unpack and copy kernel modules to the boot.

    I create uEnv.txt v3.4.x file and copy to the boot. Then i download, unpack and copy on the rootfs UBUNTU 12.10.

    Its work but i have some problems.

    1. I cannot enter login and password by serial interface - only by keyboard.

    2. I cannot find file serial.config in /rootfs/etc/

    3. My ubuntu after entering login/password dont dispaly desktop

    Can your help me resolve this problems? Thankk your.

    1. Hi Sergey,

      In Ubuntu 12.10, /etc/init/serial.conf does not exist, you need to first create it with the contents shown on this wiki page.

      For question #3, this is a basic console image, install the "desktop" you wish via "sudo apt-get (desktop_of_choice)" (ubuntu-desktop, kubuntu-desktop, xubuntu-desktop, lubuntu-desktop, etc..)


      1. Thank you.

        I have carryfully read and was able install and start debian/ubuntu.

        Now i must connect my board to ethernet and upgrade system for get additional properties (desktop etc.)?

        Can you help me mount additional sd-card?

        I changed fstab  like this:

        proc /proc proc defaults 0 0
        /dev/mmcblk0p2   /           auto   errors=remount-ro   0   1
        /dev/mmcblk0p1   /boot/uboot auto   defaults            0   2
        /dev/mmcblk1p2   /boot/sd1   auto   defaults           0   1
        /dev/mmcblk1p1   /boot/sd2   auto   defaults            0   2

        but when secondary sd-card inserted i see in terminal  that mount point boot/sd1 dos not exist.

        1. Hi sergey,

          Do the mount point directories even exist?

          sudo mkdir -p /boot/sd1
          sudo mkdir -p /boot/sd2
          sudo mount -a


          1. I did not create theses directories. Now it work. Thanks.

            I install Ubuntu 12.10 and applied apt-get update, upt-get install ubuntu-desktop.

            As a result very slow system in which even does not properly boot desktop.

            Debian is working slow but much beeter.

            Also i have error: codec prepare DAI error.

            How can check performance of the software and hardware? Maybe I installed something incorrectly.

            1. Hi Sergey,

              Ubuntu's ubuntu-desktop is usually too bloated for single core arm devices and I believe they now require 3D acceleration (which we don't have on this wiki). So, with Ubuntu I usually just install xubuntu-desktop.

              With Debian, Squeeze will be slower as it's armv4, but Wheezy should be the same, as it is built with armv7-a using hardfloat just like Ubuntu. For a Debian desktop i usually use "sudo apt-get install task-lxde-desktop".

              I'm not sure on that error, other then using the 2.6.35.x as reference, I really do not have much interest in patching it further. As of right now the focus is on Graphics/USB on mainline (and the 3.8-rc0 merge)...


              1. Hi Robert.

                I have trouble again. I build new kernel v3.6.7. Now i lost VGA video signal. Remark - I did not configure the kernel during its assembly.

                Does this kernel support video outputr? Or should I go back to version 2.6.35?
                Which kernel do you recommend for playback audio /video (max 720p) as well as for working with HSPA modems?

                Have i install full desktop for this purposes? Or i can install only audio/video player.

                Sorry fo my bad english from google-tranlate.

                1. Hi Sergey,

                  There's no support for video in v3.6.x, patches have been posted and it's being worked on for v3.8-rcX. Use v2.6.35 if you need Video right now. The v2.6.35 based kernel should have all the config options for HSPA modems at the time of it's release.

                  If all you need is a audio/video player. I'd just install openbox and your audio/video player.


  11. Hi Robert, thanks for your work. I have a basic question. I selected "git checkout origin/imx-bsp -b imx-bsp".Which of the two uEnv.txt boot scripts am I supposed to use if I am using 2.6.35? One is called v3.4.x and the other is v3.6.x, which I assume corresponds to those Linux kernel versions so I was a bit confused as to how to proceed for 2.6.35.

    Thanks for your time, Edward

    1. Hi Edward,

      The only real difference between the two uEnv.txt boot scripts is the usage of the linux device tree binary file (mmc_load_dtb):

      mmc_load_dtb=load mmc 0:1 0x71ff0000 /dtbs/${dtb_file}
      #Just: zImage
      xyz_mmcboot=run mmc_load_image; run mmc_load_dtb; echo Booting from mmc ...
      loaduimage=run xyz_mmcboot; run mmcargs; bootz 0x70010000 - 0x71ff0000

      Which definitely didn't exist in v3.4.x and the older v2.6.35. So use the older "v3.4.x" labeled script for v2.6.35..


      1. I have another question. I continued with the instructions you posted above, creating the partitions, moving files over, tweaking the rootfs files... resulted in zero serial port activity.

        FYI, I have the original QSB, with the Dialog Semi PMIC.

        I suspected that my U-boot was not right so I re-read your instructions and it seems that I only downloaded 2 patches and you now have 4. So I deleted the previous patches and downloaded the new patches and ran them but they failed. Then I realized that the git checkout was different (v2013.01-rc2) so I ran

        git checkout v2013.01-rc2 -b tmp 

        and it told me that there was already a branch named tmp. You can tell I'm a newb at this. If I've already checked out a previous version, how do I update to the new version?

        and it told me that there was already a branch named tmp. You can tell I'm a newb at this. If I've already checked out a previous version, how do I update to the newversion

        1. Hi Edward,

          That's the same Freescale board I'm using in the lab here. (Although mine has an extra bug wired capacitor underneath)...

          Zero serial port activity does not necessary mean u-boot broke. I haven't build/powered up 2.6.35.x in a few months, so any gcc update could have easily broke that kernel. So it's only their for reference, so with video and usb coming to mainline there is not much left in the old 2.6.35.x branch of any use.

          Since "v2013.01-rc2" didn't exist prior to the last time you build u-boot, you can't just checkout..

          Cleanup your git tree and update the repo:

          git reset HEAD --hard
          git checkout master -f
          git branch -D tmp
          git pull

          BTW: there is nothing special with the "tmp" branch name, you can name it anything you want, for this wiki's directions it was short and simple..


          1. Robert, thanks again. I went ahead and updated to the newer version of u-boot and applied the patches in the manner you suggested. I then tried to:

            cd imx-devel
            git checkout origin/v3.4.x-imx -b v3.4.x-imx

            but it said I had an edited file in my repository so I ran:

             git checkout --  patches/ref_imx5_defconfig #to update to your original repo

            Then to switch to the 3.4 branch and compile the kernel:

            git checkout origin/v3.4.x-imx \-b v3.4.x-imx

            I got no errors from the compile process so I assume it went ok. But I got to thinking about why my previous effort didn't work and I recalled that I had trouble getting the SD card set up. When I ran the parted command as you describe above, I got "Error: Partition(s) on /dev/sdc are being used." On my previous attempt I got around that by using Gparted to initialize it but I'm wondering if it worked correctly. I wonder if I should unmount the card before I try to execute the parted command? Any suggestions to check the integrity of the card image? I figure I should get that sorted out before I try with another kernel. While I wait to hear back from you, I'm going to attempt it with a different card, in case it is an issue with the card even if the card previously contained a working/booting ubuntu demo image.

            I also studied the commands for copying images in the Freescale BSP documents and they use something like:

            sudo dd if= u-boot-mx53-loco.bin of=/dev/sdb bs=512 seek=2 skip=2 && sync && sync
            sudo dd if= uImage of=/dev/sdb bs=512 seek=2048 && sync && sync

            then they create a partition table for the rootfs using fdisk, mount it and move the rootfs.

            1. Hi Edward,

              Did you umount /dev/sdc? a lot of distribution will auto-mount all usb media... You can even umount it in gparted.

              Ask your self, how old are those Freescale BSP documents and what u-boot are they targeting? Freescale's ancient u-boot BSP perhaps?

              The directions on this wiki was re-evaluated last week when I bumped the u-boot version to v2013.01-rc2 with v3.7.x with a Debian Wheezy 64bit host for the mx53loco development board. Anything older then that may work, it's just not tested as the goal is to have everything in mainline.


              1. Robert, I was able to get 3.4.20 based kernel and Debian Squeeze to boot! I apologize for my prior comment relating to how FSL described SD card prep, I was thinking out loud as I tried to figure out what I did wrong, researching different ways that were documented to work in certain scenarios. Didn't intend to suggest you were doing it "wrong". Yes, their stuff is old and I would only follow their guide if I was duplicating what they did.

                So, a huge thanks for helping me get this going. I have a custom board that is based on the QSB whose OS is basically the Ubuntu demo image that FSL provides. I needed kernel headers, which aren't provided with ubuntu, and I wanted to avoid LTIB due to what seems like a painful dev work flow. I now need to poke around your work to see how things are organized, how modules are included, etc...

              2. Hi Robert, Although my SD card boots, I'm having some strange comments from fdisk, it says that there is a difference between the logical and physical partition ends (iirc, I don't have the output) and two attempts to copy the sd card to my host drive and then to another sd card using dd have failed to boot. So, again, looking at the small differences between what I saw and what you describe above I noted that your Gparted screenshot shows only the two partitions where as mine shows a gray block representing 2MB of unallocated space, due to selecting 2 MiB on the "Free Space Preceding" field while making the boot partition.

                I'm curious why this would be the case or if you think it matters.

                Another thing that you don't mention (because you might not be experiencing it) is that after I create the partitions, Linux mounts them and created Lost+Found folders. I've deleted them before moving my files over to the boot and rootfs partitions. Hoping that is the right thing to do.

                I need a sound image because I'm going to base my production OS on this so I'm being very cautious. Thanks for your time.

                rgds, Edward

                1. Hi Edwards,

                  Why are you using dd? Just script the fdisk/mkfs/etc calls from this wiki and dd the bootloader to the first partition and extract the file system to the second. It's much more reliable then dd'ing the image when sd cards can vary in sizes.

                  Lost+Found is created after formatting the drive and when running e2fsck on bootup... There's no reason to pre-delete the folder, as it will be empty initially.

                  BTW, For hints on the fdisk/mkfs/etc script, see my production sd creater here: https://github.com/RobertCNelson/omap-image-builder/blob/master/tools/setup_sdcard.sh

                  It's currently used in support Ubuntu/Debian images for BeagleBoard users:
                  http://elinux.org/BeagleBoardUbuntu#Demo_Image It's really off topic for this step-by-step wiki guide, hence not mentioned..


  12. Robert, thanks for the update. Just a comment, I *think* you may want a

    cd ${HOME}/

    after the u-boot build and before running:

     git clone git://github.com/RobertCNelson/imx-devel.git
    cd imx-devel

    I say that based on the way you describe copying the files to the sd card, starting from home.

    Oh, while I'm here, I wanted to clarify what "no video" means. I thought it meant that VGA and HDMI output is not supported from the QSB but I noticed that there is no support for the GPU in /dev so I'm wondering if "no video" means that you can't even encode video from an attached camera because the GPU is not supported.

    1. Hi Edward,

      IDK, on one hand, I really don't want to sprinkle cd HOME on every subsection..

      One option, would be to drop HOME and just use `pwd` when defining CC:

      export CC=`pwd`/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/bin/arm-linux-gnueabi-

      Then the cd HOME could disappear...

      Another option, would be to show relative paths:

      :~$ <- ${HOME}
      :~/sdma-firmware$ <- inside directory...

      Might just do them both...

      As far as "no video" I only mean in the sense that nothing shows up.. Right now there are patches for v3.8-rcX that I have been playing with on the imx51 that enable video. One of the big requirements of that was to move to u-boot 2013.01, so half done. (wink)


  13. Hi Robert,

    I'm still working with the wiki setup and I've got Debian and the 2.6.35 kernel running on a custom board. I'm having a problem with my GPIO though, I am not seeing /sys/class/gpio showing up for some reason. Can you do me a favor and peek inside your /sys/class directory and let me know if you have gpio available in the userspace? I've checked kconfig to make sure that sysfs interface is enabled under GPIO support and I have plenty of GPIO defined in my mx53_loco.c file in the KERNEL directory. sysfs interface wasn't enabled by default. I used the rebuild command to build the kernel, confirmed a new kernel was built, copied the kernel and kernel modules to the appropriate directories.

    One thing I wasn't sure about was whether I needed to enable the "Userspace I/O drivers" under Device Drivers, which is separate from the sysfs support. I'm not sure what the Userspace IO drivers are for.

    Let me know what you (or anyone else, if you have gotten the wiki contents working) see in your directory, I would really appreciate it.


    1. Hi Edward,

      We were missing the enablement of one more config (CONFIG_GPIO_SYSFS) in the imx-bsp branch to make that work..

      debian@arm:~$ uname -a
      Linux arm #2 PREEMPT Mon Feb 18 09:20:30 CST 2013 armv7l GNU/Linux
      debian@arm:~$ ls /sys/class/gpio/
      export     gpiochip128  gpiochip192  gpiochip64  unexport
      gpiochip0  gpiochip160  gpiochip32   gpiochip96



      1. that fixed me up! thanks a ton.