Enrico Zini: Unpacking the new FreeRunner
Unpacking the new FreeRunner
I got myself a FreeRunner. Here
are some notes from the first few days:
Available operating systems
The FreeRunner comes with the Om 2007.2
distribution: it works for basic phone things, and it has an opkg
package manager that you can use to install all sort of extra
software. Only issue: the SMS application was rather unstable with
my SIM card.
I then tried Om
2008.8, which is a major new redesign, partly based on Qtopia. It's definitely
more advanced on how it looks, with smooth animations all around,
but I did not manage to get the GSM part to work, because I did not
manage to get it to ask for a PIN.
I then tried plain Qtopia and I got what
looks and feels like a properly working mobile phone. The only
issue that it has is that I did not manage to make it suspend, so
battery life is much shorter than it could be. Apparently, this
should improve as
kernel 2.6.26 reaches the phone. I kept Qtopia installed in the
phone flash as a "stable" phone system.
And finally, Debian. Debian is based
on the freesmartphone.org software
stack, which is an attempt to create a UI agnostic DBUS frontend to
the hardware that supports multiple applications running on top of
it. It is a young project, but it can already drive a mobile phone
in a useful way. It has a demo interface
that is basically a showcase of what is implemented in the DBUS
frontend, but does most of the basic things you need from a mobile
phone, including taking and making phone calls. And then it has
Debian behind, all of it. I need to buy a bigger microsd card.
Tips and tricks
Flashing
things
apt-get installdfu-util- Start the Freerunner bios/bootloader, by holding down Power and then pressing AUX (standard bootloader), or by holding down AUX and then pressing Power (factory, unbrickable, read only fail safe bootloader).
dfu-util -lshows you a list of devices it can access. If you see more than once, you need to specify in alldfu-utilcommands which one you want, using-d USBID. In my case, I have to always usedfu-util -d 0x1d50:0x5119- To flash the kernel:
dfu-util -a kernel -R -D /path/to/uImage - To flash the root file system:
dfu-util -a rootfs -R -D rootfs_filename.jffs2 - To flash the bootloader:
dfu-util -a u-boot -R -D uboot_filename.bin - To flash the u-boot configuration:
dfu-util -a u-boot_env -D env.new
-U instead of -D.
Networking via USB
All of the distributions I tried, by default configure the USB
as a gadget with
ethernet over usb. You can form a lan with it using the
cdc_ether module, and you will find your phone
preconfigured as 192.168.0.202 expecting to find a
gateway at 192.168.0.200.
I made myself this script to start and stop networking with the
phone:
#!/bin/sh
case "$1" in
start)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.200/29
ifconfig usb0 192.168.0.200 netmask 255.255.255.248
/etc/init.d/dnsmasq start
echo 1 > /proc/sys/net/ipv4/ip_forward
;;
stop)
echo 0 > /proc/sys/net/ipv4/ip_forward
/etc/init.d/dnsmasq stop
iptables -t nat -F POSTROUTING
ifconfig usb0 down
;;
esac
Besides doing masquerading, it also brings up dnsmasq so that
the phone can always find a DNS together with the router.
Another useful trick is to configure the phone to share the
approx cache with the laptop:
deb http://192.168.0.200:9999/debian unstable main
deb http://192.168.0.200:9999/debian experimental main
deb http://pkg-fso.alioth.debian.org/debian unstable main
So yes, my laptop can now be turned into a phone charger with
networking, DNS and apt cache services. I shall look into hooking
that script into dbus to have it run automatically when the phone
is plugged and unplugged.
Changing the ringtone in Debian
In case you don't like the default ringtone, this is how to
change it:
vi /usr/share/python-support/fso-frameworkd/framework/subsystems/oeventd/receiver.py- look for
def _play( self ): - change the codec in
decoder = gst.element_factory_make, if needed. The list of available plugins is on the gstreamer website. - change the path in
filesrc.set_property /etc/init.d/fso-frameworkd restartand maybe/etc/init.d/zhone-session restart
/usr/share/python-support/fso-frameworkd.
Configuring the bootloader
You can connect to the u-boot bootloader via a serial
terminal on /dev/ttyACM0. Type help and
you will find that it can do a lot of things. The OpenMoko wiki has
pages on the
bootloader itself, its
commands and the
environment.
The environment is the configuration of the bootloader, similar
somehow to /boot/grub/menu.lst. Unlike grub, you can
edit the environment from within the bootloader and then save it
using the saveenv command.
What I did:
- A boot entry for Debian, with the kernel on an ext2 partition
instead of fat:
setenv menu_3 Boot from microSD (FAT+ext2): setenv bootargs \$ bootargs_base rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \$ mtdparts ro\; mmcinit\; fatload mmc 1 0x32000000 \$ sd_image_name \; bootm 0x32000000 - Stay in the bootloader until a choice has been made:
setenv bootdelay -1 - Don't power down the bootloader when idle:
setenv boot_menu_timeout 99999 - Always show the menu at boot:
setenv stop_in_menu yes saveenv
~/.ssh/config):
Host debian
HostName 192.168.0.202
User root
HostKeyAlias debian
Host qtopia
HostName 192.168.0.202
User root
HostKeyAlias qtopia
According to a recent article, 6 Common Website Mistakes That Cost Money are:
I’ve had little time in the four years I’ve lived in Roslindale to get involved in community volunteer efforts. My wife Rachele, however, has devoted several years to efforts such as the Roslindale Community Center, 
Some interesting two days have just passed. I took the airplane from

When you have a server on the Internet, you get lots of "brute force"
attacks on the SSH daemon, trying plausible logins with a variety of
passwords. Even with good passwords, these attacks might eventually
succeed (and they're annoying even when they don't), so you want to
thwart them.
One way is to use
Since 2005, the talks at Debconf have been recorded on video, to be
Somehow (thankfully) I've managed to avoid much to do with backups in my
career as a sysadmin. It's always been someone else's responsibility, that's
been fine by me.
For some reason, I've been more paranoid lately, and with all of the crazy
shit I've been doing to daedalus, I wanted to have a backup, just
in case. Maybe it's old age.
So a while ago, I went and had a stab at setting up
When I gave a
Thank you, Ted Lemon and Paul Vixie for the ISC DHCP server and
client! My days would be so boring without them. I revel in your
wisdom, experience, and sheer genius when I get behind some of the
design decisions you made when writing those pieces of
software.
My current favourite is the hook integration into