Buildroot 2012.02 for Beagleboard-xM with LI-5M03 (mt9p031) camera support

New all-in-one Buildroot ver. 2012.02-mg01.1 released! It includes MLO + U-Boot 2011.12, Linux kernel 3.2.8 (@1GHz) and RootFS with all the necessary packages for working with LI-5M03 (mt9p031) camera module from Leopard Imaging. In order to build the images just run the following commands:

git clone git://
cd ./buildroot
make beagle_xm_full_defconfig

After that you’ll find all the images in buildroot/output/images folder:

  1. MLO –  U-Boot SPL first stage bootloader;
  2. u-boot.img – U-Boot 2011.12 binary;
  3. uEnv.txt – simple file with U-Boot parameters;
  4. uImage – Linux kernel 3.2.8 image;
  5. rootfs.tar – Root Filesystem image;

This build requires an external toolchain Codesourcery 2011.09-70 which needs to be installed in the /opt/CodeSourcery folder. However, you can use another toolchain version or folder after proper initialisation in Toolchain menu (Buildroot menuconfig target).

I added Media-ctl and Yavta packages to the current release so you can configure and test your LI-5M02 (mt9p031) Aptina camera module. Also, I included OpenCV 2.3.1, MPlayer, FFmpeg and GStreamer packages, but please note that there is no X11 support in this release so if you need X11 you need to enable it in Buildroot. For full list of packages in current release please see corresponding wiki page: 2012.02-mg01.1.

If you need to add/remove some packets you can easily do this using the next command:

make menuconfig
Package Selection for the target —>

Please note that if you need to remove something you need to untick packet’s name in menuconfig and rebuild the entire RootFS.

Also please note that I added the following compiler flags to the configuration for Beagleboard-xM:

-mfpu=neon -ftree-vectorize -mfloat-abi=softfp


All the files can be found in buildroot/output/images folder. Just copy MLOu-boot.imguEnv.txt and uImage to the FAT partition of your SD card and untar everything from rootfs.tar to the second ext3 partition. That’s all, your Beagleboard-xM is ready to go.

Precompiled images

If you don’t have enough time for downloading/building everything or if you want just to test your board you can always use my precompiled images (rootfs.tar.gz – basic RootFS, rootfs_full.tar.gz – RootFS with all default packages):

P.S. If you find some issues feel free to add ticket to the Issues. And please note that it’s just a project I’m using for building all the files for my BB-xM. It’s not a clone or official/unofficial mirror, it’s just a personal project just for fun.

P.P.S. In order to build a basic minimal configuration (i.e. MLO, U-Boot, Linux kernel and RootFS with Busybox only) please use the following commands:

make beagle_xm_defconfig


UPDATE (2012.03.09):

Images were updated with patch release ver. 2012.02-mg01.2. For details please see Issue 23: kernel loading problem on beagleboard xM Rev A.

UPDATE (2012.03.13):

Bumped release version 2012.02-mg01.3.


62 thoughts on “Buildroot 2012.02 for Beagleboard-xM with LI-5M03 (mt9p031) camera support

  1. Hi Max,
    great work, you saved me lot of time with getting the ISP pipeline running!

    With your „magic commands“ from

    media-ctl -v -r -l ‘”mt9p031 2-0048″:0->”OMAP3 ISP CCDC”:0[1], “OMAP3 ISP CCDC”:2->”OMAP3 ISP preview”:0[1], “OMAP3 ISP preview”:1->”OMAP3 ISP resizer”:0[1], “OMAP3 ISP resizer”:1->”OMAP3 ISP resizer output”:0[1]’

    media-ctl -v -f ‘”mt9p031 2-0048″:0 [SGRBG12 1024×768], “OMAP3 ISP CCDC”:2 [SGRBG10 1024×768], “OMAP3 ISP preview”:1 [UYVY 10006×760], “OMAP3 ISP resizer”:1 [UYVY 1024×768]’

    yavta -f UYVY -s 1024×768 -n 8 –skip 3 –capture=1000 –stdout /dev/video6 | mplayer – -demuxer rawvideo -rawvideo w=1024:h=768:format=uyvy -vo fbdev

    I get an image. Unfortunately the framerate is <7fps which is far too low for my application. Reducing the resolution didn’t change a lot. Do you have any idea where the bottleneck could be?

    My goal ist to achieve 30fps@1024×768 (with LI5M03 on BBxM rev. C)

    kind regards

      • Hi Max,
        Do you have any news? I was playing around for one week now without any remarkable improvements (8.5fps). I measured the camera pixelclock which is only 46.8MHz, this could be increased but I don’t think it is the main problem.

        Another question: We need to implement an autofocus feature on our camera. Did you ever use the H3A module?

        kind regards

          • Hi Max,

            Many thanks for releasing those files.
            Do you have any article or website that show someone how to integrate a package [i.e. drivers, code, etc..] into a linux kernel.

            I have got a USB touch controller eGalaxTouch that I am using with my BeagleBoard-xm. The touchscreen works but I could not calibrate it with tslib and other calibration. So I will like to include the driver source code as a moudle in a linux kernel before I cross – build it for my BeagleBoard-xm
            Please help!

            God blesses!!!

            Best regards,

          • Hi Max,

            I’m curious to know if you managed to achieve that 25-30 FPS with the lbcm5m03 yet (mt9p031)? I’m struggling with getting it to work, and while it does capture, 11 FPS is on the slow side (I’m certain you’re aware of that :D ).

            I did notice on another post you saying something about the frame-rate issue being related to an initialization of the mt9p031 driver and that you’d had it working at 30 FPS…but that appeared to be with an older kernel. Does that fix apply to, or can it be applied to, the current kernel?

      • Hi yanlingzhen,

        There are two options:

        1. You can use U-Boot SPL first stage loader (this is my preference and actually this version of first stage bootloader is used in the current Buildroot). Please refer to the U-Boot 2011.12 sources/description for details;

        2. Or if you need a separate/another version you can use X-Loader from the following repo (please note that I haven’t tested that version of X-Loader):


  2. I have two questions.
    1. I installed the external toolchain Codesourcery 2011.09-70, got your buildroot, set up the environment, fixed the dash-bash problem and started the compile. The scripts and compilers run for hours and finall terminated with the following error.

    make[3]: Entering directory `/home/gbarton/buildroot/output/build/host-util-linux-2.20/misc-utils’
    CC cal.o
    CCLD logger
    cal.c:82:71: fatal error: term.h: No such file or directory
    compilation terminated.

    2. While waiting for the compile I decided to just make an SD card with the precompiled images to see if it will work for what I need. The card boots and the camera shows up in the messages so I would expect it to work. My problem is I can’t seem to get the magic commands typed or copied into the console window. I’m using PuTTY on a Windows machine for the connection to the console port of the BeagleboardXM. When I try to type that huge line in it will wrap.

    • Hi Garry,

      1. Try to install ncurses-dev package on your host system.

      2. It’s an known issue with line wrapping. You can try google play with PS1 variable in /etc/profile. Or just use ssh connection to the board.


      • Hi Max,
        Installing ncurses-dev did get me past the error I posted yesterday but then is ran into another one. I must have something set up wrong on my system. Any ideas on this one?

        The following error is now generated:

        In file included from setterm.c:111:0:
        /home/gbarton/buildroot/output/host/usr/include/ncurses/ncurses.h:796:28: error: conflicting types for ‘tigetflag’
        /usr/include/term.h:775:28: note: previous declaration of ‘tigetflag’ was here
        /home/gbarton/buildroot/output/host/usr/include/ncurses/ncurses.h:797:28: error: conflicting types for ‘tigetnum’
        /usr/include/term.h:776:28: note: previous declaration of ‘tigetnum’ was here
        /home/gbarton/buildroot/output/host/usr/include/ncurses/ncurses.h:798:31: error: conflicting types for ‘tigetstr’
        /usr/include/term.h:772:31: note: previous declaration of ‘tigetstr’ was here
        /home/gbarton/buildroot/output/host/usr/include/ncurses/ncurses.h:802:31: error: conflicting types for ‘tparm’
        /usr/include/term.h:779:31: note: previous declaration of ‘tparm’ was here
        make[3]: *** [setterm.o] Error 1


          • I was finally able to compile everything and make an SD card and it boots but it appears to not do much. I just get a penguin on the upper left corner of the screen. No GUI, no network etc..

            Is this normal?

            Also when I send the magical commands to the camera I don’t get any video but I get the following error:

            media_parse_setup_link: Unable to parse link
            Unable to parse link: Invalid argument (22).

              • Hi Max,
                Is it possible to use the prebuilt images with out the serial cable and minicom? I have a BeagleboardXM Rev C and I am trying to use your prebuilt images. I have connected a monitor and usb keyboard to BBXm ans when it boots, it shows only the penguin at the top and stays there. Any idea how to proceed?

                • Hi MamyK,

                  Unfortunately not at the moment. You should use serial connection, or alternatively you can compile your RootFS with gui support.


          • I hand typed all the commands into a script and was able to get images. Apparently pasting into vi from from the web page didn’t work.

            I have another question. Now that I have the buildroot creating all the files needed to run the system how do I change something. For example I need to reassign the DSS pins in beagle.h and recompile. I changed beagle.h and run make again but it didn’t recompile u-boot. Is there a way to just recompile uboot from the code buildroot put on my system?

            • Just remove the following two files and run make once again:


  3. hi,
    even though i have ncurses_dev installed in my ubuntu 10.04 ( my host machine ) I am still getting this error, can you please point out what I maybe doing wrong.

    checking for ncurses/ncurses.h and ncurses/term.h… no
    configure: error: ncurses header not found
    make: *** [/home/dchatterjee/buildroot/buildroot/output/build/mc-4.8.1/.stamp_configured] Error 1


    • Hi kimera,

      1. Could you please double check if you have ncurses-dev installed on your host system?

      whereis term.h
      whereis ncurses.h

      2. Or you can build your RootFS without Midnight Commander:

      make menuconfig
      Package Selection for the target —>
      Shell and utilities —>
      mc [ ]


  4. Hi,
    I am tryng to compile. I don’t know why, but when I start with make appear error: can’t execute /opt/CodeSourcery/arm-none-linux-gnueabi-gcc
    It’s possible that I haven’t correctly installed the CodeSourcery. I don’t understand how to install it and so I have only untar in “/opt/CodeSourcery”.

    So I set and used a toolchain that works with other procedure for Beagleboard XM revC and Angstrom. (the toolchain is
    Infact when I start with make it compiles for 3 hour and then give me seguent error:

    checking linux/media.h usability… no
    checking linux/media.h presence… no
    checking for linux/media.h… no
    ERROR: Kernel header file not found or not usable!
    make: *** [/root/buildroot/output/build/media-ctl-36a1357c9c879092fe2e36c82187f1d35b1efe13/.stamp_configured] Errore 1

    Do you know what’s the matter?

    While waiting for the compile I decided to just make an SD card with the precompiled images. I used the rootfs_full.tar.gz because I can’t download rootfs.tar.gz.
    It starts but when i try to use the “magic command” (I made a script with the command for putty on windows) terminal says:
    Media-ctl: command not found
    is it right?

    Thank’s for attention and help!

    • I have tried to recompile and this time the error is:

      DDEPENDS_ON_LIBICONV=1 -DDEPENDS_ON_LIBINTL=1 -DEXEEXT=\”\” -pipe -mfpu=neon -ftree-vectorize -mfloat-abi=softfp -Os -c strstr.c
      rm -f t-charset.alias charset.alias
      /bin/bash ./config.charset ‘arm-unknown-linux-gnu’ > t-charset.alias
      In file included from mbchar.h:285:0,
      from mbchar.c:22:
      wcwidth.h:62:10: error: unknown type name ‘wchar_t’
      In file included from mbchar.c:22:0:
      mbchar.h:294:3: error: unknown type name ‘wchar_t’
      mv t-charset.alias charset.alias
      rm -f t-ref-add.sed ref-add.sed
      sed -e ‘/^#/d’ -e ‘s/@”PACKAGE”@/gettext-runtime/g’ ref-add.sin > t-ref-add.sed
      mv t-ref-add.sed ref-add.sed
      rm -f t-ref-del.sed ref-del.sed
      make[5]: *** [mbchar.o] Errore 1
      make[5]: *** Attesa per i processi non terminati….
      sed -e ‘/^#/d’ -e ‘s/@”PACKAGE”@/gettext-runtime/g’ ref-del.sin > t-ref-del.sed
      mv t-ref-del.sed ref-del.sed
      make[5]: uscita dalla directory “/root/buildroot/output/build/gettext-0.16.1/gettext-runtime/gnulib-lib”
      make[4]: *** [all] Errore 2
      make[4]: uscita dalla directory “/root/buildroot/output/build/gettext-0.16.1/gettext-runtime/gnulib-lib”
      make[3]: *** [all-recursive] Errore 1
      make[3]: uscita dalla directory “/root/buildroot/output/build/gettext-0.16.1/gettext-runtime”
      make[2]: *** [all] Errore 2
      make[2]: uscita dalla directory “/root/buildroot/output/build/gettext-0.16.1/gettext-runtime”
      make[1]: *** [all-recursive] Errore 1
      make[1]: uscita dalla directory “/root/buildroot/output/build/gettext-0.16.1″
      make: *** [/root/buildroot/output/build/gettext-0.16.1/gettext-runtime/src/gettext] Errore 2

      i don’t understand…

      • While I was waiting i retry with the precompiled image and so i was wrong with the “magic command”. Now it work!
        Someone Know If ther are some command/method for change:
        – Saturation
        – Brightness
        – Contrast
        – time of Shutter
        – Sensitivity Gain
        and if and how I can apply a Gamma correction?

  5. Hi,

    I wanted to test gstreamer decoding on my beagleboard so I grabbed your precompiled images which look like they include gst-dsp. The dsp doesn’t initialize though:

    # gst-launch playbin2 uri=file:///root/big_buck_bunny_480p.avi
    Setting pipeline to PAUSED …
    Pipeline is PREROLLING …
    dsp_init: dsp open failed

    As far as I can see, the TI bridgedriver module is missing from the rootfs. I’ll try to build, but was wondering if you have any ideas.


    • Hi vader09,

      This RootFS doesn’t have support for DSPBridge/DSPLink/etc. so the only solution for you is to add support for DSP drivers to the RootFS.


  6. Hi,
    I’m working with your prebuilt buildroot (thanks!). I use the magic command and all work all right. Now I want capture some image in jpeg and raw format.
    For the jpeg format I tried with command:

    media-ctl -v -r -l ‘”mt9p031 2-0048″:0->”OMAP3 ISP CCDC”:0[1],
    “OMAP3 ISP CCDC”:2->”OMAP3 ISP preview”:0[1],
    “OMAP3 ISP preview”:1->”OMAP3 ISP resizer”:0[1],
    “OMAP3 ISP resizer”:1->”OMAP3 ISP resizer output”: 0[1]’

    media-ctl -v -f ‘”mt9p031 2-0048″:0 [SGRBG12 1024×768],
    “OMAP3 ISP CCDC”:2 [SGRBG10 1024×768],
    “OMAP3 ISP preview”:1 [UYVY 10006×760],
    “OMAP3 ISP resizer”:1 [UYVY 1024×768]’

    yavta -f UYVY -s 1024×768 -n 8 –skip 3 –capture=4
    –stdout /dev/video6 | mplayer – -demuxer rawvideo -rawvideo
    w=1024:h=768:format=uyvy -vo jpeg

    I don’t know if it is the best method but it works.
    Now, how can I change camera’s Gain and Shutter speed? I guess I have to modify an image sensor register, but where I can find it?

    kind regards,

  7. Hi Max,
    I tried to use your ,,magic command” but after set:
    yavta -f UYVY -s 1024×768 -n 8 -skip 3 -capture=1000 -stdout /dev/video6 | mplayer – -demuxer rawvideo -rawvideo w=1024:h=768:format=uyvy -vo fbdev

    the terminal shows only:
    Invalid size ‘kip’
    MPlayer UNKNOWN-4.6.1 (C) 2000-2010 MPlayer Team

    Playing -.
    Reading from stdin…
    rawvideo file format detected.
    Opening video decoder: [raw] RAW Uncompressed Video
    Could not find matching colorspace – retrying with -vf scale…
    Opening video filter: [scale]
    Movie-Aspect is undefined – no prescaling applied.
    [swscaler @ 0xae9850] BICUBIC scaler, from uyvy422 to rgb565le using C
    VO: [fbdev] 1024×768 => 1024×768 BGR 16-bit
    framebuffer too small for double-buffering, disabling
    Selected video codec: [rawuyvy] vfm: raw (RAW UYVY)
    Audio: no sound
    Starting playback…
    V: 0.0 0/ 0 ??% ??% ??,?% 0 0 $

    Exiting… (End of file)

    Do you have any idea?

  8. Hei Max,
    First of all I want to thank you for sharing your experience with the LI camera module. I followed your instructions and compiled all files. From the comments I understand that it is normal to just get a penguin in the upper left corner on the HDMI output. However I don’t have a serial adapter and I can’t ssh into the beagleboard since no ssh port is configured on the beagle board. Thus I can’t give any system input at all(except for Ctrl+Alt+Del which resets the board).
    How can I get a terminal and system output to appear on the screen? Or how can I access the board when there is nothing else except a penguin?


    • Hi John,

      You can configure your network adapter settings (IP address, netmask etc.) in the “/etc/network/interfaces” file.


  9. Hei Max,
    Thank you for your reaction.
    I am using my laptop to share my WiFi over a eth0 bridge to the beagle board. I used your precompiled images and edited /etc/network/interfaces to
    # Configure Loopback
    auto lo
    iface lo inet loopback

    iface usb0 inet static

    I tried the same with eth0 instead of usb0 but the beagleboard does not react to a ping test.

    How does a correct configured /etc/network/interfaces look like?

    Is there any way to get a terminal on the HDMI output?


    • Just add the following lines to your “/etc/network/interfaces”:

      auto eth0
      iface eth0 inet static

  10. Hi, Max:

    Great post!

    I have some questions regarding to your latest rev. I tried to run it on my BBxM revC board. I copied generated MLO/uImage/u-boot.bin/uEnv.txt to boot partition, and untar rootfs into 2nd ext3 partition. But when applying power to my BBxM board, it hangs forever like this:
    U-Boot SPL 2011.12-mg01.3 (May 16 2012 – 14:55:22)
    Texas Instruments Revision detection unimplemented
    OMAP SD/MMC: 0
    timed out in wait_for_bb: I2C_STAT=1000
    reading u-boot.img
    reading u-boot.img

    U-Boot 2011.12-mg01.3 (May 16 2012 – 14:55:22)

    OMAP36XX/37XX-GP ES1.2, CPU-OPP2, L3-165MHz, Max CPU Clock 1 Ghz
    OMAP3 Beagle board + LPDDR/NAND
    I2C: ready
    DRAM: 512 MiB
    NAND: 0 MiB
    *** Warning – readenv() failed, using default environment

    In: serial
    Out: serial
    Err: serial
    Beagle xM Rev C
    No EEPROM on expansion board
    Die ID #435e00029ff80000016842c81202f022
    Net: Net Initialization Skipped
    No ethernet found.
    Hit any key to stop autoboot: 0
    The user button is currently NOT pressed.
    SD/MMC found on device 0
    reading uEnv.txt

    87 bytes read
    Loaded environment from uEnv.txt
    Importing environment from mmc …
    Running uenvcmd …
    mmc – MMC sub system

    mmc read addr blk# cnt
    mmc write addr blk# cnt
    mmc erase blk# cnt
    mmc rescan
    mmc part – lists available partition on current mmc device
    mmc dev [dev] [part] – show or set current mmc device [partition]
    mmc list – lists available devices
    reading uImage

    4423200 bytes read
    Booting from mmc …
    ## Booting kernel from Legacy Image at 80200000 …
    Image Name: Linux-3.2.8-mg01.3
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 4423136 Bytes = 4.2 MiB
    Load Address: 80008000
    Entry Point: 80008000
    Verifying Checksum … OK
    Loading Kernel Image … OK

    Starting kernel …

    Uncompressing Linux… done, booting the kernel.

    Not sure where I should check to fix this problem? By the way, does your post support RevC BBxM?



  11. Hi, Max:

    I reviewed previous post, and know your latest package DO support the xM RevC board. However, I am still struggling with the bootup situation I posted days ago….

    I believe the image compilation is succeed, just don’t know why it hangs at here forever:
    Booting from mmc …
    ## Booting kernel from Legacy Image at 80200000 …
    Image Name: Linux-3.2.8-mg01.3
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 4423136 Bytes = 4.2 MiB
    Load Address: 80008000
    Entry Point: 80008000
    Verifying Checksum … OK
    Loading Kernel Image … OK

    Starting kernel …

    Uncompressing Linux… done, booting the kernel.

    Also, I tried your prebuild images, it behaves the same.

    However, I can boot the same board with the prebuilt image I got from Angstrom website ( I guess that tells my board is OK.

    I am not sure if I have to do any other configurations on my RevC board to run your prebuilt image. Could you please give me some hints?

    Thank you so much, again!


      • Thanks, Max!

        After changing this parameter, my BBxM boots up properly.
        I have some further questions regarding this:
        1. Is the HW on BBxM not ready for 1GHz? or just the SW (kernel) not support 1GHz yet?
        2. I want to perminantly change mpurate value to 800 instead of changing it every time after uEnv.txt is generated. What I did is manually modify this section in boot/uboot/ file:
        string “mpurate”
        default “800”
        # default “1000”
        MPU frequency
        I was hoping “make menuconfig” is driven by this file, however it seems not. Could you please let me know where does “make menuconfig” get its mpurate value “1000” from?



        • Hi Kevin,

          1. BBxM supports 1 GHz, just make sure you are using the latest Buildroot from my repo (which is mg01.3);

          2. Add the following line to your “configs/beagle_xm_defconfig” and/or “configs/beagle_xm_full_defconfig” files:



          • Hi, Max:

            I believe I was using your lastest Buildroot code which is mg01.3, and the boot message also tells this:
            Booting from mmc …
            ## Booting kernel from Legacy Image at 80200000 …
            Image Name: Linux-3.2.8-mg01.3
            Image Type: ARM Linux Kernel Image (uncompressed)
            Data Size: 4423136 Bytes = 4.2 MiB
            Load Address: 80008000
            Entry Point: 80008000
            Verifying Checksum … OK
            Loading Kernel Image … OK

            Starting kernel …

            Uncompressing Linux… done, booting the kernel.
            As you’ve seen, it hangs here forever if I keep “mpurate=1000″ in uEnv.txt. It can only finish booting up if I change this parameter to 800 or less. I guess I am still missing something. Could you please suggest what I missed?

            Another question about your buildroot structure: if I want to setup an static IP address for eth0 at compilation time, which file I should modify?

            I guess I could modify fs/skeleton/etc/network/interfaces file and add these lines:
            auto eth0
            iface eth0 inet static

            But this will affect kernel skeleton. Is there a better place to configure the ethernet interface? In other words, how to setup Ethernet interface from application level configuration?


            • Hi Kevin,

              1. I’m not sure, but maybe your BB/power supply has some issues (as image works on my BB-xM Rev.C and I know it works on a number of another boards). Start with power supply, i.e. check output current or try another one.

              2. Try to use “earlyprintk” kernel parameter in order to see early kernel debug output.

              3. Yes, if you need to change default parameters of your RootFS then “fs/skeleton” is the best place to do that.


  12. Hei Max,
    Thank you very much for your help. I got everything working and capturing videos and converting them works fine. However I faced some issues:
    1. My videos are colored yellow. Cleaning the camera and reinstalling everything didn’t help. Have you ever face an issue like that?
    2. Even with smaller resolutions I cannot capture images on a higher rate than 13.6fps. You reported you could capture video at 25-30 fps. How did you manage to do so?
    3. I would like to do some basic color detection with opencv. At my PC everything works fine with opencv and a webcam. How can I open the video stream on the beagleboard with opencv or how can I get Opencv to detect the camera?

    Could you give me some advies on these questions?


  13. Hi Max,

    I have an LBCM3M1 (MT9T111) module and an LBCM5M1 (MT9P011) module from Leopard Imaging which I’m trying to get working on my BB-xM (Rev.C). Is there any support for these in kernel 3.2.8 or do I have to go back to 2.6.32? I can only see MT9P031, MT9T001, MT9V011 and MTV032 listed in linux-3.2.8.config in the buildroot/board/beagleboard/xm directory.

    If it is a case of going back to 2.6.x, is it just a case of following your instructions for 2011 Buildroot?

    BTW: I can confirm that your instructions for Bbuildroot 2012.02 work fine on an Ubuntu 12.04 LTS x64 (Core i7 CPU) host for the BB-xM (Rev.C) target. I created the beagle_xm_full_defconfig files and it booted fine. Many thanks.


    • Hi Pete,

      I’m not familiar with MT9T111/MT9P011 modules and it seems that 3.2.8 kernel doesn’t have these drivers. So you should either use 2.6 or search for drivers in another development branches.


  14. Hi Max,

    Do you still have a branch on your git repository to your 2011 buildroot (k.2.6) configuration or has that been superseded by the 2012 one?

    I’ve been trying to find out what the status of camera support is on the OMAP3 platform. It seems that Laurent Pinchart is one of the leading developers for V4L2 and that Android has better support for cameras? Unless you’ve been working in the Linux community for a good while it is quite difficult for a beginner to hit the right landing point to find out what is/not possible.



    • Hi Pete,

      1. Try “2011.05-mg00.1″ tag for old Buildroot;
      2. I have no idea about another cameras support, you should probably ask on some forums/mail lists (and basically if Android has better support then you should definitely use Android). I tested my Buildroot with mt9p031 as I’m using this module only in my project.


  15. Hi Max,

    The instructions worked great for me. Thanks! I’m a bit lost in the buildroot menu system. Can somebody provide a link to enabling X, with a desktop, through the HDMI port of the beagleboard?


  16. Hello Max,

    I made my Leopard Imaging 5PM camera module work on the BeagleBoard xM with the pre-built images. Great! That validates my setup. Thanks a lot :-).

    Following that, I tried to compile the kernel, u-boot image and MLO. I tried first with the Angstrom toolchain, but the process stopped after building the kernel image… and after three hours of intensive computation. I tried a second time with CodeSourcery toolchain and it worked. My Linux distro is Ubuntu 10.04.

    Once I had a working Beagle+camera combo, I tried the Magic Formula and tadam!, images showed up. It works but I noticed the following issues:
    a) the image has a yellow dominance,
    b) frame rate is low (6 fps at 1024×768) – I aim for at least 15 fps.

    Now, where is the performance bottleneck: is it the camera driver or the video display driver? Both? As a test, I tried removing mplayer from the formula by redirecting yavta output to /dev/null instead of piping it in mplayer. The test script reported a improvement: 13 fps instead of 6. From there, It’s a bit premature to draw a conclusion but it seems that the whole V4L2 architecture trades off performances for hardware abstraction and versatility. What if a high-performance application will need to call lower-level device drivers at the cost of device independance?

    I’d like to mention another thing: I looked into syslogs after running tests on the camera and noticed that the kernel trace contains I2C debug messages and some camera & OMAP ISP register dumps as well. I will try to optimize the kernel a bit by turning debug options off & recompiling the kernel.

    This is a part-time project for me too so good luck all, stay tuned!



  17. Its interesting that you have a 3.2.x kernel running at 1 GHz on the Beagleboard xM. Did you port the patches to the 3.2.x kernel or did you find them somewhere? Even Ubuntu and Angstrom (which ships with the board) have not yet merged them into their 3.2.x kernels.

  18. Hey Max,

    another questions what’s the gstreamer pipeline you are using?
    I’m using this one
    gst-launch v4l2src device=/dev/video0 ! videoscale! video/x-raw-yuv,width=640,height=480 ! ffmpegcolorspace ! jpegenc ! tcpserversink host= port=5000
    and I get this error
    WARNING: erroneous pipeline: no element “jpegenc”

    Thanks Andre,

  19. Hey Max,

    I managed to compile everything using beagle_xm_defconfig

    It boots fine but if I try to log in (as root) nothing happens. The board just replies the string i wrote, but nothing else.

    I saw that someone on the old version ( had a similar problem with the login. They changed the first line in /etc/passwd to root:x:0:0:root:/root:/bin/sh instead of root:x:0:0:root:/root:/bin/bash
    but that doesn’t seem to work for me. Do you have any ideas what i could try?

  20. Hi Max,

    since you are using the CodeSourcery toolchain and not (for example) Ubuntu’s arm-linux-gnueabihf toolchain? As far as I understand, using CodeSourcery limits you to soft float and that seems like wasting CPU power – or am I getting something wrong?

    Thanks in advance,
    The brisk beagle

  21. HI all,

    I’m trying port to kernel v. 3.2.30. When the board boot, I get this message:

    kobject (c0972df8): tried to init an initialized object, something is seriously wrong.
    [ 4.287231] [] (unwind_backtrace+0x0/0xe0) from [] (kobject_init+0x34/0x90)
    [ 4.296325] [] (kobject_init+0x34/0x90) from [] (device_initialize+0x20/0x68)
    [ 4.305603] [] (device_initialize+0x20/0x68) from [] (platform_device_register+0x10/0x24)
    [ 4.315948] [] (platform_device_register+0x10/0x24) from [] (beagle_camera_init+0x9c/0xc8)
    [ 4.326385] [] (beagle_camera_init+0x9c/0xc8) from [] (do_one_initcall+0x90/0x160)
    [ 4.336090] [] (do_one_initcall+0x90/0x160) from [] (kernel_init+0xfc/0x1a4)
    [ 4.345245] [] (kernel_init+0xfc/0x1a4) from [] (kernel_thread_exit+0x0/0x8)
    [ 4.354431] ————[ cut here ]————
    [ 4.359222] WARNING: at kernel/resource.c:597 __insert_resource+0x44/0x124()
    [ 4.366546] Modules linked in:
    [ 4.369781] [] (unwind_backtrace+0x0/0xe0) from [] (warn_slowpath_common+0x4c/0x64)
    [ 4.379577] [] (warn_slowpath_common+0x4c/0x64) from [] (warn_slowpath_null+0x18/0x1c)
    [ 4.389617] [] (warn_slowpath_null+0x18/0x1c) from [] (__insert_resource+0x44/0x124)
    [ 4.399475] [] (__insert_resource+0x44/0x124) from [] (insert_resource_conflict+0x24/0x40)
    [ 4.409912] [] (insert_resource_conflict+0x24/0x40) from [] (insert_resource+0x8/0x14)
    [ 4.419982] [] (insert_resource+0x8/0x14) from [] (platform_device_add+0xb8/0x164)
    [ 4.429687] [] (platform_device_add+0xb8/0x164) from [] (beagle_camera_init+0x9c/0xc8)
    [ 4.439788] [] (beagle_camera_init+0x9c/0xc8) from [] (do_one_initcall+0x90/0x160)
    [ 4.449493] [] (do_one_initcall+0x90/0x160) from [] (kernel_init+0xfc/0x1a4)
    [ 4.458648] [] (kernel_init+0xfc/0x1a4) from [] (kernel_thread_exit+0x0/0x8)
    [ 4.467803] —[ end trace 43c38d3655acccdc ]—
    [ 4.472656] omap3isp: failed to claim resource 0

    Anybody know what is happening?


Leave a Reply