PandaBoard Ubuntu How-tos

From OMAPpedia

Jump to: navigation, search


[edit] How to: set up a console

Create the file /etc/init/ttyO2.conf, with the following content:

 # ttyO2 - getty
 # This service maintains a getty on ttyO2 from the point the system is
 # started until it is shut down again.

 start on stopped rc RUNLEVEL=[2345]
 stop on runlevel [!2345]

 exec /sbin/getty -8 115200 ttyO2

[edit] How To: Increase Performance under Ubuntu

[edit] Disable swap

Edit out the swap file line found in /etc/fstab

i.e. put a '#' infront of the line which creates a swapfile

[edit] Use tmpfs

This is another speed enhancement that is achieved by editing /etc/fstab, this time by adding the lines:

tmpfs /tmp          tmpfs nodev,nosuid                  0 0
tmpfs /var/log      tmpfs nodev,nosuid                  0 0

Richard Watts posted the following on the Pandaboard google mailing list:

Nigel H-S wrote:
> I'm focussing on using Ubuntu with my Pandaboard and am wondering if
> anyone has had success in speeding up Ubuntu by using a Ramdisk?
> Reports around the Internet appear to point to Ubuntu not using the SD
> card as fast as it could.
> Any hints or tips on setting up a Ramdisk?
I shall write this up properly in a bit, but I found that:
* Disable swap (really!) - edit it out of /etc/fstab and reboot.
tmpfs /tmp          tmpfs nodev,nosuid                  0 0
tmpfs /var/log      tmpfs nodev,nosuid                  0 0
in /etc/fstab
Helped greatly - in particular the periodic pauses which seemed to be the result of
swapping went away. Of course, you do lose some RAM to tmpfs, which isn't ideal.
The underlying problem remains - SD access is just too slow - and I still get
quite long hangs when I try to shell autocomplete at the wrong moment - but those
two measures made life much more pleasant for me.
Sadly, in my case I can't blame the card (much) - the same card in my USB card
reader or a ZMS-08 dev board works fine. Time to get an SD protocol analyser, I
Good luck!

[edit] Use noatime and discard (aka TRIM)

You can further improve disk performance by using the noatime fstab mount option to stop Linux writing to the disk every time a file is read no matter what type of drive you have and SSD users who use ext4 partitions will benefit from using the discard option if their drive supports TRIM. Hence, an fstab entry for an ext4 root partition on an SSD that supports TRIM would look something like:

UUID=LONG-EXAMPLE-UUID-STRING / ext4 discard,noatime,errors=remount-ro 0 1

[edit] Install Xubuntu Desktop

Xubuntu replaces the normal Gnome Desktop with xfce and using applications which are lighter on resources. To install the complete xubuntu-desktop with all applications open a terminal and type:

sudo apt-get install xubuntu-desktop

If you only want a minimal xubuntu based on xfce (other packages can be added later if required) open a terminal and type:

sudo apt-get install xfce4 gdm xubuntu-gdm-theme xubuntu-artwork

It will take a while to install this replacement desktop. Once installed you will be able to select the xubuntu-desktop from the login screen once you've click a user but before you've typed a password.

A video walkthrough of Xubuntu running on the PandaBoard can be found here:

[edit] How To: Start Programming with Hardware Accelerated 3D Graphics

Pandaboard implements OpenGL ES 2.0 in hardware.

If you register at the Imagination Technologies website, you can download the SDK from here:

Included in the SDK are a series of well commented Tutorial programs as well as fully fledge demonstrations.

For a step by step guide on how to build the SDK examples programs on a PandaBoard running Ubuntu, see this post

[edit] How To: Run Irrlicht 3D engine

To compile the Irrlicht engine you need the "build-essential" package. Also required are "libxxf86vm-dev" and "libxext-dev".

All needed dependencies can be installed with the following command:

sudo apt-get install build-essential libxxf86vm-dev libxext-dev

Go to: Irrlicht 3D Engine

Download the latest version (1.7.2 at time of writing this) and extract the ZIP archive.

Open a terminal and chdir into "irrlicht-<version-number>/source/Irrlicht" and run:


Irrlicht will then be built for the OMAP4.

You can then go into /examples/ and start making each example.

You can make them all in one step by chdir'ing into the examples directory and running:


[edit] How to: read output from PandaBoard over a serial port

This page describes how to connect between a Host PC and the OMAP Platform device.

[edit] Serial Terminal Setup

For a Linux machine, a serial terminal such as Minicom, screen, or Kermit can be used. Ubuntu users wanting a graphical terminal program can install gtkterm. On a Windows PC, you could use HyperTerminal, TeraTerm or PuTTY.

[edit] Install and Setup Minicom

Open a terminal.

Install minicom if it isn't installed on your system yet.

sudo apt-get install minicom

Search for USB device on Ubuntu:

dmesg | grep -e tty

A search on USB drivers from system log can also be helpful.

dmesg | grep usb

Select the right device:

...USB Serial Device converter now attached to ttyXXX < --- select the appropriate tty connection

note: The device name may vary from system to system and board to board. If connected using a USB2serial adapter then look for ttyUSBX. If you connect using a serial cable it might look like ttySX.

Open minicom and setup the serial connections as follows:

sudo minicom -s
           | Filenames and paths      |
           | File transfer protocols  |
           | Serial port setup        |
           | Modem and dialing        |
           | Screen and keyboard      |
           | Save setup as dfl        |
           | Save setup as..          |
           | Exit                     |
           | Exit from Minicom        |
//Select Serial port setup
//Select A and use the right USB device listed from the previous command previously
//Example: Blaze = /dev/ttyUSB2 | PandaBoard = /dev/ttyUSB0 
//Select F to turn off Flow Control
           | A -    Serial Device      : /dev/ttyUSB2                              |
           | B - Lockfile Location     : /var/lock                                 |
           | C -   Callin Program      :                                           |
           | D -  Callout Program      :                                           |
           | E -    Bps/Par/Bits       : 115200 8N1                                |
           | F - Hardware Flow Control : No                                        |
           | G - Software Flow Control : No                                        |
           |                                                                       |
           |    Change which setting?                                              |
//Press enter, save as default, exit
//Once the Modem is Initialized, press Ctrl A-Z-M
//This lists the main menu
            |                     Minicom Command Summary                       |
            |                                                                   |
            |          Commands can be called by CTRL-A <key>                   |
            |                                                                   |
            |               Main Functions                  Other Functions     |
            |                                                                   |
            | Dialing directory..D  run script (Go)....G | Clear Screen.......C |
            | Send files.........S  Receive files......R | cOnfigure Minicom..O |
            | comm Parameters....P  Add linefeed.......A | Suspend minicom....J |
            | Capture on/off.....L  Hangup.............H | eXit and reset.....X |
            | send break.........F  initialize Modem...M | Quit with no reset.Q |
            | Terminal settings..T  run Kermit.........K | Cursor key mode....I |
            | lineWrap on/off....W  local Echo on/off..E | Help screen........Z |
            | Paste file.........Y                       | scroll Back........B |
            |                                                                   |
            |      Select function or press Enter for none.                     |
            |                                                                   |
            |             Written by Miquel van Smoorenburg 1991-1995           |
            |             Some additions by Jukka Lahtinen 1997-2000            |
            |             i18n by Arnaldo Carvalho de Melo 1998                 |
//Once this starts up, the following will be output on terminal

Alternatively, you can edit the .minirc.dfl in the home directory. Change the port number pointing to the right device before starting minicom. Our .minirc.dfl looks like this:

pu port      /dev/ttyUSB2
pu rtscts    No

At this point, the bootloader starts the kernel. Some binaries autoboot while others may require bootargs to boot up. In case the platform autoboots, you may see a sample output as shown below. Else refer to the next step/boot-args section on the guide.

Sample output:

Texas Instruments X-Loader 1.41 (Jul 26 2010 - 19:26:00)                                                                                                
mmc read: Invalid size                                                                                                                                  
Starting OS Bootloader from MMC/SD1 ...                                                                                                                 
U-Boot 1.1.4-L24.6-dirty (Jul 27 2010 - 12:02:16)                                                                                                       
Load address: 0x80e80000                                                                                                                                
DRAM:  512 MB                                                                                                                                           
Flash:  0 kB                                                                                                                                            
In:    serial                                                                                                                                           
Out:   serial                                                                                                                                           
Err:   serial                                                                                                                                           
Net:   KS8851SNL                                                                                                                                        
Hit any key to stop autoboot:  0                                                                                                                        
mmc read: Invalid size                                                                                                                                  
3351176 bytes read
## Booting image at 80500000 ...
   Image Name:   Ubuntu Kernel
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3351112 Bytes =  3.2 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
Starting kernel ...

A video walkthrough of the above process can be found below:

[edit] Alternative to minicom: Using screen

screen is installed by default of many Linux distributions.

First, find the tty for the serial port:

dmesg | grep tty

In the example below, ttyUSB0 is the USB-attached serial port:

[24542.443352] usb 2-1.2: Keyspan 1 port adapter converter now attached to ttyUSB0

Then simply start screen, passing in the serial port address and the speed:

screen /dev/ttyUSB0 115200

[edit] How to: build a custom rootfs

[edit] How to: install a kernel

To find kernel images run/type:

apt-cache search linux-image

prior to that you can add a ppa-repository to your server-list

e.g. adding linaro kernels:

add-apt-repository ppa:linaro-maintainers/kernel

and run/type:

apt-get update

choose the kernel-image of your desire. e.g.:



apt-get install linux-image-2.6.38-1003-linaro-omap

to activate the kernel do a:

flash-kernel linux-image-2.6.38-1003-linaro-omap

If you run into problems with flash-kernel, check out this link

Personal tools