December 18, 2012

LTIB on i.MX6 without X

Our previous LTIB images for i.MX6 have all been re-packaged versions of the binaries released by Freescale.

We just uploaded the first that we actually built ourselves. You can download it from here:

To install it, simply download and extract onto a single-partition SD card like so:

~/$ echo ,,83 | sudo sfdisk /dev/mmcblk0
~/$ sudo mkfs.ext3 -L ltib-12.09 /dev/mmcblk0p1 && sync
~/$ udisks --mount /dev/mmcblk0p1
~/$ sudo tar -C /media/ltib-12.09/ -zxvf ltib-12.09-20121218.tar.gz
~/$ sync && sudo umount /media/ltib-12.09
For those of you who have gone through the process, LTIB can be quirky and has a number of host-system dependencies that can get in the way of a successful build.

The following is a list of the hurdles we had to overcome during the build process.

The LTIB image contains our latest non-Android kernel from Github and the latest version of U-Boot.

The LTIB configuration itself includes G-Streamer acceleration and the Vivante GPU demos and is configured to provide a login on /dev/tty0. Additional details are available in the file README.ltib in the root of the tar-ball.

Comments 33

  1. chrismurf

    You say “latest non-android kernel”, but your link goes to a branch with “android” in the name. If I build that kernel with the nitrogen6x defconfig, will I get the same kernel? Is that a typo? Am I confused? Thanks!

    1. Post

      Hi Chris,

      Good catch! It appears that I let auto-complete point me at the wrong thing.

      I’ve updated the link above, so that it points at our “boundary-L3.0.35_12.09.01_GA” branch.

      We really gotta figure out shorter names…

  2. Post
  3. marko

    Not all easy sailing. Some warnings I’m not sure I need to pay attention on.

    MX6Q SABRELITE U-Boot > run upgradeu
    Card did not respond to voltage select!
    mmc0(part 0) is current device
    MMC: block number 0x1 exceeds max(0x0)
    ** Can’t read from device 0 **

    ** Unable to use mmc 0:1 for fatload **
    ** Bad partition 1 **
    mmc1 is current device
    reading /6q_upgrade

    ** Unable to read “/6q_upgrade” from mmc 1:1 **
    Loading file “/6q_upgrade” from mmc device 1:1 (xxb1)
    ** File not found /6q_upgrade

    Also, should I rename the 6x_upgrade on memory card to 6q_upgrade?

    1. Post

      Hi Marko,

      Sorry about that. I didn’t include a 6q_upgrade in this package, since the focus was on the userspace, not U-Boot.

      If you want to upgrade U-Boot, I suggest using the files in the package here:

      The blog post describing the upgrade process is here.

        1. Post
  4. Dennis

    I’m trying to get the image running but I keep getting an error while trying to mount mmcblk0p1 as the root filesystem:

    VFS: Cannot open root device “mmcblk0p1” or unknown-block(179,1)
    Please append a correct “root=” boot option; here are the available partitions:
    1f00 768 mtdblock0 (driver?)
    1f01 8 mtdblock1 (driver?)
    1f02 1272 mtdblock2 (driver?)
    b300 15558144 mmcblk0 driver: mmcblk
    b301 15557631 mmcblk0p1 00000000-0000-0000-0000-000000000000
    Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(179,1)

    I do see the driver come up (from earlier in the log):

    sdhci: Secure Digital Host Controller Interface driver
    sdhci: Copyright(c) Pierre Ossman
    mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using DMA
    sdhci sdhci-esdhc-imx.3: no write-protect pin available!
    mmc1: SDHCI controller on platform [sdhci-esdhc-imx.3] using DMA
    mxc_vdoa mxc_vdoa: i.MX Video Data Order Adapter(VDOA) driver probed
    VPU initialized
    mxc_asrc registered
    Thermal calibration data is 0x58e5523a
    anatop_thermal_counting_ratio: raw25c=1422 raw_hot=1362 hot_temp=58
    Anatop Thermal registered as thermal_zone0
    anatop_thermal_probe: default cooling device is cpufreq!
    usb 2-1: new high speed USB device number 2 using fsl-ehci
    mmc0: new high speed SDHC card at address aaaa
    mmcblk0: mmc0:aaaa SU16G 14.8 GiB (ro)
    mmcblk0: p1

    I have tried 3 different SD cards, two give this error but one card (a 1Gig) wasn’t discovered by u-boot, also there is no display available.

    Any ideas?
    Thank you,

    1. Post

      Hi Dennis,

      It appears that the SD card is coming up as read-only:

      mmcblk0: mmc0:aaaa SU16G 14.8 GiB (ro)

      Are you using the full-sized slot on a SABRE Lite? If so, please check the write-protect tab.

      If not, can you run an fsck on the card?

      1. Dennis

        Hi Eric,

        I’m using full sized cards.
        The write protect tab is off (I can write the image and I tried writing a file from the host).
        I have already run fsck on one card (without -f though), so I just tried fsck -f /dev/sdb1 for all 3 cards, and they’re ok.
        The R/O is puzzling, though. I have the u-boot (2013.01-rc1-02392-ge86d319) loaded. Is there a way to try writing to the SD card with it? It reads the card (mmc dev 0; ext2ls mmc 0:1) properly (as well as loading the script/kernel).

        Thank you for your quick response!

      2. Denn

        Hi Eric,

        I think I found it – the SD3 connector seems to have a cold solder joint on the far left pin. I held it down and reset, and the image came up!

        Thank you,

        1. Post
          1. Martin

            I had the same unsoldered joints on the two far left pins. Maybe there’s a production problem.

            I just soldered them and my full size SD card is mounted in RW mode.

  5. Ron

    I installed the new release and am using gstreamer for my work on my sabrelite. The decoder
    test from file worked as did the test to see the usb camera: gst-launch v4l2src ! mfw_v4lsink
    But for some reason the encode test from usb camera did not work. I post it here since
    it did work with the previous ubuntu os I was using. Below is the command I uses along with
    the output. I would prefer not to go back to the bloated ubuntu. Thanks.


    gst-launch v4l2src num-buffers=-1 ! queue ! vpuenc codec=0 ! matroskamux ! filesink location=output.mkv sync=false

    Setting pipeline to PAUSED …
    [INFO] Product Info: i.MX6Q/D/S
    vpuenc versions 🙂
    plugin: 3.0.2
    wrapper: 1.0.24(VPUWRAPPER_ARM_LINUX Build on Dec 18 2012 07:12:03)
    vpulib: 5.4.6
    ERROR: Pipeline doesn’t want to pause.
    ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not negotiate format
    Additional debug info:
    gstbasesrc.c(2787): gst_base_src_start (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
    Check your filtered caps, if any
    Setting pipeline to NULL …
    Freeing pipeline …

    1. Post

      Hi Ron,

      I suspect that the issue has to do with the kernel configuration. Specifically, I suspect that the UVC drivers aren’t included in this release. You can verify that by looking in /proc/config.gz.

      root@boundary ~$ zcat /proc/config.gz | grep USB | grep VIDEO
      # CONFIG_VIDEO_PVRUSB2 is not set
      # CONFIG_VIDEO_USBVISION is not set

      If you have a kernel that’s working on an Ubuntu release, you should be able to copy it over. If the UVC drivers were compiled as modules, you’ll need to copy /lib/modules/ as well.

      1. Ron

        Thanks for getting back to me so fast. The result of the zcat was exactly the
        output you showed. I am not sure if this is good or bad. If bad then what
        do I need to copy over? What seems odd about this is that I can get video
        input from the USB camera when I display it right to the screen. It only fails
        when I try to send it to the encoder.
        This always worked: gst-launch v4l2src ! mfw_v4lsink


        1. Post

          Hi Ron,

          If the vrl2src ! mfw_v4lsink thing works, then never mind about the USB camera driver. It’s obviously working.

          Then the question is, what isn’t. I haven’t used the vpuenc element against a USB camera, so I’m at a loss. If the pipeline is working under Ubuntu, I’d recommend comparing the output from gst-inspect vpuenc on each version to see if the interface has changed. You might need to fill in some additional details before it can negotiate format.

          What color-space does your camera return?

          1. Ron

            The “gst-inspect vpuenc” returns the same for both with the exception of the version number being
            3.0.1 on the ubuntu and 3.0.2 on the newer linux w/0 X version. Cam is Logitech Pro 9000.


      2. Ron

        The previous ubuntu release had the same results from the zcat /proc/config.gz
        I poked for differences and I noticed differences in the plugin, wrapper, and firmware
        Original version on ubutu version:
        vpuenc versions 🙂
        plugin: 3.0.1
        wrapper: 1.0.24(VPUWRAPPER_ARM_LINUX Build on Sep 7 2012 20:27:33)
        vpulib: 5.4.6

        On new linux version
        vpuenc versions 🙂
        plugin: 3.0.2
        wrapper: 1.0.24(VPUWRAPPER_ARM_LINUX Build on Dec 18 2012 07:12:03)
        vpulib: 5.4.6


    Newbie here, please be gentle. Downloaded this package and got it booting. Now I need to login using the ‘freescale’ login and password. What is the login and password I need for this package? Tried all the common variants to no avail.

    1. Post

      Easiest question of the day… The root password is Boundary. This comes up often enough that it has it’s own page here.

      We do this mainly so that openssh will allow root login (it won’t without a password).

  7. Ron

    I want to compile applications on the sabrelite platform with this OS (not cross-compile). Which gcc do I
    install for native compiles and what options are needed to get best performance from the device?

  8. synthnassizer

    Hi there,
    I have successfully untar’ed the LTIB image on a microSD card and boot into it.
    I seem to have difficulty though to do the same, with the same rootfs & kernel by trying to boot from nfs.
    The boot procees stops at

    VFS: Mounted root (nfs filesystem) on device 0:13.
    Freeing init memory: 192K

    so the rcS script is not run. Do you have a reason why this happens? Thank you very much for your help.

  9. synthnassizer

    correction on previous post.
    The system actually boots butREALLY REALLY slowly.

    Freeing init memory: 212K
    starting pid 1386, tty ”: ‘/etc/rc.d/rcS’
    Mounting /proc and /sys
    Starting the hotplug events dispatcher udevd
    pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
    pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
    udevd (1395): /proc/1395/oom_adj is deprecated, please use /proc/1395/oom_score_adj instead.
    Synthesizing initial hotplug events
    camera_reset: power_gp=0x6, reset_gp=0x8 reset_gp2=0xab
    mx6_csi0_powerdown: powerdown=0, power_gp=0x6
    ov5642_read_reg:write reg error:reg=300a
    ov5642_probe:cannot find camera
    Setting the hostname to freescale
    Mounting filesystems
    Booted NFS, not relocating: /tmp /var
    Starting the ssh server:
    /var/empty must be owned by root and not group or world-writable.
    Running sysctl
    Setting up networking on loopback device:
    Setting up networking on eth0:
    udhcpc (v1.20.2) started
    Sending discover…
    Sending select for…
    Lease of obtained, lease time 86400
    nfs: server not responding, still trying

    I don’t know what is going on, but quite possibly some interrupt is being served and doesn’t leave any room userspace commands to be executed. I do not know what happened in the end with the nfs server – it surely is still up..

    1. Post

      Can you forward your kernel command-line?

      Are you using the ‘tcp’ option for NFS (i.e. nfsroot=,v3,tcp)?

      How about the enable_wait_mode=off flag?

      1. synthnassizer

        hi ericn,
        I have kept the original uboot (2009.08) for now and only modified the relevant boot variables. so uboot > print , gives (showing the relevant bits only):

        bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
        bootcmd_net=run bootargs_nfs;tftpboot ${loadaddr} ${kernel}; bootm
        bootcmd=run bootcmd_net

        tcp is in, enable_wait_mode=off is off…

        if i do add enable_wait_mode=off after tcp, booting will stop a little earlier

        IP-Config: Got DHCP answer from, my address is
        IP-Config: Complete:
        device=eth0, addr=, mask=, gw=,
        host=imx6_armboard, domain=, nis-domain=(none),
        bootserver=, rootserver=, rootpath=

        right here.. it will stop and not continue (at least not within a few seconds) to the following

        VFS: Mounted root (nfs filesystem) on device 0:14.
        devtmpfs: mounted
        Freeing init memory: 212K

        which it goes to quickly otherwise

  10. synthnassizer

    Hi ericn,
    I need to know the toolchain that you used to build this LTIB rootfs.
    I am trying to debug an application running on a sabre lite board.
    I built the application using the gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux toolchain.
    but the application exits as soon as a thread is spawned. I verfied this in gdb, using both the Linaro and the rootfs runtime libraries.

    I am hoping it has something to do with the library’s differences…

    1. Post

      We used the LTIB-provided defaults, which looks like it’s not the
      Linaro toolchain by default, and appears to be using eglibc:

  11. jkrupp

    What should MACHINE= while building this? I’m using the BD-SL-i.MX6. During link, I’m getting

    ld: cannot represent machine ‘arm:wandboard-dual’


    1. Post
  12. bdbdbd

    This is really weird. All my posts on the Boundary Devices website seem to have been deleted. They are all present in the Google cache. Just not viewable. Please can you undelete all my posts? Thanks.

Leave a Reply