From Openmoko

Jump to: navigation, search


State of the 'Runner

I'm using a FreeRunner, with SHR on the flash but mainly using Debian on the microSD.

I now use an N900 as well, so the information may not always be up to date here.

If you have a question or suggestion for me, feel free to leave it on the talk page here or contact me by email and more. I'm also in #openmoko, #openmoko-cdevel, #openmoko-debian as johnsu01.

Blogging and Writing

I'm blogging a bit about my experiences and hacking on the FreeRunner at Posts tagged with "freerunner" are syndicated to

I started a microblogging group for FreeRunner users at

This is a personal page, but related articles I've written for the FSF include:




I'm using Qi. This was installed from here with:

 dfu-util -a u-boot -R -D qi-s3c2442-master_a2d11c4dd18c9517.udfu

The kernel then needs to be renamed/linked to /boot/boot/uImage-GTA02.bin.

We also need a /boot/boot/append-GTA02 file containing:

 root=/dev/mmcblk0p2 console=tty0 loglevel=8 rootdelay=1

(When I re-installed on 2010-09-19 using, I did not have to do this -- the installer did the right thing with QI=true set.)


See /Android.


I'm using the om-gta02 2.6.29-20100313.git973a41fc kernel packaged in Debian.

In the past I tried the andy-tracking kernel, 2.6.29 15ca3dafb2662db4, but it seemed to not detect the battery. It also vomited HDQ errors in the logs and then spontaneously shutdown after being up for about 3 or 4 minutes.


I'm currently using it with T-Mobile.

In the past I've used e17 and Illume for the window manager environment; at this moment I'm experimenting with other possibilities.

I installed most recently with:

   SD_SWAP_SIZE=256 QI=true SD_PART_1_FS=ext3 ./ all


  • gmpc/mpc/mpd/mpdscribble as a scrobbling music player
  • I have gotten a Nokia BH-208 bluetooth headset to pair, and to make the beep that it should make when calls start and stop, but there is no sound other than hissing.
  • I'm working on getting A2DP going with another headset, but haven't had success yet.
  • gpodder for podcasts
  • I need to find a good audio mixer to use


Currently experimenting with I built it from svn on 2009.02.04 and it seems to be working very nicely. It does not seem to have an alarm for appointments, though, and there are some font issues with the yearly calendar view that are causing the numbers to overlap.


I built from svn on 2009.02.04. I successfully imported all 177 of my contacts. From my Nokia phone, I sent them all over bluetooth to the FreeRunner (with obexpushd), and then cat'd them all into a single vcf file. I pointed Contacts toward this, and it imported them. Took a few minutes to do the import, but it worked.

However, upon opening Contacts recently, all my contacts were gone. I have no idea how this happened, but I'm certainly not trusting it without constant backups for the forseeable future.


  • GPRS
  • wicd for monitoring and connecting to wifi networks

I was having trouble with wifi recently -- I could get an address, and do dns lookups, but couldn't reliably ping any host including the gateway. If I left ping running long enough, it would eventually get a few successful ones, but overall it was unusable. I tried a few things including setting the rate with iwconfig and making sure power management was off, but that didn't help. I installed Wmiconfig and did:

 wmiconfig -i eth0 --power maxperf

Now things seem to be working again. But that massively increases power consumption, so I'm still trying to debug the root of the problem. It seems to have something to do with channels and interference, since I can connect to the AP at work, where there are fewer other APs around to crowd the airwaves.

To disable wifi:

 wmiconfig -i eth0 --wlan disable

In FSO you have to activate the WiFi resource in order to use it. For example (on one line):

 mdbus -s org.freesmartphone.odeviced /org/freesmartphone/Device/PowerControl/WiFi  org.freesmartphone.Resource.Enable

This will activate it for multiple clients -- you could also request it instead of setting a different policy, and since the default policy is auto, it will go back off again when you release it.

As of 2010-09-19, I have no problems with wifi; it works out of the box on Debian with wicd.


I'm using bluez 4.33 compiled from source, and bluetooth-gnome 1.8 also compiled from source. I use obexpushd for receiving bluetooth files. I'm compiling from source because when I tried the packaged versions in Debian, the keyboards did not stay paired. I had to re-pair them every time power to either the FreeRunner or the keyboard was turned off.

Display and Desktop

I'm using xserver-xglamo.

The illume theme was using the default ugly X crosshairs mouse cursor. I installed the crystalcursors package and made sure via update-alternatives that it was in use, but it didn't work in e17 until I went into Settings => Look => Mouse Cursor. I selected "Use X cursor", "Show cursor", and changed the cursor size to 16px (under Advanced). Now it's a more pleasant arrow.

The default font size in illume was far, far too small. To increase it, go to Settings => Look => Scaling => Advanced. Set custom scaling on, and then increase the personal scaling factor. Mine is currently set at 2.3. You'll need to restart in order for things to fully settle.

By default, the AUX button is not configured to lock the screen. I changed this by going to Settings => Input => Keybindings. Highlight the first entry, click Modify Key, then press the AUX key. Set it to execute "Desktop Simple Lock".

If icons for installed applications don't show on the desktop, you can try editing the desktop files in /usr/share/applications to make sure that they say "Applications" in the category field and not "Application".


Claws (apt-get install claws-mail) is working well for e-mail. It has a small screen setting that is very usable.

Sending mail didn't work at first. Turns out you have to create a queue folder in order for that to work -- go to File => Add Mailbox and make a local mailbox called Queue. Then under Configuration => Edit Current Account => Advanced under Folder, check the "Put queued messages in" and then select that folder.


  • Xboard seems to work for chess.
  • I tried Gnubik, but the software OpenGL is just too slow.
  • Enigma was not playable
  • Nethack works in the terminal :)
  • linball is a little pinball game, start with ./linball -f
  • Mokomaze is awesome! Work through various mazes, using the accelerometer for control. Installable in Debian with "apt-get install mokomaze".
  • Acceleroids also uses the accelerometer, but so far seems very difficult to control. Maybe I'll get the hang of it. Note that you start it with


I'm trying to use foxtrotgps. It uninstalled the fso-gpsd, and I had to install gpsd. The device isn't set in the config, so I added "GPS_DEV="/dev/ttySAC1"" to /etc/default/gpsd, via dpkg-reconfigure gpsd.

I also installed foxtrotgps on my laptop, to use the FreeRunner's GPS over USB. I just forward the local gpsd port to the device with ssh -L 2947:localhost:2947 root@


  • I use a PaperMate PhD Multi pen, which has a pen, pencil, and stylus. It also happens to be the same kind of pen I've used for years anyway -- I just switched the multi version when I got the FreeRunner.
  • This Cowon stylus looks interesting, and the idea of having something attached to the device is appealing.
  • My X200T Thinkpad comes with a wacom pen, which also works very well as a FreeRunner stylus :).
  • The illume keyboard is quite usable, especially rotated horizontally. To get it to use the full available space after rotating the screen, go to settings, turn the keyboard off and back on again. Or, just check the "Restore after login" box in the screen rotation settings. Then you don't have to toggle the keyboard.
  • I change the the "small" dictionary (by clicking the upper left corner of the keyboard) -- I find the full dictionary to be too slow.
  • I've used this layout. It can be extracted on Debian with ar x, and then tar on the data.tar.gz file. See the screenshot from Shashank Bharadwaj who designed it. I've also made it available in my git repo.
  • cellwriter won't work easily with illume, because it shows up as a separate window rather than what the illume keyboard does.

I'm testing one of these credit-card sized bluetooth keyboards. It pairs and types and the form factor is excellent.

  • The FrogPad works well, but if frameworkd is in charge of the screen blanking, the screen will go blank while you're typing. I solved this by commenting out the "Idleness Brightness Handling" section of /etc/freesmartphone/oevents/rules.yaml file. Now screen blanking is just handled by X, and so it stays on while I'm typing.


I'm working on getting acceptable audio quality. I can get audio through my wired headset by manually loading the state file after the call connects, but it's far too soft by default and the microphone on the headset does not work.

Echo issue

I am currently not experiencing any complaints about echo.

Things to try if the problem appears:

For sound out of the handset, the Improving_user_experience page says to set control.4 Speaker Playback Volume to 95.


I previously had complaints about buzzing sometimes, but often it is okay too.

Now, I've had the hardware SOP fix for this applied, and it's working great. No more complaints about buzz.


This is my project to create an Emacs interface to the freesmartphone API. It's what I will be using for the time being to make and receive calls, and send and receive SMS.

The home page with information about getting the code is




Zhone requires python bindings, from ? Installing this requires python-setuptools. The default path should also be changed because it tries to install things to /root/usr...

Build deps

These are packages I needed to install in order to build Zhone. apt-get build-dep zhone didn't work -- no source package available.

  • cython


I'm using epdfview to read PDFs. I had problems with it crashing on larger PDFs at first, but I haven't seen that in a while. I think it's probably because I added a swapfile. xpdf and evince are also options.

Google's mobile book search works great.

fbreader is also good, even just the version installed from Debian. It supports ePub books.


I use ntpd and sometimes ntpdate-debian -u to sync the time, then hwclock --adjust immediately to fix the hardware clock. I also have ntpdate-debian -u run as an ip-up script on ppp/GPRS connect. I have otimed disabled for now, because I'm trying to figure out why the device is losing time while it's on. It has the correct time on boot, but then will lose minutes rather rapidly -- 7 or 8 per hour. This happens even when ntpd is running and the device is connected to the network via usb.

I haven't found a good alarm clock app yet.

Time is displayed in small analog clock form in the e17 toolbar. It's not ideal but it's okay for now.

Web browsing

Iceweasel configuration
  • Set my home page to, which will have frequently used bookmarks, but I have the start page set to blank.
  • Remove the search from the navigation toolbar. (Right-click, customize toolbar, drag the search box to the dialog.)
  • Disable autocompletion in the address bar -- makes typing impossible. I had to do this (and other iceweasel configuration) over X forwarded ssh, because iceweasel config windows keep coming up larger than the screen.
  • Probably need to install Adblock and add a filter to block all of these javascript form field suggesting scripts (like or -- they really slow things down and make typing frustrating.

I tried the delicious extension but it seems to make things too slow. I might try again. The reason I'm using iceweasel instead of midori is because I'm hoping that one of the mouse gesture extensions will be useful.

w3m in Emacs

I'm experimenting with using this more. With an Emacs X frame open, I can display the images as well and it seems like a reasonable way to look at most pages.

Other options

Going to try chromium-browser next.

Fennec doesn't build easily yet, though some people apparently have it working.

NetSurf was too buggy for me -- very strange things were happening in input fields. Plus, it doesn't support JavaScript, and seemed a little sluggish.


Boot time with u-boot was about 3 minutes. Switching to Qi has brought it down to about 2. I'm currently starting mpd and mpdscribble at boot, which I will stop by writing a shell script that starts them if they are not already started when I actually open the music player.

I'm also using exim4, which was adding almost a full minute to the boot time. Doing:

 dpkg-reconfigure exim4-config

And answering "Yes" to the "Keep number of DNS-queries minimal" question helped reduce this.

I used to use a swap file, to see if that improves stability. I made that with:

 dd if=/dev/zero of=swapfile bs=1024 count=524288
 mkswap swapfile

Then added to fstab:

 /swapfile none          swap    sw                                      0 0

And to start using it immediately:

 swapon -a

Now I use a swap partition instead, created through the script.

/sys/class/i2c-adapter/i2c-0/0-0073/pcf50633-mbc/ is where the chg_curlim file lives.


I edited /usr/local/etc/enlightenment/sysactions.conf to use the FSO Usage.Suspend dbus method instead of acpi to handle suspend, and commented out the suspend event in the rules.yaml frameworkd file. This way I can use the e17 menu to handle things. If you just use apm, then gsm events will wake the phone back up randomly.

Resume wasn't working for me -- when I tried to resume, I got a blank gray screen. I could still do things over ssh, but there was no display. I've fixed that by adding this script to /etc/apm/resume.d.

Important configuration files

My /etc/modules (for 2.6.24 -- this is not needed with the andy-tracking kernel):


My .Xresources

My .xsession:

 export # enables right-click by holding down stylus in GTK+ apps

My .gtkrc-2.0:

 gtk-font-name = "Sans 6"
 style "scroll"
     GtkScrollbar::slider-width        = 25
 class "*" style "scroll"

(The small font and the large scroll bar are to help cope with dpi issues that xglamo has right now. For portrait orientation I use "Sans 14" for the font.)

FIXME: Need to add sources.list.


  • Mailutils segfault
  • Iceweasel windows for configuration are opening to a size larger than my screen, which makes them impossible to use.
  • wifi-radar randomly deletes the contents of its configuration file and then won't start when the file is empty. (Debian bug filed.)
  • Font dpi issue

Replicating my install

(I don't suggest you follow these instructions yet unless you are talking to me, they are in progress.)

  1. Install Qi
  2. Boot into SHR or whatever
  3. wget install script and make it executable
  4. QI=true QI_VERBOSE_BOOT=true HOSTNAME=claude ./ all
  5. Reboot
  6. set root password
  7. apt-get install screen apt-utils subversion nano sudo distcc cvs ntp xauth
  8. screen
  9. cd /boot
  10. wget kernel
  11. rm uImage.bin
  12. ln -s NEW_KERNEL uImage.bin
  13. wget modules
  14. untar modules
  15. reboot
  16. dpkg-reconfigure tzdata
  17. fix resolv.conf
  18. edit sources.list -- remove experimental and change mirror to local (maybe this should be done in the install script option)
  19. Get my patched version of raster's e install script: wget
  20. chmod +x
  21. export CC="distcc arm-linux-gnueabi-gcc"
  22. export DISTCC_HOSTS="whatever"
  23. ./
  24. dpkg-reconfigure locales
  25. Put .xsession file from above in place over default one (copy the default out of the way if you want first)
  26. copy file to /etc/xdg/menus/
  27. copy Default.kbd from my git repo to /usr/local/lib/enlightenment/modules/illume/keyboards/ (copy the current one out of the way if you want)
  28. copy .Xresources from my git repo to /root/.Xresources
  29. copy .gtkrc-2.0 file from git repo to /root/.gtkrc-2.0
  30. /etc/init.d/nodm restart
  31. make a swap file
  32. install some software: apt-get install tangogps iceweasel claws-mail wifi-radar ttf-bitstream-vera
  33. remove some software: apt-get remove --purge matchbox-keyboard openmoko-panel-plugin
  34. bluetooth?
  35. Modify /usr/local/etc/enlightenment/sysactions.conf to use suspend script instead of acpi.
  36. Put script to fix resume in /etc/apm/resume.d
  37. Comment out the suspend event in the rules.yaml file for frameworkd.
  38. Comment out the handling of the power/execute button in rules.yaml.
  39. Configure screen lock
  40. Set power button to call e17 shutdown menu.
  41. build emacs
  42. install fso-el
  43. Upgrade GSM firmware


See /SHR.


This wiki






Personal tools