BeagleBoardDebian

This page is about running a (ARM EABI) Debian distribution at BeagleBoard. BeagleBoard will boot the (ARM EABI) Debian distribution from SD card. Debian's NetInstall will be used to install Debian onto your Beagle.

= Help =

If you need any help:


 * Kernel related help:
 * Email Beagleboard user group *Recommended method
 * #beagle: Beagle irc on freenode, accessible also by web interface (logs)
 * Kernel Tree's
 * Stable (3.7.x) branch
 * Development Kernel source code


 * When asking for help, please provide some debugging information:
 * U-Boot Version installed on board
 * Kernel Version: uname -a
 * pastebin dmesg
 * Copy from serial port or use "dmesg | pastebinit" (sudo apt-get install pastebinit)

= Recommended Beagle Software =

Mainline U-Boot:
 * All old Ax, Bx, Cx and Dx boards are required to upgrade to at least these U-Boot versions.
 * XM Boards have no NAND, so MLO/u-boot.img is always required on the first partition
 * Directions: Upgrade X-loader and U-Boot

= Debian NetInstall =

Scripts: git clone git://github.com/RobertCNelson/netinstall.git cd netinstall

Device Options: BeagleBoard --uboot beagle_cx BeagleBoard xM --uboot beagle_xm BeagleBone (serial) --uboot bone-serial BeagleBone (video via cape) --uboot bone-video BeagleBone Black --dtb am335x-boneblack PandaBoard --uboot panda PandaBoard ES --uboot panda_es

You will need a 1GB SD card or greater. Standard System : ~455MB + Desktop environment (GNOME) : ~2.9GB

Debian Wheezy
Quick Install script for "board" sudo ./mk_mmc.sh --mmc /dev/sdX --uboot "board" --distro wheezy-armhf

So For the BeagleBoard xM: sudo ./mk_mmc.sh --mmc /dev/sdX --uboot beagle_xm --distro wheezy-armhf


 * Options:
 * --firmware : installs firmware
 * --serial-mode : debian-installer uses Serial Port

= Demo Image =

Debian Wheezy snapshot
Default username/password:
 * username: debian
 * password: temppwd

Default root user/password
 * user: root
 * password: root

Image Updated:
 * 2013-05-18
 * Beagle/Panda/Panda ES: v3.7.10-x10 kernel
 * BeagleBone: v3.2.42-psp27 kernel
 * BeagleBone/BeagleBone Black: v3.8.13-bone18 kernel (--uboot bone_dtb)
 * 2013-04-26
 * Beagle/Panda/Panda ES: v3.7.10-x10 kernel
 * BeagleBone: v3.2.42-psp27 kernel
 * BeagleBone/BeagleBone Black: v3.8.8-bone14 kernel (--uboot bone_dtb)
 * 2013-03-28:
 * Beagle/Panda/Panda ES: v3.7.10-x10 kernel
 * Bone: v3.2.33-psp26 kernel (--uboot bone_dtb = v3.8.4-bone9)

Services Active: Note: Depending on your internal network these may work out the box Apache, Port 80: http://arm/ (Bone: via usb) http://192.168.7.2 SSH, Port 22: ssh ubuntu@arm (Bone: via usb) ubuntu@192.168.7.2 shellinabox, Port 4200: https://arm:4200/ (Bone: via usb) https://192.168.7.2:4200 Getty, Serial Port

Get prebuilt image:

wget http://rcn-ee.net/deb/rootfs/wheezy/debian-7.0.0-console-armhf-2013-05-18.tar.xz

Verify Image with: md5sum debian-7.0.0-console-armhf-2013-05-18.tar.xz dfe308e3e534d8adef75db5308174cf6 debian-7.0.0-console-armhf-2013-05-18.tar.xz

Unpack Image: tar xJf debian-7.0.0-console-armhf-2013-05-18.tar.xz cd debian-7.0.0-console-armhf-2013-05-18

Install Image:

Quick Install script for "board" sudo ./setup_sdcard.sh --mmc /dev/sdX --uboot "board"

"board" options:
 * BeagleBoard Ax/Bx   - beagle_bx
 * BeagleBoard Cx/Dx   - beagle_cx
 * BeagleBoard xM      - beagle_xm
 * BeagleBone Ax       - bone
 * BeagleBone/Black    - bone_dtb
 * PandaBoard Ax       - panda
 * PandaBoard ES       - panda_es

So For the BeagleBoard xM: sudo ./setup_sdcard.sh --mmc /dev/sdX --uboot beagle_xm


 * Additional Options
 * --rootfs
 * --swap_file 
 * --addon pico
 * --svideo-ntsc <use ntsc over dvi for video)
 * --svideo-pal <use pal over dvi for video)

= Debian Configuration =

Serial Ports
Wheezy

edit /etc/inittab and add: T0:23:respawn:/sbin/getty -L ttyO2 115200 vt102

SGX armel/armhf v3.4.x+

 * Note: This is a still a work in progress, but so far all the basic sgx demos seem to work on my Beagle xM C... Thanks to TI for the special armhf binaries!!! --RobertCNelson 19:48, 17 July 2012 (UTC)


 * Test with: Precise/12.04 armhf demo image with v3.4.5-x1, desktop was lxde via: "sudo apt-get install lxde lxde-core lxde-icon-theme"

Re-Build Kernel and SGX Kernel Modules
git clone git://github.com/RobertCNelson/stable-kernel.git cd stable-kernel git checkout origin/v3.7.x -b tmp ./build_kernel.sh (and then follow the directions as the script runs...)

Build kernel ./build_kernel.sh

Build SGX modules ./sgx_build_modules.sh

Insert SD card, make sure to modify MMC in system.sh ./tools/install_image.sh

Place SD card into the device and boot... cd /opt/sgx sudo tar xf GFX_4.0*_libs.tar.gz sudo ./install-sgx.sh

Reboot, check modules (lsmod): Module                 Size  Used by bufferclass_ti          5727  0 omaplfb               11512  0 pvrsrvkm             165208  2 bufferclass_ti,omaplfb

Blit Test: ubuntu@omap:/usr/bin/armhf/es5.0$ ./sgx_blit_test -- SGX 3D Blit test - --- Start --- Call PVRSRVConnect with a valid argument: OK Get number of devices from PVRSRVEnumerateDevices: OK .... Reported 1 devices .... Device Number | Device Type 0000   | PVRSRV_DEVICE_ID_SGX Attempt to acquire device 0: OK Getting SGX Client info OK .... ui32ProcessID:1133 Display Class API: enumerate devices OK PVRSRVEnumerateDeviceClass returns 1 display device(s) OK Display Class API: open device OK Display Class API: Get display info OK .... Name:PowerVR OMAP Linux Display Driver .... MaxSwapChains:1 .... MaxSwapChainBuffers:1 .... MinSwapInterval:0 .... MaxSwapInterval:1 Display Class API: enumerate display formats OK OK .... Display format 0 - Pixelformat:1 Display Class API: enumerate display dimensions OK OK .... Display dimensions 0 - ByteStride:2560 Width:1280 Height:720 Attempt to create memory context for SGX: OK .... Shared heap 0 - HeapID:0x7000000 DevVAddr:0x1000 Size:0x87fe000 Attr:0x2014200 .... Shared heap 1 - HeapID:0x7000001 DevVAddr:0xc800000 Size:0xfff000 Attr:0x2024200 .... Shared heap 2 - HeapID:0x7000002 DevVAddr:0xe400000 Size:0x7f000 Attr:0x2024200 .... Shared heap 3 - HeapID:0x7000003 DevVAddr:0xf000000 Size:0x3ff000 Attr:0x2024200 .... Shared heap 4 - HeapID:0x7000004 DevVAddr:0xf400000 Size:0x4ff000 Attr:0x2014200 .... Shared heap 5 - HeapID:0x7000005 DevVAddr:0xfc00000 Size:0x1ff000 Attr:0x2014200 .... Shared heap 6 - HeapID:0x7000006 DevVAddr:0xdc00000 Size:0x7ff000 Attr:0x2014200 .... Shared heap 7 - HeapID:0x7000007 DevVAddr:0xe800000 Size:0x7ff000 Attr:0x2014200 .... Shared heap 8 - HeapID:0x7000008 DevVAddr:0xd800000 Size:0x3ff000 Attr:0x2024200 .... Shared heap 9 - HeapID:0x7000009 DevVAddr:0x8800000 Size:0x0 Attr:0x2024200 .... Shared heap 10 - HeapID:0x700000a DevVAddr:0x8800000 Size:0x3fff000 Attr:0x2014200 Display Class API: get the system (primary) buffer OK Display Class API: map display surface to SGX OK Attempt to create transfer context for SGX: OK Do a SRCCOPY blit to the bottom right quadrant of the display: (bottom right quadrant should be red on blue background): OK OK Do a SRCCOPY blit to the top left quadrant of the display: (top left quadrant should be striped (r/g/b/w) on blue background): OK OK Do a CUSTOMSHADER blit to the top right quadrant of the display: (top right quadrant should be yellow): 0xb6acd000 (host) 0xf407000 (device): Device mem for custom shader program 0xb6acb000 (host) 0xf408000 (device): Device mem for texture USE custom shader program: 0x28841001.c0000000	mov.end o0, sa0 OK Do a SRCCOPY blit with COLOUR DOWNSAMPLING from ARGB8888 to RGB565 and then present the RGB565 to the bottom right quadrant of the screen (bottom right quadrant should be a red gradient): OK OK  OK  OK Free the off screen surfaces: OK OK  OK  OK Destroy the transfer context: OK Display Class API: unmap display surface from SGX OK Destroy Device Memory Context Display Class API: close the device OK Release SGX Client Info: OK Disconnect from services: OK -- SGX 3D Blit test - End

SGX Legacy armel only upto v3.2.x
NOTE: this only works on BeagleBoard hardware, BeagleBone stuff is in development..

Requirements: stable-kernel (the Demo Images hosted on rcn-ee.net meet this requirement) https://github.com/RobertCNelson/stable-kernel

Note: Due to a bug (seems to only effect older Beagle Bx/Cx boards, use v3.0.8-x3 based kernels) https://github.com/RobertCNelson/stable-kernel/issues/8 oneiric: wget http://rcn-ee.net/deb/oneiric/v3.0.8-x3/install-me.sh /bin/bash install-me.sh

SDK unPackage Script
Download the latest version of the "create_sgx_package.sh" script 2.6.37 wget https://raw.github.com/RobertCNelson/tools/master/x86/ti_omap/create_sgx_package_2.6.37.sh 2.6.38->3.2.x wget https://raw.github.com/RobertCNelson/tools/master/x86/ti_omap/create_sgx_package_3.2.x.sh

Make script executable chmod a+x ./create_sgx_package_*.sh

Run script ./create_sgx_package_*.sh

After Successfully running:

GFX_Linux_SDK.tar.gz                           : -> Copy to Beagle (DEMO's) Graphics_SDK_setuplinux_X_XX_XX_XX.bin SDK SDK_BIN

Beagle: GFX_*_libs.tar.gz
tar xf GFX_4_00_00_01_libs.tar.gz (extracts install-SGX.sh and run-SGX.sh) ./install-SGX.sh (copies necessary SGX libs and startup script) ./run-SGX.sh (force run the new init script, or you can just reboot...)

On successful install: Stopping PVR Starting PVR Starting SGX fixup for ES2.x (or ES3.x) (or ES5.x xM)

Reboot for good measure sudo reboot

Beagle: GFX_Linux_SDK.tar.gz
tar xf GFX_Linux_SDK.tar.gz cd GFX_Linux_SDK tar xf OGLES.tar.gz

Test SGX with a DEMO
cd OGLES/SDKPackage/Binaries/CommonX11/Demos/EvilSkull ./OGLESEvilSkull

Trouble Shooting
sudo rm /etc/powervr-esrev sudo depmod -a omaplfb sudo /etc/init.d/pvr restart

gst-dsp

 * Note: This section is BeagleBoard(-xM) only since the BeagleBone (Black) doesn't have a DSP.

The following Gstreamer elements will be installed:

$ gst-inspect | grep dsp dvdspu: dvdspu: Sub-picture Overlay dsp: dspdummy: DSP dummy element dsp: dspvdec: DSP video decoder dsp: dspadec: DSP audio decoder dsp: dsph263enc: DSP video encoder dsp: dspmp4venc: DSP MPEG-4 video encoder dsp: dspjpegenc: DSP video encoder dsp: dsph264enc: DSP video encoder dsp: dspvpp: DSP VPP filter dsp: dspipp: DSP IPP

Please note that h264 encoder (dsph264enc) will not work because of missing h264venc_sn.dll64P DSP part. According to this message, it is not available due to a licensing restriction.

Requirements: Kernel built with: "CONFIG_TIDSPBRIDGE=m", for reference, here is what rcn-ee.net's image/deb's are configured for: ubuntu@arm:~$ zcat /proc/config.gz | grep TIDSP CONFIG_TIDSPBRIDGE=m CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000 CONFIG_TIDSPBRIDGE_RECOVERY=y
 * 1) CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set
 * 2) CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set
 * 3) CONFIG_TIDSPBRIDGE_BACKTRACE is not set

On the xM: if 3.2.x is too jerky, try 3.4.x and use the create_dsp_package.sh script, as the module changed..

Download the latest version of the "create_dsp_package.sh" script wget https://raw.github.com/RobertCNelson/tools/master/x86/ti_omap/create_dsp_package.sh

Make script executable chmod a+x ./create_dsp_package.sh

Package script: ./create_dsp_package.sh

Copy DSP_Install_libs.tar.gz to Beagle

Setup network...

Extract: ubuntu@arm:~$ tar xf DSP_Install_libs.tar.gz

Install: ubuntu@arm:~$ ./install-DSP.sh

What got installed: ubuntu@arm:~$ ls -lh /lib/dsp/ total 7.1M -rwxr-xr-x 1 root root 1.3M Dec 3 10:56 baseimage.dof -rwxr-xr-x 1 root root 51K Dec  3 10:56 conversions.dll64P -rwxr-xr-x 1 root root 13K Dec  3 10:56 dctn_dyn.dll64P -rwxr-xr-x 1 root root 2.5M Dec 3 10:56 h264vdec_sn.dll64P -rwxr-xr-x 1 root root 481K Dec 3 10:56 jpegdec_sn.dll64P -rwxr-xr-x 1 root root 229K Dec 3 10:56 jpegenc_sn.dll64P -rwxr-xr-x 1 root root 767K Dec 3 10:56 m4venc_sn.dll64P -rwxr-xr-x 1 root root 890K Dec 3 10:56 mp4vdec_sn.dll64P -rwxr-xr-x 1 root root 707K Dec 3 10:56 mpeg4aacdec_sn.dll64P -rwxr-xr-x 1 root root 15K Dec  3 10:56 qosdyn_3430.dll64P -rwxr-xr-x 1 root root 14K Dec  3 10:56 ringio.dll64P -rwxr-xr-x 1 root root 9.1K Dec 3 10:56 TSPA_Object_Code_Software_License_Agreement.txt -rwxr-xr-x 1 root root 53K Dec  3 10:56 usn.dll64P -rwxr-xr-x 1 root root 245K Dec 3 10:56 vpp_sn.dll64P

Building gst-dsp stuff:

If you installed this image via the demo images or netinstall, the gst-dsp build script is installed:

Update arm tools directory to the latest: ubuntu@arm:~$ cd /boot/uboot/tools/ ubuntu@arm:/boot/uboot/tools$ sudo ./update.sh

Otherwise, install via git: git clone git://github.com/RobertCNelson/tools.git

Change to the pkgs directory ubuntu@arm:~$ cd /boot/uboot/tools/pkgs (or if just cloned) ubuntu@arm:~$ cd ~/tools/pkgs

Build gst-dsp stuff.. ./ti-tidspbridge.sh

Start dspbridge (or just reboot) sudo /etc/init.d/dsp_init start

Test dspbridge sudo dsp-test

Playbin: sudo gst-launch playbin2 uri=file://(file)

Example: (using http://www.bigbuckbunny.org/index.php/download/ 854x480 mp4 ) Note: it seems broken in Ubuntu precise armhf...

sudo gst-launch playbin2 uri=file:///home/USER/big_buck_bunny_480p_surround-fix.avi

Building Kernel
Note, this section use to have a lot of details, but maintenance of the two wiki's became a pain, so for now on we will just link to my other pages:

Beagle/Beagle xM
http://eewiki.net/display/linuxonarm/BeagleBoard

BeagleBone
http://eewiki.net/display/linuxonarm/BeagleBone

BeagleBone Black
http://eewiki.net/display/linuxonarm/BeagleBone+Black

Panda/Panda ES
http://eewiki.net/display/linuxonarm/PandaBoard

= Upgrading from Debian 5 to Debian 6 =

Upgrading from Debian 5 to Debian 6 report and tutorial.

= Upgrading from Debian 6 (Squeeze) to Debian 7 (Wheezy) =

Note, this only goes over "armel" -> "armel"... For users wishing to switch from "armel" -> "armhf" just re-install...

sudo apt-get update ; sudo apt-get upgrade sudo sed -i -e "s/squeeze/wheezy/g" /etc/apt/sources.list sudo apt-get update ; sudo apt-get install -y apt aptitude udev dpkg sudo aptitude update ; sudo aptitude -y safe-upgrade ; sudo aptitude -y dist-upgrade