Compiling the XO 1.5 Kernel on an F11 Desktop

I tried, but couldn’t get this to work on the XO 1.5 itself.  But that gave me the impetus to finally get my dual boot Ubuntu Lucid / F11 machine sorted out.

As we all know, compiling a kernel takes a lot of dependencies and getting all those is usually the most time consuming part at first.  Once you get that covered, see what I did to compile and install a kernel on the XO 1.5 after the jump.

Make sure you do this as a normal user so you don’t accidentally hose something on your host machine.

Get the kernel source:

git clone git://
cd olpc-2.6
git checkout origin/olpc-2.6.31

Create your new config.  I like xconfig, but you can always use menuconfig instead.

make clean distclean
make xo_1.5_defconfig
make xconfig

I don’t know if all this is necessary, but I did this anyway cause I didn’t want to waste a bunch of compilation time just in case:

mv arch/x86/configs/xo_1.5_defconfig arch/x86/configs/xo_1.5_defconfig.original
cp .config arch/x86/configs/xo_1.5_defconfig
make clean distclean
make xo_1.5_defconfig

And finally:

make xo_1_5-kernel-rpm

This takes awhile, of course.  When it’s done, you’ll find the rpms in olpc/RPMS/i586.  Take these two over to the XO 1.5 and install them:

rpm -ivh kernel-firmware…rpm
rpm -ivh kernel…i586.rpm

Some stuff to do to get it to boot:

Go into /boot and make sure the initrd.img and vmlinuz symlinks were created correctly.

cd /boot
ls -lh

If you don’t do this, the XO 1.5 won’t boot into the new kernel

rsync –delete-before -av /boot/ /bootpart/boot/

While still in /boot, copy the new initrd and vmlinuz to /versions/pristine/NN/boot.  Replace the elipses with your kernel version and NN with your build version.

cp initrd…DIRTY.img vmlinuz…DIRTY.img /versions/pristine/NN/boot

Make your symlinks:

cd /versions/pristine/NN/boot
rm initrd.img vmlinuz
ln -sf initrd…DIRTY.img initrd.img
ln -sf vmlinuz…DIRTY.img vmlinuz

Reboot and you should see that lovely DIRTY kernel when you do uname -a

Dual Boot Ubuntu Lucid and F11

Here’s how I got this working:

Install Ubuntu like normal

Boot with a Live CD and use gparted to resize the Ubuntu partition, making a new partition with room for Fedora.  I went ahead and formatted it as ext3 in gparted.

Install Fedora on the partition you just created.  Install the boot loader on the Fedora partition.

After the Fedora install reboot, it’ll go into Ubuntu

sudo update-grub2

Now your grub menu will show Ubuntu and Fedora entries

Retail DVD Playback with mplayer on XO 1.5

I was curious to see if I could get this working and also how long it would take to compile mplayer on the XO 1.5.  Not the most critical of endeavors, but I haven’t even had these two units for 24 hours, so it’s not like I’ve wasted a bunch of time.

I installed libdvdcss and libdvdcss2 for retail DVD playback, but Totem couldn’t handle DVDs – it was like a slideshow.  Mplayer has very smooth DVD playback using about 40% of the CPU.  Obviously you’ll need an external USB DVD drive.

To compile mplayer on and for the XO 1.5, I pretty much followed the same instructions as I wrote up for the original XO on the OLPC News Forum.

I did have to install these additional dependencies:


For DVD support, I installed these rpms:

If you want DVD menu support, install this dependency.  Keep in mind you’ll have to install libdvdnav on any XO 1.5 you want to use the resulting binary on.


If you don’t want DVD menu support, just cd into the mplayer source and:

./configure –enable-gui

For DVD menu support:

./configure –enable-gui –enable-dvdnav

It takes about an hour to compile, which is slightly faster than the XO-1.

As root, add the olpc user to the cdrom group.  Log out and log back in for it to take effect.

usermod -a -G cdrom olpc

Create your config file in  /home/olpc/.mplayer/config

#lavdopts=skiploopfilter=all:fast=1 #DVD playback crashes with this

profile-desc=”profile for dvd:// streams”

profile-desc=”profile for dvdnav:// streams”

Installing and using on another XO 1.5

Installation without DVD Navigation Support

Drop the mplayer binary into /usr/bin on a freshly flashed XO 1.5, add olpc to the cdrom group, create olpc’s mplayer config file, and play a DVD without installing anything else – indeed, not even running updates.

To play a DVD, plug in your external DVD drive and

mplayer dvd://

Installation with DVD Navigation Support

The only difference from the above instructions is that you have to install libdvdnav (pulling in the libdvdread dependency) via yum.  You can play a DVD with the above command, or for the menus:

mplayer dvdnav://

I would suggest watching the movie proper with mplayer dvd:// and then, if you want to watch the “DVD Extras,” start the disc with mplayer dvdnav://  If the disc is nothing but interactive “special features,” that should work as well, though if you go full screen you won’t be able to use the mouse.

If subtitles show by default, you can toggle them on and off by hitting v.

Of course, here’s a picture!  Why, yes, that is a very young Bruce Campbell on the XO’s screen.


Unboxing and Physical Differences

Visually, there’s not much to distinguish the original XO from the XO 1.5.  In all the pictures below, the original XO is on the left and the XO 1.5 is on the right.

The XO 1.5 is packaged identically to the original XO.  Same box, same “egg crate” cardboard cushion, the battery in a plastic sleeve on top, and the power adapter.  The only immediate visual cue you’re dealing with something different is that the power adapter is white.


My first thought was “How in the world am I going to keep from mixing these up?”

Opening them up and comparing them side by side, you’ll immediately notice the XO 1.5 doesn’t have the two pads on either side of the trackpad.


That’s the major visual difference.  Pretty much everything else on these two units is identical.  Besides the trackpad area, can you spot the other difference?

Here’s the original XO:

Here’s the XO 1.5:

Look closely at the monitor hinges.  The original XO’s monitor hinge is completely smooth.  The XO 1.5 has three raised dots on both sides of the hinge.  So if you’re paying attention, you can tell which one is which when they’re closed.

But yeah, they’re remarkably identical, which caught me a bit by surprise.

XO 1.5 Hardware Information and Updating

The XO 1.5 arrived here with build 201.  Right now, the latest build is 206.  I downloaded the files and updated the XO 1.5 per the instructions here:

Flashing it took about 10 minutes, versus the old XO’s typical 5 minutes.  That’s to be expected, however, given the amount of storage is about quadruple.

I powered up, and was prompted to enter my name and choose my color, just like any Sugar install.  Connecting to my network went as usual.  Once I got an IP, I went back to my desktop to scan the XO 1.5.

root@anna-desktop:~# nmap -sS

Starting Nmap 5.00 ( ) at 2010-08-26 16:47 CDT
Interesting ports on (
Not shown: 997 closed ports
22/tcp   open  ssh
5298/tcp open  unknown
6000/tcp open  X11
MAC Address: 00:17:C4:A7:4D:83 (Quanta Microsystems)

Nmap done: 1 IP address (1 host up) scanned in 9.36 seconds

Oh, good, ssh is there.  I didn’t initially see the terminal activity in the “Activity Ring” so I hit ctrl+alt+F1 to get a root console and set the password for the olpc user.  Then from my desktop:

ssh olpc@

And I was in!

The familiar prompt came up:

 Dup dor a’az Mubster!              _____/    Bonjour, enfants du monde!
 Ciao, bambini di tutto il mondo!   || o ||    ¡Hola, chicos del mundo!
 Hallo, Kinder der Welt!            |._X_.|    Hallo, kinderen van de wereld!
 Hello, children of the world!     //_=_=_\   Olá, crianças do mundo!

[olpc@xo-a7-4d-83 ~]$

As an aside, when I ssh’d into the XO 1.5 running 201, which is what it arrived with, I had issues with the power management kicking in and causing my session to hang.  I haven’t noticed that issue with 206.

Let’s see what all’s in /home/olpc

[olpc@xo-a7-4d-83 ~]$ ls -alh
total 128K
drwxr-xr-x 24 olpc olpc 4.0K 2010-08-26 21:42 .
drwxr-xr-x  4 root root 4.0K 2010-08-26 21:40 ..
drwxr-xr-x 40 olpc olpc 4.0K 2007-11-02 12:00 Activities
-rw-r–r–  1 olpc olpc   18 2007-11-02 12:00 .bash_logout
-rw-r–r–  1 olpc olpc  176 2007-11-02 12:00 .bash_profile
-rw-r–r–  1 olpc olpc  124 2007-11-02 12:00 .bashrc
-rw-r–r–  1 olpc olpc   13 2010-08-26 21:42 .boot_time
-rw-r–r–  1 olpc olpc   11 2010-08-26 21:40 .boot_time.prev
drwxr-xr-x  3 olpc olpc 4.0K 2010-08-26 21:40 .config
drwx——  3 olpc olpc 4.0K 2010-08-26 21:40 .dbus
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 Desktop
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 Documents
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 Download
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 .fontconfig
drwx——  3 olpc olpc 4.0K 2010-08-26 21:42 .gconf
drwx——  2 olpc olpc 4.0K 2010-08-26 21:42 .gconfd
drwxr-xr-x  2 olpc olpc 4.0K 2007-11-02 12:00 .gnome2
dr-x——  2 olpc olpc    0 2010-08-26 21:42 .gvfs
-rw-r–r–  1 olpc olpc   19 2010-08-26 21:40 .i18n
-rw-r–r–  1 olpc olpc  441 2010-08-26 21:42 .imsettings.log
drwxr-xr-x 11 olpc olpc 4.0K 2007-11-02 12:00 Library
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 .library_pages
drwxr-xr-x  4 olpc olpc 4.0K 2007-11-02 12:00 .mozilla
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 Music
-rw-r–r–  1 root root    2 2010-08-26 21:40 .olpc-configured
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 Pictures
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 power-logs
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 Public
drwxr-xr-x  2 olpc olpc 4.0K 2007-11-02 12:00 .scim
drwxr-x—  3 olpc olpc 4.0K 2010-08-26 21:40 .sugar
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 Templates
drwxr-xr-x  2 olpc olpc 4.0K 2010-08-26 21:40 Videos
-rw-r–r–  1 olpc olpc  551 2007-11-02 12:00 .xsession-example

There are a lot of activities…

[olpc@xo-a7-4d-83 ~]$ ls -alh Activities/
total 160K
drwxr-xr-x 40 olpc olpc 4.0K 2007-11-02 12:00 .
drwxr-xr-x 24 olpc olpc 4.0K 2010-08-26 21:42 ..
drwxr-xr-x  9 olpc olpc 4.0K 2007-11-02 12:00 Browse.activity
drwxr-xr-x  6 olpc olpc 4.0K 2007-11-02 12:00 Calculate.activity
drwxr-xr-x  5 olpc olpc 4.0K 2007-11-02 12:00 Chat.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 Colors.activity
drwxr-xr-x  5 olpc olpc 4.0K 2007-11-02 12:00 Distance.activity
drwxr-xr-x  4 olpc olpc 4.0K 2007-11-02 12:00 Etoys.activity
drwxr-xr-x  7 olpc olpc 4.0K 2007-11-02 12:00 Finance.activity
drwxr-xr-x  5 olpc olpc 4.0K 2007-11-02 12:00 GetBooks.activity
drwxr-xr-x  4 olpc olpc 4.0K 2007-11-02 12:00 Help.activity
drwxr-xr-x  6 olpc olpc 4.0K 2007-11-02 12:00 ImageViewer.activity
drwxr-xr-x  5 olpc olpc 4.0K 2007-11-02 12:00 Implode.activity
drwxr-xr-x 10 olpc olpc 4.0K 2007-11-02 12:00 InfoSlicer.activity
drwxr-xr-x  5 olpc olpc 4.0K 2007-11-02 12:00 Jukebox.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 Labyrinth.activity
drwxr-xr-x  5 olpc olpc 4.0K 2007-11-02 12:00 Log.activity
drwxr-xr-x  4 olpc olpc 4.0K 2007-11-02 12:00 Maze.activity
drwxr-xr-x  6 olpc olpc 4.0K 2007-11-02 12:00 Measure.activity
drwxr-xr-x 10 olpc olpc 4.0K 2007-11-02 12:00 Memorize.activity
drwxr-xr-x  6 olpc olpc 4.0K 2007-11-02 12:00 Moon.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 Paint.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 Physics.activity
drwxr-xr-x  9 olpc olpc 4.0K 2007-11-02 12:00 Pippy.activity
drwxr-xr-x  6 olpc olpc 4.0K 2007-11-02 12:00 Read.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 Record.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 Scratch.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 Speak.activity
drwxr-xr-x  5 olpc olpc 4.0K 2007-11-02 12:00 StopWatch.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 TamTamEdit.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 TamTamJam.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 TamTamMini.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 TamTamSynthLab.activity
drwxr-xr-x  6 olpc olpc 4.0K 2007-11-02 12:00 Terminal.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 TurtleArt.activity
drwxr-xr-x  8 olpc olpc 4.0K 2007-11-02 12:00 TypingTurtle.activity
drwxr-xr-x 10 olpc olpc 4.0K 2007-11-02 12:00 Wikipedia.activity
drwxr-xr-x 10 olpc olpc 4.0K 2007-11-02 12:00 WikipediaEN.activity
drwxr-xr-x  4 olpc olpc 4.0K 2007-11-02 12:00 Words.activity
drwxr-xr-x  5 olpc olpc 4.0K 2007-11-02 12:00 Write.activity

I see the Terminal Activity in this directory, so I wonder why it doesn’t show up in the home view.  Here’s a screenshot so you can see I’m not imagining it.


Look at all this space!

[olpc@xo-a7-4d-83 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mmcblk0p2        3.5G  1.6G  2.0G  45% /
tmpfs                  47M     0   47M   0% /dev/shm
/tmp                   47M   96K   47M   1% /tmp
varcacheyum           464M     0  464M   0% /var/cache/yum
vartmp                 47M  8.0K   47M   1% /var/tmp
varlog                 19M  248K   19M   2% /var/log
/dev/mmcblk0p1         62M   17M   43M  29% /bootpart

Let’s see what we’re running here…

[olpc@xo-a7-4d-83 ~]$ cat /etc/issue
OLPC OS 10.1 for XO-1.5 (build 206)
Kernel r on an m (l)

[olpc@xo-a7-4d-83 ~]$ cat /etc/redhat-release
OLPC release 10 (based on Fedora 11)

[olpc@xo-a7-4d-83 ~]$ uname -a
Linux xo-a7-4d-83.localdomain 2.6.31_xo1.5-20100607.1740.1.olpc.ead3d3e #1 PREEMPT Mon Jun 7 17:44:38 EDT 2010 i686 i686 i386 GNU/Linux

You need to be root to look at the hardware info.  Luckily “sudo su -” works like it always has on the XO.

[olpc@xo-a7-4d-83 ~]$ dmidecode
# dmidecode 2.10
/dev/mem: Permission denied
[olpc@xo-a7-4d-83 ~]$ sudo su –
[root@xo-a7-4d-83 ~]# dmidecode
# dmidecode 2.10
Legacy DMI 2.1 present.
12 structures occupying 376 bytes.
Table at 0x000FFC1F.

Handle 0x0000, DMI type 0, 19 bytes
BIOS Information
    Vendor:  IE8y2D ScD%g4r2bAIFA.
    Version: OLPC Ver 1.00.15
    Release Date: 05/08/2010
    Address: 0xF0000
    Runtime Size: 64 kB
    ROM Size: 1024 kB
        PCI is supported
        BIOS is upgradeable
        BIOS shadowing is allowed
        Boot from CD is supported
        Selectable boot is supported
        EDD is supported
        ACPI is supported

Handle 0x0100, DMI type 1, 25 bytes
System Information
    Manufacturer: OLPC
    Product Name: XO
    Version: 1.5
    Serial Number: SHC01601322
    UUID: 6F08F886-C531-A608-1BE5-AA11C1F2E56D
    Wake-up Type: Power Switch

Handle 0x0200, DMI type 2, 8 bytes
Base Board Information
    Manufacturer: QUANTA
    Product Name: XO
    Version: 1.5
    Serial Number: SHC01601322

Handle 0x0300, DMI type 3, 13 bytes
Chassis Information
    Manufacturer: OLPC
    Type: Laptop
    Lock: Not Present
    Version: 1.5
    Serial Number: Not Specified
    Asset Tag: Not Specified
    Boot-up State: Safe
    Power Supply State: Safe
    Thermal State: Safe
    Security Status: External Interface Enabled

Handle 0x0400, DMI type 4, 32 bytes
Processor Information
    Socket Designation: Not Specified
    Type: Central Processor
    Family: Other
    Manufacturer: CentaurHauls
    ID: D0 06 00 00 FF BB C9 A7
    Version: VIA C7-M Processor 1000MHz
    Voltage: 1.2 V
    External Clock: 33 MHz
    Max Speed: 433 MHz
    Current Speed: 433 MHz
    Status: Populated, Enabled
    Upgrade: None
    L1 Cache Handle: 0x0701
    L2 Cache Handle: 0x0703
    L3 Cache Handle: No L3 Cache

Handle 0x0701, DMI type 7, 19 bytes
Cache Information
    Socket Designation: Not Specified
    Configuration: Enabled, Not Socketed, Level 1
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 128 kB
    Maximum Size: 128 kB
    Supported SRAM Types:
    Installed SRAM Type: Other
    Speed: Unknown
    Error Correction Type: Other
    System Type: Unified
    Associativity: 4-way Set-associative

Handle 0x0703, DMI type 7, 19 bytes
Cache Information
    Socket Designation: Not Specified
    Configuration: Enabled, Not Socketed, Level 2
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 128 kB
    Maximum Size: 128 kB
    Supported SRAM Types:
    Installed SRAM Type: Other
    Speed: Unknown
    Error Correction Type: Other
    System Type: Unified

Handle 0x0A01, DMI type 10, 6 bytes
On Board Device Information
    Type: Video
    Status: Enabled
    Description: CON

Handle 0x1001, DMI type 16, 15 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 1 GB
    Error Information Handle: Not Provided
    Number Of Devices: 1

Handle 0x1101, DMI type 17, 21 bytes
Memory Device
    Array Handle: 0x1001
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 1024 MB
    Form Factor: Row Of Chips
    Set: None
    Locator: Soldered
    Bank Locator: Not Specified
    Type: DDR2
    Type Detail: Synchronous

Handle 0x1301, DMI type 19, 15 bytes
Memory Array Mapped Address
    Starting Address: 0x00000000000
    Ending Address: 0x0003FFFFFFF
    Range Size: 1 GB
    Physical Array Handle: 0x0031
    Partition Width: 0

Handle 0x7F01, DMI type 127, 4 bytes
End Of Table

More CPU info:

[root@xo-a7-4d-83 ~]# cat /proc/cpuinfo
processor    : 0
vendor_id    : CentaurHauls
cpu family    : 6
model        : 13
model name    : VIA C7-M Processor 1000MHz
stepping    : 0
cpu MHz        : 997.529
cache size    : 128 KB
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 1
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge cmov pat clflush acpi mmx fxsr sse sse2 tm nx pni est tm2 xtpr rng rng_en ace ace_en ace2 ace2_en phe phe_en pmm pmm_en
bogomips    : 1995.05
clflush size    : 64
power management:

More memory info:

[root@xo-a7-4d-83 ~]# cat /proc/meminfo
MemTotal:         949252 kB
MemFree:          785600 kB
Buffers:            8100 kB
Cached:            95964 kB
SwapCached:            0 kB
Active:            75584 kB
Inactive:          68968 kB
Active(anon):      41560 kB
Inactive(anon):        0 kB
Active(file):      34024 kB
Inactive(file):    68968 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         40504 kB
Mapped:            27084 kB
Slab:              12428 kB
SReclaimable:       7016 kB
SUnreclaim:         5412 kB
PageTables:         1788 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      474624 kB
Committed_AS:     126276 kB
VmallocTotal:     334276 kB
VmallocUsed:       82540 kB
VmallocChunk:     250200 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:        9412 kB
DirectMap4M:      958464 kB

Looks like we’re using a separate boot partition here.

[root@xo-a7-4d-83 ~]# fdisk -l

Disk /dev/mmcblk0: 3965 MB, 3965190144 bytes
32 heads, 32 sectors/track, 7563 cylinders
Units = cylinders of 1024 * 512 = 524288 bytes
Disk identifier: 0x00000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *           9         136       65536   83  Linux
/dev/mmcblk0p2             137        7372     3704832   83  Linux

There’s tons of space on /var/cache/yum, so “yum update” ran OK, unlike the original XO running os850 where I have to mount a usb drive on /var/cache/yum.  Updates did take awhile, but finally completed.

The next order of business was to go ahead and request a developer key.  I was curious if a collection key would work like it does with the original XO, but it didn’t.  So I opened the browse activity and requested it the “traditional” user way.  I could have also gone to and entered the SN and UUID I got from the dmidecode output.

XO 1.5 Units on the Way

I got a tracking number and a couple of XO 1.5 units are on the way.  Here’s my request, with identifying information redacted.

1.  Project Title & Shipment Detail

Name of Project:  Birmingham XO Evaluation and Development

Shipping Address:


Number of XO 1.5 units requested to borrow:  2

Loan Length:  9-12 months

2.  Team Participants


Employer:  TALA Professional Services (contractor working with Birmingham City Schools)

Past Experience/Qualifications:


I’ve been providing technical support here in Birmingham since the inception of the XO implementation here in early 2008.  To say that I’ve been obsessed with XOs ever since would be putting it mildly.  In fact, I exclusively used an XO for all my portable computing needs up until my recent acquisition of an Asus eeePC.  As an aside, my colleagues find it astonishing how fast I can touch type on the XO’s keyboard.

One of the reasons why I’ve tried booting so many things on the XO (from NAND, SD cards, and USB drives) like Ubuntu, DebXO, Gentoo, Puppy, the XS, and even compiled a kernel for a custom Debian debootstrap install with IceWM on a jffs2 image (my current favorite) is because I know the XO can handle a lot more than most folks are aware of.  Not to mention the older kids here are quickly aging out of Sugar and would probably like to have a more “grown-up” looking installation.  Yes, I am very excited about the Paraguay build and recently installed os300py for a small group of rising 6th graders at a summer “XO Camp” a few weeks ago.  It was amazing how they took to it!

I’m not a programmer, but have been a Linux user for over a decade now.  I’m no guru by any means, but I’ve turned out to be the only person with any Linux experience who consistently and constantly assists the stakeholders here.  My previous professional experience was as a “Business Systems Analyst” for a telecom company in Dallas, where, among other responsibilities, I gathered requirements from end users for the software developers, did development testing, wrote documentation, trained end users, and offered ongoing support.

Speaking of testing and development, one of the best things I ever did was set up the XS in my house a couple of years ago.  I went on and recruited a few users to help me test jabber and they’ve been on ever since.  I started off with just a static IP, but eventually purchased a domain name:  As we’ve matured as a user group, my XS has become quite the sandbox.  I installed WordPress for our own private blog, Laconica (now known as StatusNet) for a microblog, Teamspeak for audio chat, Icecast for video streaming from the XO’s camera (which was very slow and buggy), and of course quite a few folks have ssh accounts.  Once we were playing around with dsh (dancer’s shell / distributed shell) and a couple of my users loved startling me by making all the XOs in my house talk with espeak.  I’ve also set up boa or lighttpd with some cgi scripts on XOs in my house, opening the port up to the outside.  My users love being able to click on a link to take and view a picture or play an internet radio station for me.

I’m probably digressing quite a bit, but the XO has truly been a joy to work and play with and the possibilities are almost endless, despite the limited hardware.  In fact, I think the limited hardware on the XO-1 lends itself to such creativity and community.  “What fun things can we hack up with the XS and XOs tonight?”

Of course, I don’t install “hacky” things for end users on the XOs and XSs out in the field.  However, I was faced with some initial stakeholder requirements on the XO such as Adobe Flash and non-free codecs.  During the very early days of Sugar, the Browse Activity was deemed unacceptable as it didn’t handle the pop up logins found on some frequently used sites.  I ended up customizing a build for the users here with Firefox instead of Browse (the two were incompatible at the time), Adobe Flash, all the non-free codecs, and the mozilla mplayer plugin.  During the aforementioned trial of the Paraguay build with rising 6th graders, a teacher complained that it didn’t play video files seamlessly in Firefox like the old “Birmingham build” does.  I had to explain that, on the old “Birmingham build,” I installed and optimized mplayer for the XO, set up the plugin, created a symlink to /media in /home/olpc and put that in the bookmarks, so that’s why you can access video files easily from a USB drive and they play so nicely in Firefox.  Of course Adobe Flash doesn’t work well and I told folks it never would, particularly with intensive Flash games or YouTube, though they insisted on having it.  At least I put the Flashblock plugin on Firefox so browsing wouldn’t be quite as painful, though.

Quite a rambling jumble of stuff, and this certainly doesn’t encompass all I’ve been up to in the past couple of years, but maybe this gives y’all an idea of my XO adventures over the past few years.


I’ve done hardware repairs on countless XOs here.  Since there’s not a centralized “XO Repair” center here, I’ve taken care of most of the XO repair issues that have come up here in the community.  I trained a local high school class in XO hardware repairs for their “Junior Achievement” class for their “XO Fixit” program and they went to the national JA competion in Minneapolis this year.

I have a Sparkfun serial adapter and, can get into OFW as long as the mobo isn’t dead.  I’m an expert at taking apart and putting XOs back together.  Once I timed himself and completely disassembled, put back together, then booted an XO in 27 minutes.  I’ve got a YouTube of my XO screen replacement prowess at

For the XO 1.5 units, I’m going to disassemble and reassemble them, record it all, and then post the videos on YouTube.

3.  Objectives

First, get developer keys just in case

Under an “Official” build, register to the XS in my house

Try out Chat, Write, and other collaborative activities under Sugar in Jabber

Test the Gnome Desktop

Compile and install a kernel

Try out Debian – from my own bootstrap

Compile stuff for the XO 1.5:  starting off with low hanging fruit like mplayer

Examine the differences between OFW on the XO-1 and the XO-1.5

Test out external devices on the XO-1.5 that I’ve gotten working on the XO-1:

Samsung Laser Printer

Epson Scanner

ZyDas USB Wifi ethernet adapter

Linksys USB Wired ethernet adapter

And since I’m attached to an actual deployment, I’d take the XO 1.5, either stock or tricked out, and show it off to the stakeholders (i.e. teachers and students).

4.  Plan of Action

Well, I’d be lying if I said I wouldn’t descend upon an XO 1-5 like a five year old on Christmas morning.  But after the initial novelty, there is work and research to be done. 

I pretty much covered my goals under the the objectives.  Though I’m mostly a technical girl, I still have the heart of an English major, therefore bringing a unique narrative and perspective to the project.

Basically, my plan of action to hack at the XO 1.5 six ways to Sunday.  I’m already experienced with the XO-1 and this is just another exciting platform to work with.  I’ll test it with my XS and report back to Martin.  I’ll listen to wish lists from the educators I work with and see if I can fulfill their requirements.  Tyler and I will disassemble a unit and take copious pictures and scans of the hardware as well as videos of the processes.  I’m no stranger to typical Linux stuff like installing from rpm or apt-get, compiling from source (getting stuff from git or svn if need be), creating and editing config files, networking setup, then XO stuff like flashing, security, using external drives (I think I have about 10 or so with various purposes), or the XS.  Speaking of the XS, nothing else has taught me more about DHCP and Apache.

5.  Needs

Locally, this project will include demonstrations for administrators and other stakeholders (teachers and students).  Though it’s an important purpose, however it’s not the only reason, nor the most important reason, why I’m asking for a couple of XO 1.5 units.  Should Birmingham decide to continue with the XO project, as the tech here, I’m going to need to figure out how the XO 1.5 integrates with the other XOs and the XS.  For example, I have reporting based on XO-1 MAC addresses.  Reporting is a little thing, and not a big deal, but it would be nice to have actual units to register to the XS and see how and if they work with moodle. how much faster the access is, and if they can collaborate with other XOs on the existing Jabber servers.  I’m not afraid of flashing the XO 1.5 development units many, many times, from the stock distro to whatever needs to be tested.  I’ve done that on my test XO-1 units and haven’t had any problems so far.

Since my focus is on the actual hardware and integration with our existing network, there is no emulation scenario.  Two XO 1.5 units would be sufficient for initial testing.

6.  Sharing Deliverables

I created a place we can blog at:

Due to our focus, this will more than likely be rather technical.  I’m not a teacher and thus do not have an educator’s perspective.  However, I do have contacts within the school system willing to offer critiques.

7.  Quality/Mentoring

I’m really lucky to have an active XS Jabber server with several users who will be happy to help me regarding XO 1.5 testing.  In fact, one of my Jabber users, Kevin Mark (kevix) has an XO 1.5 unit.  I’m also friends with Mike Lee, who has a couple of XO 1.5 units.  I’m also conversant with the IRC chat rooms.

As far as educators, I’m walking distance to an excellent elementary school, Glen Iris, selected for the XO-1 pilot in Birmingham.  The school librarian knows me rather well and we help each other out quite a bit.

And I’m quite comfortable getting on IRC and asking/answering any questions.

8.  Very Rough Timeline – most of this will flow into each other

Month 1:  Initial Evaluation – software, networking, collaboration

Month 2:  XS integration Evaluation

Month 3:  Hardware Evaluation – Disassemble a unit and post pictures, scans, and videos

Month 4:  Introduce the units to teaching staff at Glen Iris Elementary.  Find out how they’d integrate into the classroom versus the XO-1.

Month 5:  Take teacher input and write up what they’d really like to see the XO 1.5 do as a “regular” computer in the classroom.  Create action plan to implement their ideas.

Months 6 & 7:  Test teacher ideas.  Also, XO Hackery i.e. other OS’s (Debian, Ubuntu, the XS), external devices such as printers, scanners, and DVD RW drives.

Month 8:  Cloud Computing – Dropbox, Twitter, Google Docs, Facebook

Month 9:  Reintroduce to teachers and administrators at Glen Iris Elementary for evaluation purposes.

Yes, I do agree to return the XO 1.5 units should my progress stall

EPIC and Glen Iris Visit Today

Met the “Media Specialist” (that’s what librarians are called nowadays) at EPIC elementary.  Very nice lady and really sharp.  Glen Iris is right across the street, so I popped in to pick up an XO that needs looking at.  Of course, there were other things they needed to help with!  I’m always happy to help at Glen Iris.

Now I need to figure out the best way to do something like sshfs from an iMac to the school server there.  One of the teachers has a bunch of content he wants to host from the Apache server and he’s tired of command line scp.

As an aside, both these schools are close enough for me to walk to.  It sure was hot, though.