TI BeagleBoard

supported in trunk since 45238

:!: Setups might require some customization with booting.

Version/Model Launch Date S/N OpenWrt Version Supported Model Specific Notes
C4 2009 - trunk (r45238) EBV BeagleBoard (clone)

OEM source code available at: FIXME

SoC Ram Flash Network USB Serial JTag
TI AM3550@720MHz 256MiB 256MiB NAND 0 Yes Yes Yes

BeagleBoard-xM, BeagleBone, BeagleBone black have similar hw.

Manufacturer's site: http://beagleboard.org/Products/

Pressing “USR” button when power is connected OR during the pressing and release of “RESET” button enables booting from SD card.

Available booting from: - onboard NAND - SD card - USB storage

Valid uboot, kernel and rootfs should be flashed onto NAND.

Please check out the article flash.layout. It contains an example and a couple of explanations.


A FAT32 boot partition with the MLO, u-boot.img, devicetree file (*.dtb) and the kernel (zImage).

A ext2 / ext3 / ext4 rootfs partition where you unpack openwrt-...-rootfs.tar.gz to. The partition type depends on Kernel commandline in uboot env vars.

FIXME The first partition /dev/mmcblk0p1 is the boot partition which contains the boot loaders (MLO, u-boot.img) and kernel.

ls /mnt/p1/
MLO  omap3-beagle.dtb  u-boot.img  uEnv.txt  zImage

MLO is the first stage bootloader. OEM/Factory/TI has X-loader by default. There are some X-loader bugs.

:!: OpenWrt uses u-boot for first and second stage.

:!: user.txt oder uEnv.txt (2014, newer) or boot.pcr (older) depending on uboot version can change boot “stuff”.


loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${kernel_file}
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${fdtfile}

optargs="debug init=/etc/preinit"

mmcroot=/dev/mmcblk0p2 rw
mmcrootfstype=ext2 rootwait
rootfstype=${mmcrootfstype} ${optargs}

mmcargs=setenv bootargs console=${console} root=${mmcroot} ${mmcrootfstype} verbose debug

uenvcmd=run loadzimage; run loadfdt; run mmcargs; bootz ${loadaddr} - ${fdtaddr}

1. Prepare SD card 2.0 Insert SD card anytime, power up board 2. press USR button (skips integrated bootloader on NAND); keep it pressed until 5. 3. press RESET 4. booting can take a while

Errors are signaled via screen color OR visible in serial console.

orange screen : uboot errors 

- Overwrite the Kernel image and the content of the rootfs (SD card partition 2 )

hardware.button on howto use and configure the hardware button(s).

The Beagleboard has two buttons. FIXME

Reset reset
USR select boot mode, user specific later
Instruction set: ARM
Vendor: BeagleBoard
bootloader: U-Boot
System-On-Chip: AM....
CPU @Frq AM335x@720MHz
Flash size: 256 MiB
Flash Chip: not visible (PoP/Sandwich)
RAM size: 256 MiB
RAM Chip: not visible (PoP ... package on package)
Wireless No1: none
switch: none
Modem: none
USB: Yes 1 x 2.0 , 1 x OTG
Serial: Yes

Note: Since the BeagleBoard ships without a case, this can't void your warranty. :)

ICD10 to DB9 adapters and some Null modem cable work. Pin 1 is “red” part of adapter cable

:!: There are differences between ICD10(pin header) → DB9(classic serial port) and Null modem cabling.

:!: From 3 identical looking null modem cables only 1 works (different cable types?)

ICD10 → DB9 → Null modem cable → PL2303 serial to USB adapter from VIANCO white case with blue stripe; lsusb: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

port.jtag general information about the JTAG port, JTAG cable, etc.

How to connect to the JTAG Port of this specific device:

Photo of PCB with markings

There is a JTAG

  1. you could read about bootloader in general

There are several scripts available in uboot. These are inside uboot variables and can be executed with the run command.

bootcmd var in uboot-omap 2013

run findfdt;
mmc dev ${mmcdev};
if mmc rescan; then
  if run userbutton; then
    setenv bootenv uEnv.txt;
    setenv bootenv user.txt;
  echo SD/MMC found on device ${mmcdev};
  if run loadbootenv; then 
    echo Loaded environment from ${bootenv};
    run importbootenv;
  if test -n $uenvcmd;then
    echo Running uenvcmd ...;
    run uenvcmd;
  if run loadimage; then
      run mmcboot;
run nandboot;
setenv bootfile zImage;
if run loadimage; then
  run loadfdt;
  run mmcbootz; 

compare to upstream: omap3_beagle uboot git head

unordered (!) examples

run bootcmd
run findfdt
run validatefdt
run loadbootenv
run loadramdisk
run loadbootscript //in newer u-boot
run bootscript
run mmcboot
run mmcbootz
run nandboot
run ramboot

usb - USB sub-system usbboot - boot from USB device

  1. as a beginner, you really should inform yourself about soldering in general and then obtain some practical experience!

serial log uEnv.txt case:

Hit any key to stop autoboot:  3 2 1 0 
mmc0 is current device
gpio: pin 173 (gpio 173) value is 1
gpio: pin 7 (gpio 7) value is 0
SD/MMC found on device 0
reading uEnv.txt
442 bytes read in 5 ms (85.9 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
Running uenvcmd ...
reading zImage
1860848 bytes read in 144 ms (12.3 MiB/s)
reading omap3-beagle.dtb
15169 bytes read in 9 ms (1.6 MiB/s)
Kernel image @ 0x80200000 [ 0x000000 - 0x1c64f0 ]
## Flattened Device Tree blob at 80f80000
   Booting using the fdt blob at 0x80f80000
   Using Device Tree in place at 80f80000, end 80f86b40

Starting kernel ...

serial log user.txt case:

mmc0 is current device
gpio: pin 173 (gpio 173) value is 1
gpio: pin 7 (gpio 7) value is 1
SD/MMC found on device 0
reading user.txt
** Unable to read file user.txt **
** File not found /boot/uImage **
Booting from nand ...

A lot of usefull information about this board can be found here:


This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2021/04/19 19:57
  • by tmomas