USB host mode is a funny thing on the FreeRunner; it's one of the killer features of this phone, yet the means and ways of getting it working are never really as clear as they could be. The Openmoko wiki, for example, used to say that you needed new kernel modules to get host mode to work; when I asked about these modules I was told that they had been included for some time, and all you actually needed was to run a quick command or two. These I added to the wiki straight away...
The command line is a bit of a pain, however, especially if you want to enable USB host mode to use a keyboard. Keyboards are fun; and I'd previously said that we'd come up with a button to swap between modes. This is easily doable:
[EDIT]: By popular request I've packaged this all into an ipk file: Here
From the (now much improved) USB host Wiki page we get a helpful script that determines the current state of your USB mode and switches to the other:
grep -q 'host' /sys/devices/platform/s3c2410-ohci/usb_mode
if [ $? -eq 0 ]
echo "0" > /sys/devices/platform/neo1973-pm-host.0/hostmode
echo "device" > /sys/devices/platform/s3c2410-ohci/usb_mode
echo USB-Port is in device-mode now.
ifconfig usb0 down
echo "host" > /sys/devices/platform/s3c2410-ohci/usb_mode
echo "1" > /sys/devices/platform/neo1973-pm-host.0/hostmode
echo USB-Port is in host-mode now.
Create a file in an appropriate place named usb.sh and containing the above. This could be your home folder, or along with the rest of your applications. Chmod +x it.
Find a suitable icon for your button; I Googled up this one, although anything up to 64x64 pixels will do. Remember that png supports transparency and that the background on the FreeRunner is, by default, black. So pick something you'll be able to see! Save the file to /usr/share/pixmaps/usb.png
Create the file /usr/share/applications/usb.desktop
Comment=Switch between USB modes
Once that file is created and saved, you'll have a new icon menu on your main screen.