BeagleBoardUbuntu

This page is about running a (ARM EABI) Ubuntu distribution at BeagleBoard. BeagleBoard will boot the (ARM EABI) Ubuntu distribution from SD card.

Note: for the best experience, make sure you have an LCD attached to the HDMI port, 2GB/4GB/8GB SD card, and a known good usb2.0 hub with mouse and keyboard.

= Known issues =

Before you start, the following issues are known:


 * 2.6.29-oer* USB still flaky on the RevC ehci port.. --RobertCNelson 18:17, 6 May 2009 (UTC)

= Help =

If you need any help:


 * Kernel related help:
 * #beagle: Beagle irc on freenode, accessible also by web interface (logs)
 * Email beagleboard user groups
 * Beagle Ubuntu Kernel
 * trac/svn interface for the kernel builds


 * Ubuntu related help:
 * #ubuntu-arm: Ubuntu's arm irc on freenode (logs -> year -> month -> day -> #ubuntu-arm.html)

= Recommended Beagle Software =


 * Use recent xloader: If you start from SD card, download MLO_revc_v3 and rename it to MLO before putting in on SD card.


 * U-Boot 2009.03+r22 Upgrade

Warning note: RevB board + RevC Validation U-boot + 2.6.29-oer30 = NO USB (USB worked fine with 2.6.28)

= Ubuntu Rootfs Install = This section describes how you create a Ubuntu root file system for your BeagleBoard.

Note:
 * Jaunty, aka Ubuntu 9.04, is the recent stable version
 * Karmic, aka Ubuntu 9.10, is the upcoming Ubuntu version, not released yet (in August 2009). Therefore it is listed here as 'testing'.

Development PC: Build Root File System
rootstock is Ubuntu's new name for Oliver's depreciated build-arm-rootfs script.

Note: Use latest debootstrap, if the one posted here is no longer available.

Requirements: sudo apt-get install qemu

wget http://ports.ubuntu.com/pool/main/d/debootstrap/debootstrap_1.0.13~jaunty1_all.deb sudo dpkg -i debootstrap_1.0.13~jaunty1_all.deb

Karmic (9.10) sudo apt-get install rootstock

Jaunty (9.04), Debian wget http://code.launchpad.net/project-rootstock/trunk/0.1/+download/rootstock-0.1.1.tar.gz tar xf rootstock-0.1.1.tar.gz cd rootstock-0.1.1

Note: For USB WIFI adapters, add package "linux-firmware, wireless-tools" to the --seed WiFi Hints: http://elinux.org/BeagleBoardUbuntuNetwork

General Jaunty Image sudo ./rootstock --fqdn --login --password --imagesize --seed --dist  --serial  --kernel-image

Basic Jaunty (9.04) Beagleboard xfce4 image: sudo ./rootstock --fqdn beagleboard --login ubuntu --password temppwd --imagesize 2G --seed xfce4,gdm --dist jaunty --serial ttyS2 --kernel-image http://rcn-ee.net/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer40.5/linux-image-2.6.29-oer40.5_1.0jaunty_armel.deb

Upon Completion, you should have: armel-rootfs- .tgz vmlinuz-2.6.

Karmic Testing:

Major Changes:

gcc-4.4: https://launchpad.net/ubuntu/karmic/+source/gcc-4.4 armv6 optimization by default with: gcc-4.4.1-3ubuntu2 omapfb driver: https://launchpad.net/ubuntu/karmic/+source/xf86-video-omapfb

Basic Karmic (9.10) Beagleboard xfce4 image: sudo ./rootstock --fqdn beagleboard --login ubuntu --password temppwd --imagesize 2G --seed xfce4,gdm --dist karmic --serial ttyS2 --kernel-image http://rcn-ee.net/deb/kernel/beagle/karmic/v2.6.29-58cf2f1-oer40.5/linux-image-2.6.29-oer40.5_1.0karmic_armel.deb

Development PC: Format SD Card
You will need a 1GB SD card or greater. Standard Console System : ~286MB + Desktop environment (lxde,gdm) : ~479MB

Starting with an empty SD card and using gparted, create: 50 MiB Primary Partition, fat32 Rest as ext2/ext3

Gparted Example: http://nishanthmenon.blogspot.com/2008/08/how-to-boot-beagle.html

Development PC: Setup SD uboot/uImage Partition
Requirements:

sudo apt-get install uboot-mkimage

Create U-boot compatible uImage:

mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d ./vmlinuz-* ./uImage

Mount your SD card fat32 partition. (/media/disk/) and copy the uImage to the first partition.

cd /media/disk sudo cp .//uImage uImage

Development PC: Setup SD ext2/ext3 Partition
Mount your SD ext2/ext3 partition. (/media/disk/)

sudo tar xfp armel-rootfs-[date].tgz -C /media/disk

Enable Network Access
Modify /etc/network/interfaces auto eth0 iface eth0 inet dhcp

Manual: From the Command line sudo ifconfig eth0 up sudo dhclient eth0

Beagleboard: Setup U-boot for boot
Using a terminal program, stop u-boot and add these commands:

For Linux Kernel 2.6.29 and higher using DSS2 setenv bootcmd 'mmcinit; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000' or setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000' (r27) setenv bootargs 'console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro omapfb.mode=dvi:1280x720MR-16@60' saveenv boot

You shall adapt the resolution to you screen as following : omapfb.mode=dvi:1280x720MR-16@60 Modes: "1024x768MR-16@60""800x600MR-16@60" ...

Here is more explanation on dss video options :

= Advanced =

Script File
Note: this will be updated from time to time. (tested off course, may need "sudo apt-get install wget")

wget http://www.rcn-ee.net/deb/kernel/ubuntu-update-kernel.sh sudo /bin/bash ubuntu-update-kernel.sh

Note: vmlinuz symbolic link (yes  no)... Still not sure this matters, i select ...

Manual Method
You can open/edit the ubuntu-update-kernel.sh to see latest version.

sudo apt-get install uboot-mkimage wget http://www.rcn-ee.net/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer40.5/linux-image-2.6.29-oer40.5_1.0jaunty_armel.deb (or any listed here: http://www.rcn-ee.net/deb/kernel/beagle/jaunty/ ) sudo dpkg -i linux-image*

Extract linux-image's vmlinuz-* (we need this to create the uImage, uboot uses to boot) dpkg -x linux-image* ./temp

Mount fat32 partition sudo mount /dev/mmcblk0p1 /mnt

Build uboot compatible image and copy to fat32 boot partition sudo mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d ./temp/boot/vmlinuz-* /mnt/uImage

unmount fat32 partition sudo umount /mnt

Clean up rm -rfd temp

Reboot with your new uImage

Upgrade U-Boot
Using gparted, create a new 50MB Primary fat32 Partition on a blank SD card, or use your existing fat32 partition.

cd /media/disk sudo wget http://www.rcn-ee.net/deb/tools/u-boot-beagleboard-2009.05+r27+gitrd363f9cb0918a1b6b92e2e20d01543d0c4f53274-r27.bin sudo mv u-boot-beagleboard-2009.05+r27+gitrd363f9cb0918a1b6b92e2e20d01543d0c4f53274-r27.bin u-boot-f.bin

Tested --RobertCNelson --RobertCNelson 21:41, 10 August 2009 (UTC) RevB5 + 2.6.29-oer40.5 & RevC2 + 2.6.29-oer40.5

Insert SD Card, boot Beagleboard and stop U-Boot from booting mmcinit (or "mmc init") fatload mmc 0 0x80200000 u-boot-f.bin nand unlock nandecc sw nand erase 80000 160000 nand write.i 0x80200000 80000 160000 reset

Kernel Modules
Jaunty: wget -c http://www.rcn-ee.net/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer40.5/omaplfb.ko wget -c http://www.rcn-ee.net/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer40.5/pvrsrvkm.ko sudo mkdir -p /lib/modules/`uname -r`/kernel/drivers/gpu/pvr/ sudo mv *.ko /lib/modules/`uname -r`/kernel/drivers/gpu/pvr/ sudo depmod -a omaplfb

Karmic: wget -c http://www.rcn-ee.net/deb/kernel/beagle/karmic/v2.6.29-58cf2f1-oer40.5/omaplfb.ko wget -c http://www.rcn-ee.net/deb/kernel/beagle/karmic/v2.6.29-58cf2f1-oer40.5/pvrsrvkm.ko sudo mkdir -p /lib/modules/`uname -r`/kernel/drivers/gpu/pvr/ sudo mv *.ko /lib/modules/`uname -r`/kernel/drivers/gpu/pvr/ sudo depmod -a omaplfb

SDK
Make sure to use a "corporate email" : http://software-dl.ti.com/dsps/forms/export.html?prod_no=/OMAP35x_Graphics_SDK_setuplinux_3_00_00_09.bin

Note: the SDK will not extract directly on any arm platform, extract it first on an x86 machine and tar the resulting folder before transferring to the beagleboard.

System Libraries: sudo ln -sf /usr/lib/libXdmcp.so.6.0.0 /usr/lib/libXdmcp.so.0 sudo ln -sf /usr/lib/libXau.so.6.0.0 /usr/lib/libXau.so.0

SDK lib's sudo cp SDK_EXTRACTED_DIR/gfx_rel/*.so /usr/lib/

SDK pvrsrvinit sudo cp SDK_EXTRACTED_DIR/gfx_rel/pvrsrvinit /usr/local/bin/

devmem2
wget -c http://free-electrons.com/pub/mirror/devmem2.c gcc -o devmem2 devmem2.c sudo cp devmem2 /usr/local/bin

Startup Script
/etc/rcS.d/S60pvr.sh

modprobe omaplfb pvr_maj=`grep "pvrsrvkm$" /proc/devices | cut -b1,2,3` if [ -e /dev/pvrsrvkm ] ; then rm -f /dev/pvrsrvkm fi mknod /dev/pvrsrvkm c $pvr_maj 0 chmod 666 /dev/pvrsrvkm /usr/local/bin/pvrsrvinit /usr/local/bin/devmem2 0x48004b40 w 0
 * 1) !/bin/sh
 * 1) This is from the SDK...
 * 1) Set SGX to full speed

DSP
work in progress

Drivers
Note: Backport from Karmic

Note: These are built with neon optimizations: http://git.debian.org/?p=collab-maint/xf86-video-omapfb.git;a=blob;f=debian/rules;h=c2f0d5391c96c5abb60b1e691ad86bb27e0c17d8;hb=HEAD (line 48/49)

Jaunty: wget -c http://rcn-ee.homeip.net:81/dl/deb-sbuild/jaunty/xorg-drivers/xserver-xorg-video-omap3_0.1.1-2_armel.deb sudo dpkg -i xserver-xorg-video-omap3_0.1.1-2_armel.deb

Karmic: sudo apt-get install xserver-xorg-video-omap3

xorg.conf
/etc/X11/xorg.conf

Section "Monitor" Identifier "Configured Monitor" EndSection Section "Screen" Identifier "Default Screen" Device "Configured Video Device" #Limited by SGX? DefaultDepth 16 EndSection Section "Device" Identifier "Configured Video Device" Driver "omapfb" Option "fb" "/dev/fb0" EndSection

Note: Use xvinfo to check if it works: X-Video Extension version 2.2 screen #0 Adaptor #0: "OMAP XV adaptor" number of ports: 1 port base: 56 operations supported: PutImage supported visuals: depth 16, visualID 0x21 number of attributes: 1 etc...

S-Video
Sorry I don't have an S-Video TV, and this is documented in the source, so it would be really great if someone could fill this section in... --RobertCNelson 21:32, 13 July 2009 (UTC)

NTSC
Please use v2.6.29-oer40.5:

PAL
Please use v2.6.29-oer40.5: