Yesterday we at hackEns received our BeagleBoard-xM, ordered from DigiKey during FOSDEM. Let’s first note for French people interested in getting such boards from DigiKey that we had to pay 39.15€ of VAT and similar fees to the UPS guy upon delivery. Now let’s move onto some context and tips about getting it to run.
The BeagleBoard-xM is a 8.25×8.25 cm board, powered by an ARM Cortex A8 CPU and relying on 512MB of RAM. It features, among other things, a microSD slot, a serial port, an ethernet port, an HDMI output, a S-Video port, 4 USB-A ports, 1 miniUSB OTG port and stereo input/output. There is basically all you need to build a simple desktop computer. Just plug in an USB keyboard, an USB mouse, an RJ-45 wire and your HDMI wire and boot it. Well, almost.
Before being able to run anything useful, you have to first power the board and then build a microSD card with an useful distribution on it.
First tip : connect your BeagleBoard-xM to your computer through the serial port. Buy an usb-to-serial adapter if needed, buy the serial wire if needed, but do not try to get things working blindly. You definitely won’t be able to debug any bootloader problem without a working serial link, and you’ll most likely waste much more time than you’d need to go to your local hardware shop and buy the required bits.
Now, let’s insert the provided microSD card into the slot, and move on.
TL;DR here : don’t try to power your BeagleBoard using USB OTG, use a regulated 5V DC power supply instead
Powering the board might seem easy, given that there is an USB OTG slot through which you can definitely feed power to the board to get it running (LEDs blinking), but there are two caveats. The first issue is that a single USB host port cannot supply enough power to the board to get it running smoothly. The most obvious symptom of this problem is that the board simply won’t boot (the bootloader will load the ramdisk and uncompress the kernel and hang there, or it might even start the bootsequence but will fail at some point with no obvious reason, or it might even reach the second issue, but even without the second issue it won’t be able to finish the bootsequence). As advised on some forums, you can use a Y-shaped USB wire like those you can get for 2.5″ USB external hard drives. This will enable you to give enough power to feed the BeagleBoard.
Yet, you will still encounter the second problem, which is that the kernel will panic at some point during the bootsequence, exhibiting a problem somewhere inside a musb_interrupt call. This seems to be because of a bug in the OTG module of the kernel used on the test system, which makes it impossible to boot with something plugged into the USB OTG port, so you’ll have to power your BeagleBoard using an external 5V power supply. We used a 2 amp regulated DC power supply for that purpose. Since it could only deliver 4.5V and 6V outputs, we had to use a 5V/1amp voltage regulator.
We were then able to boot on the test system, got a nice prompted, logged on, assessed the fact that we had a basic system, ran the mandatory testled tool, and halted to move on to the second part : setting up a complete system.
This is where the fun really begins, because most howtos are about the original BeagleBoard (non -xM), especially on the eLinux wiki, and that can be quite confusing. We’ll use Ångström distribution, which is a simple GNU/Linux distro targetted at embedded hardware, such as the BeagleBoard. This choice was made based on the fact that the Debian ARM packages are compiled for a more generic kind of ARM CPUs, on the fact that the current Ubuntu poorly performs on BeagleBoard-xM (it does not fully support the board’s CPU and downclocks it badly), and that the other competitors (Android, Maemo/Mer, Meego) did not look that great.
Basically, all you have to do to setup the microSD card is to follow the excellent instructions from Trey Weaver, with a few extra tips.
First, to be on the safe side, you can get all the files you need from the Ångström BeagleBoard demo fileserver : mkcard.txt, MLO, u-boot.bin, uImage, modules.tgz and the Angstrom-Beagleboard….tar.bz2 rootfs. You do not need to go through Narcissus.
Next, make SURE that the first file you copy to the boot filesystem is MLO, otherwise it won’t be able to boot (the bootloader has to be the very first bytes of the filesystem).
Next, when looking at other howtos, ignore all the bits about pressing the USER button, or about halting the autoboot to set the bootloader options : you do not need either. Indeed, the BeagleBoard-xM has no NAND flash to store the bootloader options, so doing the saveenv command of the bootloader will just make it hang. Instead, if you want to specify your own bootloader options, you have to produce a boot.scr file. To do so, install the mkimage tool (it’s packaged in debian and ubuntu as uboot-mkimage, it originally comes from OpenWRT bootloader u-boot which we use here). Then create a file (let’s call it boot_cmd for instance) containing the boot commands you want ; a basic command file is the following :
setenv bootargs 'console=ttyS2,115200n8 root=/dev/mmcblk0p2 rootfstype=ext3 rootwait' Build the boot.scr file from it :
mmc init
fatload mmc 0 0x80300000 uImage
bootm 0x80300000
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Beagleboard-xM boot script" -d boot_cmd boot.scr
Now all you have to do is to copy boot.scr to the boot partition (i.e. alongside the MLO, u-boot.bin & uImage files) and reset your BeagleBoard.
This can be useful to specify the video mode to use, for instance I use the following bootargs to get correct rendering on my LCD :
setenv bootargs 'console=ttyS2,115200n8 omapfb.mode=dvi:1360x768MR-16@60 root=/dev/mmcblk0p2 rootfstype=ext3 rootwait'
You should now be able to put your microSD into your BeagleBoard and get it running fully (I have a few initial hiccups with the microSD not being recognized or so at this point, I just moved it back and forth to my laptop and it worked beautifully since then). You should get a working GNOME environment (after a nice gdm prompt).
Let’s note that Ångström uses opkg package manager, which works in a pretty straightforward way, with install/remove/update/upgrade commands. Note that you have to use the list command to search packages, i.e. you need to do opkg list opencv to look for opencv-related packages, and not opkg search opencv as you would do with apt.
I was very pleased to see that opencv was installed by default (I guess, or at least I did not have to install it after performing an initial opkg upgrade), that my Logitech webcam was recognized from scratch and that I could use mplayer tv:// without any more tinkering to use it.
The current image does not come with a build chain, so you have to install the required bits to build your own apps. I believe all you need is to install the task-native-sdk package to get everything (gcc, g++, make, binutils…) setup. I guess I only had to install git, vim,pkgconfig and cmake by hand to feel home once that was done.
I am now investigating some issues related to building stuff using OpenCV, similar to those described here on Stack Overflow. I’ll keep you updated.




February 17th, 2011 at 4:04 pm
Please repost your results of opencv, I’m interested in what you found… There is also a customized version using the dsp, it was a goggle sponsored project.
February 18th, 2011 at 8:13 am
Nice article…. Thanks for posting.
February 24th, 2011 at 2:49 pm
Bonjour,
Je suis sur le point d’acheter une Beagleboard xM, donc merci pour ces infos !
J’espère qu’il y aura une suite à cet article.
Cordialement,
Niels
July 25th, 2011 at 4:56 pm
Thanks for the post, it helped me boot my beagleboard xm
September 24th, 2011 at 4:57 pm
Hello can somebody say which web cam can be used in the Angstrom plat form.. Please specify the model name .
November 9th, 2011 at 9:04 am
nice tutorial. can u help on how to install gcc on angstrom linux.
December 13th, 2011 at 9:52 pm
Thanks for putting this out there. Your reminder that USB 5VDC is insufficient got me past my random boot failures. Keep up the good work/fun!
December 18th, 2011 at 10:52 pm
Thank you for the great post! I have been searching for a while, but this is the only post that mentioned the bugs with the USB power supply. I wish I have found it earlier; I have almost declared my board dead.
July 23rd, 2012 at 10:49 am
Hi
I am so glad to see this article. I am using BB-XM for a new project in which i am going to use BB as a server which update the Anroid application. i am confused which OS should i use? Angstrom or Anroid?
July 25th, 2012 at 9:26 am
i am having problem in partitioning the sd card in ubuntu.
August 30th, 2012 at 6:42 am
hello frnds.
please give me guidance, how to connect beagle board to internet using usb stick or Ethernet cable…??
thanks in advance…
November 14th, 2012 at 10:08 am
Nice article…
I have an issue when I try to boot my BB-xM using the latest kernel image..I just replaced the boot/UIMAGE with latest kernel (version 3.6.0. rc2) image (ie zImage) and also updated the boot/uImage and boot/vmlinux images under filesystem folder…
With this Iam getting the “Wrong File format… and boot failed”…any clue will help to proceed…
–Swami
April 7th, 2013 at 2:07 pm
I have usb to serial adapter.
I connected serial cable to my beagle board and the other end to USB port on my PC
I know thw COM port used by USB
But how do I see what is happening on the seria port. Somewhere I read that I need to use PuTTY to use my PC monitor as monitor for the beagle board
Is that correct
-Anirudha