September 30, 2013

Yocto Dora release (for i.MX6)

yocto-dora-screenshot In case you missed it, the Yocto Dora branch arrived late on Friday night. Please join me in thanking Otavio and the meta-freescale team for working late and getting this done.

The Dora branch contains support for our latest kernel directly, so you can follow Daiane’s excellent instructions for how to build and simply replace dylan with dora in Step 1 (Download the Source Code).

We built an image over the weekend and have been testing a build of fsl-image-gui today. It’s performing quite well, and contains support for both GPU X acceleration and GStreamer video acceleration.

The steps to build were simple:
~/$ mkdir yocto && cd yocto
~/yocto$ repo init -u -b dora
~/yocto$ repo sync
~/yocto$ MACHINE=nitrogen6x . setup-environment build
~/yocto/build$ bitbake fsl-image-gui
... long time passes
~/yocto/build$ ls -lh tmp/deploy/images/nitrogen6x/
-rw-r--r-- 1 user group 996M Sep 28 14:55 fsl-image-gui-nitrogen6x-20130928181014.rootfs.sdcard
Installing to SD card is also very straightforward. Assuming your SD card shows up as /dev/sdc, you can use these commands to write it:
~/yocto/build$ sudo umount /dev/sdc*
~/yocto/build$ sudo dd if=tmp/deploy/images/nitrogen6x/fsl-image-gui-nitrogen6x-20130928181014.rootfs.sdcard of=/dev/sdc
To make things easy for you, we’ve uploaded an image to our Cloud storage site: This image should be usable directly using dd under Linux as shown above, or by using Alex Page’s USB Image Creator under Windows.

Note that the Yocto build process generates a small partition for the root filesystem in partition 2, and you might want to use resize2fs to expand it to use the rest of your SD card.

Comments 96

  1. huicua

    Dora branch problem :

    I could not repo this new branch it reported the problem as :

    object e76efdd7b342577c40aa271fa5ded9d66a783a9b
    type commit
    tag v1.12.4
    tagger Conley Owens 1380645867 -0700

    repo 1.12.4

    gpg: Signature made Tue 01 Oct 2013 09:44:27 AM PDT using RSA key ID 692B382C
    gpg: Can’t check signature: public key not found
    error: could not verify the tag ‘v1.12.4’

  2. Post
    1. Post
  3. huicua

    Thank you Eric and jfcherng for info. I downloaded the repo from the other link according to the mailing list thread and it worked. I am sure removing the ~/.reposonfig and ~/.repopickle_.gitconfig will do the job too but the other solution worked already.

    Thank you all.

  4. GaryC

    Has anyone been able to build a yocto image for imx6qsabrelite with latest “dora” repo? A simple
    bitbake virtual/kernel states that it can not find the defconf file.. Then it fails. Looking in the sources
    I did not find any at all. This is a BD-SL-i.MX6 board. Should I just copy one of the nitrogen configs instead?

    1. Post

      Hi Gary,

      You should use machine type “nitrogen6x” for both SABRE Lite (BD-SL-i.MX6), but imx6qsabrelite is
      defined as an alias, so it shouldn’t generate different code.

    2. Post
  5. daffyd

    Do we have to configure the above sample build from the cloud ?
    The copy to SD looks real clean, and the console shows it booting on my BD-SL-i.MX6 up to:

    eth0: Freescale FEC PHY driver [Micrel KSZ9021 Gigabit PHY] (mii_bus:phy_addr=1:06, irq=284)
    creating NFS state directory: done
    starting 8 nfsd kernel threads: rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory).
    Please try, as root, ‘mount -t nfsd nfsd /proc/fs/nfsd’ and then restart rpc.nfsd to correct the problem
    starting mountd: done
    starting statd: done

    and then nothing…. I suspect the nfsd issue is not the problem

    1. Post

      Hi Daffyd,

      You shouldn’t need to configure anything. The image should just work.

      You’re right about the NFSD thing. We didn’t configure the kernel with NFSD support, and that isn’t needed to boot.

      Can you add a couple of things to bootargs? In particular, I’d like to see the output with the following clauses added:

      1. daffyd

        Hi Eric,

        “Daffyd” is a welsh spelling of David (as well as being daffy 🙂

        If it matters, I am using U-Boot 2012.10-rc1-00217-g4d57159 (Nov 09 2012 – 09:56:40)
        which is what was there when I got it.

        starting with 6x_bootscript-yocto.txt, added

        setenv bootargs $bootargs –debug debug=7 initcall_debug

        built with
        mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n “boot script”
        -d 6x_bootscript-yocto.txt 6x_bootscript

        (listing the steps as this is a new board for me).

        I am seeing the Yocto splash.

        booting 6 times with the new config, I had one make it to X11, and the console login, the rest stall.

        console log capture in a zip here:
        two logs, one that worked, one that did not.

        1. Post

          Hi Daffyd,

          I’m sorry about that. I presumed you were trying to be anonymous, and I shouldn’t have jumped to that conclusion.

          The logs are showing some weird things, including error messages like these from the worked file:

          initcall vivante_init+0x0/0x6c [vivante] returned 0 after 5168 usecs
          sgtl5000 0-000a: Device with ID register 0 is not a sgtl5000
          sgtl5000 0-000a: asoc: failed to probe CODEC sgtl5000.0-000a: -19
          asoc: failed to instantiate card sgtl5000-audio: -19

          I am a bit suspicious of the U-Boot version. We made some critical updates, and would like you to upgrade to the latest release.

          I’m not sure if it’s related though, and I’ll take a closer look at the logs tomorrow.

          1. daffyd

            HI Eric,
            not a worry about the login name 🙂

            Updated u-boot U-Boot 2013.07-00047-gaf468ad
            No change.

            But… new information.
            I was plugged into an HDMI monitor, and I think there is a sensitivity there.
            I have the 7″ touch panel that I had not connected yet. Once I found which connector the white wire is supposed to go in…. I have booted 5 for 5 now.

            I looked into the boot logs, and the blog on display config, but nothing suggested itself to me.

            I certainly have a workaround for now, but am curious about the HDMI issue. I like to switch between the displays (partly to avoid extra parts on the desk).

          2. Post

            Hi Daffyd,

            I’m also curious about the HDMI issue. Are you using an HDMI->DVI cable or a straight HDMI?

            We’ve heard some reports about bouncing HDMI connections, and we believe it’s caused by our updates to support DVI.

            If you don’t mind, I’d like to ask you to try with a patch which prevents detection of HDMI disconnect to see if it affects your results.

          3. daffyd

            Hi Eric,
            I have (can use) both cables, but was using straight HDMI this time.

            This is an older ViewSonic 1080p monitor that I use with my Pi and Beagle. The Pi in particular does a poor job of autodetection.

            Yes – would like to help by trying patches.

          4. Post

            Hi Daffyd,

            I just copied a tar-ball with the patch here:

            You’ll need to copy boot/uImage into the Boot Nitrogen partition and extract lib/modules/ into the root filesystem.

            Can you give it a spin and let me know if it fixes the issue? The only difference between this and the head of our 4.1.0 kernel tree is that it doesn’t enable plugout interrupts for the HDMI channel, so the transmitter stays active.

          5. daffyd

            Hi Eric,
            Looks like you have a winner.

            3 for 3 boots with straight hdmi and the touch connected (defaults to hdmi screen)
            3 for 3 boots with just hdmi (removing that touch screen connector was fun)
            3 for 3 boots with hdmi->DVI cable

            Looks like I need to find/muck with the overscan settings, but what else is new 🙂

          6. Post

            Glad to hear it, Daffyd.

            I’m about to push this patch into our main kernel tree, since in 99% of cases, nobody wants disconnect events…

  6. daffyd

    Any chance you guys will post a non-gui (accelerated framebuffer image) sample build ?

    I suspect they are almost the same, just the duplicated set of graphics libraries and samples as different ?

    1. Post

      I’ve been working on one of those (accelerated framebuffer w/Qt) for a couple of months, but since it’s an internal project, it always gets set aside.

      The qt-in-use image can be built directly though. It doesn’t have some bits that we’re after (especially multiple display support), but it should build on Dora out of the box.

  7. nilan

    Im following your steps.

    I compiled the fsl-image-gui form dora branch.

    did dd the fsl-image-gui-imx6qsabresd-20131101005105.rootfs.sdcard to SD card,

    and boot form SD. got the following message.

    U-Boot 2013.01-rc1-00120-g7c28db0 (Nov 12 2012 - 09:15:04)
    CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
    Reset cause: POR
    Board: Nitrogen6X
    DRAM:  1 GiB
    WARNING: Caches not enabled
    MMC:   FSL_SDHC: 0, FSL_SDHC: 1
    SF: Detected SST25VF016B with page size 4 KiB, total 2 MiB
    auto-detected panel wsvga-lvds
    Display: wsvga-lvds (1024x600)
    In:    serial
    Out:   serial
    Err:   serial
    Net:   FEC [PRIME]
    Warning: FEC using MAC address from net device
    Hit any key to stop autoboot:  0
    AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
    flags: ncq stag pm led clo only pmp pio slum part
    No port device detected!
    ** Bad device size - sata 0 **
    ** Bad device size - sata 0 **
    SATA device 1: unknown device
    ** Bad device sata 1 **
    ** Bad device sata 1 **
    mmc0 is current device
    reading /6x_bootscript
    ** Unable to read file /6x_bootscript **
    Failed to mount ext2 filesystem...
    ** Unrecognized filesystem type **
    MMC: no card present
    mmc1(part 0) is current device
    MMC: no card present
    ** Bad device mmc 1 **
    MMC: no card present
    ** Bad device mmc 1 **
    6x_bootscript not found
    serial console at 115200, 8N1
    details at
    U-Boot >

    It seems that 6x_bootscript is not placed on the SD card.

    After reading all the comments it seems that after dd the sdcardimage to SD card there should be two files visible

    (6x_bootscript, uImage), but in my case only uImage can be seen.

    1. Post

      Hi Nilan,

      It appears that you missed the part where you set the MACHINE variable to nitrogen6x.

      SABRE SD doesn’t use a boot script.

        1. Post
          1. Wei Chong Soh

            Hi Eric, thanks for the reply. Actually few days ago I just get my Boundary Devices’ SabreLite iMX6, and I tried to boot Android JB 4.3 by:

            1) Download the image (from this page:
            2) Then use Alex Page’s USB Image Tool to flash the image to micro SD card.
            3) Plugin the flashed micro SD card to the dev board and boot it up.

            The reason I throw my question here is I encountered the same error as Nilan did.

            So, for my case, is it I can’t use the image straightly instead of I need to download the source code of android + kernel for JB 4.3 and compiled by myself and set the MACHINE variable during compilation?By the way, what is “setup-environment” meant?

            Sorry for the dumb questions since I’m newbie to this android dev board.
            Thanks in advance.

          2. Post

            Hi Wei Chong,

            You’re mixing things up here.

            My comments about the MACHINE variable are for building a Linux distribution using Yocto.

            They don’t apply to Android.

            Android details are in this post.

  8. Øyvind

    Hello Eric,

    Thank you very much for this article. I have followed your steps and also the steps from Daiane, but I am seeing some strange behavior on my Nitrogen6X board. The problem is that I don’t see /dev/ttymxc2 (for Bluetooth), only ttymxc0 and ttymxc1. I notice that the machine name in the U-Boot output is nitrogen6x, while the kernel output shows that the machine name is “Freescale i.MX 6Quad Sabre-Lite Board”. In comparison, your prebuilt image boots and the kernel shows machine name “Boundary Devices Nitrogen6X/SABRE Lite Board”. Do you have any idea how this can happen? I guess /dev/ttymxc2 is not included because bluetooth is not present on the Sabre-Lite?

    Thanks in advance,

    Before I bitbake, I carefully set MACHINE=nitrogen6x like in your example. This setting is reflected by the information from bitbake. When bitbake is done, I transfer the image to my sdcard and boot it.

    From Bitbake:
    Build Configuration:
    BB_VERSION = “1.20.0”
    BUILD_SYS = “i686-linux”
    NATIVELSBSTRING = “Ubuntu-13.04”
    TARGET_SYS = “arm-poky-linux-gnueabi”
    MACHINE = “nitrogen6x”
    DISTRO = “poky”
    DISTRO_VERSION = “1.5”
    TUNE_FEATURES = “armv7a vfp neon callconvention-hard cortexa9”
    TARGET_FPU = “vfp-neon”

    Log from U-Boot:
    U-Boot 2013.01-rc1-02388-ga90f257 (Nov 27 2012 – 14:02:30)
    CPU: Freescale i.MX6Q rev1.2 at 792 MHz
    Reset cause: POR
    Board: Nitrogen6X
    DRAM: 1 GiB
    WARNING: Caches not enabled

    reading /imx6q-sabrelite.dtb
    ** Unable to read file /imx6q-sabrelite.dtb **

    Log from Kernel:
    Starting kernel …
    Uncompressing Linux… done, booting the kernel.
    Linux version 3.0.35-4.1.0+yocto+gbdde708 (ofs@ofs-VirtualBox) (gcc version 4.8.1 (GCC) ) #1 SMP PREEMPT Wed Nov 13 19:40:21 CET 2013
    CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
    CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
    Machine: Freescale i.MX 6Quad Sabre-Lite Board

    1. Post

      Hi Øyvind,

      For some reason, your build isn’t using our kernel. Did you specify a PREFERRED_PROVIDER for Linux in your local.conf?

      The Git tag on the kernel (bdde708) is the 4.1.0 release from Freescale, without our patches.

      1. Øyvind

        Hello Eric,

        thanks for pointing me in the right direction. I had missed the part about using the correct kernel in Daiane’s tutorial. The following steps fixed the problem:

        cd ~/yocto

        MACHINE=nitrogen6x . setup-environment build

        bitbake linux-boundary

        edit build/conf/local.conf and set PREFERRED_PROVIDER_virtual/kernel = “linux-boundary” (Not sure if this is necessary?)

        bitbake fsl-image-gui


  9. quck

    what is the user name and password:

    Poky (Yocto Project Reference Distro) 1.5 nitrogen6x /dev/ttymxc1

    nitrogen6x login: nitrogen6x
    Login incorrect

    nitrogen6x login:

    1. Post
        1. Post
  10. erickr

    Building per example completes successfully for core-image-base (with proper setup using MACHINE=nitrogen6x . setup-environment build). All deployment artifacts are output:

    – 6x_bootscript-nitrogen6x # Curious how this is has “-nitrogen6x” and not6 just 6x_bootscript
    – 6x_upgrade-nitrogen6x
    – core-image-base-nitrogen6x.ext3
    – core-image-base-nitrogen6x.sdcard
    – core-image-base-nitrogen6x.tar.bz2

    But when I peek in the core-image-base-nitrogen6x.tar.bz2 I do not see the 6x_bootscript. If I dd the ext3 filesystem to my SD card it also appears to be missing. When I forcibly copy it onto the SD card and run it via

    mmc dev 0
    ext2load mmc 0 10008000 6x_bootscript
    dtype=mmc; disk=0; fs=ext2; source 10008000

    I get the following output

    ## Executing script at 10008000
    ------ no HDMI monitor
    Setting bus to 2
    Valid chip addresses:
    ------ no Freescale display
    Valid chip addresses:
    ------ no 1024x600 display
    Valid chip addresses:
    ------ no 800x480 display
    ** File not found /imx6q-sabrelite.dtb **
    only CEA modes allowed on HDMI port
    ** File not found /uImage **
    Error loading kernel image

    So it appears my boot script is looking for sabrelite file. However, my conf/local.conf looks to have the right name.

    MACHINE ??= 'nitrogen6x'
    DISTRO ?= 'poky'
    PACKAGE_CLASSES ?= "package_rpm"
    EXTRA_IMAGE_FEATURES = "debug-tweaks"
    USER_CLASSES ?= "buildstats image-mklibs image-prelink"
    PATCHRESOLVE = "noop"
    CONF_VERSION = "1"
    PARALLEL_MAKE = '-j 8'
    DL_DIR ?= "${BSPDIR}/downloads/"

    BTW, I also verified the build output is the same regardless of the PREFFERED_PROVIDER_virtual/kernel = “linux-boundary” being specified in local.conf or not.

    1. Post

      Hi Erick,
      The Yocto image is configured for two partitions:

      1. Boot partition containing uImage and 6x_bootscript, and
      2. Rootfs partition containing everything else.

      The simplest way to create the SD card is to simply dd the .sdcard file to your drive:

      ...tmp/deploy/images/nitrogen6x$ sudo dd if=core-image-base-nitrogen6x.sdcard of=/dev/sdc
      ...tmp/deploy/images/nitrogen6x$ sync && sudo partprobe
      ...tmp/deploy/images/nitrogen6x$ udisks --mount /dev/sdc1
      ...tmp/deploy/images/nitrogen6x$ udisks --mount /dev/sdc2

      The script is checking to see if you have a device-tree file (imx6q-sabrelite.dtb) just to determine if you’re running kernel version 3.5 or later (which need a device-tree file).

      That error message isn’t fatal, but the following one (missing uImage) is.

      1. erickr

        Eric, thanks yes I was trying to use the sdcard image but it wasn’t working. I should be checking the SD card before I try to use it :). Root cause was I was dd’ing the whole sdcard image to an existing partition (doh). In other words, I was doing this

        sudo dd if=tmp/deploy/images/nitrogen6x/core-image-base-nitrogen6x.sdcard of=/dev/sdb1

        instead of doing this…

        sudo dd if=tmp/deploy/images/nitrogen6x/core-image-base-nitrogen6x.sdcard of=/dev/sdb

        That was why it was not seeing th 6x_bootscript.

        1. Post
  11. Nilan

    HI All,
    I’m not sure whether this is the right place to ask this question.
    But, I want to use twm window-manager instead if matchbox-windowmanager in fsl-image-gui..
    I looked whether i can do it by configuring the kernel. ( bitbake -c menuconfig linux-imx), but couldnt find the place to remove matchbox and add twm.
    I found twm .bb in meta-openembedded/meta-oe/recipes-graphics/xorg-app/

    Can any body give me idea of how to do it.

    1. Post

      Hi Nilan,

      You should ask this on the meta-freescale or Yocto mailing lists.

      The trick will likely be found in looking through the recipes that make up fsl-image-gui. Many of them support configuration options that you can choose in local.conf or in your own layer.

      I can tell you that this has nothing to do with the kernel.

  12. Shawn

    I seem to be running into a couple of problems here. First making a bootable SDCard for the Nitrogren6x and Second re-configuring for my design based off of the Nitrogen6X which has a i.MX6D and 2G Ra

  13. Rocker

    I have a couple of questions. I’ve been using QNX on the sabrelite i.Mx6, but trying to test out a Linux w/ dev tools build. I want solely console interface. I don’t have and don’t want a screen, touchpad or keyboard. I tried a modified version of core-image-base (bitbake recipe modified to add various build tools). Here’s IMAGE_FEATURES:

    IMAGE_FEATURES += “splash dev-pkgs tools-sdk
    tools-debug tools-testapps debug-tweaks ssh-server-openssh”

    Is that the best image to use? If not, what is?

    I did successfully build this, used dd as above to stick it on my micro sd card, and tried to run it. First problem was uboot was still looking for the qnx ifs file. I changed the active bootcmd to be:

    bootcmd_microsd=mmc dev 1; fatload mmc 1:1 ${loadaddr} 6x_bootscript; go ${loadaddr} printenv

    where loadaddr = 0x10800000.

    When it boots, I get:

    reading 6x_bootscript

    2340 bytes read
    ## Starting application at 0x10800000 …

    then does nothing visible – nothing out the console, console unresponsive. What am I doing wrong/not doing right?


    1. Post

      Hello Rocker,

      You need to use the source command to run the boot script.

      U-Boot > setenv bootcmd_script 'mmc dev 1 && fatload mmc 1 10008000 6x_bootscript && source 10008000';
      U-Boot > saveenv
      U-Boot > run bootcmd_script
      1. Post

        Sorry. I lied.

        The 6x_bootscript expects a few variables from the environment (dtype, disk, and fs as shown in the file on Github).

        The recommended approach is to turn this around and use the clearenv command to reset your environment to factory defaults, which iterate through SD cards and SATA and build a separate boot script for loading QNX.

        U-Boot > run clearenv
        U-Boot > reset
        1. Rocker


          Thanks for the prompt reply. I did the run clearenv and reset, but it did not run. When I did a printenv, I noticed that the default bootcmd_mmc was looking for 6q_bootscript, not 6x_bootscript. I changed the filename on the microSD. Then I got a bazillion errors from the I2C code at the beginning – I think from the

          i2c dev 2

          line. I manually removed that whole section of the bootscript that does the I2C probes and thought that might fix it. Unfortunately not, as the file now gives a CRC error on read and doesn’t seem to run.

          Is there a way to remove the I2C portion of the bootscript AND have a valid CRC?

          Going back to the original post, am I even using an image that will work on the SabreLite?

        2. Rocker

          Another (probably dumb) question. I’m using a SabreLite board. Is the MACHINE=nitrogen6x the right setting to use?

          Thanks again for all the help!

          1. Post

            Yes. For both U-Boot and the kernel, SABRE Lite == Nitrogen6x.

            The Nitrogen6_Lite does require a different configuration of each.

        3. Rocker

          OK. I got it. u-boot was looking for 6q_bootscript because it was the old version of u-boot (instructions on upgrade here: After doing that, then re-writing the sdcard image as in the original instructions, I have a working Linux system. Thanks a ton for this page and the help.

          One other question that would probably be of general interest. dd’ing the whole sdcard image takes a while. I tried using dd to write uImage to /dev/sdg1, but that didn’t work. Is there a way to get the 6x_bootscript and uImage file only to the boot partition without having to write the whole ext3 file system too?

          Thanks again!

          1. Post

            Hi Rocker,

            In general, the reason for using dd is because the partition table (first block of disk image) is included in the source file.

            The better mechanism is to use proper filesystem tools. That is:

            • Partition a disk using fdisk, sfdisk, parted or gparted, and then
            • Create the filesystem(s) using mkfs, and
            • Copy files by extracting from a tar-ball.

            This requires a Linux-based host and a bit more knowledge though.

  14. Roger

    has anybody tested the yocto image with OpenCL yet?

    I get a segfault whenever i try to create an OpenCL context.

    I can query OpenCL device type and Vendor. But then the program crashes. Is is possible that there is an undetected problem with the OpenCL or GAL Lib?

    Regards Roger

  15. Roger

    has anybody tested the yocto image with OpenCL yet?

    I get an error whenever i try to create an OpenCL context.

    I can query OpenCL device type and Vendor. But then the program crashes. Is is possible that there is an undetected problem with the OpenCL or GAL Lib?

    For example:

    1) If i only try the unmodified OpenCL examples in /opt/vivante… i get:

    >>>>>>>> ./clinfo Starting…

    Available platforms: 1

    Platform ID: 0
    CL_PLATFORM_NAME: Vivante OpenCL Platform
    CL_PLATFORM_VENDOR: Vivante Corporation

    !!! Error # -30 at line 205 , in file main.cpp !!!

    !!! Press to quit…

    2) If i try very trivial Opencl examples, that only displays device information i get an segfault.

    Any ideas?

  16. Tom

    The board boots but it runs at 640 x 480 on my DVI monitor. I can boot other linux images and they come
    up at 1280 x720, So any suggestions how to set what resolution it runs this image runs at?
    I assume there is some detection process that is not working on my setup.


    1. Post

      Hi Tom,

      I’m not sure what you may be seeing, but there are three things to look at first when investigating HDMI resolutions:

      1. What’s requested? (look at video= clauses in cat /proc/cmdline)
      2. What’s supported? (cat /sys/class/graphics/fb0/modes), and
      3. What resolution was negotiated? (cat /sys/class/graphics/fb0/mode)

      I suspect that the DVI monitor only supports VGA out of the CEA modes. See this post for details.

      If that’s the case, you can override this by setting the allow_noncea variable in U-Boot:

      U-Boot > setenv allow_noncea 1
      U-Boot > saveenv && boot
      1. tom

        That fix my video issue – so thanks.
        The post you link to seem to say this issue was fixed in the latest kernel so does this Yocto build use the latest kernel ?

        Also I have notice that may times this image will hang on boot if I press the reset button. Looking at the console it is not always in the same spot but most times it is at :
        Starting Dropbear SSH server: dropbear.

        apmd[1809: apmd 3.2.1 interfacing with apm driver 1.13 and APM BIOS

        starting 8 nfsd kernel threads:

        If I disconnect the power for 20 seconds or so and then power up it boots up ok.
        I have run the android image and it seems to boot fine.
        So any suggestions?

        Also is there an Linux image that supports having multiple movable / sizeable windows on the screen at the same time? As I could not figure out how to have sizeable windows with this image.


        1. Post

          Hi Tom,

          We haven’t seen the issue you described with a hang on startup. Are you running the latest U-Boot (v2013.10)?

          I’m also not sure about (re)sizeable windows, and hadn’t noticed that things default to full-screen before. If memory serves, at least the Qt media player is movable and (re)sizeable.

          1. tom

            Yes I am running the following Uboot:

            U-Boot 2013.10-00049-ge2ee7f4 (Nov 11 2013 – 18:06:33)

            CPU: Freescale i.MX6Q rev1.2 at 792 MHz

            I have the image on a Transcend 8GB class 6 microSD card.

            I have switched to using the Raring image and it seems to boot ok from a reset.

            So thanks for you time but if there is anything you want me to check about the boot hanging issue just let me know.


          2. Post
  17. Anderson

    Trying to run Qt OpenGL demos but seems that they were not installed in dora image sdcard. I also build dora image manually using yocto but qt opengl demos are not being installed, probably some missing dependency in configure phase of Qt? Is there an image that contains Qt opengl demos? I am trying to compile a custom meta layer which has Qt and openGL but I am getting the some unresolved symbols: (…)tmp/sysroots/nitrogen6x/usr/lib/ undefined reference to `gcSaveProgram’

    Thanks for any help

  18. Post
  19. Mahyar

    Hi Ericn,
    I was trying to test the Mipi camera (OV5640) on Yocto.
    I followed the instruction and changed the defconfig file (before creating the image) to this:
    camera seems to be found when booting the board (sabrelite) “camera ov5640_mipi is found”
    but I don’t see /dev/video0 to test the camera “Unable to open /dev/video0”
    any suggestions?


    1. Post

      Hi Mahyar,

      I just (re)tested this and found the same thing. It appears that we need CONFIG_MXC_CAMERA_OV5640=m in the kernel configuration.

      I’m not sure when this broke, but I just pushed a patch to our kernel git repository.

      I hope to send an update to the meta-freescale list later today.

      Sorry for the hassle.

      1. zealot65

        Hiya ericn,

        I don’t believe the fix works. After adding the line to all my nitrogen6x_mipi_defconfig (by the way, which file do I need to modify anyway?), doing bitbake again, dd, boot and then ‘lsmod’, i can’t see a reference to “ov5640_camera_mipi”…what did I do wrong? Followed the instructions in this post to the letter.

        Appreciate the help, thanks.

        1. Post

          Hi Zealot,

          There’s a long and twisty path between our Github repository and bitbake… I send updates to the meta-freescale list, and they (Otavio) accept them and push them to

          From there, you should be able to run repo sync and pull in the changes, but this commit was applied to the master branch, so you’d also need to switch branches.

          Finally, it turns out that meta-fsl-arm-extra isn’t using our defconfig file. It has its’ own version.

          A simpler way to handle a config change is to use bitbake -c menuconfig linux-boundary from within your build tree. This will bring up a menu that allows you to select this module under

          • Device Drivers
          • Multimedia Devices
          • Video Capture Adapters
          • MXC Camera/V4L2 PRP Features support
          • OmniVision ov5640 camera support

            Once you select “M” here, you should get a module named ov5640_camera in your image.

            You can see the result on a running system in /proc/config.gz:

            root@boundary: ~/# zcat /proc/config.gz | grep OV56

            Sorry for this being such a hassle.

            The alternative (building outside of Yocto) is probably simpler if you’d like to go that route.

          1. Zealot


            Successfully managed to bitbake -c menuconfig linux-boundary from within the build tree. I am a complete n00b @ this, can you please tell me what i need to do next to mull the kernel over to the board? I already built an image using Yocto and dd-ed that to an sd card.

            Thanks in advance.

          2. Zealot


            I’ve successfully ran ‘bitbake -c menuconfig linux-boundary’ and got a ‘.config’ file. Should I now just follow the instructions in Task #5 ( from Daiane’s tutorial and do ‘bibake fsl-image-gui’, then DD the resulting image?

            Can’t i just copy the linux-boundary kernel?


          3. Post
          4. Post

            Sorry. I didn’t answer the question.

            Yes, you can copy the linux-boundary kernel, but you haven’t yet built it. I believe that bitbake -c compile linux-boundary will do the compilation, but the kernel will be in a really hairy tree under build/tmp/work/nitrogen6x/...linux-boundary/versiontag/....

          5. Zealot


            I presume I am to add

            — PREFFERED_PROVIDER_virtual/kernel = “linux-boundary” —

            in my conf/local.conf ??

          6. Post
  20. Zealot

    Sorry for previous comment.

    Building outside of Yocto?? what do you mean??

    By the way, tried the ‘bitbake -c menuconfig linux-imx’ (which is what freescale says you should do, as per and I DO HAVE the packages you mentioned set to (M) … but after ‘bitbake fsl-image-gui’ … no MIPI driver…

    what…the…fiddlesticks…is going on?!

    1. Post

      Hi Zealot,

      I’m going to answer the easy one first (out of Yocto build). The following assumes that you have a toolchain named arm-linux-gnueabihf- like the one available in the Ubuntu gcc-arm-linux-gnueabihf package.

      This is essentially the same process as described here for the LTIB toolchain with current branches.

      ~/$ git clone git://
      ~/$ cd linux-imx6
      ~/linux-imx6$ git checkout origin/boundary-imx_3.0.35_4.1.0 
            -b boundary-imx_3.0.35_4.1.0
      ~/linux-imx6$ export ARCH=arm
      ~/linux-imx6$ export CROSS_COMPILE=arm-linux-gnueabihf-
      ~/linux-imx6$ make nitrogen6x_mipi_defconfig
      ~/linux-imx6$ make uImage modules -j4

      At this point, you’ll have a working kernel in arch/arm/boot/uImage and you can copy that to the boot partition on the device (/media/mmcblk0p1 on a running Yocto machine).

      To copy the kernel modules, you’ll want to first create a temporary directory using modules_install, then ding some symlinks in the tree:

      ~/linux-imx6$ make INSTALL_MOD_PATH=tmp/ modules_install
      ~/linux-imx6$ find tmp/lib/modules/ -type l -exec rm -f {} ;

      The kernel module tree will then be in tmp/lib/modules/3.0.35-something and you should copy that entire tree to /lib/modules/ on the Yocto image.

  21. Zealot

    One more thing eric,

    How come when looking at contents of “meta-fsl-arm/recipes-kernel/linux” there’s no folder named “linux-boundary” for that recipe, nor is there a *.bb file, but I can still build the recipe?

    1. Post

      You should have a linux-boundary-3.0.35 (3.0.35 is the version number).

      Yocto/bitbake does weird things with both directory names and variable names…

      ~/yocto$ find sources/meta-fsl-arm-extra/ -name linux-boundary*
  22. zhang.yn

    i got a BD-SL-i.MX6 board, and i download fsl-image-gui-nitrogen6x-20130928181014.rootfs.sdcard.gz
    and dd the sdcard as the command given.

    but when i boot the board, i got this error message:(whole log message shown at last)
    Wrong Image Format for bootm command
    ERROR: can’t get kernel image!

    do i have to compile to get the image, then write to sdcard?
    since it takes so much time to compile it, and i got some errors to finished it.

    please help me.

    this is the boot log:

    U-Boot 2009.08 (Nov 13 2013 – 11:06:28)

    CPU: Freescale i.MX6 family TO1.2 at 792 MHz
    Temperature: 19 C, calibration data 0x5494a47d
    mx6q pll1: 792MHz
    mx6q pll2: 528MHz
    mx6q pll3: 480MHz
    mx6q pll8: 50MHz
    ipg clock : 66000000Hz
    ipg per clock : 66000000Hz
    uart clock : 80000000Hz
    cspi clock : 60000000Hz
    ahb clock : 132000000Hz
    axi clock : 264000000Hz
    emi_slow clock: 132000000Hz
    ddr clock : 528000000Hz
    usdhc1 clock : 198000000Hz
    usdhc2 clock : 198000000Hz
    usdhc3 clock : 198000000Hz
    usdhc4 clock : 198000000Hz
    nfc clock : 24000000Hz
    Board: MX6Q-SABRELITE:[ POR]
    Boot Device: I2C
    I2C: ready
    DRAM: 1 GB
    JEDEC ID: 0xbf:0x25:0x41
    Reading SPI NOR flash 0xc0000 [0x2000 bytes] -> ram 0x276009b8

    In: serial
    Out: serial
    Err: serial
    Net: got MAC address from IIM: 37:76:77:7f:ff:ff
    FEC0 [PRIME]
    Warning: FEC0 MAC addresses don’t match:
    Address in SROM is 37:76:77:7f:ff:ff
    Address in environment is 00:01:02:03:04:05

    Hit any key to stop autoboot: 0
    setenv – set environment variables

    setenv name value …
    – set environment variable ‘name’ to ‘value …’
    setenv name
    – delete environment variable ‘name’
    mmc1 is current device

    MMC read: dev # 1, block # 2048, count 8192 … 8192 blocks read: OK
    Wrong Image Format for bootm command
    ERROR: can’t get kernel image!

    1. Post
      1. zhang.yn

        Thank you,i will try to upgrade the uboot.

        the version of U-Boot i go is from the default SDK download site.

        1. Post
  23. zhang.yn

    maybe they did, but not very good as my opinion. Since i am really new to linux embedded developement, i just search the web for answer, thank you for your help.

  24. Josh

    Does anyone know how to get rid of those four penguins that show up before the yocto logo comes up?

    1. Josh

      Never mind, I found it. it’s in the config file under device drivers, graphics support, bootup log, available from bitbake -c menuconfig linux-boundary

  25. hk

    I followed up Daiane’s instruction to build my images. I was able to build core-image-base, but had a problem with fsl-image-test. I found the following issue and applied the change manually (it must not be in the branch since sync was not retrieving the patch):

    Also, I used menuconfig to disable ov5642 and enable ov5640.

    I can build the images, but can’t use gstreamer. I keep getting this error:
    ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0
    VIDIOC_DQBUF failed.
    ERROR: v4l2 capture: VIDIOC_QBUF: buffer already queued
    VIDIOC_QBUF failed

    I saw in an earlier note that this could be a hardware issue, but it is not in my case. I am using Nitrogen6x board with Solo processor, and using the SD Card that came with the Timesys demo, I can display the camera images on the LCD (1280×800 LCD). My Gstreamer commands also fail with the same error on Timesys build. There must be something wrong with using these commands.

    I have tried many gstreamer commands, and they all fail with the same error. One example is:
    $ gst-launch mfw_v4lsrc ! mfw_v4lsink

    Also, I have been manually inserting the mxc_v4l2_capture module on power up:
    $ modprobe mxc_v4l2_capture
    How can this be automated as part of the build?

    I tried adding capture-mode=4 to the above command, and I get the same error.

    Are you aware of any issue with the latest build configuration that would cause this problem? What else can I try?

    1. Post

      Hell hk,

      You didn’t mention what branch you’re using to build things.

      Can you test using the Yocto Dora image?

      You can add mxc_v4l2_capture into /etc/modules to get it to load at boot time.

      I’m not aware of any issues with the OV5640 camera subsystem in any branch of Yocto.

      1. hk

        Hello Eric,

        I am using the Dora branch.

        A couple of things are puzzling:
        1. Why gst-launch is failing the same way with the TimeSys SD Card that came with Nitrogen6x board. If I use the GUI on the LCD, I can get the camera image to display on the LCD. Is there a typo in what I am typing?! Or because of the demo running gst-launch is expected to fail on TimeSys image?
        2. I got a copy of Dora release around April 8th, and had to apply this patch manually:
        Could other things have been applied since you tested and I got a copy that is messing things up?

        1. Post

          Hi hk,

          The gst-launch parameters in the Timesys build are available in /etc/timesys-theatre.conf.

          The only thing you should need to change in the Yocto Dora branch is the camera selection:

          ~/linux-imx6$ diff -Naurb arch/arm/configs/nitrogen6x_defconfig arch/arm/configs/nitrogen6x_mipi_defconfig
          --- arch/arm/configs/nitrogen6x_defconfig	2014-04-13 13:44:07.722227464 -0700
          +++ arch/arm/configs/nitrogen6x_mipi_defconfig	2014-04-13 13:44:07.722227464 -0700
          @@ -158,7 +158,7 @@
           # CONFIG_MEDIA_TUNER_CUSTOMISE is not set
           # CONFIG_RADIO_ADAPTERS is not set
          1. hk

            Thanks. Based on the information in the conf file, I was able to see the camera image on the LCD with the following command (with the TimeSys build):
            $ gst-launch mfw_v4lsrc capture-mode=5 ! mfw_v4lsink disp-width=1280 disp-height=800
            Same command did not work on my Dora build.

            Would you please verify that this should work on my Dora build with OV5640:
            $ gst-launch mfw_v4lsrc ! mfw_v4lsink

            I can restart a new build of Dora from scratch and see if anything changes. I will only change the camera from OV5642 to OV5640. I am pretty sure I was not able to build fsl-image-test until I applied the patch I mentioned earlier. Do you believe the patch is not necessary?

          2. hk

            Hi Eric,

            I rebuilt Dora from scratch, and nothing changed. This time I only built fsl-image-gui, and followed instructions at the top of this page, which also match Daiane’s document. I had to apply the patch I mentioned for the build to work. As of last night when I started the build the patch must not have been in the Dora branch. The only other change I made was using menuconfig to disable OV5642 and enable OV5640. Here is the result of my test (slightly sensored so customer name is not shown in the build path):

            root@nitrogen6x:~# gst-launch mfw_v4lsrc ! mfw_v4lsink
            MFW_GST_V4LSRC_PLUGIN 3.0.9 build on Apr 16 2014 09:57:53.
            pwm_config: pwm freq = 22000000, clk_select=1 clock_rate=66000000
            ov5640_mipi_camera_powerdown: powerdown=0, power_gp=0xa9
            MFW_GST_V4LSINK_PLUGIN 3.0.9 build on Apr 16 2014 09:57:39.
            Setting pipeline to PAUSED …
            pwm_config: pwm freq = 22000000, clk_select=1 clock_rate=66000000
            ov5640_mipi_camera_powerdown: powerdown=0, power_gp=0xa9
            Pipeline is live and does not need PREROLL …
            Setting pipeline to PLAYING …
            New clock: GstSystemClock
            ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0
            ERROR: from element /GstPipeline:pipeline0/MFWGstV4LSrc:mfwgstv4lsrc0: Internal data flow error.
            Additional debug info:
            /yocto/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer/0.10.36-r2/gstreamer-0.10.36/libs/gst/base/gstbasesrc.c(2625): gst_base_src_loop (): /GstPipeline:pipeline0/MFWGstV4LSrc:mfwgstv4lsrc0:
            streaming task paused, reason error (-5)
            Execution ended after 10004586509 ns.
            Setting pipeline to PAUSED …
            Setting pipeline to READY …
            Setting pipeline to NULL …
            Total rendered:0
            Freeing pipeline …
            [—>FINALIZE v4l_sink
            root@nitrogen6x:~# ov5640_mipi_camera_powerdown: powerdown=1, power_gp=0xa9


            I also tried it with the modified version of the command that worked with Timesys build, and the result was the same. I don’t know if this is a build issue or the command needs to be modified. Could it have anything to do with my 1280×800 display? Any ideas?

      2. hk

        Also, if you have a Dora build for Nitrogen6x that supports OV5640, I could try that to isolate whether or not this is a build issue. Thanks.

        1. Post
          1. hk

            Hello Eric,

            Did you first try the complete Dora build, was not able to get gstreamer to work, and updated the Kernel? Or did you not try to the complete Dora build to begin with?

            I have submitted this question to Freescale community, and it would be good to know if they have an issue with building the boundarydevices version of Kernel in the Dora branch.


          2. Post

            Hi hk,

            There are lots of folks using Dora and the Nitrogen6x kernel, so the issue isn’t there.

            Did you try our image and the kernel I provided?

            I saw your post on the i.MX Community and you gave some possibly important details there. In particular, you’re running on a Solo processor, and it’s possible that we’re not mapping the MIPI channel properly on that board.

            Again, can I get you to try the kernel I provided and our Dora image?

          3. hk

            Hi Eric,

            Yes, sorry I missed the fact that you had responded, and did not see it until today. I will try that and report back.

            One more question for you. I do my build in a VM. I tried the dd command several time under Linux, and it only worked once. I ended up transferring the .sdcard image to Windows, and ran dd from Cygwin to get it on the SD card. To update just certain files on the partitions, can I mount them under Windows/Cygwin (I am not optimistic that it would work in the VM)? Or do you recommend a different approach?

          4. Post

            Hi hk,

            I strongly recommend the use of a native Linux build machine. Yocto eats a lot of resources, and I don’t think you’ll be happy with the process unless you have a substantial build machine.

            That said, our .sdcard images are usable with Alex Page’s USB Image Tool under Windows.

Leave a Reply