View source for User:JohnSullivan

From Openmoko

Jump to: navigation, search

You do not have permission to edit this page, for the following reasons:

  • The action you have requested is limited to users in the group: Administrators.
  • You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.

You can view and copy the source of this page:

Return to User:JohnSullivan.

Personal tools

State of the 'Runner

I'm using a FreeRunner, with Qt-Extended on the flash but mainly using Debian on the microSD. Currently I'm experimenting with SHR as well.

I'm in Boston.

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, and #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:



  • GTA02
  • Altec Lansing 2.5mm headphones (which have a mic too, though I don't know if it works)
  • 8GB microSD card


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


I'm experimenting with the andy-tracking kernel, testing d1a9cf85c8608601 (2.6.29) and f2d78193eae5dccd (2.6.28).


I'm currently using it with a T-Mobile prepaid SIM. I'm using e17 and Illume for the window manager environment.


  • 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.
  • I tried gpodder as a podcasting application, and it works okay but for some reason it doesn't like the URL for the main podcast I want to listen to, which is Wait Wait Don't Tell Me. Do I really want a dedicated podcast app anyway?


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.


  • Tethered via bluetooth to my Nokia E61, which gets it a T-mobile EDGE connection.
  • wifi-radar for 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

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

 mdbus -s org.freesmartphone.ousaged /org/freesmartphone/Usage org.freesmartphone.Usage.SetResourcePolicy WiFi enabled

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.


I'm using bluez 4.31 compiled from source, and bluetooth-gnome 1.8 also compiled from source. I use obexpushd for receiving bluetooth files.


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.


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".




  • 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.
  • 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'm now using 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.



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...

I'm suffering from the infamous buzz and so far am not able to use the device as my regular phone.

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.


Install ntp to have accurate time. Otherwise, the clock drifts way off.

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.


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'm currently experimenting with using 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


I edited /usr/local/etc/enlightenment/sysactions.conf to use apm 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.

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:

 UXTerm*font: -bitstream-terminal-bold-r-normal--18-140-100-100-c-110-iso8859-1
 UXTerm*background: black
 UXTerm*foreground: cyan
 XTerm*font: -bitstream-terminal-bold-r-normal--18-140-100-100-c-110-iso8859-1
 XTerm*background: black
 XTerm*foreground: cyan

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
  • The screen lock defined in the illume theme file isn't being used. Instead when I lock the screen I get the default e17 password lock.

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.


Well, the first test did not go well. It looks nice and feels snappy, but it froze up completely within a few minutes of use. I had to remove the battery and reboot. Also, Midori did not show any address bar, and typing C-l did not help. So I was unable to actually enter a web address to browse to.

The freezing has stopped, but there are other issues.

The dialer crashes after pressing Call, with a resource not available error. Trac ticket explains that this is because SHR doesn't work / isn't tested with the andy-tracking kernel.


This wiki