Skip to content

Debugging gsmd failures on OpenMoko

If you’re having problems making phone calls on OpenMoko 2007.2, and wish to see what gsmd is doing, then look in /tmp/gsm.log for the gory details …
Mine fails to register automatically, as documented in – this seems to be a problem where libmokogsmd2 is not handling a GSMD_NETREG_UNREG_BUSY event correctly.

Update: this problem with UNREG_BUSY has now been fixed with the patch that I submitted.

Stopping the OpenMoko startup sound

OpenMoko 2007.2 makes a very loud startup sound.  To mute it, do the following:

In /etc/pulse/session, replace:

 load-sample startup /usr/share/openmoko/sounds/startup_openmoko.wav


 load-sample startup /usr/share/openmoko/sounds/touchscreen_click.wav

(or any other subdued wav file you wish to upload onto the device).

Update: The OpenMoko team has sensibly replaced the load startup sound with a much more unintrusive sound.

Connecting a Treo650 to an OpenEmbedded-based firmware distribution

The following should work for an NSLU2 running SlugOS or Angstrom, or a device running OpenMoko.

  • Install the required kernel modules for bluetooth
    • ipkg install kernel-module-hci-usb kernel-module-l2cap kernel-module-rfcomm
    • depmod -a
    • ipkg install bluez-utils
  • Edit /etc/default/bluetooth to enable hcid and dund.
  • Change the pin and host settings in /etc/bluetooth/hcid.conf, and make sure that the class is 0x3e0100 (not the default value, which is for a PDA like a Zaurus, not a “Computer” device like the Neo which can accept and route tcp/ip network connections coming in over dund or pand on the bluetooth network)
  • Reboot and test with ‘hciconfig’ with a bluetooth dongle plugged in.
  • Install the required kernel modules for ppp
    • ipkg install kernel-module-ppp-async kernel-module-bsd-comp kernel-module-ppp-deflate
    • depmod -a
    • ipkg install ppp
  • Edit /etc/ppp/options as follows:

    ms-dns 192.168.1.ZZ

    (edit the last two lines to suit your network topology, the first IP address
    is your gateway device, the second IP address will be assigned to the client,
    and the third IP address is your DNS server)

Using vncserver on the Nokia N800

There is a VNC Server available for the Nokia N800.

Some key bindings that I have found:

  • F3
    • Selects the Applications icon in the task navigator
  • F4
    • Opens the menu for the current application
  • F6
    • Toggles full screen mode
  • F7
    • Same as the + button
  • F8
    • Same as the – button
  • F9
    • Selects the application switcher (the >> button in the left hand bottom corner)

Adding DCHP static mapping support to the FSG-3

The Freecom FSG-3 firmware user interface does not have the ability to set static IP addresses for hosts via DHCP. Luckily, the underlying dnsmasq program does this (and lots more) easily, and even though dnsmasq is in /usr/local/sbin for some reason on the FSG-3, it still reads the default configuration file at /etc/dnsmasq.conf (which Freecom does not use, so the file does not exist by default, and therefore does not get overwritten by the default firmware).

To set static IP addresses for your hosts, just add lines like the following to /etc/dnsmasq.conf:


Adding dynamic DNS support to the FSG-3

ez-ipupdate already supports the zoneedit service, so all that is required is to add it to the dyndns_show.html web page and ddns init script.

/var/www/admin/content_en/dyndns_show.html changes:

<select name=”ddns_service” style=”width:200px”>
<option value=zoneedit_com></option>
<option value=dyndns_org></option>
<option value=dtdns_com></option>
<option value=noip_com></option>

/etc/init.d/ddns changes:

if [ “$DDNS” = “zoneedit_com” ]; then
/bin/ez-ipupdate -i $EXIF -S zoneedit -u $USER:$PASSWD -h “$HOST” -d -P 300
exit 0

Maemo Links

I’ll use this blog entry to record various Maemo-related links that I find.

Setting up my Nokia N800

I’m going to use this blog entry to capture everything I do to my new Nokia N800 when setting it up. Hopefully this will serve as a resource to other N800 users, but will also serve as a record for my own use in case I need to reinstall everything at a future date.

  • Download the latest firmware (latest at time of writing is OS 2008 edition v. 2.2007.51-3).
  • Flash it using the Nokia Internet Tablet Software Update Wizard.
  • Set up an internet connection.
  • (Optional) Enable Red Pill Mode (New Application catalogue, Web address: matrix, Cancel).
  • Add the Maemo Repositories to the Application Manager
  • Update all packages
  • Install openssh-server (so you can do the rest of this more comfortably from a remote ssh client window)
  • Install some necessary applications that are not in the Maemo repositories:
    • becomeroot (you only need this if you aren’t able to ssh in – use “sudo gainroot” in an xterm instead)
  • Change the host name in /etc/hosts and /etc/hostname
  • Install a suitable authorized_keys file for password-less ssh login
  • Reboot and log back in as root
  • Reformat the internal SD card (/dev/mmcblk0, /media/mmc2):
  • # apt-get install e2fsprogs
    # umount /media/mmc1
    # umount /media/mmc2
    # sfdisk -uM /dev/mmcblk0
    /dev/mmcblk0p1 :0,6000,0C
    /dev/mmcblk0p2 :6000,,
    /dev/mmcblk0p3 :,,
    /dev/mmcblk0p4 :,,
    # mkdosfs /dev/mmcblk0p1
    # mke2fs -j /dev/mmcblk0p2
    # shutdown -r now

  • Note that to mount the new ext3 filesystem, you need to:
  • # cd /mnt/initfs/lib/modules/current/
    # insmod mbcache.ko jbd.ko ext3.ko

  • Setup booting from the internal SD card
  • # cd
    # curl -o initfs_flasher.tgz
    # tar zxvf initfs_flasher.tgz
    # cd initfs_flasher
    # cp bootmenu.conf.n800.example bootmenu.conf
    # vi bootmenu.conf
    # ./initfs_flash

  • Add the timezone for Adelaide and set it as my Home city.
  • Modify the mmc mount script (/usr/sbin/ to ignore a mounted root directory
    • grep “$MP ” /proc/mounts | grep -v ” / ” &amp;gt; /dev/null

Adding a new timezone to osso-clock

The set of cities included in the Nokia N800 does not include any city in my home timezone (GMT+9:30, Australian Central Standard Time).

Luckily, I’ve worked out how to add one (the following is an example for my home city of Adelaide):

  • Edit /usr/share/osso-clock/wdb-parsed.txt and add the following line:
    • Adelaide|AU|Australia|Australia/Adelaide|1280|650|en_AU
      • (The 1280 and 650 numbers are pixel coordinates on the osso-clock map of the world)

You should be able to use the same method to add any other city that already exists in /usr/share/zoneinfo.

Changing an Internet radio channel name on the Nokia N800

If you add a new Internet radio channel to your media player library, and it gets some weird name that you don’t like, you can easily change it by editing /home/user/.mediaplayer-engine/radiochannels.m3u