<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.openmoko.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.openmoko.org/api.php?action=feedcontributions&amp;user=Jidanni&amp;feedformat=atom</id>
		<title>Openmoko - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.openmoko.org/api.php?action=feedcontributions&amp;user=Jidanni&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Special:Contributions/Jidanni"/>
		<updated>2013-05-24T05:30:39Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.6</generator>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Debian</id>
		<title>Debian</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Debian"/>
				<updated>2008-12-28T01:53:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: swap links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Debian}}&lt;br /&gt;
&lt;br /&gt;
Debian is used on many other embedded devices. Using Debian on the FreeRunner gives access to the Huge army of software packaged in the Debian repositories, already compiled for the arm processors. Moreover, one can build one's own things without having to learn the OpenEmbedded way. For example compiling natively is a snap with Debian, just apt-get gcc&amp;amp;libc-dev.&lt;br /&gt;
&lt;br /&gt;
In the early days, one had to install [[Manual Debian|Debian manually]]. Now there is an installer script. The &amp;quot;official&amp;quot; instructions on how to install [http://wiki.debian.org/DebianOnFreeRunner Debian on FreeRunner] or [http://wiki.debian.org/DebianOnNeo1973 Debian on Neo1973] are hosted on Debian's wiki. This page is about post-install configuration and FreeRunner specific tips. For support or bug reporting please read the section [[Debian#Support|Support]].&lt;br /&gt;
&lt;br /&gt;
= Configuring a base system =&lt;br /&gt;
== Password ==&lt;br /&gt;
&lt;br /&gt;
The default root password is blank. You should change that as soon as possible&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspend ==&lt;br /&gt;
&lt;br /&gt;
Press the power button or run 'apm -s' to suspend.&lt;br /&gt;
To change the time for the display to darken/turn off edit in&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/share/python-support/fso-frameworkd/framework/subsystems/odeviced/idlenotifier.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the section&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
        self.timeouts = { \&lt;br /&gt;
                        &amp;quot;idle&amp;quot;: 10,&lt;br /&gt;
                        &amp;quot;idle_dim&amp;quot;: 20,&lt;br /&gt;
                        &amp;quot;idle_prelock&amp;quot;: 12,&lt;br /&gt;
                        &amp;quot;lock&amp;quot;: 2,&lt;br /&gt;
                        &amp;quot;suspend&amp;quot;: 20, \&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
idle_dim is the time in seconds to dim the display (which adds up to the idle time), idle_prelock is the time to turn it off. After that execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mv /var/lib/python-support/python2.5/framework/subsystems/odeviced/idlenotifier.pyc /var/lib/python-support/python2.5/framework/subsystems/odeviced/idlenotifier.pyc.old&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can turn off Suspend completely by commenting out the entire section &amp;quot;Idleness Brightness Handling&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/freesmartphone/oevents/rules.yaml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Time ==&lt;br /&gt;
&lt;br /&gt;
The default time zone is UTC.  Reconfigure it by running&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To set the clock manually do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# date -s 00:33&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you have a network connection, do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt-get install ntpdate&lt;br /&gt;
# ntpdate-debian&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you want to synchronize the internal clock with GPS time you can use a script like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
# Set the gps time&lt;br /&gt;
# Be sure your GPS is active before to launch this script&lt;br /&gt;
&lt;br /&gt;
import dbus&lt;br /&gt;
import subprocess&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
proxy = dbus.SystemBus().get_object('org.freesmartphone.frameworkd', '/org/freedesktop/Gypsy') # bus name, object name&lt;br /&gt;
interface = dbus.Interface(proxy, 'org.freedesktop.Gypsy.Time');&lt;br /&gt;
subprocess.call(['date',time.strftime( '%m%d%H%M%Y.%S', time.localtime(interface.GetTime()))])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wifi ==&lt;br /&gt;
=== Using GUI ===&lt;br /&gt;
&lt;br /&gt;
If you don't want to mess up with configuration files and is looking for an easy gui for wireless configuration, then wifi-radar or wicd is what you are looking for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install wifi-radar&lt;br /&gt;
wifi-radar&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install wicd&lt;br /&gt;
wicd-client -n&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are looking for more, read on...&lt;br /&gt;
&lt;br /&gt;
=== Using /etc/network/interfaces (simple mode) ===&lt;br /&gt;
&lt;br /&gt;
Make sure the following packages are installed:&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install wireless-tools wpasupplicant dhcp3-client&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming your wireless router uses WPA security and DHCP,&lt;br /&gt;
edit &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; to include a section like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
wpa-driver wext&lt;br /&gt;
wpa-ssid &amp;quot;MyWirelessName&amp;quot;&lt;br /&gt;
wpa-psk &amp;quot;MyWirelessPassword&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where, of course, you're using the name of your wireless network and it's password&lt;br /&gt;
instead of ''MyWirelessName'' and ''MyWirelessPassword''.&lt;br /&gt;
&lt;br /&gt;
You can test by running&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ifup eth0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can determine your IP address by running&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ifconfig eth0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Issues:&lt;br /&gt;
* only works if in presence of wireless network on boot, or when manually running &amp;lt;code&amp;gt;ifup eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
* booting away from wireless network is slower because waits for DHCP to time out&lt;br /&gt;
* does not reestablish connection when leaving wireless area and then returning&lt;br /&gt;
* does not support multiple wireless networks or open hotspots that you may travel between&lt;br /&gt;
&lt;br /&gt;
Once wpa_supplicant has begun managing your wifi interface, you should type &amp;quot;wpa_action eth0 stop&amp;quot; instead of &amp;quot;ifdown eth0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Using wpa-supplicant (roaming mode)===&lt;br /&gt;
&lt;br /&gt;
To configure WPA to roam between wireless networks, you will need to create a new configuration file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/wpa_supplicant/wpa_supplicant.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a template for this file (and more documentation) is available in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/share/doc/wpasupplicant/examples/wpa-roam.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You'll need to add networks to this file.  Examples:&lt;br /&gt;
&lt;br /&gt;
* WEP:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network={&lt;br /&gt;
       ssid=&amp;quot;MySSID&amp;quot;&lt;br /&gt;
       key_mgmt=NONE&lt;br /&gt;
       wep_key0=&amp;quot;abcdefghijklm&amp;quot;&lt;br /&gt;
#      wep_key0=6162636465  # &amp;lt;- no quotes, so hex number&lt;br /&gt;
       wep_tx_keyidx=0&lt;br /&gt;
       id_str=&amp;quot;MySSID&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* No key:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network={&lt;br /&gt;
       ssid=&amp;quot;SomeNetwork&amp;quot;&lt;br /&gt;
       key_mgmt=NONE&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* WPA:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       network={&lt;br /&gt;
       ssid=&amp;quot;Example WPA Network&amp;quot;&lt;br /&gt;
       psk=&amp;quot;mysecretpassphrase&amp;quot;&lt;br /&gt;
       id_str=&amp;quot;home&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you'll need to edit /etc/network/interfaces.  This lets you configure your wireless networks to use dhcp, or other appropriate TCP/IP settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet manual&lt;br /&gt;
wpa-driver wext&lt;br /&gt;
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
# MySSID comes from an id_str above.&lt;br /&gt;
iface MySSID inet dhcp&lt;br /&gt;
&lt;br /&gt;
# default is what's used if there is no id_str setting.&lt;br /&gt;
# so the 'SomeNetwork' network will use DHCP.&lt;br /&gt;
iface default inet dhcp&lt;br /&gt;
&lt;br /&gt;
iface home inet static&lt;br /&gt;
# static interface settings, or whatever...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, if you want attempts to access the internet to default to eth0 (and not usb0), then comment out this line under usb0 adapter configuration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gateway 192.168.0.200&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Roaming from network to network is not automatic.  Instead, you need to manually run &amp;quot;wpa_action eth0 stop; ifup eth0&amp;quot; to switch networks&lt;br /&gt;
&lt;br /&gt;
For some reason, I had to reboot for the id_str settings to take effect.  However, you should now be able to use &amp;quot;ifup eth0&amp;quot; to associate with the access point and &amp;quot;wpa_action eth0 stop&amp;quot; to down the wifi adapter.&lt;br /&gt;
&lt;br /&gt;
{{todo|Which of the issues that single network configurations suffer from are addressed by WPA roaming mode?  Would ifplugd / guessnet help, or just make things more complicated?}}&lt;br /&gt;
&lt;br /&gt;
=== Further reading ===&lt;br /&gt;
&lt;br /&gt;
To use all the possibilities of &amp;lt;code&amp;gt;wpasupplicant&amp;lt;/code&amp;gt; like roaming and automatic connection to different networks,&lt;br /&gt;
you should read &amp;lt;code&amp;gt;/usr/share/doc/wpasupplicant/README.Debian.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Bluetooth]] ==&lt;br /&gt;
&lt;br /&gt;
The FreeRunner uses the standard Linux bluez stack, installed with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt-get install bluez-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There is also a module missing from /etc/modules, which is critical to getting your device recognized. (kudos to johnsu01 on irc.freenode.net:#openmoko-debian for the find)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# echo ohci-hcd &amp;gt;&amp;gt; /etc/modules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first time you try this, you can also&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# modprobe ohci-hcd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The only atypical part of using bluetooth on the FreeRunner is turning it on, which can be done with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# mdbus -s org.freesmartphone.frameworkd  /org/freesmartphone/Device/PowerControl/Bluetooth SetPower 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the device should be visible using&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# hcitool dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{todo|Then what to do next?}}&lt;br /&gt;
&lt;br /&gt;
== Packages manager ==&lt;br /&gt;
You can install &amp;lt;tt&amp;gt;[http://packages.debian.org/search?keywords=dselect dselect]&amp;lt;/tt&amp;gt;(~2.2MB) or &amp;lt;tt&amp;gt;[http://packages.debian.org/search?keywords=aptitude aptitude]&amp;lt;/tt&amp;gt;(~12MB) to visually inspect the available debian packages using the desktop's console.&amp;lt;br&amp;gt;&lt;br /&gt;
Also the gtk-based package-manager &amp;lt;tt&amp;gt;[http://packages.debian.org/search?keywords=synaptic synaptic]&amp;lt;/tt&amp;gt;(~15.7MB) is working &lt;br /&gt;
after installing &amp;lt;tt&amp;gt;[http://packages.debian.org/search?keywords=lsb-release lsb-release]&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;[http://packages.debian.org/search?keywords=hicolor-icon-theme hicolor-icon-theme]&amp;lt;/tt&amp;gt;, but it is very slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Finally, on constrained systems, just issue the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;grep -e Package: -e Description /var/lib/dpkg/available|more&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Xglamo acceleration ==&lt;br /&gt;
By default debian uses fbdev, but we can use Xglamo to get better performance:&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install xserver-xglamo&amp;lt;/pre&amp;gt;&lt;br /&gt;
after that edit /etc/X11/xorg.conf and change the line&lt;br /&gt;
&amp;lt;pre&amp;gt;Driver          &amp;quot;fbdev&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
to:&lt;br /&gt;
&amp;lt;pre&amp;gt;Driver          &amp;quot;Xglamo&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and if you want to run xserver as normal user:&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod u+s /usr/bin/Xglamo&amp;lt;/pre&amp;gt;&lt;br /&gt;
You may also want to force the X server to 96 dpi to have the same fonts as with fbdev. Add &amp;quot;-dpi 96&amp;quot; to the X_OPTIONS variable in '''/etc/init.d/nodm''':&amp;lt;pre&amp;gt;X_OPTIONS=&amp;quot;vt4 -nolisten tcp -dpi 96&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
with that you:&lt;br /&gt;
*can use xrandr&lt;br /&gt;
*don't have the pointer callibration bug with the rotated mode&lt;br /&gt;
*have better performances&lt;br /&gt;
&lt;br /&gt;
Using xglamo you must remember that:&lt;br /&gt;
*You can't use on xorg.conf the &amp;quot;Option Rotate&amp;quot; to rotate the screen&lt;br /&gt;
*You can't use the tslib patch to simulate right click&lt;br /&gt;
&lt;br /&gt;
== Running X as normal user ==&lt;br /&gt;
1. Create a new user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# useradd -m -G audio,dialout,floppy,video,staff username&lt;br /&gt;
# passwd username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Edit /etc/init.d/nodm and change USER=root to USER=username in it. Then to make sure changes are not lost on upgrade, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-divert --add /etc/init.d/nodm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will make new versions of /etc/init.d/nodm be written to /etc/init.d/nodm.distrib&lt;br /&gt;
&lt;br /&gt;
3. Edit &amp;lt;code&amp;gt;/etc/X11/Xwrapper.config&amp;lt;/code&amp;gt; and change &amp;lt;code&amp;gt;allowed_users=console&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;allowed_users=anybody&amp;lt;/code&amp;gt; (Or use &amp;lt;code&amp;gt;dpkg-reconfigure x11-common&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
4. Copy /root/.xsession into ~username/&lt;br /&gt;
&lt;br /&gt;
5. Note that, if you ran zhone as root first, you may have to change ownership or remove /tmp/zhone.log, as a normal user is not able to write to a file owned by root.&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
Make sure to put your user in the audio group (&amp;quot;adduser &amp;lt;username&amp;gt; audio&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
If there is no error but no sound, try these state files:&lt;br /&gt;
[[Talk:Manual_Debian#Sound]]&lt;br /&gt;
&lt;br /&gt;
== Kernel ==&lt;br /&gt;
&lt;br /&gt;
=== Debian way ===&lt;br /&gt;
When Debian is installed, the kernel is provided by the package &amp;lt;code&amp;gt;linux-image-2.6.24-openmoko-gta02&amp;lt;/code&amp;gt;. This package can be installed only in POSIX compliant filesystems, so it can not be used if your boot partition is a vfat one. Your kernel will be keep updated like the other packages of the system. You must to use this way if you are unsure and you need an (almost) stable system.&lt;br /&gt;
&lt;br /&gt;
=== Openmoko way ===&lt;br /&gt;
Otherwise you can choose to manual install an OM kernel. But only do this if you know what you are doing.&lt;br /&gt;
At the moment there is a little problem in the question which kernel to use. Hopefully it will be solved in the near future.&lt;br /&gt;
&lt;br /&gt;
The original openmoko kernel works fine inclusive suspending and supports different really nice usb gadgets (not all working at the moment). :)&amp;lt;br&amp;gt;&lt;br /&gt;
download stable: http://downloads.openmoko.org/releases/Om2008.9/&amp;lt;br&amp;gt;&lt;br /&gt;
download testing: http://downloads.openmoko.org/daily/&lt;br /&gt;
&lt;br /&gt;
The new FSO4 kernel works fine and suspend/resume is also possible. But this kernel still has no loadable usb gadget modules (10-Nov-2008). :/&amp;lt;br&amp;gt;&lt;br /&gt;
download testing: http://downloads.freesmartphone.org/fso-testing/images/&amp;lt;br&amp;gt;&lt;br /&gt;
download unstable: http://downloads.freesmartphone.org/fso-unstable/images/&lt;br /&gt;
# Download a recent'' kernel'' and ''rootfs'' (tar.gz) from one of the above mentioned sources. It's your decision if you want suspend or usb gadget modules at the moment.&lt;br /&gt;
# Backup your running kernel like &amp;lt;code&amp;gt;mv /boot/uImage.bin /boot/uImage.bin.old&amp;lt;/code&amp;gt;, then &amp;lt;br&amp;gt;copy the downloaded uImage file to the freerunner as &amp;lt;tt&amp;gt;/boot/uImage.bin&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Backup your actual modules like &amp;lt;code&amp;gt;mv /lib/modules/2.6.24 /lib/modules/2.6.24.old&amp;lt;/code&amp;gt;, then &amp;lt;br&amp;gt;extract the downloaded rootfs tar.gz to a temporary directory and copy &amp;lt;tt&amp;gt;lib/modules/2.6.24&amp;lt;/tt&amp;gt; from the temp directory to &amp;lt;tt&amp;gt;/lib/modules/2.6.24&amp;lt;/tt&amp;gt; on the FreeRunner.&lt;br /&gt;
# Do a &amp;lt;code&amp;gt;chown -R root.root /lib/modules/2.6.24&amp;lt;/code&amp;gt; because the owner from the tar.gz is something else (for me).&lt;br /&gt;
# Run a &amp;lt;code&amp;gt;depmod -a&amp;lt;/code&amp;gt;.&lt;br /&gt;
# This step is only needed for the OM kernel but it doesn't harm the FSO kernel setup. Add &amp;quot;g_ether&amp;quot; Module to /etc/modules like &amp;lt;code&amp;gt;echo g_ether &amp;gt;&amp;gt; /etc/modules&amp;lt;/code&amp;gt;. I read in an email, that the module &amp;quot;ohci-hcd&amp;quot; is also needed for some bluetooth functions, but i don't know this for real. I inserted it to my modules file to be on the safe side.&lt;br /&gt;
# Reboot and hope everything works as expected. :)&lt;br /&gt;
&lt;br /&gt;
= Desktop enviroments =&lt;br /&gt;
== Matchbox with fbpanel ==&lt;br /&gt;
It is not really a Desktop enviroment, but using fbpanel with Matchbox you can have a fast, lightweight, gtk2 desktop panel.&lt;br /&gt;
[[Image:Debian_fbpanel_zhone.png|right|thumb|300px|Debian with fbpanel, matchbox-window-manager and Zhone running]]&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Install fbpanel:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install fbpanel&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Customize the X startup process:&lt;br /&gt;
&amp;lt;pre&amp;gt;~/.xsession&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export GTK_MODULES=libgtkstylus.so&lt;br /&gt;
zhone &amp;amp;&lt;br /&gt;
xsetroot -solid black&lt;br /&gt;
matchbox-keyboard-toggle &amp;amp;&lt;br /&gt;
matchbox-window-manager -use_titlebar yes &amp;amp;&lt;br /&gt;
# -use_titlebar yes to minimize &amp;amp; toggle between apps&lt;br /&gt;
# fbpanel's taskbar does not work with matchbox-window-manager&lt;br /&gt;
#~/bin/auxlaunch &amp;amp;&lt;br /&gt;
while true;&lt;br /&gt;
do&lt;br /&gt;
fbpanel;&lt;br /&gt;
sleep 1;&lt;br /&gt;
done;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Read http://fbpanel.sourceforge.net/docs.html#config&lt;br /&gt;
&amp;lt;pre&amp;gt;~/.fbpanel/default&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.fbpanel&lt;br /&gt;
cp /etc/fbpanel/default ~/.fbpanel/default&lt;br /&gt;
nano ~/.fbpanel/default&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove section with 'taskbar' plugin - it's useless with matchbox-window-manager. You may add plugin 'cpu'&lt;br /&gt;
&amp;lt;pre&amp;gt;Plugin {&lt;br /&gt;
type = cpu&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also, plugin 'genmon' is useful:&lt;br /&gt;
&amp;lt;pre&amp;gt;Plugin {&lt;br /&gt;
type = genmon&lt;br /&gt;
config {&lt;br /&gt;
Command = echo -e $(grep &amp;quot;MemFree&amp;quot; /proc/meminfo | awk '{printf &amp;quot;%0.2f&amp;quot;, $2 / 1024}') &amp;quot;|&amp;quot;\&lt;br /&gt;
$(cat /proc/loadavg | awk '{print $3}') &amp;quot;|&amp;quot; $(apm | awk '{print $5}')&lt;br /&gt;
PollingTime = 60&lt;br /&gt;
TextSize = small&lt;br /&gt;
TextColor = darkblue&lt;br /&gt;
}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
After 'killall fbpanel' it will show: free mem in megabytes | loadavg | battery % left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Default theme is ugly. You can change it and / or make font's bigger:&lt;br /&gt;
&amp;lt;pre&amp;gt;~/.gtkrc-2.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-cache search gtk2-engines&lt;br /&gt;
sudo apt-get install gtk2-engines gtk-theme-switch&lt;br /&gt;
DISPLAY=:0 gtk-theme-switch2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now choose your theme, font and save it. To see changes do 'killall fbpanel'.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XFCE ==&lt;br /&gt;
The debian installation script installs by default the matchbox window manager. It doesn't feature a desktop environment. '''xfce''' is a small and lightweight desktop environment and so is quite fast for the FreeRunner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install xfce4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit your .xsession to launch xfce4 at X startup :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
xfce4-session&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit section [Failsafe Session] of /etc/xdg/xfce4-session/xfce4-session.rc (or ~/.config/xfce4-session/xfce4-session.rc) to handle the auto-started apps. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Failsafe Session]&lt;br /&gt;
Count=3&lt;br /&gt;
Client0_Command=xfce4-panel&lt;br /&gt;
Client0_PerScreen=False&lt;br /&gt;
Client1_Command=xfdesktop&lt;br /&gt;
Client1_PerScreen=False&lt;br /&gt;
Client2_Command=zhone&lt;br /&gt;
Client2_PerScreen=True&amp;lt;/pre&amp;gt;&lt;br /&gt;
Start XFCE !&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/nodm restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The desktop takes a while to start but once up was snappy as can be expected.&lt;br /&gt;
I've not yet looked at the reason for the seemingly too slow start for the desktop.&lt;br /&gt;
&lt;br /&gt;
zhone is available from the &amp;quot;Office&amp;quot; menu in xfce.&lt;br /&gt;
The matchbox keyboard is available in &amp;quot;Accessories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you want to display the screen on the long side (ie rotated, 4:3 aspect), add the following to the /etc/X11/xorg.conf in both the Device and InputDevice sections :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Option          &amp;quot;Rotate&amp;quot;                &amp;quot;CCW&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then (re)start xfce.&lt;br /&gt;
&lt;br /&gt;
If you want to be able to shutdown/restart the device, add the following line to ''/etc/sudoers'' (don't forget to replace ''username'' with your actual username):&lt;br /&gt;
&amp;lt;pre&amp;gt;username localhost = NOPASSWD: /usr/sbin/xfsm-shutdown-helper&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using matchbox-window-manager with XFCE ===&lt;br /&gt;
&lt;br /&gt;
XFCE's window manager is poorly configured for use with the FreeRunner.  Fortunately, matchbox's window manager is compatible with xfce.  To use the matchbox window manager, modify ~/.xsession as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
exec matchbox-window-manager -use_titlebar no -use_cursor no &amp;amp;&lt;br /&gt;
xfce4-session&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LXDE ==&lt;br /&gt;
&lt;br /&gt;
I you want a really nice desktop enviroment but you think XFCE is too fat, you can try to install [http://en.wikipedia.org/wiki/LXDE LXDE]. It give to you the GTK comfort, but use only a fraction of the ram needed by XFCE.&lt;br /&gt;
&lt;br /&gt;
To install it:&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install lxde&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to launch it create a &amp;lt;code&amp;gt;/etc/init.d/lxde&amp;lt;/code&amp;gt; script in the same way descripted for xfce4, replacing &amp;lt;code&amp;gt;startxfce4&amp;lt;/code&amp;gt; accorence with &amp;lt;code&amp;gt;startlxde&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Additional Software =&lt;br /&gt;
== Web Browser ==&lt;br /&gt;
[http://lists.openmoko.org/nabble.html#nabble-td781547 Arne Anka suggested] trying the light-weight webkit-based [http://en.wikipedia.org/wiki/Midori_(browser) midori] browser:&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install midori&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another light-weight browser is [http://en.wikipedia.org/wiki/Dillo Dillo]. It can be easily installed with:&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install dillo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you think the previous options are quite slow on Freerunner try Links2.&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install links2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run as:&lt;br /&gt;
&amp;lt;pre&amp;gt;xlinks2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPS ==&lt;br /&gt;
Openmoko Freerunner has integrated a good AGPS chip that can be used to know in every moment the phone position.&lt;br /&gt;
The most known free applications to use gps with graphical maps are:&lt;br /&gt;
&lt;br /&gt;
*{{main|TangoGPS}}&lt;br /&gt;
*{{main|Navit}} (Attention: Navit is not yet present on Debian repository)&lt;br /&gt;
&lt;br /&gt;
== E-Book reader ==&lt;br /&gt;
&lt;br /&gt;
To read an E-Book you have diffent possibilities:&lt;br /&gt;
&lt;br /&gt;
* [[FBReader]] a good reader that can display txt, fb2, html and various other formats.&lt;br /&gt;
* [[Epdfview]] a simple and lightweight PDF viewer, it can be installed from Debian repository.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Evince Evince] the official Gnome viewer, it can display pdf, djvu, cbz, and other formats.&lt;br /&gt;
There is also an hack to convert drm protected adobe ebooks to .cbz files readable as mentioned on the mailing list.&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous =&lt;br /&gt;
== Making the cursor invisible ==&lt;br /&gt;
&lt;br /&gt;
=== Using matchbox ===&lt;br /&gt;
&lt;br /&gt;
Matchbox has an option, &amp;lt;code&amp;gt;use_cursor&amp;lt;/code&amp;gt;, that can be used to control whether to show the cursor.&lt;br /&gt;
For the default setup, edit &amp;lt;code&amp;gt;/usr/bin/zhone-session&amp;lt;/code&amp;gt; and change the matchbox command to&lt;br /&gt;
matchbox-window-manager -use_titlebar no -use_cursor no&lt;br /&gt;
&lt;br /&gt;
=== Using unclutter ===&lt;br /&gt;
&lt;br /&gt;
Unclutter is a program that hides the cursor after a period of inactivity. To use unclutter, install it&lt;br /&gt;
#apt-get install unclutter&lt;br /&gt;
and choose ''Yes'' to the question &amp;lt;code&amp;gt;Start unclutter automatically?&amp;lt;/code&amp;gt;. To change settings edit&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/default/unclutter&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Changing the cursor ===&lt;br /&gt;
To make the cursor invisible create a file called empty.cursor with this content:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define empty.cursor_width 16&lt;br /&gt;
#define empty.cursor_height 16&lt;br /&gt;
static unsigned char empty.cursor_bits[] = {&lt;br /&gt;
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,&lt;br /&gt;
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,&lt;br /&gt;
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you can execute:&lt;br /&gt;
xsetroot -cursor empty.cursor empty.cursor&lt;br /&gt;
and the cursor will be invisible. To make this permanent you have to invent something ;) It must be executed after zhone has finished starting up.&lt;br /&gt;
&lt;br /&gt;
== Running X applications on your desktop in nested X server ==&lt;br /&gt;
Sometimes it is helpful to have a big screen, keyboard and mouse. You can run X applications in a nested X server window.&lt;br /&gt;
On your desktop install the nested X server application Xephyr (better that Xnest)&lt;br /&gt;
apt-get install xserver-xephyr&lt;br /&gt;
Run a nested X server as display :1&lt;br /&gt;
Xephyr :1 -ac -br -screen 480x640 -reset -terminate &amp;amp;&lt;br /&gt;
Now you are able to run apps on your Neo which will display on your desktop PC. Make sure to set the display, for example if &amp;quot;mydesktop&amp;quot; is your desktop hostname&lt;br /&gt;
DISPLAY=mydesktop:1 xfce4-session &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Simulating right click with stylus ==&lt;br /&gt;
=== With fbdev driver from xserver-xorg ===&lt;br /&gt;
To have the right click with stylus an easy way is to use the Sebastian Ohl's tslib patch: you can find it [http://www.ohli.de/download/xserver-xorg-input-tslib_0.0.5-1+fso1_armel.deb here] until it will not enter in the official Debian package.&lt;br /&gt;
&lt;br /&gt;
You can install it with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://www.ohli.de/download/xserver-xorg-input-tslib_0.0.5-1+fso1_armel.deb&lt;br /&gt;
dpkg --install xserver-xorg-input-tslib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Warning''': this patch is external to Debian repository and is not (yet) supported by Debian comunity.&lt;br /&gt;
&lt;br /&gt;
In this way, to get a right click you can simply tap and hold the stylus and after a while a right click will occurs.&lt;br /&gt;
&lt;br /&gt;
'''Warning''': tslib patch is incompatible with &amp;lt;code&amp;gt;xserver-xglamo&amp;lt;/code&amp;gt;. Use &amp;lt;code&amp;gt;libgtkstylus&amp;lt;/code&amp;gt; instead (see below).&lt;br /&gt;
=== With Xglamo driver from xserver-xglamo ===&lt;br /&gt;
# &amp;lt;pre&amp;gt;apt-get install libgtkstylus&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Insert this line at the beginning of '''~/.xsession''':&amp;lt;pre&amp;gt;export GTK_MODULES=libgtkstylus.so&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the mouse and keyboard from your desktop on the OM device ==&lt;br /&gt;
=== Method 1: xsession export (works with a linux host) ===&lt;br /&gt;
If you are running Linux (or a similar xorg capable operating system) on your Desktop, you can export your xsession to the openmoko device and use your mouse and keyboard on the Neo screen. A little program called x2x makes it even possible to do this simultaneously on the fly. When activated you just move your mouse to the edge of your monitor and then the mouse cursor continues on the screen of your openmoko device. If you select a window on the OM, the input of your keyboard is automatically entered in that window. You can even use the clipboard to copy data from tour desktop to OM and in the reverse direction.&lt;br /&gt;
&lt;br /&gt;
Configure your desktop computer to export your xsession:&lt;br /&gt;
On your desktop (with root permissions):&lt;br /&gt;
Make sure that sshd is installed and in /etc/ssh/sshd_config you have set&lt;br /&gt;
X11Forwarding yes&lt;br /&gt;
&lt;br /&gt;
In K/Ubuntu sshd is in the package openssh-server.&lt;br /&gt;
&lt;br /&gt;
On your OM device install x2x (with root permissions)&lt;br /&gt;
apt-get install xauth x2x&lt;br /&gt;
Now open a new X terminal on your desktop computer. You MUST be the same user that is running the xsession on your desktop (i.e. do not su to root or another user in your x terminal!). Use the same username that is running an xsession on your OM device. Assuming that you have a usb networking connection to OM (with standard configuration) on the user prompt of your desktop type:&lt;br /&gt;
user@desktop:~$ ssh -X openmoko@192.168.0.202 &amp;quot;/usr/bin/x2x -east -to :0.0&amp;quot;&lt;br /&gt;
Hit return and enter your password. The xterm window will be unresponsive after that, but keep it open until you disconnect your OM device.&lt;br /&gt;
&lt;br /&gt;
Now move your mouse cursor across the right edge of your monitor. It should enter the screen of your OM device from the left. Of course you can also use -west, -north or -south, depending on your preference where you place your OM.&lt;br /&gt;
&lt;br /&gt;
If computer says:&lt;br /&gt;
sh: /usr/X11R6/bin/xauth: No such file or directory&lt;br /&gt;
X11 connection rejected because of wrong authentication.&lt;br /&gt;
x2x - error: can not open display localhost:11.0&lt;br /&gt;
&lt;br /&gt;
It means you haven't installed xauth on your OM. So on your OM (with root permissions)&lt;br /&gt;
apt-get install xauth&lt;br /&gt;
&lt;br /&gt;
=== Method 2: synergy (works with a windows/linux host) ===&lt;br /&gt;
With this method you can have the following functionality:&lt;br /&gt;
* Mouse moves from screen edge to the next screen&lt;br /&gt;
* Keyboard types on the focused window&lt;br /&gt;
* Clipboard is transferred as well&lt;br /&gt;
* Connect as many computers and screens you wish&lt;br /&gt;
* Connect windows computers too&lt;br /&gt;
&lt;br /&gt;
All devices/computers in question should be able to install [http://synergy2.sourceforge.net synergy].&lt;br /&gt;
Windows computers can use an installer exe.&lt;br /&gt;
Debian devices have a package ready to be used.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install synergy quicksynergy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
quick synergy will appear in your XFCE programs menu (Accessories-&amp;gt;QuickSynergy).&lt;br /&gt;
Run it, switch to the &amp;quot;Use&amp;quot; tab, enter the IP address of the computer with the mouse and keyboard you wish to use, and press Execute.&lt;br /&gt;
&lt;br /&gt;
In the windows host, (or linux) run the synergy after installation,&lt;br /&gt;
and configure it to share its keyboard and mouse(server),&lt;br /&gt;
configuration is fairly simple, you add all the hostnames of the devices/computers that ever would be joined to the &amp;quot;screens&amp;quot; list, and create 2 links for each connection.&lt;br /&gt;
&lt;br /&gt;
If your desktop's hostname is homepc, and the device's is debian_gta02, and i place the device to the left of the desktop, the links would look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
homepc is right of debian_gta02&lt;br /&gt;
debian_gta02 is left of homepc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now move back to the main screen, and press Start.&lt;br /&gt;
&lt;br /&gt;
That should be it, in windows you should have an icon with a yellow lightning in it when synergy is connected and working.&lt;br /&gt;
Synergy supports connection of more then one screen so one could set up a full lab with only one keyboard and mouse :)&lt;br /&gt;
&lt;br /&gt;
= See also=&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
To have more information about Debian go to [http://www.debian.org Debian homepage].&lt;br /&gt;
&lt;br /&gt;
If you have some problems, you can find support in [http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/smartphones-userland smartphone mailing list]. Report your discovered bugs to this list but remember to put [mailto:nomeata@debian.org Joachim Breitner] in CC.&lt;br /&gt;
&lt;br /&gt;
If you'd like to help the packaging activities, you can join the [http://lists.alioth.debian.org/mailman/listinfo/pkg-fso-maint fso mainteiner list].&lt;br /&gt;
&lt;br /&gt;
Consider a swap partition [http://lists.openmoko.org/pipermail/community/2008-September/031106.html]&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2008-October/032964.html].&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
'''apt-get segmentation fault''' Whenever you get a segmentation fault while using apt-get or aptitude, clean the database so it will rebuild it&lt;br /&gt;
  rm /var/cache/apt/*.bin&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Manual_Debian</id>
		<title>Manual Debian</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Manual_Debian"/>
				<updated>2008-12-28T01:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Prepare SD card */swap links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Debian}}&lt;br /&gt;
&lt;br /&gt;
''Contents of this page is probably old and superceded by this new pae : [[Debian]].''&lt;br /&gt;
&lt;br /&gt;
[[Image:Debian.png|thumb|480px|''Debian on neo1973'']]&lt;br /&gt;
This page is to explain how to run Debian armel port on Openmoko devices.  You can do this from scratch, or download a prebuilt file system.&lt;br /&gt;
The former will take some time, perhaps 2 hours, depending on your internet connection&lt;br /&gt;
&lt;br /&gt;
= Prebuilt Filesystem =&lt;br /&gt;
&lt;br /&gt;
Download and extract to an ext2 formatted filesystem on your SD card:&lt;br /&gt;
&lt;br /&gt;
 wget http://rabenfrost.net/debian/debian-armel-xfce.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Note that the above is just a bit too big to fit on a 512MB SD card.  A smaller image will soon be provided.&lt;br /&gt;
&lt;br /&gt;
Access via SSH is much the same as under other images using [[USB Networking]], with the user accounts below:&lt;br /&gt;
&lt;br /&gt;
* root password: openmoko&lt;br /&gt;
* First user and password: openmoko&lt;br /&gt;
&lt;br /&gt;
Note: If you upgrade your your debian and your touchscreen doesn't work any more, you most likely have to adjust /etc/udev/rules.d/50-udev.rules by applying the settings described later in this document for /etc/udev/udev.rules&lt;br /&gt;
&lt;br /&gt;
== (Optional) Install Known Good Kernel ==&lt;br /&gt;
&lt;br /&gt;
This kernel was build by Marcel_M and has some important patches in it such as removed sd debug symbols.&lt;br /&gt;
&lt;br /&gt;
 wget http://rabenfrost.net/celtune/uImage-2.6.24+svnr4194-r4165-r3-neo1973.bin&lt;br /&gt;
 ./dfu-util -d 0x1457:0x5119 -a kernel -R -D ./uImage-2.6.24+svnr4194-r4165-r3-neo1973.bin&lt;br /&gt;
&lt;br /&gt;
This kernel doesn't work for gta02, but the kernel from Om 2008.9 works good.&lt;br /&gt;
http://downloads.openmoko.org/releases/Om2008.9/Om2008.9-gta02-20080916.uImage.bin&lt;br /&gt;
&lt;br /&gt;
== (Optional) Recompiling Kernel to Add Drivers ==&lt;br /&gt;
(Based on http://lists.openmoko.org/pipermail/support/2008-August/001240.html)&lt;br /&gt;
&lt;br /&gt;
Steps to build the kernel standalone with the &amp;quot;moredrivers&amp;quot; config (to get additional drivers, such as the usb tether drivers that were moved out as kernel modules, compiled directly into the kernel).&lt;br /&gt;
&lt;br /&gt;
  ~ - git clone git://git.openmoko.org/git/kernel.git linux-2.6&lt;br /&gt;
  ~ - cd linux-2.6&lt;br /&gt;
  ~ - git checkout origin/stable&lt;br /&gt;
  ~ - edit ./build to point to your compiler path&lt;br /&gt;
  ~ - cp defconfig-2.6.24 .config&lt;br /&gt;
  ~ - ./build&lt;br /&gt;
&lt;br /&gt;
That gets you a uImage.bin you can DFU or copy into your SD Card filesystem.&lt;br /&gt;
&lt;br /&gt;
== Configure booting from SD/SDHC ==&lt;br /&gt;
&lt;br /&gt;
Do as proposed here: [[Booting_from_SD]]&lt;br /&gt;
&lt;br /&gt;
Note that these instructions are in need a rewrite.&lt;br /&gt;
&lt;br /&gt;
= Build your own armel filesystem =&lt;br /&gt;
&lt;br /&gt;
== Prepare SD card ==&lt;br /&gt;
&lt;br /&gt;
ssh to your neo and format your sd card appropriately. I'm using an 8GB SDHC card here.&lt;br /&gt;
&lt;br /&gt;
:''NOTE: On the Freerunner one also will need a vfat or ext2 (only vfat worked for me with the stock u-boot for the freerunner) partition on which to place the kernel to boot off. See the [[Booting_from_SD]] If you have not done so already.''&lt;br /&gt;
&lt;br /&gt;
 fdisk /dev/mmcblk0&lt;br /&gt;
 We will now create a 8 mb partition for our kernel and another one for the rootfs which will take up all the   &lt;br /&gt;
 remaining space.&lt;br /&gt;
  Command (m for help): d&lt;br /&gt;
  Selected partition 1&lt;br /&gt;
  Command (m for help): n&lt;br /&gt;
  Command action&lt;br /&gt;
     e   extended&lt;br /&gt;
     p   primary partition (1-4)&lt;br /&gt;
  p&lt;br /&gt;
  Partition number (1-4): 1&lt;br /&gt;
  First cylinder (1-983, default 1):&lt;br /&gt;
  Using default value 1&lt;br /&gt;
  Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M&lt;br /&gt;
  Command (m for help): n&lt;br /&gt;
  Command action&lt;br /&gt;
     e   extended&lt;br /&gt;
     p   primary partition (1-4)&lt;br /&gt;
  p&lt;br /&gt;
  Partition number (1-4): 2&lt;br /&gt;
  First cylinder (18-983, default 18):&lt;br /&gt;
  Using default value 18&lt;br /&gt;
  Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):&lt;br /&gt;
  Using default value 983&lt;br /&gt;
  Command (m for help): w&lt;br /&gt;
  The partition table has been altered!&lt;br /&gt;
  Calling ioctl() to re-read partition table.&lt;br /&gt;
  Syncing disks.&lt;br /&gt;
&lt;br /&gt;
Consider a swap partition [http://lists.openmoko.org/pipermail/community/2008-September/031106.html]&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2008-October/032964.html]&lt;br /&gt;
 mkfs.vfat /dev/mmcblk0p1&lt;br /&gt;
 &lt;br /&gt;
 mkfs.ext2 /dev/mmcblk0p2&lt;br /&gt;
 mount /dev/mmcblk0p2 /media/card&lt;br /&gt;
&lt;br /&gt;
== debootstrap on the neo ==&lt;br /&gt;
&lt;br /&gt;
you can download and debootstrap natively on the neo by downloading cdebootstrap-static.&lt;br /&gt;
&lt;br /&gt;
 wget http://ftp.de.debian.org/debian/pool/main/c/cdebootstrap/cdebootstrap-static_0.5.3_armel.deb&lt;br /&gt;
 ar -x cdebootstrap-static_0.5.3_armel.deb data.tar.gz&lt;br /&gt;
 tar -xz -C / -f data.tar.gz&lt;br /&gt;
 rm data.tar.gz cdebootstrap-static_0.5.3_armel.deb&lt;br /&gt;
 wget http://ftp.de.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2008.04.16+nmu1_all.deb&lt;br /&gt;
 ar -x debian-archive-keyring_2008.04.16+nmu1_all.deb data.tar.gz&lt;br /&gt;
 tar -xz -C / -f data.tar.gz&lt;br /&gt;
 cdebootstrap-static --variant=minbase --include=ifupdown,udev,procps,netbase,nano,module-init-tools,wget,openssh-server lenny /media/card/ http://ftp.de.debian.org/debian/&lt;br /&gt;
&lt;br /&gt;
== Complete debootstrap Process ==&lt;br /&gt;
&lt;br /&gt;
execute the following commands (just copypaste everything below)&lt;br /&gt;
 echo &amp;quot;neo1973-debian&amp;quot; &amp;gt; /media/card/etc/hostname&lt;br /&gt;
 echo -e &amp;quot;auto lo\n\&lt;br /&gt;
 iface lo inet loopback\n\&lt;br /&gt;
 auto usb0\n\&lt;br /&gt;
 iface usb0 inet static\n\&lt;br /&gt;
     address 192.168.0.202\n\&lt;br /&gt;
     netmask 255.255.255.0\n\&lt;br /&gt;
     network 192.168.0.0\n\&lt;br /&gt;
     gateway 192.168.0.200\n\&lt;br /&gt;
     up echo nameserver 192.168.0.200 &amp;gt;/etc/resolv.conf&amp;quot; &amp;gt; /media/card/etc/network/interfaces&lt;br /&gt;
 echo -e &amp;quot;rootfs  /                ext2    defaults,errors=remount-ro,noatime 0 1\n\&lt;br /&gt;
 proc    /proc            proc    defaults                           0 0\n\&lt;br /&gt;
 tmpfs   /etc/network/run tmpfs   defaults,noatime                   0 0\n\&lt;br /&gt;
 tmpfs   /tmp             tmpfs   defaults,noatime                   0 0\n\&lt;br /&gt;
 tmpfs   /var/lock        tmpfs   defaults,noatime                   0 0\n\&lt;br /&gt;
 tmpfs   /var/run         tmpfs   defaults,noatime                   0 0\n\&lt;br /&gt;
 tmpfs   /var/tmp         tmpfs   defaults,noatime                   0 0&amp;quot; &amp;gt; /media/card/etc/fstab&lt;br /&gt;
 echo 'root:openmoko' | chroot /media/card/ chpasswd&lt;br /&gt;
== Get X Running ==&lt;br /&gt;
Now reboot and start Debian. Login with ssh and start configuring xorg:&lt;br /&gt;
&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
&lt;br /&gt;
configure /etc/X11/xorg.conf so that it looks like this:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputDevice&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;mouse&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Device&amp;quot; &amp;quot;/dev/input/mice&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Configured Video Device&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;fbdev&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Configured Monitor&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        Monitor         &amp;quot;Configured Monitor&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Default Layout&amp;quot;&lt;br /&gt;
        Screen          &amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
Start X in the first vt:&lt;br /&gt;
 startx -- vt1&lt;br /&gt;
&lt;br /&gt;
== Get touchscreen working ==&lt;br /&gt;
Install the tslib driver:&lt;br /&gt;
&lt;br /&gt;
 apt-get install xserver-xorg-input-tslib&lt;br /&gt;
&lt;br /&gt;
and edit the InputDevice section in your xorg.conf&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputDevice&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
        Driver &amp;quot;tslib&amp;quot;&lt;br /&gt;
        Option &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
        Option &amp;quot;TslibDevice&amp;quot; &amp;quot;/dev/input/event1&amp;quot;&lt;br /&gt;
        Option &amp;quot;Protocol&amp;quot; &amp;quot;Auto&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
calibrate your touchscreen&lt;br /&gt;
for gta01:&lt;br /&gt;
 echo -67 36365 -2733100 -48253 -310 45219816 65536 &amp;gt; /etc/pointercal&lt;br /&gt;
&lt;br /&gt;
calibration for the gta02&lt;br /&gt;
 echo  -67 38667 -4954632 -51172 121 46965312 65536 &amp;gt; /etc/pointercal&lt;br /&gt;
&lt;br /&gt;
Note from Tkrahn:&lt;br /&gt;
&lt;br /&gt;
First the above calibration for gta02 worked fine for me, but after a &lt;br /&gt;
apt-get update &amp;amp;&amp;amp; apt-get upgrade the pointer didn't follow the stylo&lt;br /&gt;
anymore. I needed to overwrite /etc/udev/rules.d/50-udev.rules with &lt;br /&gt;
/etc/udev/udev.rules.dpkg-bak and a restart of the X server to get it &lt;br /&gt;
moving again. But then the pointer was very far off from the tip of &lt;br /&gt;
the stylo. Obviously the mode how the calculation of the position worked&lt;br /&gt;
has changed with the upgrade. I changed the calibration empirically. &lt;br /&gt;
The following /etc/pointercal parameters worked for me:&lt;br /&gt;
&lt;br /&gt;
 0 80000 -8000000 -80500 0 74500000 65536&lt;br /&gt;
&lt;br /&gt;
(On GATA02v5 after the upgrade!)&lt;br /&gt;
&lt;br /&gt;
same goes for gta01. these parameters work at least better then nothing - plz help improving these by doing your own tests:&lt;br /&gt;
&lt;br /&gt;
 0 80000 -8000000 -78000 0 72000000 65536&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start X and enjoy!&lt;br /&gt;
 startx -- vt1&lt;br /&gt;
&lt;br /&gt;
== Install GDM and xfce4 ==&lt;br /&gt;
&lt;br /&gt;
 apt-get install gdm xfce4 xvkbd&lt;br /&gt;
&lt;br /&gt;
Configure gdm so xkvbd will allow you to put in your username and password. simply add this to the end of /etc/gdm/Init/Default before exit 0 so that the three last lines look like this:&lt;br /&gt;
&lt;br /&gt;
 fi&lt;br /&gt;
 sleep 20 &amp;amp;&amp;amp; /usr/bin/xvkbd -xdm -compact -geometry 480x210+0+0 &amp;amp;&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
Simply click on the focus button of xvkbd and then on the input box of GDM to input your user name and password there.  On each boot gdm should start automatically now.&lt;br /&gt;
&lt;br /&gt;
If you like you can also download a correctly sized Debian wallpaper I generated from the SVG source for 480x640:&lt;br /&gt;
&lt;br /&gt;
 wget &amp;lt;nowiki&amp;gt;http://rabenfrost.net/debian/debian-blueish-wallpaper-480x640.png&amp;lt;/nowiki&amp;gt; -O /usr/share/images/desktop-base/desktop-background&lt;br /&gt;
&lt;br /&gt;
== Clean Up ==&lt;br /&gt;
 apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Load Additional Kernel Modules ==&lt;br /&gt;
&lt;br /&gt;
These are for sound, bluetooth and USB. Use the modules archive that fits to your kernel.&lt;br /&gt;
&lt;br /&gt;
 wget http://rabenfrost.net/celtune/modules-2.6.24+svnr4194-r4165-r3-neo1973.tgz&lt;br /&gt;
 tar -xf modules-2.6.24+svnr4194-r4165-r3-neo1973.tgz -C /&lt;br /&gt;
 depmod -a&lt;br /&gt;
 echo -e &amp;quot;hci_usb\n\&lt;br /&gt;
 hidp\n\&lt;br /&gt;
 ohci-hcd\n\&lt;br /&gt;
 rfcomm\n\&lt;br /&gt;
 snd-mixer-oss\n\&lt;br /&gt;
 snd-pcm-oss\n\&lt;br /&gt;
 snd-soc-neo1973-wm8753&amp;quot; &amp;gt; /etc/modules&lt;br /&gt;
&lt;br /&gt;
Note: On the FreeRunner, the sound module (on the last line) is called snd-soc-neo1973-gta02-wm8753&lt;br /&gt;
[[Image:Sonata.png|480px|''Sonata on neo1973'']]&lt;br /&gt;
== Enable Sound ==&lt;br /&gt;
&lt;br /&gt;
Now we turn our Debian into a jukebox!&lt;br /&gt;
&lt;br /&gt;
 apt-get install alsa-base&lt;br /&gt;
 wget http://rabenfrost.net/celtune/alsa_state_files-working.tar.gz&lt;br /&gt;
 tar -xf alsa_state_files-working.tar.gz -C /etc&lt;br /&gt;
 alsactl -f /etc/alsa_state_files-working/stereoout.state restore&lt;br /&gt;
 addgroup openmoko audio&lt;br /&gt;
&lt;br /&gt;
I currently use mpd+sonata - let me know if you know another nice lightweight gtk player. Unfortunately RhythmBox is way too much for the Neo to handle - the MP3 playing stops after 20secs.&lt;br /&gt;
&lt;br /&gt;
== Enable Modem ==&lt;br /&gt;
&lt;br /&gt;
Here comes the phone functionality - just add this line into the &amp;quot;serial devices&amp;quot; section in your /etc/udev/rules.d/50-udev.rules&lt;br /&gt;
&lt;br /&gt;
 # serial devices&lt;br /&gt;
 KERNEL==&amp;quot;s3c2410_serial[0-9]&amp;quot;,  NAME=&amp;quot;ttySAC%n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous =&lt;br /&gt;
&lt;br /&gt;
== Chroot installation ==&lt;br /&gt;
&lt;br /&gt;
If you just want to run random debian programs without completely booting to debian you can use the following minimal steps:&lt;br /&gt;
&lt;br /&gt;
on desktop:&lt;br /&gt;
&lt;br /&gt;
 sudo debootstrap --arch armel --foreign sid sid&lt;br /&gt;
 sudo tar cjf sid.tar.bz2 sid&lt;br /&gt;
 nc -w3 -lp1234 &amp;lt; sid-arm.tar.bz2&lt;br /&gt;
&lt;br /&gt;
on neo:&lt;br /&gt;
&lt;br /&gt;
 cd /media/card&lt;br /&gt;
 nc 192.168.0.200 1234 | tar -x -j -f -&lt;br /&gt;
 mount -t none -o bind /dev /media/card/sid/dev&lt;br /&gt;
 mount -t none -o bind /proc /media/card/sid/proc&lt;br /&gt;
 mount -t none -o bind /sys /media/card/sid/sys&lt;br /&gt;
 mount -t none -o bind /tmp /media/card/sid/tmp&lt;br /&gt;
 chroot /media/card/sid /deboostrap/deboostrap --second-stage&lt;br /&gt;
 cp /etc/resolv.conf /media/card/sid&lt;br /&gt;
 chroot /media/card/sid apt-get update&lt;br /&gt;
 chroot /media/card/sid apt-get install mplayer&lt;br /&gt;
 chroot /media/card/sid mplayer http://relay.slayradio.org:8000/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Xglamo on the FreeRunner ==&lt;br /&gt;
&lt;br /&gt;
Copy /usr/bin/Xglamo (and /usr/bin/Xfbdev) to  /usr/bin in Debian from FSO/ASU/2007.2/2008.8.&lt;br /&gt;
&lt;br /&gt;
Add this to your .bashrc (to tell tslib to use the correct input device):&lt;br /&gt;
 export TSLIB_TSDEVICE=/dev/input/event1&lt;br /&gt;
&lt;br /&gt;
The X server binaries are linked against version 1 of tslib, for some reason Debian calls its version 0, even though it actually is version 1. Symlink the library to the alternative name by running (as root):&lt;br /&gt;
 ln -s /usr/lib/libts-0.0.so.0 /usr/lib/libts-1.0.so.0&lt;br /&gt;
&lt;br /&gt;
We also need to change the symlink for the X server to either Xfbdev or Xglamo (this should better be handled by update-alternatives!):&lt;br /&gt;
 cd /usr/bin &amp;amp;&amp;amp; mv X X.orig &amp;amp;&amp;amp; ln -s Xfbdev X&lt;br /&gt;
(replace Xfbdev by Xglamo if you want to use that, Xglamo is faster, but rotation still does not work correctly as of 2008-08-12).&lt;br /&gt;
&lt;br /&gt;
== Rotating screen to landscape ==&lt;br /&gt;
&lt;br /&gt;
add the following to the /etc/X11/xorg.conf in both the Device and InputDevice sections to get landscape mode&lt;br /&gt;
&lt;br /&gt;
 Option          &amp;quot;Rotate&amp;quot;                &amp;quot;CCW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Hiding the cursor ==&lt;br /&gt;
&lt;br /&gt;
To make the cursor invisible create a file called empty.cursor with this content:&lt;br /&gt;
&lt;br /&gt;
 #define empty.cursor_width 16&lt;br /&gt;
 #define empty.cursor_height 16&lt;br /&gt;
 static unsigned char empty.cursor_bits[] = {&lt;br /&gt;
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,&lt;br /&gt;
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,&lt;br /&gt;
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};&lt;br /&gt;
&lt;br /&gt;
add&lt;br /&gt;
 xsetroot -cursor empty.cursor empty.cursor&lt;br /&gt;
&lt;br /&gt;
to your ~/.xinitrc&lt;br /&gt;
&lt;br /&gt;
=Official Debian Port=&lt;br /&gt;
&lt;br /&gt;
An official Debian port based on the FSO image is being created. First information can be found at http://wiki.debian.org/DebianOnFreeRunner. Early adopters are welcome.&lt;br /&gt;
&lt;br /&gt;
[[Category:Debian]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/GTA02_sysfs</id>
		<title>GTA02 sysfs</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/GTA02_sysfs"/>
				<updated>2008-12-28T01:25:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: what are the new paths?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''NOTE: These only apply to Linux kernel 2.6.24, 2.6.28 has different paths''' (which are what?)&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;font color=75d806&amp;gt;GTA02 Kernel sysfs highlights&amp;lt;/font&amp;gt;==&lt;br /&gt;
sysfs is a filesystem that is mounted on /sys which contains various fake &amp;quot;files&amp;quot; that are actually filled by a variety of drivers and other kernel subsystems.  You can often also write stuff into these &amp;quot;files&amp;quot; using&lt;br /&gt;
&lt;br /&gt;
echo 1 &amp;amp;gt; /sys/blah...&lt;br /&gt;
&lt;br /&gt;
to change settings and behaviours of the kernel and drivers dynamically.  (When doing this, take care you have a space before the redirection operator &amp;amp;gt; or the shell will do something completely different with your command.)&lt;br /&gt;
However[http://permalink.gmane.org/gmane.comp.hardware.smartphones.userland/165], one should use [[Dbus device API]]s!&lt;br /&gt;
&lt;br /&gt;
===USB Host / Device===&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-host.0/hostmode====&lt;br /&gt;
* Defaults to 0, GTA02 USB hardware is configured to be a device, no power is generated for USB, charging is enabled and host 15K pulldowns are removed from D+ and D-&lt;br /&gt;
* Set to 1 to put the GTA02 USB hardware into host mode, so it starts to generate 5V power, disables charging from USB, and applies 15K pulldowns to USB D+ and D-&lt;br /&gt;
====/sys/devices/platform/s3c2410-ohci/usb_mode====&lt;br /&gt;
* Defaults to &amp;quot;device&amp;quot;, it means the USB peripheral in the CPU is logically configured for device mode&lt;br /&gt;
* Set to &amp;quot;host&amp;quot; to logically configure the peripheral to act like a host for other USB devices to be plugged into it&lt;br /&gt;
&lt;br /&gt;
Normally you set these two guys at the same time for the same mode, but there is a trick possible to select logical host mode but leave the power arrangements as if it was in device mode and apply external power.  You need to [[Specialized USB cables|externally add]] 15K pulldowns on D+ and D- if you do this, because we did not enable them the normal way.  With this, you can have a USB device attached to GTA02, and use external power and charge the battery at the same time.&lt;br /&gt;
&lt;br /&gt;
===GSM Subsystem===&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/power_on====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, GSM power OFF&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; to enable power to GSM logic&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/reset====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, no reset&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; briefly after power applied to reset GSM logic&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/download====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, no insane clicking sound&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; to drive yourself crazy and enable serial access to GSM chips down headphone socket / once a second loud clicks / chirps&lt;br /&gt;
&lt;br /&gt;
===Resume Reason===&lt;br /&gt;
====/sys/devices/platform/neo1973-resume.0/resume_reason====&lt;br /&gt;
If you cat this you get a list of possible resume sources in text with one or more * at the left of the active source that woke us.  You need a recent U-Boot to get the * set.&lt;br /&gt;
&lt;br /&gt;
===MEMCONFIG===&lt;br /&gt;
====/sys/devices/platform/neo1973-memconfig.0/BANKCON0 .. 7====&lt;br /&gt;
For extreme meddlers (I salute you), these let you control the wait states and other characteristics of the memory regions of the FreeRunner.  Information and warnings about how to use these are here:&lt;br /&gt;
&lt;br /&gt;
http://git.openmoko.org/?p=kernel.git;a=commitdiff;h=fd25f90517322fc6c07bfb8d34752d3cb41cb4b6&lt;br /&gt;
&lt;br /&gt;
===FIQ and HDQ===&lt;br /&gt;
====/sys/devices/platform/sc32440_fiq.0/fiq/count====&lt;br /&gt;
FIQ is used to provide precision interrupt service in order to implement the HDQ protocol used to the battery couloumb counter.  This shows how many FIQ interrupts have been run since the kernel started.  It's turned off unless it is required.&lt;br /&gt;
====/sys/devices/platform/gta02-hdq.0/hdq/dump====&lt;br /&gt;
If you cat this, you will see the raw contents of HDQ device register space.  This is the bq27000 couloumb counter in our case.&lt;br /&gt;
====/sys/devices/platform/gta02-hdq.0/hdq/write====&lt;br /&gt;
This allows you to write to raw HDQ registers, using &amp;quot;&amp;lt;decimal register index&amp;gt; &amp;lt;decimal value&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===power_supply battery information===&lt;br /&gt;
Most of these are coming from the coulomb counter over HDQ dynamically, but the bq27000 does not update a lot of its registers any more often than once per 4 seconds.  Therefore a lot of this info can be a bit stale or averaged over that period.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/uevent====&lt;br /&gt;
All informations about battery.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/type====&lt;br /&gt;
Just says &amp;quot;Battery&amp;quot;&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/status====&lt;br /&gt;
This will summarize what goes on generally with the battery&lt;br /&gt;
* &amp;quot;Not Charging&amp;quot; - there's a charger in, but right now it isn't charging us.  Normal if you are fully charged and still powered.&lt;br /&gt;
* &amp;quot;Charging&amp;quot; - there's a charger in and it is charging the battery&lt;br /&gt;
* &amp;quot;Discharging&amp;quot; - we are running on battery&lt;br /&gt;
* &amp;quot;Full&amp;quot; - not normally given as a result (Not Charging used instead)&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/voltage_now====&lt;br /&gt;
Battery voltage in uV, averaged.  Obviously this depends on load and place on discharge curve, etc.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/current_now====&lt;br /&gt;
Current being drawn from battery (+ve) or pushed into battery during charging (-ve) in uA&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/charge_full====&lt;br /&gt;
Coulomb Counter's estimate of the capacity of the battery measured in uA/h.  It roughly means that if full, for one hour it could supply current at this rate.  I saw 1197913 reported on mine, so it estimates it can provide 1.2A for an hour.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/temp====&lt;br /&gt;
This is the battery temperature reported by the Coulomb Counter chip that is part of the physical battery.  It is in Celcius * 10, so 251 means 25.1 degrees.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/technology====&lt;br /&gt;
&amp;quot;Li-ion&amp;quot;&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/present====&lt;br /&gt;
* &amp;quot;0&amp;quot; the battery is absent, or not one with a Coulomb Counter&lt;br /&gt;
* &amp;quot;1&amp;quot; the smart battery is present&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/time_to_empty_now====&lt;br /&gt;
At current rate of discharge, estimate of how long we can run for.  If battery is not discharging, it won't make an estimate and will return a magic value &amp;quot;3932100&amp;quot; meaning &amp;quot;no estimate&amp;quot;.  The coulomb counter averages the load and adjusts this value slowly to be its estimate of when we will blow chunks.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/time_to_full_now====&lt;br /&gt;
This estimates how long until we are fully charged, at current rate of charging, in seconds.  If we are not charging, it gives the magic value &amp;quot;3932100&amp;quot; meaning &amp;quot;no estimate&amp;quot;.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/capacity====&lt;br /&gt;
This is the remaining capacity of charge in the battery in percent. This is probably the most useful figure here.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/online====&lt;br /&gt;
* &amp;quot;0&amp;quot; no charger is present&lt;br /&gt;
* &amp;quot;1&amp;quot; A powered charger is present&lt;br /&gt;
&lt;br /&gt;
===PMU info===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/chgmode====&lt;br /&gt;
* &amp;quot;enabled&amp;quot; means the charger is powered and willing to charge, although if you're full it might not be right now&lt;br /&gt;
* &amp;quot;disabled&amp;quot; means there was no power or not enough power supplied to charge&lt;br /&gt;
&lt;br /&gt;
Looks like it may also report &amp;quot;fast&amp;quot; here. [[User:OlivierBerger|OlivierBerger]] 07:47, 25 July 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/charger_type====&lt;br /&gt;
Shows the detected charger type followed by the mode it is running in.  So &amp;quot;charger 500mA mode 100mA&amp;quot; would be the case for non-enumerated USB connection, &amp;quot;charger 500mA mode 500mA&amp;quot; for after enumeration (or &amp;quot;host/500mA usb mode 500mA&amp;quot; as here [[User:OlivierBerger|OlivierBerger]]).&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous====&lt;br /&gt;
This is added to allow the PMU to be told to take more current than the default rules allow.  Use it only if you know your charger source can handle it.  For example&lt;br /&gt;
&lt;br /&gt;
 echo 500 &amp;gt; /sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous&lt;br /&gt;
&lt;br /&gt;
will allow PMU to draw 500mA even though you are connected to a dumb charger where the limit is normally held at 100mA, since it didn't enumerate the GTA02.  You can give 0, 100, 500 or 1000 here, but make sure your charger source can handle what you give here, otherwise it can exceed what is safe for your charging source to provide.&lt;br /&gt;
&lt;br /&gt;
More details at [[Forcing_fast_charge_mode]].&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/dump_regs====&lt;br /&gt;
cat this to get a dump of the I2C registers for the PMU, useful for debugging power problems.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-bt.0/power_on====&lt;br /&gt;
* Default &amp;quot;0&amp;quot; no power to Bluetooth device&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to enable power to Bluetooth&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-bt.0/reset====&lt;br /&gt;
* Default to &amp;quot;0&amp;quot;, no reset&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to reset BT (needed after powerup)&lt;br /&gt;
&lt;br /&gt;
===GPS===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron====&lt;br /&gt;
* Default &amp;quot;0&amp;quot; GPS unpowered&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to power GPS section&lt;br /&gt;
&lt;br /&gt;
===Audio codec===&lt;br /&gt;
====/sys/devices/platform/soc-audio/codec_reg====&lt;br /&gt;
cat this to get a dump of codec registers.  Note they are 9-bit wide.&lt;br /&gt;
====/sys/devices/platform/soc-audio/codec_reg_write====&lt;br /&gt;
You can write to any codec register by echoing &amp;quot;&amp;lt;codec reg index in hex&amp;gt; &amp;lt;value in hex&amp;gt;&amp;quot; to here&lt;br /&gt;
&lt;br /&gt;
===Glamo===&lt;br /&gt;
====/sys/devices/platform/glamo3362.0/regs====&lt;br /&gt;
cat this to get a dump of selected Glamo regs.  You can write the regs by echoing &amp;quot;&amp;lt;glamo reg index in decimal&amp;gt; &amp;lt;value in decimal&amp;gt;&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
===LED &amp;amp; Vibrator===&lt;br /&gt;
(per: Jeff Tickle)&lt;br /&gt;
====/sys/devices/platform/neo1973-vibrator.0/leds/neo1973:vibrator/brightness====&lt;br /&gt;
&lt;br /&gt;
For the Vibration, my very limited testing indicates it will accept a&lt;br /&gt;
range of 0-255, with 0 being off and 255 being full force.  So, you can&lt;br /&gt;
actually set the strength of vibration.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the vibration will positively eat your battery, so&lt;br /&gt;
use with caution!&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-aux:red/brightness====&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-power:blue/brightness====&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-power:orange/brightness====&lt;br /&gt;
&lt;br /&gt;
For the LEDs, you can echo 1 for on or 0 for off to any of these files&lt;br /&gt;
to control the state of the LEDs.&lt;br /&gt;
&lt;br /&gt;
===Accelerometers===&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/power/wakeup====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/power/wakeup====&lt;br /&gt;
Turns on accelerometers.&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/dump====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/dump====&lt;br /&gt;
Dumps accelerometers raw contents.&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/full_scale====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/full_scale====&lt;br /&gt;
Switches the accelerometers between 2G and 8G mode.  Echo &amp;quot;9.2&amp;quot; into it for 8G, any other value for 2G (default)[http://lists.openmoko.org/pipermail/openmoko-kernel/2008-July/004029.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Timezone</id>
		<title>Timezone</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Timezone"/>
				<updated>2008-12-27T01:55:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Debian */ntp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Timezone ==&lt;br /&gt;
&lt;br /&gt;
At this time, there is no preferences application to set the timezone of your Openmoko device.&lt;br /&gt;
&lt;br /&gt;
For now, either open the terminal application or log in to your Openmoko over the USB networking&lt;br /&gt;
connection and change the timezone via commandline commands.&lt;br /&gt;
&lt;br /&gt;
To change the timezone on your FreeRunner you have to &lt;br /&gt;
&lt;br /&gt;
 opkg install tzdata&lt;br /&gt;
&lt;br /&gt;
and then install one of these&lt;br /&gt;
&lt;br /&gt;
 tzdata-africa&lt;br /&gt;
 tzdata-americas&lt;br /&gt;
 tzdata-antarctica&lt;br /&gt;
 tzdata-arctic&lt;br /&gt;
 tzdata-asia &lt;br /&gt;
 tzdata-atlantic&lt;br /&gt;
 tzdata-australia&lt;br /&gt;
 tzdata-europe&lt;br /&gt;
 tzdata-misc&lt;br /&gt;
 tzdata-pacific&lt;br /&gt;
 tzdata-posix  &lt;br /&gt;
 tzdata-right&lt;br /&gt;
&lt;br /&gt;
after that, you should create a symlink named /etc/localtime which points to the appropriate file in /usr/share/zoneinfo.  For example, if you're on the East Coast of the U.S., the following command will link the correct zoneinfo file to your /etc/localtime, giving you the correct time:&lt;br /&gt;
&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime&lt;br /&gt;
&lt;br /&gt;
for Germany for example it is TZ=&amp;quot;Europe/Berlin&amp;quot;&lt;br /&gt;
for France TZ=&amp;quot;Europe/Paris&amp;quot;&lt;br /&gt;
and so on&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can take the more invasive approach and change the TZ=&amp;quot;UTC&amp;quot; in your /etc/profile&lt;br /&gt;
to the timezone you want.&lt;br /&gt;
&lt;br /&gt;
Once the timezone is set, restart of your x-server with &lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
you should now have the right timezone.&lt;br /&gt;
&lt;br /&gt;
In the future, expect the time zone to be set automatically by the telephone stack once connected to the network.&lt;br /&gt;
&lt;br /&gt;
See also [[Date]] for setting the date and time.&lt;br /&gt;
&lt;br /&gt;
===Debian===&lt;br /&gt;
Just use &amp;lt;code&amp;gt;dpkg-reconfigure tzdata&amp;lt;/code&amp;gt;. Also consider installing the &amp;lt;code&amp;gt;ntp&amp;lt;/code&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced End User]]&lt;br /&gt;
[[Category:Settings]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Timezone</id>
		<title>Timezone</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Timezone"/>
				<updated>2008-12-27T01:53:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: Debian is so simple&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Timezone ==&lt;br /&gt;
&lt;br /&gt;
At this time, there is no preferences application to set the timezone of your Openmoko device.&lt;br /&gt;
&lt;br /&gt;
For now, either open the terminal application or log in to your Openmoko over the USB networking&lt;br /&gt;
connection and change the timezone via commandline commands.&lt;br /&gt;
&lt;br /&gt;
To change the timezone on your FreeRunner you have to &lt;br /&gt;
&lt;br /&gt;
 opkg install tzdata&lt;br /&gt;
&lt;br /&gt;
and then install one of these&lt;br /&gt;
&lt;br /&gt;
 tzdata-africa&lt;br /&gt;
 tzdata-americas&lt;br /&gt;
 tzdata-antarctica&lt;br /&gt;
 tzdata-arctic&lt;br /&gt;
 tzdata-asia &lt;br /&gt;
 tzdata-atlantic&lt;br /&gt;
 tzdata-australia&lt;br /&gt;
 tzdata-europe&lt;br /&gt;
 tzdata-misc&lt;br /&gt;
 tzdata-pacific&lt;br /&gt;
 tzdata-posix  &lt;br /&gt;
 tzdata-right&lt;br /&gt;
&lt;br /&gt;
after that, you should create a symlink named /etc/localtime which points to the appropriate file in /usr/share/zoneinfo.  For example, if you're on the East Coast of the U.S., the following command will link the correct zoneinfo file to your /etc/localtime, giving you the correct time:&lt;br /&gt;
&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime&lt;br /&gt;
&lt;br /&gt;
for Germany for example it is TZ=&amp;quot;Europe/Berlin&amp;quot;&lt;br /&gt;
for France TZ=&amp;quot;Europe/Paris&amp;quot;&lt;br /&gt;
and so on&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can take the more invasive approach and change the TZ=&amp;quot;UTC&amp;quot; in your /etc/profile&lt;br /&gt;
to the timezone you want.&lt;br /&gt;
&lt;br /&gt;
Once the timezone is set, restart of your x-server with &lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
you should now have the right timezone.&lt;br /&gt;
&lt;br /&gt;
In the future, expect the time zone to be set automatically by the telephone stack once connected to the network.&lt;br /&gt;
&lt;br /&gt;
See also [[Date]] for setting the date and time.&lt;br /&gt;
&lt;br /&gt;
===Debian===&lt;br /&gt;
Just use &amp;lt;code&amp;gt;dpkg-reconfigure tzdata&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced End User]]&lt;br /&gt;
[[Category:Settings]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Qi</id>
		<title>Qi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Qi"/>
				<updated>2008-12-27T01:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Partitions */half true&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Qi is a boot manager. It is designed to replace [[Uboot|uBoot]]. But Qi will be simpler and faster.&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
Qi's concept is it leaves everything possible to Linux, that includes even the video init. Therefore Qi does NOT provide a boot menu. The usual NOR uBoot menu you use to flash your Neo (Aux first, power second, wait for menu) of course works fine, but if you try the usual procedure to fire up NAND uBoot (Power first, aux second, wait for menu) you get no response.  (not even the 'backlighted black screen')&lt;br /&gt;
&lt;br /&gt;
==Partitions==&lt;br /&gt;
Qi will boot from any kernel named uImage-GTA0[123...].bin in the /boot folder in the root of an ext2 or ext3&lt;br /&gt;
partition on the uSD card.&lt;br /&gt;
* Qi looks for a kernel in the first, second and third partition, silently ignoring FAT partitions.&lt;br /&gt;
* Qi expects the / (root) filesystem to be on the same partition as /boot ([http://permalink.gmane.org/gmane.comp.hardware.smartphones.pkg-fso-maint/104 half true]).&lt;br /&gt;
* If both uImage-GTA02.bin and uImage-GTA03.bin files are present, Qi loads the right one for the machine.&lt;br /&gt;
&lt;br /&gt;
Failing to find a kernel in the SD card, Qi will boot from the kernel in NAND (if the kernel works of course, see below). Failing to find a valid kernel, Qi perform a memory test. It means that one can either move kernels out of the way to get the memory test, or make an SD Card just with normal Qi on it and no kernels to get a memory test.&lt;br /&gt;
* Up to Nov. 28th, Qi would blink the blue Power LED a fraction of a second every 10 secs or so to say ''nothing valid to boot''.&lt;br /&gt;
&lt;br /&gt;
== Download and installation ==&lt;br /&gt;
The daily download is a ''qi-s3cXXXX-andy_somenumber.udfu'' file at http://people.openmoko.org/andy/ .&lt;br /&gt;
Look at your dmesg(1) output for the CPU to pick the right s3c* version. OK, actually they are:&lt;br /&gt;
*qi-s3c2410 --&amp;gt; GTA01&lt;br /&gt;
*qi-s3c2442 --&amp;gt; GTA02&lt;br /&gt;
*qi-s3c6410 --&amp;gt; GTA03&lt;br /&gt;
&lt;br /&gt;
The installation should be flashing like;&lt;br /&gt;
 # dfu-util -a u-boot -R -D qi-s3c6410-andy_8589b40295653557.udfu&lt;br /&gt;
&lt;br /&gt;
===Source code===&lt;br /&gt;
git://git.openmoko.org/git/qi.git , http://git.openmoko.org/?p=qi.git;a=summary .&lt;br /&gt;
One can also just use strings(1) on the .udfu file to get an idea of where Qi currently looks for files.&lt;br /&gt;
&lt;br /&gt;
==Enabling console messages==&lt;br /&gt;
[http://lists.openmoko.org/pipermail/openmoko-kernel/2008-November/006812.html]&lt;br /&gt;
If it's SD Card boot, just create a text file, e.g., for a [[GTA02]] use&lt;br /&gt;
 /boot/append-GTA02&lt;br /&gt;
on the rootfs in question, put in there&lt;br /&gt;
 console=tty0 loglevel=8&lt;br /&gt;
and you'll see the messages on boot.  If it's NAND right now you need to edit the default commandline in Qi for gta02.&lt;br /&gt;
&lt;br /&gt;
==SD Initialisation==&lt;br /&gt;
If you don't specify loglevel=8 in append-GTAXX, and booting fails with a &amp;quot;VFS: Cannot open root device &amp;quot;mmcblk0p1&amp;quot; or unknown-block(2,0)&amp;quot;, the SD card needs a little bit more time to initialise.&lt;br /&gt;
&lt;br /&gt;
Put a &amp;quot;rootdelay=&amp;quot; in append-GTAXX like so:&lt;br /&gt;
 rootdelay=1&lt;br /&gt;
&lt;br /&gt;
== Testing speed improvements ==&lt;br /&gt;
&lt;br /&gt;
Stopwatch results on Qi (error is approx ±1/2 second):&lt;br /&gt;
&lt;br /&gt;
Booting SHR image with uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:07 splash screen appears&lt;br /&gt;
* 0:15 drops to console showing kernel messages scrolling by for ~1 minute&lt;br /&gt;
* 1:18 Openmoko 'please wait' splash&lt;br /&gt;
* 1:31 desktop animated splash&lt;br /&gt;
* 2:38 finished booting&lt;br /&gt;
&lt;br /&gt;
Booting identical setup with Qi flashed over uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:06 backlit black&lt;br /&gt;
* 0:13 please wait booting... (only this text on console for next 38 seconds)&lt;br /&gt;
* 0:51 Angstrom console message (at the end of kernel output with uBoot, but ONLY text display to appear throughout this stage with Qi)&lt;br /&gt;
* 0:54 Openmoko 'please wait' splash&lt;br /&gt;
* 1:05 desktop animated splash&lt;br /&gt;
* 1:54 finished booting&lt;br /&gt;
&lt;br /&gt;
So for this particular configuration, it reduced time-to-desktop by about 28%, about 44 seconds.  Surprisingly, the later segments of booting (desktop) were also noticeably faster than with uBoot - One would have expected just the fist stages up until init (kernel finished establishing itself) to be faster.&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
* Qi won't boot the 'first try' after power restored - the tester didn't count that first 10 seconds for Qi to be fair to its booting speed, not penalize it for what appears to be a bug that bears no relation to actual boot speed).&lt;br /&gt;
* The current (Oct. 12, 2008) 2.6.27 kernel does not boot from the build-in flash NAND. It only works from the uSD boot on ext3. If one tries to boot it from the flash, then AUX red LED blinks ~4/sec. This means kernel panic... It's panicking because it has no rootfs because it can't mount the jffs2 because of the CRC errors because there is a bug that the mtd are not done properly.&lt;br /&gt;
* Qi often doesn't want to resume after suspend.&lt;br /&gt;
* Qi is able to load kernels larger than 2MB correctly, uBoot has a bug.&lt;br /&gt;
&lt;br /&gt;
== LED codes summary ==&lt;br /&gt;
&lt;br /&gt;
* One Blue shine every ~10 second: did not found any valid kernel to boot&lt;br /&gt;
* About four RED shines per second: kernel panic.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Community_Updates/2008-12-15</id>
		<title>Community Updates/2008-12-15</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Community_Updates/2008-12-15"/>
				<updated>2008-12-18T00:40:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: link Qi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome back everybody to the Seventh edition of our [[Community Updates]] newsletter. It was actually chilly around here, especially when John announced that the Optimization Team was disbanded, but there was still no release. A perfect weather to sip hot drinks from a fan mug bought at the newly opened [http://www.cafepress.com/openmoko_inc Openmoko merchandise online store]. The money will go to community projects, for example bounties set up at [http://cofundos.org/projects.php?tag=openmoko cofundos.org], where ideas and money-rich but time-poors users can meet the enterprising hackers.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
These weeks, new or updated applications are arriving almost every day. I cannot wait for Chrismas break, when people will really have time to hobby code !&lt;br /&gt;
&lt;br /&gt;
New:&lt;br /&gt;
* [http://www.opkg.org/package_58.html OpenTTD]. An open source clone of the popular Transport Tycoon Deluxe game.&lt;br /&gt;
* [[Enotes]] (formerly fido) a TODO list manager written with elementary, designed for distributions that use illume, like SHR.&lt;br /&gt;
* [[OMoney]] a bookkeeping application to track daily incomes and expenses.&lt;br /&gt;
* [http://www.opkg.org/package_55.html ePiano] 0.1 A virtual piano keyboard to play simple songs.&lt;br /&gt;
* [http://www.opkg.org/package_54.html SCR] 1.432 (new on opkg) a alternative input method for entring text with your finger.&lt;br /&gt;
* [[ZOMG!]] the embryo of a graphical package manager in Java. &lt;br /&gt;
* Alex O. of the [http://moko.networld.to/ MokSec] project released a call control firewall ([http://opkg.networld.to/moksec/testing/ ipk]) based on a black- and whitelist system. Next up is integration with FSO, which needs a filtering extension.&lt;br /&gt;
&lt;br /&gt;
Updated:&lt;br /&gt;
* [[TwitterMoko]] O.4. Packaging improvements following suggestions by experienced Debian Dev.&lt;br /&gt;
* [[Gpsdcontrol]] 0.4. A Python script to turn on/off gpsd and gps antenna from the desktop. Add: icon changes to show GPS system state.&lt;br /&gt;
* [[Orrery]] 2.3. Added a Planet Compass (on opts menu), dates of major moon phases, minor bugfixes.&lt;br /&gt;
* [[neoqplayer]] 0.2 &amp;quot;sunset&amp;quot;. Finger friendly, cover show, playlist view, nicer theme, bugfixes.&lt;br /&gt;
* [[gtkaddpoi]] 0.5a, SHR compatibility fix.&lt;br /&gt;
* [http://projects.openmoko.org/projects/aphasia/ Aphasia] A very innovative project to communicate with images rather than sounds, experimental code. Now using dbus.&lt;br /&gt;
* [[Paroli]] gets some documentation and a wiki page.&lt;br /&gt;
* [http://blog.1407.org/2008/12/12/omnewrotate-052-is-out/ OMNewRotate] 0.5.2, desktop icon and script, uses autotools, fix suspend bug.&lt;br /&gt;
* [[Navit]] is a car navigation system with routing engine. Nathan K. wrote that the [http://download.navit-project.org/navit/openmoko/svn/ newer opkg] were a vast improvement (the directory can also be used as a feed).&lt;br /&gt;
&lt;br /&gt;
Note to projects.openmoko.org project admins:  Please consider announcing new releases/updates, as the GForge engine does not do it automatically.&lt;br /&gt;
&lt;br /&gt;
== Distributions ==&lt;br /&gt;
&lt;br /&gt;
Okay, we are still waiting to see which distribution will be the first to get out officially with the newer 2.6.28 kernel.&lt;br /&gt;
&lt;br /&gt;
* Android really jumped up in the hit-parade of the [http://wiki.openmoko.org/wiki/Wiki_statistic_numbers#November.2C_2008 most popular pages]. The wiki page with installation instructions has moved to [[Android on Freerunner]], so from now on please use the page [[User_talk:Seanmcneil3]] for discussion. Koolu's Android git is online at http://git.koolu.org/.&lt;br /&gt;
* The [[Debian]] wiki page still needs a good cleanup.&lt;br /&gt;
* [[FDOM]] successfully moved its build system to an OpenEmbedded overlay and is considering jumping over from ASU stable to ASU testing.&lt;br /&gt;
* Qt Extended (formerly [[Qtopia]]). The currently best version seem to be [http://other.lastnetwork.net/OpenMoko/ Hypnotize's unofficial ones]. Lorn (our liaison Software Engineer at Nokia) will try to get an official snapshot out before the solstice.&lt;br /&gt;
* [[SHR]] latest Dec. 9th image has fastboot patches in.&lt;br /&gt;
* An [[FSO]] user [http://lists.openmoko.org/pipermail/community/2008-December/037603.html suggested] that it was time to test the newer kernel, that the needed changes [http://trac.freesmartphone.org/ticket/293 described on FSO's trac] were minor. He reported good things about it.&lt;br /&gt;
* [http://lists.hackable1.org/pipermail/hackable1-dev/2008-December/000030.html Hackable:1] build system is ready, image released and &amp;quot;how you can join&amp;quot; email.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* The hottest and bloodiest kernels are at [http://people.openmoko.org/andy Andy's]. They have Nicolas Dufresne's patches for WSOD, a power supply driver ([http://lists.openmoko.org/nabble.html#nabble-td1506725 pcf50633 rewrite]), touchscreen reliability improvements, a WLAN driver using the mainline SDIO stack, almost Android-readiness, plus all the Kernel features and fixes between 2.6.24 and 2.6.28, especially [http://lists.openmoko.org/nabble.html#nabble-td1618262 resume/suspend improvements]. As these kernels are larger than 2MB, one need to [http://lists.openmoko.org/pipermail/community/2008-December/036921.html meddle with u-Boot] or use [[Qi]] to test them and the newer /sys.&lt;br /&gt;
* Openmoko used to build its distribution using its own copy of OpenEmbedded's Bitbake tree, hosted in its own git under project name [http://git.openmoko.org/?p=openmoko.git;a=summary org.openmoko.dev]. That project has been terminated. Local changes are now being backported upstream so that FSO and everybody else benefits. From now on, further fixes or updates should be directly committed upstream to OpenEmbedded&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* Erin documentad how to use the [[Manually_using_Bluetooth#OBEX|OBEX]] protocol to send files via Bluetooth.&lt;br /&gt;
* Someone asked how to make new, original cases in quantities less than 100. The answer was that there are [http://en.wikipedia.org/wiki/3D_printing 3D Printing] shops around that would gladly make any object you design, you just need to provide them with the CAD file. http://ponoko.com, http://emachineshop.com, http://www.shapeways.com were nomminated.&lt;br /&gt;
* Following up on [http://lists.openmoko.org/pipermail/devel/2008-December/003641.html Graeme G's] report on the steady but slow progress of the Xorg glamo driver, [http://lists.openmoko.org/pipermail/devel/2008-December/003667.html Thomas W.] and Andreas P. reported promising initial progress on 3D acceleration. GG all !&lt;br /&gt;
* Joerg released the draft of the technical paper describing the hardware fix to the buzz issue. Steve is working on the next difficult question: [http://lists.openmoko.org/pipermail/community/2008-December/037536.html how to apply the rework to the A5/A6 units already sold] ?&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
* By popular demand, Openmoko opened a virtual [http://www.cafepress.com/openmoko_inc merchandise store] online. Everybody is invited to post cool t-shirts design.  Profits will go to bounties and other programs to aid the community. [http://pyneo.org/ pyneo] fans note that their favorite distribution has its own [http://pyneo.org/t-shirt/ online shop].&lt;br /&gt;
* The FreeRunner is on the cover of December's [http://www.lfymag.com/index.asp?id=13 Linux for You] magazine.&lt;br /&gt;
* The community is trying out the bounty system at [http://cofundos.org/projects.php?tag=openmoko cofundos.org]. As a start, there is one offer for the accelerated X driver, but media player, volume control/mixer, wifi network manager have also been discussed. This is still a social experiment. We need help and more discussion to define the bounties and claim conditions more precisely.&lt;br /&gt;
* [http://opkg.org opkg.org] was updated. There is now a simple REST interface ([http://www.opkg.org/api.php API documentation]) to query the database, and a &amp;quot;source code URL&amp;quot; field. Thank you Tobias for this useful community service !&lt;br /&gt;
&lt;br /&gt;
* Geocaching is a high-tech treasure hunting game played throughout the world by adventure seekers equipped with GPS devices. The basic idea is to locate hidden containers, called geocaches, outdoors and then share your experiences online. Geocaching is enjoyed by people from all age groups, with a strong sense of community and support for the environment. Here is a [http://www.zindep.com/blog-zindep/geocaching_tangogps small script] to play it with [[TangoGPS]].&lt;br /&gt;
&lt;br /&gt;
* JesusMcCloud created a finger friendly keyboard layout for Illume, with bigger Symbols. You can find more information and a photo in the german [http://freeyourphone.de/portal_v1/viewtopic.php?f=23&amp;amp;t=775&amp;amp;p=8087&amp;amp;hilit=fingertaugliches#p8062 freeyourphone.de forum] &lt;br /&gt;
&lt;br /&gt;
''Did you know it?'' Sean Moss-Pultz introduced OpenMoko's Neo1973 on November 7th, 2006. It was the &amp;quot;Mystery Guest&amp;quot; at the inaugural Open Source in Mobile ([http://www.osimworld.com/newt/l/handsetsvision/osim08/ OSiM]) conference in Amsterdam. The link to the presentation on [[Openmoko:Current_events]] is broken, but one can still [http://web.archive.org/web/19960101-re_/http://www.openmoko.com/files/OpenMoko_Amsterdam.pdf web archive the PDF] or read it online at [http://www.linuxdevices.com/news/NS2986976174.html linuxdevices]. Oh, the screenshots looked so cool on the presentation !&lt;br /&gt;
&lt;br /&gt;
== Direct from Openmoko ==&lt;br /&gt;
&lt;br /&gt;
The optimization team finished their work a few weeks ago. No formal update was released so far. According to [http://n2.nabble.com/-Full-test-report-of-Om2008.testing%28Om2008.12.2%29--part2-tp1642645p1642645.html testing reports], the image is only a little better than 2008.9 update. There are still about 10 critical bugs that an end user would not accept in a smartphone product. Three of those bugs should be already fixed in the latests (2.6.28) kernels, however. There are also [http://lists.openmoko.org/pipermail/community/2008-December/037229.html GTK regressions remaining] compared to 2007.2.&lt;br /&gt;
&lt;br /&gt;
Wolfgang Spraul [http://n2.nabble.com/No-more-optimization-team-tp1637861p1638039.html explained] Openmoko's software strategy for the next 6 months as follows:&lt;br /&gt;
&lt;br /&gt;
====1. Current stable image====&lt;br /&gt;
Our current stable image is [http://downloads.openmoko.org/releases/Om2008.9/ Om2008.9]&lt;br /&gt;
We are sometimes cherry-picking fixes into it, but admittedly not as many as we would like. If someone wants to step up to become stable maintainer for this image and cherry-pick more fixes into it, please let me know.&lt;br /&gt;
Alternatively, a number of other images are available, see [[Distributions]].&lt;br /&gt;
&lt;br /&gt;
====2. Mickey's framework milestones====&lt;br /&gt;
As many people know, the next big thing for Openmoko will be Mickey's FSO [[OpenmokoFramework]] around D-bus and Python, and the [[Paroli]] telephony UI. A few weeks ago, Mickey released [http://downloads.freesmartphone.org/fso-stable/milestone4.1/ milestone 4]. In late January, he plans to come out with milestone 5, in late March with milestone 6.&lt;br /&gt;
 See here for a more detailed roadmap: http://trac.freesmartphone.org/roadmap&lt;br /&gt;
&lt;br /&gt;
====3. Next major release, Om2009====&lt;br /&gt;
After the next 2 FSO milestones, Openmoko will fork off a stable branch, and spend 2-3 months on testing and bug fixing. This will lead  to our next major release, Om2009. The telephony UI will be Paroli, see http://code.google.com/p/paroli/&lt;br /&gt;
The way things are going right now, we will probably have this release mid-next year.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Position available====&lt;br /&gt;
Openmoko [http://n2.nabble.com/No-more-optimization-team-tp1637861p1638092.html is looking for] a serious distribution maintainer. Someone who can do the exceptionally hard work of distribution integration, fixing bugs, small and large, from top to bottom of the stack, from UI to kernel, across many packages. Someone with a proven Free Software background. Any applications just email Wolfgang Spraul &amp;lt; wolfgang at openmoko.com &amp;gt; .&lt;br /&gt;
[[Category:Community Update]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Mailing_List_Duplicates</id>
		<title>Mailing List Duplicates</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Mailing_List_Duplicates"/>
				<updated>2008-12-12T02:13:10Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: All didn't go well?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|Ticket was closed on November 3rd, 2008. Consider deleting this page in by November 10th if all goes well. But all [http://permalink.gmane.org/gmane.discuss/12065 didn't?]}}&lt;br /&gt;
&lt;br /&gt;
Q: How long has there been duplicates on the Openmoko mailing lists?&lt;br /&gt;
&lt;br /&gt;
A: Since the list got so big that sita.openmoko.org can't handle it. See [http://admin-trac.openmoko.org/trac/ticket/1372 ticket #1372].&lt;br /&gt;
&lt;br /&gt;
Q: How long has that been?&lt;br /&gt;
&lt;br /&gt;
A: At least a year, maybe more.&lt;br /&gt;
&lt;br /&gt;
Q: Has Openmoko done anything about it?&lt;br /&gt;
&lt;br /&gt;
A: Doesn't seem so.  Must be a hard problem.&lt;br /&gt;
&lt;br /&gt;
Q: Is Openmoko likely to fix it?&lt;br /&gt;
&lt;br /&gt;
A: If they haven't fixed it by now, then chances are they probably won't.&lt;br /&gt;
&lt;br /&gt;
Q: What should I do about it?&lt;br /&gt;
&lt;br /&gt;
A: Don't email the list about - we all know already.&lt;br /&gt;
&lt;br /&gt;
Q: How can I fix it locally for me?&lt;br /&gt;
&lt;br /&gt;
A: Get a mail reader that understands that a message with a duplicate Message-Id header field doesn't need to be displayed to the user.&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Qi</id>
		<title>Qi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Qi"/>
				<updated>2008-12-12T01:50:32Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Download and installation */mention versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Qi is a boot manager. It is designed to replace [[Uboot|uBoot]]. But Qi will be simpler and faster.&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
Qi's concept is it leaves everything possible to Linux, that includes even the video init. Therefore Qi does NOT provide a boot menu. The usual NOR uBoot menu you use to flash your Neo (Aux first, power second, wait for menu) of course works fine, but if you try the usual procedure to fire up NAND uBoot (Power first, aux second, wait for menu) you get no response.  (not even the 'backlighted black screen')&lt;br /&gt;
&lt;br /&gt;
==Partitions==&lt;br /&gt;
Qi will boot from any kernel named uImage-GTA0[123...].bin in the /boot folder in the root of an ext2 or ext3&lt;br /&gt;
partition on the uSD card.&lt;br /&gt;
* Qi looks for a kernel in the first, second and third partition, silently ignoring FAT partitions.&lt;br /&gt;
* Qi expects the / (root) filesystem to be on the same partition as /boot.&lt;br /&gt;
* If both uImage-GTA02 and uImage-GTA03 files are present, Qi loads the right one for the machine.&lt;br /&gt;
&lt;br /&gt;
Failing to find a kernel in the SD card, Qi will boot from the kernel in NAND (if the kernel works of course, see below). Failing to find a valid kernel, Qi perform a memory test. It means that one can either move kernels out of the way to get the memory test, or make an SD Card just with normal Qi on it and no kernels to get a memory test.&lt;br /&gt;
* Up to Nov. 28th, Qi would blink the blue Power LED a fraction of a second every 10 secs or so to say ''nothing valid to boot''.&lt;br /&gt;
&lt;br /&gt;
== Download and installation ==&lt;br /&gt;
The daily download is a ''qi-s3cXXXX-andy_somenumber.udfu'' file at http://people.openmoko.org/andy/ .&lt;br /&gt;
Look at your dmesg(1) output for the CPU to pick the right s3c* version. OK, actually they are:&lt;br /&gt;
*qi-s3c2410 --&amp;gt; GTA01&lt;br /&gt;
*qi-s3c2442 --&amp;gt; GTA02&lt;br /&gt;
*qi-s3c6410 --&amp;gt; GTA03&lt;br /&gt;
&lt;br /&gt;
The installation should be flashing like;&lt;br /&gt;
 # dfu-util -a u-boot -R -D qi-s3c6410-andy_8589b40295653557.udfu&lt;br /&gt;
&lt;br /&gt;
===Source code===&lt;br /&gt;
git://git.openmoko.org/git/qi.git , http://git.openmoko.org/?p=qi.git;a=summary .&lt;br /&gt;
One can also just use strings(1) on the .udfu file to get an idea of where Qi currently looks for files.&lt;br /&gt;
&lt;br /&gt;
==Enabling console messages==&lt;br /&gt;
[http://lists.openmoko.org/pipermail/openmoko-kernel/2008-November/006812.html]&lt;br /&gt;
If it's SD Card boot, just create a text file, e.g., for a [[GTA02]] use&lt;br /&gt;
 /boot/append-GTA02&lt;br /&gt;
on the rootfs in question, put in there&lt;br /&gt;
 console=tty0 loglevel=8&lt;br /&gt;
and you'll see the messages on boot.  If it's NAND right now you need to edit the default commandline in Qi for gta02.&lt;br /&gt;
&lt;br /&gt;
==SD Initialisation==&lt;br /&gt;
If you don't specify loglevel=8 in append-GTAXX, and booting fails with a &amp;quot;VFS: Cannot open root device &amp;quot;mmcblk0p1&amp;quot; or unknown-block(2,0)&amp;quot;, the SD card needs a little bit more time to initialise.&lt;br /&gt;
&lt;br /&gt;
Put a &amp;quot;rootdelay=&amp;quot; in append-GTAXX like so:&lt;br /&gt;
 rootdelay=1&lt;br /&gt;
&lt;br /&gt;
== Testing speed improvements ==&lt;br /&gt;
&lt;br /&gt;
Stopwatch results on Qi (error is approx ±1/2 second):&lt;br /&gt;
&lt;br /&gt;
Booting SHR image with uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:07 splash screen appears&lt;br /&gt;
* 0:15 drops to console showing kernel messages scrolling by for ~1 minute&lt;br /&gt;
* 1:18 Openmoko 'please wait' splash&lt;br /&gt;
* 1:31 desktop animated splash&lt;br /&gt;
* 2:38 finished booting&lt;br /&gt;
&lt;br /&gt;
Booting identical setup with Qi flashed over uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:06 backlit black&lt;br /&gt;
* 0:13 please wait booting... (only this text on console for next 38 seconds)&lt;br /&gt;
* 0:51 Angstrom console message (at the end of kernel output with uBoot, but ONLY text display to appear throughout this stage with Qi)&lt;br /&gt;
* 0:54 Openmoko 'please wait' splash&lt;br /&gt;
* 1:05 desktop animated splash&lt;br /&gt;
* 1:54 finished booting&lt;br /&gt;
&lt;br /&gt;
So for this particular configuration, it reduced time-to-desktop by about 28%, about 44 seconds.  Surprisingly, the later segments of booting (desktop) were also noticeably faster than with uBoot - One would have expected just the fist stages up until init (kernel finished establishing itself) to be faster.&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
* Qi won't boot the 'first try' after power restored - the tester didn't count that first 10 seconds for Qi to be fair to its booting speed, not penalize it for what appears to be a bug that bears no relation to actual boot speed).&lt;br /&gt;
* The current (Oct. 12, 2008) 2.6.27 kernel does not boot from the build-in flash NAND. It only works from the uSD boot on ext3. If one tries to boot it from the flash, then AUX red LED blinks ~4/sec. This means kernel panic... It's panicking because it has no rootfs because it can't mount the jffs2 because of the CRC errors because there is a bug that the mtd are not done properly.&lt;br /&gt;
* Qi often doesn't want to resume after suspend.&lt;br /&gt;
* Qi is able to load kernels larger than 2MB correctly, uBoot has a bug.&lt;br /&gt;
&lt;br /&gt;
== LED codes summary ==&lt;br /&gt;
&lt;br /&gt;
* One Blue shine every ~10 second: did not found any valid kernel to boot&lt;br /&gt;
* About four RED shines per second: kernel panic.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko:Current_events</id>
		<title>Openmoko:Current events</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko:Current_events"/>
				<updated>2008-12-11T22:01:24Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: fix slob links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This ''Current Events'' page provides information on both [[#Upcoming|upcoming]] and [[#Past|past]] events where FIC or Openmoko had or will have a presence.&lt;br /&gt;
&lt;br /&gt;
== Upcoming ==&lt;br /&gt;
&lt;br /&gt;
* 2008-11-18: [http://www.balug.org/ Bay Area Linux Users Group (BALUG) 2008]  November 18, 2008 | [http://www.fourseasr.com/ Four Seas Restaurant], San Francisco, USA | Sean will speak there&lt;br /&gt;
&lt;br /&gt;
== Past ==&lt;br /&gt;
* 2008-09-24: [http://www.openexpo.ch/openexpo-2008-zuerich/ OpenExpo 2008 Zürich]  September 24-25, 2008 | Winterthur, Switzerland | Booth organised by the [[Openmoko Local Groups: Switzerland|Openmoko Local Group Switzerland]]&lt;br /&gt;
* 2008-09-17: [http://www.osimworld.com/newt/l/handsetsvision/osim08/ OSiM Open Source in Mobile World]  September 17-18, 2008 | Hotel Palace Berlin, Germany | Sean gave a speech on the 17th, interview [http://arstechnica.com/news.ars/post/20080918-openmoko-ceo-embrace-fragmentation-diversity-is-a-strength.html here]&lt;br /&gt;
* 2008-08-23: [http://www.froscon.org FrOSCon 2008]  August 23-24, 2008 | Bonn / St.Augustin, Germany | [[User:Mickey|Mickey]] gave a talk.&lt;br /&gt;
* 2008-08-04: [http://www.linuxworldexpo.com/live/12/ LinuxWorld 2008]  August 04-07, 2008 | Moscone Center, San Francisco, CA | in booth 1625 and in the Linux Garage Pavilion booth 1234 in the Moscone Center North Hall | Michael, Harry, Steve, Sean and Jeremy were there&lt;br /&gt;
* 2008-07-10: [http://wiki.oreillynet.com/foocamp08/ O'Reilly Foo Camp]  July 11-13, 2008 | Sebastopol, CA | Michael Shiloh was there&lt;br /&gt;
* 2008-06-24: [http://www.campus-party.com.co/ Campus Party in Colombia]  June 23-29, 2008 | Bogota, Colombia | Sean gave a speech on 25th&lt;br /&gt;
* 2008-05-28: [http://www.linuxtag.org LinuxTag 2008]  May 27-31, 2008 | Berlin, Germany | LinuxTag | [[User:Mickey|Mickey]] had a talk, Openmoko had a booth.&lt;br /&gt;
* 2008-05-16: [http://www.bsdcan.org/2008/ BSDCan] May 16-18, 2008 | Ottawa, CA | [[User:Idarwin|Ian Darwin]] presented Openmoko FreeRunner to the BSD crowd.&lt;br /&gt;
* 2008-04-09: Wednesday April 9, 2008 | London, UK | [http://ole.tange.dk Ole Tange] presented Openmoko / Freerunner to the [http://www.ukuug.org/events/openmoko/ UK Unix Users Group]&lt;br /&gt;
* 2008-04-08: [https://www.linux-foundation.org/events/collaboration The Linux Foundation Spring 2008 Collaboration Summit] April 8-10, 2008 | University of Texas Commons Center, Austin, TX | Sean is invited as one of the speakers&lt;br /&gt;
* 2008-03-28: [[Openmoko Education/zh tw]] - Friday March 28, 2008. | Hualien, Taiwan | Taiwan School promotion: Openmoko concepts will be presented at National Dong Hwa University&lt;br /&gt;
* 2008-03-26: [[Openmoko Education/zh tw]] - Wednesday March 26, 2008. | Chung Li, Taiwan | Taiwan School promotion: Openmoko concepts will be presented at Yuan Ze University&lt;br /&gt;
* 2008-03-16: [http://www.bossaconference.indt.org/ Bossa'08] - March 16-19, 2008 | Porto de Galinhas, Brazil| [[User:Raster|Raster]] is attending and will give a talk&lt;br /&gt;
* 2008-03-12: [http://www.openexpo.ch/openexpo-2008-bern/ OpenExpo'08] - March 12-13, 2008 | Bern, Switzerland | [[User:Mickey|Mickey]] is giving a talk about Openmoko | [[User:C7|C7]] is organising an OpenMoko booth&lt;br /&gt;
* 2008-03-06: [http://en.oreilly.com/et2008/public/schedule/detail/3330 OpenMoko and Ubiquitous Computing] - March 6, 2008 | San Diego, California | [[User:Michaelshiloh|Michael Shiloh]] is attending and will give a talk at ETech&lt;br /&gt;
* 2008-03-03: [[Openmoko Education/zh tw]] - Monday March 3, 2008. | Chung Li, Taiwan | Taiwan School promotion: Openmoko concepts will be presented at Chung Yuan Christian University&lt;br /&gt;
* 2008-02-27: [[Openmoko Education/zh tw]] - Wednesday February 27, 2008. | Hsinzhu, Taiwan | Taiwan School promotion: OpenMoko concepts will be presented at National Chiao Tung University&lt;br /&gt;
* 2008-02-23: [http://www.fosdem.org Fosdem'08] - February 23-24, 2008 | Brussels, Belgium | OpenMoko will be present at the [http://www.openembedded.org OpenEmbedded] booth, lots of OpenMoko developers will be present. [[Events:FOSDEM_2008 | Will you be there?]]&lt;br /&gt;
* 2008-02-22: [[Openmoko Education/zh tw]] - Friday February 22, 2008. | Tainan, Taiwan | Taiwan School promotion: OpenMoko concepts will be presented at National Cheng Kung University&lt;br /&gt;
* 2008-02-19: [http://www.oss.org.cn/index.php?option=com_content&amp;amp;task=view&amp;amp;id=677&amp;amp;Itemid=162 2008 Linux Developer Symposium-China] - February 19, 2008 | Beijing, China | Neo1973 was presented in a booth by Sun Liantao from [http://www.csip.org.cn CSIP] and [http://www.beijinglug.org BLUG]&lt;br /&gt;
* 2008-02-08: [http://www.socallinuxexpo.org/ SCALE'08] - February 8-10, 2008 | Los Angeles, USA | [[User:Raster|Raster]] is attending and will man the OpenMoko and Enlightenment booths&lt;br /&gt;
* 2008-01-07: Consumer Electronics Trade Show. [[Neo FreeRunner]] was presented. Links to stories, pictures, and videos:&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://gizmodo.com/341755/openmoko-neo-freerunner-linux-smartphone-hands+on gizmodo]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://takezero.net/3g-and-mobile-news/hands-on-with-fics-openmoko-powered-freerunner-2 takezero ]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://youtube.com/watch?v=SZsps3bj6yE youtube]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[http://www.reghardware.co.uk/2008/01/11/ces_video_openmoko_handset/ reghardware]]&amp;lt;br&amp;gt;&lt;br /&gt;
* 2007-12-19: [[OpenLab 2nd Event/zh tw]] - December 19, Wed. | Taipei, Taiwan | OpenLab 2nd Event: GPL &amp;amp; Apache License Talk and Discussion.&lt;br /&gt;
* 2007-11-17: [[Openmoko OpenLab Opening]] - November 17, Sat. | Taipei, Taiwan | OpenLab for OpenMoko Community is going to open.&lt;br /&gt;
* 2007-11-04: [http://coscup.org/2007/ Conference for Open Source Coders, Users and Promoters] - November 04 | Taipei, Taiwan | Jollen gave a talk about OpenMoko and OpenLab ideas.&lt;br /&gt;
* 2007-10-13: [http://onlinux.ca OnLinux Ontario Linux Fest 2007] - October 13 | Toronto, Canada | [[User:Idarwin|Ian Darwin]] gave a talk about Openmoko (slides [http://www.darwinsys.com/openmoko/ here]).&lt;br /&gt;
* 2007-10-02: [http://www.coss.fi/web/openmind/programme Openmind Conference] - October 02-03, 2007 | Tampere, Finland | Michael Shiloh as a speaker&lt;br /&gt;
* 2007-09-26: [http://imm.dtu.dk/ IMM at Danish Technical University] - [http://ole.tange.dk Ole Tange] is giving a talk.&lt;br /&gt;
* 2007-09-23: [http://www.barcamporlando.org/ BarCamp Orlando] Orlando, FL, USA | [[User:Writchie|Wally Ritchie]] will show Neos and talk about Openmoko project&lt;br /&gt;
* 2007-09-20: [http://www.openexpo.ch/openexpo-2007-zuerich/ OpenExpo'07] - September 19-20, 2007 | Zurich, Switzerland | [[User:Mickey|Mickey]] gave a talk about OpenMoko | [[User:C7|C7]] was organising an OpenMoko booth&lt;br /&gt;
* 2007-09-15: [http://mrmcd110b.metarheinmain.de metarheinmain chaosdays 110b] - ixs igave a [https://mrmcd110b.metarheinmain.de/fahrplan/events/2107.en.html talk]&lt;br /&gt;
* 2007-09-12: [http://dmusyd.edu/ Datamatikeruddannelsen i Nykøbing Falster] - [http://ole.tange.dk Ole Tange] gave a talk.&lt;br /&gt;
* 2007-08-30: [http://mobiledevices.kom.aau.dk/team_and_organization/events/mobile_developer_days_2007/ Mobile Developer Days 2007] -  August 30 - September 2, 2007 | at Aalborg University, Denmark | [[User:Mickey|Mickey]] was invited to give a speech&lt;br /&gt;
* 2007-08-25: [http://www.froscon.org/Home.2.0.html?L=1 FrosCon'07] - August 25-26, 2007 | Sankt Augustin, Bonn, Germany | Mickey gave a talk about OpenMoko&lt;br /&gt;
* 2007-08-21: [http://www.beijinglug.org/en/index.php Beijing LUG] - August 21, 2007 | Sean and other OpenMoko team members were there to talk and give a presentation&lt;br /&gt;
* 2007-08-08 till 08-12: [http://events.ccc.de/camp/2007/Chaos_Communication_Camp_2007 Chaos Communication Camp 2007] took place in Finowfurt (close to Berlin, Germany) featuring the [http://events.ccc.de/camp/2007/GSM_Village GSM Village]&lt;br /&gt;
* 2007-08-04: [http://barcamp.org/BarCampRDU BarCampRDU] Raleigh, NC, USA | [[User:Writchie|Wally Ritchie]] showed neos and talk about OpenMoko project&lt;br /&gt;
* 2007-08-03: [http://wikimania2007.wikimedia.org/wiki/Main_Page wikimania 2007] - August 03-05, 2007 | Taipei, Taiwan | OpenMoko has been invited to co-host with Wiki heads to promote open content in Taiwan.&lt;br /&gt;
* 2007-07-26 [http://conferences.oreillynet.com/os2007/ OSCON 2007] | OpenMoko Birds of a Feather session July 26th, Portland Oregon&lt;br /&gt;
* 2007-07-15: [http://www.guadec.org GUADEC, The GNOME Conference 2007] - July 15-21, 2007 | Birmingham, United Kingdom | [[User:Mickey|Mickey]] gave a talk about OpenMoko&lt;br /&gt;
* 2007-07-10: [http://www.rmll.info 8th Libre Software Meeting] - July 10-14, 2007 | Amiens, France | [http://datenfreihafen.org Stefan Schmidt] gave a [http://www.rmll.info/article136.html?lang=en talk] about OpenEZX and OpenMoko&lt;br /&gt;
* 2007-07-09: The [http://www.openmoko.com openmoko.com web shop] was opened; first sales of GTA01_v4 devices.&lt;br /&gt;
* 2007-06-05: [http://www.computextaipei.com.tw Computex Taipei 2007] - June 5-9, 2007 | Taipei World Trade Center, Taipei, Taiwan | OpenMoko was in the FIC Group's Booth&lt;br /&gt;
* 2007-06-01: [http://www.linuxtag.org/2007/en/home/welcome.html LinuxTag 2007] - May 30-June-2, 2007 | LinuxTag in Berlin, Germany | [[User:Mickey|Mickey]] gave a [http://www.linuxtag.org/2007/en/conf/events/vp-speakers/details.html?talkid=84 talk] about OpenMoko&lt;br /&gt;
* 2007-05-19: [http://www.makerfaire.com/ Maker Faire Events] -- May 19-May 20, 2007 | San Francisco Bay Area, San Mateo Expo Center, USA | Michael Shiloh and Jon Phillips presented at OpenMoko's booth on behalf of Sean&lt;br /&gt;
* 2007-05-08 [http://wiki.tossug.org/SignUp:2007-05 Taipei Open Source Software User Group (TOSSUG)] - Cafe Lumiere, Taipei, Taiwan | May 8, 2007&lt;br /&gt;
* 2007-04-04 [http://fostel2007.fostel.org/index.php/Main_Page FOSTEL] - European Institute of Technology, Paris, France | April 4-5, 2007&lt;br /&gt;
* 2007-03-16: On March 16, 2007 [[User:Mickey|Mickey]] presented the device at a Zaurus User Group Meeting in Düsseldorf, Germany.&lt;br /&gt;
* 2007-03-15: On March 15-18, 2007 there was a Polish Linux User Group conference [http://pingwinaria.linux.org.pl/PLUG/imprezy/pingwinaria/2007/agenda Pingwinaria 2007] in Krynica Zdrój, Poland. Tomasz Zieliński gave a talk about OpenMoko and two Neo1973 devices were present there. Also Marcin Juszkiewicz presented OpenEmbedded project there.&lt;br /&gt;
* 2007-03-05: 36 P0 devices shipped to developers.&lt;br /&gt;
* 2007-03-03: [http://www.linuxforum.dk/2007/program/saturday/Martin_Hansen.shtml Martin Hansen and Ole Tange] spoke at [http://www.linuxforum.dk LinuxForum]&lt;br /&gt;
* 2007-02-27: February 27th-March 1st the [http://conferences.oreillynet.com/etel2007/ O'Reilly Emerging Telephony conference] was held at the San Francisco Airport Mariott, Burlingame, CA. Open Phones are on the agenda: Sean presented a workshop on  February 27; Surj Patel and Matt Hamrick of Tuxphone and the homebrew club also presented. An OpenMoko/Open Phones Social gathering was proposed on the evening of the last day, March 1. We hope Tuxphone and SVHMPC people will join us as well.&lt;br /&gt;
* 2007-02-23: Meeting at [[Events:FOSDEM_2007|FOSDEM 2007]]&lt;br /&gt;
* 2007-02-14: The openmoko.org web site was [http://lists.openmoko.org/pipermail/announce/2007-February/000004.html opened to the public].&lt;br /&gt;
* 2007-01-06 [http://www.lunchat.com/ Lunch@Piero's] - CES, Las Vegas, NE | 7-9 January, 2007&lt;br /&gt;
* 2006-11-07: [http://www.informatm.com/NASApp/cs/ContentServer?pagename=marlin/home&amp;amp;MarlinViewType=MARKT_EFFORT&amp;amp;siteid=30000000861&amp;amp;marketingid=20001437372&amp;amp;proceed=true&amp;amp;MarEntityId=1162023598681&amp;amp;entHash=100595e9ac1 Open Source in Mobile] - Amsterdam, The Netherlands, 7-8 November 2006. Sean Moss-Pultz's &amp;quot;Mystery Guest&amp;quot; presentation can be found [http://www.openmoko.com/files/OpenMoko_Amsterdam.pdf here].&lt;br /&gt;
&lt;br /&gt;
{{Languages|Openmoko:Current events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:Event]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Gentoo</id>
		<title>Gentoo</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Gentoo"/>
				<updated>2008-12-03T02:43:24Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Installation */swap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Gentoo}}&lt;br /&gt;
== Overview ==&lt;br /&gt;
Gentoo armv4tl-softfloat-linux-gnueabi optimalized for Openmoko (-Os -march=armv4t -mtune=arm920t) on 2008.0/arm profile (glibc based, sane bootstrapable toolchain)&amp;lt;br&amp;gt;&lt;br /&gt;
(embedded uclibc/arm profile armv4tl-softfloat-linux-uclibcgnueabi in plans)&lt;br /&gt;
&lt;br /&gt;
[http://img46.imageshack.us/img46/646/80330048oy9.jpg Screenshot (hosted at ImageShack)]&lt;br /&gt;
&lt;br /&gt;
== Read first ==&lt;br /&gt;
'''http://www.gentoo.org/doc/en/handbook/handbook-arm.xml''' (Skip points 2 and 3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Needed things ==&lt;br /&gt;
&lt;br /&gt;
*At least 2GB SD card&lt;br /&gt;
*Gentoo stage: http://torindel.sezamkowa.net/openmoko/armv4tl-softfloat-linux-gnueabi/~arm/&lt;br /&gt;
*Portage snapshot: look for mirror on: http://www.gentoo.org/main/en/mirrors2.xml and get snapshots/portage-DATE.tar.bz2&lt;br /&gt;
*Kernel and modules&lt;br /&gt;
*Any working Openmoko distro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Partition your sd card if needed (don`t make swap partitions&lt;br /&gt;
(but see [http://lists.openmoko.org/pipermail/community/2008-September/031106.html]), ensure card isn't mounted): &amp;lt;/li&amp;gt; &lt;br /&gt;
  fdisk /dev/mmcblk0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make ext2 or ext3 filesystem: &amp;lt;/li&amp;gt; &lt;br /&gt;
  mkfs.ext2 /dev/mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Mount partition: &amp;lt;/li&amp;gt; &lt;br /&gt;
  mount /dev/mmcblk0p1 /media/card&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Copy stage and portage from host to moko (e.g. on localhost): &amp;lt;/li&amp;gt;&lt;br /&gt;
  scp stage3-armv4tl-*.tar.bz2 portage-*.tar.bz2 root@openmoko:/media/card&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Unpack stage and portage: &amp;lt;/li&amp;gt; &lt;br /&gt;
  tar -xjpf /media/card/stage3-armv4tl-*.tar.bz2 -C /media/card&lt;br /&gt;
  tar -xjpf /media/card/portage-*.tar.bz2 -C /media/card/usr&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Cleanup removing tar.bz2: &amp;lt;/li&amp;gt; &lt;br /&gt;
  rm /media/card/stage3-armv4tl-*.tar.bz2 /media/card/portage-*.tar.bz2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Chroot: &amp;lt;/li&amp;gt; &lt;br /&gt;
  chroot /media/card /bin/bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Update chroot environment: &amp;lt;/li&amp;gt; &lt;br /&gt;
  source /etc/profile; env-update&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set timezone: &amp;lt;/li&amp;gt; &lt;br /&gt;
  cp /usr/share/zoneinfo/YOURZONE /etc/localtime&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set hostname: &amp;lt;/li&amp;gt; &lt;br /&gt;
  nano /etc/conf.d/hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Remove console font changing (small is beautiful ;]): &amp;lt;/li&amp;gt; &lt;br /&gt;
  rc-update del consolefont boot&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Setup fstab: &amp;lt;/li&amp;gt; &lt;br /&gt;
  nano /etc/fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit inittab (hash out c3, c4, c5, c6, s0, s1 lines): &amp;lt;/li&amp;gt; &lt;br /&gt;
  nano /etc/inittab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Setup usb networking: &amp;lt;/li&amp;gt; &lt;br /&gt;
  echo &amp;quot;modules=\&amp;quot;g_ether\&amp;quot;&amp;quot; &amp;gt;&amp;gt; /etc/conf.d/modules&lt;br /&gt;
  ln -s /etc/init.d/net.lo /etc/init.d/net.usb0&lt;br /&gt;
  echo &amp;quot;config_usb0=\&amp;quot;192.168.0.202 netmask 255.255.255.0\&amp;quot;&amp;quot; &amp;gt; /etc/conf.d/net&lt;br /&gt;
  echo &amp;quot;routes_usb0=\&amp;quot;default via 192.168.0.200\&amp;quot;&amp;quot; &amp;gt;&amp;gt; /etc/conf.d/net&lt;br /&gt;
  echo &amp;quot;nameserver 192.168.0.200&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Enable sshd: &amp;lt;/li&amp;gt; &lt;br /&gt;
  rc-update add sshd default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Change root password: &amp;lt;/li&amp;gt; &lt;br /&gt;
  passwd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Leave chroot: &amp;lt;/li&amp;gt; &lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Copy kernel. &amp;lt;/li&amp;gt;&lt;br /&gt;
  cp /boot/uImage-2.6.24 /media/card/boot/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Copy modules. &amp;lt;/li&amp;gt;&lt;br /&gt;
  cp -rpf /lib/modules /media/card/lib/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Setup uboot for booting from sd card. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Reboot. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup/emerge rest of the system. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emerging binary packages ==&lt;br /&gt;
*Binary package sites&lt;br /&gt;
:http://tinderbox.dev.gentoo.org/embedded/openmoko/armv4tl-softfloat-linux-gnueabi/&lt;br /&gt;
:http://torindel.sezamkowa.net/openmoko/armv4tl-softfloat-linux-gnueabi/~arm/packages/All&lt;br /&gt;
*Add PORTAGE_BINHOST to make.conf&lt;br /&gt;
:&amp;lt;tt&amp;gt;e.g.&amp;lt;/tt&amp;gt; &amp;lt;pre&amp;gt;echo &amp;quot;PORTAGE_BINHOST=\&amp;quot;http://torindel.sezamkowa.net/openmoko/armv4tl-softfloat-linux-gnueabi/~arm/packages/All\&amp;quot;&amp;quot; &amp;gt;&amp;gt; /etc/make.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Update environment&lt;br /&gt;
:&amp;lt;tt&amp;gt;e.g.&amp;lt;/tt&amp;gt; &amp;lt;pre&amp;gt;source /etc/profile; env-update&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Setup install mask if you don't want compiler headers/docs etc (mask headers only if you'll be always using binary packages)&lt;br /&gt;
:&amp;lt;tt&amp;gt;e.g.&amp;lt;/tt&amp;gt; &amp;lt;pre&amp;gt;export INSTALL_MASK=&amp;quot;*.h&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Add the following line to make.conf to tell portage to always use binary packages. &amp;lt;pre&amp;gt;EMERGE_DEFAULT_OPTS=&amp;quot;-gK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternative: Squashed Portage ==&lt;br /&gt;
An alternative to installing a full, writeable, and uncompressed portage tree directly on the microSD card, is to compress portage using SquashFS and then to mount the resuling SquashFS file (usually compressed from about 500 MB to 50 MB) at /usr/portage. &lt;br /&gt;
&lt;br /&gt;
In this case, it is also suggested to set DISTDIR to /tmp/distfiles, because the default DISTDIR (/usr/portage/distfiles) is not writeable. Similarly, PKGDIR can be set to /tmp/binpkgs instead of the default /usr/portage/packages.&lt;br /&gt;
&lt;br /&gt;
See [http://perpetual-notion.blogspot.com/2008/06/gentoo-on-eee-pc.html this] blog post for further details. If you are lacking in extra space on your flash device, or are concerned about extraneous write-cycles to your flash memory, then you should perform all of the steps on desktop linux machine and then finally copy the resulting squashfs image to the FreeRunner.&lt;br /&gt;
&lt;br /&gt;
== Openmoko Overlay ==&lt;br /&gt;
Add svn://torindel.sezamkowa.net/openmoko to layman (emerge layman)&lt;br /&gt;
&lt;br /&gt;
== Binary package wishlist ==&lt;br /&gt;
As i'll be adding some packages to ftp above you might want to ask for some package here: [[GentooPackageWishList]]&amp;lt;br&amp;gt;&lt;br /&gt;
Overlay with moko things and more packages coming soon.&lt;br /&gt;
&lt;br /&gt;
[[category:Distributions]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Manual_Debian</id>
		<title>Manual Debian</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Manual_Debian"/>
				<updated>2008-12-03T02:40:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Prepare SD card */swap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Debian}}&lt;br /&gt;
&lt;br /&gt;
''Contents of this page is probably old and superceded by this new pae : [[Debian]].''&lt;br /&gt;
&lt;br /&gt;
[[Image:Debian.png|thumb|480px|''Debian on neo1973'']]&lt;br /&gt;
This page is to explain how to run Debian armel port on Openmoko devices.  You can do this from scratch, or download a prebuilt file system.&lt;br /&gt;
The former will take some time, perhaps 2 hours, depending on your internet connection&lt;br /&gt;
&lt;br /&gt;
= Prebuilt Filesystem =&lt;br /&gt;
&lt;br /&gt;
Download and extract to an ext2/ext3 formatted filesystem on your SD card:&lt;br /&gt;
&lt;br /&gt;
 wget http://rabenfrost.net/debian/debian-armel-xfce.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Note that the above is just a bit too big to fit on a 512MB SD card.  A smaller image will soon be provided.&lt;br /&gt;
&lt;br /&gt;
Access via SSH is much the same as under other images using [[USB Networking]], with the user accounts below:&lt;br /&gt;
&lt;br /&gt;
* root password: openmoko&lt;br /&gt;
* First user and password: openmoko&lt;br /&gt;
&lt;br /&gt;
Note: If you upgrade your your debian and your touchscreen doesn't work any more, you most likely have to adjust /etc/udev/rules.d/50-udev.rules by applying the settings described later in this document for /etc/udev/udev.rules&lt;br /&gt;
&lt;br /&gt;
== (Optional) Install Known Good Kernel ==&lt;br /&gt;
&lt;br /&gt;
This kernel was build by Marcel_M and has some important patches in it such as removed sd debug symbols and build-in ext3 support.&lt;br /&gt;
&lt;br /&gt;
wget http://rabenfrost.net/celtune/uImage-2.6.24+svnr4194-r4165-r3-neo1973.bin&lt;br /&gt;
./dfu-util -d 0x1457:0x5119 -a kernel -R -D ./uImage-2.6.24+svnr4194-r4165-r3-neo1973.bin&lt;br /&gt;
&lt;br /&gt;
This kernel doesn't work for gta02 (just my expirience, it didn't detect ext3), but the kernel from Om 2008.9 works good.&lt;br /&gt;
http://downloads.openmoko.org/releases/Om2008.9/Om2008.9-gta02-20080916.uImage.bin&lt;br /&gt;
&lt;br /&gt;
== (Optional) Recompiling Kernel to Add Drivers ==&lt;br /&gt;
(Based on http://lists.openmoko.org/pipermail/support/2008-August/001240.html)&lt;br /&gt;
&lt;br /&gt;
Steps to build the kernel standalone with the &amp;quot;moredrivers&amp;quot; config (to get additional drivers, such as the usb tether drivers that were moved out as kernel modules, compiled directly into the kernel).&lt;br /&gt;
&lt;br /&gt;
  ~ - git clone git://git.openmoko.org/git/kernel.git linux-2.6&lt;br /&gt;
  ~ - cd linux-2.6&lt;br /&gt;
  ~ - git checkout origin/stable&lt;br /&gt;
  ~ - edit ./build to point to your compiler path&lt;br /&gt;
  ~ - cp defconfig-2.6.24 .config&lt;br /&gt;
  ~ - ./build&lt;br /&gt;
&lt;br /&gt;
That gets you a uImage.bin you can DFU or copy into your SD Card filesystem.&lt;br /&gt;
&lt;br /&gt;
== Configure booting from SD/SDHC ==&lt;br /&gt;
&lt;br /&gt;
Do as proposed here: [[Booting_from_SD]]&lt;br /&gt;
&lt;br /&gt;
Note that these instructions are in need a rewrite.&lt;br /&gt;
&lt;br /&gt;
= Build your own armel filesystem =&lt;br /&gt;
&lt;br /&gt;
== (Option 1) debootstrap your rootfs on Debian or Ubuntu host ==&lt;br /&gt;
&lt;br /&gt;
 debootstrap --verbose --arch armel --foreign sid ./armel-chroot http://ftp.de.debian.org/debian/&lt;br /&gt;
&lt;br /&gt;
== (option 2) download ready to use armel rootfs ==&lt;br /&gt;
&lt;br /&gt;
If you don't have debootstrap on your system you can download the results here:&lt;br /&gt;
&lt;br /&gt;
 wget http://rabenfrost.net/debian/armel-chroot-first-stage.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Prepare SD card ==&lt;br /&gt;
&lt;br /&gt;
ssh to your neo and format your sd card appropriately. I'm using an 8GB SDHC card here.&lt;br /&gt;
&lt;br /&gt;
:''NOTE: it might be a good idea not to use ext3. This is because ext3 is a heavily journalising file system and on the freerunner (sd card) might cause premature death of the card. It is recommened you use ext2 or another similar file system. One also will need a vfat or ext2 (only vfat worked for me with the stock u-boot for the freerunner. On which to place the kernel to boot off. See the [[Booting_from_SD]] If you have not done so already.''&lt;br /&gt;
&lt;br /&gt;
 fdisk /dev/mmcblk0&lt;br /&gt;
 We will now create a 8 mb partition for our kernel and another one for the rootfs which will take up all the   &lt;br /&gt;
 remaining space.&lt;br /&gt;
  Command (m for help): d&lt;br /&gt;
  Selected partition 1&lt;br /&gt;
  Command (m for help): n&lt;br /&gt;
  Command action&lt;br /&gt;
     e   extended&lt;br /&gt;
     p   primary partition (1-4)&lt;br /&gt;
  p&lt;br /&gt;
  Partition number (1-4): 1&lt;br /&gt;
  First cylinder (1-983, default 1):&lt;br /&gt;
  Using default value 1&lt;br /&gt;
  Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M&lt;br /&gt;
  Command (m for help): n&lt;br /&gt;
  Command action&lt;br /&gt;
     e   extended&lt;br /&gt;
     p   primary partition (1-4)&lt;br /&gt;
  p&lt;br /&gt;
  Partition number (1-4): 2&lt;br /&gt;
  First cylinder (18-983, default 18):&lt;br /&gt;
  Using default value 18&lt;br /&gt;
  Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):&lt;br /&gt;
  Using default value 983&lt;br /&gt;
  Command (m for help): w&lt;br /&gt;
  The partition table has been altered!&lt;br /&gt;
  Calling ioctl() to re-read partition table.&lt;br /&gt;
  Syncing disks.&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2008-September/031106.html Consider a swap partition].&lt;br /&gt;
&lt;br /&gt;
 mkfs.vfat /dev/mmcblk0p1&lt;br /&gt;
 &lt;br /&gt;
 mkfs.ext3 /dev/mmcblk0p2&lt;br /&gt;
 mount /dev/mmcblk0p2 /media/card&lt;br /&gt;
&lt;br /&gt;
copy the armel chroot to your device by tar'ing it to circumvent symbolic link cycles (https://bugzilla.mindrot.org/show_bug.cgi?id=1059 &amp;lt;= WONTFIX)&lt;br /&gt;
&lt;br /&gt;
 tar -C ./armel-chroot/ -c . | ssh root@192.168.0.202 tar -C /media/card -xv&lt;br /&gt;
or if you downloaded the archive&lt;br /&gt;
&lt;br /&gt;
 cat armel-chroot-first-stage.tar.gz | ssh root@192.168.0.202 tar -C /media/card -xzvf -&lt;br /&gt;
&lt;br /&gt;
== Complete debootstrap Process ==&lt;br /&gt;
&lt;br /&gt;
ssh to your device and execute the following commands (just copypaste everything below)&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;nameserver 192.168.0.200&amp;quot; &amp;gt; /media/card/etc/resolv.conf&lt;br /&gt;
 echo &amp;quot;fic-gta01&amp;quot; &amp;gt; /media/card/etc/hostname&lt;br /&gt;
 echo &amp;quot;127.0.0.1 localhost.localdomain localhost fic-gta01&amp;quot; &amp;gt; /media/card/etc/hosts&lt;br /&gt;
 echo -e &amp;quot;auto lo\n\&lt;br /&gt;
 iface lo inet loopback\n\&lt;br /&gt;
 auto usb0\n\&lt;br /&gt;
 iface usb0 inet static\n\&lt;br /&gt;
     address 192.168.0.202\n\&lt;br /&gt;
     netmask 255.255.255.0\n\&lt;br /&gt;
     network 192.168.0.0\n\&lt;br /&gt;
     gateway 192.168.0.200\n\&lt;br /&gt;
     up echo nameserver 192.168.0.200 &amp;gt;/etc/resolv.conf&amp;quot; &amp;gt; /media/card/etc/network/interfaces&lt;br /&gt;
 echo -e &amp;quot;rootfs  /                ext3    defaults,errors=remount-ro,noatime 0 1\n\&lt;br /&gt;
 proc    /proc            proc    defaults                           0 0\n\&lt;br /&gt;
 tmpfs   /etc/network/run tmpfs   defaults,noatime                   0 0\n\&lt;br /&gt;
 tmpfs   /tmp             tmpfs   defaults,noatime                   0 0\n\&lt;br /&gt;
 tmpfs   /var/lock        tmpfs   defaults,noatime                   0 0\n\&lt;br /&gt;
 tmpfs   /var/run         tmpfs   defaults,noatime                   0 0\n\&lt;br /&gt;
 tmpfs   /var/tmp         tmpfs   defaults,noatime                   0 0&amp;quot; &amp;gt; /media/card/etc/fstab&lt;br /&gt;
now chroot into your armel rootfs and finish the install&lt;br /&gt;
 chroot /media/card&lt;br /&gt;
 /debootstrap/debootstrap --second-stage&lt;br /&gt;
make sure your internal clock is set to the correct date because aptitude will complain if otherwise (does not work on the gta02 at the moment: &amp;quot;Cannot access the Hardware Clock via any known method.&amp;quot;)&lt;br /&gt;
 hwclock --set --date=&amp;quot;MM/DD/YY hh:mm:ss&amp;quot;&lt;br /&gt;
install openssh so you can login remotely&lt;br /&gt;
 echo &amp;quot;deb http://ftp.de.debian.org/debian sid main&amp;quot; &amp;gt; /etc/apt/sources.list&lt;br /&gt;
 aptitude update&lt;br /&gt;
 aptitude upgrade&lt;br /&gt;
 aptitude install openssh-server&lt;br /&gt;
install and configure locales&lt;br /&gt;
 aptitude install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
install udev to dynamically create /dev&lt;br /&gt;
 aptitude install udev&lt;br /&gt;
set a root password&lt;br /&gt;
 passwd&lt;br /&gt;
create a normal user&lt;br /&gt;
 adduser &amp;lt;yournamehere&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Get X Running ==&lt;br /&gt;
Now reboot and start Debian. Login with ssh and start configuring xorg:&lt;br /&gt;
&lt;br /&gt;
 aptitude install xorg&lt;br /&gt;
&lt;br /&gt;
configure /etc/X11/xorg.conf so that it looks like this:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputDevice&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;mouse&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Device&amp;quot; &amp;quot;/dev/input/mice&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Configured Video Device&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;fbdev&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Configured Monitor&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        Monitor         &amp;quot;Configured Monitor&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Default Layout&amp;quot;&lt;br /&gt;
        Screen          &amp;quot;Default Screen&amp;quot;&lt;br /&gt;
        InputDevice     &amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
Start X in the first vt:&lt;br /&gt;
 startx -- vt1&lt;br /&gt;
&lt;br /&gt;
== Get touchscreen working ==&lt;br /&gt;
Install the tslib driver:&lt;br /&gt;
&lt;br /&gt;
 aptitude install xserver-xorg-input-tslib&lt;br /&gt;
&lt;br /&gt;
and edit the InputDevice section in your xorg.conf&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputDevice&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
        Driver &amp;quot;tslib&amp;quot;&lt;br /&gt;
        Option &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
        Option &amp;quot;TslibDevice&amp;quot; &amp;quot;/dev/input/event1&amp;quot;&lt;br /&gt;
        Option &amp;quot;Protocol&amp;quot; &amp;quot;Auto&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
calibrate your touchscreen&lt;br /&gt;
for gta01:&lt;br /&gt;
 echo -67 36365 -2733100 -48253 -310 45219816 65536 &amp;gt; /etc/pointercal&lt;br /&gt;
&lt;br /&gt;
calibration for the gta02&lt;br /&gt;
 echo  -67 38667 -4954632 -51172 121 46965312 65536 &amp;gt; /etc/pointercal&lt;br /&gt;
&lt;br /&gt;
Note from Tkrahn:&lt;br /&gt;
&lt;br /&gt;
First the above calibration for gta02 worked fine for me, but after a &lt;br /&gt;
apt-get update &amp;amp;&amp;amp; apt-get upgrade the pointer didn't follow the stylo&lt;br /&gt;
anymore. I needed to overwrite /etc/udev/rules.d/50-udev.rules with &lt;br /&gt;
/etc/udev/udev.rules.dpkg-bak and a restart of the X server to get it &lt;br /&gt;
moving again. But then the pointer was very far off from the tip of &lt;br /&gt;
the stylo. Obviously the mode how the calculation of the position worked&lt;br /&gt;
has changed with the upgrade. I changed the calibration empirically. &lt;br /&gt;
The following /etc/pointercal parameters worked for me:&lt;br /&gt;
&lt;br /&gt;
 0 80000 -8000000 -80500 0 74500000 65536&lt;br /&gt;
&lt;br /&gt;
(On GATA02v5 after the upgrade!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start X and enjoy!&lt;br /&gt;
 startx -- vt1&lt;br /&gt;
&lt;br /&gt;
== Install GDM and xfce4 ==&lt;br /&gt;
&lt;br /&gt;
 aptitude install gdm xfce4 xvkbd&lt;br /&gt;
&lt;br /&gt;
Configure gdm so xkvbd will allow you to put in your username and password. simply add this to the end of /etc/gdm/Init/Default before exit 0 so that the three last lines look like this:&lt;br /&gt;
&lt;br /&gt;
 fi&lt;br /&gt;
 sleep 20 &amp;amp;&amp;amp; /usr/bin/xvkbd -xdm -compact -geometry 480x210+0+0 &amp;amp;&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
Simply click on the focus button of xvkbd and then on the input box of GDM to input your user name and password there.  On each boot gdm should start automatically now.&lt;br /&gt;
&lt;br /&gt;
If you like you can also download a correctly sized Debian wallpaper I generated from the SVG source for 480x640:&lt;br /&gt;
&lt;br /&gt;
 wget &amp;lt;nowiki&amp;gt;http://rabenfrost.net/debian/debian-blueish-wallpaper-480x640.png&amp;lt;/nowiki&amp;gt; -O /usr/share/images/desktop-base/desktop-background&lt;br /&gt;
&lt;br /&gt;
== Clean Up ==&lt;br /&gt;
 aptitude clean&lt;br /&gt;
&lt;br /&gt;
== Load Additional Kernel Modules ==&lt;br /&gt;
&lt;br /&gt;
These are for sound, bluetooth and USB. Use the modules archive that fits to your kernel.&lt;br /&gt;
&lt;br /&gt;
 wget http://rabenfrost.net/celtune/modules-2.6.24+svnr4194-r4165-r3-neo1973.tgz&lt;br /&gt;
 tar -xf modules-2.6.24+svnr4194-r4165-r3-neo1973.tgz -C /&lt;br /&gt;
 depmod -a&lt;br /&gt;
 echo -e &amp;quot;hci_usb\n\&lt;br /&gt;
 hidp\n\&lt;br /&gt;
 ohci-hcd\n\&lt;br /&gt;
 rfcomm\n\&lt;br /&gt;
 snd-mixer-oss\n\&lt;br /&gt;
 snd-pcm-oss\n\&lt;br /&gt;
 snd-soc-neo1973-wm8753&amp;quot; &amp;gt; /etc/modules&lt;br /&gt;
&lt;br /&gt;
Note: On the FreeRunner, the sound module (on the last line) is called snd-soc-neo1973-gta02-wm8753&lt;br /&gt;
[[Image:Sonata.png|480px|''Sonata on neo1973'']]&lt;br /&gt;
== Enable Sound ==&lt;br /&gt;
&lt;br /&gt;
Now we turn our Debian into a jukebox!&lt;br /&gt;
&lt;br /&gt;
 aptitude install alsa-base&lt;br /&gt;
 wget http://rabenfrost.net/celtune/alsa_state_files-working.tar.gz&lt;br /&gt;
 tar -xf alsa_state_files-working.tar.gz -C /etc&lt;br /&gt;
 alsactl -f /etc/alsa_state_files-working/stereoout.state restore&lt;br /&gt;
 addgroup openmoko audio&lt;br /&gt;
&lt;br /&gt;
I currently use mpd+sonata - let me know if you know another nice lightweight gtk player. Unfortunately RhythmBox is way too much for the Neo to handle - the MP3 playing stops after 20secs.&lt;br /&gt;
&lt;br /&gt;
= Using a keyboard =&lt;br /&gt;
[[Image:Debian+frogpad.jpg|480px|''Using irssi on [[Debian]] together with the frogpad to IRC on #neo1973-germany'']]&lt;br /&gt;
nezza prepared a nice guide for this here: [[Frogpad]]&lt;br /&gt;
&lt;br /&gt;
= Chroot installation =&lt;br /&gt;
&lt;br /&gt;
If you just want to run random debian programs without completely booting to debian you can use the following minimal steps:&lt;br /&gt;
&lt;br /&gt;
on desktop:&lt;br /&gt;
&lt;br /&gt;
 sudo debootstrap --arch armel --foreign sid sid&lt;br /&gt;
 sudo tar cjf sid.tar.bz2 sid&lt;br /&gt;
 nc -w3 -lp1234 &amp;lt; sid-arm.tar.bz2&lt;br /&gt;
&lt;br /&gt;
on neo:&lt;br /&gt;
&lt;br /&gt;
 cd /media/card&lt;br /&gt;
 nc 192.168.0.200 1234 | tar -x -j -f -&lt;br /&gt;
 mount -t none -o bind /dev /media/card/sid/dev&lt;br /&gt;
 mount -t none -o bind /proc /media/card/sid/proc&lt;br /&gt;
 mount -t none -o bind /sys /media/card/sid/sys&lt;br /&gt;
 mount -t none -o bind /tmp /media/card/sid/tmp&lt;br /&gt;
 chroot /media/card/sid /deboostrap/deboostrap --second-stage&lt;br /&gt;
 cp /etc/resolv.conf /media/card/sid&lt;br /&gt;
 chroot /media/card/sid apt-get update&lt;br /&gt;
 chroot /media/card/sid apt-get install mplayer&lt;br /&gt;
 chroot /media/card/sid mplayer http://relay.slayradio.org:8000/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=For X applications / xserver on the FreeRunner=&lt;br /&gt;
&lt;br /&gt;
Copy /usr/bin/Xglamo (and /usr/bin/Xfbdev) to  /usr/bin in Debian from FSO/ASU/2007.2/2008.8.&lt;br /&gt;
&lt;br /&gt;
Add this to your .bashrc (to tell tslib to use the correct input device):&lt;br /&gt;
 export TSLIB_TSDEVICE=/dev/input/event1&lt;br /&gt;
&lt;br /&gt;
The X server binaries are linked against version 1 of tslib, for some reason Debian calls its version 0, even though it actually is version 1. Symlink the library to the alternative name by running (as root):&lt;br /&gt;
 ln -s /usr/lib/libts-0.0.so.0 /usr/lib/libts-1.0.so.0&lt;br /&gt;
&lt;br /&gt;
We also need to change the symlink for the X server to either Xfbdev or Xglamo (this should better be handled by update-alternatives!):&lt;br /&gt;
 cd /usr/bin &amp;amp;&amp;amp; mv X X.orig &amp;amp;&amp;amp; ln -s Xfbdev X&lt;br /&gt;
(replace Xfbdev by Xglamo if you want to use that, Xglamo is faster, but rotation still does not work correctly as of 2008-08-12).&lt;br /&gt;
&lt;br /&gt;
= GPS =&lt;br /&gt;
{{main|TangoGPS}}&lt;br /&gt;
&lt;br /&gt;
=Official Debian Port=&lt;br /&gt;
&lt;br /&gt;
An official Debian port based on the FSO image is being created. First information can be found at http://wiki.debian.org/DebianOnFreeRunner. Early adopters are welcome.&lt;br /&gt;
&lt;br /&gt;
[[Category:Debian]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Manual_Debian</id>
		<title>Talk:Manual Debian</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Manual_Debian"/>
				<updated>2008-12-03T02:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Partitions */swap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Booting ==&lt;br /&gt;
&lt;br /&gt;
=== Umount ===&lt;br /&gt;
&lt;br /&gt;
I remember seeing a umount /media/card command on this page which i don't see anymore.  That's needed or you will get &lt;br /&gt;
 /dev/mmcblk0p1 is mounted; will not make a filesystem here!&lt;br /&gt;
Fdisk will also complain &lt;br /&gt;
 WARNING: rereading partition table failed, kernel still uses old table: Device or resource busy&lt;br /&gt;
I needed to umount and rewrite the partition table in order for /dev/mmcblk0p2 to appear.&lt;br /&gt;
&lt;br /&gt;
=== Partitions ===&lt;br /&gt;
&lt;br /&gt;
Why don't we boot from NAND?&lt;br /&gt;
&lt;br /&gt;
What's the reason for two partitions?  Is it because ext2load was broken?  Can we just upgrade u-boot and use one partition?&lt;br /&gt;
&lt;br /&gt;
Is there any need for a swap partition?&lt;br /&gt;
&lt;br /&gt;
--[[User:Brian 252|Brian 252]] 15:22, 8 August 2008 (UTC)&lt;br /&gt;
: [http://lists.openmoko.org/pipermail/community/2008-September/031106.html Some say] it helped. [[User:Jidanni|Jidanni]] 02:38, 3 December 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Touch screen calibration ==&lt;br /&gt;
&lt;br /&gt;
Few days ago there was added calibration for gta02. It doesn't work correctly on my freerunnuer (the mouse pointer doesn't move where I click ant the touchscreen area is about 1/3 smaller then the screen). I tried /etc/pointercal from qtopia and openmoko but it is the same as with parameters from this wiki. Has somebody a tip how to fix this?&lt;br /&gt;
&lt;br /&gt;
--[[User:Jakubzeman|Jakubzeman]] 07:42, 8 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'm using lenny. Oh and if some one wants to see if they can get a debian based kernel / merge / get some more modules from debian / general modules into a kernel for other hardware (such as a rt73 chipset wireless card that would be great :) ) [[User:Dbmoodb|Dbmoodb]] 08:09, 8 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thanks for suggestion. I'll try it (and I'll report if I'm successful or not).&lt;br /&gt;
--[[User:Jakubzeman|Jakubzeman]] 08:56, 8 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
http://tehinterweb.com/freerunner/alsa.state.tgz --[[User:Dbmoodb|Dbmoodb]] 13:55, 21 August 2008 (UTC) (if it doesn't work for you... try these alsa states or the ones posted below from openmoko.org...)&lt;br /&gt;
&lt;br /&gt;
If the sound card is configured properly but there's no sound coming out of the Freerunner, it most likely helps to restore an appropriate statefile from the tgz above which are also available on the [[Openmoko svn]] (/trunk/src/target/audio/om-gta0*).&lt;br /&gt;
&lt;br /&gt;
For simple sound output to the internal stereo speakers, do:&lt;br /&gt;
 alsactl -f /path/to/statefiles/stereoout.state restore&lt;br /&gt;
--[[User:Tanuva|Tanuva]] 12:59, 21 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==debugging fso ==&lt;br /&gt;
The following are taken instructions are taken from lindi on irc. &lt;br /&gt;
 /etc/init.d/frameworkd stop&lt;br /&gt;
 /etc/init.d/fso-frameworkd stop&lt;br /&gt;
 add 'log_level = DEBUG' to '[ogsmd]' in &lt;br /&gt;
 /etc/frameworkd.conf&lt;br /&gt;
 run &amp;quot;frameworkd&amp;quot; and watch the output&lt;br /&gt;
--[[User:Dbmoodb|Dbmoodb]] 08:34, 22 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
I found that i actually had to do the following ... &lt;br /&gt;
 /etc/init.d/fso-frameworkd stop&lt;br /&gt;
 /etc/init.d/x11-common stop&lt;br /&gt;
 /etc/init.d/openmoko-fso restart&lt;br /&gt;
 then go frameworkd&lt;br /&gt;
&lt;br /&gt;
== Problems Making This Work ==&lt;br /&gt;
&lt;br /&gt;
I tried the instructions for loading Debian on my Freerunning and was disappointed to find it didnt work for me. I tried it twice, once with an Ext2 partition on the SDCARD and once with out, about a week ago, both gave exactly the same result. Its a very slow process too. The result when booting is that the phone brings up the openmoko logo , then a completly white screen and then goes back to the openmoko logo, it continues doing this ad-infinitum. It seems like the uboot image is wrong (=invalid) but I cant see how to fix this. Its still possible to boot original OS but via NOR screen. (Boot from card is the default now.)  &lt;br /&gt;
&lt;br /&gt;
Is there no chance of a binary debian image or starter image that can go into flash? I have flashed my phone many times with kernel and jffs2 images and although described as a &amp;quot;major&amp;quot; thing to do, it has always worked so far. Ive looked everywhere for a Debian image and cannot find. &lt;br /&gt;
&lt;br /&gt;
Any comments appreciated.&lt;br /&gt;
&lt;br /&gt;
== The above problem can be resolved as follows ==&lt;br /&gt;
&lt;br /&gt;
I had the same problem, and got the hint from Julian Köpke, who suggested the following and it works. &lt;br /&gt;
&lt;br /&gt;
Your uboot version is too old. You can get the newest &lt;br /&gt;
[http://downloads.openmoko.org/daily/gta02v5_and_up-u-boot.bin uboot image]&lt;br /&gt;
and then follow  [http://wiki.openmoko.org/wiki/Flashing_the_Neo_FreeRunner#Flashing_the_boot_loader_to_the_NAND these instructions]&lt;br /&gt;
--[[User:Nagarjuna|Nagarjuna]] 10:14, 13 September 2008 (UTC)&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Jokes</id>
		<title>Jokes</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Jokes"/>
				<updated>2008-12-03T01:48:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: minimal &amp;lt;DL&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Q:  Why did OM cross the road?'''&lt;br /&gt;
&lt;br /&gt;
A:  To get to another toolkit :)&lt;br /&gt;
&lt;br /&gt;
'''Q:  How many OM devs does it take to change a lightbulb?'''&lt;br /&gt;
&lt;br /&gt;
A:  Well first we need to abandon the old lightbulb holder because at a later date we may not be able to plug a floodlight in,  bring in a new lightbulb holder and adapt it to multiple floodlights,  meanwhile the engineering team has realized that this will only run green floodlights and has started rewiring the whole house.. :)  The burnt out lightbulb is due to be fixed at a later date :) &lt;br /&gt;
&lt;br /&gt;
'''Q:  What is the difference between a professional photographer and OM user?'''&lt;br /&gt;
&lt;br /&gt;
A:  The OM user has to flash more often :)&lt;br /&gt;
&lt;br /&gt;
'''Q:  Why did the OM newbie log onto #openmoko?'''&lt;br /&gt;
&lt;br /&gt;
A:  Because they had not read:&lt;br /&gt;
*#  the wiki, and&lt;br /&gt;
*#  the topic&lt;br /&gt;
As then they would know you slide your finder up on the keyboard to get the numbers to enter your sim pin.&lt;br /&gt;
&lt;br /&gt;
'''Q: What's the difference between an iphone and a freerunner?'''&lt;br /&gt;
&lt;br /&gt;
A: One works but takes away your freedom, the other is free but needs your work&lt;br /&gt;
&lt;br /&gt;
  Knock, Knock&lt;br /&gt;
  Who's There?&lt;br /&gt;
  A Neo User&lt;br /&gt;
  A Neo User&lt;br /&gt;
&lt;br /&gt;
'''Q: What did the Neo say to the insomniac?'''&lt;br /&gt;
&lt;br /&gt;
A: At least when you go to sleep you know you'll wake up!&lt;br /&gt;
&lt;br /&gt;
'''Ancient chinese proverb:''' &amp;quot;Neo owner is man carrying wall charger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Q: What's the difference between a brick and a freerunner?'''&lt;br /&gt;
&lt;br /&gt;
A: A brick isn't designed to make phone calls.&lt;br /&gt;
&lt;br /&gt;
'''OM2008.9 and FSO walk into a bar.'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;How are you?  How are you?&amp;quot; asks FSO.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Buzzzzzzz&amp;quot; says OM2008.9&lt;br /&gt;
&lt;br /&gt;
'''Q:  How to switch off this phone?'''&lt;br /&gt;
&lt;br /&gt;
A:  You have to write program :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''IRC quotes:'''&lt;br /&gt;
&lt;br /&gt;
[16:03] &amp;lt;jadams_&amp;gt; does 2008.8 support the neo yet?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Release announcements:'''&lt;br /&gt;
* New distribution: [http://scap.linuxtogo.org/files/2c3159f3e1a2622fd56fe29d2f222d9c.png OpenmokoMe Millenium Edition] !&lt;br /&gt;
* New hardware: [http://notnews.today.com/2008/09/22/free-software-foundation-announces-gnuphone/ the GnuPhone].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--consider using this kind of formatting:--&amp;gt;&lt;br /&gt;
;Q What if somebody important calls?:A Err..&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Jokes</id>
		<title>Jokes</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Jokes"/>
				<updated>2008-12-03T01:46:31Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: best formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Q:  Why did OM cross the road?'''&lt;br /&gt;
&lt;br /&gt;
A:  To get to another toolkit :)&lt;br /&gt;
&lt;br /&gt;
'''Q:  How many OM devs does it take to change a lightbulb?'''&lt;br /&gt;
&lt;br /&gt;
A:  Well first we need to abandon the old lightbulb holder because at a later date we may not be able to plug a floodlight in,  bring in a new lightbulb holder and adapt it to multiple floodlights,  meanwhile the engineering team has realized that this will only run green floodlights and has started rewiring the whole house.. :)  The burnt out lightbulb is due to be fixed at a later date :) &lt;br /&gt;
&lt;br /&gt;
'''Q:  What is the difference between a professional photographer and OM user?'''&lt;br /&gt;
&lt;br /&gt;
A:  The OM user has to flash more often :)&lt;br /&gt;
&lt;br /&gt;
'''Q:  Why did the OM newbie log onto #openmoko?'''&lt;br /&gt;
&lt;br /&gt;
A:  Because they had not read:&lt;br /&gt;
*#  the wiki, and&lt;br /&gt;
*#  the topic&lt;br /&gt;
As then they would know you slide your finder up on the keyboard to get the numbers to enter your sim pin.&lt;br /&gt;
&lt;br /&gt;
'''Q: What's the difference between an iphone and a freerunner?'''&lt;br /&gt;
&lt;br /&gt;
A: One works but takes away your freedom, the other is free but needs your work&lt;br /&gt;
&lt;br /&gt;
  Knock, Knock&lt;br /&gt;
  Who's There?&lt;br /&gt;
  A Neo User&lt;br /&gt;
  A Neo User&lt;br /&gt;
&lt;br /&gt;
'''Q: What did the Neo say to the insomniac?'''&lt;br /&gt;
&lt;br /&gt;
A: At least when you go to sleep you know you'll wake up!&lt;br /&gt;
&lt;br /&gt;
'''Ancient chinese proverb:''' &amp;quot;Neo owner is man carrying wall charger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Q: What's the difference between a brick and a freerunner?'''&lt;br /&gt;
&lt;br /&gt;
A: A brick isn't designed to make phone calls.&lt;br /&gt;
&lt;br /&gt;
'''OM2008.9 and FSO walk into a bar.'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;How are you?  How are you?&amp;quot; asks FSO.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Buzzzzzzz&amp;quot; says OM2008.9&lt;br /&gt;
&lt;br /&gt;
'''Q:  How to switch off this phone?'''&lt;br /&gt;
&lt;br /&gt;
A:  You have to write program :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''IRC quotes:'''&lt;br /&gt;
&lt;br /&gt;
[16:03] &amp;lt;jadams_&amp;gt; does 2008.8 support the neo yet?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Release announcements:'''&lt;br /&gt;
* New distribution: [http://scap.linuxtogo.org/files/2c3159f3e1a2622fd56fe29d2f222d9c.png OpenmokoMe Millenium Edition] !&lt;br /&gt;
* New hardware: [http://notnews.today.com/2008/09/22/free-software-foundation-announces-gnuphone/ the GnuPhone].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--consider using this kind of formatting:--&amp;gt;&lt;br /&gt;
;Q What if somebody important calls?&lt;br /&gt;
;:A Uhhhh...&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Jokes</id>
		<title>Jokes</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Jokes"/>
				<updated>2008-12-03T01:40:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: what If somebody important calls&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Q:  Why did OM cross the road?'''&lt;br /&gt;
&lt;br /&gt;
A:  To get to another toolkit :)&lt;br /&gt;
&lt;br /&gt;
'''Q:  How many OM devs does it take to change a lightbulb?'''&lt;br /&gt;
&lt;br /&gt;
A:  Well first we need to abandon the old lightbulb holder because at a later date we may not be able to plug a floodlight in,  bring in a new lightbulb holder and adapt it to multiple floodlights,  meanwhile the engineering team has realized that this will only run green floodlights and has started rewiring the whole house.. :)  The burnt out lightbulb is due to be fixed at a later date :) &lt;br /&gt;
&lt;br /&gt;
'''Q:  What is the difference between a professional photographer and OM user?'''&lt;br /&gt;
&lt;br /&gt;
A:  The OM user has to flash more often :)&lt;br /&gt;
&lt;br /&gt;
'''Q:  Why did the OM newbie log onto #openmoko?'''&lt;br /&gt;
&lt;br /&gt;
A:  Because they had not read:&lt;br /&gt;
*#  the wiki, and&lt;br /&gt;
*#  the topic&lt;br /&gt;
As then they would know you slide your finder up on the keyboard to get the numbers to enter your sim pin.&lt;br /&gt;
&lt;br /&gt;
'''Q: What's the difference between an iphone and a freerunner?'''&lt;br /&gt;
&lt;br /&gt;
A: One works but takes away your freedom, the other is free but needs your work&lt;br /&gt;
&lt;br /&gt;
  Knock, Knock&lt;br /&gt;
  Who's There?&lt;br /&gt;
  A Neo User&lt;br /&gt;
  A Neo User&lt;br /&gt;
&lt;br /&gt;
'''Q: What did the Neo say to the insomniac?'''&lt;br /&gt;
&lt;br /&gt;
A: At least when you go to sleep you know you'll wake up!&lt;br /&gt;
&lt;br /&gt;
'''Ancient chinese proverb:''' &amp;quot;Neo owner is man carrying wall charger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Q: What's the difference between a brick and a freerunner?'''&lt;br /&gt;
&lt;br /&gt;
A: A brick isn't designed to make phone calls.&lt;br /&gt;
&lt;br /&gt;
'''OM2008.9 and FSO walk into a bar.'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;How are you?  How are you?&amp;quot; asks FSO.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Buzzzzzzz&amp;quot; says OM2008.9&lt;br /&gt;
&lt;br /&gt;
'''Q:  How to switch off this phone?'''&lt;br /&gt;
&lt;br /&gt;
A:  You have to write program :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''IRC quotes:'''&lt;br /&gt;
&lt;br /&gt;
[16:03] &amp;lt;jadams_&amp;gt; does 2008.8 support the neo yet?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Release announcements:'''&lt;br /&gt;
* New distribution: [http://scap.linuxtogo.org/files/2c3159f3e1a2622fd56fe29d2f222d9c.png OpenmokoMe Millenium Edition] !&lt;br /&gt;
* New hardware: [http://notnews.today.com/2008/09/22/free-software-foundation-announces-gnuphone/ the GnuPhone].&lt;br /&gt;
&lt;br /&gt;
;Q:What if somebody important calls?&lt;br /&gt;
;;:A:Uhhhh...&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Qi</id>
		<title>Qi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Qi"/>
				<updated>2008-11-28T05:29:08Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: ==Enabling console messages==&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Qi is a boot manager. It is designed to replace [[Uboot|uBoot]]. But Qi will be simpler and faster.&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
Qi's concept is it leaves everything possible to Linux, that includes even the video init. Therefore Qi does NOT provide a boot menu. The usual NOR uBoot menu you use to flash your Neo (Aux first, power second, wait for menu) of course works fine, but if you try the usual procedure to fire up NAND uBoot (Power first, aux second, wait for menu) you get no response.  (not even the 'backlighted black screen')&lt;br /&gt;
&lt;br /&gt;
==Partitions==&lt;br /&gt;
Qi will boot from any kernel named uImage-GTA0[123...].bin in the /boot folder in the root of an ext2 or ext3&lt;br /&gt;
partition on the uSD card. (Note: Qi expects the / (root) filesystem to be on the same partition as /boot!) It&lt;br /&gt;
tries the it will try first, second and then third partitions. Failing to find that, it will boot from the&lt;br /&gt;
kernel in NAND (if the kernel works of course, see below). Failing to find that, it will blink the blue Power&lt;br /&gt;
LED a fraction of a second every 10 secs or so to say ''nothing valid to boot''.&lt;br /&gt;
&lt;br /&gt;
== Download and installation ==&lt;br /&gt;
The daily download is a ''qi-s3cXXXX-andy_somenumber.udfu'' file at http://people.openmoko.org/andy/ .&lt;br /&gt;
(look at your dmesg output for the CPU to pick the right s3c* version.)&lt;br /&gt;
&lt;br /&gt;
The installation should be flashing like;&lt;br /&gt;
 # dfu-util -a u-boot -R -D qi-s3c6410-andy_8589b40295653557.udfu&lt;br /&gt;
&lt;br /&gt;
===Source code===&lt;br /&gt;
git://git.openmoko.org/git/qi.git , http://git.openmoko.org/?p=qi.git;a=summary .&lt;br /&gt;
One can also just use strings(1) on the .udfu file to get an idea of where Qi currently looks for files.&lt;br /&gt;
&lt;br /&gt;
==Enabling console messages==&lt;br /&gt;
[http://lists.openmoko.org/pipermail/openmoko-kernel/2008-November/006812.html]&lt;br /&gt;
If it's SD Card boot, just create a text file, e.g., for a [[GTA02]] use&lt;br /&gt;
 /boot/append-GTA02&lt;br /&gt;
on the rootfs in question, put in there&lt;br /&gt;
 console=tty0 loglevel=8&lt;br /&gt;
and you'll see the messages on boot.  If it's NAND right now you need to edit the default commandline in Qi for gta02.&lt;br /&gt;
&lt;br /&gt;
== Testing speed improvements ==&lt;br /&gt;
&lt;br /&gt;
Stopwatch results on Qi (error is approx ±1/2 second):&lt;br /&gt;
&lt;br /&gt;
Booting SHR image with uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:07 splash screen appears&lt;br /&gt;
* 0:15 drops to console showing kernel messages scrolling by for ~1 minute&lt;br /&gt;
* 1:18 Openmoko 'please wait' splash&lt;br /&gt;
* 1:31 desktop animated splash&lt;br /&gt;
* 2:38 finished booting&lt;br /&gt;
&lt;br /&gt;
Booting identical setup with Qi flashed over uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:06 backlit black&lt;br /&gt;
* 0:13 please wait booting... (only this text on console for next 38 seconds)&lt;br /&gt;
* 0:51 Angstrom console message (at the end of kernel output with uBoot, but ONLY text display to appear throughout this stage with Qi)&lt;br /&gt;
* 0:54 Openmoko 'please wait' splash&lt;br /&gt;
* 1:05 desktop animated splash&lt;br /&gt;
* 1:54 finished booting&lt;br /&gt;
&lt;br /&gt;
So for this particular configuration, it reduced time-to-desktop by about 28%, about 44 seconds.  Surprisingly, the later segments of booting (desktop) were also noticeably faster than with uBoot - One would have expected just the fist stages up until init (kernel finished establishing itself) to be faster.&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
* Qi won't boot the 'first try' after power restored - the tester didn't count that first 10 seconds for Qi to be fair to its booting speed, not penalize it for what appears to be a bug that bears no relation to actual boot speed).&lt;br /&gt;
* The current (Oct. 12, 2008) 2.6.27 kernel does not boot from the build-in flash NAND. It only works from the uSD boot on ext3. If one tries to boot it from the flash, then AUX red LED blinks ~4/sec. This means kernel panic... It's panicking because it has no rootfs because it can't mount the jffs2 because of the CRC errors because there is a bug that the mtd are not done properly.&lt;br /&gt;
* Qi often doesn't want to resume after suspend.&lt;br /&gt;
&lt;br /&gt;
== LED codes summary ==&lt;br /&gt;
&lt;br /&gt;
* One Blue shine every ~10 second: did not found any valid kernel to boot&lt;br /&gt;
* About four RED shines per second: kernel panic.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/EFL_Documentation</id>
		<title>EFL Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/EFL_Documentation"/>
				<updated>2008-11-28T04:00:19Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: say what EFL means&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a collection of links to possibly useful [http://en.wikipedia.org/wiki/Enlightenment_Foundation_Libraries EFL] documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Example apps for the Python bindings in E17 svn&amp;lt;br /&amp;gt;&lt;br /&gt;
https://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Python EFL API documentation&amp;lt;br /&amp;gt;&lt;br /&gt;
http://staff.get-e.org/~barbieri/python-efl-api/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;Introduction To The EFL&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
http://homepages.pathfinder.gr/kazanaki/contrib/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;Building Interfaces With Edje&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.cuddletech.com/edje/docs/html/edje_book.html&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;And, of course, the E17 wiki&amp;lt;br /&amp;gt;&lt;br /&gt;
http://wiki.enlightenment.org/index.php/Main_Page&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;And, officially, the E17 docs&amp;lt;br /&amp;gt;&lt;br /&gt;
http://docs.enlightenment.org/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Wiki_Issues</id>
		<title>Wiki Issues</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Wiki_Issues"/>
				<updated>2008-11-28T01:27:56Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: whitespace problem fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you think something is wrong with a Wiki page, please fix it. If the problem is larger with this Wiki in general, please add your thoughts on this page and mail the openmoko [http://lists.openmoko.org/mailman/listinfo/documentation documentation mailing list]. You may just want to read existing proposals and put your vote on them, [[Wiki Maintainers]] will appreciate. [[Wiki Maintenance Agenda]].&lt;br /&gt;
&lt;br /&gt;
When adding an issue please&lt;br /&gt;
&lt;br /&gt;
* Provide a reason&lt;br /&gt;
* Provide your name as vote for the action to be taken (you can automatically enter your username by typing &amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;~~~&amp;lt;/nowiki&amp;gt; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
{{Warning|Comments without name might be deleted without consideration. We may need to ask for more information before implementing a proposal. Thanks for understanding.}}&lt;br /&gt;
&lt;br /&gt;
Accepted and implemented requests should be deleted. Rejected requests should be moved to the bottom of the page to avoid requesting them again.&lt;br /&gt;
&lt;br /&gt;
==Wiki Pages==&lt;br /&gt;
&lt;br /&gt;
I think that we should use specific &amp;quot;editor's notes templates&amp;quot; rather that nominate individual pages here. We can make automatic list of pages using a given template by having a Category:X tag inside the template. See for example the [[:Category:ToDo]] . [[User:MinhHaDuong|MinhHaDuong]] 09:44, 7 October 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Pages capable of development===&lt;br /&gt;
* [[Openmoko:Community Portal]]&lt;br /&gt;
* [[AR6K]] (Needs more info)&lt;br /&gt;
* [[GTA02 partitions]]: seems to be about the GTA01; could someone with a GTA02 please correct the partition sizes and names?&lt;br /&gt;
* [[Advanced_End-user]], [[Basic_End-user]], [[System_Developer]]: These are not up to the standard we set for List Pages on [[Openmoko_Wiki_Editing_Guidelines#List_pages]] [[User:Kempelen|Kempelen]]&lt;br /&gt;
&lt;br /&gt;
===Redundant Pages===&lt;br /&gt;
* There are several pages concerning Openmoko compatible service providers:&lt;br /&gt;
** [[Carriers]], most up-to-date, confirmed service providers.&lt;br /&gt;
*** [[Carriers/ATT]]&lt;br /&gt;
*** [[Carriers/TMobile]]&lt;br /&gt;
*** [[Carriers/Fido]]&lt;br /&gt;
*** [[Carriers/Rogers]]&lt;br /&gt;
** [[Neo1973 compatible cellphone providers]]&lt;br /&gt;
&lt;br /&gt;
*I suggest merging the editing help pages:&lt;br /&gt;
**[[Help:Editing]]&lt;br /&gt;
**[[Edit Wiki]]&lt;br /&gt;
&lt;br /&gt;
*pages about GPS:&lt;br /&gt;
**[[Hardware:AGPS]]&lt;br /&gt;
**[[Gpsd]]&lt;br /&gt;
**[[Neo 1973 GPS]]&lt;br /&gt;
**[[Neo FreeRunner GPS]]&lt;br /&gt;
&lt;br /&gt;
*applications:&lt;br /&gt;
**[[Available Packages]]&lt;br /&gt;
**[[Applications]]&lt;br /&gt;
**[[Applications directory]]&lt;br /&gt;
**[[Om 2007.2 Applications]]&lt;br /&gt;
&lt;br /&gt;
===Tidy up===&lt;br /&gt;
* [[Wishlist:Text Input]] - tidy up/sort, give short feedback to each method&lt;br /&gt;
* [[Booting_from_SD]] - tidy up and a rewrite&lt;br /&gt;
&lt;br /&gt;
=== Pages proposed for deletion ===&lt;br /&gt;
&lt;br /&gt;
'''Please help cleaning these''': Check if there is a red (nonexisting) link in this table, click it, click &amp;quot;What links here&amp;quot; in the toolbox and '''update the broken links'''. When done, remove the deleted entry from this table.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0&lt;br /&gt;
!Page&lt;br /&gt;
!Reason&lt;br /&gt;
!Yes kill it votes&lt;br /&gt;
!No keep it votes&lt;br /&gt;
|-&lt;br /&gt;
| Nothing is propsed for deletion at the moment || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also: [[:Category:Candidates for speedy deletion]]&lt;br /&gt;
&lt;br /&gt;
=== Pages that especially need work ===&lt;br /&gt;
&lt;br /&gt;
* [[Special:Lonelypages]] - Orphaned pages&lt;br /&gt;
* [[Special:DoubleRedirects]] - Pages that redirect to a redirected page&lt;br /&gt;
* [[Special:Popularpages]] - Pages that get viewed a lot&lt;br /&gt;
* [[Special:Ancientpages]] - Old pages&lt;br /&gt;
* [[Special:Newpages]] - New pages&lt;br /&gt;
* [[Special:Wantedpages]] - Wanted pages&lt;br /&gt;
* [[Special:Uncategorizedpages]]&lt;br /&gt;
* [[Special:Shortpages]] - Informationally light pages&lt;br /&gt;
* [[Special:BrokenRedirects]] - Broken redirects&lt;br /&gt;
&lt;br /&gt;
=== Application pages ===&lt;br /&gt;
&lt;br /&gt;
Maturity level ideas from the documentation list copied by [[User:Kempelen|Kempelen]] 19:05, 1 October 2008 (UTC):&lt;br /&gt;
&lt;br /&gt;
* It might be nice to have a single word stating the code maturity, perhaps only 3 simple options like prototype, functional, mature&lt;br /&gt;
* Why not stick with pre-alpha, alpha, beta, stable, mature&lt;br /&gt;
&lt;br /&gt;
Decision postponed. :-) (Feel free to vote here anyway.)&lt;br /&gt;
&lt;br /&gt;
== Categories ==&lt;br /&gt;
&lt;br /&gt;
{{Main|:Category talk:Categories}}&lt;br /&gt;
&lt;br /&gt;
== CSS ==&lt;br /&gt;
&lt;br /&gt;
We have discussed design on the mailing list, with the conclusion that revising was not a big priority. However, the wiki should be skinnable from user-space by editing : http://wiki.openmoko.org/wiki/MediaWiki:Common.css . And for development, each user can have his/her own CSS to eat his own dogfood. But I can't seem to make this feature work here.&lt;br /&gt;
Reference: http://en.wikipedia.org/wiki/Help:Monobook&lt;br /&gt;
[[User:MinhHaDuong|MinhHaDuong]] 12:26, 12 September 2008 (UTC).&lt;br /&gt;
&lt;br /&gt;
* The gutter is too wide&lt;br /&gt;
* Too much footer's padding&lt;br /&gt;
* Could shave 1 or 2 em of vertical space in the header&lt;br /&gt;
* The tabbed navigation layout is non-standard (no framing effect)&lt;br /&gt;
* The search box is below the fold (depends on window height of course)&lt;br /&gt;
* The toolbox (bottom left) has no border&lt;br /&gt;
* Mediawiki's user personal toolbox is prohibited&lt;br /&gt;
* Too many links in the navbar that belongs to the home page but not to every page&lt;br /&gt;
&lt;br /&gt;
== Portals ==&lt;br /&gt;
&lt;br /&gt;
We should explore another wiki organization tool: [http://en.wikipedia.org/wiki/Portal:Contents/Portals portals]. A portal is an introductory page for a given topic. It complements the main article of the subject by introducing the reader to key articles, images, and categories that further describe the subject. Portals also help editors find related projects and things they can do to help. [[User:MinhHaDuong|MinhHaDuong]] 13:53, 20 September 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Navigation templates ==&lt;br /&gt;
&lt;br /&gt;
(FYI Description moved to [[Openmoko_Wiki_Editing_Guidelines#Navigation_templates]], [[User:Kempelen|Kempelen]])&lt;br /&gt;
&lt;br /&gt;
* The [[Distributions]] page feature a non-templated navigation box&lt;br /&gt;
* We should name these templates distinctly. I suggest using a prefix like &amp;quot;NavBox:&amp;quot;.&lt;br /&gt;
* Visual design is by hand (not CSS), and not beautiful&lt;br /&gt;
* Need to test positioning at bottom of article.&lt;br /&gt;
&lt;br /&gt;
'''References'''&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wikipedia:Navigation_templates&lt;br /&gt;
http://en.wikipedia.org/wiki/Wikipedia:Categories,_lists,_and_series_boxes&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/documentation/2008-August/000405.html First discussion in the mailing list] (Note: in the middle of a thread about left navboxes)&lt;br /&gt;
&lt;br /&gt;
* '''Yes votes''': [[User:Kempelen|Kempelen]] (For real wikipedia like navigation templates at the bottom, not at TOC position, we should move this section to editing guidelines as soon as template implementation improves a bit. Do not delete this please!)&lt;br /&gt;
&lt;br /&gt;
== DolfjeBot1 proposals ==&lt;br /&gt;
Their is a bot on the openmoko wiki that's controlled by [[User:Dolfje]]. If you have tasks for the bot, please put them [[User:DolfjeBot1|here]].&lt;br /&gt;
A request has been made to tag DolfjeBot1 user account with the 'bot' flag. [[Special:Listusers/bureaucrat| Here is the lists of users]] with permissions at the necessary `bureaucrat' level.&lt;br /&gt;
&lt;br /&gt;
==Wiki engine issues==&lt;br /&gt;
&lt;br /&gt;
=== Disappearing Pre-formatting ===&lt;br /&gt;
There is an issue with pre-formatting disappearing when people edit. See for instance recent edits here:&lt;br /&gt;
&lt;br /&gt;
http://wiki.openmoko.org/index.php?title=Accelerometer_data_retrieval&amp;amp;diff=59334&amp;amp;oldid=55556&lt;br /&gt;
&lt;br /&gt;
Actually I thing it's whitespace in general that is lost since python/ruby code is also messed up.&lt;br /&gt;
I have confirmed that this happens cross browser (both firefox3 and opera), but not on all pages, and not for all people.&lt;br /&gt;
&lt;br /&gt;
[[User:Gromgull|Gromgull]] 10:47, 9 November 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes, it is driving me bananas and must me due to some&lt;br /&gt;
[[Special:Version#Hooks|hook]] the maintainers have added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
In standard MediaWiki, a mere space at the beginning of these lines&lt;br /&gt;
will produce this box. But no, here on this wiki, one needs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt; , and your spaces get eaten.&lt;br /&gt;
The problem can be isolated as even returning mangled code in the edit box when you hit&lt;br /&gt;
the preview button. Never on real MediaWiki has anything dared to return a mangled edit box before.&lt;br /&gt;
Indeed the contents of this very paragraph have been jumbled by it. I have no control. Indeed, do&lt;br /&gt;
you see that gap above? It grows with each edit.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
On the [http://jidanni.org/comp/index.html wikis I maintain], I never go hog-wild adding too many hooks.&lt;br /&gt;
&lt;br /&gt;
This bug got me. I managed to fix the page I accidentally broke, but apparently it causes the preformatted text to slowly sink into ordinary text with each edit, making the&lt;br /&gt;
wiki less readable, for example see: http://wiki.openmoko.org/index.php?title=GPRS_FSO&amp;amp;oldid=55571 and http://wiki.openmoko.org/index.php?title=GPRS_FSO .&lt;br /&gt;
This should be fixed ASAP, as it makes the quality of the wiki do down. :-( [[User:Zub|zub]] 00:47, 18 November 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
[http://permalink.gmane.org/gmane.comp.handhelds.openmoko.documentation/7 Whitespace problem fixed]. [[User:Jidanni|Jidanni]] 01:27, 28 November 2008 (UTC)&lt;br /&gt;
====Emergency: eating categories off the bottom of pages====&lt;br /&gt;
=====Proof of Category eating=====&lt;br /&gt;
...Oh, the categories only disappear temporarily, due to http://www.mediawiki.org/wiki/Extension:SelectCategoryTagCloud .&lt;br /&gt;
OK, sorry for the alarm. [[User:Jidanni|Jidanni]] 04:08, 16 November 2008 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Can we please install/fix the following features for this wiki:&lt;br /&gt;
* '''Math''' - the Tex math markup does not work currently. Test:&lt;br /&gt;
** &amp;lt;math&amp;gt; z =\left (1-\left(\frac{P_{ind}}{101.325}\right)^{0.190263} \right ) \times \frac{87.828}{0.00198122} &amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt; P_{ind} &amp;lt;/math&amp;gt;&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi '''Syntax''' Highlighting - makes code much more readable]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:GraphViz GraphViz] works with the commonly known dot language - it allows us to draw '''graphs''' using easy markup.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:AnyWikiDraw AnyWikiDraw] allows us to draw svg '''diagrams''' directly on the wiki page.&lt;br /&gt;
* Make '''visited links''' a different color.&lt;br /&gt;
&lt;br /&gt;
== Change Sitename ==&lt;br /&gt;
&lt;br /&gt;
The name of this wiki is currently &amp;quot;Openmoko&amp;quot;. I think it should be &amp;quot;Openmoko Wiki&amp;quot; for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The other parts of this site (Planet, Projects, Docs) have similar names&lt;br /&gt;
* Media Wiki automatically creates a [http://www.mediawiki.org/wiki/Manual:Namespace namespace] for the Sitename (currently &amp;quot;Openmoko&amp;quot;). This means that content of pages beginning with &amp;quot;Openmoko:&amp;quot; cannot be found through the normal search function of this wiki. (At the moment there are five pages of this kind: [[Openmoko:About]], [[Openmoko:Community Portal]], [[Openmoko:Current events]], [[Openmoko:Searching]], [[Openmoko:Privacy policy]])--[[User:Marko Knöbl|Marko Knöbl]] 18:33, 8 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''Yes votes''': [[User:Marko Knöbl|Marko Knöbl]], [[User:MinhHaDuong|Minh]]&lt;br /&gt;
&lt;br /&gt;
'''No votes''':&lt;br /&gt;
&lt;br /&gt;
::OpenmokoIT still do some research now. [[User:Coolcat|coolcat]]&lt;br /&gt;
&lt;br /&gt;
::Then fix the search function (by restoring the standard MediaWiki search function). Anyway they are [[Special:Allpages/Openmoko:]]. Anyway, any links like [[Special:Allpages/Openmoko:]] will break, unless you use [[Special:Allpages/Project:]]. Furthermore, the longer the name of the Project ($wgSitename) becomes, the longer the UTF-8 translations of it will become, and as e.g., for Chinese UTF-8 at 3*3=9 ASCII %XX%XX%XX per character, you'll end up with mile long URLs before long, that is if one day the site becomes fully translated. [[User:Jidanni|Jidanni]] 01:04, 22 November 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Organize translations ==&lt;br /&gt;
&lt;br /&gt;
I suggest moving the translations to sub-wikis, like the way wikipedia does it. Currently all translations show up in searches and under category-lists. --[[User:Johndoesacc|Johndoesacc]] 12:03, 25 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
+1. See issues and solutions for a multilingual mediawiki at:&lt;br /&gt;
http://www.mediawiki.org/wiki/Multilingual_MediaWiki&lt;br /&gt;
Also, the correspondence between translation should be maintained with tags:&lt;br /&gt;
http://en.wikipedia.org/wiki/Help:Interlanguage_links&lt;br /&gt;
The request [http://lists.openmoko.org/pipermail/documentation/2008-September/000557.html has been heard] but maybe not in the right places. What is the best operational frequency to ping the hosting engineers for that ? [[User:MinhHaDuong|MinhHaDuong]] 13:02, 10 September 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
After discussion on the Documentation ML, sub-wikis are out. We want to try namespaces. [[User:MinhHaDuong|MinhHaDuong]] 09:31, 7 October 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Symlinks in download directories ===&lt;br /&gt;
&lt;br /&gt;
This is not strictly Wiki issue, but discussed on the documentation list as being a serious usability disadvantage. Symlinks and .tar.gz files should be removed from the release directories because they confuse users. Ref: [http://lists.openmoko.org/pipermail/documentation/2008-September/000808.html]&lt;br /&gt;
&lt;br /&gt;
=== Improve README.html ===&lt;br /&gt;
&lt;br /&gt;
Example: http://downloads.openmoko.org/releases/Om2008.9/README.html&lt;br /&gt;
&lt;br /&gt;
It should at least link to: [[Om_2008.9_Update#Download_and_Flashing]]&lt;br /&gt;
&lt;br /&gt;
== Rejected requests ==&lt;br /&gt;
&lt;br /&gt;
When a requested Wiki Issue is voted for not to be done, it must be moved here, to make sure it won't get continously requested again.&lt;br /&gt;
&lt;br /&gt;
* '''Don't translate the wiki - rejected''' proposed by [[User:Minime|Minime]] August 2007, moved to rejected by [[User:Kempelen|Kempelen]] August 2008: the Documentation Team looks to support the idea.&lt;br /&gt;
* '''Use namespaces to separate user-oriented and developper-oriented content'''. Assuming the default namespace is user-oriented that would exclude developper-oriented pages from searches (unless the user ticks the box, but who does ?). And it can't be done purely in the wiki, it needs admin time. Better to use categories and a prefix in the page name (like BlendeWiki). [[:User:MinhHaDuong|MinhHaDuong]]&lt;br /&gt;
* '''Use category pages instead List Pages''' Good list pages are allowed and encouraged, as the documentation team today agreed on the mailing list. [[User:Kempelen|Kempelen]] 21:27, 30 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Editing]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Why_Openmoko</id>
		<title>Why Openmoko</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Why_Openmoko"/>
				<updated>2008-11-27T22:45:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: add reality check&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Why_Openmoko}}&lt;br /&gt;
&lt;br /&gt;
This article discusses the pros and cons of various operating systems for the mobile platform, and tells us why Openmoko is the true ‘open’ platform. &lt;br /&gt;
&lt;br /&gt;
There are many mobile platforms that exist on this planet today. The situation is very similar to the desktop segment, where we have operating systems like GNU/Linux, BSD, Mac OS X, Windows and a few others. To me, the fact that Linux is an open source model makes it a much better OS. We also have great mobile operating systems like Symbian, Windows Mobile Platform and Linux. But none of these are really ‘open’. Surprised to see Linux in this list? Linux as a mobile OS comes in different shapes and sizes that are not very compatible with each other, as there are many different implementations of the platform. There are no common APIs available for developers to build on top of. Examples include implementations from Motorola and MontaVista. At least, this is not the case with proprietary OSs such as Symbian and Windows Mobile. They provide abundant information to aid third-party programmers to build on their platform. &lt;br /&gt;
&lt;br /&gt;
Let us now set aside all this for a while and concentrate on a Linux-based mobile platform project called Openmoko—a project that combines the true essence of open source with a rich application-programming interface. Openmoko is a true conversion of the desktop Linux into mobile Linux, which doesn’t bring in any non-standard or hidden aspects. It was built using standard X-server, GTK, ALSA, Dbus and so on. The beauty is that even the hardware platform is as open as the software platform. Openmoko makes use of a standard platform to make the mobile environment complete. Even the circuit-board hackers will find Openmoko a dream come true!&lt;br /&gt;
&lt;br /&gt;
==What is wrong with the others? ==&lt;br /&gt;
&lt;br /&gt;
Let’s now take a look at what is seriously wrong.&lt;br /&gt;
&lt;br /&gt;
===Symbian OS===&lt;br /&gt;
&lt;br /&gt;
First up is the Symbian OS, considered the Windows of the mobile world. More than 75 percent of the smart phones sold today, run Symbian, and it’s perhaps the most developed mobile operating system, backed by such industry leaders as Nokia, Motorola, Sony and Lenovo. But there are a few things I don’t like about Symbian, which I’m listing below.&lt;br /&gt;
&lt;br /&gt;
*'''A proprietary OS:''' Symbian is a closed source OS developed by Symbian Ltd, and perhaps the worst thing about it is that it uses open programs like GCC, Java, Perl and many others in its SDK, but doesn’t share its code base or support any open source OS for its application development.&lt;br /&gt;
&lt;br /&gt;
*'''A restricted development environment:''' Symbian only supports Windows for application development. There is no official SDK that can be used with Linux or Mac OSX. What is ironic is that most of Symbian’s SDK components will fail without the supporting open source programs.&lt;br /&gt;
&lt;br /&gt;
*'''Poor backward compatibility:''' Every new version of the OS breaks the code. You can’t just recompile the code and run the application on a new platform. You need to re-write the whole application to support the code.&lt;br /&gt;
&lt;br /&gt;
*'''High-end systems requirements:''' Symbian phones require a pretty decent hardware configuration to run properly. Even if you do have that, you may come across messages like “Out of Memory”. I am sure that many of our readers using Nokia smart phones are already aware of this.&lt;br /&gt;
&lt;br /&gt;
*'''Difficult to program:''' Even though it offers a rich set of APIs, these are difficult to program. You may say that Symbian supports many programming languages, but remember — if you really want to program, you must know that Symbian C++ is very different from the standard C++, and hence has a very steep learning curve.&lt;br /&gt;
&lt;br /&gt;
*'''Confused UI platforms:''' Symbian uses two confusing and mutually incompatible UI platforms— namely, S60 (formerly Series 60) and User Interface Quartz (UIQ). For developers, this means that even though you are developing for Symbian, you need to learn UI specific details in order to be up and running.&lt;br /&gt;
&lt;br /&gt;
*'''Poor developer support:''' Starting with Symbian 9, the company has started punishing third-party developers. Most of the phone features are open only to subscribers of Symbian Signed. If you are not a member of the Symbian Signed programme, then you won’t be able to make use of many core features of the OS.&lt;br /&gt;
&lt;br /&gt;
*'''Version lock:''' The OS doesn’t support OS upgradation—if your machine has got Symbian 9.1, it will remain as it is as long as you use it. You won’t be able to upgrade it to a later version of the same OS. So you are bound to live in the Stone Age unless you spend a fortune on getting a new device with a newer OS.&lt;br /&gt;
&lt;br /&gt;
*'''Symbian is a mobile-only OS:''' You can’t use your existing skills to build on it. Or, in other words, you can’t use your Symbian skills anywhere else.&lt;br /&gt;
&lt;br /&gt;
===Windows Mobile===&lt;br /&gt;
&lt;br /&gt;
Considering Symbian drawbacks, Symbian is not exactly like Windows on the desktop, even though it is doing quite well. Windows is better than Symbian in some ways. It has got better developer support and has a plethora of developer documentation available. Visual Studio is an excellent IDE for it. But there are a few things I don’t like about Windows Mobile too.&lt;br /&gt;
&lt;br /&gt;
*'''Microsoft vendor lock:''' Nothing is worse than a vendor lock-in, where the keys of the locks are with Microsoft.&lt;br /&gt;
*'''Closed source:''' I don’t need to stress on this, do I?&lt;br /&gt;
*'''Microsoft’s partiality:''' When it comes to a Microsoft product, there is always a reasonable amount of partiality. One example is in Windows Mobile 6, where some of the improvements to email and the calendar application require that you have Exchange Server 2007. The situation is exactly like that on the desktop, where you can’t have DX 10 if you don’t have Vista. Remember all those anti-trust cases that Microsoft is facing?&lt;br /&gt;
*'''Poor API support:''' Not all the Windows APIs are available for third party use. You may need to sign an NDA with Microsoft before you want to fully unleash the OS’s potential.&lt;br /&gt;
&lt;br /&gt;
===iPhone===&lt;br /&gt;
Apple's iPhone is very popular, we must take that into consideration as well. iPhone is not exactly a mobile application platform – rather, it is a product name. And, unfortunately, as of today, there is nothing much in store for the developers and end users. Let’s list the disadvantages here as well:&lt;br /&gt;
&lt;br /&gt;
* '''Apple’s insane vendor lock:''' This phone is locked in to Apple and the cellular company, and you as the user, end up paying both.&lt;br /&gt;
&lt;br /&gt;
==Why Openmoko is the best==&lt;br /&gt;
Linux is the best way to program. All that still stands true, as Openmoko is all about programming on Linux itself. And here’s why I think so:&lt;br /&gt;
&lt;br /&gt;
* '''Open source:''' It is truly open source—not only in terms of software, but also in terms of hardware. You get to see all the nuts and bolts behind your excellent phone.&lt;br /&gt;
* '''Built from open source:''' Openmoko is an amazing collection of already popular open source programs to build a mobile development platform.&lt;br /&gt;
* '''Cross-platform development:''' Moving forward, Openmoko SDK will support Windows and Mac too, thus giving you the option to develop on your choice of platform.&lt;br /&gt;
* '''Easy application development:''' Since it makes use of popular technologies, it’s pretty easy to get up and running with Openmoko in a very short period of time. All Linux programmers will feel at home, as Openmoko makes use of popular open source components like GTK, X server, ALSA and so on.&lt;br /&gt;
* '''Low on hardware requirements:''' It doesn’t require a very high-end configuration to run on.&lt;br /&gt;
* '''Great developer support:''' Even though the project is in its infancy, it already has got great community support. Apart from this, all the components used in building Openmoko have their own communities. So, there may already be someone to help you out.&lt;br /&gt;
* '''A very rich API:''' Openmoko has got a very rich set of APIs. A few have been developed exclusively for Openmoko, while the others are simply derived from other projects. Openmoko enables you to use your existing skill set to create the phone applications that you want to.&lt;br /&gt;
&lt;br /&gt;
==The Openmoko Architecture==&lt;br /&gt;
The Openmoko architecture is simple, yet very powerful. Most of it is based on already-available open source technologies. However, new technologies have also been developed exclusively for the platform. Openmoko consists of the following major components:&lt;br /&gt;
[[Image:Software1.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''Linux kernel 2.6 and associated device drivers:''' The project makes use of the vanilla kernel 2.6 series, patched against Openmoko-specific patches. The patch set includes additional support for various embedded devices like USB, SD, touch screen, and communication drivers. All these drivers reside in the kernel space, and are loaded at boot time.&lt;br /&gt;
* '''Linux Core (or system) services:'''&lt;br /&gt;
&lt;br /&gt;
** '''udev:''' It acts as the device manger and maintains all the device nodes in a pseudo /dev filesystem. udev provides a standard way for device components to interact.&lt;br /&gt;
** '''blueZ:''' It is the official LinuxBluetooth stack that is responsible for all Bluetooth related activities in Openmoko.&lt;br /&gt;
** '''Dbus:''' This provides an IPC (inter-process communication) framework. In other words, Dbus allows applications to talk to each other.&lt;br /&gt;
** '''GSM:''' It consists of GSM (the core GSM module), GSMd (a daemon to manage the GSM backend) and libgsm (an API to communicate with the GSM subsystem).&lt;br /&gt;
** '''GPS:''' It consists of GPS (a core GPS module) and GPSd (a daemon to manage the GPS backend).&lt;br /&gt;
&lt;br /&gt;
* '''The user interface (UI)'''&lt;br /&gt;
**'''kdrive:''' It is the thin X server for embedded platforms, which runs directly on a frame-buffer device and supports OpenGL.&lt;br /&gt;
**'''matchbox:''' It is a window manager for embedded platforms. Matchbox has been very popular with its recent adoption in Nokia’s Linux tablet and the One Laptop Per Child project.&lt;br /&gt;
**'''GTK:''' This cross-platform widget toolkit is popular due to its truly open source nature and wide cross-platform support. GTK sits behind the popular desktop environment GNOME. UPDATE: Qt is now supported widget.&lt;br /&gt;
**'''ALSA:''' The Advanced Linux Sound Architecture (ALSA) provides the audio functionality. ALSA is already very popular in Linux systems and is now part of the standard kernel.&lt;br /&gt;
**'''Qtopia:''' It is the robust and commercial-grade mobile phone and PDA platform from Trolltech, and arguably much more than just a GUI toolkit.&lt;br /&gt;
* '''The application framework:'''&lt;br /&gt;
**'''Core (libmokocore):''' This provides the core functionality to the framework, such as the switching device, reading/ writing data, application-toapplication signalling, etc. It makes use of the Dbus and Gconf packages.&lt;br /&gt;
**'''.Net (libmokonet):''' It provides the core networking functionality to the framework. It makes use of libgsm, bluez-lib and libgps.&lt;br /&gt;
**'''UI (libmokoui):''' It provides the UI programming capabilities to the platform and makes use of GTK and ALSA (for applications interacting with audio devices). The standard GTK has been customised to provide a rich mobile application-development experience.&lt;br /&gt;
**'''PIM (libmokopim):''' Provides the core PIM (personal information management) capabilities. It makes use of the embedded Evolution data server.&lt;br /&gt;
* '''Applications:'''&lt;br /&gt;
**'''X11 applications:''' Standard X11 applications linked to libX11.&lt;br /&gt;
**'''Finger applications:''' Includes the dialler, menu, media player, etc.&lt;br /&gt;
**'''Stylus applications:''' Includes contacts, messages, search applications, etc.&lt;br /&gt;
**'''Third-party applications:''' Various heavy-duty applications like Web browsers, instant messaging applications, etc.&lt;br /&gt;
&lt;br /&gt;
Subsequent to this quick introduction to the upcoming Openmoko platform, in forthcoming articles I’ll show you how to build and run Openmoko applications. The experience is like hacking the world’s best phone environment at your workbench—and yes, nobody is going to sue you! Dont forget to post in your comments at kunaldeo at gmail.com&lt;br /&gt;
&lt;br /&gt;
--[[User:Kunaldeo|Kunaldeo]] 10:54, 30 June 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
==But what if somebody important calls?==&lt;br /&gt;
The reader should still be aware that Openmoko is not the fully polished product&lt;br /&gt;
as some of the other phones on the market. However, with your help...&lt;br /&gt;
&lt;br /&gt;
[[Category:Distributions]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Flashing_the_Neo_FreeRunner</id>
		<title>Flashing the Neo FreeRunner</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Flashing_the_Neo_FreeRunner"/>
				<updated>2008-11-27T22:28:36Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: see also Qi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Flashing_the_Neo_FreeRunner}}&lt;br /&gt;
Openmoko regularly releases updated versions of the Openmoko root filesystem, the [[kernel]], and the [[Bootloader| U-Boot]] as binary images. These may be programmed into the Flash memory (NAND) of Neo FreeRunner. For that, you can use the USB cable and another computer which will run an Openmoko-provided tool to flash the Neo FreeRunner &amp;quot;through&amp;quot; USB.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
All the components of the software in the FreeRunner are bundled together into binary images.&lt;br /&gt;
&lt;br /&gt;
On a desktop computer when you want to replace the operating system (OS), you would boot it from a CD-ROM drive, then copy OS files from the CD to the internal hard drive. The FreeRunner does not have a CD-ROM drive and files must typically be re-written/flashed directly into internal storage (NAND flash).  It is also possible to load all the OS files to and boot from a microSD.&lt;br /&gt;
&lt;br /&gt;
The FreeRunner has two kinds of internal program storage: NOR flash and NAND flash. The NOR flash is small and stores only a special boot program used when you need to re-write the contents of the NAND flash. NAND flash acts more like a hard drive.&lt;br /&gt;
&lt;br /&gt;
Usually it is not necessary to re-write the the NOR flash. Instructions to do so is here: [[Flashing NOR]].&lt;br /&gt;
&lt;br /&gt;
The NAND Flash is divided into 3 partitions for the bootloader, kernel, and root filesystem - so each of these components can be flashed separately. For example if you are trying to install a modified kernel, you only have to follow the steps to flash the kernel image.&lt;br /&gt;
&lt;br /&gt;
* '''bootloader''': a small program that runs first and starts everything else when the FreeRunner is powered on or reset (depending on [[Booting the Neo FreeRunner|how you reset it]], the version from NOR or NAND is booted).&lt;br /&gt;
* '''kernel''': the central component in the Linux operating system.&lt;br /&gt;
* '''root filesystem''': contains all the files that make up the commands and applications that you can run.&lt;br /&gt;
 &lt;br /&gt;
'''Before you start: Erasing the root filesystem or flashing the uboot are radical measures. Take the time to ponder the necessity. Sometimes problems can be fixed by updating only the kernel.'''&lt;br /&gt;
&lt;br /&gt;
== Alternative : running from microSD card ==&lt;br /&gt;
&lt;br /&gt;
You may install this distribution on the microSD card, in order to [[Booting from SD | boot from microSD card]]. That allows you to keep another distribution installed in NAND (for instance to test 2008.08 while still having 2007.2 for default boot).&lt;br /&gt;
&lt;br /&gt;
== Collect the things you need ==&lt;br /&gt;
&lt;br /&gt;
=== Download the DFU-util program ===&lt;br /&gt;
&lt;br /&gt;
You will download that program on your desktop computer. It will allow you to connect to the FreeRunner through the USB cable and control its bootloader. That connection uses a special protocol which addresses the bootloader's interface, and differs from USB networking. There is a separate page to describe it in more detail: [[dfu-util]].&lt;br /&gt;
&lt;br /&gt;
'''MacOS X:''' [[MacOS_X#Graphical_Flashing_with_Openmoko_Flasher]]&lt;br /&gt;
&lt;br /&gt;
'''Linux:''' http://downloads.openmoko.org/daily/dfu-util&lt;br /&gt;
&lt;br /&gt;
Make sure it is executable by setting the permissions with this command: chmod a+x dfu-util&lt;br /&gt;
&lt;br /&gt;
'''Linux 64-bit:''' You need 64-bit version of dfu-util, which usually can be found in your distribution repository.&lt;br /&gt;
If your destribution does not provide 64-bit dfu-util, or it consistently fails with a &amp;quot;-62&amp;quot; error, you have two ways to go:&lt;br /&gt;
# Seek for 32-bit machine and do flashing form it.&lt;br /&gt;
# Use 32-bit chroot (on amd64 debian). Worked for me --[[User:Bubak|Bubak]] 16:54, 4 September 2008 (UTC).&lt;br /&gt;
&lt;br /&gt;
'''Windows:''' http://projects.openmoko.org/frs/?group_id=166&amp;amp;release_id=162&lt;br /&gt;
&lt;br /&gt;
See additional driver installation instructions for Windows at [[Dfu-util-windows]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Note:''' While there has been some limited success reported using dfu-util from within a Virtual Machine (such as VMware), in general it is not possible to use dfu-util in this fashion.  You must use dfu-util on an operating system that has direct access to the physical USB device hardware.''&lt;br /&gt;
&lt;br /&gt;
=== GUI for DFU-util ===&lt;br /&gt;
&lt;br /&gt;
Optionally, you may want to use this GUI tool instead the dfu-util commands: [[NeoTool]] &lt;br /&gt;
&lt;br /&gt;
=== Download the image files that you will need ===&lt;br /&gt;
&lt;br /&gt;
Exactly what files you need depends on what you are trying to install. In most cases you will need to install a Kernel (uImage) and a Root Filesystem (rootfs). In rare cases, when there is a bug you need fixed, you will also install a new bootloader.&lt;br /&gt;
&lt;br /&gt;
Please read [[Distributions]] for choosing the distribution which fits your needs, and then see [[Download]] for downloading.&lt;br /&gt;
&lt;br /&gt;
== Boot the FreeRunner from NOR Flash ==&lt;br /&gt;
&lt;br /&gt;
[[Image:menu15.jpg|thumb|Booting from NOR Flash]]&lt;br /&gt;
&lt;br /&gt;
# Read the other sections of this page first, because you will have 30 seconds to enter the flashing commands, come back here when ready.&lt;br /&gt;
# Do not connect the USB cable from the PC to your Neo FreeRunner yet (disconnect it).&lt;br /&gt;
# Boot your Neo FreeRunner into the NOR uBoot menu for flashing.&lt;br /&gt;
## Press and hold AUX button&lt;br /&gt;
## Press the Power button until the boot menu comes up&lt;br /&gt;
## This menu is labelled '''*** BOOT MENU (NOR) ***'''&lt;br /&gt;
## See also [[Booting the Neo FreeRunner]]&lt;br /&gt;
# Stay in NOR uBoot menu, do not select or enter any item in menu. Now you will be able to flash, make backups of your FreeRunner or query the FreeRunner with dfu-util.&lt;br /&gt;
# The FreeRunner only stays at the NOR boot prompt for about 30 seconds and then shuts off unless you do something.&lt;br /&gt;
# Connect your Neo to the GNU/Linux or Windows host via a USB cable.&lt;br /&gt;
# Now you can enter the dfu-util commands on your PC as described below.&lt;br /&gt;
# If the Neo FreeRunner turns off before you press start flashing ('''screen goes black'''), go back to step 2. If you start flashing in time, the phone will not turn off meanwhile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following, upto dfu-util -l is taken from the thread &amp;quot;Re: FreeRunner (GTK2007.2) has suddenly become unbootable&amp;quot; on the Support list. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the dfu-util connection does '''not''' use Ethernet over USB - that is, you should not attempt to set up a usb0 network interface on your GNU/Linux host desktop (on Windows, you need a DFU class driver, or you can use the LibUSB-Win32 driver described on the [[Dfu-util-windows]] page). The dfu-util utility sets up its own connection to the FreeRunner. In fact, you will not be able to make an Ethernet-over-USB connection to the FreeRunner when it is at the uBoot menu; this type of connection is only available when the FreeRunner has booted fully.&lt;br /&gt;
&lt;br /&gt;
After connecting the FreeRunner to your host via USB cable, you can test whether dfu-util &amp;quot;sees&amp;quot; the FreeRunner by executing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dfu-util -l&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get error messages from the dfu-util command then try again. Often it works on the second try.&lt;br /&gt;
&lt;br /&gt;
dfu-util uses the DeviceFirmwareUpgrade protocol, and may list more than one device. If so, try unplugging the other device (e.g. a USB mouse) or using the -d switch to tell dfu-util which device it should talk to, as described at the relevant bug report [http://docs.openmoko.org/trac/ticket/2039].&lt;br /&gt;
&lt;br /&gt;
Also, please remember to execute the dfu-util command with sufficient privileges (ie. root) -- you will need complete control over the usb bus.&lt;br /&gt;
&lt;br /&gt;
== Do a backup ==&lt;br /&gt;
&lt;br /&gt;
If you have a working image that you're happy with but want to try something different, you should probably do a [[Pre-Flash Backup]].&lt;br /&gt;
&lt;br /&gt;
== Using dfu-util ==&lt;br /&gt;
&lt;br /&gt;
dfu-util can be used to read flash memory, write memory, and get information from the device.&lt;br /&gt;
&lt;br /&gt;
This is the general command format to write an image file to a (predefined) &amp;quot;partition name&amp;quot; (referred to as ''altsetting'' in dfu-util help/manual) :&lt;br /&gt;
&lt;br /&gt;
dfu-util -a ''&amp;lt;altsetting&amp;gt;'' -R -D ''&amp;lt;file_name&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
where:&amp;lt;br&amp;gt;&lt;br /&gt;
-a ''altsetting'' : Specify the altsetting of the DFU interface by name or by number&amp;lt;br&amp;gt;&lt;br /&gt;
-R  : Issue USB Reset signalling once we're finished&amp;lt;br&amp;gt;&lt;br /&gt;
-D  ''file_name'' : Write firmware from ''file_name'' into device&lt;br /&gt;
&lt;br /&gt;
On Linux, you run dfu-util from a command shell prompt. If you have not put it somewhere on your command path you probably need to prefix it with a &amp;quot;./&amp;quot; like this '''./dfu-util'''.&lt;br /&gt;
On some systems you need to be root before this will work and on Ubuntu you must preface the command with &amp;quot;sudo&amp;quot; or you will get the following error: &amp;quot;Cannot claim interface: could not claim interface 2: Operation not permitted&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On Windows, you need to open a command window and run from a command line. Use Start-Run Program and type &amp;quot;cmd&amp;quot; to open a Window.&lt;br /&gt;
&lt;br /&gt;
More detailed manual for dfu-util is available here : [[Dfu-util]]&lt;br /&gt;
&lt;br /&gt;
GUI frontend for dfu-util (and more): [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
== Flashing the Kernel ==&lt;br /&gt;
&lt;br /&gt;
 Note: The phone needs to be in the U-boot bootup menu for this to work.&lt;br /&gt;
       Get there by holding down the aux button while powering up the device.&lt;br /&gt;
&lt;br /&gt;
The command format is &lt;br /&gt;
&lt;br /&gt;
 dfu-util -a kernel -R -D ''/path/to/uImage''&lt;br /&gt;
&lt;br /&gt;
When flashing succeeds the following will be shown:&lt;br /&gt;
&lt;br /&gt;
 status(0) = No error condition is present&lt;br /&gt;
 Done!&lt;br /&gt;
&lt;br /&gt;
Flashing may fail with an error -110. This indicates that the kernel is too big for the default kernel partition. uboot can be used to change the size of the default partitions on the device. It may also mean that you are trying to put the wrong thing in the kernel space.&lt;br /&gt;
&lt;br /&gt;
== Flashing the Root Filesystem ==&lt;br /&gt;
&lt;br /&gt;
The root filesystem has to be an image in jffs2 format. If the file you downloaded is zipped or compressed (has a .gz, bz2, .zip, tar, tar.gz or .tgz extension) you have to uncompress it first.&lt;br /&gt;
&lt;br /&gt;
The command format is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dfu-util -a rootfs -R -D ''rootfs_filename.jffs2''&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''rootfs_filename.jffs2'' is the name of the file containing the root file system.&lt;br /&gt;
&lt;br /&gt;
The flashing process can take up to 15 minutes for a ~70MB image. It is also wise to make sure that your Neo has enough battery charge prior to flashing.&lt;br /&gt;
&lt;br /&gt;
When flashing succeeds the following will be shown:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
status(0) = No error condition is present&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashing the boot loader to the NAND==&lt;br /&gt;
&lt;br /&gt;
{{Note|In most cases you don't need to flash your bootloader. Flash it only if you want to update for a specific feature or due to a specific problem.}}&lt;br /&gt;
&lt;br /&gt;
The boot loader (U-boot) file should have a .bin extension. As with the root filesystem, if the file you downloaded is zipped or compressed (has a .gz or .zip extension) you have to uncompress it first.&lt;br /&gt;
&lt;br /&gt;
The command format is &lt;br /&gt;
&lt;br /&gt;
 dfu-util -a u-boot -R -D ''uboot.bin''&lt;br /&gt;
&lt;br /&gt;
where ''uboot.bin'' is the name of the boot loader binary image file.&lt;br /&gt;
&lt;br /&gt;
''Reminder'': You should have [[Flashing_the_Neo_FreeRunner#Boot_the_FreeRunner_from_NOR_Flash|boot from NOR first]], in order to flash the boot-loader in NAND. After flashing succesfully, make sure you reboot from NAND's newly flashed boot loader, to benefit from the updates.&lt;br /&gt;
&lt;br /&gt;
=== Verifying boot-loader version ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following should probably be moved to [[Bootloader_versions]], IMHO --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Taken from posts by Mikael Berthe &amp;lt;mikael.berthe@lilotux.net&amp;gt; and Torfinn Ingolfsen &amp;lt;tingox@gmail.com&amp;gt; to Support list, subject: Re: Upgrading u-boot needed ? --&amp;gt;&lt;br /&gt;
(Optional) After an upgrade, you may wish to check that the u-boot version matches the one you have just flashed. You can use 'grep  Bootloader /dev/mtdblock1' from a shell on the FreeRunner (and possibly the 1973 as well) to get the '''NAND''' u-boot version, like this:&lt;br /&gt;
   root@om-gta02:~# grep Bootloader /dev/mtdblock1&lt;br /&gt;
   Neo1973 Bootloader U-Boot 1.3.2+gitr18+64eb10cab8055084ae25ea4e73b66dd03cc1a0cb&lt;br /&gt;
&lt;br /&gt;
You can grep for the same string in /dev/mtdblock0 to retrieve the '''NOR''' u-boot version:&lt;br /&gt;
   root@om-gta02:~# grep  Bootloader /dev/mtdblock0&lt;br /&gt;
   Neo1973 Bootloader U-Boot 1.3.2-moko12&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ENDS ... subject: Re: Upgrading u-boot needed ? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot the FreeRunner from NAND ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to boot into the new images.&lt;br /&gt;
&lt;br /&gt;
Pay attention '''to booting from the NAND flash this time''', in particular if you upgraded the boot-loader (in short: 1. press and hold ''power button'' down, and then 2. press ''aux button'')&lt;br /&gt;
&lt;br /&gt;
The boot menu should be labelled '''*** BOOT MENU (NAND) ***''' this time (see [[Booting#Log_into_U-Boot_in_the_NAND_Flash|booting from NAND]] for more detailed instructions).&lt;br /&gt;
&lt;br /&gt;
== A command line script to simplify dfu-util ==&lt;br /&gt;
&lt;br /&gt;
DFUScript developed to assist users who have multiple devices in using dfu-util via the command line. Information on where to download and use DFUScript can be found on [[DFUScript]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Qi]] alternative to uboot&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing Openmoko| ]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/FreeRunner_GPS_antenna_repair_SOP</id>
		<title>FreeRunner GPS antenna repair SOP</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/FreeRunner_GPS_antenna_repair_SOP"/>
				<updated>2008-11-27T03:13:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: fixed sloppy links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This will probably void any warranty.&lt;br /&gt;
Make sure of this before attempting.&lt;br /&gt;
&lt;br /&gt;
'''WARNING''' - Please check the SD-Card interfering Problem first! This should solve the [[GPS Problems]] for most people:&lt;br /&gt;
[[FreeRunner Hardware Issues#GPS_Slow_TTFF]]&lt;br /&gt;
&lt;br /&gt;
'''WARNING''' - Only attempt this repair if you are sure it will correct a GPS problem.&lt;br /&gt;
&lt;br /&gt;
'''WARNING''' - Do not use arcing cold heat soldering tools as the high current could damage sensitive electronics.&lt;br /&gt;
&lt;br /&gt;
'''1. GPS Antenna CON (CON7601)，there are bad soldering issues with this PIN.'''&lt;br /&gt;
&lt;br /&gt;
[[Image:PICT1311.JPG|500px|center]]&lt;br /&gt;
&lt;br /&gt;
'''2. Need to re-solder PIN to improve connection.''' &lt;br /&gt;
&lt;br /&gt;
[[Image:PICT1310.JPG|500px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. There are deformities in the internal GPS connector.''' &lt;br /&gt;
&lt;br /&gt;
[[Image:PICT1312.JPG|500px|center]]&lt;br /&gt;
&lt;br /&gt;
'''4. Use tweezers to pinch the antenna back to original form.'''  &lt;br /&gt;
&lt;br /&gt;
[[Image:PICT1313.JPG|500px|center]]&lt;br /&gt;
&lt;br /&gt;
'''5. Now try re-connecting the antenna.  The antenna should ‘snap’ into place of the connector locking itself firmly.  If it is loose and does not snap, it is possible there will be quality issues.'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Gps.JPG|500px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;br /&gt;
[[Category:GPS]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Booting_the_Neo_FreeRunner_from_SD_via_U-Boot</id>
		<title>Booting the Neo FreeRunner from SD via U-Boot</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Booting_the_Neo_FreeRunner_from_SD_via_U-Boot"/>
				<updated>2008-11-27T02:29:04Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: note Qi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
This page explains how to boot a FreeRunner from the [[Supported_microSD_cards|(micro-)SD card]] rather than from the built-in NAND flash memory. The SD card shares a bus with the GPU, so it may not perform as well, but it is another option.&lt;br /&gt;
&lt;br /&gt;
{{Warning | Booting from SDHC may cause problems at this time (see below).}} &lt;br /&gt;
&lt;br /&gt;
== Booting from SDHC / suspend problems ==&lt;br /&gt;
&lt;br /&gt;
First, a warning. There is a longstanding bug, probably somewhere in the Linux kernel, that tends to eat the partition table of high-capacity SD cards when the system suspends. This is ticket [https://docs.openmoko.org/trac/ticket/1802 #1802]. See [http://thread.gmane.org/gmane.comp.handhelds.openmoko.community/19154/focus=19281| this thread] for explanation of the partition table removal on suspend and maybe other problems related to using high capacity SD cards. A safety net is to keep a written copy of the partition table on paper, just in case one needs to recreate it.&lt;br /&gt;
&lt;br /&gt;
== How it Works ==&lt;br /&gt;
&lt;br /&gt;
On the Neo, [[u-boot]] performs a similar role to the 'grub' bootloader on a PC. U-boot loads a kernel image into memory and then passes a list of parameters to the kernel. These parameters specify, among other things, the device on which the root filesystem is located.&lt;br /&gt;
&lt;br /&gt;
As the kernel boots, it initializes the hardware and then mounts the root filesystem. The kernel then runs &amp;quot;/sbin/init&amp;quot;, which handles the rest of the boot-up sequence (such as displaying the splash screen and progress bar).&lt;br /&gt;
&lt;br /&gt;
This sequence is the same whether the device is booting from built-in Flash or from the SD card. The differences are how the kernel is loaded, and which device is mounted as the root filesystem.&lt;br /&gt;
&lt;br /&gt;
The following sections provide additional details.&lt;br /&gt;
&lt;br /&gt;
=== Menu Entries ===&lt;br /&gt;
&lt;br /&gt;
U-boot menu entries are defined by environment variables named &amp;quot;menu_X&amp;quot; (where X is a number). The value of the environment variable is a string &amp;quot;&amp;lt;label&amp;gt;:&amp;lt;commands&amp;gt;&amp;quot;, where &amp;lt;label&amp;gt; is the text shown on the screen, and &amp;lt;commands&amp;gt; is a sequence of u-boot commands (delimited by ';' characters) to be executed when the menu item is selected. When entering a string of commands, the ';' and '$' characters must be backslash-escaped (&amp;quot;\;&amp;quot; and &amp;quot;\$&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
=== Loading the Kernel ===&lt;br /&gt;
&lt;br /&gt;
A pair of u-boot commands must be used to load the kernel from SD. First is &amp;quot;mmcinit&amp;quot;, which will cause u-boot to detect the card. Next is a command to load a file into memory - either &amp;quot;fatload&amp;quot; or &amp;quot;ext2load&amp;quot; depending on whether the kernel is on a FAT filesytem or an ext2/ext3 filesystem.&lt;br /&gt;
&lt;br /&gt;
The command syntax is:&lt;br /&gt;
&lt;br /&gt;
 fatload mmc 1:&amp;amp;lt;p&amp;amp;gt; 0x32000000 &amp;amp;lt;filepath&amp;amp;gt;&lt;br /&gt;
 ext2load mmc 1:&amp;amp;lt;p&amp;amp;gt; 0x32000000 &amp;amp;lt;filepath&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;lt;p&amp;amp;gt; is the partition number, and &amp;amp;lt;filepath&amp;amp;gt; is the path to the file that is to be loaded.&lt;br /&gt;
&lt;br /&gt;
{{Note| The &amp;quot;ext2load&amp;quot; command is broken on u-boot binary earlier than &amp;quot;20080723&amp;quot;, including the one shipped with the first batch of FreeRunners, are affected by bug [http://docs.openmoko.org/trac/ticket/799 #799]. If you update your U-Boot and kernel packages you can use direct ext2 / 3 boot all in one partition.}}&lt;br /&gt;
&lt;br /&gt;
{{Warning | Be careful when updating u-boot on a Neo1973 as there is a risk of bricking the device (unless you have a debug board). This is not an issue for the FreeRunner as it has a protected copy of u-boot in the NOR flash }}&lt;br /&gt;
&lt;br /&gt;
{{Note| U-Boot supports SDHC protocol on the FreeRunner only: on the Neo1973, u-boot is unable to access SDHC cards (4G or larger). The kernel does have SDHC support on Neo1973, so it is possible to have the root filesystem on SDHC and the kernel on NAND flash to work around it. }}&lt;br /&gt;
&lt;br /&gt;
=== Root Filesystem Parameters ===&lt;br /&gt;
&lt;br /&gt;
The contents of the &amp;quot;bootargs&amp;quot; environment variable are passed to the kernel. Bootargs is a space-delimited list of &amp;quot;name=value&amp;quot; definitions. The items relevant to SD-booting are &amp;quot;root&amp;quot;, &amp;quot;rootfstype&amp;quot;, and &amp;quot;rootdelay&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
For example, the following parameters would tell the kernel to mount the third partition of the SD-card as an ext3 filesystem:&lt;br /&gt;
&lt;br /&gt;
  root=/dev/mmcblk0p3 rootfstype=ext3 rootdelay=5 &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;rootdelay&amp;quot; parameter allows time for the card to be properly initialized before it is accessed. &lt;br /&gt;
&lt;br /&gt;
Note that the kernel must have built-in support (i.e. not a module) for the filesystem specified in &amp;quot;rootfstype&amp;quot;. The default Openmoko kernel configs as of [http://git.openmoko.org/?p=kernel.git;a=commit;h=642cbda5f3b7e7a61512426e1d30a41ab4691123| 2008-07-17] have built-in support for both ext2 and ext3. You can check the available filesystems with the Linux command&lt;br /&gt;
&lt;br /&gt;
 less /proc/filesystems&lt;br /&gt;
&lt;br /&gt;
It is not possible to use VFAT for the root filesystem.&lt;br /&gt;
&lt;br /&gt;
==== ext2 vs. ext3 ====&lt;br /&gt;
&lt;br /&gt;
Opinion is divided on whether it is better to use ext2 or ext3 for the root filesystem. Ext3 in general is a superior choice, because it is a journalled filesystem and so does not require a long 'fsck' (file system check) after an unclean shutdown. However, if used on a flash device that does not support wear-leveling then ext3 may cause premature wear on the blocks of the card where the journal is stored. SD cards are supposed to support wear leveling, but this can not be guaranteed for all vendors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acquiring a tarfile rootfs ==&lt;br /&gt;
&lt;br /&gt;
There are two ways of acquiring an rootfs image as a tar archive. You can either build it on your own using the OpenEmbedded Distribution. Or download it from the openmoko buildhost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Possibility 1: Downloading the rootfs/kernel tar from the Openmoko buildhost ===&lt;br /&gt;
&lt;br /&gt;
Choose and find the rootfs/kernel combo you would like to install at [[Latest Images]].&lt;br /&gt;
&lt;br /&gt;
=== Possibility 2: Building a tarfile distribution using OpenEmbedded ===&lt;br /&gt;
&lt;br /&gt;
Another possibility to get a tar archive of your rootfs is to build it on your own with the OpenEmbedded environment.&lt;br /&gt;
&lt;br /&gt;
To build OM-2007.2 you need to add &amp;quot;tar&amp;quot; to the image types in your ''local.conf'':&lt;br /&gt;
&lt;br /&gt;
 IMAGE_FSTYPES = &amp;quot;jffs2 tar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After that build a new image by issuing:&lt;br /&gt;
 &lt;br /&gt;
 bitbake openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
or if you are using the MokoMakefile: &lt;br /&gt;
 &lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
After the process finished there will be a ''Openmoko-....tar'' in the deploy directory, which is your newly created rootfs archive&lt;br /&gt;
&lt;br /&gt;
=== Possibility 3 : Convert a jff2 image to a tarfile ===&lt;br /&gt;
&lt;br /&gt;
See [[Userspace root image]] for more details on how to access contents of a jffs2 image.&lt;br /&gt;
&lt;br /&gt;
== Prepare the SD card ==&lt;br /&gt;
&lt;br /&gt;
=== Partioning the SD card ===&lt;br /&gt;
&lt;br /&gt;
u-boot pre-2008-07-23 can only boot from FAT filesystems; if you update u-boot, you can boot from FAT or ext2.&lt;br /&gt;
This example shows how to do an example partition using the fdisk utility. Feel free to use the partitioning utility of your liking for this task.&lt;br /&gt;
&lt;br /&gt;
 fdisk /dev/mmcblk0&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' The device file might differ on your system. If you are not sure about it, you may check your kernel message log by calling ''dmesg'' to find the correct device.&lt;br /&gt;
&lt;br /&gt;
We will now create a 8 MB partition for our kernel and another one for the rootfs which will take up all the remaining space.&lt;br /&gt;
&lt;br /&gt;
   Command (m for help): d&lt;br /&gt;
   Selected partition 1&lt;br /&gt;
   Command (m for help): n&lt;br /&gt;
   Command action&lt;br /&gt;
      e   extended&lt;br /&gt;
      p   primary partition (1-4)&lt;br /&gt;
   p&lt;br /&gt;
   Partition number (1-4): 1&lt;br /&gt;
   First cylinder (1-983, default 1):&lt;br /&gt;
   Using default value 1&lt;br /&gt;
   Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M&lt;br /&gt;
   Command (m for help): n&lt;br /&gt;
   Command action&lt;br /&gt;
      e   extended&lt;br /&gt;
      p   primary partition (1-4)&lt;br /&gt;
   p&lt;br /&gt;
   Partition number (1-4): 2&lt;br /&gt;
   First cylinder (18-983, default 18):&lt;br /&gt;
   Using default value 18&lt;br /&gt;
   Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):&lt;br /&gt;
   Using default value 983&lt;br /&gt;
   Command (m for help): w&lt;br /&gt;
   The partition table has been altered!&lt;br /&gt;
   Calling ioctl() to re-read partition table.&lt;br /&gt;
   Syncing disks.&lt;br /&gt;
&lt;br /&gt;
''Should probably need to change type of first partition to FAT 16 too ?''&lt;br /&gt;
&lt;br /&gt;
''(type &amp;quot;t&amp;quot; in fdisk, choose the partition 1 and type &amp;quot;6&amp;quot; for FAT16. Check with &amp;quot;p&amp;quot;, then type &amp;quot;w&amp;quot; to write)''&lt;br /&gt;
&lt;br /&gt;
''How about a swap partition also?''&lt;br /&gt;
&lt;br /&gt;
if it exits with something like&lt;br /&gt;
&lt;br /&gt;
   Calling ioctl() to re-read partition table&lt;br /&gt;
   fdisk: WARNING: rereading partition table failed, kernel still uses old table:   Device or resource busy&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
   umount /dev/mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
on another shell and try again.&lt;br /&gt;
&lt;br /&gt;
=== Formatting the SD card ===&lt;br /&gt;
&lt;br /&gt;
Just issue the following command to create at FAT filesystem:&lt;br /&gt;
&lt;br /&gt;
 mkfs.vfat /dev/mmcblk0p1&lt;br /&gt;
{{Note|if you do not have mkfs.vfat you must find and install the &amp;quot;dosfstools&amp;quot; package. This package does not seem to be in the official feeds, but an unofficial build may be downloaded from http://members.shaw.ca/mmontour/neo/dosfstools_2.11-r0_armv4t.ipk}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second partition is about to be formatted with ext3 (for ext2 to work you need to make sure you compiled the kernel with the correct configuration):&lt;br /&gt;
&lt;br /&gt;
 mkfs.ext3 /dev/mmcblk0p2&lt;br /&gt;
&lt;br /&gt;
== Populate SD card ==&lt;br /&gt;
&lt;br /&gt;
Your sd card is now ready to be filled up with the rootfs and the needed kernel to boot.&lt;br /&gt;
&lt;br /&gt;
Mount the second partition of your SD card somewhere and put the image on it:&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mmcblk0p2 /mnt/moko&lt;br /&gt;
 tar -C /mnt/moko/ -xzvf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar.gz&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' As always in this guide the device name as well as the rootfs name needs to be adjusted to your device and filename structure&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' There's a nice gotcha to take care about if you use your host OS automount.  Some hosts mount these removable devices with &amp;quot;nodev&amp;quot; option by default for security.  If the image you are unpacking has a populated /dev directory, the nodes will fail to create as devices then.  If automounting the SD on your host, confirm there are no unexpected mount options by using &amp;quot;mount&amp;quot; command alone to list the mounts.&lt;br /&gt;
&lt;br /&gt;
The next step is to mount the first partition of the sd card and install the kernel on it.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mmcblk0p1 /mnt/mokokernel&lt;br /&gt;
 cp uImage-fic-gta01-latest.bin /mnt/mokokernel/uImage.bin&lt;br /&gt;
&lt;br /&gt;
Or, for some versions of NOR u-boot:&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mmcblk0p1 /mnt/mokokernel&lt;br /&gt;
 cp uImage-fic-gta01-latest.bin /mnt/mokokernel/uimage&lt;br /&gt;
&lt;br /&gt;
(Yes, lower case i and no extension.)&lt;br /&gt;
&lt;br /&gt;
Make sure your kernel is called ''uImage.bin'' (or ''uimage'' for some versions of NOR u-boot). If the u-boot doesn't find the kernel image during boot, [[Bootloader#Using usbtty from Linux|log into the bootloader]] with ''[http://www.airs.com/ian/uucp.html cu]'', mount the partition with mmcinit and check the presence and the name of the kernel image with ''fatls mmc 1:1'' for FAT filesystem or ''ext2ls mmc 1:1'' for ext2 filesystem. Compare this carefully with the result of ''printenv sd_image_name''. Remember that you can modify the environment in NAND FLASH, but not in NOR FLASH, so if you plan to boot from NOR FLASH you have to modify the file name to match the environment variable.&lt;br /&gt;
&lt;br /&gt;
Unmount both the rootfs partition and the kernel partition and make sure all remaining buffers are written to it:&lt;br /&gt;
&lt;br /&gt;
 umount /mnt/moko&lt;br /&gt;
 umount /mnt/mokokernel&lt;br /&gt;
 sync&lt;br /&gt;
&lt;br /&gt;
== Add uboot boot entry ==&lt;br /&gt;
*See also&amp;quot; [[Qi]]&lt;br /&gt;
&lt;br /&gt;
Depending on the revision of the phone and the partition type (ext2/ext3) you are using, it might be necessary to add an entry to the bootmenu to be able to boot the system off your SD card.&lt;br /&gt;
If you are using a FreeRunner and have created an FAT kernel/ext2 rootfs partition you should be able to boot from the card right out of the box, because a boot menu entry for this should already exist in the NOR/NAND boot menu.&lt;br /&gt;
In any other case you should at least make sure the needed entry exists in your menu before proceeding.&lt;br /&gt;
You will need to enter the uboot shell of the NAND boot menu for this. A description on how to connect to the uboot loader shell can be found in this article: [[Uboot#Bootloader_prompt]]. Details on howto get into the NAND boot menu can be found [[Booting#Log_into_U-Boot_in_the_NAND_Flash|here]].&lt;br /&gt;
&lt;br /&gt;
After you read these two references you should be connected to your NAND uboot shell right now. The first thing to do is to set the boot menu timeout to a really high value. Unfortunately if you don't do this, the boot loader will continue booting after the default timeout (60 seconds) even if you are connected to the uboot shell. Just enter the following command to the menu prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv boot_menu_timeout 99999&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will set the timeout to 99999 seconds which should definitely enough time for us finish whatever work we want accomplish in the boot loader shell.&lt;br /&gt;
&lt;br /&gt;
Now we will make sure a appropriate menu item for booting from sd exists, or create it otherwise. You can print the defined boot loader environment by issuing the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If it shows a line beginning with ''menu_'' followed by the commands which are just to follow in this guide, you do not need to create a new menu entry. In any other case please proceed with the following.&lt;br /&gt;
&lt;br /&gt;
Please make sure you are using the correct configuration based on the decisions you made earlier.  For more information on the uboot prompt, see&lt;br /&gt;
* help&lt;br /&gt;
* help &amp;lt;command&amp;gt;&lt;br /&gt;
* and [[Bootloader]] and [[Bootloader commands]].&lt;br /&gt;
&lt;br /&gt;
{{Note| The backslashes (\) are important for uboot to set the command as new environment variable (menu_9) instead of just executing them as soon as enter is pressed.}}&lt;br /&gt;
&lt;br /&gt;
{{Note| Copy and paste may not work depending on your terminal emulator. Commi just works or you can use [[NeoCon|neocon]] terminal emulator and add a per-character delay.  Otherwise, you will have to type in the commandline manually.}}&lt;br /&gt;
&lt;br /&gt;
It is important to distinguish between FAT or ext2 kernel partitions and ext2 or ext3 root partitions at this point.&lt;br /&gt;
&lt;br /&gt;
Please watch partition numbers in the following commands.  In particular, you may need to change some of&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p#&lt;br /&gt;
fatload mmc#&lt;br /&gt;
ext2load mmc#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
depending on which partition number your root and kernel, respectively, are located.  Number starts from unity.&lt;br /&gt;
&lt;br /&gt;
'''Boot entry for FAT kernel+ext3 rootfs partitions:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv menu_9 Boot from microSD (FAT+ext3): setenv bootargs \${bootargs_base} rootfstype=ext3 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot entry for FAT kernel+ext2 rootfs partitions:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv menu_9 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&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or: with additional 'init=/sbin/init' kernel parameter (may be needed for some images):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv menu_9 Boot 200808 from microSD (FAT+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} init=/sbin/init ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot entry for ext2 kernel+ext2 rootfs partitions: (requires newer u-boot)'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv menu_2 Boot from microSD part2 (ext2+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot entry for kernel and rootfs on same ext2 partition (tested with Qtopia/requires newer u-boot)'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv menu_3 QTopia: setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p1 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1:1 0x32000000 \${sd_image_name}\; bootm 0x32000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You are nearly done. Just issue a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and verify that your newly created entry is correctly displayed (This time the backslashes are not displayed anymore).&lt;br /&gt;
&lt;br /&gt;
If everything looks fine enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
into the prompt and press enter. The new configuration should now be saved to the NAND.&lt;br /&gt;
&lt;br /&gt;
Shutdown your neo with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
neo1973 power-off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After you restarted the Neo and got back to the NAND boot menu you should be able to select your newly created menu entry and successfully boot into the rootfs from your SD card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you got error when loading kernel, add sleep to boot entry.&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcinit\; ext2load mmc 1 0x32000000 \${sd_image_name}\;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcinit\; sleep 1\; ext2load mmc 1 0x32000000 \${sd_image_name}\;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
See also [[Moving current system from flash to SD]] which shows how to move the running system currently running in flash to an SD card, in order to keep a backup system on SD on which to boot from.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Boot from SDHC ===&lt;br /&gt;
&lt;br /&gt;
{{Note|the following text was written for the Neo1973. SDHC and SD should both work in a FreeRunner if you have u-boot from 2008-07-23 or later.}}&lt;br /&gt;
&lt;br /&gt;
As SDHC is not supported in older u-boot versions you can't use the Booting from SD guide.&lt;br /&gt;
But there's a kind of workaround that is a good option to have at least your rootfs on the microSDHC:&lt;br /&gt;
&lt;br /&gt;
First you can follow Step 1 to get an kernel-image with mmc- and ext2-support. But instead of copying the image to the rootfs you will have to flash it to the Neo's internal NAND-Flash (using [[Dfu-util]]).&lt;br /&gt;
Now you can continue with Step 2 (like mentioned before you do not have to copy your uImage to the rootfs) and follow the instructions to Step 3.&lt;br /&gt;
Instead of the setenv commands in Step 3 you have to enter the following:&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv menu_5 Boot from SDHC: setenv  bootargs root=/dev/mmcblk0p1 console=tty0 rootdelay=5 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000&lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
And that's it!&lt;br /&gt;
Now you can use the newly created menu option &amp;quot;Boot from SDHC&amp;quot; to boot the internal kernel, using the root-filesystem on the microSDHC.&lt;br /&gt;
&lt;br /&gt;
=== Autoboot from SDHC ===&lt;br /&gt;
&lt;br /&gt;
Maybe you want to Boot automatically from SDHC: &lt;br /&gt;
Set a new Bootmenu Entry for booting from NAND first&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv menu_6 Boot from NAND: setenv bootargs \${bootargs_base} \${mtdparts}\; nand read.e 0x32000000 kernel\; bootm 0x32000000&lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
then Power-off, and enter the Bootmenu to test the new Entry.If you can boot from NAND, shutdown, enter Boot menu, connect to bootloader and set the (auto)bootcmd for boot from SDHC:&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv bootcmd setenv bootargs root=/dev/mmcblk0p1 rootdelay=10 console=tty0 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 &lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
Now you boot from SDHC everytime you press the Power-Button or reboot and if you like to boot from NAND -just use the bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing udev automount ===&lt;br /&gt;
&lt;br /&gt;
Udev automatically mounts the SD Card in /media/mmcblk0p1/ you can disable this with&lt;br /&gt;
&lt;br /&gt;
 echo /dev/mmcblk &amp;gt;&amp;gt; /etc/udev/mount.blacklist&lt;br /&gt;
&lt;br /&gt;
=== Remarks on Kernel Parameters ===&lt;br /&gt;
&lt;br /&gt;
==== loglevel ====&lt;br /&gt;
&lt;br /&gt;
Some people suggested adding:&lt;br /&gt;
&lt;br /&gt;
 loglevel=8&lt;br /&gt;
&lt;br /&gt;
to the kernel command line. IF you also have &amp;quot;console=tty0&amp;quot; on your kernel commandline this makes the boot process extremely slow because the framebuffer (the neo display in text mode) has to print out tons of lines of debug messages like:&lt;br /&gt;
&lt;br /&gt;
 s3c2410-sdi s3c2410-sdi: ......&lt;br /&gt;
 mmc0: ....&lt;br /&gt;
&lt;br /&gt;
{{Languages|Booting_from_SD}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced End User]]&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/USB_host</id>
		<title>USB host</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/USB_host"/>
				<updated>2008-11-27T01:46:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: remove unnecessary `&amp;quot;'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|USB host}}&lt;br /&gt;
The mini-USB port on both the Neo 1973 and the Neo FreeRunner supports both USB host and USB device. This opens up a range of possibilities, such as adding USB cameras and USB input devices.&lt;br /&gt;
&lt;br /&gt;
=== Using USB host mode ===&lt;br /&gt;
==== Selecting USB host modes ====&lt;br /&gt;
&lt;br /&gt;
By default, the mini-USB port is in device mode. To tell the Neo that it is logically a host¹):&lt;br /&gt;
&lt;br /&gt;
 # echo host &amp;gt; [[GTA02 sysfs|/sys]]/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&lt;br /&gt;
Independent of the logical mode of the USB port, the Neo FreeRunner can provide 5 volt USB power to an attached USB device. To enable this (not available on Neo 1973):&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Note: You may want to run &amp;lt;code&amp;gt;ifconfig usb0 down&amp;lt;/code&amp;gt; prior to switching to USB host mode, as the Neo's USB networking may not like having its USB port disappear. You'll probably want to ssh into your Neo over WiFi or Bluetooth before starting all of this, alternatively use an on screen keyboard.&lt;br /&gt;
&lt;br /&gt;
Note that in full USB host mode the FreeRunner will power the external device. To avoid draining the battery use a powered USB hub, then on the FreeRunner enable logical host mode:&lt;br /&gt;
&lt;br /&gt;
 # echo host &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&lt;br /&gt;
but NOT electrical host mode&lt;br /&gt;
&lt;br /&gt;
 # echo 0 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Note that powered USB hubs do not send power upstream, that is, into the host. If you wish to power or charge the FreeRunner, you will need a [[Specialized USB cables|special USB cable]].&lt;br /&gt;
&lt;br /&gt;
¹)Debian note: You'll need the ohci-hcd module:&lt;br /&gt;
modprobe ohci-hcd&lt;br /&gt;
&lt;br /&gt;
* NOTE: with [FSO] based distributions one should use the [[Dbus device API|dbus APIs]] and not the method stated above.&lt;br /&gt;
&lt;br /&gt;
==== Returning to USB device mode ====&lt;br /&gt;
After doing whatever is needed to safely remove your device and unplugging it you can remove the provision of 5 volt power and return to device mode.&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo device &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
You can now safely restart USB networking.&lt;br /&gt;
&lt;br /&gt;
==== USB-Mode-Script====&lt;br /&gt;
These simple script is useful to switch the USB-Modes:&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#!/bin/sh&amp;lt;/nowiki&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
grep -q 'host' /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
if [ $? -eq 0 ]&amp;lt;BR&amp;gt;&lt;br /&gt;
then&amp;lt;BR&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo device &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo USB-Port is in device-mode now.&amp;lt;BR&amp;gt;&lt;br /&gt;
else&amp;lt;BR&amp;gt;&lt;br /&gt;
ifconfig usb0 down&amp;lt;BR&amp;gt;&lt;br /&gt;
echo host &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo USB-Port is in host-mode now.&amp;lt;BR&amp;gt;&lt;br /&gt;
fi&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
You can easily create a push button menu item for this: [http://blogs.thehumanjourney.net/finds/entry/usb_host_mode_the_button Instructions]&lt;br /&gt;
&lt;br /&gt;
==== Using a GUI ====&lt;br /&gt;
* Using the packaged push button derived from the script above: [http://blogs.thehumanjourney.net/finds/resource/usbmode-button_0.1_armv4t.ipk Download]&lt;br /&gt;
* [[User:Techiem2|Mark D. Montgomery II]]'s [http://techiem2.net/index.php?/archives/10-Freerunner-USB-Mode-Control-Program.html application] controls all the various modes through a GUI&lt;br /&gt;
* Thomas Vesely's [http://projects.openmoko.org/projects/usbchmod/ project]&lt;br /&gt;
* Using the gtk+ gui [[Framework-settings]]&lt;br /&gt;
* Using openmoko-panel-plugin (confirmation and link needed)&lt;br /&gt;
&lt;br /&gt;
=== Providing power to connected USB devices while in host mode ===&lt;br /&gt;
&lt;br /&gt;
Normally, USB host ports provide power to any connected USB device.&lt;br /&gt;
&lt;br /&gt;
Available power in host mode is the full maximum of 500mA according to USB-specifications on the Neo FreeRunner, and no power is available in host mode on the Neo 1973. If your USB device respects USB-standards and consumes not more than 500mA, you may connect it directly to your Neo FreeRunner.&lt;br /&gt;
&lt;br /&gt;
To provide power to USB devices attached to your Neo 1973, or to provide power to your Neo FreeRunner while USB-device connected, you can provide power by using a (modified [for powering FreeRunner]) powered USB hub (see below), or by manually injecting power into the attached USB device (and Neo FreeRunner) via one of the [[specialized_USB_cables]].&lt;br /&gt;
&lt;br /&gt;
=== Powered USB hubs known to work with the Neo ===&lt;br /&gt;
&lt;br /&gt;
(please add any known to work)&lt;br /&gt;
&lt;br /&gt;
=== Providing power to run and charge the Neo while in host mode ===&lt;br /&gt;
&lt;br /&gt;
A slightly separate issue is power to run and charge the Neo (both types) itself. When the USB port is in device mode, the Neo FreeRunner/1973 can be powered and recharged via the USB port, but when in standard host mode, the Neo FreeRunner is set to provide power and does not charge. Fortunately, control of the direction of power (in or out) is independent of the personality of the USB port (host or device):&lt;br /&gt;
&lt;br /&gt;
To recap, the direction of power can be controlled:&lt;br /&gt;
&lt;br /&gt;
Set to 0 (default), no power is provided at the USB port, charging is enabled, and host 15K pulldowns are removed from D+ and D-:&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Set to 1, provides up to 500mA USB power at the USB port (FreeRunner only), disables charging from USB, and applies 15K pulldowns to USB D+ and D-:&lt;br /&gt;
&lt;br /&gt;
echo 1 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Next, power must somehow be injected. An unmodified powered USB hub only provides power to the connected devices, but not to the connected host, so the only solution here is to modify a USB-hub¹) or to create a custom cable which will inject power into the host. See [[specialized_USB_cables]] for some examples.&lt;br /&gt;
&lt;br /&gt;
(However, as there is a wide range[http://permalink.gmane.org/gmane.comp.handhelds.openmoko.hardware/415]&lt;br /&gt;
of USB hubs out there, one might find power (on a powered USB hub)&lt;br /&gt;
is available already on the hub's mini USB 5 pin socket already, so not need a specialized cable after all!&lt;br /&gt;
Check with a test meter.)&lt;br /&gt;
&lt;br /&gt;
Finally, there is the question of charge rate. The charging logic in the Neo will only charge at 100mA by default. Charging at 500mA will take place only if the charging device responds appropriatly to USB negotiation to increase power consumption. Charging at 1000mA will only take place if the Neo detects the appropriate resistor on the ID pins.&lt;br /&gt;
&lt;br /&gt;
You can manually set the charge rate. See [[Forcing_fast_charge_mode]]&lt;br /&gt;
&lt;br /&gt;
¹) often it's sufficient to short a diode in USB-hub to feed power to the host-connector too.&lt;br /&gt;
# Edit 05 Oct. 2008 : Not being able to find any diode on my ([[User:Henrikz|Henrikz]]) USB Hub (Brand: Equip, Type: 4 port, aluminum) I simply connected +5V (pin 1) from one of the downstream ports to pin 1 of the upstream port.&lt;br /&gt;
&lt;br /&gt;
=== Power Concerns ===&lt;br /&gt;
You'll need to force the Neo to go into fast charge mode, since it can't do its usual power negotiation over USB.&lt;br /&gt;
&lt;br /&gt;
echo -n fast_cccv &amp;gt;  /sys/devices/platform/s3c2410-i2c/i2c-adapter/i2c-0/0-0008/chgmode&lt;br /&gt;
&lt;br /&gt;
(Also this should be done by kernel when seeing 47K at ID-pin)&lt;br /&gt;
&lt;br /&gt;
=== Working Examples ===&lt;br /&gt;
&lt;br /&gt;
==== USB Keyboard ====&lt;br /&gt;
&lt;br /&gt;
Pictures [http://blogs.thehumanjourney.net/finds/entry/20080716 here]&lt;br /&gt;
&lt;br /&gt;
==== Connecting a USB-Stick ====&lt;br /&gt;
[[Image:connecting-usb-stick-1.jpg|thumb|left]]&lt;br /&gt;
I found this adapter, it has 2 Type A jacks, rather cheap (about 5 &amp;amp;euro;).&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-2.jpg|thumb|left]]&lt;br /&gt;
I borrowed the cable from a card reader, it has the same pinout like the cable that comes with the Neo.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-3.jpg|thumb|left]]&lt;br /&gt;
With the above commands I could mount the memory stick.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-4.jpg|thumb|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Neo1973 Hardware]]&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;br /&gt;
[[Category:USB]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Neo_Freerunner_audio_subsystem</id>
		<title>Neo Freerunner audio subsystem</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Neo_Freerunner_audio_subsystem"/>
				<updated>2008-11-26T02:48:34Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: wikify and put header onto table head&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Neo Freerunner (GTA02) inherited the audio subsystem from its older brother the Neo 1973 (GTA01). However, there are a few small differences.&lt;br /&gt;
This page tries to show and explain the differences and points you to the [[Neo_1973_audio_subsystem | Neo 1973]] page whenever it touches the common points (but there may be overlaps for the sake of usability). As wiki pages are, errors and omissions are likely, and your help is welcomed.&lt;br /&gt;
&lt;br /&gt;
==Differences from Neo 1973==&lt;br /&gt;
* There is only 1 (mono) built-in loud speaker instead of 2 (stereo).&lt;br /&gt;
* The Wolfson Codec driver presents 94 separate controls {switches, multiplexers, and volumes} to the alsa system (in both Neos). Unfortunately they are not mapped exactly the same for the GTA01 as for the GTA02.&lt;br /&gt;
&lt;br /&gt;
==Possible sound connections through the Wolfson Codec==&lt;br /&gt;
* &amp;quot;Yes&amp;quot; = Confirmed, alsa state file exists.&lt;br /&gt;
* &amp;quot;No&amp;quot; = Not possible / not desirable.&lt;br /&gt;
* &amp;quot;Should&amp;quot; = Should be possible, not confirmed yet.&lt;br /&gt;
* &amp;quot;?&amp;quot; = Have no idea.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! - !! CPU !! GSM !! Bluetooth&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! GSM&lt;br /&gt;
| ?&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Bluetooth&lt;br /&gt;
| ? || Yes&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Wired Speaker&lt;br /&gt;
| Yes || Yes || ?&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Wired Mic&lt;br /&gt;
| Yes || Yes || ?&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Body Earpiece&lt;br /&gt;
| Should || Yes || ?&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Body Speaker&lt;br /&gt;
| Yes || Should || ?&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Body Mic&lt;br /&gt;
| Should || Yes || ?&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Alsamixer channel controls==&lt;br /&gt;
The ALSA state files are installed by default, and belong to package ''&amp;quot;openmoko-alsa-scenarios&amp;quot;''.&lt;br /&gt;
To see where the files reside, do ''&amp;quot;opkg files openmoko-alsa-scenarios&amp;quot;''.&lt;br /&gt;
Currently they are in ''&amp;quot;/usr/share/openmoko/scenarios/&amp;quot;''.&lt;br /&gt;
&lt;br /&gt;
# State: '''''GSM &amp;lt;-&amp;gt; Built-in Handset''''' (file gsmhandset.state)&lt;br /&gt;
## Mic volume:&lt;br /&gt;
##* Control 48: &amp;quot;Mic2 Capture Volume&amp;quot; (alsamixer name: &amp;quot;Mic2&amp;quot;. Suggested value: max)&lt;br /&gt;
##* Control 12: &amp;quot;Mono Sidetone Playback Volume&amp;quot; (alsamixer name: &amp;quot;Mono sidetone&amp;quot; Suggested value: 5..7(max))&lt;br /&gt;
##* Control 5: &amp;quot;Mono Playback Volume&amp;quot; (alsamixer name: &amp;quot;Mono&amp;quot; Value: as needed)&lt;br /&gt;
## Speaker volume:&lt;br /&gt;
##* Control 6: &amp;quot;Bypass Playback Volume&amp;quot;&lt;br /&gt;
##* Control 4: &amp;quot;Speaker Playback Volume&amp;quot;&lt;br /&gt;
# State: '''''GSM &amp;lt;-&amp;gt; Built-in Handsfree''''' (file gsmspeakerout.state)&lt;br /&gt;
## Mic volume:&lt;br /&gt;
##* Control ?:&lt;br /&gt;
## Speaker volume:&lt;br /&gt;
##* Control ?:&lt;br /&gt;
# State: '''''GSM &amp;lt;-&amp;gt; Wired Headset''''' (file gsmheadset.state)&lt;br /&gt;
## Mic volume:&lt;br /&gt;
##* Control 49: &amp;quot;Mic1 Capture Volume&amp;quot;&lt;br /&gt;
##* Control 12: &amp;quot;Mono Sidetone Playback Volume&amp;quot;&lt;br /&gt;
##* Control 5: &amp;quot;Mono Playback Volume&amp;quot;&lt;br /&gt;
## Speaker volume:&lt;br /&gt;
##* Control 6: &amp;quot;Bypass Playback Volume&amp;quot;&lt;br /&gt;
##* Control 3: &amp;quot;Headphone Playback Volume&amp;quot;&lt;br /&gt;
# State: '''''GSM &amp;lt;-&amp;gt; Bluetooth Headset''''' (file ???)&lt;br /&gt;
## Alternative working state files: [http://handheldshell.com/gsm_headset.txt]&lt;br /&gt;
## Mic volume:&lt;br /&gt;
##* Control 13: &amp;quot;Mono Voice Playback Volume&amp;quot;&lt;br /&gt;
##* Control 5: &amp;quot;Mono Playback Volume&amp;quot;&lt;br /&gt;
# State: '''''CPU &amp;lt;-&amp;gt; Built-in Handset''''' (file voip-handset.state)&lt;br /&gt;
## Mic volume:&lt;br /&gt;
##* Control ?:&lt;br /&gt;
## Speaker volume:&lt;br /&gt;
##* Control ?:&lt;br /&gt;
# State: '''''CPU &amp;lt;-&amp;gt; Wired Headset''''' (file headset.state)&lt;br /&gt;
## Stereo sound:&lt;br /&gt;
##* Control ?:&lt;br /&gt;
## Headset output:&lt;br /&gt;
##* Control 94: &amp;quot;Amp Spk Switch&amp;quot; &amp;lt;- false&lt;br /&gt;
# State: '''''CPU &amp;lt;-&amp;gt; Buildin Speaker''''' (file stereoout.state)&lt;br /&gt;
## Mono sound:&lt;br /&gt;
##* Control ?:&lt;br /&gt;
## Headset output:&lt;br /&gt;
##* Control 94: &amp;quot;Amp Spk Switch&amp;quot; &amp;lt;- true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* These files I still don't know what they are for:&lt;br /&gt;
&lt;br /&gt;
--[[User:Femto|Femto]] 12:39, 24 September 2008 (UTC) I've updated above values. Must be checked.&lt;br /&gt;
&lt;br /&gt;
=== Volume Control ===&lt;br /&gt;
&lt;br /&gt;
Angus Ainslie has written a simple [http://n2.nabble.com/Sound-quality-in-calls.-tp1087522p1096155.html python volume control] (which is getting more and more sophisticated) using some of these settings.&lt;br /&gt;
&lt;br /&gt;
Installing the GUI mixer&lt;br /&gt;
&lt;br /&gt;
:Download the the following files&lt;br /&gt;
&lt;br /&gt;
:http://handheldshell.com/pymixer.py&lt;br /&gt;
:http://handheldshell.com/volume.desktop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp pymixer.py /usr/bin&lt;br /&gt;
chmod u+x /usr/bin/pymixer.py&lt;br /&gt;
cp volume.desktop /usr/share/applications&lt;br /&gt;
opkg install python-pygtk&lt;br /&gt;
opkg install http://handheldshell.com/python-pyalsaaudio_0.3-ml0_armv4t.ipk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the python script aborts unexpectedly then look [http://lists.openmoko.org/nabble.html#nabble-td1128064 here] for a fix&lt;br /&gt;
&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;br /&gt;
[[Category:Audio]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Henrikz</id>
		<title>User:Henrikz</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Henrikz"/>
				<updated>2008-11-26T02:13:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: nothing extra needed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Living in: &lt;br /&gt;
* Germany&lt;br /&gt;
Interested in:&lt;br /&gt;
* implementing some rendering stuff (for some unknown reason/purpose)&lt;br /&gt;
* using gpgp and/or implementing encryption/key-signing for e.g. sms&lt;br /&gt;
&lt;br /&gt;
Can be contacted by email &lt;br /&gt;
h e n r i k @ z i m m e r . t o&lt;br /&gt;
&lt;br /&gt;
See my [http://www.henrikzimmer.com/om FreeRunner-Experience-Blog-a-la-Amateur] (btw. in German)&lt;br /&gt;
&lt;br /&gt;
=== Usb Power ===&lt;br /&gt;
To be able to have a keyboard (i.e. FR acting as a USB host) connected to the FreeRunner and charging the FreeRunner (FR acting as a device) at the same time I modified my USB Hub&lt;br /&gt;
* Brand: Equip&lt;br /&gt;
* Type: 4 Port USB2.0 aluminum &lt;br /&gt;
to also supply power to the upstream port of the hub. &lt;br /&gt;
&lt;br /&gt;
Supposedly this is done by shorting a certain diode in the hub, which enables current to reach the upstream port ([[USB_host]]). &lt;br /&gt;
Since I was unable to locate any diode on my hub I decided to do as mentioned here [http://chockerblockablog.blogspot.com/2008/03/neo1973-no-wifi3gbattery-life-no.html Chockerblockablog], that is&lt;br /&gt;
to simply connect the +5V (pin 1) from one of the downstream ports to pin 1 of the upstream port (connected to the FreeRunner).&lt;br /&gt;
[For all the hubs I've bought here in Taiwan, plugging an external power supply into their coaxial port also supplies 5V to the Mini 5 pin socket, as well of course to the 4 USB A sockets. [[User:Jidanni|Jidanni]] 02:13, 26 November 2008 (UTC)]&lt;br /&gt;
Also the FreeRunner needs to be told to 1. Be a host, 2. to charge (faster than 100mA default).&lt;br /&gt;
These are the steps (as I did them, no warranty...)&lt;br /&gt;
* Modify USB Hub by bypassing diode with a jumper OR connect pin 1 (+5V) from downstream port to pin 1 of the upstream port&lt;br /&gt;
* Tell FR to act as a USB Host &lt;br /&gt;
 echo &amp;quot;host&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
* Tell FR to enable charging&lt;br /&gt;
 echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
* The FR is now charging with 100mA&lt;br /&gt;
 cat /sys/class/i2c-adapter/i2c-0/0-0073/usb_curlim&lt;br /&gt;
outputs &amp;quot;100mA&amp;quot;&lt;br /&gt;
* Set charging to 500mA (or more... I wouldn't) [[Forcing_fast_charge_mode]]&lt;br /&gt;
 echo 500 &amp;gt; /sys/class/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous &lt;br /&gt;
* DONE! Now the FR is charging with &lt;br /&gt;
 cat /sys/class/i2c-adapter/i2c-0/0-0073/usb_curlim&lt;br /&gt;
&amp;quot;500mA&amp;quot; and now a Usb keyboard, mouse etc. can be used while charging!&lt;br /&gt;
&lt;br /&gt;
''NOTE: to actually attach the Usb Hub to the FreeRunner, I used a USB gender changer (here are some (other) suggestions [[Specialized_USB_cables]]))''&lt;br /&gt;
&lt;br /&gt;
''NOTE2: Another (solder-less) option is described here [http://tabletblog.com/2006/01/no-solder-usb-host-method.html no-solder-usb-host-method (for a N770, but who cares)]''&lt;br /&gt;
&lt;br /&gt;
''NOTE3: Also, wikipedia is your [http://en.wikipedia.org/wiki/Universal_Serial_Bus USB-friend ]''&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Advertising</id>
		<title>Advertising</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Advertising"/>
				<updated>2008-11-25T02:21:53Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: or no advertising&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Text ==&lt;br /&gt;
* There could be a description of Openmoko/Neo1973 features&lt;br /&gt;
* There could be a short story about what Openmoko/the Neo1973 does different:&lt;br /&gt;
** e.g.: &lt;br /&gt;
 After leaving work your Neo's GPS automatically switches your Alarm Profile from &lt;br /&gt;
 Silent to Loud and guides you to the next gas station. At home, your Neo automatically &lt;br /&gt;
 deploys its WiFi functionality, retrieves your email (free of charge) and activates &lt;br /&gt;
 voice over ip capabilities (free of charge). &lt;br /&gt;
And so on...&lt;br /&gt;
** e.g.: &lt;br /&gt;
 Neo: Hi, I'm a Neo.&lt;br /&gt;
 iPhone: And I'm an iPhone.&lt;br /&gt;
 * iPhone looks on a big map and tries to orientate himself&lt;br /&gt;
 Neo: What are you doing?&lt;br /&gt;
 iPhone: I try to locate myself by using Google Maps.&lt;br /&gt;
 Neo: Oh, that doesn't seem to be very exciting. I use GPS for that kind of stuff. &lt;br /&gt;
 Works automatically.&lt;br /&gt;
 iPhone: GPS, yeah?&lt;br /&gt;
 Neo: Yes. Oh, wait, I'm entering the cinema. I think, it's better for me, to &lt;br /&gt;
 switch to stand-by now. See you after the movie.&lt;br /&gt;
 iPhone: Oh, bye.&lt;br /&gt;
 * Neo leaves, iPhone looks on the map again.&lt;br /&gt;
 iPhone: Oh, here we are! Finally... &lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-July/006141.html]&lt;br /&gt;
** e.g.: &lt;br /&gt;
 Scene: Completely blank white background.&lt;br /&gt;
 Two people enter the frame.&lt;br /&gt;
 Moko: Hi, I'm an Openmoko&lt;br /&gt;
 iPhone: And I'm an iPhone&lt;br /&gt;
 * Openmoko looks like he's enjoying himself&lt;br /&gt;
 iPhone: What are you doing?&lt;br /&gt;
 Moko: Oh, I just downloaded this great new game I came across. Want to try it?&lt;br /&gt;
 iPhone: I, er, I can't play new games. I've got this great game of solitaire, though!&lt;br /&gt;
 Moko: That's a shame. Nothing at all?&lt;br /&gt;
 iPhone: Well, I can play games off the web. Some of them. Want a game of bejeweled?&lt;br /&gt;
 Moko: ...thanks, no. I'm fine.&lt;br /&gt;
[http://lists.openmoko.org/pipermail/community/2007-July/006110.html]&lt;br /&gt;
* There ''should'' be some pre-composed basic information that can be copy'n'pasted into one's Myspace/Facebook/whatever/-profile.&lt;br /&gt;
* There ''should'' be some pre-composed advanced information for press/blogs/mobile service providers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Printed Advertisement ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
Adam Krikstone did some nice Openmoko video ads: (youtube)&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/view_play_list?p=472DE700A3CC70A4 Playlist]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=DCQ7dmGuAU8]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=tQPjfUqp-dk]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=4qP-K1HOMHk]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=S--2HeQqjq4]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=dpwxzEopg60]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EuG2hYiO9AU]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=lGjY7tigdkA]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=YR4ezMgRlWo]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OZC3mjRW5Tg]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=GxsVFG7jHI8]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=62kLhNngE20]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=kR-4VhlsiV8]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sound empathy / Jingle ==&lt;br /&gt;
* There should be some kind of jingle for Openmoko, just like this &amp;quot;Hello Moto&amp;quot; thing from Motorola&lt;br /&gt;
** [http://tetraden.te.funpic.de/openmoko/OpenMoko_free_your_phone02.ogg Number one] (suggestions/whishes? franzkautz@yahoo.de Topic: sth. with Openmoko)&lt;br /&gt;
** [http://tetraden.te.funpic.de/openmoko/OpenMoko_free_your_phone04.ogg Number two] (franzkautz@yahoo.de)&lt;br /&gt;
&lt;br /&gt;
== Thoughts, Notions ==&lt;br /&gt;
=== General Ideas ===&lt;br /&gt;
* '''What is advertised?'''&lt;br /&gt;
* If we advertise a phone by claiming it can do everything maybe no one will buy it.&lt;br /&gt;
* '''Question''': Who is supposed to buy this phone?&lt;br /&gt;
# '''Average Phone User''' probably only wants a phone to make calls. Why would he buy an opensource linux phone with additional command line? We ''need'' reasons for ''him'' to buy a phone running Openmoko:&lt;br /&gt;
#* Easy to use (not implemented though ;-)&lt;br /&gt;
#* Rich and powerfull text input methods&lt;br /&gt;
#* MS Outlook/whatever Sync&lt;br /&gt;
#* Music and video playing capabilities (not fully implemented?)&lt;br /&gt;
#* (please add)&lt;br /&gt;
# '''Advanced Phone User''': won't be hard to persuade him. As we likely are all advanced phone users it will be easy to find reasons/features for him to buy this phone:&lt;br /&gt;
#* GPS-based profiles&lt;br /&gt;
#* Seamless GPS-based GSM/WiFi/VoIP-switching&lt;br /&gt;
#* NFS file sync (maybe possible)&lt;br /&gt;
#* (please add)&lt;br /&gt;
# '''Technophobe Phone User''' really needs some reasons for this phone:&lt;br /&gt;
#* Really easy to use (really not implemented ;-)&lt;br /&gt;
#* Flashy UI look&lt;br /&gt;
#* (please add)&lt;br /&gt;
#'''Businesses/Government''' (Entities willing to roll their own code in-house to get the functionality they desire from a smart-phone)&lt;br /&gt;
&lt;br /&gt;
=== Further Ideas ===&lt;br /&gt;
Something that came to me passing some mobile service provider's outlet today. This should be done when GTA_02 is available and software running.&lt;br /&gt;
&lt;br /&gt;
''A guy walks into a mobile service provider's outlet or approached by the outlet's staff. The guy asks the clerk about their phones and ends up showing him his Neo. He explains him the Neo's features that stand unrivaled to any of the mobile service provider's offered phones and eventually leaves him completly flabbergasted and pondering about the meaning of life and mobile connectivity/whatever'' &lt;br /&gt;
&lt;br /&gt;
--[[User:Minime|Minime]] 16:58, 7 July 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
''A dude dressed in t-shirt and jeans (deja-vu?), walks through a crowded lane. Everyone except him are dressed in prison clothes and march in the opposite direction with their &amp;quot;closed&amp;quot; phones, some of the guys look at this &amp;quot;free&amp;quot; man and stare. To add to the effect we play an ambient techno music and everything is white in colour. The man walks in front of the camera, at that moment, gets a call, smiles and says &amp;quot;Hello World...&amp;quot;, We then fade into the &amp;quot;Free your phone&amp;quot; and &amp;quot;Openmoko&amp;quot; thingy as seen in the rocking youtube videos.''&lt;br /&gt;
&lt;br /&gt;
Source: http://lists.openmoko.org/pipermail/community/2007-July/007551.html&lt;br /&gt;
&lt;br /&gt;
=== Slogans ===&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;The Phone&amp;quot; for &amp;quot;The Matrix&amp;quot; tm.&lt;br /&gt;
 &amp;quot;The One Phone&amp;quot; for Mddle-earth.&lt;br /&gt;
 &amp;quot;The Next Generation Phone&amp;quot; for &amp;quot;Star Trek&amp;quot; tm conventions.&lt;br /&gt;
 &amp;quot;The True Phone&amp;quot; for religious occasions.&lt;br /&gt;
 &amp;quot;The Liberated Phone&amp;quot;&lt;br /&gt;
http://lists.openmoko.org/pipermail/community/2007-July/007122.html&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;The Phone with the only force&amp;quot; (wheel of time)&lt;br /&gt;
 &amp;quot;The diy phone&amp;quot; (steampunk scene)&lt;br /&gt;
 &amp;quot;The ZAT'NI'KATEL'PHONE&amp;quot; (stargate)&lt;br /&gt;
http://lists.openmoko.org/pipermail/community/2007-July/007168.html&lt;br /&gt;
&lt;br /&gt;
 Unleash your phone.&lt;br /&gt;
http://lists.openmoko.org/pipermail/community/2007-July/007141.html&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;The Open Phone&amp;quot;&lt;br /&gt;
 &amp;quot;Our Phone&amp;quot;&lt;br /&gt;
 &amp;quot;The Human Phone&amp;quot; (ok, sounds a bit like Ubuntu)&lt;br /&gt;
 &amp;quot;Free your Phone&amp;quot; (wich obviously is not the same as &amp;quot;The free phone&amp;quot;. It sounds good, and is already used in the youtube ads)&lt;br /&gt;
 &amp;quot;More then a Phone&amp;quot;&lt;br /&gt;
 &amp;quot;Phone++&amp;quot;&lt;br /&gt;
 &amp;quot;The Phone from people to people&amp;quot;&lt;br /&gt;
 &amp;quot;The Freedom Phone&amp;quot;&lt;br /&gt;
 &amp;quot;Teh ub3rz h4ck70r7 Ph0n3!!11oneeleven&amp;quot;&lt;br /&gt;
http://lists.openmoko.org/pipermail/community/2007-July/007171.html&lt;br /&gt;
&lt;br /&gt;
Everyone wants to be an individual these days. How about something like:&lt;br /&gt;
 &amp;quot;The individual phone.&amp;quot;&lt;br /&gt;
 &amp;quot;_Your_ phone.&amp;quot;&lt;br /&gt;
 &amp;quot;Express yourself!&amp;quot;&lt;br /&gt;
 &amp;quot;Express yourphone!&amp;quot;&lt;br /&gt;
 &amp;quot;It's yours.&amp;quot;&lt;br /&gt;
 &amp;quot;It's in your hands.&amp;quot;&lt;br /&gt;
 &amp;quot;It's up to you.&amp;quot;&lt;br /&gt;
 &amp;quot;Expand your Mind!&amp;quot;&lt;br /&gt;
 &amp;quot;Communicate yourself!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wordplays are very good too.&lt;br /&gt;
 &amp;quot;Openmoko - If you call for more.&amp;quot;&lt;br /&gt;
 &amp;quot;Openmoko and you will call attention.&amp;quot;&lt;br /&gt;
 &amp;quot;Openmoko - Don't call for help.&amp;quot;&lt;br /&gt;
 &amp;quot;Openmoko - With a phone jack.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Apparently stupid statements call attention too, I think.&lt;br /&gt;
 &amp;quot;It's mobile&amp;quot;&lt;br /&gt;
 &amp;quot;_You_ can change the battery.&amp;quot;&lt;br /&gt;
 &amp;quot;You can simply buy it.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Testimonials ===&lt;br /&gt;
See: [[Testimonials]]&lt;br /&gt;
&lt;br /&gt;
=== Controversial Issues ===&lt;br /&gt;
* We need to be careful about using copyrighted material (e.g. youtube)&lt;br /&gt;
** Other legal issues...?&lt;br /&gt;
** Be aware of what we are advertising: What functions does Openmoko currently feature, what is planned and what not? Are functions advertised protected by patents?&lt;br /&gt;
* What is the community's goal in advertising? &lt;br /&gt;
** Are we advertising Openmoko?&lt;br /&gt;
** Are we advertising the Neo1973? And if so, is this our job? The Neo1973 is after all, a commerical product.&lt;br /&gt;
&lt;br /&gt;
==Word of mouth==&lt;br /&gt;
Or: ''the phone so cool that you learn about it via word of mouth'',&lt;br /&gt;
as with most open software things, and not via advertising.&lt;br /&gt;
&lt;br /&gt;
Of course you will still have to prove that your grandparents can use it, daily, before you promote it, advertising or not.&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:Openmoko Inc]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Manually_using_Bluetooth</id>
		<title>Manually using Bluetooth</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Manually_using_Bluetooth"/>
				<updated>2008-11-25T02:16:09Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Power it up */use DBUS they tell me&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{InProgress}}&lt;br /&gt;
Bluetooth is one of the core functions of the Neo1973, however it is basically unimplemented on the software side at the moment.&lt;br /&gt;
Hardware problems in the P1 phone mean that the CPU has to be active in order to wake on external bluetooth events, which will reduce the battery life to some 2 days at best in standby.&lt;br /&gt;
&lt;br /&gt;
This page details how to use bluetooth from the command line.&lt;br /&gt;
We have quite a lot of plans about what exactly Bluetooth should be used for.&lt;br /&gt;
&lt;br /&gt;
== Power it up ==&lt;br /&gt;
&lt;br /&gt;
Power up the adapter by clicking on the bluetooth icon in the top bar and selecting power on.&lt;br /&gt;
&lt;br /&gt;
The old way to do it is a shell command (for kernels before 2.6.24):&lt;br /&gt;
&lt;br /&gt;
 root@fic-gta01:~$ echo &amp;quot;1&amp;quot; &amp;gt; /sys/bus/platform/devices/gta01-pm-bt.0/power_on&lt;br /&gt;
&lt;br /&gt;
For kernel 2.6.24 (or later) use&lt;br /&gt;
&lt;br /&gt;
 root@om-gta02:~# echo 1 &amp;gt; /sys/bus/platform/devices/neo1973-pm-bt.0/power_on&lt;br /&gt;
&lt;br /&gt;
and on the GTA02 *only* (i.e. not on the GTA01) also use&lt;br /&gt;
&lt;br /&gt;
 root@om-gta02:~# echo 0 &amp;gt; /sys/bus/platform/devices/neo1973-pm-bt.0/reset&lt;br /&gt;
&lt;br /&gt;
But nowadays[http://permalink.gmane.org/gmane.comp.hardware.smartphones.userland/165], one should use [[Dbus device API]]s!&lt;br /&gt;
&lt;br /&gt;
At the shell, &amp;quot;hciconfig&amp;quot; should print information about the adapter if it powered up properly:&lt;br /&gt;
&lt;br /&gt;
 hciconfig&lt;br /&gt;
&lt;br /&gt;
The devices should show as UP. If not you can use&lt;br /&gt;
&lt;br /&gt;
 hciconfig &amp;lt;device&amp;gt; up&lt;br /&gt;
&lt;br /&gt;
== Bluetooth Functions ==&lt;br /&gt;
&lt;br /&gt;
===Configuring Bluetooth on Openmoko 2007.2 (August 27 snapshot with kernel 2.6.21.6-moko11) ===&lt;br /&gt;
&lt;br /&gt;
In file /etc/bluetooth/hcid.conf you should change the passkey from BlueZ to something numeric. For testing you may use &amp;quot;0000&amp;quot;. Also, you can set the name to &amp;quot;Neo (%d)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Scanning for bluetooth devices ===&lt;br /&gt;
&lt;br /&gt;
 hcitool scan&lt;br /&gt;
&lt;br /&gt;
This will list the addresses of any discoverable bluetooth devices in the vicinity&lt;br /&gt;
&lt;br /&gt;
=== passkey agent example ===&lt;br /&gt;
&lt;br /&gt;
There should be a passkey agent built into openmoko, but for now you can start up the example passkey agent and set the pin code there. This will allow for new pairings to be made when you attempt a connection.&lt;br /&gt;
&lt;br /&gt;
 passkey-agent --default 0000 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Note: the passkey-agent is not required in Openmoko 2007.2 with kernel 2.6.21.6 as of at least since August 27 (maybe earlier).&lt;br /&gt;
&lt;br /&gt;
=== HID (Human Input Device) ===&lt;br /&gt;
&lt;br /&gt;
==== Being able to use HID devices ====&lt;br /&gt;
&lt;br /&gt;
Using a bluetooth keyboard with the built-in terminal is a little funky... I can only type into the console using the bt keyboard if the onscreen keyboard is visible. Also, pressing &amp;quot;p&amp;quot; twice on the bt keyboard actually gives you a &amp;quot;q&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We want to be able to use a bluetooth keyboard to type into the various applications of our Neo1973.&lt;br /&gt;
To use a Bluetooth Keyboard type: (11:22:33:44:55:66 is the Address of your BT-Keyboard)&lt;br /&gt;
&lt;br /&gt;
hidd --connect 11:22:33:44:55:66&lt;br /&gt;
&lt;br /&gt;
and press &amp;quot;Connect&amp;quot; on your BT-KB.  Alternately, if you know that only one BT-Keyboard is within range, you can just:&lt;br /&gt;
&lt;br /&gt;
hidd --search&lt;br /&gt;
&lt;br /&gt;
to find and connect to any BT-Keyboard. There are some bluetooth keyboard only support SPP profile can't direct using hidd comannd to connect. Please reference the discussion of this page for more information.&lt;br /&gt;
&lt;br /&gt;
Tested on:&lt;br /&gt;
* [http://www.logitech.com/index.cfm/products/details/US/EN,CRID=2166,CONTENTID=10717 Logitech Dinovo Edge]&lt;br /&gt;
* [http://www.logitech.com/index.cfm/keyboards/keyboard_mice_combos/devices/164&amp;amp;cl=us,en Logitech Dinovo Media Desktop (keyboard)]&lt;br /&gt;
* [http://www.nokia.es/A4181580 Nokia SU-8W].  Switched on the BT keyboard, scanned for BT address and ran the connect statement above.  Works fine.&lt;br /&gt;
* [http://blog.russnelson.com/chordite Chordite].  This keyboard uses the Broadcom BCM2042 BT keyboard controller along with a custom driver.&lt;br /&gt;
* [http://www.apple.com/keyboard/ Apple's Aluminum Keyboard]. You may have to add 'auth enable; encrypt enable;' to device {} in  hcid.conf. Run the passkey agent the first time. --search works to pair and every time after. (Might be obvious for those who have used BT in other spots, but you have to type in y our passkey on the keyboard as the connect is happening, otherwise pairing doesn't take place. I don't think there is a prompt on the Neo for this)&lt;br /&gt;
* [http://www.apple.com/support/keyboard/ Apple's white &amp;quot;Wireless Keyboard (original)&amp;quot;] - details may be the same as above. (tested some time ago)&lt;br /&gt;
* [http://www.frogpad.com/ FrogPad] - as above&lt;br /&gt;
* [http://freedominput.com The freedom keyboard] and its many rebranded models (they look like this: [http://rabenfrost.net/openmoko/keyboard.jpg]) need 'modprobe uinput' to circumvent the 'Can't open input device: No such file or directory (2)' error of 'hidd --search'. It works as of february 7th 2008.&lt;br /&gt;
* [http://www.nextag.com/Playstation-3-Logitech-Cordless-564345667/prices-html?nxtg=f8320a24052a-7789F8FE732FF6E3 Logitech Playstation 3 Keyboard] Works well, Mouse pad works.&lt;br /&gt;
* [http://corporate.igo.com/product_details.aspx?id=16 iGo Stowaway UltraSlim] (which was apparently discontinued early 2008, but can still be bought in some places) ([[user:ChristW]] I have 2008.8 on it, and using hidd --search to connect to the iGo works perfectly. I also used it to edit a new contact, dial a number and edit a settings text box in [[TangoGPS]]. So far, no problems...)&lt;br /&gt;
* [http://www.vkb-support.com/ I-Tech Virtual Laser Keyboard] works.  Cursor keys not recognized as such, but produce keycodes than can be mapped.&lt;br /&gt;
&lt;br /&gt;
==== Acting as HID device ====&lt;br /&gt;
&lt;br /&gt;
We want to be able to use the Neo as a HID device, being able to use it as controller for presentations. See [[ReMoko]]&lt;br /&gt;
&lt;br /&gt;
=== RFCOMM ===&lt;br /&gt;
&lt;br /&gt;
Here's how to connect to an external Bluetooth GPS and read NMEA data (Tested with a Holux GPSSlim236 and a Nokia LD-3W ).&lt;br /&gt;
&lt;br /&gt;
First, switch on the GPS and identify the BT address:&lt;br /&gt;
&lt;br /&gt;
  hcitool scan&lt;br /&gt;
&lt;br /&gt;
Then, edit /etc/bluetooth/rfcomm.conf, which by default has all settings commented out, to something like this:&lt;br /&gt;
&lt;br /&gt;
  rfcomm0 {&lt;br /&gt;
        # Automatically bind the device at startup&lt;br /&gt;
        bind no;&lt;br /&gt;
        # Bluetooth address of the device&lt;br /&gt;
        device 00:11:22:33:44:55;&lt;br /&gt;
        # RFCOMM channel for the connection (check your GPS docs for details)&lt;br /&gt;
        channel 1;&lt;br /&gt;
        # Description of the connection&lt;br /&gt;
        comment &amp;quot;Bluetooth GPS&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Restart the BT services:&lt;br /&gt;
&lt;br /&gt;
  root@neo:~$ /etc/init.d/bluetooth stop&lt;br /&gt;
  root@neo:~$ /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
You should now be able to bind the GPS to /dev/rfcomm0, like this:&lt;br /&gt;
&lt;br /&gt;
  root@neo:~$ rfcomm bind 0&lt;br /&gt;
&lt;br /&gt;
Confirm the connect:&lt;br /&gt;
&lt;br /&gt;
  root@neo:~$ rfcomm&lt;br /&gt;
  rfcomm0: 00:11:22:33:44:55 channel 1 clean &lt;br /&gt;
&lt;br /&gt;
... and watch the NMEA strings coming from your GPS:&lt;br /&gt;
&lt;br /&gt;
  root@neo:~$ cat /dev/rfcomm0 &lt;br /&gt;
  $GPGGA,111748.000,5907.6964,N,01121.1787,E,1,06,1.2,57.7,M,40.1,M,,0000*6F&lt;br /&gt;
  $GPRMC,111748.000,A,5907.6964,N,01121.1787,E,0.00,94.94,160807,,,A*50&lt;br /&gt;
  $GPVTG,94.94,T,,M,0.00,N,0.0,K,A*3D&lt;br /&gt;
&lt;br /&gt;
If you have nothing better to do, you can now pinpoint my office :-).&lt;br /&gt;
&lt;br /&gt;
=== OBEX ===&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
==== Using PC's connection from Neo ====&lt;br /&gt;
&lt;br /&gt;
===== Bluetooth networking with a Linux system =====&lt;br /&gt;
&lt;br /&gt;
Bluetooth should behave just like our usbnet and provide full TCP/IP access to the phone.  BNEP has to be used.&lt;br /&gt;
&lt;br /&gt;
'''On the laptop'''&lt;br /&gt;
&lt;br /&gt;
* Start bluetooth&lt;br /&gt;
 /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
* Start pand as server&lt;br /&gt;
 pand -s&lt;br /&gt;
&lt;br /&gt;
* As soon as pand is started on the phone configure your IP address&lt;br /&gt;
 ip a add 10.0.0.1/24 dev bnep0&lt;br /&gt;
 ip l set bnep0 up&lt;br /&gt;
&lt;br /&gt;
* Configure IP forwarding and masquerading to your liking (see [[USB_Networking]]). You can even set up Udev rules to do this for you once the bnep0 interface appears.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''On the Neo'''&lt;br /&gt;
&lt;br /&gt;
* There is a little script that does the steps below (and retries the pand -c command; I had issues with it not working the first time every time) at [[Bt-net-script]]  You shouldn't need the other steps below if you use the script.&lt;br /&gt;
&lt;br /&gt;
* Power on bluetooth (see above)&lt;br /&gt;
&lt;br /&gt;
* Scan for the laptop&lt;br /&gt;
 root@fic-gta01:~$ hcitool scan&lt;br /&gt;
 Scanning ...&lt;br /&gt;
 00:0E:6D:C0:0l:6A       Sho&lt;br /&gt;
 00:20:E0:5A:FE:C8       BlueZ (0)&lt;br /&gt;
&lt;br /&gt;
* Connect to the laptop pand&lt;br /&gt;
 root@fic-gta01:~$ pand -c 00:20:E0:5A:FE:C8&lt;br /&gt;
&lt;br /&gt;
* Configure your IP address&lt;br /&gt;
 ip a add 10.0.0.2/24 dev bnep0&lt;br /&gt;
 ip r add default via 10.0.0.1&lt;br /&gt;
&lt;br /&gt;
* Sometimes you may need to bring up the bnep0 on the phone as well:&lt;br /&gt;
 ip l set bnep0 up&lt;br /&gt;
* Enjoy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*--[[User:Mantis|Mantis]] 18:37, 15 October 2008 (UTC)  Note for use on OpenSuse 11.0 - I was getting a connection failure with 'Host is down(112)' errors in /var/log/messages (on neo).&lt;br /&gt;
I found that editing  /etc/bluetooth/hcid.conf  to set  'pscan enable'  instead of 'pscan disable' and making passkey consistent with Neo Freerunner made it work.&lt;br /&gt;
&lt;br /&gt;
Should see log line like&lt;br /&gt;
 ''pand[17965]: New connection from 00:06:6E:XX:XX:XX at bnep0''&lt;br /&gt;
&lt;br /&gt;
if connection is successful in server's /var/log/messages.&lt;br /&gt;
&lt;br /&gt;
===== Bluetooth networking with a MacOS X system =====&lt;br /&gt;
&lt;br /&gt;
Please refer to [[MacOS_X#Bluetooth_2]]&lt;br /&gt;
&lt;br /&gt;
For using the Neo as a dialup Bluetooth server and the Mac as the client, please see below at [[Manually_using_Bluetooth#PPP_Networking]]&lt;br /&gt;
&lt;br /&gt;
===== Bluetooth networking with a Windows XP system =====&lt;br /&gt;
&lt;br /&gt;
This was tested with a Windows XP SP2 on a IBM Thinkpad T41 with the Widcomm BT stack&lt;br /&gt;
&lt;br /&gt;
* Start bluetooth on Windows XP&lt;br /&gt;
&lt;br /&gt;
* Enable &amp;quot;Network Access&amp;quot; in the Bluetooth configuration&lt;br /&gt;
&lt;br /&gt;
* Scan for the Neo and pair with the Neo (right click, select pair)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the Neo&lt;br /&gt;
&lt;br /&gt;
* Enable PAN support on the Neo by changing Autostart from false to true in /etc/bluetooth/network.service&lt;br /&gt;
&lt;br /&gt;
* Power on bluetooth (see above)&lt;br /&gt;
&lt;br /&gt;
* Scan for the laptop&lt;br /&gt;
 root@fic-gta01:~$ hcitool scan&lt;br /&gt;
 Scanning ...&lt;br /&gt;
         &amp;lt;laptop_bt_address&amp;gt;     Thinkpad&lt;br /&gt;
         ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Connect to the laptop pand&lt;br /&gt;
 pand -c &amp;lt;laptop_bt_address&amp;gt; -r PANU -d NAP -e bnep0 -A -E -S&lt;br /&gt;
(add '-n' to see the pand status messages until you get it right)&lt;br /&gt;
&lt;br /&gt;
For some reason, I was not able to initiate PAN connections from the Neo, I got 'Permission denied (13)' even when I had explicitly allowed the Neo to connect (right click on Neo icon, set properties, on Authorization tab). But initiating 'PAN User' from Windows worked when executing on Neo:&lt;br /&gt;
 pand -l -r PANU -d NAP -e bnep0 -A -E -S&lt;br /&gt;
(add '-n' to see the pand status messages until you get it right)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Configure your IP address. It should work like when connecting to Linux:&lt;br /&gt;
 ip a add 10.0.0.2/24 dev bnep0&lt;br /&gt;
 ip r add default via 10.0.0.1&lt;br /&gt;
If this does not work, the IP stacks may have auto-assigned network addresses to themselves. You can look this up with 'ifconfig' on the Neo and with 'ipconfig' on Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You should now be able to ssh/putty from Windows to your Neo. Enjoy!&lt;br /&gt;
By setting up the Windows Bluetooth connection properly, it should also be possible to share the Internet Connection of the Windows box with the Neo.&lt;br /&gt;
&lt;br /&gt;
===== PPP Networking =====&lt;br /&gt;
&lt;br /&gt;
If you are unable to use the 'BNEP' method described above, you may be able to use [[PPP]] and a DUN (dialup-networking) emulation mode. On the Neo:&lt;br /&gt;
&lt;br /&gt;
* Edit the /etc/default/bluetooth file and set the following options:&lt;br /&gt;
 RFCOMM_ENABLE=true&lt;br /&gt;
 DUND_ENABLE=true&lt;br /&gt;
 DUND_OPTIONS=&amp;quot;--listen --persist call dun&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Create an /etc/ppp/peers/dun file with options like the following:&lt;br /&gt;
 115200&lt;br /&gt;
 192.168.2.202:192.168.2.200&lt;br /&gt;
 passive&lt;br /&gt;
 local&lt;br /&gt;
 noipdefault&lt;br /&gt;
 noauth&lt;br /&gt;
 nodefaultroute&lt;br /&gt;
 &lt;br /&gt;
* Restart bluetooth (/etc/init.d/bluetooth stop ; /etc/init.d/bluetooth start)&lt;br /&gt;
&lt;br /&gt;
To connect from a MacOS 10.3 client:&lt;br /&gt;
&lt;br /&gt;
* Open &amp;quot;Applications/Utilities/Bluetooth Serial Utility&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Click on &amp;quot;New&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Choose a name, then click &amp;quot;Choose Device&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Locate your Neo, then select the &amp;quot;LAN Access Point&amp;quot; service. If your device is not found, or if this service does not show up, then you will need to troubleshoot and fix that before continuing. Bluetooth is designed for short-range communication, so make sure that the devices are physically close to each other. &lt;br /&gt;
&lt;br /&gt;
* Select &amp;quot;Port type: RS-232&amp;quot; and &amp;quot;Show in Network Preferences&amp;quot;. Click OK.&lt;br /&gt;
&lt;br /&gt;
* Open the Network Preferences page then &amp;quot;Show: Network Port Configurations&amp;quot;. Enable the new device that you defined in the previous step and drag it to the bottom of the device list (so that it will not interfere with your other network connections)&lt;br /&gt;
&lt;br /&gt;
* Choose &amp;quot;Show: &amp;lt;your-device-name&amp;gt;&amp;quot;, then click &amp;quot;Modem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Select &amp;quot;Null Modem 115200&amp;quot; from the list of available devices. Uncheck &amp;quot;Wait for dial tone&amp;quot; and &amp;quot;Enable error correction and compression in modem&amp;quot;. Optionally check &amp;quot;Show modem status in menu bar&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
* Click &amp;quot;Connect&amp;quot;. If everything worked, you will end up with a 'ppp0' device on your Mac with a local address of 192.168.2.200 and you will be able to access your Neo at 192.168.2.202.&lt;br /&gt;
&lt;br /&gt;
===== Bluetooth networking with a Linux system - More secure way =====&lt;br /&gt;
&lt;br /&gt;
''Check this, probably needs some corrections''&lt;br /&gt;
&lt;br /&gt;
Bluetooth should behave just like our usbnet and provide full TCP/IP access to the phone.  BNEP has to be used.&lt;br /&gt;
&lt;br /&gt;
On the laptop&lt;br /&gt;
&lt;br /&gt;
* check these options in /etc/bluetooth/hcid.conf&lt;br /&gt;
 security auto;&lt;br /&gt;
 passkey &amp;quot;your pin&amp;quot;;&lt;br /&gt;
 lm master;&lt;br /&gt;
&lt;br /&gt;
* Start bluetooth&lt;br /&gt;
 # /etc/init.d/bluetooth start&lt;br /&gt;
&lt;br /&gt;
* Start pand as server&lt;br /&gt;
  pand --listen --role NAP --encrypt&lt;br /&gt;
&lt;br /&gt;
* Add in /etc/network/interfaces (see [[USB_Networking]])&lt;br /&gt;
 auto bnep0&lt;br /&gt;
 iface bnep0 inet static&lt;br /&gt;
 address 192.168.1.1&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 network 192.168.1.0&lt;br /&gt;
        post-up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
        post-up echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
        post-up iptables -P FORWARD ACCEPT&lt;br /&gt;
&lt;br /&gt;
On the Neo&lt;br /&gt;
&lt;br /&gt;
* Power on bluetooth (see above)&lt;br /&gt;
&lt;br /&gt;
* Scan for the laptop&lt;br /&gt;
 root@fic-gta01:~$ hcitool scan&lt;br /&gt;
 Scanning ...&lt;br /&gt;
         00:20:E0:5A:FE:C8       laptop&lt;br /&gt;
&lt;br /&gt;
* Set pin&lt;br /&gt;
 root@fic-gta01:~$ passkey-agent 'your pin' 00:20:E0:5A:FE:C8 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
* Connect to the laptop pand&lt;br /&gt;
 root@fic-gta01:~$ pand -c 00:20:E0:5A:FE:C8&lt;br /&gt;
&lt;br /&gt;
* Configure your IP address&lt;br /&gt;
 root@fic-gta01:~$ ifconfig bnep0 192.168.1.2&lt;br /&gt;
 root@fic-gta01:~$ route add default gateway 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
* Enjoy&lt;br /&gt;
&lt;br /&gt;
==== Using Neo's connection from PC ====&lt;br /&gt;
&lt;br /&gt;
===== Calling Neo's GPRS modem via Bluetooth =====&lt;br /&gt;
&lt;br /&gt;
In this mode, Neo would behave like any other phone which can be used from a PC to get a network connection.&lt;br /&gt;
&lt;br /&gt;
This section not written yet. Has someone set it up?&lt;br /&gt;
&lt;br /&gt;
===== Sharing existing Neo's connection =====&lt;br /&gt;
&lt;br /&gt;
In this mode, Neo already has a network connection (GPRS, WLAN, ...), and it should get shared to the PC. This guide is general on how to forward network connection from a machine running Linux to another machine. If interested, please see more information for example at http://www.gentoo.org/doc/en/bluetooth-guide.xml.&lt;br /&gt;
&lt;br /&gt;
On the PC&lt;br /&gt;
# Check with hciconfig you have working Bluetooth&lt;br /&gt;
On the Neo&lt;br /&gt;
(if on Debian etc., remember modprobe ohci_hcd hci_usb)&lt;br /&gt;
# Initialize Bluetooth as told before:&lt;br /&gt;
## echo 1 &amp;gt; /sys/bus/platform/devices/neo1973-pm-bt.0/power_on&lt;br /&gt;
## echo 0 &amp;gt; /sys/bus/platform/devices/neo1973-pm-bt.0/reset&lt;br /&gt;
# install iptables: opkg install http://www.angstrom-distribution.org/feeds/2008/ipk/glibc/armv4t/base/iptables_1.3.8-r4.1_armv4t.ipk&lt;br /&gt;
# modprobe bnep&lt;br /&gt;
# Check that hcid is running both on Neo and PC (Bluetooth 4.x: install bluez-compat)&lt;br /&gt;
# Use default passkey &amp;quot;1234&amp;quot; in /etc/bluetooth/hcid.conf&lt;br /&gt;
# pand --listen --role NAP --master --autozap # note: after this you might have to the the step 1 below (&amp;quot;On the PC&amp;quot;) or the next step of getting the interface up does not work # note2: you could automate pand listener to start automatically when Bluetooth is turned on&lt;br /&gt;
# ifconfig bnep0 10.0.5.2 up&lt;br /&gt;
# echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
# iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0&lt;br /&gt;
On the PC:&lt;br /&gt;
# sudo pand --connect &amp;lt;your bluetooth mac address&amp;gt; --service NAP --autozap&lt;br /&gt;
# ifconfig bnep0 10.0.5.1 up&lt;br /&gt;
# You can test the connection with ping 10.0.5.2&lt;br /&gt;
# sudo ip route add default via 10.0.5.2 dev bnep0&lt;br /&gt;
# [not automated yet] add GPRS connection's nameservers to /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
== Advanced Audio Distribution Profile (A2DP) ==&lt;br /&gt;
&lt;br /&gt;
=== A2DP quickie ===&lt;br /&gt;
&lt;br /&gt;
* If you experience problems with choppyness, try changing your hcid.conf to include &amp;quot;lm accept,master;&amp;quot; and &amp;quot;lp hold,sniff,park;&amp;quot;  You may also have to bond (commonly known as 'pairing') your phone and your headset.  See http://wiki.bluez.org/wiki/HOWTO/Bonding for details. [[User:Mercury|Mercury]] 17:36, 5 September 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
It's now possible (if a little hackish) to stream mp3 to a bluetooth headset. It's a known problem that the playback rate changes (pitch varies). Timing issues are also likely the reason for gaps in playback.&lt;br /&gt;
&lt;br /&gt;
If the bluez packages are recent enough, you can use a shortcut. I'll document it here and leave the longer version below (the long version also demonstrates the API used by the GUI to manage headsets)&lt;br /&gt;
&lt;br /&gt;
Create /etc/asound.conf with your bluetooth headset's address filled in:&lt;br /&gt;
&lt;br /&gt;
 pcm.!default {&lt;br /&gt;
  type bluetooth&lt;br /&gt;
  device &amp;quot;xx:xx:xx:xx:xx:xx&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
then play a song&lt;br /&gt;
&lt;br /&gt;
 madplay /media/card/song.mp3 --sample-rate=44100 --output=wave:- | aplay&lt;br /&gt;
&lt;br /&gt;
or for smoother results...&lt;br /&gt;
&lt;br /&gt;
 madplay /media/card/song.mp3 --sample-rate=44100 --output=wave:song.wav&lt;br /&gt;
 aplay song.wav&lt;br /&gt;
&lt;br /&gt;
=== A2DP ===&lt;br /&gt;
&lt;br /&gt;
If that doesn't work... all the more hackish... install required packages:&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;src/gz python http://www.angstrom-distribution.org/unstable/feed/armv4t/python/&amp;quot; &amp;gt;&amp;gt; /etc/ipkg/angstrom-python.conf &lt;br /&gt;
 echo &amp;quot;src/gz base http://www.angstrom-distribution.org/unstable/feed/armv4t/base/&amp;quot; &amp;gt;&amp;gt; /etc/ipkg/angstrom-base.conf&lt;br /&gt;
 ipkg update ; ipkg install python-core python-xml python-dbus bluez-utils bluez-utils-alsa&lt;br /&gt;
&lt;br /&gt;
Create /etc/asound.conf:&lt;br /&gt;
&lt;br /&gt;
 pcm.!default {&lt;br /&gt;
  type bluetooth&lt;br /&gt;
 }&lt;br /&gt;
 ctl.!default {&lt;br /&gt;
  type bluetooth&lt;br /&gt;
 }&lt;br /&gt;
 pcm.bluetooth {&lt;br /&gt;
  type bluetooth&lt;br /&gt;
 }&lt;br /&gt;
 ctl.bluetooth {&lt;br /&gt;
  type bluetooth&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Run the passkey agent (see above in this page)&lt;br /&gt;
&lt;br /&gt;
Fill in your bluetooth headset address below and execute the python script (with your headset turned on)&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 import dbus&lt;br /&gt;
 bus = dbus.SystemBus()&lt;br /&gt;
 manager = dbus.Interface(bus.get_object('org.bluez', '/org/bluez'), 'org.bluez.Manager')&lt;br /&gt;
 conn = manager.ActivateService('audio')&lt;br /&gt;
 audio = dbus.Interface(bus.get_object(conn, '/org/bluez/audio'), 'org.bluez.audio.Manager')&lt;br /&gt;
 path = audio.CreateDevice('00:0D:3C:44:33:22')&lt;br /&gt;
 audio.ChangeDefaultDevice(path)&lt;br /&gt;
 sink = dbus.Interface(bus.get_object(conn, path), 'org.bluez.audio.Sink')&lt;br /&gt;
 sink.Connect()&lt;br /&gt;
&lt;br /&gt;
FINALLY: play a song&lt;br /&gt;
&lt;br /&gt;
 madplay /media/card/song.mp3 --sample-rate=44100 --output=wave:- | aplay&lt;br /&gt;
&lt;br /&gt;
=== Headset Audio ===&lt;br /&gt;
&lt;br /&gt;
[[Neo1973_Audio_Subsystem]] has detail about alsa settings and a proposal for audio scenario management.&lt;br /&gt;
&lt;br /&gt;
To try this out, follow the instructions in the a2dp section to install software and run the passkey agent.&lt;br /&gt;
&lt;br /&gt;
Remove or disable the stuff you put in asound.conf. When using a voice headset, the application uses the regular system audio device and it gets routed to bluetooth in the codec.&lt;br /&gt;
&lt;br /&gt;
Put the headset in pairing mode. Replace the bluetooth address below with your headset's and run the python script:&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 import dbus&lt;br /&gt;
 bus = dbus.SystemBus()&lt;br /&gt;
 manager = dbus.Interface(bus.get_object('org.bluez', '/org/bluez'), 'org.bluez.Manager')&lt;br /&gt;
 conn = manager.ActivateService('audio')&lt;br /&gt;
 audio = dbus.Interface(bus.get_object(conn, '/org/bluez/audio'), 'org.bluez.audio.Manager')&lt;br /&gt;
 path = audio.CreateHeadset('00:0B:2E:39:33:22')&lt;br /&gt;
 audio.ChangeDefaultHeadset(path)&lt;br /&gt;
 headset = dbus.Interface (bus.get_object(conn, path), 'org.bluez.audio.Headset')&lt;br /&gt;
 headset.Connect()&lt;br /&gt;
 headset.Play()&lt;br /&gt;
&lt;br /&gt;
Now place a call and try to route it to bluetooth (after it's in progress):&lt;br /&gt;
&lt;br /&gt;
 alsactl -f /etc/gsmbluetooth.state restore&lt;br /&gt;
&lt;br /&gt;
You may also be able to listen to system audio given the right state file:&lt;br /&gt;
&lt;br /&gt;
 alsactl -f /etc/systembluetooth.state restore&lt;br /&gt;
 madplay song.mp3&lt;br /&gt;
&lt;br /&gt;
==Bluetooth Headset on Freerunner ==&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/support/2008-September/thread.html#2627 This thread] suggests the following:&lt;br /&gt;
&lt;br /&gt;
:Turn on bluetooth. If some of the scripts below fail you may need to reboot [https://docs.openmoko.org/trac/ticket/1744 Bluetooth after suspend]&lt;br /&gt;
&lt;br /&gt;
:Pair your headset according to [http://wiki.bluez.org/ these] instructions or use the script below. The script will change your .asoundrc so make a backup before you run it.&lt;br /&gt;
&lt;br /&gt;
:http://handheldshell.com/BtConfigure.py&lt;br /&gt;
:Put the headset in pairing mode ( this only needs to be done once for each new headset ) and run&lt;br /&gt;
 BtConfigure.py &lt;br /&gt;
&lt;br /&gt;
:Download the the following python scripts to set up the audio service and set the headset as the default device:&lt;br /&gt;
&lt;br /&gt;
:http://handheldshell.com/BtHeadset.py&lt;br /&gt;
:http://handheldshell.com/passkey.py&lt;br /&gt;
:http://handheldshell.com/BtHeadsetDisconnect.py&lt;br /&gt;
:http://handheldshell.com/python-pyalsaaudio_0.3-ml0_armv4t.ipk  - can someone add python-pyalsa to the feeds ?&lt;br /&gt;
&lt;br /&gt;
:Download the the following python scripts if you prefer not to mess around with alsactl:&lt;br /&gt;
&lt;br /&gt;
:http://handheldshell.com/pymixer.py&lt;br /&gt;
:http://handheldshell.com/volume.desktop&lt;br /&gt;
&lt;br /&gt;
:put pymixer in /usr/bin&lt;br /&gt;
&lt;br /&gt;
 chmod u+x /usr/bin/pymixer.py&lt;br /&gt;
&lt;br /&gt;
:put volume.desktop in /usr/share/applications&lt;br /&gt;
&lt;br /&gt;
:Get the [[http://handheldshell.com/gsm_headset.txt alsa state file]] - this state file _WORKS_, mic and earphones are properly routed&lt;br /&gt;
&lt;br /&gt;
 cp gsm_headset.txt /usr/share/openmoko/scenarios/btheadset.state&lt;br /&gt;
&lt;br /&gt;
:from the home screen run Volume&lt;br /&gt;
&lt;br /&gt;
:from the terminal run&lt;br /&gt;
&lt;br /&gt;
 BtHeadset.py &lt;br /&gt;
&lt;br /&gt;
:Wait until it says waiting for call to end, you should hear static in the headset. If you don't something has gone wrong.&lt;br /&gt;
&lt;br /&gt;
:Now start the call&lt;br /&gt;
&lt;br /&gt;
:In the volume control switch to the btheadset tab. press restore&lt;br /&gt;
&lt;br /&gt;
:You should now hear the call in your headset. &lt;br /&gt;
&lt;br /&gt;
:End the call&lt;br /&gt;
&lt;br /&gt;
 BtHeadsetDisconnect.py &lt;br /&gt;
&lt;br /&gt;
:This was all done with the 2008-updates image from sept 4. &lt;br /&gt;
&lt;br /&gt;
:The new scripts rely on a specific format for the .asoundrc . A stanza like this is required :&lt;br /&gt;
&lt;br /&gt;
 pcm.headset {&lt;br /&gt;
     type bluetooth&lt;br /&gt;
     device &amp;lt;headset mac&amp;gt;&lt;br /&gt;
     profile &amp;quot;voice&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
&lt;br /&gt;
http://www.holtmann.org/papers/bluetooth/ols2006_slides.pdf&lt;br /&gt;
http://wiki.bluez.org/wiki/Audio#org.bluez.Audio&lt;br /&gt;
http://www.gentoo.org/doc/en/bluetooth-guide.xml&lt;br /&gt;
&lt;br /&gt;
{{Languages|Manually_using_Bluetooth}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Bluetooth| ]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/GTA02_sysfs</id>
		<title>GTA02 sysfs</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/GTA02_sysfs"/>
				<updated>2008-11-25T02:11:42Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: use DBUS they tell me&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&amp;lt;font color=75d806&amp;gt;GTA02 Kernel sysfs highlights&amp;lt;/font&amp;gt;==&lt;br /&gt;
sysfs is a filesystem that is mounted on /sys which contains various fake &amp;quot;files&amp;quot; that are actually filled by a variety of drivers and other kernel subsystems.  You can often also write stuff into these &amp;quot;files&amp;quot; using&lt;br /&gt;
&lt;br /&gt;
echo 1 &amp;amp;gt; /sys/blah...&lt;br /&gt;
&lt;br /&gt;
to change settings and behaviours of the kernel and drivers dynamically.  (When doing this, take care you have a space before the redirection operator &amp;amp;gt; or the shell will do something completely different with your command.)&lt;br /&gt;
However[http://permalink.gmane.org/gmane.comp.hardware.smartphones.userland/165], one should use [[Dbus device API]]s!&lt;br /&gt;
&lt;br /&gt;
===USB Host / Device===&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-host.0/hostmode====&lt;br /&gt;
* Defaults to 0, GTA02 USB hardware is configured to be a device, no power is generated for USB, charging is enabled and host 15K pulldowns are removed from D+ and D-&lt;br /&gt;
* Set to 1 to put the GTA02 USB hardware into host mode, so it starts to generate 5V power, disables charging from USB, and applies 15K pulldowns to USB D+ and D-&lt;br /&gt;
====/sys/devices/platform/s3c2410-ohci/usb_mode====&lt;br /&gt;
* Defaults to &amp;quot;device&amp;quot;, it means the USB peripheral in the CPU is logically configured for device mode&lt;br /&gt;
* Set to &amp;quot;host&amp;quot; to logically configure the peripheral to act like a host for other USB devices to be plugged into it&lt;br /&gt;
&lt;br /&gt;
Normally you set these two guys at the same time for the same mode, but there is a trick possible to select logical host mode but leave the power arrangements as if it was in device mode and apply external power.  You need to [[Specialized USB cables|externally add]] 15K pulldowns on D+ and D- if you do this, because we did not enable them the normal way.  With this, you can have a USB device attached to GTA02, and use external power and charge the battery at the same time.&lt;br /&gt;
&lt;br /&gt;
===GSM Subsystem===&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/power_on====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, GSM power OFF&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; to enable power to GSM logic&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/reset====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, no reset&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; briefly after power applied to reset GSM logic&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/download====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, no insane clicking sound&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; to drive yourself crazy and enable serial access to GSM chips down headphone socket / once a second loud clicks / chirps&lt;br /&gt;
&lt;br /&gt;
===Resume Reason===&lt;br /&gt;
====/sys/devices/platform/neo1973-resume.0/resume_reason====&lt;br /&gt;
If you cat this you get a list of possible resume sources in text with one or more * at the left of the active source that woke us.  You need a recent U-Boot to get the * set.&lt;br /&gt;
&lt;br /&gt;
===MEMCONFIG===&lt;br /&gt;
====/sys/devices/platform/neo1973-memconfig.0/BANKCON0 .. 7====&lt;br /&gt;
For extreme meddlers (I salute you), these let you control the wait states and other characteristics of the memory regions of the FreeRunner.  Information and warnings about how to use these are here:&lt;br /&gt;
&lt;br /&gt;
http://git.openmoko.org/?p=kernel.git;a=commitdiff;h=fd25f90517322fc6c07bfb8d34752d3cb41cb4b6&lt;br /&gt;
&lt;br /&gt;
===FIQ and HDQ===&lt;br /&gt;
====/sys/devices/platform/sc32440_fiq.0/fiq/count====&lt;br /&gt;
FIQ is used to provide precision interrupt service in order to implement the HDQ protocol used to the battery couloumb counter.  This shows how many FIQ interrupts have been run since the kernel started.  It's turned off unless it is required.&lt;br /&gt;
====/sys/devices/platform/gta02-hdq.0/hdq/dump====&lt;br /&gt;
If you cat this, you will see the raw contents of HDQ device register space.  This is the bq27000 couloumb counter in our case.&lt;br /&gt;
====/sys/devices/platform/gta02-hdq.0/hdq/write====&lt;br /&gt;
This allows you to write to raw HDQ registers, using &amp;quot;&amp;lt;decimal register index&amp;gt; &amp;lt;decimal value&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===power_supply battery information===&lt;br /&gt;
Most of these are coming from the coulomb counter over HDQ dynamically, but the bq27000 does not update a lot of its registers any more often than once per 4 seconds.  Therefore a lot of this info can be a bit stale or averaged over that period.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/uevent====&lt;br /&gt;
All informations about battery.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/type====&lt;br /&gt;
Just says &amp;quot;Battery&amp;quot;&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/status====&lt;br /&gt;
This will summarize what goes on generally with the battery&lt;br /&gt;
* &amp;quot;Not Charging&amp;quot; - there's a charger in, but right now it isn't charging us.  Normal if you are fully charged and still powered.&lt;br /&gt;
* &amp;quot;Charging&amp;quot; - there's a charger in and it is charging the battery&lt;br /&gt;
* &amp;quot;Discharging&amp;quot; - we are running on battery&lt;br /&gt;
* &amp;quot;Full&amp;quot; - not normally given as a result (Not Charging used instead)&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/voltage_now====&lt;br /&gt;
Battery voltage in uV, averaged.  Obviously this depends on load and place on discharge curve, etc.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/current_now====&lt;br /&gt;
Current being drawn from battery (+ve) or pushed into battery during charging (-ve) in uA&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/charge_full====&lt;br /&gt;
Coulomb Counter's estimate of the capacity of the battery measured in uA/h.  It roughly means that if full, for one hour it could supply current at this rate.  I saw 1197913 reported on mine, so it estimates it can provide 1.2A for an hour.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/temp====&lt;br /&gt;
This is the battery temperature reported by the Coulomb Counter chip that is part of the physical battery.  It is in Celcius * 10, so 251 means 25.1 degrees.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/technology====&lt;br /&gt;
&amp;quot;Li-ion&amp;quot;&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/present====&lt;br /&gt;
* &amp;quot;0&amp;quot; the battery is absent, or not one with a Coulomb Counter&lt;br /&gt;
* &amp;quot;1&amp;quot; the smart battery is present&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/time_to_empty_now====&lt;br /&gt;
At current rate of discharge, estimate of how long we can run for.  If battery is not discharging, it won't make an estimate and will return a magic value &amp;quot;3932100&amp;quot; meaning &amp;quot;no estimate&amp;quot;.  The coulomb counter averages the load and adjusts this value slowly to be its estimate of when we will blow chunks.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/time_to_full_now====&lt;br /&gt;
This estimates how long until we are fully charged, at current rate of charging, in seconds.  If we are not charging, it gives the magic value &amp;quot;3932100&amp;quot; meaning &amp;quot;no estimate&amp;quot;.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/capacity====&lt;br /&gt;
This is the remaining capacity of charge in the battery in percent. This is probably the most useful figure here.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/online====&lt;br /&gt;
* &amp;quot;0&amp;quot; no charger is present&lt;br /&gt;
* &amp;quot;1&amp;quot; A powered charger is present&lt;br /&gt;
&lt;br /&gt;
===PMU info===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/chgmode====&lt;br /&gt;
* &amp;quot;enabled&amp;quot; means the charger is powered and willing to charge, although if you're full it might not be right now&lt;br /&gt;
* &amp;quot;disabled&amp;quot; means there was no power or not enough power supplied to charge&lt;br /&gt;
&lt;br /&gt;
Looks like it may also report &amp;quot;fast&amp;quot; here. [[User:OlivierBerger|OlivierBerger]] 07:47, 25 July 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/charger_type====&lt;br /&gt;
Shows the detected charger type followed by the mode it is running in.  So &amp;quot;charger 500mA mode 100mA&amp;quot; would be the case for non-enumerated USB connection, &amp;quot;charger 500mA mode 500mA&amp;quot; for after enumeration (or &amp;quot;host/500mA usb mode 500mA&amp;quot; as here [[User:OlivierBerger|OlivierBerger]]).&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous====&lt;br /&gt;
This is added to allow the PMU to be told to take more current than the default rules allow.  Use it only if you know your charger source can handle it.  For example&lt;br /&gt;
&lt;br /&gt;
 echo 500 &amp;gt; /sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous&lt;br /&gt;
&lt;br /&gt;
will allow PMU to draw 500mA even though you are connected to a dumb charger where the limit is normally held at 100mA, since it didn't enumerate the GTA02.  You can give 0, 100, 500 or 1000 here, but make sure your charger source can handle what you give here, otherwise it can exceed what is safe for your charging source to provide.&lt;br /&gt;
&lt;br /&gt;
More details at [[Forcing_fast_charge_mode]].&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/dump_regs====&lt;br /&gt;
cat this to get a dump of the I2C registers for the PMU, useful for debugging power problems.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-bt.0/power_on====&lt;br /&gt;
* Default &amp;quot;0&amp;quot; no power to Bluetooth device&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to enable power to Bluetooth&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-bt.0/reset====&lt;br /&gt;
* Default to &amp;quot;0&amp;quot;, no reset&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to reset BT (needed after powerup)&lt;br /&gt;
&lt;br /&gt;
===GPS===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron====&lt;br /&gt;
* Default &amp;quot;0&amp;quot; GPS unpowered&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to power GPS section&lt;br /&gt;
&lt;br /&gt;
===Audio codec===&lt;br /&gt;
====/sys/devices/platform/soc-audio/codec_reg====&lt;br /&gt;
cat this to get a dump of codec registers.  Note they are 9-bit wide.&lt;br /&gt;
====/sys/devices/platform/soc-audio/codec_reg_write====&lt;br /&gt;
You can write to any codec register by echoing &amp;quot;&amp;lt;codec reg index in hex&amp;gt; &amp;lt;value in hex&amp;gt;&amp;quot; to here&lt;br /&gt;
&lt;br /&gt;
===Glamo===&lt;br /&gt;
====/sys/devices/platform/glamo3362.0/regs====&lt;br /&gt;
cat this to get a dump of selected Glamo regs.  You can write the regs by echoing &amp;quot;&amp;lt;glamo reg index in decimal&amp;gt; &amp;lt;value in decimal&amp;gt;&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
===LED &amp;amp; Vibrator===&lt;br /&gt;
(per: Jeff Tickle)&lt;br /&gt;
====/sys/devices/platform/neo1973-vibrator.0/leds/neo1973:vibrator/brightness====&lt;br /&gt;
&lt;br /&gt;
For the Vibration, my very limited testing indicates it will accept a&lt;br /&gt;
range of 0-255, with 0 being off and 255 being full force.  So, you can&lt;br /&gt;
actually set the strength of vibration.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the vibration will positively eat your battery, so&lt;br /&gt;
use with caution!&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-aux:red/brightness====&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-power:blue/brightness====&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-power:orange/brightness====&lt;br /&gt;
&lt;br /&gt;
For the LEDs, you can echo 1 for on or 0 for off to any of these files&lt;br /&gt;
to control the state of the LEDs.&lt;br /&gt;
&lt;br /&gt;
===Accelerometers===&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/power/wakeup====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/power/wakeup====&lt;br /&gt;
Turns on accelerometers.&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/dump====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/dump====&lt;br /&gt;
Dumps accelerometers raw contents.&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/full_scale====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/full_scale====&lt;br /&gt;
Switches the accelerometers between 2G and 8G mode.  Echo &amp;quot;9.2&amp;quot; into it for 8G, any other value for 2G (default)[http://lists.openmoko.org/pipermail/openmoko-kernel/2008-July/004029.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Education_Taiwan</id>
		<title>Openmoko Education Taiwan</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Education_Taiwan"/>
				<updated>2008-11-24T22:54:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: 煩請註年份&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Openmoko 校園演講==&lt;br /&gt;
('''煩請各項註年份''')&lt;br /&gt;
===輔仁大學 2008-10-22===&lt;br /&gt;
&lt;br /&gt;
開放手機平臺熱潮在開發者社群與校園燃燒，Openmoko是Android、iPhone之外的另一個開放手機平臺。Openmoko從開放原始碼開始，一路公開機構設計（CAD）與電路圖（schematics），並且建立了一個龐大的開發者社群。現在，Openmoko正將開放之路，朝向「開放學習」邁進。 Om2008.8 又稱為 ASU 是 Openmoko 重要的一個 Openmoko Linux distribution 版本，本演講將介紹 Om2008 的主要變更，以及如何在 FreeRunner 上撰寫第一個 EFL 程式。透過這個講座，能帶領同學在開放手機撰寫一個小程式。&lt;br /&gt;
&lt;br /&gt;
*題目：Openmoko Linux 2008: 開放手機新體驗（Openmoko Linux 2008: Programming Neo FreeRunner）&lt;br /&gt;
*時間：2008-10-22（三），14:00～15:30&lt;br /&gt;
*地點：輔仁大學資工系 聖言樓&lt;br /&gt;
&lt;br /&gt;
===台北科技大學 10-16===&lt;br /&gt;
&lt;br /&gt;
開放手機平臺熱潮在開發者社群與校園燃燒，Openmoko是Android、iPhone之外的另一個開放手機平臺。Openmoko從開放原始碼開始，一路公開機構設計（CAD）與電路圖（schematics），並且建立了一個龐大的開發者社群。現在，Openmoko正將開放之路，朝向「開放學習」邁進。 Om2008.8 又稱為 ASU 是 Openmoko 重要的一個 Openmoko Linux distribution 版本，本演講將介紹 Om2008 的主要變更，以及如何在 FreeRunner 上撰寫第一個 EFL 程式。透過這個講座，能帶領同學在開放手機撰寫一個小程式。&lt;br /&gt;
&lt;br /&gt;
*題目：Openmoko Linux 2008: 開放手機新體驗（Openmoko Linux 2008: Programming Neo FreeRunner）&lt;br /&gt;
*時間：2008-10-16（四），15:30～16:30&lt;br /&gt;
*地點：台北科技大學 綜合科學館地下室第三演講聽&lt;br /&gt;
&lt;br /&gt;
===義守大學 09-25===&lt;br /&gt;
&lt;br /&gt;
上學期 Openmoko 結合校園課程，為大家帶來「開放手機革命」的題目。這學期，Openmoko 再度結合校園課程，為大家再次準備了「開放手機新體驗」的課程。本學期的課程將著重在實機體驗與程式開發，歡迎有興趣的朋友與主辦單位連繫。&lt;br /&gt;
&lt;br /&gt;
*題目：開放手機新體驗（Exploring and Programming Neo FreeRunner）&lt;br /&gt;
*時間：2008-09-25（四），13:40～15:20&lt;br /&gt;
*地點：義守大學資工系&lt;br /&gt;
&lt;br /&gt;
===九十六學年度下學期 校園演講總覽===&lt;br /&gt;
&lt;br /&gt;
[[Image:0222-ncku-campus.jpg|200px|thumb|Right|Seminar at NCKU Campus]]&lt;br /&gt;
[[Image:0222-ncku-campus2.jpg|200px|thumb|Right|Seminar at NCKU Campus]]&lt;br /&gt;
[[Image:0227-nctu-campus.jpg|200px|thumb|Right|Seminar at NCTU Campus]]&lt;br /&gt;
[[Image:0227-nctu-campus2.jpg|200px|thumb|Right|Seminar at NCTU Campus]]&lt;br /&gt;
[[Image:0409-cycu-campus.jpg|200px|thumb|Right|Seminar at CYCU Campus]]&lt;br /&gt;
&lt;br /&gt;
'''新聞稿'''&lt;br /&gt;
&lt;br /&gt;
Openmoko與各大名校聯手推動行動通訊教育課程 2008/02/14&lt;br /&gt;
開放源碼手機廠進駐校園培養工程師&lt;br /&gt;
&lt;br /&gt;
2008年2月14日---世界開放源碼手機軟體大廠Openmoko表示，從九十六學年度下學期開始，即將與台灣各大資訊通訊相關學系、科技大學共同展開一系列的巡迴開放源碼課程，讓學生能夠在學校進行「手機軟體」的研究計畫。Openmoko此舉為業界的一個先驅挑戰，選擇在台灣進行Openmoko平台的人才培育，作為長期開發該產業資源的根基。 配合學校的教育課程外，同時Openmoko也將提供暑期實習機會給學生，並預計吸收優秀的人才在畢業後進入Openmoko工作。&lt;br /&gt;
&lt;br /&gt;
Openmoko總經理Mr. Sean Moss-Puitz強調，除了致力發展Linux作業系統的行動通訊平台，公司並以推動free and open source software (FOSS)專案為主要的經營策略。他更指出，Openmoko看好台灣開放手機市場的發展前景，長期經營社群關係，並將大多數的研發資源投資在台灣，所以在台北內湖科學園區建立起全世界第一個 Openmoko開源手機體驗實驗室，提供開發者以及社群人員一個更為開放的討論空間。&lt;br /&gt;
&lt;br /&gt;
Openmoko此次校園演講結合企業實務經驗與學術討論，帶給國內多所大專院校資訊相關科系學生豐富精彩的開放Linux平台與行動通訊觀念。此次校園巡迴演講將鎖定開放手機的未來為主題，並且融合多項時下熱門話題，包含智慧型手機、行動2.0時代、作業系統技術等多項領域，除此之外，並將於現場提供Openmoko最新款產品 Neo FreeRunner讓學生親身體驗，一窺未來手機的風貌；從創意思考、技術討論，到產品研發等完整流程，讓學生可以一次獲取所有最新資訊。&lt;br /&gt;
&lt;br /&gt;
Openmoko大中華區行銷部 Jollen Chen 指出，Openmoko對於能夠和學生面對面交流非常開心，也格外重視此次校園演講計畫，期望能透過學生之間的交流，尋找對此研究領域專精的年輕學子，也希望透過學生的另類思考帶給Openmoko更多進步空間。&lt;br /&gt;
&lt;br /&gt;
此次校園巡迴演講將於2月22日正式起跑，首站即為國內首屈一指的指標大學國立成功大學，陸續將於2月27日於國立交通大學、3月3日於中原大學、3月18日於逢甲大學、3月26日於元智大學、3月28日於國立東華大學等多所大專院校正式登場。&lt;br /&gt;
&lt;br /&gt;
'''參與學校'''&lt;br /&gt;
&lt;br /&gt;
Openmoko 因為開放源碼的特性，因此很適合教學與研究場合。Openmoko 在2月份到6月份之間，於以下以學校進行教育課程。&lt;br /&gt;
&lt;br /&gt;
* 成功大學：2/22（五），02:30PM~04:00PM，資訊工程學系 4263教室（資工講座）&lt;br /&gt;
* 交通大學：2/27（三），01:30PM~03:30PM&lt;br /&gt;
* 中原大學：3/03（一），02:00PM~04:00PM，電學105講堂&lt;br /&gt;
* 元智大學：3/26（三），07:00PM~09:00PM&lt;br /&gt;
* 東華大學：3/28（五），02:00PM~04:00PM&lt;br /&gt;
* 昆山大學：4/07（一），09:00AM~12:00PM&lt;br /&gt;
* 中原大學：4/09（三），06:10PM~07:40PM&lt;br /&gt;
* 淡江大學（研究所）：4/10(四)，02:10PM~04:00PM&lt;br /&gt;
* 淡江大學（大學部）：4/18(四)，03:10PM~05:00PM&lt;br /&gt;
* 中正大學：4/28(一），02:00PM~04:00PM&lt;br /&gt;
&lt;br /&gt;
'''演講稿下載'''&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! 課程場次 !! 日期 !! 講義下載&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeedd;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot;|九十六學年度下學期課程&lt;br /&gt;
|-&lt;br /&gt;
|成功大學 || 2/22（五） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-ncku.pdf Om-campus-freeyourphone-ncku.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|交通大學 || 2/27（三） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-nctu.pdf Om-campus-freeyourphone-nctu.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|中原大學 || 3/03（一） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-cycu.pdf Om-campus-freeyourphone-cycu.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|元智大學 || 3/26（三） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-yzu.pdf Om-campus-freeyourphone-yzu.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|東華大學 || 3/28（五） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-ndhu.pdf Om-campus-freeyourphone-ndhu.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|昆山大學 || 4/07（一） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-ksu.pdf Om-campus-freeyourphone-ksu.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|中原大學 || 4/09（三） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-cycu.2.pdf Om-campus-freeyourphone-cycu.2.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|淡江大學（研究所） || 4/10（四） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-tku.pdf Om-campus-freeyourphone-tku.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|淡江大學（大學部） || 4/18（四） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-tku.2.pdf Om-campus-freeyourphone-tku.2.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|中正大學 || 4/28(一） || [http://people.openmoko.org/jollen/Om-campus-freeyourphone-ccu.pdf Om-campus-freeyourphone-ccu.pdf]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Openmoko 校園課程==&lt;br /&gt;
&lt;br /&gt;
===成功大學電機工程學系: 開放手機平臺軟體發展技術 第一次訓練課程 10-9===&lt;br /&gt;
&lt;br /&gt;
[[Image:ncku-training-1009.jpg|200px|thumb|Right|Openmoko Training using E-courseware Draft]]&lt;br /&gt;
&lt;br /&gt;
開放手機平臺熱潮在開發者社群與校園燃燒。Openmoko從開放原始碼開始，一路公開機構設計（CAD）與電路圖（schematics），並且建立了一個龐大的開發者社群。現在，Openmoko正將開放之路，朝向「開放學習」邁進。&lt;br /&gt;
&lt;br /&gt;
'''主辦單位：國立成功大學電機工程學系'''&lt;br /&gt;
&lt;br /&gt;
'''協辦單位：教育部嵌入式軟體聯盟（ESW）、我本墨客股份有限公司（Openmoko Inc.）'''&lt;br /&gt;
&lt;br /&gt;
歡迎有興趣的老師帶著您的學生一起參加此一Openmoko開放手機平台軟體發展技術訓練課程。&lt;br /&gt;
&lt;br /&gt;
'''活動報名'''&lt;br /&gt;
&lt;br /&gt;
*時間：97 年 10 月 9 日（星期四）AM 9:30～16:30&lt;br /&gt;
*地點：&lt;br /&gt;
**國立成功大學自強校區電機工程館地下1樓 令洋廳&lt;br /&gt;
**臺南市東區大學路1號&lt;br /&gt;
*名額：限80人（因場地容量有限，依報名先後順序，額滿為止）&lt;br /&gt;
*費用：免費&lt;br /&gt;
*報名日期：自9月25日起至10月6日止或額滿為止，恕不接受現場報名。&lt;br /&gt;
*報名方式：請配合下列說明使用電子郵件(e-mail)報名，以便處理您的報名。&lt;br /&gt;
#電子郵件主旨請註明“報名10月9日Openmoko訓練課程”；&lt;br /&gt;
#電子郵件內文請提供參加本訓練課程人員之資料：&lt;br /&gt;
##教師請提供：姓名、職稱、校系(所)名、電話與電子郵件等聯絡資料&lt;br /&gt;
##學生請提供：姓名、年級、校系(所)名、電話與電子郵件等聯絡資料&lt;br /&gt;
##其他人士請提供：姓名、工作單位與職稱、電話與電子郵件等聯絡資料&lt;br /&gt;
#可多人以同一電子郵件報名；&lt;br /&gt;
#為避免電子郵件失誤，系統將自動回覆；若逾2日未獲回覆請電詢；&lt;br /&gt;
#請使用報名專用電子郵件帳號：om081009 AT rtpc06 DOT ee DOT ncku DOT edu DOT tw&lt;br /&gt;
*主辦單位聯絡查詢窗口：&lt;br /&gt;
**陳 敬 (成功大學電機工程學系助理教授)&lt;br /&gt;
**06-2757575分機62376    jchen AT mail DOT ncku DOT edu DOT tw&lt;br /&gt;
&lt;br /&gt;
'''活動內容'''&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! 時間 !! 10月9日 活動內容 !! Note&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeedd;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot;|Openmoko 開放手機軟體發展技術訓練課程&lt;br /&gt;
|-&lt;br /&gt;
|09:00~09:30 || ・報     到 ||&lt;br /&gt;
|-&lt;br /&gt;
|09:30~10:20 || ・Openmoko 與 Mobile 2.0: 開放手機新機會 ||&lt;br /&gt;
|-&lt;br /&gt;
|10:20~10:30 || ・中場休息 ||&lt;br /&gt;
|-&lt;br /&gt;
|10:30~11:40 || ・Openmoko 手機軟體開發環境建置: Pre-Built Toolchain &amp;amp; 模擬器 ||&lt;br /&gt;
|-&lt;br /&gt;
|11:40~12:00 || ・GSM Telephony: libgsmd ||&lt;br /&gt;
|-&lt;br /&gt;
|12:00~13:30 || ・午餐休息（午餐請自理） ||&lt;br /&gt;
|-&lt;br /&gt;
|13:30~14:20 || ・Openmoko Software Stack 架構介紹: Om2008.8、ASU、FSO ||&lt;br /&gt;
|-&lt;br /&gt;
|14:20~14:30 || ・中場休息 ||&lt;br /&gt;
|-&lt;br /&gt;
|14:30~15:20 || ・Openmoko Linux Distribution: Om2008.x 手機開發新體驗 ||&lt;br /&gt;
|-&lt;br /&gt;
|15:20~15:30 || ・中場休息 ||&lt;br /&gt;
|-&lt;br /&gt;
|15:30~16:20 || ・手機應用軟體開發: 以Neo FreeRunner 加速度感測器為例 ||&lt;br /&gt;
|-&lt;br /&gt;
|16:20~16:30 || ・Q &amp;amp; A ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''ChangeLog'''&lt;br /&gt;
&lt;br /&gt;
# 為配合 Openmoko Linux distribution 更新（Om2008.x）， 課程主題略做調整。&lt;br /&gt;
# Edje 將移至第二次訓練課程做講解。&lt;br /&gt;
# 因開發環境建置需要實機展示，需要較多時數，故調整 libgsmd 的時間。&lt;br /&gt;
&lt;br /&gt;
===中央大學通訊工程學系: Openmoko開放手機訓練課程 09-10===&lt;br /&gt;
&lt;br /&gt;
開放手機平臺熱潮在開發者社群與校園燃燒。Openmoko是基於Linux與自由軟體（Free Software）的開放手機平臺，同時也是全世界第一個真正100%開放的手機平臺，Openmoko目前已釋出完整的GSM+GPS手機（Neo FreeRunner）、手機軟體平臺、開發環境、電路圖及機構設計，相當適合使用於教學與研究用途。&lt;br /&gt;
&lt;br /&gt;
Openmoko為Linux開放式手機，使用者可自由地將自己的服務創意具體實現在手機上。本基礎訓練課程主要在提供學校老師與同學瞭解Openmoko基本架構、手機軟體開發環境、及應用程式等技術，協助老師順利將開放手機平臺使用在嵌入式系統相關課程，並使用Openmoko手機發展GSM與GPS應用。&lt;br /&gt;
&lt;br /&gt;
敬邀老師帶著您的學生一起參加。&lt;br /&gt;
&lt;br /&gt;
時間：97 年 9月10日（星期三）&lt;br /&gt;
&lt;br /&gt;
地點：中央大學通訊工程學系 E1-101 會議室&lt;br /&gt;
&lt;br /&gt;
對象：大專院校老師與學生&lt;br /&gt;
&lt;br /&gt;
活動連絡人：Jollen Chen &amp;lt;jollen at openmoko (dot) com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
主辦單位：&lt;br /&gt;
&lt;br /&gt;
* Openmoko&lt;br /&gt;
* 國立中央大學通訊工程學系&lt;br /&gt;
&lt;br /&gt;
課程主題：&lt;br /&gt;
&lt;br /&gt;
# Openmoko手機軟體開發環境建置與程式設計&lt;br /&gt;
# 手機軟體開發技術：以Neo FreeRunner動作感測器為例&lt;br /&gt;
# Openmoko 手機軟體課程與教學&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko Taiwan]]&lt;br /&gt;
[[Category:Event]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/USB_host</id>
		<title>USB host</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/USB_host"/>
				<updated>2008-11-23T10:20:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Selecting USB host modes */guessing link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|USB host}}&lt;br /&gt;
The mini-USB port on both the Neo 1973 and the Neo FreeRunner supports both USB host and USB device. This opens up a range of possibilities, such as adding USB cameras and USB input devices.&lt;br /&gt;
&lt;br /&gt;
=== Using USB host mode ===&lt;br /&gt;
==== Selecting USB host modes ====&lt;br /&gt;
&lt;br /&gt;
By default, the mini-USB port is in device mode. To tell the Neo that it is logically a host¹):&lt;br /&gt;
&lt;br /&gt;
 # echo host &amp;gt; [[GTA02 sysfs|/sys]]/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&lt;br /&gt;
Independent of the logical mode of the USB port, the Neo FreeRunner can provide 5 volt USB power to an attached USB device. To enable this (not available on Neo 1973):&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Note: You may want to run &amp;lt;code&amp;gt;ifconfig usb0 down&amp;lt;/code&amp;gt; prior to switching to USB host mode, as the Neo's USB networking may not like having its USB port disappear. You'll probably want to ssh into your Neo over WiFi or Bluetooth before starting all of this, alternatively use an on screen keyboard.&lt;br /&gt;
&lt;br /&gt;
Note that in full USB host mode the FreeRunner will power the external device. To avoid draining the battery use a powered USB hub, then on the FreeRunner enable logical host mode:&lt;br /&gt;
&lt;br /&gt;
 # echo host &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&lt;br /&gt;
but NOT electrical host mode&lt;br /&gt;
&lt;br /&gt;
 # echo 0 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Note that powered USB hubs do not send power upstream, that is, into the host. If you wish to power or charge the FreeRunner, you will need a [[Specialized USB cables|special USB cable]].&lt;br /&gt;
&lt;br /&gt;
¹)Debian note: You'll need the ohci-hcd module:&lt;br /&gt;
modprobe ohci-hcd&lt;br /&gt;
&lt;br /&gt;
* NOTE: with [FSO] based distributions one should use the [[Dbus device API|dbus APIs]] and not the method stated above.&lt;br /&gt;
&lt;br /&gt;
==== Returning to USB device mode ====&lt;br /&gt;
After doing whatever is needed to safely remove your device and unplugging it you can remove the provision of 5 volt power and return to device mode.&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;device&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
You can now safely restart USB networking.&lt;br /&gt;
&lt;br /&gt;
==== USB-Mode-Script====&lt;br /&gt;
These simple script is useful to switch the USB-Modes:&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#!/bin/sh&amp;lt;/nowiki&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
grep -q 'host' /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
if [ $? -eq 0 ]&amp;lt;BR&amp;gt;&lt;br /&gt;
then&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;device&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo USB-Port is in device-mode now.&amp;lt;BR&amp;gt;&lt;br /&gt;
else&amp;lt;BR&amp;gt;&lt;br /&gt;
ifconfig usb0 down&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;host&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo USB-Port is in host-mode now.&amp;lt;BR&amp;gt;&lt;br /&gt;
fi&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
You can easily create a push button menu item for this: [http://blogs.thehumanjourney.net/finds/entry/usb_host_mode_the_button Instructions]&lt;br /&gt;
&lt;br /&gt;
==== Using a GUI ====&lt;br /&gt;
* Using the packaged push button derived from the script above: [http://blogs.thehumanjourney.net/finds/resource/usbmode-button_0.1_armv4t.ipk Download]&lt;br /&gt;
* [[User:Techiem2|Mark D. Montgomery II]]'s [http://techiem2.net/index.php?/archives/10-Freerunner-USB-Mode-Control-Program.html application] controls all the various modes through a GUI&lt;br /&gt;
* Thomas Vesely's [http://projects.openmoko.org/projects/usbchmod/ project]&lt;br /&gt;
* Using the gtk+ gui [[Framework-settings]]&lt;br /&gt;
* Using openmoko-panel-plugin (confirmation and link needed)&lt;br /&gt;
&lt;br /&gt;
=== Providing power to connected USB devices while in host mode ===&lt;br /&gt;
&lt;br /&gt;
Normally, USB host ports provide power to any connected USB device.&lt;br /&gt;
&lt;br /&gt;
Available power in host mode is the full maximum of 500mA according to USB-specifications on the Neo FreeRunner, and no power is available in host mode on the Neo 1973. If your USB device respects USB-standards and consumes not more than 500mA, you may connect it directly to your Neo FreeRunner.&lt;br /&gt;
&lt;br /&gt;
To provide power to USB devices attached to your Neo 1973, or to provide power to your Neo FreeRunner while USB-device connected, you can provide power by using a (modified [for powering FreeRunner]) powered USB hub (see below), or by manually injecting power into the attached USB device (and Neo FreeRunner) via one of the [[specialized_USB_cables]].&lt;br /&gt;
&lt;br /&gt;
=== Powered USB hubs known to work with the Neo ===&lt;br /&gt;
&lt;br /&gt;
(please add any known to work)&lt;br /&gt;
&lt;br /&gt;
=== Providing power to run and charge the Neo while in host mode ===&lt;br /&gt;
&lt;br /&gt;
A slightly separate issue is power to run and charge the Neo (both types) itself. When the USB port is in device mode, the Neo FreeRunner/1973 can be powered and recharged via the USB port, but when in standard host mode, the Neo FreeRunner is set to provide power and does not charge. Fortunately, control of the direction of power (in or out) is independent of the personality of the USB port (host or device):&lt;br /&gt;
&lt;br /&gt;
To recap, the direction of power can be controlled:&lt;br /&gt;
&lt;br /&gt;
Set to 0 (default), no power is provided at the USB port, charging is enabled, and host 15K pulldowns are removed from D+ and D-:&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Set to 1, provides up to 500mA USB power at the USB port (FreeRunner only), disables charging from USB, and applies 15K pulldowns to USB D+ and D-:&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Next, power must somehow be injected. An unmodified powered USB hub only provides power to the connected devices, but not to the connected host, so the only solution here is to modify a USB-hub¹) or to create a custom cable which will inject power into the host. See [[specialized_USB_cables]] for some examples.&lt;br /&gt;
&lt;br /&gt;
(However, as there is a wide range[http://permalink.gmane.org/gmane.comp.handhelds.openmoko.hardware/415]&lt;br /&gt;
of USB hubs out there, one might find power (on a powered USB hub)&lt;br /&gt;
is available already on the hub's mini USB 5 pin socket already, so not need a specialized cable after all!&lt;br /&gt;
Check with a test meter.)&lt;br /&gt;
&lt;br /&gt;
Finally, there is the question of charge rate. The charging logic in the Neo will only charge at 100mA by default. Charging at 500mA will take place only if the charging device responds appropriatly to USB negotiation to increase power consumption. Charging at 1000mA will only take place if the Neo detects the appropriate resistor on the ID pins.&lt;br /&gt;
&lt;br /&gt;
You can manually set the charge rate. See [[Forcing_fast_charge_mode]]&lt;br /&gt;
&lt;br /&gt;
¹) often it's sufficient to short a diode in USB-hub to feed power to the host-connector too.&lt;br /&gt;
# Edit 05 Oct. 2008 : Not being able to find any diode on my ([[User:Henrikz|Henrikz]]) USB Hub (Brand: Equip, Type: 4 port, aluminum) I simply connected +5V (pin 1) from one of the downstream ports to pin 1 of the upstream port.&lt;br /&gt;
&lt;br /&gt;
=== Power Concerns ===&lt;br /&gt;
You'll need to force the Neo to go into fast charge mode, since it can't do its usual power negotiation over USB.&lt;br /&gt;
&lt;br /&gt;
echo -n &amp;quot;fast_cccv&amp;quot; &amp;gt;  /sys/devices/platform/s3c2410-i2c/i2c-adapter/i2c-0/0-0008/chgmode&lt;br /&gt;
&lt;br /&gt;
(Also this should be done by kernel when seeing 47K at ID-pin)&lt;br /&gt;
&lt;br /&gt;
=== Working Examples ===&lt;br /&gt;
&lt;br /&gt;
==== USB Keyboard ====&lt;br /&gt;
&lt;br /&gt;
Pictures [http://blogs.thehumanjourney.net/finds/entry/20080716 here]&lt;br /&gt;
&lt;br /&gt;
==== Connecting a USB-Stick ====&lt;br /&gt;
[[Image:connecting-usb-stick-1.jpg|thumb|left]]&lt;br /&gt;
I found this adapter, it has 2 Type A jacks, rather cheap (about 5 &amp;amp;euro;).&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-2.jpg|thumb|left]]&lt;br /&gt;
I borrowed the cable from a card reader, it has the same pinout like the cable that comes with the Neo.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-3.jpg|thumb|left]]&lt;br /&gt;
With the above commands I could mount the memory stick.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-4.jpg|thumb|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Neo1973 Hardware]]&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;br /&gt;
[[Category:USB]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/USB_host</id>
		<title>USB host</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/USB_host"/>
				<updated>2008-11-23T10:16:54Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Selecting USB host modes */link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|USB host}}&lt;br /&gt;
The mini-USB port on both the Neo 1973 and the Neo FreeRunner supports both USB host and USB device. This opens up a range of possibilities, such as adding USB cameras and USB input devices.&lt;br /&gt;
&lt;br /&gt;
=== Using USB host mode ===&lt;br /&gt;
==== Selecting USB host modes ====&lt;br /&gt;
&lt;br /&gt;
By default, the mini-USB port is in device mode. To tell the Neo that it is logically a host¹):&lt;br /&gt;
&lt;br /&gt;
 # echo host &amp;gt; [[GTA02 sysfs|/sys]]/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&lt;br /&gt;
Independent of the logical mode of the USB port, the Neo FreeRunner can provide 5 volt USB power to an attached USB device. To enable this (not available on Neo 1973):&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Note: You may want to run &amp;lt;code&amp;gt;ifconfig usb0 down&amp;lt;/code&amp;gt; prior to switching to USB host mode, as the Neo's USB networking may not like having its USB port disappear. You'll probably want to ssh into your Neo over WiFi or Bluetooth before starting all of this, alternatively use an on screen keyboard.&lt;br /&gt;
&lt;br /&gt;
Note that in full USB host mode the FreeRunner will power the external device. To avoid draining the battery use a powered USB hub, then on the FreeRunner enable logical host mode:&lt;br /&gt;
&lt;br /&gt;
 # echo host &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&lt;br /&gt;
but NOT electrical host mode&lt;br /&gt;
&lt;br /&gt;
 # echo 0 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Note that powered USB hubs do not send power upstream, that is, into the host. If you wish to power or charge the FreeRunner, you will need a [[Specialized USB cables|special USB cable]].&lt;br /&gt;
&lt;br /&gt;
¹)Debian note: You'll need the ohci-hcd module:&lt;br /&gt;
modprobe ohci-hcd&lt;br /&gt;
&lt;br /&gt;
* NOTE: with [FSO] based distributions one should use the dbus APIs and not the method stated above.&lt;br /&gt;
&lt;br /&gt;
==== Returning to USB device mode ====&lt;br /&gt;
After doing whatever is needed to safely remove your device and unplugging it you can remove the provision of 5 volt power and return to device mode.&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;device&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
You can now safely restart USB networking.&lt;br /&gt;
&lt;br /&gt;
==== USB-Mode-Script====&lt;br /&gt;
These simple script is useful to switch the USB-Modes:&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#!/bin/sh&amp;lt;/nowiki&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
grep -q 'host' /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
if [ $? -eq 0 ]&amp;lt;BR&amp;gt;&lt;br /&gt;
then&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;device&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo USB-Port is in device-mode now.&amp;lt;BR&amp;gt;&lt;br /&gt;
else&amp;lt;BR&amp;gt;&lt;br /&gt;
ifconfig usb0 down&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;host&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo USB-Port is in host-mode now.&amp;lt;BR&amp;gt;&lt;br /&gt;
fi&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
You can easily create a push button menu item for this: [http://blogs.thehumanjourney.net/finds/entry/usb_host_mode_the_button Instructions]&lt;br /&gt;
&lt;br /&gt;
==== Using a GUI ====&lt;br /&gt;
* Using the packaged push button derived from the script above: [http://blogs.thehumanjourney.net/finds/resource/usbmode-button_0.1_armv4t.ipk Download]&lt;br /&gt;
* [[User:Techiem2|Mark D. Montgomery II]]'s [http://techiem2.net/index.php?/archives/10-Freerunner-USB-Mode-Control-Program.html application] controls all the various modes through a GUI&lt;br /&gt;
* Thomas Vesely's [http://projects.openmoko.org/projects/usbchmod/ project]&lt;br /&gt;
* Using the gtk+ gui [[Framework-settings]]&lt;br /&gt;
* Using openmoko-panel-plugin (confirmation and link needed)&lt;br /&gt;
&lt;br /&gt;
=== Providing power to connected USB devices while in host mode ===&lt;br /&gt;
&lt;br /&gt;
Normally, USB host ports provide power to any connected USB device.&lt;br /&gt;
&lt;br /&gt;
Available power in host mode is the full maximum of 500mA according to USB-specifications on the Neo FreeRunner, and no power is available in host mode on the Neo 1973. If your USB device respects USB-standards and consumes not more than 500mA, you may connect it directly to your Neo FreeRunner.&lt;br /&gt;
&lt;br /&gt;
To provide power to USB devices attached to your Neo 1973, or to provide power to your Neo FreeRunner while USB-device connected, you can provide power by using a (modified [for powering FreeRunner]) powered USB hub (see below), or by manually injecting power into the attached USB device (and Neo FreeRunner) via one of the [[specialized_USB_cables]].&lt;br /&gt;
&lt;br /&gt;
=== Powered USB hubs known to work with the Neo ===&lt;br /&gt;
&lt;br /&gt;
(please add any known to work)&lt;br /&gt;
&lt;br /&gt;
=== Providing power to run and charge the Neo while in host mode ===&lt;br /&gt;
&lt;br /&gt;
A slightly separate issue is power to run and charge the Neo (both types) itself. When the USB port is in device mode, the Neo FreeRunner/1973 can be powered and recharged via the USB port, but when in standard host mode, the Neo FreeRunner is set to provide power and does not charge. Fortunately, control of the direction of power (in or out) is independent of the personality of the USB port (host or device):&lt;br /&gt;
&lt;br /&gt;
To recap, the direction of power can be controlled:&lt;br /&gt;
&lt;br /&gt;
Set to 0 (default), no power is provided at the USB port, charging is enabled, and host 15K pulldowns are removed from D+ and D-:&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Set to 1, provides up to 500mA USB power at the USB port (FreeRunner only), disables charging from USB, and applies 15K pulldowns to USB D+ and D-:&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Next, power must somehow be injected. An unmodified powered USB hub only provides power to the connected devices, but not to the connected host, so the only solution here is to modify a USB-hub¹) or to create a custom cable which will inject power into the host. See [[specialized_USB_cables]] for some examples.&lt;br /&gt;
&lt;br /&gt;
(However, as there is a wide range[http://permalink.gmane.org/gmane.comp.handhelds.openmoko.hardware/415]&lt;br /&gt;
of USB hubs out there, one might find power (on a powered USB hub)&lt;br /&gt;
is available already on the hub's mini USB 5 pin socket already, so not need a specialized cable after all!&lt;br /&gt;
Check with a test meter.)&lt;br /&gt;
&lt;br /&gt;
Finally, there is the question of charge rate. The charging logic in the Neo will only charge at 100mA by default. Charging at 500mA will take place only if the charging device responds appropriatly to USB negotiation to increase power consumption. Charging at 1000mA will only take place if the Neo detects the appropriate resistor on the ID pins.&lt;br /&gt;
&lt;br /&gt;
You can manually set the charge rate. See [[Forcing_fast_charge_mode]]&lt;br /&gt;
&lt;br /&gt;
¹) often it's sufficient to short a diode in USB-hub to feed power to the host-connector too.&lt;br /&gt;
# Edit 05 Oct. 2008 : Not being able to find any diode on my ([[User:Henrikz|Henrikz]]) USB Hub (Brand: Equip, Type: 4 port, aluminum) I simply connected +5V (pin 1) from one of the downstream ports to pin 1 of the upstream port.&lt;br /&gt;
&lt;br /&gt;
=== Power Concerns ===&lt;br /&gt;
You'll need to force the Neo to go into fast charge mode, since it can't do its usual power negotiation over USB.&lt;br /&gt;
&lt;br /&gt;
echo -n &amp;quot;fast_cccv&amp;quot; &amp;gt;  /sys/devices/platform/s3c2410-i2c/i2c-adapter/i2c-0/0-0008/chgmode&lt;br /&gt;
&lt;br /&gt;
(Also this should be done by kernel when seeing 47K at ID-pin)&lt;br /&gt;
&lt;br /&gt;
=== Working Examples ===&lt;br /&gt;
&lt;br /&gt;
==== USB Keyboard ====&lt;br /&gt;
&lt;br /&gt;
Pictures [http://blogs.thehumanjourney.net/finds/entry/20080716 here]&lt;br /&gt;
&lt;br /&gt;
==== Connecting a USB-Stick ====&lt;br /&gt;
[[Image:connecting-usb-stick-1.jpg|thumb|left]]&lt;br /&gt;
I found this adapter, it has 2 Type A jacks, rather cheap (about 5 &amp;amp;euro;).&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-2.jpg|thumb|left]]&lt;br /&gt;
I borrowed the cable from a card reader, it has the same pinout like the cable that comes with the Neo.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-3.jpg|thumb|left]]&lt;br /&gt;
With the above commands I could mount the memory stick.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-4.jpg|thumb|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Neo1973 Hardware]]&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;br /&gt;
[[Category:USB]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/USB_Networking</id>
		<title>USB Networking</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/USB_Networking"/>
				<updated>2008-11-23T10:14:06Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* From desktop to FreeRunner */repair&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Openmoko Networking Setup =&lt;br /&gt;
&lt;br /&gt;
In order to communicate via TCP/IP to your FreeRunner, a basic understanding of the networking expectations is required.  Each end of the USB connection forms a LAN (local area network) segment, with the FreeRunner's USB networking device at one end (default 192.168.0.202) and your laptop or desktop at the other end (192.168.0.200 in this guide).&lt;br /&gt;
&lt;br /&gt;
Normally, your desktop machine will know how to reach the Internet, having had its gateway (the IP address of the machine or device which knows how to send packets to machines beyond your subnet) configured via DHCP or statically (probably via a router).  For the FreeRunner to reach the Internet, your desktop will have to be configured to route and masquerade (NAT) packets from it.&lt;br /&gt;
&lt;br /&gt;
Normally, none of this is an issue, but problems can arise when the subnet between the FreeRunner and your desktop overlap with the desktop to the router (which forms a second LAN), since your desktop might not know how to route traffic properly.&lt;br /&gt;
&lt;br /&gt;
In other words: if your existing router and desktop have addresses 192.168.0.(something) changing them to e.g. 192.168.1.(something) might save you a lot of troubleshooting later. A discussion of this is [http://lists.openmoko.org/pipermail/support/2008-August/thread.html#1277 here].&lt;br /&gt;
&lt;br /&gt;
= Simple Manual Linux Configuration =&lt;br /&gt;
&lt;br /&gt;
Try this first (as root on your desktop, with FreeRunner attached via USB cable and booted properly, not at the Boot Menu).  If it works, then you can add permanent configuration or use more sophisticated setups below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
ip addr add 192.168.0.200/24 dev usb0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your Internet connection is also in the range 192.168.0.x then instead you might want to use only:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ip addr add 192.168.0.200/28 dev usb0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(This will just map the net from 192.168.0.192 to 192.168.0.207 onto usb0. If you get the error 'Cannot find device &amp;quot;usb0&amp;quot;', double-check that your FreeRunner is turned on and connected by USB. If that doesn't work, try unplugging and replugging the USB cable.)&lt;br /&gt;
&lt;br /&gt;
And in this case you should enable ARP proxy on internet facing interface INSTEAD of using iptables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sysctl net.ipv4.conf.eth2.proxy_arp=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This assuming that eth2 is connected to ISP.&lt;br /&gt;
&lt;br /&gt;
Then&lt;br /&gt;
&amp;lt;pre&amp;gt;ifconfig usb0 up&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then (ideally, not as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ssh root@192.168.0.202&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default password is blank.&lt;br /&gt;
&lt;br /&gt;
Due to the fact that in most cases your Neo will use the same dns servers as your computer uses, you can automate the process of writing dns servers to your phone:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
/sbin/route add -host 192.168.0.202/32 dev usb0&lt;br /&gt;
iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
iptables -P FORWARD ACCEPT&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
su `whoami` -c &amp;quot;scp /etc/resolv.conf root@192.168.0.202:/etc/resolv.conf&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again if your net already is 192.168.0.0, replace the POSTROUTING statement with&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/28&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This simple script will set up routing for your Freerunner and than copy resolv.conf with dns addresses straight to the phone.&lt;br /&gt;
All you have to do is connect phone to the computer, run the script and enjoy internet connection from your phone.&lt;br /&gt;
&lt;br /&gt;
= Linux Kernel Support =&lt;br /&gt;
&lt;br /&gt;
Your Linux desktop/laptop needs to have suitable support, in particular, you will need to have enabled full masquerading in the kernel and USB networking options enabled.  For default kernels in many Linux distributions, this will already be the case.  If not, you will need to enable:&lt;br /&gt;
&lt;br /&gt;
* CONFIG_USB_USBNET&lt;br /&gt;
* CONFIG_USB_NET_CDCETHER&lt;br /&gt;
&lt;br /&gt;
Both USB networking options are available in the&lt;br /&gt;
&lt;br /&gt;
''Device Drivers -&amp;gt; USB support -&amp;gt; USB Network Adapters''&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Device Drivers -&amp;gt; Network Device Support -&amp;gt; USB Network Adapters -&amp;gt; Multipurpose USB Networking Framework''.&lt;br /&gt;
&lt;br /&gt;
For more info see the [http://www.linux-usb.org/usbnet/ usbnet driver homepage].&lt;br /&gt;
&lt;br /&gt;
Masquerading options (tested on Linux 2.6.26.3) are found in:&lt;br /&gt;
&lt;br /&gt;
''Networking ---&amp;gt;&lt;br /&gt;
Networking options ---&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
To see the other options, enable&lt;br /&gt;
&lt;br /&gt;
* CONFIG_NETFILTER (''Network packet filtering framework (Netfilter)'')&lt;br /&gt;
&lt;br /&gt;
Then, from&lt;br /&gt;
&lt;br /&gt;
''Networking ---&amp;gt;&lt;br /&gt;
Networking options ---&amp;gt;&lt;br /&gt;
[*] Network packet filtering framework (Netfilter) ---&amp;gt;&lt;br /&gt;
Core Netfilter Configuration ---&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need at least following options enabled as modules:&lt;br /&gt;
&lt;br /&gt;
* CONFIG_NF_CONNTRACK (''Netfilter connection tracking support'')&lt;br /&gt;
* CONFIG_NF_CONNTRACK_FTP (''FTP protocol support'')&lt;br /&gt;
* CONFIG_NETFILTER_XTABLES (''Netfilter Xtables support'')&lt;br /&gt;
&lt;br /&gt;
Rest of the needed options are found from&lt;br /&gt;
&lt;br /&gt;
''Networking ---&amp;gt;&lt;br /&gt;
Networking options ---&amp;gt;&lt;br /&gt;
[*] Network packet filtering framework (Netfilter) ---&amp;gt;&lt;br /&gt;
IP: Netfilter Configuration ---&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to enable (again, as modules is fine):&lt;br /&gt;
&lt;br /&gt;
* CONFIG_NF_CONNTRACK_IPV4 (''IPv4 connection tracking support (required for NAT)'')&lt;br /&gt;
* CONFIG_IP_NF_IPTABLES (''IP tables support (required for filtering/masq/NAT)'')&lt;br /&gt;
* CONFIG_NF_NAT (''Full NAT'')&lt;br /&gt;
* CONFIG_IP_NF_TARGET_MASQUERADE (''MASQUERADE target support'')&lt;br /&gt;
&lt;br /&gt;
= Firewall Issues =&lt;br /&gt;
&lt;br /&gt;
On some systems, you may have firewall rules which prevent this working - such as added by the iptables service on Fedora.  You may care to stop these, and/or review any rules or policies you think might cause issues.&lt;br /&gt;
&lt;br /&gt;
The most relevant table is the nat table, which controls translation of addresses:&lt;br /&gt;
&lt;br /&gt;
iptables -L -t nat -v -n&lt;br /&gt;
&lt;br /&gt;
Unless you have a special setup, you'll want to see only the MASQUERADE rule that you apply below, and ACCEPT as the default policy.  Also look at the filter table:&lt;br /&gt;
&lt;br /&gt;
iptables -L -t filter -v -n&lt;br /&gt;
&lt;br /&gt;
If this contains anything in the FORWARD chain, then this may prevent passing packets.  It can be flushed with:&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -F FORWARD&lt;br /&gt;
&lt;br /&gt;
= DNS =&lt;br /&gt;
&lt;br /&gt;
In addition to routing issues, to be practical, DNS will need to work.  In some cases, you might already be running a DNS server on your desktop such as dnsmasq or bind9, which is the default assumption the FreeRunner makes.  In other cases, you'll need to configure DNS to that of your router, or a DNS server further out on the internet such as that provided by your ISP.&lt;br /&gt;
&lt;br /&gt;
== Configure Default Neo DNS ==&lt;br /&gt;
&lt;br /&gt;
DNS is configured in /etc/resolv.conf on your FreeRunner.&lt;br /&gt;
&lt;br /&gt;
You should add the IP address of the DNS servers as provided by your ISP. Check your router's or PC's network status for the nameserver IP addresses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;echo nameserver xxx.xxx.xxx.xxx &amp;gt; /etc/resolv.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also add the public DNS server called openDNS:&lt;br /&gt;
&amp;lt;pre&amp;gt;echo nameserver 208.67.222.222 &amp;gt; /etc/resolv.conf&lt;br /&gt;
echo nameserver 208.67.220.220 &amp;gt;&amp;gt; /etc/resolv.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These settings will be lost on reboot. You can set the DNS for the next connect, by adding the following to the end of the usb0 setting in /etc/network/interfaces, right above the bluetooth networking section:&lt;br /&gt;
&amp;lt;pre&amp;gt;up echo nameserver 208.67.222.222 &amp;gt; /etc/resolv.conf&lt;br /&gt;
up echo nameserver 208.67.220.220 &amp;gt;&amp;gt; /etc/resolv.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proxying DNS from Desktop/Laptop ==&lt;br /&gt;
&lt;br /&gt;
If you move about, making assumptions about the network may not be convenient, and it is possible to proxy DNS requests via your host laptop (which you are also taking with you), without running or installing a DNS server.  There are a number of ways to do this:&lt;br /&gt;
&lt;br /&gt;
=== Proxying with dnrd ===&lt;br /&gt;
&lt;br /&gt;
The script is designed to use [http://dnrd.sourceforge.net/ dnrd] as the DNS proxy. The [http://buildhost.automated.it/gta01 script] and a copy of [http://buildhost.automated.it/dnrd-2.20.3.tar.gz dnrd] are available. The script also performs the initial setup of the connection as per the [[USB_Networking#Manual_method]] above.&lt;br /&gt;
&lt;br /&gt;
=== Proxying with a UDP forwarder ===&lt;br /&gt;
&lt;br /&gt;
Another easy setup is using a UDP forwarder like the one from http://www.tapor.com/udpf/ - use it with the command&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;udpf-elf -p=53-f=`awk '$1 == &amp;quot;nameserver&amp;quot;{print $2; exit(0);}' /etc/resolv.conf`:53&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proxying with iptables ===&lt;br /&gt;
&lt;br /&gt;
It is possible to forward DNS requests with iptables using the DNAT target:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A PREROUTING -p tcp -s 192.168.0.202 -d 192.168.0.200 --dport domain -j DNAT --to-destination 192.168.0.1&lt;br /&gt;
iptables -t nat -A PREROUTING -p udp -s 192.168.0.202 -d 192.168.0.200 --dport domain -j DNAT --to-destination 192.168.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;tt&amp;gt;192.168.0.1&amp;lt;/tt&amp;gt; is the IP of your router.&lt;br /&gt;
&lt;br /&gt;
Test if it works:&lt;br /&gt;
&amp;lt;pre&amp;gt;ping www.google.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If so, then this is sufficient for most internet access. But manual changes to resolv.conf are usually lost later if for example one uses DHCP, especially for WiFi, and so may not be convenient to configure manually.&lt;br /&gt;
&lt;br /&gt;
= Testing Your Connection =&lt;br /&gt;
You should be able to connect to your Neo! Make sure you can ping your Neo to be sure.&lt;br /&gt;
ping 192.168.0.202&lt;br /&gt;
&lt;br /&gt;
Then log into your Neo using ssh:&lt;br /&gt;
ssh root@192.168.0.202&lt;br /&gt;
The default password is blank (press enter).&lt;br /&gt;
&lt;br /&gt;
You can also [[scp]] files back and forth. You can telnet, SSH, SMB or do whatever you want if you install software that enables you to set up TCP/IP network over your USB connection.&lt;br /&gt;
&lt;br /&gt;
Now, make sure you can ping back to your desktop&lt;br /&gt;
ping 192.168.0.200&lt;br /&gt;
(Note that some systems like Vista, don't respond to ICMP ping by default)&lt;br /&gt;
&lt;br /&gt;
Try pinging the outside world (a Google IP address)&lt;br /&gt;
ping 74.125.19.147&lt;br /&gt;
This demonstrates that masquerading is working - your desktop is sending/receiving packets to the wider internet.&lt;br /&gt;
&lt;br /&gt;
Lastly, verify that DNS is correctly configured between the Neo &amp;amp; Network:&lt;br /&gt;
ping www.google.com&lt;br /&gt;
&lt;br /&gt;
= OS or Distro Specific &amp;amp; Automatic Configuration =&lt;br /&gt;
&lt;br /&gt;
Based on [http://blog.haerwu.biz/2007/03/22/hotpluging-usbnet/ Hotplugging usbnet] by Marcin 'Hrw' Juszkiewicz.&lt;br /&gt;
These instructions should keep you from having to run the Simple Manual Linux Configuration every time you plug in and want to connect to an Openmoko device.  One run and then you're done!&lt;br /&gt;
&lt;br /&gt;
If the Simple Manual Linux Configuration does not work for your OS or Distro (MacOS X, MS Windows, etc) there may be instructions here that work for you.&lt;br /&gt;
&lt;br /&gt;
== MacOS X ==&lt;br /&gt;
See [[MacOS_X#USB_Networking|MacOS X USB Networking]].&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
See [[Neo1973_and_Windows#USB_Ethernet_emulation|Windows USB Ethernet emulation for Neo1973]].&lt;br /&gt;
&lt;br /&gt;
== FreeBSD ==&lt;br /&gt;
You need to load the cdce kernel module (if it is not already linked into your kernel). As root do:&lt;br /&gt;
&lt;br /&gt;
# kldload cdce&lt;br /&gt;
&lt;br /&gt;
The Neo should then show up as cdce0 interface and you can handle the cdce0 interface just like the usb0 device under Linux. For more information see the cdce manpage. An easy way to assign the IP address to the cdce0 interface is using the devd(8) daemon. Create the following two files,&lt;br /&gt;
&lt;br /&gt;
/usr/local/etc/devd/cdce.conf as:&lt;br /&gt;
&lt;br /&gt;
notify 1 {&lt;br /&gt;
match &amp;quot;system&amp;quot;          &amp;quot;IFNET&amp;quot;;&lt;br /&gt;
match &amp;quot;subsystem&amp;quot;       &amp;quot;cdce0&amp;quot;;&lt;br /&gt;
match &amp;quot;type&amp;quot;            &amp;quot;ATTACH&amp;quot;;&lt;br /&gt;
action &amp;quot;/usr/local/etc/devd/cdce.sh $subsystem $type&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
and /usr/local/etc/devd/cdce.sh as:&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
case $2 in&lt;br /&gt;
'ATTACH')&lt;br /&gt;
ifconfig cdce0 192.168.0.200 netmask 255.255.255.0&lt;br /&gt;
exit 0 ;&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
Then restart the devd(8) daemon with:&lt;br /&gt;
&lt;br /&gt;
# /etc/rc.d/devd restart&lt;br /&gt;
&lt;br /&gt;
If you now plugin the FreeRunner into the USB port the cdce0 interface gets created and the IP addr will be assigned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debian, Ubuntu and others ==&lt;br /&gt;
&lt;br /&gt;
Edit /etc/network/interfaces and add:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# freerunner&lt;br /&gt;
allow-hotplug usb0&lt;br /&gt;
iface usb0 inet static&lt;br /&gt;
address 192.168.0.200&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
network 192.168.0.0&lt;br /&gt;
up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &amp;amp;&lt;br /&gt;
up echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward &amp;amp;&lt;br /&gt;
up iptables -P FORWARD ACCEPT &amp;amp;&lt;br /&gt;
down iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is more sophisticated than the manual setup.  The 'auto usb' stanza ties into the Linux hotplug system so that when the device appears and vanishes, as happens when the FreeRunner is connected via USB, this is run.&lt;br /&gt;
&lt;br /&gt;
In addition, the desktop-side netmask is limited to a much smaller range, so that overlapping subnets are less of a problem - Linux will use more specific routes first when deciding where to send packets.&lt;br /&gt;
&lt;br /&gt;
Another possible configuration that adds DNS forward and removes&lt;br /&gt;
the iptables changes after unplugging:&lt;br /&gt;
&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# freerunner&lt;br /&gt;
allow-hotplug usb0&lt;br /&gt;
iface usb0 inet static&lt;br /&gt;
address 192.168.0.200&lt;br /&gt;
netmask 255.255.255.192&lt;br /&gt;
post-up /etc/network/freerunner start&lt;br /&gt;
pre-down /etc/network/freerunner stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
create file /etc/network/freerunner&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# configures the freerunner for internet&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
DEVICE=usb0&lt;br /&gt;
IPADDR=192.168.0.200&lt;br /&gt;
REMOTE_IPADDR=192.168.0.202&lt;br /&gt;
NETMASK=255.255.255.0&lt;br /&gt;
&lt;br /&gt;
# get first ip for dns&lt;br /&gt;
DNSIP=$(awk '$1 == &amp;quot;nameserver&amp;quot;{print $2; exit(0);}' /etc/resolv.conf)&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
iptables -A POSTROUTING -t nat -j MASQUERADE -s $REMOTE_IPADDR&lt;br /&gt;
iptables -A PREROUTING -t nat -p tcp -s $REMOTE_IPADDR -d $IPADDR --dport domain -j DNAT --to-destination $DNSIP&lt;br /&gt;
iptables -A PREROUTING -t nat -p udp -s $REMOTE_IPADDR -d $IPADDR --dport domain -j DNAT --to-destination $DNSIP&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$(cat /proc/sys/net/ipv4/ip_forward)&amp;quot; = &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
echo &amp;quot;temoprarely allow ip_forward for openmoko&amp;quot; &amp;gt; /var/run/openmoko.ip_forward&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
iptables -D POSTROUTING -t nat -j MASQUERADE -s $REMOTE_IPADDR&lt;br /&gt;
iptables -D PREROUTING -t nat -p tcp -s $REMOTE_IPADDR -d $IPADDR --dport domain -j DNAT --to-destination $DNSIP&lt;br /&gt;
iptables -D PREROUTING -t nat -p udp -s $REMOTE_IPADDR -d  $IPADDR --dport domain -j DNAT --to-destination $DNSIP&lt;br /&gt;
&lt;br /&gt;
if [ -f /var/run/openmoko.ip_forward ]; then&lt;br /&gt;
rm /var/run/openmoko.ip_forward&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make /etc/network/freerunner executable with&lt;br /&gt;
chmod +x /etc/network/freerunner&lt;br /&gt;
&lt;br /&gt;
It is possible to use network-manager to automatically connect to the Freerunner using udev. The process uses udev to run a script when the Frerunner is plugged in.  The script uses the ip command to set the mac address of the usb network interface. To begin, create /etc/udev/rules.d/80-freerunner.rules :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This file causes programs to be run on device insertion.&lt;br /&gt;
# See udev(7) for syntax.&lt;br /&gt;
&lt;br /&gt;
# rule to assign a fixed mac address specified in /&lt;br /&gt;
KERNEL==&amp;quot;usb[0-9]*&amp;quot;, DRIVERS==&amp;quot;cdc_ether&amp;quot;, ACTION==&amp;quot;add&amp;quot;, RUN+=&amp;quot;/usr/local/sbin/freerunner-usb-add.sh %k&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, create the /usr/local/sbin/freerunner-usb-add.sh :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
(&lt;br /&gt;
busNum=$( printf %.2d $( expr match &amp;quot;$1&amp;quot; &amp;quot;usb\([0-9]*\)&amp;quot;) )&lt;br /&gt;
&lt;br /&gt;
ip link set &amp;quot;$1&amp;quot; address 00:00:22:55:bb:$busNum &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally run &amp;quot;chmod +x /usr/local/sbin/freerunner-usb-add.sh&amp;quot; to make it executable. Now you can use network-manager with mac-address specific settings and get it to automatically connect.&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu Issues ===&lt;br /&gt;
&lt;br /&gt;
Ubuntu 8.10 doesn't work as expected if you used /etc/network/interfaces to automate the connection. Network manager likes to latch onto the network device and add a default route through 192.168.0.202, breaking your network connection. Network manager also says you can't edit or remove this connection from its list. I'm going back to making the connection manually.&lt;br /&gt;
&lt;br /&gt;
Ubuntu Feisty, Gutsy and Hardy reportedly have a bug where ifdown is not run when the interface is unplugged, meaning this only works once after the system is booted.  This is mentioned at https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/130437&lt;br /&gt;
&lt;br /&gt;
One can patch /etc/udev/rules.d/85-ifupdown.rules. Moving the DRIVERS==&amp;quot;*?&amp;quot; out of the top GOTO, to ACTION==&amp;quot;add&amp;quot; line fixes the problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, GOTO=&amp;quot;net_start&amp;quot;&lt;br /&gt;
GOTO=&amp;quot;net_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LABEL=&amp;quot;net_start&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Bring devices up and down only if they're marked auto.&lt;br /&gt;
# Use start-stop-daemon so we don't wait on dhcp&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;,       RUN+=&amp;quot;/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifup -- --allow auto $env{INTERFACE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACTION==&amp;quot;remove&amp;quot;,       RUN+=&amp;quot;/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifdown -- --allow auto $env{INTERFACE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LABEL=&amp;quot;net_end&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bug is that the DRIVERS variable isn't set at all when the device is unplugged.&lt;br /&gt;
&lt;br /&gt;
This appears to be fixed in Ubuntu 8.04 [[User:Mattt|Mattt]] 11:38, 30 July 2008 (UTC)&lt;br /&gt;
:Actually it appears that it's not fixed, but patching that file and disconnecting and reconnecting the phone works perfectly. --[[User:Johndoesacc|Johndoesacc]] 18:37, 20 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Mandriva ==&lt;br /&gt;
&lt;br /&gt;
This first file configures the network system for the usb0 interface. Any time you plug in the FreeRunner the interface will be configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/sysconfig/network-scripts/ifcfg-usb0&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
DEVICE=usb0&lt;br /&gt;
BOOTPROTO=static&lt;br /&gt;
IPADDR=192.168.0.200&lt;br /&gt;
NETMASK=255.255.255.0&lt;br /&gt;
NETWORK=192.168.0.0&lt;br /&gt;
BROADCAST=192.168.0.255&lt;br /&gt;
ONBOOT=yes&lt;br /&gt;
METRIC=10&lt;br /&gt;
MII_NOT_SUPPORTED=no&lt;br /&gt;
USERCTL=yes&lt;br /&gt;
&lt;br /&gt;
This next file configures the static routes that we need to communicate to the subnet. Since it has &amp;quot;usb0&amp;quot; in the name, the system will automatically apply these static routes any time that the usb0 interface is configured. (i.e. when you connect the FreeRunner)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/sysconfig/network-scripts/usb0-routes&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
ADDRESS0=192.168.0.200&lt;br /&gt;
NETMASK0=255.255.255.0&lt;br /&gt;
&lt;br /&gt;
Now we need to restart the network system to pick up the changes.&lt;br /&gt;
&lt;br /&gt;
service network restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This didn't work for me (Mandriva 2008.1), giving errors from Shorewall. However, simply using MCC, Network-&amp;gt;Sharing Internet Access worked fine. You need to connect Neo when starting it. --[[User:Alih|Alih]] 18:50, 22 September 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== SuSE ==&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network/ifcfg-usb0:&lt;br /&gt;
&lt;br /&gt;
# USB configuration for PDAs (openmoko)&lt;br /&gt;
IPADDR=192.168.0.200&lt;br /&gt;
NETMASK=255.255.255.0&lt;br /&gt;
STARTMODE=onboot&lt;br /&gt;
&lt;br /&gt;
For more information on getting USB networking up using YaST, see [[USB Networking with openSUSE]].&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
&lt;br /&gt;
=== Option A - Tested with FC8 &amp;amp; FC5 ===&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network-scripts/ifcfg-usb0:&lt;br /&gt;
&lt;br /&gt;
# USB configuration for PDAs (openmoko)&lt;br /&gt;
# from http://www.handhelds.org/moin/moin.cgi/UsbNet&lt;br /&gt;
DEVICE=usb0&lt;br /&gt;
BOOTPROTO=none&lt;br /&gt;
IPADDR=192.168.0.200&lt;br /&gt;
NETMASK=255.255.255.0&lt;br /&gt;
ONBOOT=yes&lt;br /&gt;
&lt;br /&gt;
=== Option B ===&lt;br /&gt;
&lt;br /&gt;
This setup is probably over-complex:&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network-scripts/ifcfg-usb0:&lt;br /&gt;
&lt;br /&gt;
DEVICE=usb0&lt;br /&gt;
IPADDR=192.168.0.200&lt;br /&gt;
NETMASK=255.255.255.0&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network-scripts/ifup-usb:&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
cd /etc/sysconfig/network-scripts&lt;br /&gt;
. ./network-functions&lt;br /&gt;
&lt;br /&gt;
[ -f ../network ] &amp;amp;&amp;amp; . ../network&lt;br /&gt;
&lt;br /&gt;
CONFIG=${1}&lt;br /&gt;
&lt;br /&gt;
need_config ${CONFIG}&lt;br /&gt;
&lt;br /&gt;
source_config&lt;br /&gt;
&lt;br /&gt;
NETBITS=`ipcalc -p ${IPADDR} ${NETMASK} | awk -F'=' '{print $2;}'`&lt;br /&gt;
&lt;br /&gt;
/sbin/ip addr flush dev ${DEVICE} 2&amp;gt;/dev/null&lt;br /&gt;
/sbin/ip link set dev ${DEVICE} up&lt;br /&gt;
/sbin/ip addr add dev ${DEVICE} ${IPADDR}/${NETBITS}&lt;br /&gt;
&lt;br /&gt;
/sbin/iptables -I POSTROUTING -t nat -j MASQUERADE -s ${IPADDR}/${NETBITS}&lt;br /&gt;
/sbin/sysctl net.ipv4.ip_forward=1&lt;br /&gt;
/sbin/iptables -I FORWARD -s ${IPADDR}/${NETBITS} -j ACCEPT&lt;br /&gt;
/sbin/iptables -I FORWARD -d ${IPADDR}/${NETBITS} -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Set /etc/sysconfig/network-scripts/ifdown-usb:&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
cd /etc/sysconfig/network-scripts&lt;br /&gt;
. ./network-functions&lt;br /&gt;
&lt;br /&gt;
[ -f ../network ] &amp;amp;&amp;amp; . ../network&lt;br /&gt;
&lt;br /&gt;
CONFIG=${1}&lt;br /&gt;
&lt;br /&gt;
need_config ${CONFIG}&lt;br /&gt;
&lt;br /&gt;
source_config&lt;br /&gt;
&lt;br /&gt;
NETBITS=`ipcalc -p ${IPADDR} ${NETMASK} | awk -F'=' '{print $2;}'`&lt;br /&gt;
&lt;br /&gt;
/sbin/iptables -D FORWARD -d ${IPADDR}/${NETBITS} -j ACCEPT&lt;br /&gt;
/sbin/iptables -D FORWARD -s ${IPADDR}/${NETBITS} -j ACCEPT&lt;br /&gt;
/sbin/sysctl net.ipv4.ip_forward=0&lt;br /&gt;
/sbin/iptables -D POSTROUTING -t nat -j MASQUERADE -s ${IPADDR}/${NETBITS}&lt;br /&gt;
&lt;br /&gt;
/sbin/ip link set dev ${DEVICE} down&lt;br /&gt;
/sbin/ip addr flush dev ${DEVICE} 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
If you are using NetworkManager, restart it and enable the usb device from its menu, otherwise it will disable your connection shortly after you enable it.&lt;br /&gt;
&lt;br /&gt;
/sbin/service NetworkManager restart&lt;br /&gt;
=== Option C - tested on F9 ===&lt;br /&gt;
(seemed to work on FC8 also)&lt;br /&gt;
&lt;br /&gt;
Plug in the usb cable. NetworkManager should detect the phone automatically but you should ignore it.&lt;br /&gt;
Open Network Configuration tool (System -&amp;gt; Administration -&amp;gt; Network) and perform following steps:&lt;br /&gt;
# Click '''New''' button on top bar&lt;br /&gt;
# Click '''Forward'''&lt;br /&gt;
# Select OpenMoko from device list&lt;br /&gt;
# Click '''Forward'''&lt;br /&gt;
# Select 'Statically set IP address:' and enter address: 192.168.0.200, netmask 255.255.255.0 (or use 255.255.255.240 if you want only route ip range 192.168.0.192-192.168.0.207). Leave gateway empty.&lt;br /&gt;
# Click '''Forward'''&lt;br /&gt;
# Click '''Apply''' to close add dialog&lt;br /&gt;
# Select newly added usb0 device from the device list.&lt;br /&gt;
# Click '''Edit''' button on top bar&lt;br /&gt;
# You might want to remove a tick from 'Activate device when computer starts' check box.&lt;br /&gt;
# Click '''Ok''' to close window  dialog.&lt;br /&gt;
Save settings and close the window.&lt;br /&gt;
&lt;br /&gt;
Open Firewall Configuration (System -&amp;gt; Administration -&amp;gt; Firewall) and enable masquerading:&lt;br /&gt;
# Select '''Masquerading''' from left panel&lt;br /&gt;
# Check device(s) which you'd like to share internet connection. Typically eth0 or wlan0.&lt;br /&gt;
# Click '''Apply''' and close application&lt;br /&gt;
&lt;br /&gt;
Open terminal and perform (as root user):&lt;br /&gt;
# ifdown usb0&lt;br /&gt;
# ifup usb0&lt;br /&gt;
The first command will remove any existing settings given by the NetworkManager and second command brings the device up with appropriate settings.&lt;br /&gt;
&lt;br /&gt;
Now you should be able to ping e.g. 74.125.39.99 [www.google.com] from OpenMoko. Configure /etc/resolv.conf and you should have full a internet access.&lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting ====&lt;br /&gt;
If Network Configuration tool cannot see the the usb0 try to unplug the usb cable for a few seconds and wait until the NetworkManager finds it again.&lt;br /&gt;
&lt;br /&gt;
NetworkManager will assign a new ip address for the OpenMoko if link goes down for a while. You can fix this by issuing '''ifup usb0''' again.&lt;br /&gt;
&lt;br /&gt;
== Red Hat or Similar (tested with Workstation 5) ==&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig/network-scripts/net.hotplug:&lt;br /&gt;
&lt;br /&gt;
After this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
case $INTERFACE in&lt;br /&gt;
# interfaces that are registered after being &amp;quot;up&amp;quot; (?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb0)&lt;br /&gt;
ifconfig usb0 192.168.0.200 netmask 255.255.255.0&lt;br /&gt;
route add 192.168.0.202 usb0&lt;br /&gt;
iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
exit 0&lt;br /&gt;
;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
&lt;br /&gt;
Open /etc/conf.d/net and add:&lt;br /&gt;
&lt;br /&gt;
# Neo&lt;br /&gt;
config_usb0=( &amp;quot;192.168.0.200 netmask 255.255.255.0&amp;quot; )&lt;br /&gt;
routes_usb0=( &amp;quot;192.168.0.202/32 via 192.168.0.200&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Create a new init script:&lt;br /&gt;
&lt;br /&gt;
cd /etc/init.d&lt;br /&gt;
ln -s net.lo net.usb0&lt;br /&gt;
&lt;br /&gt;
=== Manual Configuration ===&lt;br /&gt;
&lt;br /&gt;
Put iptables into use:&lt;br /&gt;
&lt;br /&gt;
iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
&lt;br /&gt;
Store them:&lt;br /&gt;
&lt;br /&gt;
/etc/init.d/iptables save&lt;br /&gt;
&lt;br /&gt;
If you want the routing by default:&lt;br /&gt;
&lt;br /&gt;
rc-update add iptables default&lt;br /&gt;
&lt;br /&gt;
You must also inform the kernel, to start forwarding.&lt;br /&gt;
&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
=== Automatic Configuration ===&lt;br /&gt;
One way to automate all this is to create /etc/conf.d/net.usb0 as follows. It sets IP forwarding and the iptables rules all in one go. It removes the iptables rules and disables ip forwarding when the FreeRunner is unplugged.&lt;br /&gt;
&lt;br /&gt;
preup() {&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
return 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
postdown() {&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
iptables -D INPUT -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
iptables -D OUTPUT -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
return 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Slackware (tested with 12.1) ==&lt;br /&gt;
&lt;br /&gt;
Following is based on [http://www.enricozini.org/2008/tips/autodock-freerunner.html Enrico Zini's solution].&lt;br /&gt;
&lt;br /&gt;
Create a new udev rules file &amp;lt;tt&amp;gt;/etc/udev/rules.d/91-openmoko.rules&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, ATTRS{idVendor}==&amp;quot;1457&amp;quot;, ATTRS{idProduct}==&amp;quot;5122&amp;quot;, RUN+=&amp;quot;/sbin/om-usb $env{INTERFACE} start&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;remove&amp;quot;, ENV{INTERFACE}==&amp;quot;usb[0-9]&amp;quot;, RUN+=&amp;quot;/sbin/om-usb $env{INTERFACE} stop&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then create the script &amp;lt;tt&amp;gt;/sbin/om-usb&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
INTERFACE=$1&lt;br /&gt;
ACTION=$2&lt;br /&gt;
&lt;br /&gt;
# udev fails silently when the script fails, e.g. due to commands not&lt;br /&gt;
# being found&lt;br /&gt;
PATH=/usr/sbin:/sbin:/usr/bin:/bin&lt;br /&gt;
&lt;br /&gt;
case $ACTION in&lt;br /&gt;
'start')&lt;br /&gt;
# Put all your setup here&lt;br /&gt;
;;&lt;br /&gt;
'stop')&lt;br /&gt;
# Put all your tear down here&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;INTERFACE&amp;lt;/tt&amp;gt; will be &amp;lt;tt&amp;gt;usb0&amp;lt;/tt&amp;gt; in most cases.&lt;br /&gt;
&lt;br /&gt;
== Archlinux ==&lt;br /&gt;
Following is based on [http://xenos.altervista.org/blogs/index.php?blog=3&amp;amp;title=openmoko-usb-networking-su-archlinux furester's solution].&lt;br /&gt;
&lt;br /&gt;
Install package [http://aur.archlinux.org/packages.php?ID=20220 openmoko-usb-networking] from AUR:&lt;br /&gt;
&lt;br /&gt;
$ yaourt -S openmoko-usb-networking&lt;br /&gt;
&lt;br /&gt;
= SSH Extras =&lt;br /&gt;
&lt;br /&gt;
Reportedly, the ssh daemon (dropbear 0.49) on the FreeRunner appears to have a bug when sending the exit status back to the client. From time to time you receive an exit status of 255.&lt;br /&gt;
&lt;br /&gt;
To avoid ssh adding a new line for every ssh host-key to your known_hosts you can add the following to the phone section in ~/.ssh/config (or see the snippet at : [[USB Networking#Changing_host_keys]] bellow)&lt;br /&gt;
&lt;br /&gt;
UserKnownHostsFile /dev/null&lt;br /&gt;
&lt;br /&gt;
You might want to use keys to bypass the login prompt too.&lt;br /&gt;
&lt;br /&gt;
== SSH Keys ==&lt;br /&gt;
&lt;br /&gt;
== From desktop to FreeRunner ==&lt;br /&gt;
&lt;br /&gt;
To generate ssh keys for use as a login mechanism type:&lt;br /&gt;
&lt;br /&gt;
 user@host$ ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
When prompted for a password either hit enter for no password (''not really a good idea'') or enter a password for this key. ssh into the phone and create ~/.ssh:&lt;br /&gt;
&lt;br /&gt;
 root@phone# mkdir ~/.ssh&lt;br /&gt;
&lt;br /&gt;
Then from your desktop copy the '''.pub''' file to the phone.&lt;br /&gt;
&lt;br /&gt;
 user@host$ scp ~/.ssh/id_rsa.pub root@phone:~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You should now be able to ssh directly into the phone without a password prompt using a command like 'ssh root@phone' from the account user@host because the public key in the file user@host:~/.ssh/id_rsa.pub is contained in the list of keys which have access in the file root@phone:~/.ssh/authorized_keys (since scp is used, only one key exists, but you can grant access to the phone from more than one account, for example user@host, user@laptop).&lt;br /&gt;
&lt;br /&gt;
To make ssh login as root by default, add the following lines to ~/.ssh/config:&lt;br /&gt;
&lt;br /&gt;
 Host phone&lt;br /&gt;
 User root&lt;br /&gt;
&lt;br /&gt;
Replace ''phone'' with the hostname or ip of your phone. You should now be able to ssh into the phone without having to type ''root@'' every time.&lt;br /&gt;
&lt;br /&gt;
To disable password logins ('''after setting up key access''') edit /etc/init.d/dropbear and change the following line:&lt;br /&gt;
&lt;br /&gt;
 DROPBEAR_EXTRA_ARGS=&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 DROPBEAR_EXTRA_ARGS=&amp;quot;-s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You will need to restart dropbear for this to take effect.&lt;br /&gt;
&lt;br /&gt;
=== From FreeRunner to Desktop ===&lt;br /&gt;
&lt;br /&gt;
Generate the key:&lt;br /&gt;
&lt;br /&gt;
 dropbearkey -t rsa -f id_rsa&lt;br /&gt;
&lt;br /&gt;
The output will look something like this:&lt;br /&gt;
&lt;br /&gt;
 Will output 1024 bit rsa secret key to 'id_rsa'&lt;br /&gt;
 Generating key, this may take a while...&lt;br /&gt;
 Public key portion is:&lt;br /&gt;
 ssh-rsa AAAAB3Nza[...]&lt;br /&gt;
 Fingerprint: md5 ca:e8:f0:b7:f6:7b:c2:b6:b9:71:e4:45:86:a9:ff:b8&lt;br /&gt;
&lt;br /&gt;
Copy and paste the one line (in this example, starting with 'ssh-rsa' onto the end of the host's authorized_keys file (often in ~/.ssh/).&lt;br /&gt;
&lt;br /&gt;
From the phone, ssh with -i:&lt;br /&gt;
&lt;br /&gt;
 ssh -i id_rsa user@host&lt;br /&gt;
&lt;br /&gt;
=== Changing host keys ===&lt;br /&gt;
&lt;br /&gt;
If you reflash, your hosts keys will change.  Try this ~/.ssh/config snippet:&lt;br /&gt;
&lt;br /&gt;
 Host moko&lt;br /&gt;
 HostName 192.168.0.202&lt;br /&gt;
 StrictHostKeyChecking no&lt;br /&gt;
 UserKnownHostsFile /dev/null&lt;br /&gt;
 User root&lt;br /&gt;
&lt;br /&gt;
This is suggested because ssh on your desktop may complain if the key matching a certain IP changes (stored in .ssh/known_hosts). Now you have set this, you can issue the following command to connect to your moko :&lt;br /&gt;
&lt;br /&gt;
 ssh root@moko&lt;br /&gt;
&lt;br /&gt;
== GUI on desktop through SSH ==&lt;br /&gt;
&lt;br /&gt;
To get the GUI on the FreeRunner onto the desktop via USB, you can use ssh as follows:&lt;br /&gt;
&lt;br /&gt;
ssh -l root -X -v 192.168.0.202&lt;br /&gt;
&lt;br /&gt;
Using this, run openmoko-finger-demo for example, and it will open up on the desktop. To get landscape view, just resize the GUI window on the desktop.&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: dbus-launch failed to&lt;br /&gt;
autolaunch D-Bus session: Autolaunch requested, but X11 support not compiled in.&lt;br /&gt;
you need to set the DBUS_SESSION_BUS_ADDRESS environment variable to the value on the FreeRunner before launching the process from your desktop.  You can find the value of this variable by using a command such as&lt;br /&gt;
ps auxwwwwe | grep -m 1 DBUS_SESSION_BUS_ADDRESS&lt;br /&gt;
Note that you must run that command on the FreeRunner.  Back on your desktop, run the process you want with the ''env'' command like this:&lt;br /&gt;
env DBUS_SESSION_BUS_ADDRESS=''dbus_address'' ''process'' #(isn't the &amp;quot;env&amp;quot; redundant here?)&lt;br /&gt;
&lt;br /&gt;
==Display Remote Applications on FreeRunner==&lt;br /&gt;
&lt;br /&gt;
To get desktop apps to show up on your FreeRunner, first log in:&lt;br /&gt;
&lt;br /&gt;
ssh -l root 192.168.0.202&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
DISPLAY=:0 xhost +192.168.0.200&lt;br /&gt;
&lt;br /&gt;
After this you can close the ssh session. Back on the desktop computer, run:&lt;br /&gt;
&lt;br /&gt;
DISPLAY=openmoko:0 xclock&lt;br /&gt;
&lt;br /&gt;
Note that the xhost command will allow remote applications on 192.168.0.200 to access the X server. It will allow anyone on the desktop machine to access the X server of the neo, including snooping anything you type on it. To disallow remote applications again, run this in the neo:&lt;br /&gt;
&lt;br /&gt;
DISPLAY=:0 xhost -192.168.0.200&lt;br /&gt;
&lt;br /&gt;
==Automated setup network and mounting partitions==&lt;br /&gt;
&lt;br /&gt;
See [https://bugs.launchpad.net/ubuntu/+bug/289548 Ubuntu bug report in launchpad].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bottom&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Languages|USB Networking}}&lt;br /&gt;
&lt;br /&gt;
[[Category:USB]]&lt;br /&gt;
[[Category:Implemented]]&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/GTA02_sysfs</id>
		<title>GTA02 sysfs</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/GTA02_sysfs"/>
				<updated>2008-11-23T10:10:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* /sys/devices/platform/s3c2410-ohci/usb_mode */link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&amp;lt;font color=75d806&amp;gt;GTA02 Kernel sysfs highlights&amp;lt;/font&amp;gt;==&lt;br /&gt;
sysfs is a filesystem that is mounted on /sys which contains various fake &amp;quot;files&amp;quot; that are actually filled by a variety of drivers and other kernel subsystems.  You can often also write stuff into these &amp;quot;files&amp;quot; using&lt;br /&gt;
&lt;br /&gt;
echo 1 &amp;amp;gt; /sys/blah...&lt;br /&gt;
&lt;br /&gt;
to change settings and behaviours of the kernel and drivers dynamically.  (When doing this, take care you have a space before the redirection operator &amp;amp;gt; or the shell will do something completely different with your command.)&lt;br /&gt;
&lt;br /&gt;
===USB Host / Device===&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-host.0/hostmode====&lt;br /&gt;
* Defaults to 0, GTA02 USB hardware is configured to be a device, no power is generated for USB, charging is enabled and host 15K pulldowns are removed from D+ and D-&lt;br /&gt;
* Set to 1 to put the GTA02 USB hardware into host mode, so it starts to generate 5V power, disables charging from USB, and applies 15K pulldowns to USB D+ and D-&lt;br /&gt;
====/sys/devices/platform/s3c2410-ohci/usb_mode====&lt;br /&gt;
* Defaults to &amp;quot;device&amp;quot;, it means the USB peripheral in the CPU is logically configured for device mode&lt;br /&gt;
* Set to &amp;quot;host&amp;quot; to logically configure the peripheral to act like a host for other USB devices to be plugged into it&lt;br /&gt;
&lt;br /&gt;
Normally you set these two guys at the same time for the same mode, but there is a trick possible to select logical host mode but leave the power arrangements as if it was in device mode and apply external power.  You need to [[Specialized USB cables|externally add]] 15K pulldowns on D+ and D- if you do this, because we did not enable them the normal way.  With this, you can have a USB device attached to GTA02, and use external power and charge the battery at the same time.&lt;br /&gt;
&lt;br /&gt;
===GSM Subsystem===&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/power_on====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, GSM power OFF&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; to enable power to GSM logic&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/reset====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, no reset&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; briefly after power applied to reset GSM logic&lt;br /&gt;
====/sys/devices/platform/neo1973-pm-gsm.0/download====&lt;br /&gt;
* Defaults to &amp;quot;0&amp;quot;, no insane clicking sound&lt;br /&gt;
* Set to &amp;quot;1&amp;quot; to drive yourself crazy and enable serial access to GSM chips down headphone socket / once a second loud clicks / chirps&lt;br /&gt;
&lt;br /&gt;
===Resume Reason===&lt;br /&gt;
====/sys/devices/platform/neo1973-resume.0/resume_reason====&lt;br /&gt;
If you cat this you get a list of possible resume sources in text with one or more * at the left of the active source that woke us.  You need a recent U-Boot to get the * set.&lt;br /&gt;
&lt;br /&gt;
===MEMCONFIG===&lt;br /&gt;
====/sys/devices/platform/neo1973-memconfig.0/BANKCON0 .. 7====&lt;br /&gt;
For extreme meddlers (I salute you), these let you control the wait states and other characteristics of the memory regions of the FreeRunner.  Information and warnings about how to use these are here:&lt;br /&gt;
&lt;br /&gt;
http://git.openmoko.org/?p=kernel.git;a=commitdiff;h=fd25f90517322fc6c07bfb8d34752d3cb41cb4b6&lt;br /&gt;
&lt;br /&gt;
===FIQ and HDQ===&lt;br /&gt;
====/sys/devices/platform/sc32440_fiq.0/fiq/count====&lt;br /&gt;
FIQ is used to provide precision interrupt service in order to implement the HDQ protocol used to the battery couloumb counter.  This shows how many FIQ interrupts have been run since the kernel started.  It's turned off unless it is required.&lt;br /&gt;
====/sys/devices/platform/gta02-hdq.0/hdq/dump====&lt;br /&gt;
If you cat this, you will see the raw contents of HDQ device register space.  This is the bq27000 couloumb counter in our case.&lt;br /&gt;
====/sys/devices/platform/gta02-hdq.0/hdq/write====&lt;br /&gt;
This allows you to write to raw HDQ registers, using &amp;quot;&amp;lt;decimal register index&amp;gt; &amp;lt;decimal value&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===power_supply battery information===&lt;br /&gt;
Most of these are coming from the coulomb counter over HDQ dynamically, but the bq27000 does not update a lot of its registers any more often than once per 4 seconds.  Therefore a lot of this info can be a bit stale or averaged over that period.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/uevent====&lt;br /&gt;
All informations about battery.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/type====&lt;br /&gt;
Just says &amp;quot;Battery&amp;quot;&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/status====&lt;br /&gt;
This will summarize what goes on generally with the battery&lt;br /&gt;
* &amp;quot;Not Charging&amp;quot; - there's a charger in, but right now it isn't charging us.  Normal if you are fully charged and still powered.&lt;br /&gt;
* &amp;quot;Charging&amp;quot; - there's a charger in and it is charging the battery&lt;br /&gt;
* &amp;quot;Discharging&amp;quot; - we are running on battery&lt;br /&gt;
* &amp;quot;Full&amp;quot; - not normally given as a result (Not Charging used instead)&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/voltage_now====&lt;br /&gt;
Battery voltage in uV, averaged.  Obviously this depends on load and place on discharge curve, etc.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/current_now====&lt;br /&gt;
Current being drawn from battery (+ve) or pushed into battery during charging (-ve) in uA&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/charge_full====&lt;br /&gt;
Coulomb Counter's estimate of the capacity of the battery measured in uA/h.  It roughly means that if full, for one hour it could supply current at this rate.  I saw 1197913 reported on mine, so it estimates it can provide 1.2A for an hour.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/temp====&lt;br /&gt;
This is the battery temperature reported by the Coulomb Counter chip that is part of the physical battery.  It is in Celcius * 10, so 251 means 25.1 degrees.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/technology====&lt;br /&gt;
&amp;quot;Li-ion&amp;quot;&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/present====&lt;br /&gt;
* &amp;quot;0&amp;quot; the battery is absent, or not one with a Coulomb Counter&lt;br /&gt;
* &amp;quot;1&amp;quot; the smart battery is present&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/time_to_empty_now====&lt;br /&gt;
At current rate of discharge, estimate of how long we can run for.  If battery is not discharging, it won't make an estimate and will return a magic value &amp;quot;3932100&amp;quot; meaning &amp;quot;no estimate&amp;quot;.  The coulomb counter averages the load and adjusts this value slowly to be its estimate of when we will blow chunks.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/time_to_full_now====&lt;br /&gt;
This estimates how long until we are fully charged, at current rate of charging, in seconds.  If we are not charging, it gives the magic value &amp;quot;3932100&amp;quot; meaning &amp;quot;no estimate&amp;quot;.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/capacity====&lt;br /&gt;
This is the remaining capacity of charge in the battery in percent. This is probably the most useful figure here.&lt;br /&gt;
====/sys/devices/platform/bq27000-battery.0/power_supply/bat/online====&lt;br /&gt;
* &amp;quot;0&amp;quot; no charger is present&lt;br /&gt;
* &amp;quot;1&amp;quot; A powered charger is present&lt;br /&gt;
&lt;br /&gt;
===PMU info===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/chgmode====&lt;br /&gt;
* &amp;quot;enabled&amp;quot; means the charger is powered and willing to charge, although if you're full it might not be right now&lt;br /&gt;
* &amp;quot;disabled&amp;quot; means there was no power or not enough power supplied to charge&lt;br /&gt;
&lt;br /&gt;
Looks like it may also report &amp;quot;fast&amp;quot; here. [[User:OlivierBerger|OlivierBerger]] 07:47, 25 July 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/charger_type====&lt;br /&gt;
Shows the detected charger type followed by the mode it is running in.  So &amp;quot;charger 500mA mode 100mA&amp;quot; would be the case for non-enumerated USB connection, &amp;quot;charger 500mA mode 500mA&amp;quot; for after enumeration (or &amp;quot;host/500mA usb mode 500mA&amp;quot; as here [[User:OlivierBerger|OlivierBerger]]).&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous====&lt;br /&gt;
This is added to allow the PMU to be told to take more current than the default rules allow.  Use it only if you know your charger source can handle it.  For example&lt;br /&gt;
&lt;br /&gt;
 echo 500 &amp;gt; /sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/force_usb_limit_dangerous&lt;br /&gt;
&lt;br /&gt;
will allow PMU to draw 500mA even though you are connected to a dumb charger where the limit is normally held at 100mA, since it didn't enumerate the GTA02.  You can give 0, 100, 500 or 1000 here, but make sure your charger source can handle what you give here, otherwise it can exceed what is safe for your charging source to provide.&lt;br /&gt;
&lt;br /&gt;
More details at [[Forcing_fast_charge_mode]].&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/dump_regs====&lt;br /&gt;
cat this to get a dump of the I2C registers for the PMU, useful for debugging power problems.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-bt.0/power_on====&lt;br /&gt;
* Default &amp;quot;0&amp;quot; no power to Bluetooth device&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to enable power to Bluetooth&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-bt.0/reset====&lt;br /&gt;
* Default to &amp;quot;0&amp;quot;, no reset&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to reset BT (needed after powerup)&lt;br /&gt;
&lt;br /&gt;
===GPS===&lt;br /&gt;
====/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron====&lt;br /&gt;
* Default &amp;quot;0&amp;quot; GPS unpowered&lt;br /&gt;
* set to &amp;quot;1&amp;quot; to power GPS section&lt;br /&gt;
&lt;br /&gt;
===Audio codec===&lt;br /&gt;
====/sys/devices/platform/soc-audio/codec_reg====&lt;br /&gt;
cat this to get a dump of codec registers.  Note they are 9-bit wide.&lt;br /&gt;
====/sys/devices/platform/soc-audio/codec_reg_write====&lt;br /&gt;
You can write to any codec register by echoing &amp;quot;&amp;lt;codec reg index in hex&amp;gt; &amp;lt;value in hex&amp;gt;&amp;quot; to here&lt;br /&gt;
&lt;br /&gt;
===Glamo===&lt;br /&gt;
====/sys/devices/platform/glamo3362.0/regs====&lt;br /&gt;
cat this to get a dump of selected Glamo regs.  You can write the regs by echoing &amp;quot;&amp;lt;glamo reg index in decimal&amp;gt; &amp;lt;value in decimal&amp;gt;&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
===LED &amp;amp; Vibrator===&lt;br /&gt;
(per: Jeff Tickle)&lt;br /&gt;
====/sys/devices/platform/neo1973-vibrator.0/leds/neo1973:vibrator/brightness====&lt;br /&gt;
&lt;br /&gt;
For the Vibration, my very limited testing indicates it will accept a&lt;br /&gt;
range of 0-255, with 0 being off and 255 being full force.  So, you can&lt;br /&gt;
actually set the strength of vibration.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the vibration will positively eat your battery, so&lt;br /&gt;
use with caution!&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-aux:red/brightness====&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-power:blue/brightness====&lt;br /&gt;
====/sys/devices/platform/gta02-led.0/leds/gta02-power:orange/brightness====&lt;br /&gt;
&lt;br /&gt;
For the LEDs, you can echo 1 for on or 0 for off to any of these files&lt;br /&gt;
to control the state of the LEDs.&lt;br /&gt;
&lt;br /&gt;
===Accelerometers===&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/power/wakeup====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/power/wakeup====&lt;br /&gt;
Turns on accelerometers.&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/dump====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/dump====&lt;br /&gt;
Dumps accelerometers raw contents.&lt;br /&gt;
&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.0/full_scale====&lt;br /&gt;
====/sys/devices/platform/spi_s3c24xx_gpio.1/spi0.1/full_scale====&lt;br /&gt;
Switches the accelerometers between 2G and 8G mode.  Echo &amp;quot;9.2&amp;quot; into it for 8G, any other value for 2G (default)[http://lists.openmoko.org/pipermail/openmoko-kernel/2008-July/004029.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Specialized_USB_cables</id>
		<title>Specialized USB cables</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Specialized_USB_cables"/>
				<updated>2008-11-23T02:20:03Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* How to make a USB cable for powering attached USB devices and charging the Neo while in host mode */ Type A plugs have four slots, not 5 pins&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|work in progress}}&lt;br /&gt;
&lt;br /&gt;
== Attaching the Neo (acting as a USB host) to a USB device ==&lt;br /&gt;
&lt;br /&gt;
The USB port (5 position mini type B jack) on the Neo 1973 and Neo FreeRunner can be both a USB device or a USB host. The provided cable (5 position mini type B plug to type A plug) is used when attaching the Neo to a USB host.&lt;br /&gt;
&lt;br /&gt;
A specialized cable is required when attaching the Neo to a USB device. (The device has a USB type A jack).&lt;br /&gt;
&lt;br /&gt;
(picture)&lt;br /&gt;
&lt;br /&gt;
Alternately, an adapter capable of connecting two type A plugs will allow attaching the provided USB cable to the USB cable that came with the USB device. This adapter is also known as a gender changer.&lt;br /&gt;
&lt;br /&gt;
(picture)&lt;br /&gt;
&lt;br /&gt;
=== Ready-made mini type A plug to a type A jack adapter ===&lt;br /&gt;
&lt;br /&gt;
You can now purchase a proper [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 custom-manufacturered mini-A to full-sized A USB adapter from here]. This adapter already has Pins 4 and 5 shorted together internally; the unique form factor also makes it very handy and eliminated the need for things like the double USB female adapter trick shown at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
[[Image:USBOTGSwivel.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Ready-made mini type B plug to a type A jack cable ===&lt;br /&gt;
&lt;br /&gt;
You can buy [[http://www.jaykang.com/usbafetousbm1.html this]] ready-made USB A-Type Female to USB Mini-B Type 5 Pin Male Adapter.&lt;br /&gt;
[[Image:jaykang_usbafetousbm1.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
A Mini-B to Female-A cable is also available from [http://www.usbfirewire.com/Parts/rr-2mb-020.html www.usbfirewire.com].&lt;br /&gt;
&lt;br /&gt;
=== How to make a mini type B plug to a type A jack cable ===&lt;br /&gt;
&lt;br /&gt;
(picture, as soon as I build it)&lt;br /&gt;
&lt;br /&gt;
Parts list:&lt;br /&gt;
&lt;br /&gt;
* Mini type B plug: Digi-Key [[http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=H2958-ND H2958-ND]]&lt;br /&gt;
* type A jack: I have not yet been able to find a source for these. Meanwhile, use the jack from a standard USB extension cord&lt;br /&gt;
* Cable: Ideally, the data lines should be twisted and 28 AWG, the power lines should be 20 or 28 AWG, e.g. Hitachi Cable [[http://www.hcm.hitachi.com/electronic_round_cable/bulk-usb-cable.shtml 49248 ]]&lt;br /&gt;
&lt;br /&gt;
Construction instructions:&lt;br /&gt;
&lt;br /&gt;
(TBA)&lt;br /&gt;
&lt;br /&gt;
=== Ready-made type A jack to a type A jack adapter (gender changer) ===&lt;br /&gt;
&lt;br /&gt;
You can buy [[http://www.jaykang.com/usbtyfetotyf.html this]] ready-made USB Type A Female to Female Gender Changer.&lt;br /&gt;
[[Image:jaykang_usbtyfetotyf.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
=== How to make a type A jack to a type A jack adapter (gender changer) ===&lt;br /&gt;
&lt;br /&gt;
This community provided instruction shows how to build an adapter from a USB socket salvaged from a computer motherboard.&lt;br /&gt;
&lt;br /&gt;
Note that these instructions are provided in the hope that they are useful but without any warranty!&lt;br /&gt;
&lt;br /&gt;
[[Image:2-usb-receptables.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
:#Find an old motherboard with a set of two USB receptacles as shown above.&lt;br /&gt;
:#Desolder this set of receptacles from the motherboard. This can be bit tricky but it is doable at least with a desoldering gun.&lt;br /&gt;
:#Each receptacle has four pins. Use a multimeter to verify that you have no short circuits between the pins or the shield.&lt;br /&gt;
:#Solder adjacent pins together (GND to GND, D- to D-, D+ to D+, VCC to VCC).&lt;br /&gt;
:#(Optional) Build a test cable. Cut an USB cable with A plug into half, connect it a receptacle and again measure that you have no short circuits. Then connect the test cable to PC and verify that you see&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red +5V&lt;br /&gt;
:#FreeRunner is shipped with a mini-B-to-A-plug cable. Connect this to a receptacle.&lt;br /&gt;
:#(Optional)Connect test cable to the other receptacle and verify that you see&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red 0V&lt;br /&gt;
when freerunner acts as a device and&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red +5V&lt;br /&gt;
when it acts as a host.&lt;br /&gt;
:#At your own risk, switch freerunner to USB host mode and connect an USB device to the other receptacle of the adapter. Here's how the setup should look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Usb-gender-changer1.jpg&lt;br /&gt;
Image:Usb-gender-changer2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to make a type A jack to a type A jack adapter (gender changer) without soldering ===&lt;br /&gt;
&lt;br /&gt;
:#Find a 2-port USB front-panel with a 9-pin connector. Usually you can get one from a PC motherboard package box.&lt;br /&gt;
:#Align it in a way so you see the connector pins as a 2 row 5 column matrix with one pin missing.&lt;br /&gt;
:#Use 4 staples to short the pins residing in a same column.&lt;br /&gt;
:#FreeRunner is shipped with a mini-B-to-A-plug cable. Use it to connect the first port of your panel with your FreeRunner.&lt;br /&gt;
:#At your own risk, switch freerunner to USB host mode and connect an USB device to the other receptacle of the adapter.&lt;br /&gt;
&lt;br /&gt;
If you have a ASUS USB/MIR front panel, it is even easier - you can use jumpers to short the pins.&lt;br /&gt;
&lt;br /&gt;
[[Image:asususb.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
The adapter works with kingston data traveller 4G memory stick and aiptec pencam webcam. However, for some reason (probably the missing 15k resistors at D+ and D-) it did not work with any of the tested USB keyboards or mice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 24&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 25&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 26&lt;br /&gt;
usb 1-2: device not accepting address 26, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 27&lt;br /&gt;
usb 1-2: device not accepting address 27, error -62&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, if I connect neo to small (unpowered) USB hub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 61&lt;br /&gt;
usb 1-2: configuration #1 chosen from 1 choice&lt;br /&gt;
hub 1-2:1.0: USB hub found&lt;br /&gt;
hub 1-2:1.0: 4 ports detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and connect the keyboard to the hub then it is correctly recognized:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2.3: new low speed USB device using s3c2410-ohci and address 62&lt;br /&gt;
usb 1-2.3: configuration #1 chosen from 1 choice&lt;br /&gt;
input:   USB Keyboard as /devices/platform/s3c2410-ohci/usb1/1-2/1-2.3/1-2.3:1.0/input/input13&lt;br /&gt;
input: USB HID v1.10 Keyboard [  USB Keyboard] on usb-s3c24xx-2.3&lt;br /&gt;
input:   USB Keyboard as /devices/platform/s3c2410-ohci/usb1/1-2/1-2.3/1-2.3:1.1/input/input14&lt;br /&gt;
input: USB HID v1.10 Device [  USB Keyboard] on usb-s3c24xx-2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
With the hub I can also use both keyboard and usb memory stick at the same time.&lt;br /&gt;
&lt;br /&gt;
==== Power consumption ====&lt;br /&gt;
&lt;br /&gt;
When I unplug the USB hub (with only keyboard connected to it) the power consumption estimate at /sys/devices/platform/bq2700-battery.0/power_supply/bat/current_now decreases from 175000 to 145000 (are these microamperes?).&lt;br /&gt;
&lt;br /&gt;
== How to make a USB cable for powering attached USB devices and charging the Neo while in host mode ==&lt;br /&gt;
&lt;br /&gt;
{{note|work in progress}}&lt;br /&gt;
&lt;br /&gt;
This cable might be necessary for a number of reasons, e.g.&lt;br /&gt;
&lt;br /&gt;
* The application requires that the Neo not become suspended&lt;br /&gt;
* The application requires long run time&lt;br /&gt;
* The attached USB device consumes a lot of power&lt;br /&gt;
&lt;br /&gt;
(However, as there is a wide range[http://permalink.gmane.org/gmane.comp.handhelds.openmoko.hardware/415]&lt;br /&gt;
of USB hubs out there, one might find power (on a powered USB hub)&lt;br /&gt;
is available already on the hub's mini USB 5 pin socket already, so not need a specialized cable after all!&lt;br /&gt;
Check with a test meter.)&lt;br /&gt;
&lt;br /&gt;
These instructions will show you how to make a cable with 3 ends:&lt;br /&gt;
&lt;br /&gt;
* A mini-USB type B cable for the Neo itself&lt;br /&gt;
* A cable of whatever type to go to your USB device.&lt;br /&gt;
* A cable going to a +5V +/-10%(max!) power supply with enough power for your device and to charge the Neo. This could be a wall charger or even another USB plug.&lt;br /&gt;
&lt;br /&gt;
You connect the Data+ and Data- wires of the Neo and the device, and connect all of the ground wires together and all of the +5V wires together. This powers the Neo and the device, while letting the neo talk to the device.&lt;br /&gt;
You have to connect 2 pcs  15k ohm resistors, one from D+ to ground, and one from D- to ground, to comply with USB-spec for hostmode, as Neo is switching off the internal resistors when you enable charging/powering over USB by asserting EN_USBHOST.&lt;br /&gt;
See schematics, LOCATION:49XX&lt;br /&gt;
&lt;br /&gt;
Just for reference, the USB wires from left to right are:&lt;br /&gt;
*Black: Power -&lt;br /&gt;
*Green: Data -&lt;br /&gt;
*White: Data +&lt;br /&gt;
*Red: Power +&lt;br /&gt;
&lt;br /&gt;
The Mini_USB-B connector has a fifth pin, the ID-pin.&lt;br /&gt;
This pin is supposed to be short to ground to signal FreeRunner to enter hostmode. For the Y-cable and enabling external power while in hostmode, you may connect a 47k ohm resistor from ID-pin to ground. This is the same trick the OM-wallcharger uses to signal to FreeRunner it can charge with 1A. Future kernels should switch to hostmode + external power when seeing this 47k resistor.&lt;br /&gt;
&lt;br /&gt;
===Parts===&lt;br /&gt;
USB 2.0 Plug type A to mini 5 pin USB Plug type B that should include the ID signal, so that you can add the 47k ohm resistor to ID-pin to trigger fast charging&lt;br /&gt;
&lt;br /&gt;
# [http://www.firefold.com/Products/6-Foot-USB-20-Plug-type-A-to-mini-USB-Plug-type-B-5-pin-Cable---Black__USB-5PMINI-6.aspx firefold]&lt;br /&gt;
# Belkin 5 pin (find reference)&lt;br /&gt;
&lt;br /&gt;
[[Category:USB]]&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Specialized_USB_cables</id>
		<title>Specialized USB cables</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Specialized_USB_cables"/>
				<updated>2008-11-23T02:12:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* How to make a USB cable for powering attached USB devices and charging the Neo while in host mode */ grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|work in progress}}&lt;br /&gt;
&lt;br /&gt;
== Attaching the Neo (acting as a USB host) to a USB device ==&lt;br /&gt;
&lt;br /&gt;
The USB port (5 position mini type B jack) on the Neo 1973 and Neo FreeRunner can be both a USB device or a USB host. The provided cable (5 position mini type B plug to type A plug) is used when attaching the Neo to a USB host.&lt;br /&gt;
&lt;br /&gt;
A specialized cable is required when attaching the Neo to a USB device. (The device has a USB type A jack).&lt;br /&gt;
&lt;br /&gt;
(picture)&lt;br /&gt;
&lt;br /&gt;
Alternately, an adapter capable of connecting two type A plugs will allow attaching the provided USB cable to the USB cable that came with the USB device. This adapter is also known as a gender changer.&lt;br /&gt;
&lt;br /&gt;
(picture)&lt;br /&gt;
&lt;br /&gt;
=== Ready-made mini type A plug to a type A jack adapter ===&lt;br /&gt;
&lt;br /&gt;
You can now purchase a proper [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 custom-manufacturered mini-A to full-sized A USB adapter from here]. This adapter already has Pins 4 and 5 shorted together internally; the unique form factor also makes it very handy and eliminated the need for things like the double USB female adapter trick shown at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
[[Image:USBOTGSwivel.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Ready-made mini type B plug to a type A jack cable ===&lt;br /&gt;
&lt;br /&gt;
You can buy [[http://www.jaykang.com/usbafetousbm1.html this]] ready-made USB A-Type Female to USB Mini-B Type 5 Pin Male Adapter.&lt;br /&gt;
[[Image:jaykang_usbafetousbm1.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
A Mini-B to Female-A cable is also available from [http://www.usbfirewire.com/Parts/rr-2mb-020.html www.usbfirewire.com].&lt;br /&gt;
&lt;br /&gt;
=== How to make a mini type B plug to a type A jack cable ===&lt;br /&gt;
&lt;br /&gt;
(picture, as soon as I build it)&lt;br /&gt;
&lt;br /&gt;
Parts list:&lt;br /&gt;
&lt;br /&gt;
* Mini type B plug: Digi-Key [[http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=H2958-ND H2958-ND]]&lt;br /&gt;
* type A jack: I have not yet been able to find a source for these. Meanwhile, use the jack from a standard USB extension cord&lt;br /&gt;
* Cable: Ideally, the data lines should be twisted and 28 AWG, the power lines should be 20 or 28 AWG, e.g. Hitachi Cable [[http://www.hcm.hitachi.com/electronic_round_cable/bulk-usb-cable.shtml 49248 ]]&lt;br /&gt;
&lt;br /&gt;
Construction instructions:&lt;br /&gt;
&lt;br /&gt;
(TBA)&lt;br /&gt;
&lt;br /&gt;
=== Ready-made type A jack to a type A jack adapter (gender changer) ===&lt;br /&gt;
&lt;br /&gt;
You can buy [[http://www.jaykang.com/usbtyfetotyf.html this]] ready-made USB Type A Female to Female Gender Changer.&lt;br /&gt;
[[Image:jaykang_usbtyfetotyf.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
=== How to make a type A jack to a type A jack adapter (gender changer) ===&lt;br /&gt;
&lt;br /&gt;
This community provided instruction shows how to build an adapter from a USB socket salvaged from a computer motherboard.&lt;br /&gt;
&lt;br /&gt;
Note that these instructions are provided in the hope that they are useful but without any warranty!&lt;br /&gt;
&lt;br /&gt;
[[Image:2-usb-receptables.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
:#Find an old motherboard with a set of two USB receptacles as shown above.&lt;br /&gt;
:#Desolder this set of receptacles from the motherboard. This can be bit tricky but it is doable at least with a desoldering gun.&lt;br /&gt;
:#Each receptacle has four pins. Use a multimeter to verify that you have no short circuits between the pins or the shield.&lt;br /&gt;
:#Solder adjacent pins together (GND to GND, D- to D-, D+ to D+, VCC to VCC).&lt;br /&gt;
:#(Optional) Build a test cable. Cut an USB cable with A plug into half, connect it a receptacle and again measure that you have no short circuits. Then connect the test cable to PC and verify that you see&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red +5V&lt;br /&gt;
:#FreeRunner is shipped with a mini-B-to-A-plug cable. Connect this to a receptacle.&lt;br /&gt;
:#(Optional)Connect test cable to the other receptacle and verify that you see&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red 0V&lt;br /&gt;
when freerunner acts as a device and&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red +5V&lt;br /&gt;
when it acts as a host.&lt;br /&gt;
:#At your own risk, switch freerunner to USB host mode and connect an USB device to the other receptacle of the adapter. Here's how the setup should look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Usb-gender-changer1.jpg&lt;br /&gt;
Image:Usb-gender-changer2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to make a type A jack to a type A jack adapter (gender changer) without soldering ===&lt;br /&gt;
&lt;br /&gt;
:#Find a 2-port USB front-panel with a 9-pin connector. Usually you can get one from a PC motherboard package box.&lt;br /&gt;
:#Align it in a way so you see the connector pins as a 2 row 5 column matrix with one pin missing.&lt;br /&gt;
:#Use 4 staples to short the pins residing in a same column.&lt;br /&gt;
:#FreeRunner is shipped with a mini-B-to-A-plug cable. Use it to connect the first port of your panel with your FreeRunner.&lt;br /&gt;
:#At your own risk, switch freerunner to USB host mode and connect an USB device to the other receptacle of the adapter.&lt;br /&gt;
&lt;br /&gt;
If you have a ASUS USB/MIR front panel, it is even easier - you can use jumpers to short the pins.&lt;br /&gt;
&lt;br /&gt;
[[Image:asususb.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
The adapter works with kingston data traveller 4G memory stick and aiptec pencam webcam. However, for some reason (probably the missing 15k resistors at D+ and D-) it did not work with any of the tested USB keyboards or mice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 24&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 25&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 26&lt;br /&gt;
usb 1-2: device not accepting address 26, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 27&lt;br /&gt;
usb 1-2: device not accepting address 27, error -62&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, if I connect neo to small (unpowered) USB hub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 61&lt;br /&gt;
usb 1-2: configuration #1 chosen from 1 choice&lt;br /&gt;
hub 1-2:1.0: USB hub found&lt;br /&gt;
hub 1-2:1.0: 4 ports detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and connect the keyboard to the hub then it is correctly recognized:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2.3: new low speed USB device using s3c2410-ohci and address 62&lt;br /&gt;
usb 1-2.3: configuration #1 chosen from 1 choice&lt;br /&gt;
input:   USB Keyboard as /devices/platform/s3c2410-ohci/usb1/1-2/1-2.3/1-2.3:1.0/input/input13&lt;br /&gt;
input: USB HID v1.10 Keyboard [  USB Keyboard] on usb-s3c24xx-2.3&lt;br /&gt;
input:   USB Keyboard as /devices/platform/s3c2410-ohci/usb1/1-2/1-2.3/1-2.3:1.1/input/input14&lt;br /&gt;
input: USB HID v1.10 Device [  USB Keyboard] on usb-s3c24xx-2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
With the hub I can also use both keyboard and usb memory stick at the same time.&lt;br /&gt;
&lt;br /&gt;
==== Power consumption ====&lt;br /&gt;
&lt;br /&gt;
When I unplug the USB hub (with only keyboard connected to it) the power consumption estimate at /sys/devices/platform/bq2700-battery.0/power_supply/bat/current_now decreases from 175000 to 145000 (are these microamperes?).&lt;br /&gt;
&lt;br /&gt;
== How to make a USB cable for powering attached USB devices and charging the Neo while in host mode ==&lt;br /&gt;
&lt;br /&gt;
{{note|work in progress}}&lt;br /&gt;
&lt;br /&gt;
This cable might be necessary for a number of reasons, e.g.&lt;br /&gt;
&lt;br /&gt;
* The application requires that the Neo not become suspended&lt;br /&gt;
* The application requires long run time&lt;br /&gt;
* The attached USB device consumes a lot of power&lt;br /&gt;
&lt;br /&gt;
(However, as there is a wide range[http://permalink.gmane.org/gmane.comp.handhelds.openmoko.hardware/415]&lt;br /&gt;
of USB hubs out there, one might find power (on a powered USB hub)&lt;br /&gt;
is available already on the hub's mini USB 5 pin socket already, so not need a specialized cable after all!&lt;br /&gt;
Check with a test meter.)&lt;br /&gt;
&lt;br /&gt;
These instructions will show you how to make a cable with 3 ends:&lt;br /&gt;
&lt;br /&gt;
* A mini-USB type B cable for the Neo itself&lt;br /&gt;
* A cable of whatever type to go to your USB device.&lt;br /&gt;
* A cable going to a +5V +/-10%(max!) power supply with enough power for your device and to charge the Neo. This could be a wall charger or even another USB plug.&lt;br /&gt;
&lt;br /&gt;
You connect the Data+ and Data- wires of the Neo and the device, and connect all of the ground wires together and all of the +5V wires together. This powers the Neo and the device, while letting the neo talk to the device.&lt;br /&gt;
You have to connect 2pcs  15kOhm resistors, one from D+ to ground, and one from D- to ground, to comply with USB-spec for hostmode, as Neo is switching off the internal resistors when you enable charging/powering over USB by asserting EN_USBHOST.&lt;br /&gt;
See schematics, LOCATION:49XX&lt;br /&gt;
&lt;br /&gt;
Just for reference, the USB wires from left to right are:&lt;br /&gt;
*Black: Power -&lt;br /&gt;
*Green: Data -&lt;br /&gt;
*White: Data +&lt;br /&gt;
*Red: Power +&lt;br /&gt;
&lt;br /&gt;
The Mini_USB-B connector has a fifth pin, the ID-pin.&lt;br /&gt;
This pin is supposed to be short to ground to signal FreeRunner to enter hostmode. For the Y-cable and enabling external power while in hostmode, you may connect a 47k ohm resistor from ID-pin to ground. This is the same trick the OM-wallcharger uses to signal to FreeRunner it can charge with 1A. Future kernels should switch to hostmode + external power when seeing this 47k resistor.&lt;br /&gt;
&lt;br /&gt;
===Parts===&lt;br /&gt;
5 pin USB 2.0 Plug type A to mini USB Plug type B that should include the ID signal, so that you can add the 47kOhm resistor to ID-pin to trigger fast charging&lt;br /&gt;
&lt;br /&gt;
# [http://www.firefold.com/Products/6-Foot-USB-20-Plug-type-A-to-mini-USB-Plug-type-B-5-pin-Cable---Black__USB-5PMINI-6.aspx firefold]&lt;br /&gt;
# Belkin 5 pin (find reference)&lt;br /&gt;
&lt;br /&gt;
[[Category:USB]]&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Wiki_Issues</id>
		<title>Wiki Issues</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Wiki_Issues"/>
				<updated>2008-11-22T01:04:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Change Sitename */ asking for trouble&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you think something is wrong with a Wiki page, please fix it. If the problem is larger with this Wiki in general, please add your thoughts on this page and mail the openmoko [http://lists.openmoko.org/mailman/listinfo/documentation documentation mailing list]. You may just want to read existing proposals and put your vote on them, [[Wiki Maintainers]] will appreciate. [[Wiki Maintenance Agenda]].&lt;br /&gt;
&lt;br /&gt;
When adding an issue please&lt;br /&gt;
&lt;br /&gt;
* Provide a reason&lt;br /&gt;
* Provide your name as vote for the action to be taken (you can automatically enter your username by typing &amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;~~~&amp;lt;/nowiki&amp;gt; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
{{Warning|Comments without name might be deleted without consideration. We may need to ask for more information before implementing a proposal. Thanks for understanding.}}&lt;br /&gt;
&lt;br /&gt;
Accepted and implemented requests should be deleted. Rejected requests should be moved to the bottom of the page to avoid requesting them again.&lt;br /&gt;
&lt;br /&gt;
==Wiki Pages==&lt;br /&gt;
&lt;br /&gt;
I think that we should use specific &amp;quot;editor's notes templates&amp;quot; rather that nominate individual pages here. We can make automatic list of pages using a given template by having a Category:X tag inside the template. See for example the [[:Category:ToDo]] . [[User:MinhHaDuong|MinhHaDuong]] 09:44, 7 October 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Pages capable of development===&lt;br /&gt;
* [[Openmoko:Community Portal]]&lt;br /&gt;
* [[AR6K]] (Needs more info)&lt;br /&gt;
* [[GTA02 partitions]]: seems to be about the GTA01; could someone with a GTA02 please correct the partition sizes and names?&lt;br /&gt;
* [[Advanced_End-user]], [[Basic_End-user]], [[System_Developer]]: These are not up to the standard we set for List Pages on [[Openmoko_Wiki_Editing_Guidelines#List_pages]] [[User:Kempelen|Kempelen]]&lt;br /&gt;
&lt;br /&gt;
===Redundant Pages===&lt;br /&gt;
* There are several pages concerning Openmoko compatible service providers:&lt;br /&gt;
** [[Carriers]], most up-to-date, confirmed service providers.&lt;br /&gt;
*** [[Carriers/ATT]]&lt;br /&gt;
*** [[Carriers/TMobile]]&lt;br /&gt;
*** [[Carriers/Fido]]&lt;br /&gt;
*** [[Carriers/Rogers]]&lt;br /&gt;
** [[Neo1973 compatible cellphone providers]]&lt;br /&gt;
&lt;br /&gt;
*I suggest merging the editing help pages:&lt;br /&gt;
**[[Help:Editing]]&lt;br /&gt;
**[[Edit Wiki]]&lt;br /&gt;
&lt;br /&gt;
*pages about GPS:&lt;br /&gt;
**[[Hardware:AGPS]]&lt;br /&gt;
**[[Gpsd]]&lt;br /&gt;
**[[Neo 1973 GPS]]&lt;br /&gt;
**[[Neo FreeRunner GPS]]&lt;br /&gt;
&lt;br /&gt;
*applications:&lt;br /&gt;
**[[Available Packages]]&lt;br /&gt;
**[[Applications]]&lt;br /&gt;
**[[Applications directory]]&lt;br /&gt;
**[[Om 2007.2 Applications]]&lt;br /&gt;
&lt;br /&gt;
===Tidy up===&lt;br /&gt;
* [[Wishlist:Text Input]] - tidy up/sort, give short feedback to each method&lt;br /&gt;
* [[Booting_from_SD]] - tidy up and a rewrite&lt;br /&gt;
&lt;br /&gt;
=== Pages proposed for deletion ===&lt;br /&gt;
&lt;br /&gt;
'''Please help cleaning these''': Check if there is a red (nonexisting) link in this table, click it, click &amp;quot;What links here&amp;quot; in the toolbox and '''update the broken links'''. When done, remove the deleted entry from this table.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0&lt;br /&gt;
!Page&lt;br /&gt;
!Reason&lt;br /&gt;
!Yes kill it votes&lt;br /&gt;
!No keep it votes&lt;br /&gt;
|-&lt;br /&gt;
| Nothing is propsed for deletion at the moment || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also: [[:Category:Candidates for speedy deletion]]&lt;br /&gt;
&lt;br /&gt;
=== Pages that especially need work ===&lt;br /&gt;
&lt;br /&gt;
* [[Special:Lonelypages]] - Orphaned pages&lt;br /&gt;
* [[Special:DoubleRedirects]] - Pages that redirect to a redirected page&lt;br /&gt;
* [[Special:Popularpages]] - Pages that get viewed a lot&lt;br /&gt;
* [[Special:Ancientpages]] - Old pages&lt;br /&gt;
* [[Special:Newpages]] - New pages&lt;br /&gt;
* [[Special:Wantedpages]] - Wanted pages&lt;br /&gt;
* [[Special:Uncategorizedpages]]&lt;br /&gt;
* [[Special:Shortpages]] - Informationally light pages&lt;br /&gt;
* [[Special:BrokenRedirects]] - Broken redirects&lt;br /&gt;
&lt;br /&gt;
=== Application pages ===&lt;br /&gt;
&lt;br /&gt;
Maturity level ideas from the documentation list copied by [[User:Kempelen|Kempelen]] 19:05, 1 October 2008 (UTC):&lt;br /&gt;
&lt;br /&gt;
* It might be nice to have a single word stating the code maturity, perhaps only 3 simple options like prototype, functional, mature&lt;br /&gt;
* Why not stick with pre-alpha, alpha, beta, stable, mature&lt;br /&gt;
&lt;br /&gt;
Decision postponed. :-) (Feel free to vote here anyway.)&lt;br /&gt;
&lt;br /&gt;
== Categories ==&lt;br /&gt;
&lt;br /&gt;
{{Main|:Category talk:Categories}}&lt;br /&gt;
&lt;br /&gt;
== CSS ==&lt;br /&gt;
&lt;br /&gt;
We have discussed design on the mailing list, with the conclusion that revising was not a big priority. However, the wiki should be skinnable from user-space by editing : http://wiki.openmoko.org/wiki/MediaWiki:Common.css . And for development, each user can have his/her own CSS to eat his own dogfood. But I can't seem to make this feature work here.&lt;br /&gt;
Reference: http://en.wikipedia.org/wiki/Help:Monobook&lt;br /&gt;
[[User:MinhHaDuong|MinhHaDuong]] 12:26, 12 September 2008 (UTC).&lt;br /&gt;
&lt;br /&gt;
* The gutter is too wide&lt;br /&gt;
* Too much footer's padding&lt;br /&gt;
* Could shave 1 or 2 em of vertical space in the header&lt;br /&gt;
* The tabbed navigation layout is non-standard (no framing effect)&lt;br /&gt;
* The search box is below the fold (depends on window height of course)&lt;br /&gt;
* The toolbox (bottom left) has no border&lt;br /&gt;
* Mediawiki's user personal toolbox is prohibited&lt;br /&gt;
* Too many links in the navbar that belongs to the home page but not to every page&lt;br /&gt;
&lt;br /&gt;
== Portals ==&lt;br /&gt;
&lt;br /&gt;
We should explore another wiki organization tool: [http://en.wikipedia.org/wiki/Portal:Contents/Portals portals]. A portal is an introductory page for a given topic. It complements the main article of the subject by introducing the reader to key articles, images, and categories that further describe the subject. Portals also help editors find related projects and things they can do to help. [[User:MinhHaDuong|MinhHaDuong]] 13:53, 20 September 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Navigation templates ==&lt;br /&gt;
&lt;br /&gt;
(FYI Description moved to [[Openmoko_Wiki_Editing_Guidelines#Navigation_templates]], [[User:Kempelen|Kempelen]])&lt;br /&gt;
&lt;br /&gt;
* The [[Distributions]] page feature a non-templated navigation box&lt;br /&gt;
* We should name these templates distinctly. I suggest using a prefix like &amp;quot;NavBox:&amp;quot;.&lt;br /&gt;
* Visual design is by hand (not CSS), and not beautiful&lt;br /&gt;
* Need to test positioning at bottom of article.&lt;br /&gt;
&lt;br /&gt;
'''References'''&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wikipedia:Navigation_templates&lt;br /&gt;
http://en.wikipedia.org/wiki/Wikipedia:Categories,_lists,_and_series_boxes&lt;br /&gt;
&lt;br /&gt;
[http://lists.openmoko.org/pipermail/documentation/2008-August/000405.html First discussion in the mailing list] (Note: in the middle of a thread about left navboxes)&lt;br /&gt;
&lt;br /&gt;
* '''Yes votes''': [[User:Kempelen|Kempelen]] (For real wikipedia like navigation templates at the bottom, not at TOC position, we should move this section to editing guidelines as soon as template implementation improves a bit. Do not delete this please!)&lt;br /&gt;
&lt;br /&gt;
== DolfjeBot1 proposals ==&lt;br /&gt;
Their is a bot on the openmoko wiki that's controlled by [[User:Dolfje]]. If you have tasks for the bot, please put them [[User:DolfjeBot1|here]].&lt;br /&gt;
A request has been made to tag DolfjeBot1 user account with the 'bot' flag. [[Special:Listusers/bureaucrat| Here is the lists of users]] with permissions at the necessary `bureaucrat' level.&lt;br /&gt;
&lt;br /&gt;
==Wiki engine issues==&lt;br /&gt;
&lt;br /&gt;
=== Disappearing Pre-formatting ===&lt;br /&gt;
There is an issue with pre-formatting disappearing when people edit. See for instance recent edits here:&lt;br /&gt;
&lt;br /&gt;
http://wiki.openmoko.org/index.php?title=Accelerometer_data_retrieval&amp;amp;diff=59334&amp;amp;oldid=55556&lt;br /&gt;
&lt;br /&gt;
Actually I thing it's whitespace in general that is lost since python/ruby code is also messed up.&lt;br /&gt;
I have confirmed that this happens cross browser (both firefox3 and opera), but not on all pages, and not for all people.&lt;br /&gt;
&lt;br /&gt;
[[User:Gromgull|Gromgull]] 10:47, 9 November 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes, it is driving me bananas and must me due to some&lt;br /&gt;
[[Special:Version#Hooks|hook]] the maintainers have added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
In standard MediaWiki, a mere space at the beginning of these lines&lt;br /&gt;
will produce this box. But no, here on this wiki, one needs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt; , and your spaces get eaten.&lt;br /&gt;
The problem can be isolated as even returning mangled code in the edit box when you hit&lt;br /&gt;
the preview button. Never on real MediaWiki has anything dared to return a mangled edit box before.&lt;br /&gt;
Indeed the contents of this very paragraph have been jumbled by it. I have no control. Indeed, do&lt;br /&gt;
you see that gap above? It grows with each edit.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
On the [http://jidanni.org/comp/index.html wikis I maintain], I never go hog-wild adding too many hooks.&lt;br /&gt;
&lt;br /&gt;
This bug got me. I managed to fix the page I accidentally broke, but apparently it causes the preformatted text to slowly sink into ordinary text with each edit, making the&lt;br /&gt;
wiki less readable, for example see: http://wiki.openmoko.org/index.php?title=GPRS_FSO&amp;amp;oldid=55571 and http://wiki.openmoko.org/index.php?title=GPRS_FSO .&lt;br /&gt;
This should be fixed ASAP, as it makes the quality of the wiki do down. :-( [[User:Zub|zub]] 00:47, 18 November 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
====Emergency: eating categories off the bottom of pages====&lt;br /&gt;
=====Proof of Category eating=====&lt;br /&gt;
...Oh, the categories only disappear temporarily, due to http://www.mediawiki.org/wiki/Extension:SelectCategoryTagCloud .&lt;br /&gt;
OK, sorry for the alarm. [[User:Jidanni|Jidanni]] 04:08, 16 November 2008 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Can we please install/fix the following features for this wiki:&lt;br /&gt;
* '''Math''' - the Tex math markup does not work currently. Test:&lt;br /&gt;
** &amp;lt;math&amp;gt; z =\left (1-\left(\frac{P_{ind}}{101.325}\right)^{0.190263} \right ) \times \frac{87.828}{0.00198122} &amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt; P_{ind} &amp;lt;/math&amp;gt;&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi '''Syntax''' Highlighting - makes code much more readable]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:GraphViz GraphViz] works with the commonly known dot language - it allows us to draw '''graphs''' using easy markup.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:AnyWikiDraw AnyWikiDraw] allows us to draw svg '''diagrams''' directly on the wiki page.&lt;br /&gt;
* Make '''visited links''' a different color.&lt;br /&gt;
&lt;br /&gt;
== Change Sitename ==&lt;br /&gt;
&lt;br /&gt;
The name of this wiki is currently &amp;quot;Openmoko&amp;quot;. I think it should be &amp;quot;Openmoko Wiki&amp;quot; for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The other parts of this site (Planet, Projects, Docs) have similar names&lt;br /&gt;
* Media Wiki automatically creates a [http://www.mediawiki.org/wiki/Manual:Namespace namespace] for the Sitename (currently &amp;quot;Openmoko&amp;quot;). This means that content of pages beginning with &amp;quot;Openmoko:&amp;quot; cannot be found through the normal search function of this wiki. (At the moment there are five pages of this kind: [[Openmoko:About]], [[Openmoko:Community Portal]], [[Openmoko:Current events]], [[Openmoko:Searching]], [[Openmoko:Privacy policy]])--[[User:Marko Knöbl|Marko Knöbl]] 18:33, 8 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''Yes votes''': [[User:Marko Knöbl|Marko Knöbl]], [[User:MinhHaDuong|Minh]]&lt;br /&gt;
&lt;br /&gt;
'''No votes''':&lt;br /&gt;
&lt;br /&gt;
::OpenmokoIT still do some research now. [[User:Coolcat|coolcat]]&lt;br /&gt;
&lt;br /&gt;
::Then fix the search function (by restoring the standard MediaWiki search function). Anyway they are [[Special:Allpages/Openmoko:]]. Anyway, any links like [[Special:Allpages/Openmoko:]] will break, unless you use [[Special:Allpages/Project:]]. Furthermore, the longer the name of the Project ($wgSitename) becomes, the longer the UTF-8 translations of it will become, and as e.g., for Chinese UTF-8 at 3*3=9 ASCII %XX%XX%XX per character, you'll end up with mile long URLs before long, that is if one day the site becomes fully translated. [[User:Jidanni|Jidanni]] 01:04, 22 November 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Organize translations ==&lt;br /&gt;
&lt;br /&gt;
I suggest moving the translations to sub-wikis, like the way wikipedia does it. Currently all translations show up in searches and under category-lists. --[[User:Johndoesacc|Johndoesacc]] 12:03, 25 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
+1. See issues and solutions for a multilingual mediawiki at:&lt;br /&gt;
http://www.mediawiki.org/wiki/Multilingual_MediaWiki&lt;br /&gt;
Also, the correspondence between translation should be maintained with tags:&lt;br /&gt;
http://en.wikipedia.org/wiki/Help:Interlanguage_links&lt;br /&gt;
The request [http://lists.openmoko.org/pipermail/documentation/2008-September/000557.html has been heard] but maybe not in the right places. What is the best operational frequency to ping the hosting engineers for that ? [[User:MinhHaDuong|MinhHaDuong]] 13:02, 10 September 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
After discussion on the Documentation ML, sub-wikis are out. We want to try namespaces. [[User:MinhHaDuong|MinhHaDuong]] 09:31, 7 October 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Symlinks in download directories ===&lt;br /&gt;
&lt;br /&gt;
This is not strictly Wiki issue, but discussed on the documentation list as being a serious usability disadvantage. Symlinks and .tar.gz files should be removed from the release directories because they confuse users. Ref: [http://lists.openmoko.org/pipermail/documentation/2008-September/000808.html]&lt;br /&gt;
&lt;br /&gt;
=== Improve README.html ===&lt;br /&gt;
&lt;br /&gt;
Example: http://downloads.openmoko.org/releases/Om2008.9/README.html&lt;br /&gt;
&lt;br /&gt;
It should at least link to: [[Om_2008.9_Update#Download_and_Flashing]]&lt;br /&gt;
&lt;br /&gt;
== Rejected requests ==&lt;br /&gt;
&lt;br /&gt;
When a requested Wiki Issue is voted for not to be done, it must be moved here, to make sure it won't get continously requested again.&lt;br /&gt;
&lt;br /&gt;
* '''Don't translate the wiki - rejected''' proposed by [[User:Minime|Minime]] August 2007, moved to rejected by [[User:Kempelen|Kempelen]] August 2008: the Documentation Team looks to support the idea.&lt;br /&gt;
* '''Use namespaces to separate user-oriented and developper-oriented content'''. Assuming the default namespace is user-oriented that would exclude developper-oriented pages from searches (unless the user ticks the box, but who does ?). And it can't be done purely in the wiki, it needs admin time. Better to use categories and a prefix in the page name (like BlendeWiki). [[:User:MinhHaDuong|MinhHaDuong]]&lt;br /&gt;
* '''Use category pages instead List Pages''' Good list pages are allowed and encouraged, as the documentation team today agreed on the mailing list. [[User:Kempelen|Kempelen]] 21:27, 30 August 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Editing]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Specialized_USB_cables</id>
		<title>Specialized USB cables</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Specialized_USB_cables"/>
				<updated>2008-11-22T00:48:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Providing power to run and charge the Neo while in host mode */ power might already be available&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|work in progress}}&lt;br /&gt;
&lt;br /&gt;
== Attaching the Neo (acting as a USB host) to a USB device ==&lt;br /&gt;
&lt;br /&gt;
The USB port (5 position mini type B jack) on the Neo 1973 and Neo FreeRunner can be both a USB device or a USB host. The provided cable (5 position mini type B plug to type A plug) is used when attaching the Neo to a USB host.&lt;br /&gt;
&lt;br /&gt;
A specialized cable is required when attaching the Neo to a USB device. (The device has a USB type A jack).&lt;br /&gt;
&lt;br /&gt;
(picture)&lt;br /&gt;
&lt;br /&gt;
Alternately, an adapter capable of connecting two type A plugs will allow attaching the provided USB cable to the USB cable that came with the USB device. This adapter is also known as a gender changer.&lt;br /&gt;
&lt;br /&gt;
(picture)&lt;br /&gt;
&lt;br /&gt;
=== Ready-made mini type A plug to a type A jack adapter ===&lt;br /&gt;
&lt;br /&gt;
You can now purchase a proper [http://www.electronicproductonline.com/catalog/product_info.php?products_id=2043 custom-manufacturered mini-A to full-sized A USB adapter from here]. This adapter already has Pins 4 and 5 shorted together internally; the unique form factor also makes it very handy and eliminated the need for things like the double USB female adapter trick shown at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
[[Image:USBOTGSwivel.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Ready-made mini type B plug to a type A jack cable ===&lt;br /&gt;
&lt;br /&gt;
You can buy [[http://www.jaykang.com/usbafetousbm1.html this]] ready-made USB A-Type Female to USB Mini-B Type 5 Pin Male Adapter.&lt;br /&gt;
[[Image:jaykang_usbafetousbm1.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
A Mini-B to Female-A cable is also available from [http://www.usbfirewire.com/Parts/rr-2mb-020.html www.usbfirewire.com].&lt;br /&gt;
&lt;br /&gt;
=== How to make a mini type B plug to a type A jack cable ===&lt;br /&gt;
&lt;br /&gt;
(picture, as soon as I build it)&lt;br /&gt;
&lt;br /&gt;
Parts list:&lt;br /&gt;
&lt;br /&gt;
* Mini type B plug: Digi-Key [[http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=H2958-ND H2958-ND]]&lt;br /&gt;
* type A jack: I have not yet been able to find a source for these. Meanwhile, use the jack from a standard USB extension cord&lt;br /&gt;
* Cable: Ideally, the data lines should be twisted and 28 AWG, the power lines should be 20 or 28 AWG, e.g. Hitachi Cable [[http://www.hcm.hitachi.com/electronic_round_cable/bulk-usb-cable.shtml 49248 ]]&lt;br /&gt;
&lt;br /&gt;
Construction instructions:&lt;br /&gt;
&lt;br /&gt;
(TBA)&lt;br /&gt;
&lt;br /&gt;
=== Ready-made type A jack to a type A jack adapter (gender changer) ===&lt;br /&gt;
&lt;br /&gt;
You can buy [[http://www.jaykang.com/usbtyfetotyf.html this]] ready-made USB Type A Female to Female Gender Changer.&lt;br /&gt;
[[Image:jaykang_usbtyfetotyf.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
=== How to make a type A jack to a type A jack adapter (gender changer) ===&lt;br /&gt;
&lt;br /&gt;
This community provided instruction shows how to build an adapter from a USB socket salvaged from a computer motherboard.&lt;br /&gt;
&lt;br /&gt;
Note that these instructions are provided in the hope that they are useful but without any warranty!&lt;br /&gt;
&lt;br /&gt;
[[Image:2-usb-receptables.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
:#Find an old motherboard with a set of two USB receptacles as shown above.&lt;br /&gt;
:#Desolder this set of receptacles from the motherboard. This can be bit tricky but it is doable at least with a desoldering gun.&lt;br /&gt;
:#Each receptacle has four pins. Use a multimeter to verify that you have no short circuits between the pins or the shield.&lt;br /&gt;
:#Solder adjacent pins together (GND to GND, D- to D-, D+ to D+, VCC to VCC).&lt;br /&gt;
:#(Optional) Build a test cable. Cut an USB cable with A plug into half, connect it a receptacle and again measure that you have no short circuits. Then connect the test cable to PC and verify that you see&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red +5V&lt;br /&gt;
:#FreeRunner is shipped with a mini-B-to-A-plug cable. Connect this to a receptacle.&lt;br /&gt;
:#(Optional)Connect test cable to the other receptacle and verify that you see&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red 0V&lt;br /&gt;
when freerunner acts as a device and&lt;br /&gt;
*black GND&lt;br /&gt;
*green 0V&lt;br /&gt;
*white 0V&lt;br /&gt;
*red +5V&lt;br /&gt;
when it acts as a host.&lt;br /&gt;
:#At your own risk, switch freerunner to USB host mode and connect an USB device to the other receptacle of the adapter. Here's how the setup should look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Usb-gender-changer1.jpg&lt;br /&gt;
Image:Usb-gender-changer2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to make a type A jack to a type A jack adapter (gender changer) without soldering ===&lt;br /&gt;
&lt;br /&gt;
:#Find a 2-port USB front-panel with a 9-pin connector. Usually you can get one from a PC motherboard package box.&lt;br /&gt;
:#Align it in a way so you see the connector pins as a 2 row 5 column matrix with one pin missing.&lt;br /&gt;
:#Use 4 staples to short the pins residing in a same column.&lt;br /&gt;
:#FreeRunner is shipped with a mini-B-to-A-plug cable. Use it to connect the first port of your panel with your FreeRunner.&lt;br /&gt;
:#At your own risk, switch freerunner to USB host mode and connect an USB device to the other receptacle of the adapter.&lt;br /&gt;
&lt;br /&gt;
If you have a ASUS USB/MIR front panel, it is even easier - you can use jumpers to short the pins.&lt;br /&gt;
&lt;br /&gt;
[[Image:asususb.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
The adapter works with kingston data traveller 4G memory stick and aiptec pencam webcam. However, for some reason (probably the missing 15k resistors at D+ and D-) it did not work with any of the tested USB keyboards or mice:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 24&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 25&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: device descriptor read/64, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 26&lt;br /&gt;
usb 1-2: device not accepting address 26, error -62&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 27&lt;br /&gt;
usb 1-2: device not accepting address 27, error -62&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, if I connect neo to small (unpowered) USB hub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2: new full speed USB device using s3c2410-ohci and address 61&lt;br /&gt;
usb 1-2: configuration #1 chosen from 1 choice&lt;br /&gt;
hub 1-2:1.0: USB hub found&lt;br /&gt;
hub 1-2:1.0: 4 ports detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and connect the keyboard to the hub then it is correctly recognized:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usb 1-2.3: new low speed USB device using s3c2410-ohci and address 62&lt;br /&gt;
usb 1-2.3: configuration #1 chosen from 1 choice&lt;br /&gt;
input:   USB Keyboard as /devices/platform/s3c2410-ohci/usb1/1-2/1-2.3/1-2.3:1.0/input/input13&lt;br /&gt;
input: USB HID v1.10 Keyboard [  USB Keyboard] on usb-s3c24xx-2.3&lt;br /&gt;
input:   USB Keyboard as /devices/platform/s3c2410-ohci/usb1/1-2/1-2.3/1-2.3:1.1/input/input14&lt;br /&gt;
input: USB HID v1.10 Device [  USB Keyboard] on usb-s3c24xx-2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
With the hub I can also use both keyboard and usb memory stick at the same time.&lt;br /&gt;
&lt;br /&gt;
==== Power consumption ====&lt;br /&gt;
&lt;br /&gt;
When I unplug the USB hub (with only keyboard connected to it) the power consumption estimate at /sys/devices/platform/bq2700-battery.0/power_supply/bat/current_now decreases from 175000 to 145000 (are these microamperes?).&lt;br /&gt;
&lt;br /&gt;
== How to make a USB cable for powering attached USB devices and charging the Neo while in host mode ==&lt;br /&gt;
&lt;br /&gt;
{{note|work in progress}}&lt;br /&gt;
&lt;br /&gt;
This cable might be necessary for a number of reasons, e.g.&lt;br /&gt;
&lt;br /&gt;
* The application requires that the Neo not become suspended&lt;br /&gt;
* The application requires long run time&lt;br /&gt;
* The attached USB device consumes a lot of power&lt;br /&gt;
&lt;br /&gt;
(However, as there is a wide range[http://permalink.gmane.org/gmane.comp.handhelds.openmoko.hardware/415]&lt;br /&gt;
of USB hubs out there, one might find power (on a powered USB hub)&lt;br /&gt;
is available already on the hub's mini USB 5 pin socket already, so not need a specialized cable after all!&lt;br /&gt;
Check with a test meter.)&lt;br /&gt;
&lt;br /&gt;
These instructions will show you how to make a cable with 3 ends:&lt;br /&gt;
&lt;br /&gt;
* A mini-USB type B cable for the Neo itself&lt;br /&gt;
* A cable of whatever type to go to your USB device.&lt;br /&gt;
* A cable going to a +5V +/-10%(max!) power supply with enough power for your device and to charge the Neo. This could be a wall charger or even another USB plug.&lt;br /&gt;
&lt;br /&gt;
You connect the Data+ and Data- wires of the Neo and the device, and connect all of the ground wires together and all of the +5V wires together. This powers the Neo and the device, while letting the neo talk to the device.&lt;br /&gt;
You have to connect 2pcs  15kOhm resistors, one from D+ to ground, and one from D- to ground, to comply with USB-spec for hostmode, as Neo is switching off the internal resistors when you enable charging/powering over USB by asserting EN_USBHOST.&lt;br /&gt;
See schematics, LOCATION:49XX&lt;br /&gt;
&lt;br /&gt;
Just for reference, the USB wires from left to right are:&lt;br /&gt;
*Black: Power -&lt;br /&gt;
*Green: Data -&lt;br /&gt;
*White: Data +&lt;br /&gt;
*Red: Power +&lt;br /&gt;
&lt;br /&gt;
The Mini_USB-B connector has a fifth pin, the ID-pin.&lt;br /&gt;
This pin is supposed to be short to ground to signal FreeRunner to enter hostmode. For the Y-cable and enabling external power while in hostmode, you may connect a 47kOhm resistor from ID-pin to ground. This is the same trick the OM-wallcharger uses to signal to FreeRunner it can charge with 1A. Future kernels should switch to hostmode + external power when seeing this 47k resistor.&lt;br /&gt;
&lt;br /&gt;
===Parts===&lt;br /&gt;
5 pin USB 2.0 Plug type A to mini USB Plug type B that should include the ID signal, so that you can add the 47kOhm resistor to ID-pin to trigger fast charging&lt;br /&gt;
&lt;br /&gt;
# [http://www.firefold.com/Products/6-Foot-USB-20-Plug-type-A-to-mini-USB-Plug-type-B-5-pin-Cable---Black__USB-5PMINI-6.aspx firefold]&lt;br /&gt;
# Belkin 5 pin (find reference)&lt;br /&gt;
&lt;br /&gt;
[[Category:USB]]&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/USB_host</id>
		<title>USB host</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/USB_host"/>
				<updated>2008-11-22T00:45:54Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Providing power to run and charge the Neo while in host mode */ power might already be available&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|USB host}}&lt;br /&gt;
The mini-USB port on both the Neo 1973 and the Neo FreeRunner supports both USB host and USB device. This opens up a range of possibilities, such as adding USB cameras and USB input devices.&lt;br /&gt;
&lt;br /&gt;
=== Using USB host mode ===&lt;br /&gt;
==== Selecting USB host modes ====&lt;br /&gt;
&lt;br /&gt;
By default, the mini-USB port is in device mode. To tell the Neo that it is logically a host¹):&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;host&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&lt;br /&gt;
Independent of the logical mode of the USB port, the Neo FreeRunner can provide 5 volt USB power to an attached USB device. To enable this (not available on Neo 1973):&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Note: You may want to run &amp;lt;code&amp;gt;ifconfig usb0 down&amp;lt;/code&amp;gt; prior to switching to USB host mode, as the Neo's USB networking may not like having its USB port disappear. You'll probably want to ssh into your Neo over WiFi or Bluetooth before starting all of this, alternatively use an on screen keyboard.&lt;br /&gt;
&lt;br /&gt;
Note that in full USB host mode the FreeRunner will power the external device. To avoid draining the battery use a powered USB hub, then on the FreeRunner enable logical host mode:&lt;br /&gt;
&lt;br /&gt;
~ - echo host &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&lt;br /&gt;
but NOT electrical host mode&lt;br /&gt;
&lt;br /&gt;
~ - echo 0 &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Note that powered USB hubs do not send power upstream, that is, into the host. If you wish to power or charge the FreeRunner, you will need a [[Specialized USB cables|special USB cable]].&lt;br /&gt;
&lt;br /&gt;
¹)Debian note: You'll need the ohci-hcd module:&lt;br /&gt;
modprobe ohci-hcd&lt;br /&gt;
&lt;br /&gt;
* NOTE: with [FSO] based distributions one should use the dbus APIs and not the method stated above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Returning to USB device mode ====&lt;br /&gt;
After doing whatever is needed to safely remove your device and unplugging it you can remove the provision of 5 volt power and return to device mode.&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;device&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
You can now safely restart USB networking.&lt;br /&gt;
&lt;br /&gt;
==== USB-Mode-Script====&lt;br /&gt;
These simple script is useful to switch the USB-Modes:&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#!/bin/sh&amp;lt;/nowiki&amp;gt; &amp;lt;BR&amp;gt;&lt;br /&gt;
grep -q 'host' /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
if [ $? -eq 0 ]&amp;lt;BR&amp;gt;&lt;br /&gt;
then&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;device&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo USB-Port is in device-mode now.&amp;lt;BR&amp;gt;&lt;br /&gt;
else&amp;lt;BR&amp;gt;&lt;br /&gt;
ifconfig usb0 down&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;host&amp;quot; &amp;gt; /sys/devices/platform/s3c2410-ohci/usb_mode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&amp;lt;BR&amp;gt;&lt;br /&gt;
echo USB-Port is in host-mode now.&amp;lt;BR&amp;gt;&lt;br /&gt;
fi&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
You can easily create a push button menu item for this: [http://blogs.thehumanjourney.net/finds/entry/usb_host_mode_the_button Instructions]&lt;br /&gt;
&lt;br /&gt;
==== Using a GUI ====&lt;br /&gt;
* Using the packaged push button derived from the script above: [http://blogs.thehumanjourney.net/finds/resource/usbmode-button_0.1_armv4t.ipk Download]&lt;br /&gt;
* [[User:Techiem2|Mark D. Montgomery II]]'s [http://techiem2.net/index.php?/archives/10-Freerunner-USB-Mode-Control-Program.html application] controls all the various modes through a GUI&lt;br /&gt;
* Thomas Vesely's [http://projects.openmoko.org/projects/usbchmod/ project]&lt;br /&gt;
* Using the gtk+ gui [[Framework-settings]]&lt;br /&gt;
* Using openmoko-panel-plugin (confirmation and link needed)&lt;br /&gt;
&lt;br /&gt;
=== Providing power to connected USB devices while in host mode ===&lt;br /&gt;
&lt;br /&gt;
Normally, USB host ports provide power to any connected USB device.&lt;br /&gt;
&lt;br /&gt;
Available power in host mode is the full maximum of 500mA according to USB-specifications on the Neo FreeRunner, and no power is available in host mode on the Neo 1973. If your USB device respects USB-standards and consumes not more than 500mA, you may connect it directly to your Neo FreeRunner.&lt;br /&gt;
&lt;br /&gt;
To provide power to USB devices attached to your Neo 1973, or to provide power to your Neo FreeRunner while USB-device connected, you can provide power by using a (modified [for powering FreeRunner]) powered USB hub (see below), or by manually injecting power into the attached USB device (and Neo FreeRunner) via one of the [[specialized_USB_cables]].&lt;br /&gt;
&lt;br /&gt;
=== Powered USB hubs known to work with the Neo ===&lt;br /&gt;
&lt;br /&gt;
(please add any known to work)&lt;br /&gt;
&lt;br /&gt;
=== Providing power to run and charge the Neo while in host mode ===&lt;br /&gt;
&lt;br /&gt;
A slightly separate issue is power to run and charge the Neo (both types) itself. When the USB port is in device mode, the Neo FreeRunner/1973 can be powered and recharged via the USB port, but when in standard host mode, the Neo FreeRunner is set to provide power and does not charge. Fortunately, control of the direction of power (in or out) is independent of the personality of the USB port (host or device):&lt;br /&gt;
&lt;br /&gt;
To recap, the direction of power can be controlled:&lt;br /&gt;
&lt;br /&gt;
Set to 0 (default), no power is provided at the USB port, charging is enabled, and host 15K pulldowns are removed from D+ and D-:&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;0&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Set to 1, provides up to 500mA USB power at the USB port (FreeRunner only), disables charging from USB, and applies 15K pulldowns to USB D+ and D-:&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;1&amp;quot; &amp;gt; /sys/devices/platform/neo1973-pm-host.0/hostmode&lt;br /&gt;
&lt;br /&gt;
Next, power must somehow be injected. An unmodified powered USB hub only provides power to the connected devices, but not to the connected host, so the only solution here is to modify a USB-hub¹) or to create a custom cable which will inject power into the host. See [[specialized_USB_cables]] for some examples.&lt;br /&gt;
&lt;br /&gt;
(However, as there is a wide range[http://permalink.gmane.org/gmane.comp.handhelds.openmoko.hardware/415]&lt;br /&gt;
of USB hubs out there, one might find power (on a powered USB hub)&lt;br /&gt;
is available already on the hub's mini USB 5 pin socket already, so not need a specialized cable after all!&lt;br /&gt;
Check with a test meter.)&lt;br /&gt;
&lt;br /&gt;
Finally, there is the question of charge rate. The charging logic in the Neo will only charge at 100mA by default. Charging at 500mA will take place only if the charging device responds appropriatly to USB negotiation to increase power consumption. Charging at 1000mA will only take place if the Neo detects the appropriate resistor on the ID pins.&lt;br /&gt;
&lt;br /&gt;
You can manually set the charge rate. See [[Forcing_fast_charge_mode]]&lt;br /&gt;
&lt;br /&gt;
¹) often it's sufficient to short a diode in USB-hub to feed power to the host-connector too.&lt;br /&gt;
# Edit 05 Oct. 2008 : Not being able to find any diode on my ([[User:Henrikz|Henrikz]]) USB Hub (Brand: Equip, Type: 4 port, aluminum) I simply connected +5V (pin 1) from one of the downstream ports to pin 1 of the upstream port.&lt;br /&gt;
&lt;br /&gt;
=== Power Concerns ===&lt;br /&gt;
You'll need to force the Neo to go into fast charge mode, since it can't do its usual power negotiation over USB.&lt;br /&gt;
&lt;br /&gt;
echo -n &amp;quot;fast_cccv&amp;quot; &amp;gt;  /sys/devices/platform/s3c2410-i2c/i2c-adapter/i2c-0/0-0008/chgmode&lt;br /&gt;
&lt;br /&gt;
(Also this should be done by kernel when seeing 47K at ID-pin)&lt;br /&gt;
&lt;br /&gt;
=== Working Examples ===&lt;br /&gt;
&lt;br /&gt;
==== USB Keyboard ====&lt;br /&gt;
&lt;br /&gt;
Pictures [http://blogs.thehumanjourney.net/finds/entry/20080716 here]&lt;br /&gt;
&lt;br /&gt;
==== Connecting a USB-Stick ====&lt;br /&gt;
[[Image:connecting-usb-stick-1.jpg|thumb|left]]&lt;br /&gt;
I found this adapter, it has 2 Type A jacks, rather cheap (about 5 &amp;amp;euro;).&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-2.jpg|thumb|left]]&lt;br /&gt;
I borrowed the cable from a card reader, it has the same pinout like the cable that comes with the Neo.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-3.jpg|thumb|left]]&lt;br /&gt;
With the above commands I could mount the memory stick.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:connecting-usb-stick-4.jpg|thumb|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Neo1973 Hardware]]&lt;br /&gt;
[[Category:Neo FreeRunner Hardware]]&lt;br /&gt;
[[Category:USB]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Manually_using_scap</id>
		<title>Manually using scap</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Manually_using_scap"/>
				<updated>2008-11-21T19:03:19Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: link to find out what scap means&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Screen shot upload service scap ==&lt;br /&gt;
&lt;br /&gt;
If you don't use the standard gui and your neo lacks the menu entry for scap you can do the same with a simple shell script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
 n=/tmp/scap$$.png&lt;br /&gt;
 fbgrab $n&lt;br /&gt;
 curl \&lt;br /&gt;
  -F file=@$n \&lt;br /&gt;
  -F key=secret \&lt;br /&gt;
  -F model=`uname -n` \&lt;br /&gt;
  -F submit=Upload \&lt;br /&gt;
  -F text=no\ comment \&lt;br /&gt;
  http://scap.linuxtogo.org/tickle.php&lt;br /&gt;
 rm $n&lt;br /&gt;
&lt;br /&gt;
you need the packages for curl and fbgrab:&lt;br /&gt;
&lt;br /&gt;
 ipkg install fbgrab curl&lt;br /&gt;
&lt;br /&gt;
that's all.&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Gpe-scap]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/NeoCon</id>
		<title>NeoCon</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/NeoCon"/>
				<updated>2008-11-21T04:21:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: note main feature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''neocon''' is a handy serial console utility (not only) for [[Bootloader|u-boot]].&lt;br /&gt;
&lt;br /&gt;
'''neocon''' has a few graving advantages over some other terminal apps:&lt;br /&gt;
&lt;br /&gt;
* You don't have to be &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; to access &amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; with '''neocon'''. Beeing member of &amp;lt;code&amp;gt;dialout&amp;lt;/code&amp;gt; should give you sufficient privileges. &lt;br /&gt;
* by specifying a delay  on keyboard input(as shown below), '''neocon''' will allow you to paste commands directly from clipboard without making [[Bootloader|u-boot]] choke on it. &lt;br /&gt;
* '''neocon''' can be started without &amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; being available. It will automatically connect as soon as you start [[Bootloader|u-boot]] on the Neo:&lt;br /&gt;
&lt;br /&gt;
The main feature of neocon is actually that you can give it a list&lt;br /&gt;
of devices and it will pick one that works, e.g.,&lt;br /&gt;
&lt;br /&gt;
 # neocon /dev/ttyUSB{0,1,2}&lt;br /&gt;
&lt;br /&gt;
If you don't like the one it picked, you can switch to the next with&lt;br /&gt;
 ~n&lt;br /&gt;
&lt;br /&gt;
This is useful for dynamically allocated devices, such as ttyUSBn&lt;br /&gt;
or ttyACMn. You can of course also use them with other communication&lt;br /&gt;
programs - there's certainly no shortage of them - but then you have&lt;br /&gt;
to handle reconnects manually.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Download the source from http://svn.openmoko.org/developers/werner/neocon/ to a directory of your choice and build '''neocon''' by issuing &lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
To connect to the [[bootloader]] use&lt;br /&gt;
&lt;br /&gt;
 ./neocon -t 30 /dev/ttyACM0&lt;br /&gt;
&lt;br /&gt;
To quit neocon type:&lt;br /&gt;
&lt;br /&gt;
 ~.&lt;br /&gt;
&lt;br /&gt;
An alternative to {{PAGENAME}} is [[picocom]].&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;br /&gt;
[[Category:USB]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/NeoCon</id>
		<title>NeoCon</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/NeoCon"/>
				<updated>2008-11-21T00:09:21Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: Category:USB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''neocon''' is a handy serial console utility (not only) for [[Bootloader|u-boot]].&lt;br /&gt;
&lt;br /&gt;
'''neocon''' has a few graving advantages over some other terminal apps:&lt;br /&gt;
&lt;br /&gt;
* You don't have to be &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; to access &amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; with '''neocon'''. Beeing member of &amp;lt;code&amp;gt;dialout&amp;lt;/code&amp;gt; should give you sufficient privileges. &lt;br /&gt;
* '''neocon''' can be started without &amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; being available. It will automatically connect as soon as you start [[Bootloader|u-boot]] on the Neo. &lt;br /&gt;
* by specifying a delay  on keyboard input(as shown below), '''neocon''' will allow you to paste commands directly from clipboard without making [[Bootloader|u-boot]] choke on it. &lt;br /&gt;
&lt;br /&gt;
Download the source from http://svn.openmoko.org/developers/werner/neocon/ to a directory of your choice and build '''neocon''' by issuing &lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To connect to the [[bootloader]] use&lt;br /&gt;
&lt;br /&gt;
 ./neocon -t 30 /dev/ttyACM0&lt;br /&gt;
&lt;br /&gt;
To quit neocon type:&lt;br /&gt;
&lt;br /&gt;
 ~.&lt;br /&gt;
&lt;br /&gt;
An alternative to {{PAGENAME}} is [[picocom]].&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;br /&gt;
[[Category:USB]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Picocom</id>
		<title>Picocom</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Picocom"/>
				<updated>2008-11-21T00:08:06Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: broach picocom&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An alternative to [[NeoCon]] for connection to one's phone is {{PAGENAME}}.&lt;br /&gt;
&lt;br /&gt;
 root@desktop# apt-get install picocom&lt;br /&gt;
 holmes@desktop$ picocom /dev/ttyACM0&lt;br /&gt;
 picocom v1.4&lt;br /&gt;
&lt;br /&gt;
 port is        : /dev/ttyACM0&lt;br /&gt;
 flowcontrol    : none&lt;br /&gt;
 baudrate is    : 9600&lt;br /&gt;
 parity is      : none&lt;br /&gt;
 databits are   : 8&lt;br /&gt;
 escape is      : C-a&lt;br /&gt;
 noinit is      : no&lt;br /&gt;
 noreset is     : no&lt;br /&gt;
 nolock is      : no&lt;br /&gt;
 send_cmd is    : ascii_xfr -s -v -l10&lt;br /&gt;
 receive_cmd is : rz -vv&lt;br /&gt;
&lt;br /&gt;
 Terminal ready&lt;br /&gt;
 In:    usbtty&lt;br /&gt;
 Out:   usbtty&lt;br /&gt;
 Err:   usbtty&lt;br /&gt;
 PCB rev: 0x001&lt;br /&gt;
 Power: 1000mA&lt;br /&gt;
 switching led 2 0&lt;br /&gt;
 switching led 2 1&lt;br /&gt;
 switching led 2 0&lt;br /&gt;
 DEVICE_CONFIGURED: 1&lt;br /&gt;
 ## Executing script at 18050100&lt;br /&gt;
 mtdparts mtdparts=physmap-flash:-(nor);neo1973-nand:0x00040000(u-boot),0x00040000(u-boot_env),0x00800000(kernel),0x000a0000(splash),0x00040000(factory),0x0f6a0000(rootfs)&lt;br /&gt;
 READY.&lt;br /&gt;
 GTA02v6 # help&lt;br /&gt;
 help&lt;br /&gt;
 ?       - alias for 'help'&lt;br /&gt;
 askenv  - get environment variables from stdin&lt;br /&gt;
 autoscr - run script from memory&lt;br /&gt;
 ...&lt;br /&gt;
[[Category: System Developers]]&lt;br /&gt;
[[Category: USB]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/NeoCon</id>
		<title>NeoCon</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/NeoCon"/>
				<updated>2008-11-21T00:02:10Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: broach picocom&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''neocon''' is a handy serial console utility (not only) for [[Bootloader|u-boot]].&lt;br /&gt;
&lt;br /&gt;
'''neocon''' has a few graving advantages over some other terminal apps:&lt;br /&gt;
&lt;br /&gt;
* You don't have to be &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; to access &amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; with '''neocon'''. Beeing member of &amp;lt;code&amp;gt;dialout&amp;lt;/code&amp;gt; should give you sufficient privileges. &lt;br /&gt;
* '''neocon''' can be started without &amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; being available. It will automatically connect as soon as you start [[Bootloader|u-boot]] on the Neo. &lt;br /&gt;
* by specifying a delay  on keyboard input(as shown below), '''neocon''' will allow you to paste commands directly from clipboard without making [[Bootloader|u-boot]] choke on it. &lt;br /&gt;
&lt;br /&gt;
Download the source from http://svn.openmoko.org/developers/werner/neocon/ to a directory of your choice and build '''neocon''' by issuing &lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To connect to the [[bootloader]] use&lt;br /&gt;
&lt;br /&gt;
 ./neocon -t 30 /dev/ttyACM0&lt;br /&gt;
&lt;br /&gt;
To quit neocon type:&lt;br /&gt;
&lt;br /&gt;
 ~.&lt;br /&gt;
&lt;br /&gt;
An alternative to {{PAGENAME}} is [[picocom]].&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/U-Boot_environment</id>
		<title>U-Boot environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/U-Boot_environment"/>
				<updated>2008-11-21T00:00:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Console */mention NeoCon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Bootloader environment}}&lt;br /&gt;
&lt;br /&gt;
{{Bootloader}}&lt;br /&gt;
&lt;br /&gt;
The bootloader environment configures the [[bootloader]]. Between reboots, the environment is stored with a checksum in the internal flash [[Partitions|partition]] called &amp;quot;u-boot_env&amp;quot;. On the bootloader console, there are [[bootloader commands#Environment|bootloader commands for environment manipulation]].&lt;br /&gt;
&lt;br /&gt;
== Typical environment ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
baudrate=115200&lt;br /&gt;
bootargs=rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8 dyntick=enable lpj=252416&lt;br /&gt;
usbtty=cdc_acm&lt;br /&gt;
bootdelay=10&lt;br /&gt;
stdout=serial&lt;br /&gt;
stderr=serial&lt;br /&gt;
stdin=serial&lt;br /&gt;
mtdparts=mtdparts=neo1973-nand:0x00030000(u-boot),0x0000c000(u-boot_env),0x00200000(kernel),0x00130000(splash),0x03c94000(rootfs)&lt;br /&gt;
mtdids=nand0=neo1973-nand&lt;br /&gt;
bootargs_base=rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8 dyntick=enable lpj=252416&lt;br /&gt;
bootcmd=setenv bootargs ${bootargs_base} ${mtdparts}; nand read.e 0x32000000 kernel; bootm 0x32000000&lt;br /&gt;
pcf50606_int1=0x40&lt;br /&gt;
filesize=160C000&lt;br /&gt;
partition=nand0,0&lt;br /&gt;
mtddevnum=0&lt;br /&gt;
mtddevname=u-boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timeouts ==&lt;br /&gt;
&lt;br /&gt;
If the boot loader menu is on the screen, the phone will power off when there hasn't been activity for a while. This is not nice if you are working on the boot loader console, but you can make the time longer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv boot_menu_timeout [seconds]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the phone is powered on, there is a short period of time when you can connect to the console and cancel the automatic boot without going to the menu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv bootdelay [seconds]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Menu ==&lt;br /&gt;
&lt;br /&gt;
You can add items to the boot menu by setting environment variables of the form ''menu_&amp;lt;number&amp;gt;'' to values of the form ''&amp;lt;Title&amp;gt;: U-Boot-Commands''.&lt;br /&gt;
&lt;br /&gt;
For example the following command will add a boot menu entry that switches to autofast charging and turns off the backlight:&lt;br /&gt;
setenv menu_6 Autofast-Charge and Backlight Off: neo1973 charger autofast\; neo1973 backlight off&lt;br /&gt;
&lt;br /&gt;
While in this state, your Neo1973 can be charged with a generic USB charger. You also need to set boot_menu_timeout to 65000 to keep it from powering down, though.&lt;br /&gt;
&lt;br /&gt;
=== Booting to the menu ===&lt;br /&gt;
To stop in the NAND menu, press and hold the AUX key after pressing the power button at startup. In recent versions of u-boot (builds from august 5 200?), you can also permanently enter the menu by setting the &amp;lt;tt&amp;gt;stop_in_menu&amp;lt;/tt&amp;gt; environment variable to &amp;lt;tt&amp;gt;yes&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
setenv stop_in_menu yes&lt;br /&gt;
saveenv&lt;br /&gt;
&lt;br /&gt;
to restore normal startup, unset this variable or set it to &amp;lt;tt&amp;gt;no&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
To get access to the bootloader console over USB with e.g., [[NeoCon]], the following settings need to be made:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GTA01Bv2 # setenv stderr usbtty&lt;br /&gt;
GTA01Bv2 # setenv stdout usbtty&lt;br /&gt;
GTA01Bv2 # setenv stdin usbtty&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* http://lists.openmoko.org/pipermail/community/2008-September/029845.html&lt;br /&gt;
* http://markmail.org/message/d2abi2nm5vms3unh&lt;br /&gt;
&lt;br /&gt;
{{Languages|Bootloader}}&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/U-Boot_environment</id>
		<title>U-Boot environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/U-Boot_environment"/>
				<updated>2008-11-20T23:57:57Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Booting to the menu */what year?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Bootloader environment}}&lt;br /&gt;
&lt;br /&gt;
{{Bootloader}}&lt;br /&gt;
&lt;br /&gt;
The bootloader environment configures the [[bootloader]]. Between reboots, the environment is stored with a checksum in the internal flash [[Partitions|partition]] called &amp;quot;u-boot_env&amp;quot;. On the bootloader console, there are [[bootloader commands#Environment|bootloader commands for environment manipulation]].&lt;br /&gt;
&lt;br /&gt;
== Typical environment ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
baudrate=115200&lt;br /&gt;
bootargs=rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8 dyntick=enable lpj=252416&lt;br /&gt;
usbtty=cdc_acm&lt;br /&gt;
bootdelay=10&lt;br /&gt;
stdout=serial&lt;br /&gt;
stderr=serial&lt;br /&gt;
stdin=serial&lt;br /&gt;
mtdparts=mtdparts=neo1973-nand:0x00030000(u-boot),0x0000c000(u-boot_env),0x00200000(kernel),0x00130000(splash),0x03c94000(rootfs)&lt;br /&gt;
mtdids=nand0=neo1973-nand&lt;br /&gt;
bootargs_base=rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8 dyntick=enable lpj=252416&lt;br /&gt;
bootcmd=setenv bootargs ${bootargs_base} ${mtdparts}; nand read.e 0x32000000 kernel; bootm 0x32000000&lt;br /&gt;
pcf50606_int1=0x40&lt;br /&gt;
filesize=160C000&lt;br /&gt;
partition=nand0,0&lt;br /&gt;
mtddevnum=0&lt;br /&gt;
mtddevname=u-boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timeouts ==&lt;br /&gt;
&lt;br /&gt;
If the boot loader menu is on the screen, the phone will power off when there hasn't been activity for a while. This is not nice if you are working on the boot loader console, but you can make the time longer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv boot_menu_timeout [seconds]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the phone is powered on, there is a short period of time when you can connect to the console and cancel the automatic boot without going to the menu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv bootdelay [seconds]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Menu ==&lt;br /&gt;
&lt;br /&gt;
You can add items to the boot menu by setting environment variables of the form ''menu_&amp;lt;number&amp;gt;'' to values of the form ''&amp;lt;Title&amp;gt;: U-Boot-Commands''.&lt;br /&gt;
&lt;br /&gt;
For example the following command will add a boot menu entry that switches to autofast charging and turns off the backlight:&lt;br /&gt;
setenv menu_6 Autofast-Charge and Backlight Off: neo1973 charger autofast\; neo1973 backlight off&lt;br /&gt;
&lt;br /&gt;
While in this state, your Neo1973 can be charged with a generic USB charger. You also need to set boot_menu_timeout to 65000 to keep it from powering down, though.&lt;br /&gt;
&lt;br /&gt;
=== Booting to the menu ===&lt;br /&gt;
To stop in the NAND menu, press and hold the AUX key after pressing the power button at startup. In recent versions of u-boot (builds from august 5 200?), you can also permanently enter the menu by setting the &amp;lt;tt&amp;gt;stop_in_menu&amp;lt;/tt&amp;gt; environment variable to &amp;lt;tt&amp;gt;yes&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
setenv stop_in_menu yes&lt;br /&gt;
saveenv&lt;br /&gt;
&lt;br /&gt;
to restore normal startup, unset this variable or set it to &amp;lt;tt&amp;gt;no&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
To get access to the bootloader console over USB, the following settings need to be made:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GTA01Bv2 # setenv stderr usbtty&lt;br /&gt;
GTA01Bv2 # setenv stdout usbtty&lt;br /&gt;
GTA01Bv2 # setenv stdin usbtty&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* http://lists.openmoko.org/pipermail/community/2008-September/029845.html&lt;br /&gt;
* http://markmail.org/message/d2abi2nm5vms3unh&lt;br /&gt;
&lt;br /&gt;
{{Languages|Bootloader}}&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Dfu-util</id>
		<title>Dfu-util</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Dfu-util"/>
				<updated>2008-11-20T23:32:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Troubleshooting notes */any error means failed transfer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Dfu-util}}&lt;br /&gt;
&lt;br /&gt;
{{warning|Dfu-util is currently broken on [http://en.wikipedia.org/wiki/Big_endian#Endianness_and_hardware big-endian] architectures}}&lt;br /&gt;
{{warning|Do not flash U-Boot unless you are sure you need to}}&lt;br /&gt;
{{note|You need to connect your neo directly to your pc with no hub between. Otherwise there could be problems with the hub and the usb reset.}}&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
dfu-util is a program that implements the Host (PC) side of the [[USB DFU]] (Universal Serial Bus Device Firmware Upgrade) protocol.&lt;br /&gt;
&lt;br /&gt;
In the Openmoko project, we use this program to communicate with our specially enhanced [[u-boot]] boot loader, which implements the DFU device side.&lt;br /&gt;
&lt;br /&gt;
Using dfu-util and your smartphone, you can&lt;br /&gt;
* transfer and flash [[Partitions|partitions]] in internal [[NAND Flash]].&lt;br /&gt;
* transfer anything into RAM&lt;br /&gt;
** this can be used for fast development cycles of low-level code such as kernels without flashing them&lt;br /&gt;
* read out the current internal NAND [[Partitions|partitions]]&lt;br /&gt;
** this is an easy and efficient way of doing full backups of your phone&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
On Debian and Ubuntu, you'll need libusb-dev:&lt;br /&gt;
sudo apt-get install libusb-dev autogen pkg-config autotools-dev autoconf automake&lt;br /&gt;
&lt;br /&gt;
On Fedora you'll need libusb-devel and libusb-static:&lt;br /&gt;
yum install libusb-devel libusb-static&lt;br /&gt;
&lt;br /&gt;
On Gentoo you can emerge openmoko-dfu-util after unmasking it:&lt;br /&gt;
echo &amp;quot;app-mobilephone/openmoko-dfu-util       **&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
emerge -va app-mobilephone/openmoko-dfu-util&lt;br /&gt;
&lt;br /&gt;
You can check out and build the latest version of dfu-util using the following subversion commands:&lt;br /&gt;
svn co http://svn.openmoko.org/trunk/src/host/dfu-util/&lt;br /&gt;
cd dfu-util&lt;br /&gt;
./autogen.sh&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== Binaries ==&lt;br /&gt;
&lt;br /&gt;
Binary packages will be [http://downloads.openmoko.org/releases/Om2008.8-update/dfu-util made available] as part of the regular Openmoko builds. Currently, there is a dfu-util for Linux/i386.&lt;br /&gt;
&lt;br /&gt;
You need to make the downloaded file (dfu-util) executable with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x dfu-util&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
you can then run it with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./dfu-util&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
see below for full instructions.&lt;br /&gt;
&lt;br /&gt;
[http://packages.debian.org/dfu-util dfu-util is packaged] for Debian ''&amp;gt;= lenny'', so can be installed with: &amp;lt;tt&amp;gt;apt-get install dfu-util&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://downloads.sourceforge.net/slackfr-packs/dfu-util-svn4686-i686-1cfdev12.1.tgz dfu-util is packaged] for '''Slackware''' (12.1), so can be installed with: &amp;lt;tt&amp;gt;pkgtool&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently, there is a largely untested binary for Win32 (see [[Dfu-util-windows]]). Windows users can refer to [[No_Linux]] for a more tested approach.&lt;br /&gt;
&lt;br /&gt;
Compiling dfu-util on Mac:&lt;br /&gt;
* http://lists.openmoko.org/pipermail/community/2007-July/008438.html&lt;br /&gt;
* [[User:SNMoore]]&lt;br /&gt;
* [[MacOS_X#Flashing_to_your_device]]&lt;br /&gt;
&lt;br /&gt;
== Reference Documentation ==&lt;br /&gt;
&lt;br /&gt;
To run dfu-util, you need to have /proc/bus/usb mounted and working.  The terminal command &amp;quot;ls /proc/bus/usb&amp;quot; should return something similar to, &amp;quot;001  002  003  004  005  devices&amp;quot;, it shouldn't be empty. If it is empty, use this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mount -t usbfs usbfs /proc/bus/usb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can permanently add it in your fstab so that it automatically mounts. You can use emacs to edit you fstab using the command &amp;quot;sudo emacs /etc/fstab -nw&amp;quot; in your terminal window. Add the below line to your fstab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usbfs   /proc/bus/usb   usbfs   defaults&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Before using dfu-util ===&lt;br /&gt;
You'll need to boot your phone into the NAND Boot Menu:&lt;br /&gt;
* Ensure your phone is connected directly to the host computer by USB (not the USB-charger! :)&lt;br /&gt;
* Ensure that you execute all dfu-util commands as root&lt;br /&gt;
* Power off the phone&lt;br /&gt;
* Hold down AUX&lt;br /&gt;
* Press POWER until the Boot Menu appears&lt;br /&gt;
see also [[Booting the Neo FreeRunner]]&lt;br /&gt;
&lt;br /&gt;
=== Command-line options ===&lt;br /&gt;
&lt;br /&gt;
==== --help ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dfu-util - (C) 2007 by Openmoko Inc.&lt;br /&gt;
This program is Free Software and has ABSOLUTELY NO WARRANTY&lt;br /&gt;
&lt;br /&gt;
Usage: dfu-util [options] ...&lt;br /&gt;
-h --help                     Print this help message&lt;br /&gt;
-V --version                  Print the version number&lt;br /&gt;
-l --list                     List the currently attached DFU capable USB devices&lt;br /&gt;
-d --device vendor:product    Specify Vendor/Product ID of DFU device&lt;br /&gt;
-c --cfg config_nr            Specify the Configuration of DFU device&lt;br /&gt;
-i --intf intf_nr             Specify the DFU Interface number&lt;br /&gt;
-a --alt alt_nr               Specify the Altseting of the DFU Interface&lt;br /&gt;
-t --transfer-size            Specify the number of bytes per USB Transfer&lt;br /&gt;
-U --upload file              Read firmware from device into &amp;lt;file&amp;gt;&lt;br /&gt;
-D --download file            Write firmware from &amp;lt;file&amp;gt; into device&lt;br /&gt;
-R --reset                    Issue USB Reset signalling once we're finished&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== --alt ====&lt;br /&gt;
With the -a switch you specify the location on the device you want to write to or read from.&lt;br /&gt;
However, for most cases, ''kernel'' and ''rootfs'' will be enough.&lt;br /&gt;
&lt;br /&gt;
See [[Neo_FreeRunner_partitions]] for a list. You may also use the ''--list'' switch (see below), to get an online list.&lt;br /&gt;
&lt;br /&gt;
==== --list ====&lt;br /&gt;
&lt;br /&gt;
Using the --list option, you can list the available DFU capable devices, their configuration, interface and altsettings.&lt;br /&gt;
Below is an example for a current Neo1973 phone in u-boot '''Runtime Mode'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./dfu-util --list&lt;br /&gt;
dfu-util - (C) 2007 by Openmoko Inc.&lt;br /&gt;
This program is Free Software and has ABSOLUTELY NO WARRANTY&lt;br /&gt;
&lt;br /&gt;
Found DFU Runtime: [0x1457:0x5119] devnum=0, cfg=0, intf=2, alt=0, name=&amp;quot;USB Device Firmware Upgrade&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example for a current Neo1973 phone in u-boot '''DFU Mode'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./dfu-util --list&lt;br /&gt;
dfu-util - (C) 2007 by Openmoko Inc.&lt;br /&gt;
This program is Free Software and has ABSOLUTELY NO WARRANTY&lt;br /&gt;
&lt;br /&gt;
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=0, name=&amp;quot;RAM 0x32000000&amp;quot;&lt;br /&gt;
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=1, name=&amp;quot;u-boot&amp;quot;&lt;br /&gt;
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=2, name=&amp;quot;u-boot_env&amp;quot;&lt;br /&gt;
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=3, name=&amp;quot;kernel&amp;quot;&lt;br /&gt;
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=4, name=&amp;quot;splash&amp;quot;&lt;br /&gt;
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=5, name=&amp;quot;rootfs&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This shows you six interfaces, all in '''configuration 0''' and '''interface 0''', with altsetting 0...5, for RAM and each [[Partitions|partition]].&lt;br /&gt;
&lt;br /&gt;
==== --device ====&lt;br /&gt;
&lt;br /&gt;
You can specify the USB Vendor and Product ID of the device you want to program:&lt;br /&gt;
&lt;br /&gt;
dfu-util --device 0x1457:0x5119&lt;br /&gt;
&lt;br /&gt;
If you only have one standards-compliant DFU device attached to your PC, this is optional.  However, as soon as you have multiple DFU devices, dfu-util will detect this and abort, asking you to specify which device it shall use.&lt;br /&gt;
&lt;br /&gt;
==== --transfer-size ====&lt;br /&gt;
&lt;br /&gt;
Specifies the size of each individual USB transfer.  If you don't use it, the maximum possible size for your combination of host operating system and USB device is chosen (for optimal performance).&lt;br /&gt;
&lt;br /&gt;
==== --download ====&lt;br /&gt;
&lt;br /&gt;
download the given file into the device.&lt;br /&gt;
&lt;br /&gt;
==== --upload ====&lt;br /&gt;
&lt;br /&gt;
upload from the DFU device into the given file[name].&lt;br /&gt;
&lt;br /&gt;
{{note|Upload support is currently broken - [http://docs.openmoko.org/trac/ticket/676 #676]}}&lt;br /&gt;
&lt;br /&gt;
== Phrasebook ==&lt;br /&gt;
&lt;br /&gt;
There's no full-fledged manual yet.  Instead, some examples:&lt;br /&gt;
&lt;br /&gt;
=== Flashing the rootfs ===&lt;br /&gt;
&lt;br /&gt;
dfu-util -a rootfs -R -D /path/to/openmoko-devel-image.jffs2&lt;br /&gt;
&lt;br /&gt;
=== Flashing the kernel ===&lt;br /&gt;
&lt;br /&gt;
dfu-util -a kernel -R -D /path/to/uImage&lt;br /&gt;
&lt;br /&gt;
=== Flashing the bootloader ===&lt;br /&gt;
&lt;br /&gt;
dfu-util -a u-boot -R -D /path/to/u-boot.bin&lt;br /&gt;
&lt;br /&gt;
=== Flashing the splash image ===&lt;br /&gt;
&lt;br /&gt;
dfu-util -a splash -R -D /path/to/splash.gz&lt;br /&gt;
&lt;br /&gt;
see also [[Configuring_the_boot_splash_screens]]&lt;br /&gt;
&lt;br /&gt;
=== Copying a kernel into RAM ===&lt;br /&gt;
&lt;br /&gt;
dfu-util -a 0 -R -D /path/to/uImage&lt;br /&gt;
&lt;br /&gt;
Once this has finished, the kernel will be available at the default load address of 0x32000000 in Neo1973 RAM.&lt;br /&gt;
&lt;br /&gt;
{{note|You cannot transfer more than 2MB of data into RAM using this method}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting notes ==&lt;br /&gt;
&lt;br /&gt;
If during flashing of an image using dfu-util you're consistently getting an error -110 message, check that the size of the destination NAND [[Partitions|partition]] is big enough to hold the image.  For example the kernel partition is only 2 MB big by default and a kernel with debugging info compiled-in can often exceed this.  It's possible to change the partition layout to enlarge a given partition and shrink other partitions but you have to remember to reflash all partitions whose start offset has changed afterwards.  To adjust partitions layout use the ''mtdparts'' [[Bootloader|u-boot command]].&lt;br /&gt;
&lt;br /&gt;
If in turn you're facing errors in seemingly random places during the flashing of images, most likely the USB hub or cable through which your Neo1973 is connected, is of too poor quality.  It is recommended that you always connect the phone directly to the host when using dfu-util.&lt;br /&gt;
&lt;br /&gt;
If dfu-util reports a message like the following, before it starts flashing:&amp;lt;pre&amp;gt;&lt;br /&gt;
Resetting USB...&lt;br /&gt;
not at least 2 device changes found ?!?&lt;br /&gt;
Lost device after RESET?&amp;lt;/pre&amp;gt; retry the command - it should work on a second run.&lt;br /&gt;
&lt;br /&gt;
If dfu-util complains about not being able to program the device while in runtime mode, do the following: while in the boot menu, remove the usb cable and insert it again. Depending on the version of uBoot it should display somewhere in the menu that it is now in DFU mode. Now dfu-util should be able to continue.&lt;br /&gt;
&lt;br /&gt;
If dfu-util is too slow on Windows, that's a known bug. A suggestion is to run Linux on a virtual box. An full root image 97MB that is 776Mbit, the USB 1.1 on the Neo FreeRunner is capable of either 1.5 Mbit/s (Low-Speed) and 12 Mbit/s (Full-Speed). So flashing it should take less than 9 minutes with low speed and a bit more than a minute with full-speed. Plus transfer overhead, plus decompression on the Neo side.&lt;br /&gt;
&lt;br /&gt;
Note that any error messages indicate a probable failed transfer, despite latter messages emitted about success, etc.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Flashing the Neo 1973]] to the latest software.&lt;br /&gt;
*[[Flashing the Neo FreeRunner]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Backup</id>
		<title>Backup</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Backup"/>
				<updated>2008-11-20T23:27:10Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Backing up just PIM data (contacts/tasks/calendar) */grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Backing up just PIM data (contacts/tasks/calendar) ==&lt;br /&gt;
The following applies to all Qtopia PIM suite based derivations (FDOM, 2008.8, Qtopia)&lt;br /&gt;
&lt;br /&gt;
Contacts, calendar appointments, and tasks are kept in ~/Applications/Qtopia/qtopia_db.sqlite&lt;br /&gt;
&lt;br /&gt;
To backup simply use secure copy:&lt;br /&gt;
 scp -pr root@192.168.0.202:~/Applications/ .&lt;br /&gt;
 scp -pr root@192.168.0.202:~/Documents/ .&lt;br /&gt;
And to restore do the reverse:&lt;br /&gt;
 scp -pr Applications root@192.168.0.202:~/&lt;br /&gt;
 scp -pr Documents root@192.168.0.202:~/&lt;br /&gt;
Make sure you restart to allow the Qtopia PIM suite to see the changes:&lt;br /&gt;
 reboot&lt;br /&gt;
This way we can flash applicable distributions with minimal effort and not lose all our important data.&lt;br /&gt;
&lt;br /&gt;
== Backing up just /home/root ==&lt;br /&gt;
&lt;br /&gt;
To backup the home folder (all your personal files in theory).&lt;br /&gt;
&lt;br /&gt;
From the desktop pc run:&lt;br /&gt;
&lt;br /&gt;
 ssh root@phone 'tar -cpz /home/root' &amp;gt; moko-home-`date +%Y%m%d-%H%M%S`.tar.gz&lt;br /&gt;
&lt;br /&gt;
Where phone is the ip address of your phone (192.168.0.202).&lt;br /&gt;
&lt;br /&gt;
Personally I added an entry to /etc/hosts so the above works for me. I also added the desktop key to /home/root/.ssh/authorized_keys on the phone as per the instructions in [[USB_Networking#SSH_Keys]].&lt;br /&gt;
&lt;br /&gt;
If you want to check what is in the backup, run the following, replacing the filename with what was just created.&lt;br /&gt;
&lt;br /&gt;
 tar -tzf moko-home-20080802-203108.tar.gz | less&lt;br /&gt;
&lt;br /&gt;
[http://timwise.wikispaces.com/my+neo+freerunner reference]&lt;br /&gt;
&lt;br /&gt;
== Backing up everything ==&lt;br /&gt;
&lt;br /&gt;
You may either :&lt;br /&gt;
* Backup the flash contents, in order to be able to restore (see below)&lt;br /&gt;
* or move the system to SD to be able to boot it from SD in case of need. See [[Moving current system from flash to SD]]&lt;br /&gt;
&lt;br /&gt;
=== Backing-up flash images ===&lt;br /&gt;
&lt;br /&gt;
{{note|Upload support is currently broken - [http://docs.openmoko.org/trac/ticket/676 #676], [http://docs.openmoko.org/trac/ticket/1843 #1843]}}&lt;br /&gt;
&lt;br /&gt;
You will need the [[Dfu-util]] to make a backup of your existing image.&lt;br /&gt;
&lt;br /&gt;
As when [[Flashing_the_Neo_FreeRunner|flashing]], you will need to be in [[Booting_the_Neo_FreeRunner#Log_into_U-Boot_in_the_NOR_Flash|U-Boot in the NOR Flash]]. Log into the NOR uBoot menu and select ''Set console to USB'' (for FreeRunner just stay in NOR uBoot menu, do not select or enter anything). Now you will be able to flash, make backups of your FreeRunner or query the FreeRunner with [[Dfu-util|dfu-util]].  Backup is fairly slow; it took over ten minutes to back up a 247 MB rootfs.&lt;br /&gt;
&lt;br /&gt;
It is important that you connect the USB cable directly from your computer to your phone.  If there is a hub between them, backup (and flashing) will mostly likely fail.&lt;br /&gt;
&lt;br /&gt;
{{note|On a Windows host, omit the &amp;quot;./&amp;quot; or &amp;quot;sudo ./&amp;quot; that precedes the commands listed on this page}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./dfu-util -a kernel -R -U good-kernel.bin&lt;br /&gt;
sudo ./dfu-util -a rootfs -R -U good-rootfs.jffs2&lt;br /&gt;
sudo ./dfu-util -a splash -R -U good-splash.bin&lt;br /&gt;
sudo ./dfu-util -a u-boot -R -U good-u-boot.bin&lt;br /&gt;
sudo ./dfu-util -a u-boot_env -R -U good-u-boot_env.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is what a successful dfu-util backup run looks like:&lt;br /&gt;
&lt;br /&gt;
on the host PC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo ./dfu-util -a kernel -R -U good-kernel.img&lt;br /&gt;
dfu-util - (C) 2007 by Openmoko Inc.&lt;br /&gt;
This program is Free Software and has ABSOLUTELY NO WARRANTY&lt;br /&gt;
&lt;br /&gt;
Opening USB Device 0x0000:0x0000...&lt;br /&gt;
Claiming USB DFU Runtime Interface...&lt;br /&gt;
Determining device status: state = appIDLE, status = 0&lt;br /&gt;
Device really in Runtime Mode, send DFU detach request...&lt;br /&gt;
Resetting USB...&lt;br /&gt;
Opening USB Device...&lt;br /&gt;
Found Runtime: [0x1d50:0x5119] devnum=12, cfg=0, intf=0, alt=3, name=&amp;quot;kernel&amp;quot;&lt;br /&gt;
Claiming USB DFU Interface...&lt;br /&gt;
Setting Alternate Setting ...&lt;br /&gt;
Determining device status: state = dfuIDLE, status = 0&lt;br /&gt;
dfuIDLE, continuing&lt;br /&gt;
Transfer Size = 0x1000&lt;br /&gt;
Resetting USB to switch back to runtime mode&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on the FreeRunner:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DFU: Switching to DFU Mode&lt;br /&gt;
DEVICE_CONFIGURED: 1&lt;br /&gt;
Starting DFU Upload of partition 'kernel'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A failed run of dfu-util looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dfu-util - (C) 2007 by Openmoko Inc.&lt;br /&gt;
This program is Free Software and has ABSOLUTELY NO WARRANTY&lt;br /&gt;
&lt;br /&gt;
Opening USB Device 0x0000:0x0000...&lt;br /&gt;
Claiming USB DFU Runtime Interface...&lt;br /&gt;
Determining device status: state = appIDLE, status = 0&lt;br /&gt;
Device really in Runtime Mode, send DFU detach request...&lt;br /&gt;
Resetting USB...&lt;br /&gt;
Opening USB Device...&lt;br /&gt;
Found Runtime: [0x1d50:0x5119] devnum=20, cfg=0, intf=0, alt=6, name=&amp;quot;rootfs&amp;quot;&lt;br /&gt;
Claiming USB DFU Interface...&lt;br /&gt;
Setting Alternate Setting ...&lt;br /&gt;
Determining device status: state = dfuIDLE, status = 0&lt;br /&gt;
dfuIDLE, continuing&lt;br /&gt;
Transfer Size = 0x1000&lt;br /&gt;
dfu_upload error -110&lt;br /&gt;
&lt;br /&gt;
And shows errors demsg like this:&lt;br /&gt;
usb 5-2: usbfs: USBDEVFS_CONTROL failed cmd dfu-util rqt 161 rq 2 len 4096 ret -110&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backing-up flash images (alternative) ===&lt;br /&gt;
&lt;br /&gt;
On the device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/tmp/root&lt;br /&gt;
mount /dev/root /var/tmp/root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have om2008.9 you have to use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -t jffs2 /dev/mtdblock6 /var/tmp/root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On your workstation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@192.168.0.202 &amp;quot;mkfs.jffs2 -d /var/tmp/root -e 128 --pad --no-cleanmarkers -x lzo&amp;quot; | pv -W &amp;gt; rootfs.jffs2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(The &amp;quot;| pv -W&amp;quot; is optional, it just gives you something to watch as the bytes fly by.)&lt;br /&gt;
&lt;br /&gt;
On the device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /var/tmp/root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backing-up in a tar archive ===&lt;br /&gt;
&lt;br /&gt;
 ssh root@192.168.0.202 &amp;quot;tar c /bin /etc /home /lib /opt /sbin /tmp /usr /var&amp;quot; | pv -W &amp;gt; rootfs.tar&lt;br /&gt;
(The &amp;quot;| pv -W&amp;quot; is optional, it just gives you something to watch as the bytes fly by.)&lt;br /&gt;
&lt;br /&gt;
Extract it and use &amp;lt;code&amp;gt;mkfs.jffs2&amp;lt;/code&amp;gt; if you want convert it to a jffs2 image.&lt;br /&gt;
&lt;br /&gt;
==Backup Scripts==&lt;br /&gt;
&lt;br /&gt;
If you plan on backing up frequently, using a script will simplify the process:&lt;br /&gt;
&lt;br /&gt;
===Simple backup script===&lt;br /&gt;
&lt;br /&gt;
This script works well if you want to configure it to backup always the same device.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# Back up all partitions of the phone to a backup directory,&lt;br /&gt;
# adding today's date to the saved filenames.&lt;br /&gt;
&lt;br /&gt;
DATE=`date +%Y-%m-%d`&lt;br /&gt;
DFU=./dfu-util&lt;br /&gt;
BACKUP_DIR=bak/&lt;br /&gt;
&lt;br /&gt;
${DFU} -a kernel -R -U ${BACKUP_DIR}kernel-${DATE}.bin&lt;br /&gt;
${DFU} -a rootfs -R -U ${BACKUP_DIR}rootfs-${DATE}.jffs2&lt;br /&gt;
${DFU} -a splash -R -U ${BACKUP_DIR}splash-${DATE}.bin&lt;br /&gt;
${DFU} -a u-boot -R -U ${BACKUP_DIR}u-boot-${DATE}.bin&lt;br /&gt;
${DFU} -a u-boot_env -R -U ${BACKUP_DIR}u-boot_env-${DATE}.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interactive script===&lt;br /&gt;
&lt;br /&gt;
This script is based on the above &amp;quot;Simple backup script&amp;quot; (by unknown). It does the backup of what you want and choose promting you for choices. Enjoy it! test it! contribute! You can find us at /server irc.freenode.net /j #openmoko and we'll be pleased to accept you help (ideas || code).                                &lt;br /&gt;
&lt;br /&gt;
NOTE that the script works for me(tm) but it still needs some love. especially on traps and catches for wrong choices.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#############################################################################################################&lt;br /&gt;
##                                                                                                         ##&lt;br /&gt;
## This script is Free Software, it's licensed under the GPLv3 and has ABSOLUTELY NO WARRANTY              ##&lt;br /&gt;
## you can find and read the complete version of the GPLv3 @ http://www.gnu.org/licenses/gpl.html          ##&lt;br /&gt;
##                                                                                                         ##&lt;br /&gt;
## Q: what does this script do?                                                                            ##&lt;br /&gt;
## A: the script back up all partitions of the phone to a backup directory, interactively,                 ## &lt;br /&gt;
##    adding today's date to the saved filenames.                                                          ##&lt;br /&gt;
##                                                                                                         ##&lt;br /&gt;
## IMPORTANT:!!! REMEMBER TO RUN THIS SCRIPT AS ROOT SINCE dfu-util HAS TO BE USED AS ROOT!!!              ##&lt;br /&gt;
##                                                                                                         ##&lt;br /&gt;
## based on the orginal simple backup script at http://wiki.openmoko.org/wiki/Backup                       ##&lt;br /&gt;
##                                                                                                         ##&lt;br /&gt;
## this version has been conceived and written by cga, x77686d, Infoport, jomat at /server irc.freenode.net##&lt;br /&gt;
## /j #openmoko,#bash and my collegue aubba @ work.                                                        ##&lt;br /&gt;
##                                                                                                         ##&lt;br /&gt;
## for any suggestions and contributions contact cga (or one of the above) in the #openmoko channel        ##&lt;br /&gt;
##                                                                                                         ##&lt;br /&gt;
#############################################################################################################&lt;br /&gt;
&lt;br /&gt;
## let's roll!!&lt;br /&gt;
&lt;br /&gt;
## sets the date format for the date in the backup file, change accordingly to your local custom if you need&lt;br /&gt;
DATE=`date +%d-%m-%Y`&lt;br /&gt;
&lt;br /&gt;
## here the scripts try to find the dfu-util binary and set it as the DFU var:&lt;br /&gt;
if which dfu-util &amp;gt;/dev/null ; then&lt;br /&gt;
	echo&lt;br /&gt;
	echo &amp;quot;dfu-util found in your path&amp;quot;&lt;br /&gt;
	echo&lt;br /&gt;
	## 1 the function use this if you placed/linked dfu-util in your $PATH&lt;br /&gt;
	DFU=dfu-util&lt;br /&gt;
&lt;br /&gt;
elif ls dfu-util &amp;gt;/dev/null ; then&lt;br /&gt;
	echo&lt;br /&gt;
	echo &amp;quot;dfu-util found in current directory&amp;quot; &lt;br /&gt;
	echo&lt;br /&gt;
	## or 2 use following line if dfu-util is placed in the same directory where you run the script&lt;br /&gt;
	DFU=./dfu-util&lt;br /&gt;
	 &lt;br /&gt;
else&lt;br /&gt;
	## or 3 if the script doesn't find dfu-util shows the link for installing it and exit&lt;br /&gt;
	echo&lt;br /&gt;
	echo &amp;quot;dfu-util NOT found! install and use howto @ http://wiki.openmoko.org/wiki/Dfu-util&amp;quot;&lt;br /&gt;
	echo&lt;br /&gt;
	exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
## here we get the hex code for devices found with dfu-util --list &lt;br /&gt;
## the hex code is grabbed and the name of the device is shown accordingly and you are prompetd to chose the right one:&lt;br /&gt;
echo&lt;br /&gt;
echo 'these are the devices i found:' &lt;br /&gt;
echo&lt;br /&gt;
for device in `${DFU} --list | grep 0x | cut -f3 -d' ' | tr -d '[]'` ; do&lt;br /&gt;
	if [ &amp;quot;$device&amp;quot; == '0x1457:0x5119' ] ; then&lt;br /&gt;
		echo 'Neo 1973'&lt;br /&gt;
	elif [ &amp;quot;$device&amp;quot; == '0x1d50:0x5119' ] ;	then&lt;br /&gt;
		echo &amp;quot;Neo FreeRunner&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo 'other device found, DO NOT use dfu-util on this!!! it might bork it...'&lt;br /&gt;
		exit 1&lt;br /&gt;
	fi&lt;br /&gt;
done | nl&lt;br /&gt;
echo&lt;br /&gt;
echo 'choose the device to backup:' &lt;br /&gt;
echo&lt;br /&gt;
read selection&lt;br /&gt;
HEX=$(${DFU} --list | grep 0x | head -n $selection | tail -1 | cut -f3 -d' ' | tr -d '[]') &lt;br /&gt;
&lt;br /&gt;
## use the built-in read command to ask you and use the directory for the backup&lt;br /&gt;
while [ -z &amp;quot;$BACKUP_DIR&amp;quot; ] ; do&lt;br /&gt;
	echo&lt;br /&gt;
	read -e -p $&amp;quot;enter the directory for the backup:&amp;quot; BACKUP_DIR&lt;br /&gt;
	echo&lt;br /&gt;
&lt;br /&gt;
	## chek wether the dir exist and proceed, else create it and proceed.&lt;br /&gt;
	if [ ! -d &amp;quot;$BACKUP_DIR&amp;quot; ] ; then&lt;br /&gt;
		echo&lt;br /&gt;
		echo -n &amp;quot;$BACKUP_DIR does not exist, create it? [Y/n] &amp;quot;&lt;br /&gt;
		echo&lt;br /&gt;
		read CREATE_DIR&lt;br /&gt;
		if [ x&amp;quot;$CREATE_DIR&amp;quot; = xy -o x&amp;quot;$CREATE_DIR&amp;quot; = xY -o -z &amp;quot;$CREATE_DIR&amp;quot; ] ; then&lt;br /&gt;
			mkdir -p -v &amp;quot;${BACKUP_DIR}&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			BACKUP_DIR=&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
## here you get prompted to chose the backup you want, you can backup single files or all of them.&lt;br /&gt;
echo&lt;br /&gt;
echo 'choose the component to backup from the list:'&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
select howto in kernel splash u-boot u-boot_env rootfs all quit; do&lt;br /&gt;
	if [ &amp;quot;$howto&amp;quot; == &amp;quot;kernel&amp;quot; -o &amp;quot;$howto&amp;quot; == &amp;quot;all&amp;quot; ] ; then&lt;br /&gt;
		${DFU} -d ${HEX} -a kernel -R -U ${BACKUP_DIR}/kernel-${DATE}.bin&lt;br /&gt;
	fi&lt;br /&gt;
	if [ &amp;quot;$howto&amp;quot; == &amp;quot;splash&amp;quot; -o &amp;quot;$howto&amp;quot; == &amp;quot;all&amp;quot; ] ; then&lt;br /&gt;
		${DFU} -d ${HEX} -a splash -R -U ${BACKUP_DIR}/splash-${DATE}.bin&lt;br /&gt;
	fi&lt;br /&gt;
	if [ &amp;quot;$howto&amp;quot; == &amp;quot;u-boot&amp;quot; -o &amp;quot;$howto&amp;quot; == &amp;quot;all&amp;quot; ] ; then&lt;br /&gt;
		${DFU} -d ${HEX} -a u-boot -R -U ${BACKUP_DIR}/u-boot-${DATE}.bin&lt;br /&gt;
	fi&lt;br /&gt;
	if [ &amp;quot;$howto&amp;quot; == &amp;quot;u-boot_env&amp;quot; -o &amp;quot;$howto&amp;quot; == &amp;quot;all&amp;quot; ] ; then&lt;br /&gt;
		${DFU} -d ${HEX} -a u-boot_env -R -U ${BACKUP_DIR}/u-boot_env-${DATE}.bin&lt;br /&gt;
	fi&lt;br /&gt;
	if [ &amp;quot;$howto&amp;quot; == &amp;quot;rootfs&amp;quot; -o &amp;quot;$howto&amp;quot; == &amp;quot;all&amp;quot; ] ; then&lt;br /&gt;
		${DFU} -d ${HEX} -a rootfs -R -U ${BACKUP_DIR}/rootfs-${DATE}.jffs2&lt;br /&gt;
	fi&lt;br /&gt;
	if [ &amp;quot;$howto&amp;quot; == &amp;quot;quit&amp;quot; ] ; then&lt;br /&gt;
		exit 0&lt;br /&gt;
	fi&lt;br /&gt;
	echo&lt;br /&gt;
	echo 'the component(s) has/have been backed up, what next? (press enter for menu)'&lt;br /&gt;
	echo&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pretty GUI Script ===&lt;br /&gt;
&lt;br /&gt;
[[NeoTool]] is a zenity-based script which allows you to both backup and Flash your device from a pretty GUI. It uses both the dfu-util method and the alternate method described on this page, and can produce flashable images of everything including rootfs. Check it out.&lt;br /&gt;
&lt;br /&gt;
[[category:Advanced End User]]&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Qi</id>
		<title>Qi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Qi"/>
				<updated>2008-11-20T21:40:36Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: /* Download and installation */ source code location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Qi is a boot manager. It is designed to replace [[Uboot|uBoot]]. But Qi will be simpler and faster.&lt;br /&gt;
&lt;br /&gt;
Qi's concept is it leaves everything possible to Linux, that includes even the video init. Therefore Qi does NOT provide a boot menu. The usual NOR uBoot menu you use to flash your Neo (Aux first, power second, wait for menu) of course works fine, but if you try the usual procedure to fire up NAND uBoot (Power first, aux second, wait for menu) you get no response.  (not even the 'backlighted black screen')&lt;br /&gt;
&lt;br /&gt;
Qi will boot from any kernel named uImage-GTA0[123...].bin in the /boot folder in the root of an ext2 or ext3&lt;br /&gt;
partition on the uSD card. (Note: Qi expects the / (root) filesystem to be on the same partition as /boot!) It&lt;br /&gt;
tries the it will try first, second and then third partitions. Failing to find that, it will boot from the&lt;br /&gt;
kernel in NAND (if the kernel works of course, see below). Failing to find that, it will blink the blue Power&lt;br /&gt;
LED a fraction of a second every 10 secs or so to say ''nothing valid to boot''.&lt;br /&gt;
&lt;br /&gt;
== Download and installation ==&lt;br /&gt;
&lt;br /&gt;
The daily download is a ''qi-s3cXXXX-andy_somenumber.udfu'' file at http://people.openmoko.org/andy/ .&lt;br /&gt;
(look at your dmesg output for the CPU to pick the right s3c* version.)&lt;br /&gt;
&lt;br /&gt;
The installation should be flashing like;&lt;br /&gt;
 # dfu-util -a u-boot -R -D qi-s3c6410-andy_8589b40295653557.udfu&lt;br /&gt;
&lt;br /&gt;
One could [http://git.openmoko.org/?p=qi.git;a=summary poke around the source code] but it may be less&lt;br /&gt;
confusing to just use strings(1) on the .udfu file to get an idea of where Qi currently looks for files.&lt;br /&gt;
&lt;br /&gt;
== Testing speed improvements ==&lt;br /&gt;
&lt;br /&gt;
Stopwatch results on Qi (error is approx ±1/2 second):&lt;br /&gt;
&lt;br /&gt;
Booting SHR image with uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:07 splash screen appears&lt;br /&gt;
* 0:15 drops to console showing kernel messages scrolling by for ~1 minute&lt;br /&gt;
* 1:18 Openmoko 'please wait' splash&lt;br /&gt;
* 1:31 desktop animated splash&lt;br /&gt;
* 2:38 finished booting&lt;br /&gt;
&lt;br /&gt;
Booting identical setup with Qi flashed over uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:06 backlit black&lt;br /&gt;
* 0:13 please wait booting... (only this text on console for next 38 seconds)&lt;br /&gt;
* 0:51 Angstrom console message (at the end of kernel output with uBoot, but ONLY text display to appear throughout this stage with Qi)&lt;br /&gt;
* 0:54 Openmoko 'please wait' splash&lt;br /&gt;
* 1:05 desktop animated splash&lt;br /&gt;
* 1:54 finished booting&lt;br /&gt;
&lt;br /&gt;
So for this particular configuration, it reduced time-to-desktop by about 28%, about 44 seconds.  Surprisingly, the later segments of booting (desktop) were also noticeably faster than with uBoot - One would have expected just the fist stages up until init (kernel finished establishing itself) to be faster.&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
* Qi won't boot the 'first try' after power restored - the tester didn't count that first 10 seconds for Qi to be fair to its booting speed, not penalize it for what appears to be a bug that bears no relation to actual boot speed).&lt;br /&gt;
* The current (Oct. 12, 2008) 2.6.27 kernel does not boot from the build-in flash NAND. It only works from the uSD boot on ext3. If one tries to boot it from the flash, then AUX red LED blinks ~4/sec. This means kernel panic... It's panicking because it has no rootfs because it can't mount the jffs2 because of the CRC errors because there is a bug that the mtd are not done properly.&lt;br /&gt;
* {{Ticket|2095}} describes sound trouble (=no sound at all) on 2.6.24 kernel&lt;br /&gt;
* Qi often doesn't want to resume after suspend.&lt;br /&gt;
&lt;br /&gt;
== LED codes summary ==&lt;br /&gt;
&lt;br /&gt;
* One Blue shine every ~10 second: did not found any valid kernel to boot&lt;br /&gt;
* About four RED shines per second: kernel panic.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Main_Page"/>
				<updated>2008-11-20T20:46:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: add direct link to source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Main Page}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__NOEDITSECTION__ [[Image:Freerunner02.gif|thumb|150px|right|Neo FreeRunners]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 2.5ex; text-align: center; font: bold x-large sans&amp;quot;&amp;gt;Openmoko™ - Open. Mobile. Free.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Openmoko™ is a project dedicated to delivering mobile phones with an [[Source Code|open source software stack]]. Openmoko is currently selling the [[Neo FreeRunner]] phone to advanced users and will start selling it to the general public as soon as the software is more developed.&lt;br /&gt;
&lt;br /&gt;
The Openmoko stack, which includes a full X server, allows users and developers to transform mobile hardware platforms into unique products. Our license gives developers and users freedom to cosmetically customize their device or radically remix it; change the wallpaper or rebuild the entire house! It grants them the freedom, for example, to transform a phone into a medical device or point of sale device or the freedom to simply install their own favorite software. Beyond freeing the software on our devices we have also released our [http://downloads.openmoko.org/CAD/ CAD] files. And at LinuxWorld 2008, we announced the release of the [http://downloads.openmoko.org/schematics/ schematics for our products]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;6&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;color:white&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background:#ff6600; text-align:center; font-weight:bold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;News and events&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;New to Openmoko?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background:#333333&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
* 17/11: [[Community Updates/November 16th, 2008|Community updates~16,Nov]] &lt;br /&gt;
* 11/11: [[OpenmokoFramework/Status Update 5|Openmoko Framework Team Status Report 2008.11.1]]&lt;br /&gt;
* 10/11: Three weeks into the refocused [http://onlinedev.blogspot.com/2008/11/back-to-basics-update.html Back to Basics] development strategy.&lt;br /&gt;
* 05/11: Freerunner with [http://tw.youtube.com/watch?v=SG3fAHFNs2c mechanical legs]. Really.&lt;br /&gt;
* 04/11: [[User:Seanmcneil3|Android on Freerunner]], first bootable images.&lt;br /&gt;
* 03/11: [[Community_Updates/November 2nd, 2008|Community update]].&lt;br /&gt;
*&lt;br /&gt;
* 31/10: Nokia released [http://qtextended.org/ Qt Extended 4.4.2] ([http://qtextended.org/modules/mydownloads/visit.php?lid=98 image]).&lt;br /&gt;
* 30/10: [[Freerunner Alternative Case Designs]]&lt;br /&gt;
* 23/10: [[FDOM]], the Fat and Dirty Openmoko Distribution [http://lists.openmoko.org/pipermail/community/2008-October/034219.html updated]. Now with an installer script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[News Archive|(news archive)]]&amp;lt;!--Editors: copy removed news to News Archive! --&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;About Openmoko&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[Introduction]]&lt;br /&gt;
* [[Why Openmoko]]&lt;br /&gt;
* [[Neo FreeRunner|Neo FreeRunner phone]]&lt;br /&gt;
* [[Supported Hardware]]&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Getting Openmoko&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[Getting Openmoko]]&lt;br /&gt;
* [http://www.openmoko.com Openmoko Inc.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr style=&amp;quot;background:#ff6600; text-align:center; font-weight:bold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;for Users&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;for Developers&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background:#333333&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Getting started&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[Getting Started with your Neo FreeRunner | Neo FreeRunner getting started guide]]&lt;br /&gt;
* [[Applications]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Distributions&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[Distributions|Features comparison table]]&lt;br /&gt;
* [[Om 2008.8|Om 2008.8 (ASU)]] - [[Om 2007.2|Om 2007.2 (old stable)]]&lt;br /&gt;
* [[OpenmokoFramework|FSO]] - [[FDOM - a Fat and Dirty OM based distribution|FDOM]] - [[Qtopia / Qt Extended on FreeRunner|Qt Extended]] - [[Debian]] - [[Gentoo]] - [[Android]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Openmoko community&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[Discussion_Forums| Discussion Forums]]&lt;br /&gt;
* [[Community Repository]]&lt;br /&gt;
* [[Development resources | Development resources]]&lt;br /&gt;
* [[Openmoko E-courseware | E-courseware]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Applications development&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[Openmoko developer guide]]&lt;br /&gt;
* [[Toolchain|The toolchain]]&lt;br /&gt;
&amp;lt;!-- * &amp;lt;font color=white&amp;gt;VMware&amp;lt;/font&amp;gt; --&amp;gt;&lt;br /&gt;
* [[Python|Introduction to Python]]&lt;br /&gt;
* [http://projects.openmoko.org/ Projects hosted in our GForge]&lt;br /&gt;
* [[OpenmokoFramework|Openmoko dbus-based service level framework]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Integration and distributions&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[OpenEmbedded|The OpenEmbedded distribution building framework]]&lt;br /&gt;
* [[MokoMakefile|Building Openmoko using the MokoMakefile ]]&lt;br /&gt;
* [[Opkg|The Opkg package manager]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Emulation&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[Openmoko under QEMU]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Browse articles by [[:Category:Categories|Categories]].&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Qi</id>
		<title>Qi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Qi"/>
				<updated>2008-11-20T20:38:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jidanni: boot/uImage-GTA02.bin ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Qi is a boot manager. It is designed to replace [[Uboot|uBoot]]. But Qi will be simpler and faster.&lt;br /&gt;
&lt;br /&gt;
Qi's concept is it leaves everything possible to Linux, that includes even the video init. Therefore Qi does NOT provide a boot menu. The usual NOR uBoot menu you use to flash your Neo (Aux first, power second, wait for menu) of course works fine, but if you try the usual procedure to fire up NAND uBoot (Power first, aux second, wait for menu) you get no response.  (not even the 'backlighted black screen')&lt;br /&gt;
&lt;br /&gt;
Qi will boot from any kernel named uImage-GTA0[123...].bin in the /boot folder in the root of an ext2 or ext3&lt;br /&gt;
partition on the uSD card. (Note: Qi expects the / (root) filesystem to be on the same partition as /boot!) It&lt;br /&gt;
tries the it will try first, second and then third partitions. Failing to find that, it will boot from the&lt;br /&gt;
kernel in NAND (if the kernel works of course, see below). Failing to find that, it will blink the blue Power&lt;br /&gt;
LED a fraction of a second every 10 secs or so to say ''nothing valid to boot''.&lt;br /&gt;
&lt;br /&gt;
== Download and installation ==&lt;br /&gt;
&lt;br /&gt;
The daily download is a ''qi-s3cXXXX-andy_somenumber.udfu'' file at http://people.openmoko.org/andy/ .&lt;br /&gt;
(look at your dmesg output for the CPU to pick the right s3c* version.)&lt;br /&gt;
&lt;br /&gt;
The installation should be flashing like;&lt;br /&gt;
 # dfu-util -a u-boot -R -D qi-s3c6410-andy_8589b40295653557.udfu&lt;br /&gt;
&lt;br /&gt;
== Testing speed improvements ==&lt;br /&gt;
&lt;br /&gt;
Stopwatch results on Qi (error is approx ±1/2 second):&lt;br /&gt;
&lt;br /&gt;
Booting SHR image with uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:07 splash screen appears&lt;br /&gt;
* 0:15 drops to console showing kernel messages scrolling by for ~1 minute&lt;br /&gt;
* 1:18 Openmoko 'please wait' splash&lt;br /&gt;
* 1:31 desktop animated splash&lt;br /&gt;
* 2:38 finished booting&lt;br /&gt;
&lt;br /&gt;
Booting identical setup with Qi flashed over uBoot:&lt;br /&gt;
* 0:00 power button held down&lt;br /&gt;
* 0:06 backlit black&lt;br /&gt;
* 0:13 please wait booting... (only this text on console for next 38 seconds)&lt;br /&gt;
* 0:51 Angstrom console message (at the end of kernel output with uBoot, but ONLY text display to appear throughout this stage with Qi)&lt;br /&gt;
* 0:54 Openmoko 'please wait' splash&lt;br /&gt;
* 1:05 desktop animated splash&lt;br /&gt;
* 1:54 finished booting&lt;br /&gt;
&lt;br /&gt;
So for this particular configuration, it reduced time-to-desktop by about 28%, about 44 seconds.  Surprisingly, the later segments of booting (desktop) were also noticeably faster than with uBoot - One would have expected just the fist stages up until init (kernel finished establishing itself) to be faster.&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
* Qi won't boot the 'first try' after power restored - the tester didn't count that first 10 seconds for Qi to be fair to its booting speed, not penalize it for what appears to be a bug that bears no relation to actual boot speed).&lt;br /&gt;
* The current (Oct. 12, 2008) 2.6.27 kernel does not boot from the build-in flash NAND. It only works from the uSD boot on ext3. If one tries to boot it from the flash, then AUX red LED blinks ~4/sec. This means kernel panic... It's panicking because it has no rootfs because it can't mount the jffs2 because of the CRC errors because there is a bug that the mtd are not done properly.&lt;br /&gt;
* {{Ticket|2095}} describes sound trouble (=no sound at all) on 2.6.24 kernel&lt;br /&gt;
* Qi often doesn't want to resume after suspend.&lt;br /&gt;
&lt;br /&gt;
== LED codes summary ==&lt;br /&gt;
&lt;br /&gt;
* One Blue shine every ~10 second: did not found any valid kernel to boot&lt;br /&gt;
* About four RED shines per second: kernel panic.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Jidanni</name></author>	</entry>

	</feed>