<?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=Nukama&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=Nukama&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Special:Contributions/Nukama"/>
		<updated>2013-05-26T00:30:40Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.6</generator>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2011-04-07T18:15:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* USB-Networking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
                           &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[FreeBSD]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== devd ====&lt;br /&gt;
&lt;br /&gt;
Figure out the ugen for your Openmoko device:&lt;br /&gt;
&amp;lt;pre&amp;gt;dmesg | grep ugen | grep Linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then note down idVendor and idProduct value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idVendor&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idProduct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure devd(8) to perform an action if a device with the appropriate vendor and product string is attached.&lt;br /&gt;
&lt;br /&gt;
/etc/devd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;#Openmoko Freerunner with Linux 2.6.34+&lt;br /&gt;
attach 100 {&lt;br /&gt;
        device-name &amp;quot;ugen[0-9]+&amp;quot;;&lt;br /&gt;
        match &amp;quot;vendor&amp;quot; &amp;quot;0x0525&amp;quot;;&lt;br /&gt;
        match &amp;quot;product&amp;quot; &amp;quot;0xa4a2&amp;quot;;&lt;br /&gt;
        action &amp;quot;perl /usr/local/etc/neo_if.pl /dev/$device-name&amp;quot;;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This action consists of switching to network mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;# usbconfig -d ugenU.A set_config 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and assigning an IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifconfig ue0 192.168.0.200/24&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is also done with this script:&lt;br /&gt;
&lt;br /&gt;
/usr/local/etc/neo_if.pl&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/perl&lt;br /&gt;
my ($u, $ad) = $ARGV[0] =~ /(\d+)\.(\d+)$/;&lt;br /&gt;
print (&amp;quot;usage: $0 /dev/ugen4.2\n&amp;quot;), exit unless (length $u and length $ad);&lt;br /&gt;
print `usbconfig -u $u -a $ad set_config 1&lt;br /&gt;
#ifconfig ue0 link 00:1f:11:01:71:62 # uncomment if moko reports: usb0: duplicate address detected!&lt;br /&gt;
ifconfig ue0 192.168.0.200/24`;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally restart the devd daemon with: &lt;br /&gt;
&amp;lt;pre&amp;gt;# service devd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you now plug the FreeRunner into the USB port the cdce0 interface gets created and the IP address will be assigned. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
          __________________       ____________________       ____________________ &lt;br /&gt;
         |                  |     |                    |     |                    |&lt;br /&gt;
         | Router           |     | Workstation        |     | Freerunner         |&lt;br /&gt;
         |                  |     |                    |     |                    |&lt;br /&gt;
         | eth0 192.168.1.1 |-----| eth0 192.168.1.2   |     |                    |&lt;br /&gt;
 ISP-----| ppp0 DHCP        |     | ue0  192.168.0.200 |-----| usb0 192.168.0.202 |&lt;br /&gt;
         |__________________|     |____________________|     |____________________|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable on your FreeBSD workstation ip forwarding from one interface to another:&lt;br /&gt;
&amp;lt;pre&amp;gt;# sysctl net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For persistent forwarding enable gateway inside&lt;br /&gt;
&lt;br /&gt;
/etc/rc.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;gateway_enable=&amp;quot;YES&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
or the appropriate sysctl variable inside &lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a route inside your router.&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -net 192.168.0.0/24 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -host 192.168.0.202 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adjust the firewall of your router to pass packets from your Freerunner.&lt;br /&gt;
&amp;lt;pre&amp;gt;pass in quick on $intif inet from 192.168.0.202 to any flags S/SA keep state label &amp;quot;USER_RULE: Openmoko Freerunner&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have no control over your router use Network Address Translation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NAT ====&lt;br /&gt;
&lt;br /&gt;
Load kernel modules for firewall/NAT:&lt;br /&gt;
&lt;br /&gt;
/boot/loader.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipfw_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
ipdivert_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set default policy to accept:&lt;br /&gt;
&lt;br /&gt;
/etc/syctl.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.inet.ip.fw.default_to_accept=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure an alias for Freerunner, enable ip forwarding and firewall.&lt;br /&gt;
&lt;br /&gt;
Enable natd on the interface connected to the router, replace eth0 with this interface (i.e. re0, em0).&lt;br /&gt;
Use the alias as redirect address inside your LAN.&lt;br /&gt;
&lt;br /&gt;
/etc/rc.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifconfig_eth0=&amp;quot;inet 192.168.1.2/24&amp;quot;&lt;br /&gt;
ipv4_addrs_eth0=&amp;quot;192.168.1.202/32&amp;quot;&lt;br /&gt;
gateway_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
firewall_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
firewall_type=&amp;quot;OPEN&amp;quot;&lt;br /&gt;
natd_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
natd_interface=&amp;quot;eth0&amp;quot;&lt;br /&gt;
natd_flags=&amp;quot;-redirect_address 192.168.0.202 192.168.1.202&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2011-04-07T18:13:10Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* NAT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
                           &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[FreeBSD]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[devd]] ====&lt;br /&gt;
&lt;br /&gt;
Figure out the ugen for your Openmoko device:&lt;br /&gt;
&amp;lt;pre&amp;gt;dmesg | grep ugen | grep Linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then note down idVendor and idProduct value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idVendor&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idProduct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure devd(8) to perform an action if a device with the appropriate vendor and product string is attached.&lt;br /&gt;
&lt;br /&gt;
/etc/devd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;#Openmoko Freerunner with Linux 2.6.34+&lt;br /&gt;
attach 100 {&lt;br /&gt;
        device-name &amp;quot;ugen[0-9]+&amp;quot;;&lt;br /&gt;
        match &amp;quot;vendor&amp;quot; &amp;quot;0x0525&amp;quot;;&lt;br /&gt;
        match &amp;quot;product&amp;quot; &amp;quot;0xa4a2&amp;quot;;&lt;br /&gt;
        action &amp;quot;perl /usr/local/etc/neo_if.pl /dev/$device-name&amp;quot;;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This action consists of switching to network mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;# usbconfig -d ugenU.A set_config 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and assigning an IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifconfig ue0 192.168.0.200/24&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is also done with this script:&lt;br /&gt;
&lt;br /&gt;
/usr/local/etc/neo_if.pl&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/perl&lt;br /&gt;
my ($u, $ad) = $ARGV[0] =~ /(\d+)\.(\d+)$/;&lt;br /&gt;
print (&amp;quot;usage: $0 /dev/ugen4.2\n&amp;quot;), exit unless (length $u and length $ad);&lt;br /&gt;
print `usbconfig -u $u -a $ad set_config 1&lt;br /&gt;
#ifconfig ue0 link 00:1f:11:01:71:62 # uncomment if moko reports: usb0: duplicate address detected!&lt;br /&gt;
ifconfig ue0 192.168.0.200/24`;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally restart the devd daemon with: &lt;br /&gt;
&amp;lt;pre&amp;gt;# service devd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you now plug the FreeRunner into the USB port the cdce0 interface gets created and the IP address will be assigned. &lt;br /&gt;
&lt;br /&gt;
==== [[Routing]] ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
          __________________       ____________________       ____________________ &lt;br /&gt;
         |                  |     |                    |     |                    |&lt;br /&gt;
         | Router           |     | Workstation        |     | Freerunner         |&lt;br /&gt;
         |                  |     |                    |     |                    |&lt;br /&gt;
         | eth0 192.168.1.1 |-----| eth0 192.168.1.2   |     |                    |&lt;br /&gt;
 ISP-----| ppp0 DHCP        |     | ue0  192.168.0.200 |-----| usb0 192.168.0.202 |&lt;br /&gt;
         |__________________|     |____________________|     |____________________|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable on your FreeBSD workstation ip forwarding from one interface to another:&lt;br /&gt;
&amp;lt;pre&amp;gt;# sysctl net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For persistent forwarding enable gateway inside&lt;br /&gt;
&lt;br /&gt;
/etc/rc.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;gateway_enable=&amp;quot;YES&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
or the appropriate sysctl variable inside &lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a route inside your router.&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -net 192.168.0.0/24 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -host 192.168.0.202 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adjust the firewall of your router to pass packets from your Freerunner.&lt;br /&gt;
&amp;lt;pre&amp;gt;pass in quick on $intif inet from 192.168.0.202 to any flags S/SA keep state label &amp;quot;USER_RULE: Openmoko Freerunner&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have no control over your router use Network Address Translation.&lt;br /&gt;
&lt;br /&gt;
==== [[NAT]] ====&lt;br /&gt;
&lt;br /&gt;
Load kernel modules for firewall/NAT:&lt;br /&gt;
&lt;br /&gt;
/boot/loader.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipfw_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
ipdivert_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set default policy to accept:&lt;br /&gt;
&lt;br /&gt;
/etc/syctl.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.inet.ip.fw.default_to_accept=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure an alias for Freerunner, enable ip forwarding and firewall.&lt;br /&gt;
&lt;br /&gt;
Enable natd on the interface connected to the router, replace eth0 with this interface (i.e. re0, em0).&lt;br /&gt;
Use the alias as redirect address inside your LAN.&lt;br /&gt;
&lt;br /&gt;
/etc/rc.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifconfig_eth0=&amp;quot;inet 192.168.1.2/24&amp;quot;&lt;br /&gt;
ipv4_addrs_eth0=&amp;quot;192.168.1.202/32&amp;quot;&lt;br /&gt;
gateway_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
firewall_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
firewall_type=&amp;quot;OPEN&amp;quot;&lt;br /&gt;
natd_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
natd_interface=&amp;quot;eth0&amp;quot;&lt;br /&gt;
natd_flags=&amp;quot;-redirect_address 192.168.0.202 192.168.1.202&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/UBIFS</id>
		<title>UBIFS</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/UBIFS"/>
				<updated>2011-04-07T16:47:38Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* UBIFS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== With kernel 2.6.34 ==&lt;br /&gt;
&lt;br /&gt;
1) booting 2.6.34 kernel on uSD&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/tests/mrmoku/2.6.34/images/om-gta02/&lt;br /&gt;
&lt;br /&gt;
(Please note as of July 2010 unstable is 2.6.32+: http://build.shr-project.org/shr-unstable/images/om-gta02/ )&lt;br /&gt;
&lt;br /&gt;
download uImage to /boot &lt;br /&gt;
&lt;br /&gt;
download modules and untar it to /&lt;br /&gt;
&lt;br /&gt;
update uImage link in /boot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) flash image&lt;br /&gt;
&lt;br /&gt;
flash_eraseall /dev/mtd6&lt;br /&gt;
&lt;br /&gt;
nandwrite -p /dev/mtd6 shr-full-eglibc-ipk--20100105-om-gta02.rootfs.ubi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) then test if it works &lt;br /&gt;
&lt;br /&gt;
ubiattach /dev/ubi_ctrl -O 2048 -m 6&lt;br /&gt;
&lt;br /&gt;
mount -t ubifs ubi0:om-gta02-rootfs /media/om&lt;br /&gt;
&lt;br /&gt;
ls /media/om&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Setup bootloader U-boot or Qi:&lt;br /&gt;
&lt;br /&gt;
4.1) configure U-boot [[Bootloader_commands#Environment]]&lt;br /&gt;
&lt;br /&gt;
change kernel parameters from:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rootfstype=jffs2 root=/dev/mtdblock6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rootfstype=ubifs ubi.mtd=6,2048 root=ubi0:om-gta02-rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.2) update Qi with dfu-util&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/shr-unstable/images/om-gta02/ &lt;br /&gt;
&lt;br /&gt;
qi-s3c* expects jffs2 as rootfs&lt;br /&gt;
&lt;br /&gt;
qi-ubi-s3c* expects ubifs as rootfs (with rootfs name om-gta02-rootfs which corresponds to name in ubinized image)&lt;br /&gt;
&lt;br /&gt;
it is now in OE repository as qi_git.bb and qi-ubi_git.bb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) flash 2.6.32 also to NAND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) boot it, test it, play with it&lt;br /&gt;
&lt;br /&gt;
(Written by Martin JaMa Jansa [http://www.mail-archive.com/community@lists.openmoko.org/msg56825.html])&lt;br /&gt;
&lt;br /&gt;
=== Alternative === &lt;br /&gt;
( using slower but always available dfu-util )&lt;br /&gt;
&lt;br /&gt;
# update Qi with dfu-util&lt;br /&gt;
#: &amp;lt;pre&amp;gt;dfu-util -a u-boot -R -D /qi-ubi-s3c2442-1.0.2-r1+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu # for gta02&amp;lt;/pre&amp;gt;&lt;br /&gt;
# install kernel&lt;br /&gt;
#: &amp;lt;pre&amp;gt;dfu-util -a kernel -R -D ./uImage-2.6.29-oe11+gitr119862+a15608f241a40b41fed5bffe511355c2067c4e88-r8-om-gta02.bin &amp;lt;/pre&amp;gt;&lt;br /&gt;
# install rootfs&lt;br /&gt;
#: &amp;lt;pre&amp;gt;dfu-util -a rootfs -R -D  /home/ew/Desktop/shr-full-eglibc-ipk--20100507-om-gta02.rootfs.ubi #  not the rootfs.ubifs image use rootfs.ubi file!&amp;lt;/pre&amp;gt;&lt;br /&gt;
# make shure that Qi is booting the NAND ( remove sd card or touch /boot/noboot-GTA02 )&lt;br /&gt;
#: boot GTA02 with Qi (  switch it on )&lt;br /&gt;
&lt;br /&gt;
(Written by pwgen )&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
How to test:&lt;br /&gt;
Please run 'bonnie\+\+ -u 0:0 -s 32 -m 16 -r 16' on a fresh filesystem. bonnie++ is now in shr-unstable feeds.&lt;br /&gt;
&lt;br /&gt;
=== [http://en.wikipedia.org/wiki/UBIFS UBIFS] ===&lt;br /&gt;
max_posedon provided some bonnie++ results using kernel 2.6.29&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ubifs ===       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1531  78  7594  73  4318  76  2195  98 42904  99  2805  87&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   887  94  2802  99   859  98   914  97 18084  99   659  98&lt;br /&gt;
localhost,32M,1531,78,7594,73,4318,76,2195,98,42904,99,2804.8,87,16,887,94,2802,99,859,98,914,97,18084,99,659,98&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://build.shr-project.org/shr-unstable/images/om-gta02/qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu qi-ubi] booting [http://build.shr-project.org/shr-unstable/images/om-gta02/uImage-2.6.29-oe11+gitr119862+a15608f241a40b41fed5bffe511355c2067c4e88-r7-om-gta02.bin 2.6.29-oe11] with [http://build.shr-project.org/shr-unstable/images/om-gta02/shr-lite-eglibc-ipk--20100115-om-gta02.rootfs.ubi shr-lite-rootfs.ubi] (parameters as indicated above, boot to desktop in 90sec):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M  1416  69  6874  67  4271  54  2126  97 42582  98  3129  93&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   936  97  2525  97   853  95   926  96 17800  98   638  95&lt;br /&gt;
16,32M,1416,69,6874,67,4271,54,2126,97,42582,98,3128.9,93,16,936,97,2525,97,853,95,926,96,17800,98,638,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://build.shr-project.org/shr-unstable/images/om-gta02/qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu qi-ubi] booting [http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/uImage-2.6.31-oe1+gitr157549+dd32737aa524e09c1d141a0e735dd58674552244-r6-om-gta02.bin 2.6.31-oe1] with [http://build.shr-project.org/shr-unstable/images/om-gta02/shr-lite-eglibc-ipk--20100115-om-gta02.rootfs.ubi shr-lite-rootfs.ubi] (parameters as indicated above, boot to desktop in 51sec):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M  2046  86 21393  21  8687  36  2231  94 52556 100  5118  99&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16  1924  94 12296  99  1966  96  1888  93 +++++ +++  1492  95&lt;br /&gt;
16,32M,2046,86,21393,21,8687,36,2231,94,52556,100,5117.9,99,16,1924,94,12296,99,1966,96,1888,93,+++++,+++,1492,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://build.shr-project.org/shr-unstable/images/om-gta02/old/qi-ubi-s3c2442-1.0.2-r5+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu qi-ubi] booting [http://build.shr-project.org/shr-unstable/images/om-gta02/old/uImage-2.6.34-r7-oe17-om-gta02.bin 2.6.34-r7-oe17] with [http://build.shr-project.org/shr-unstable/images/om-gta02/old/shr-lite-eglibc-ipk--20110404-om-gta02.rootfs.ubi shr-lite-rootfs.ubi] (parameters as indicated above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M  2089  88 20845   8  9938  27  2341  98 53687  99  4661  87&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16  2189  96 13423  99  2142  94  2125  93 +++++ +++  1681  97&lt;br /&gt;
16,32M,2089,88,20845,8,9938,27,2341,98,53687,99,4660.5,87,16,2189,96,13423,99,2142,94,2125,93,+++++,+++,1681,97&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[JFFS2]] ===&lt;br /&gt;
Latest 2.6.29-andy-tracking with jffs2 and SHR-testing (by  Dima Kogan[http://www.mail-archive.com/shr-user@lists.shr-project.org/msg02761.html], with unknown parameters)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
om-gta02       300M   844  96  1552  92  1550  94  1508  96  4252  92 462.4  94&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   174  68 17360  99   275  92   208  80 18970  99   236  79&lt;br /&gt;
om-gta02,300M,844,96,1552,92,1550,94,1508,96,4252,92,462.4,94,16,174,68,17360,99,275,92,208,80,18970,99,236,79&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kernel 2.6.32, parameters as indicated above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M   614  97  1802  96  1776  97  1155  97 33702  98  1282  97&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   197  96 +++++ +++   209  95   196  95 +++++ +++   207  95&lt;br /&gt;
16,32M,614,97,1802,96,1776,97,1155,97,33702,98,1282.2,97,16,197,96,+++++,+++,209,95,196,95,+++++,+++,207,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comparsion with ext on uSD ===&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext3 ext3], async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext3, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1122  69  1911  40  2288  28  1832  82 43012  99  2923  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   111  96 18460  95  1315  85   111  95 20824  99   258  75&lt;br /&gt;
localhost,32M,1122,69,1911,40,2288,28,1832,82,43012,99,2923.0,98,16,111,96,18460,95,1315,85,111,95,20824,99,258,75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext2 ext2], sync ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, sync ===  ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M    70   5   122   3   970  11  2196  98 42969  99  56.1   1&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16    18  12 17609  89    14   2    18  12 20165  98     6   1&lt;br /&gt;
localhost,32M,70,5,122,3,970,11,2196,98,42969,99,56.1,1,16,18,12,17609,89,14,2,18,12,20165,98,6,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ext2, async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1319  70  2637  29  1997  16  1904  86 42504  99  3151  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   166  95 19707  98  2588  97   170  96 20644  99   321  63&lt;br /&gt;
localhost,32M,1319,70,2637,29,1997,16,1904,86,42504,99,3151.4,98,16,166,95,19707,98,2588,97,170,96,20644,99,321,63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Status ==&lt;br /&gt;
=== 12.5.2010 ===&lt;br /&gt;
dfu-util confirmed to work too (by pwgen), but will be slower than nandwrite.&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing SHR]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2011-04-07T16:21:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Routing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
                           &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[FreeBSD]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[devd]] ====&lt;br /&gt;
&lt;br /&gt;
Figure out the ugen for your Openmoko device:&lt;br /&gt;
&amp;lt;pre&amp;gt;dmesg | grep ugen | grep Linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then note down idVendor and idProduct value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idVendor&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idProduct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure devd(8) to perform an action if a device with the appropriate vendor and product string is attached.&lt;br /&gt;
&lt;br /&gt;
/etc/devd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;#Openmoko Freerunner with Linux 2.6.34+&lt;br /&gt;
attach 100 {&lt;br /&gt;
        device-name &amp;quot;ugen[0-9]+&amp;quot;;&lt;br /&gt;
        match &amp;quot;vendor&amp;quot; &amp;quot;0x0525&amp;quot;;&lt;br /&gt;
        match &amp;quot;product&amp;quot; &amp;quot;0xa4a2&amp;quot;;&lt;br /&gt;
        action &amp;quot;perl /usr/local/etc/neo_if.pl /dev/$device-name&amp;quot;;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This action consists of switching to network mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;# usbconfig -d ugenU.A set_config 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and assigning an IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifconfig ue0 192.168.0.200/24&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is also done with this script:&lt;br /&gt;
&lt;br /&gt;
/usr/local/etc/neo_if.pl&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/perl&lt;br /&gt;
my ($u, $ad) = $ARGV[0] =~ /(\d+)\.(\d+)$/;&lt;br /&gt;
print (&amp;quot;usage: $0 /dev/ugen4.2\n&amp;quot;), exit unless (length $u and length $ad);&lt;br /&gt;
print `usbconfig -u $u -a $ad set_config 1&lt;br /&gt;
#ifconfig ue0 link 00:1f:11:01:71:62 # uncomment if moko reports: usb0: duplicate address detected!&lt;br /&gt;
ifconfig ue0 192.168.0.200/24`;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally restart the devd daemon with: &lt;br /&gt;
&amp;lt;pre&amp;gt;# service devd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you now plug the FreeRunner into the USB port the cdce0 interface gets created and the IP address will be assigned. &lt;br /&gt;
&lt;br /&gt;
==== [[Routing]] ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
          __________________       ____________________       ____________________ &lt;br /&gt;
         |                  |     |                    |     |                    |&lt;br /&gt;
         | Router           |     | Workstation        |     | Freerunner         |&lt;br /&gt;
         |                  |     |                    |     |                    |&lt;br /&gt;
         | eth0 192.168.1.1 |-----| eth0 192.168.1.2   |     |                    |&lt;br /&gt;
 ISP-----| ppp0 DHCP        |     | ue0  192.168.0.200 |-----| usb0 192.168.0.202 |&lt;br /&gt;
         |__________________|     |____________________|     |____________________|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable on your FreeBSD workstation ip forwarding from one interface to another:&lt;br /&gt;
&amp;lt;pre&amp;gt;# sysctl net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For persistent forwarding enable gateway inside&lt;br /&gt;
&lt;br /&gt;
/etc/rc.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;gateway_enable=&amp;quot;YES&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
or the appropriate sysctl variable inside &lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a route inside your router.&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -net 192.168.0.0/24 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -host 192.168.0.202 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adjust the firewall of your router to pass packets from your Freerunner.&lt;br /&gt;
&amp;lt;pre&amp;gt;pass in quick on $intif inet from 192.168.0.202 to any flags S/SA keep state label &amp;quot;USER_RULE: Openmoko Freerunner&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have no control over your router use Network Address Translation.&lt;br /&gt;
&lt;br /&gt;
==== [[NAT]] ====&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2011-04-07T15:55:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Routing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
                           &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[FreeBSD]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[devd]] ====&lt;br /&gt;
&lt;br /&gt;
Figure out the ugen for your Openmoko device:&lt;br /&gt;
&amp;lt;pre&amp;gt;dmesg | grep ugen | grep Linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then note down idVendor and idProduct value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idVendor&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idProduct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure devd(8) to perform an action if a device with the appropriate vendor and product string is attached.&lt;br /&gt;
&lt;br /&gt;
/etc/devd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;#Openmoko Freerunner with Linux 2.6.34+&lt;br /&gt;
attach 100 {&lt;br /&gt;
        device-name &amp;quot;ugen[0-9]+&amp;quot;;&lt;br /&gt;
        match &amp;quot;vendor&amp;quot; &amp;quot;0x0525&amp;quot;;&lt;br /&gt;
        match &amp;quot;product&amp;quot; &amp;quot;0xa4a2&amp;quot;;&lt;br /&gt;
        action &amp;quot;perl /usr/local/etc/neo_if.pl /dev/$device-name&amp;quot;;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This action consists of switching to network mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;# usbconfig -d ugenU.A set_config 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and assigning an IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifconfig ue0 192.168.0.200/24&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is also done with this script:&lt;br /&gt;
&lt;br /&gt;
/usr/local/etc/neo_if.pl&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/perl&lt;br /&gt;
my ($u, $ad) = $ARGV[0] =~ /(\d+)\.(\d+)$/;&lt;br /&gt;
print (&amp;quot;usage: $0 /dev/ugen4.2\n&amp;quot;), exit unless (length $u and length $ad);&lt;br /&gt;
print `usbconfig -u $u -a $ad set_config 1&lt;br /&gt;
#ifconfig ue0 link 00:1f:11:01:71:62 # uncomment if moko reports: usb0: duplicate address detected!&lt;br /&gt;
ifconfig ue0 192.168.0.200/24`;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally restart the devd daemon with: &lt;br /&gt;
&amp;lt;pre&amp;gt;# service devd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you now plug the FreeRunner into the USB port the cdce0 interface gets created and the IP address will be assigned. &lt;br /&gt;
&lt;br /&gt;
==== [[Routing]] ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 __________________       ____________________       ____________________&lt;br /&gt;
|                  |     |                    |     |                    |&lt;br /&gt;
| Router           |     | Workstation        |     | Freerunner         |&lt;br /&gt;
|                  |     |                    |     |                    |&lt;br /&gt;
| eth0 192.168.1.1 |-----| eth0 192.168.1.2   |     |                    |&lt;br /&gt;
|                  |     | ue0  192.168.0.200 |-----| usb0 192.168.0.202 |&lt;br /&gt;
|__________________|     |____________________|     |____________________|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable on your FreeBSD workstation ip forwarding from one interface to another:&lt;br /&gt;
&amp;lt;pre&amp;gt;# sysctl net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For persistent forwarding enable gateway inside&lt;br /&gt;
&lt;br /&gt;
/etc/rc.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;gateway_enable=&amp;quot;YES&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
or the appropriate sysctl variable inside &lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a route inside your router.&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -net 192.168.0.0/24 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -host 192.168.0.202 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have no control over your router use Network Address Translation.&lt;br /&gt;
&lt;br /&gt;
==== [[NAT]] ====&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2011-04-07T15:54:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Routing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
                           &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[FreeBSD]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[devd]] ====&lt;br /&gt;
&lt;br /&gt;
Figure out the ugen for your Openmoko device:&lt;br /&gt;
&amp;lt;pre&amp;gt;dmesg | grep ugen | grep Linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then note down idVendor and idProduct value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idVendor&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idProduct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure devd(8) to perform an action if a device with the appropriate vendor and product string is attached.&lt;br /&gt;
&lt;br /&gt;
/etc/devd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;#Openmoko Freerunner with Linux 2.6.34+&lt;br /&gt;
attach 100 {&lt;br /&gt;
        device-name &amp;quot;ugen[0-9]+&amp;quot;;&lt;br /&gt;
        match &amp;quot;vendor&amp;quot; &amp;quot;0x0525&amp;quot;;&lt;br /&gt;
        match &amp;quot;product&amp;quot; &amp;quot;0xa4a2&amp;quot;;&lt;br /&gt;
        action &amp;quot;perl /usr/local/etc/neo_if.pl /dev/$device-name&amp;quot;;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This action consists of switching to network mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;# usbconfig -d ugenU.A set_config 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and assigning an IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifconfig ue0 192.168.0.200/24&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is also done with this script:&lt;br /&gt;
&lt;br /&gt;
/usr/local/etc/neo_if.pl&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/perl&lt;br /&gt;
my ($u, $ad) = $ARGV[0] =~ /(\d+)\.(\d+)$/;&lt;br /&gt;
print (&amp;quot;usage: $0 /dev/ugen4.2\n&amp;quot;), exit unless (length $u and length $ad);&lt;br /&gt;
print `usbconfig -u $u -a $ad set_config 1&lt;br /&gt;
#ifconfig ue0 link 00:1f:11:01:71:62 # uncomment if moko reports: usb0: duplicate address detected!&lt;br /&gt;
ifconfig ue0 192.168.0.200/24`;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally restart the devd daemon with: &lt;br /&gt;
&amp;lt;pre&amp;gt;# service devd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you now plug the FreeRunner into the USB port the cdce0 interface gets created and the IP address will be assigned. &lt;br /&gt;
&lt;br /&gt;
==== [[Routing]] ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 __________________       ____________________       ____________________&lt;br /&gt;
|                  |     |                    |     |                    |&lt;br /&gt;
| Router           |     | Workstation        |     | Freerunner         |&lt;br /&gt;
|                  |     |                    |     |                    |&lt;br /&gt;
| eth0 192.168.1.1 |-----| eth0 192.168.1.2   |     |                    |&lt;br /&gt;
|                  |     | ue0  192.168.0.200 |-----| usb0 192.168.0.202 |&lt;br /&gt;
|__________________|     |____________________|     |____________________|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable on your FreeBSD workstation ip forwarding from one interface to another:&lt;br /&gt;
&amp;lt;pre&amp;gt;# sysctl net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For persistent forwarding enable gateway inside&lt;br /&gt;
&lt;br /&gt;
/etc/rc.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;gateway_enable=&amp;quot;YES&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
or the appropriate sysctl variable inside &lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a route inside your router.&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -net 192.168.0.0/24 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -host 192.168.0.202 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have no control over your router use Network Address Translation.&lt;br /&gt;
&lt;br /&gt;
==== [[NAT]] ====&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2011-04-07T15:50:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* USB-Networking */ FreeBSD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
                           &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[FreeBSD]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[devd]] ====&lt;br /&gt;
&lt;br /&gt;
Figure out the ugen for your Openmoko device:&lt;br /&gt;
&amp;lt;pre&amp;gt;dmesg | grep ugen | grep Linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then note down idVendor and idProduct value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idVendor&lt;br /&gt;
# usbconfig -d ugenU.A dump_device_desc | grep idProduct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure devd(8) to perform an action if a device with the appropriate vendor and product string is attached.&lt;br /&gt;
&lt;br /&gt;
/etc/devd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;#Openmoko Freerunner with Linux 2.6.34+&lt;br /&gt;
attach 100 {&lt;br /&gt;
        device-name &amp;quot;ugen[0-9]+&amp;quot;;&lt;br /&gt;
        match &amp;quot;vendor&amp;quot; &amp;quot;0x0525&amp;quot;;&lt;br /&gt;
        match &amp;quot;product&amp;quot; &amp;quot;0xa4a2&amp;quot;;&lt;br /&gt;
        action &amp;quot;perl /usr/local/etc/neo_if.pl /dev/$device-name&amp;quot;;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This action consists of switching to network mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;# usbconfig -d ugenU.A set_config 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and assigning an IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;# ifconfig ue0 192.168.0.200/24&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is also done with this script:&lt;br /&gt;
&lt;br /&gt;
/usr/local/etc/neo_if.pl&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/perl&lt;br /&gt;
my ($u, $ad) = $ARGV[0] =~ /(\d+)\.(\d+)$/;&lt;br /&gt;
print (&amp;quot;usage: $0 /dev/ugen4.2\n&amp;quot;), exit unless (length $u and length $ad);&lt;br /&gt;
print `usbconfig -u $u -a $ad set_config 1&lt;br /&gt;
#ifconfig ue0 link 00:1f:11:01:71:62 # uncomment if moko reports: usb0: duplicate address detected!&lt;br /&gt;
ifconfig ue0 192.168.0.200/24`;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally restart the devd daemon with: &lt;br /&gt;
&amp;lt;pre&amp;gt;# service devd restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you now plug the FreeRunner into the USB port the cdce0 interface gets created and the IP address will be assigned. &lt;br /&gt;
&lt;br /&gt;
==== [[Routing]] ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 _______________       _______________       _______________&lt;br /&gt;
|               |     |               |     |               |&lt;br /&gt;
| Router        |     | Workstation   |     | Freerunner    |&lt;br /&gt;
|               |_____|               |_____|               |&lt;br /&gt;
| 192.168.1.1   |     | 192.168.1.2   |     | 192.168.0.202 |&lt;br /&gt;
|               |     | 192.168.0.200 |     |               |&lt;br /&gt;
|_______________|     |_______________|     |_______________|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable on your FreeBSD workstation ip forwarding from one interface to another:&lt;br /&gt;
&amp;lt;pre&amp;gt;# sysctl net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For persistent forwarding enable gateway inside&lt;br /&gt;
&lt;br /&gt;
/etc/rc.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;gateway_enable=&amp;quot;YES&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
or the appropriate sysctl variable inside &lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;net.inet.ip.forwarding=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a route inside your router.&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -net 192.168.0.0/24 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;# route add -host 192.168.0.202 gateway 192.168.1.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have no control over your router use Network Address Translation.&lt;br /&gt;
&lt;br /&gt;
==== [[NAT]] ====&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2010-01-21T17:30:35Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* SHR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
                           &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/UBIFS</id>
		<title>UBIFS</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/UBIFS"/>
				<updated>2010-01-20T01:08:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* UBIFS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== With kernel 2.6.32 ==&lt;br /&gt;
&lt;br /&gt;
1) booting 2.6.32 kernel on uSD&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/&lt;br /&gt;
&lt;br /&gt;
download uImage to /boot &lt;br /&gt;
&lt;br /&gt;
download modules and untar it to /&lt;br /&gt;
&lt;br /&gt;
update uImage link in /boot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) flash image&lt;br /&gt;
&lt;br /&gt;
flash_eraseall /dev/mtd6&lt;br /&gt;
&lt;br /&gt;
nandwrite -p /dev/mtd6 shr-full-eglibc-ipk--20100105-om-gta02.rootfs.ubi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) then test if it works &lt;br /&gt;
&lt;br /&gt;
ubiattach /dev/ubi_ctrl -O 2048 -m 6&lt;br /&gt;
&lt;br /&gt;
mount -t ubifs ubi0:om-gta02-rootfs /media/om&lt;br /&gt;
&lt;br /&gt;
ls /media/om&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) update Qi with dfu-util&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/shr-unstable/images/om-gta02/ &lt;br /&gt;
&lt;br /&gt;
qi-s3c* expects jffs2 as rootfs&lt;br /&gt;
&lt;br /&gt;
qi-ubi-s3c* expects ubifs as rootfs (with rootfs name om-gta02-rootfs which corresponds to name in ubinized image)&lt;br /&gt;
&lt;br /&gt;
it is now in OE repository as qi_git.bb and qi-ubi_git.bb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) flash 2.6.32 also to NAND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) boot it, test it, play with it&lt;br /&gt;
&lt;br /&gt;
(Written by Martin JaMa Jansa [http://www.mail-archive.com/community@lists.openmoko.org/msg56825.html])&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
How to test:&lt;br /&gt;
Please run 'bonnie\+\+ -u 0:0 -s 32 -m 16 -r 16' on a fresh filesystem. bonnie++ is now in shr-unstable feeds.&lt;br /&gt;
&lt;br /&gt;
=== [http://en.wikipedia.org/wiki/UBIFS UBIFS] ===&lt;br /&gt;
max_posedon provided some bonnie++ results using kernel 2.6.29&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ubifs ===       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1531  78  7594  73  4318  76  2195  98 42904  99  2805  87&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   887  94  2802  99   859  98   914  97 18084  99   659  98&lt;br /&gt;
localhost,32M,1531,78,7594,73,4318,76,2195,98,42904,99,2804.8,87,16,887,94,2802,99,859,98,914,97,18084,99,659,98&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://build.shr-project.org/shr-unstable/images/om-gta02/qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu qi-ubi] booting [http://build.shr-project.org/shr-unstable/images/om-gta02/uImage-2.6.29-oe11+gitr119862+a15608f241a40b41fed5bffe511355c2067c4e88-r7-om-gta02.bin 2.6.29-oe11] with [http://build.shr-project.org/shr-unstable/images/om-gta02/shr-lite-eglibc-ipk--20100115-om-gta02.rootfs.ubi shr-lite-rootfs.ubi] (parameters as indicated above, boot to desktop in 90sec):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M  1416  69  6874  67  4271  54  2126  97 42582  98  3129  93&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   936  97  2525  97   853  95   926  96 17800  98   638  95&lt;br /&gt;
16,32M,1416,69,6874,67,4271,54,2126,97,42582,98,3128.9,93,16,936,97,2525,97,853,95,926,96,17800,98,638,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://build.shr-project.org/shr-unstable/images/om-gta02/qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu qi-ubi] booting [http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/uImage-2.6.31-oe1+gitr157549+dd32737aa524e09c1d141a0e735dd58674552244-r6-om-gta02.bin 2.6.31-oe1] with [http://build.shr-project.org/shr-unstable/images/om-gta02/shr-lite-eglibc-ipk--20100115-om-gta02.rootfs.ubi shr-lite-rootfs.ubi] (parameters as indicated above, boot to desktop in 51sec):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M  2046  86 21393  21  8687  36  2231  94 52556 100  5118  99&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16  1924  94 12296  99  1966  96  1888  93 +++++ +++  1492  95&lt;br /&gt;
16,32M,2046,86,21393,21,8687,36,2231,94,52556,100,5117.9,99,16,1924,94,12296,99,1966,96,1888,93,+++++,+++,1492,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[JFFS2]] ===&lt;br /&gt;
Latest 2.6.29-andy-tracking with jffs2 and SHR-testing (by  Dima Kogan[http://www.mail-archive.com/shr-user@lists.shr-project.org/msg02761.html], with unknown parameters)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
om-gta02       300M   844  96  1552  92  1550  94  1508  96  4252  92 462.4  94&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   174  68 17360  99   275  92   208  80 18970  99   236  79&lt;br /&gt;
om-gta02,300M,844,96,1552,92,1550,94,1508,96,4252,92,462.4,94,16,174,68,17360,99,275,92,208,80,18970,99,236,79&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kernel 2.6.32, parameters as indicated above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M   614  97  1802  96  1776  97  1155  97 33702  98  1282  97&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   197  96 +++++ +++   209  95   196  95 +++++ +++   207  95&lt;br /&gt;
16,32M,614,97,1802,96,1776,97,1155,97,33702,98,1282.2,97,16,197,96,+++++,+++,209,95,196,95,+++++,+++,207,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comparsion with ext on uSD ===&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext3 ext3], async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext3, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1122  69  1911  40  2288  28  1832  82 43012  99  2923  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   111  96 18460  95  1315  85   111  95 20824  99   258  75&lt;br /&gt;
localhost,32M,1122,69,1911,40,2288,28,1832,82,43012,99,2923.0,98,16,111,96,18460,95,1315,85,111,95,20824,99,258,75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext2 ext2], sync ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, sync ===  ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M    70   5   122   3   970  11  2196  98 42969  99  56.1   1&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16    18  12 17609  89    14   2    18  12 20165  98     6   1&lt;br /&gt;
localhost,32M,70,5,122,3,970,11,2196,98,42969,99,56.1,1,16,18,12,17609,89,14,2,18,12,20165,98,6,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ext2, async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1319  70  2637  29  1997  16  1904  86 42504  99  3151  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   166  95 19707  98  2588  97   170  96 20644  99   321  63&lt;br /&gt;
localhost,32M,1319,70,2637,29,1997,16,1904,86,42504,99,3151.4,98,16,166,95,19707,98,2588,97,170,96,20644,99,321,63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Status ==&lt;br /&gt;
=== 11.1.2010 ===&lt;br /&gt;
There are some issues for now, because kernel 2.6.32 isn't really ready yet:&lt;br /&gt;
GSM doesn't work&lt;br /&gt;
WSOD (White screen of death) could/will come up..&lt;br /&gt;
&lt;br /&gt;
It's also possible to start and use the system with the last shr-kernel, but theres the ubifs-module unstable (but gsm works, wsod not seen there)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing SHR]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/UBIFS</id>
		<title>UBIFS</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/UBIFS"/>
				<updated>2010-01-19T23:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* UBIFS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== With kernel 2.6.32 ==&lt;br /&gt;
&lt;br /&gt;
1) booting 2.6.32 kernel on uSD&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/&lt;br /&gt;
&lt;br /&gt;
download uImage to /boot &lt;br /&gt;
&lt;br /&gt;
download modules and untar it to /&lt;br /&gt;
&lt;br /&gt;
update uImage link in /boot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) flash image&lt;br /&gt;
&lt;br /&gt;
flash_eraseall /dev/mtd6&lt;br /&gt;
&lt;br /&gt;
nandwrite -p /dev/mtd6 shr-full-eglibc-ipk--20100105-om-gta02.rootfs.ubi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) then test if it works &lt;br /&gt;
&lt;br /&gt;
ubiattach /dev/ubi_ctrl -O 2048 -m 6&lt;br /&gt;
&lt;br /&gt;
mount -t ubifs ubi0:om-gta02-rootfs /media/om&lt;br /&gt;
&lt;br /&gt;
ls /media/om&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) update Qi with dfu-util&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/shr-unstable/images/om-gta02/ &lt;br /&gt;
&lt;br /&gt;
qi-s3c* expects jffs2 as rootfs&lt;br /&gt;
&lt;br /&gt;
qi-ubi-s3c* expects ubifs as rootfs (with rootfs name om-gta02-rootfs which corresponds to name in ubinized image)&lt;br /&gt;
&lt;br /&gt;
it is now in OE repository as qi_git.bb and qi-ubi_git.bb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) flash 2.6.32 also to NAND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) boot it, test it, play with it&lt;br /&gt;
&lt;br /&gt;
(Written by Martin JaMa Jansa [http://www.mail-archive.com/community@lists.openmoko.org/msg56825.html])&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
How to test:&lt;br /&gt;
Please run 'bonnie\+\+ -u 0:0 -s 32 -m 16 -r 16' on a fresh filesystem. bonnie++ is now in shr-unstable feeds.&lt;br /&gt;
&lt;br /&gt;
=== [http://en.wikipedia.org/wiki/UBIFS UBIFS] ===&lt;br /&gt;
max_posedon provided some bonnie++ results using kernel 2.6.29&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ubifs ===       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1531  78  7594  73  4318  76  2195  98 42904  99  2805  87&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   887  94  2802  99   859  98   914  97 18084  99   659  98&lt;br /&gt;
localhost,32M,1531,78,7594,73,4318,76,2195,98,42904,99,2804.8,87,16,887,94,2802,99,859,98,914,97,18084,99,659,98&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://build.shr-project.org/shr-unstable/images/om-gta02/qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu qi-ubi] booting [http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/uImage-2.6.31-oe1+gitr157549+dd32737aa524e09c1d141a0e735dd58674552244-r6-om-gta02.bin 2.6.31-oe1] with [http://build.shr-project.org/shr-unstable/images/om-gta02/shr-lite-eglibc-ipk--20100115-om-gta02.rootfs.ubi shr-lite-rootfs.ubi] (parameters as indicated above, boot to desktop in 51sec):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M  2046  86 21393  21  8687  36  2231  94 52556 100  5118  99&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16  1924  94 12296  99  1966  96  1888  93 +++++ +++  1492  95&lt;br /&gt;
16,32M,2046,86,21393,21,8687,36,2231,94,52556,100,5117.9,99,16,1924,94,12296,99,1966,96,1888,93,+++++,+++,1492,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[JFFS2]] ===&lt;br /&gt;
Latest 2.6.29-andy-tracking with jffs2 and SHR-testing (by  Dima Kogan[http://www.mail-archive.com/shr-user@lists.shr-project.org/msg02761.html], with unknown parameters)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
om-gta02       300M   844  96  1552  92  1550  94  1508  96  4252  92 462.4  94&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   174  68 17360  99   275  92   208  80 18970  99   236  79&lt;br /&gt;
om-gta02,300M,844,96,1552,92,1550,94,1508,96,4252,92,462.4,94,16,174,68,17360,99,275,92,208,80,18970,99,236,79&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kernel 2.6.32, parameters as indicated above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M   614  97  1802  96  1776  97  1155  97 33702  98  1282  97&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   197  96 +++++ +++   209  95   196  95 +++++ +++   207  95&lt;br /&gt;
16,32M,614,97,1802,96,1776,97,1155,97,33702,98,1282.2,97,16,197,96,+++++,+++,209,95,196,95,+++++,+++,207,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comparsion with ext on uSD ===&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext3 ext3], async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext3, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1122  69  1911  40  2288  28  1832  82 43012  99  2923  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   111  96 18460  95  1315  85   111  95 20824  99   258  75&lt;br /&gt;
localhost,32M,1122,69,1911,40,2288,28,1832,82,43012,99,2923.0,98,16,111,96,18460,95,1315,85,111,95,20824,99,258,75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext2 ext2], sync ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, sync ===  ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M    70   5   122   3   970  11  2196  98 42969  99  56.1   1&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16    18  12 17609  89    14   2    18  12 20165  98     6   1&lt;br /&gt;
localhost,32M,70,5,122,3,970,11,2196,98,42969,99,56.1,1,16,18,12,17609,89,14,2,18,12,20165,98,6,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ext2, async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1319  70  2637  29  1997  16  1904  86 42504  99  3151  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   166  95 19707  98  2588  97   170  96 20644  99   321  63&lt;br /&gt;
localhost,32M,1319,70,2637,29,1997,16,1904,86,42504,99,3151.4,98,16,166,95,19707,98,2588,97,170,96,20644,99,321,63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Status ==&lt;br /&gt;
=== 11.1.2010 ===&lt;br /&gt;
There are some issues for now, because kernel 2.6.32 isn't really ready yet:&lt;br /&gt;
GSM doesn't work&lt;br /&gt;
WSOD (White screen of death) could/will come up..&lt;br /&gt;
&lt;br /&gt;
It's also possible to start and use the system with the last shr-kernel, but theres the ubifs-module unstable (but gsm works, wsod not seen there)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing SHR]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/UBIFS</id>
		<title>UBIFS</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/UBIFS"/>
				<updated>2010-01-19T22:57:50Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* UBIFS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== With kernel 2.6.32 ==&lt;br /&gt;
&lt;br /&gt;
1) booting 2.6.32 kernel on uSD&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/&lt;br /&gt;
&lt;br /&gt;
download uImage to /boot &lt;br /&gt;
&lt;br /&gt;
download modules and untar it to /&lt;br /&gt;
&lt;br /&gt;
update uImage link in /boot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) flash image&lt;br /&gt;
&lt;br /&gt;
flash_eraseall /dev/mtd6&lt;br /&gt;
&lt;br /&gt;
nandwrite -p /dev/mtd6 shr-full-eglibc-ipk--20100105-om-gta02.rootfs.ubi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) then test if it works &lt;br /&gt;
&lt;br /&gt;
ubiattach /dev/ubi_ctrl -O 2048 -m 6&lt;br /&gt;
&lt;br /&gt;
mount -t ubifs ubi0:om-gta02-rootfs /media/om&lt;br /&gt;
&lt;br /&gt;
ls /media/om&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) update Qi with dfu-util&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/shr-unstable/images/om-gta02/ &lt;br /&gt;
&lt;br /&gt;
qi-s3c* expects jffs2 as rootfs&lt;br /&gt;
&lt;br /&gt;
qi-ubi-s3c* expects ubifs as rootfs (with rootfs name om-gta02-rootfs which corresponds to name in ubinized image)&lt;br /&gt;
&lt;br /&gt;
it is now in OE repository as qi_git.bb and qi-ubi_git.bb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) flash 2.6.32 also to NAND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) boot it, test it, play with it&lt;br /&gt;
&lt;br /&gt;
(Written by Martin JaMa Jansa [http://www.mail-archive.com/community@lists.openmoko.org/msg56825.html])&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
How to test:&lt;br /&gt;
Please run 'bonnie\+\+ -u 0:0 -s 32 -m 16 -r 16' on a fresh filesystem. bonnie++ is now in shr-unstable feeds.&lt;br /&gt;
&lt;br /&gt;
=== [http://en.wikipedia.org/wiki/UBIFS UBIFS] ===&lt;br /&gt;
max_posedon provided some bonnie++ results using kernel 2.6.29&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ubifs ===       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1531  78  7594  73  4318  76  2195  98 42904  99  2805  87&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   887  94  2802  99   859  98   914  97 18084  99   659  98&lt;br /&gt;
localhost,32M,1531,78,7594,73,4318,76,2195,98,42904,99,2804.8,87,16,887,94,2802,99,859,98,914,97,18084,99,659,98&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://build.shr-project.org/shr-unstable/images/om-gta02/qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu qi-ubi] booting [http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/uImage-2.6.31-oe1+gitr157549+dd32737aa524e09c1d141a0e735dd58674552244-r6-om-gta02.bin 2.6.31-oe1] with [http://build.shr-project.org/shr-unstable/images/om-gta02/shr-lite-eglibc-ipk--20100115-om-gta02.rootfs.ubi rootfs.ubi] (parameters as indicated above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M  2046  86 21393  21  8687  36  2231  94 52556 100  5118  99&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16  1924  94 12296  99  1966  96  1888  93 +++++ +++  1492  95&lt;br /&gt;
16,32M,2046,86,21393,21,8687,36,2231,94,52556,100,5117.9,99,16,1924,94,12296,99,1966,96,1888,93,+++++,+++,1492,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[JFFS2]] ===&lt;br /&gt;
Latest 2.6.29-andy-tracking with jffs2 and SHR-testing (by  Dima Kogan[http://www.mail-archive.com/shr-user@lists.shr-project.org/msg02761.html], with unknown parameters)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
om-gta02       300M   844  96  1552  92  1550  94  1508  96  4252  92 462.4  94&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   174  68 17360  99   275  92   208  80 18970  99   236  79&lt;br /&gt;
om-gta02,300M,844,96,1552,92,1550,94,1508,96,4252,92,462.4,94,16,174,68,17360,99,275,92,208,80,18970,99,236,79&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kernel 2.6.32, parameters as indicated above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M   614  97  1802  96  1776  97  1155  97 33702  98  1282  97&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   197  96 +++++ +++   209  95   196  95 +++++ +++   207  95&lt;br /&gt;
16,32M,614,97,1802,96,1776,97,1155,97,33702,98,1282.2,97,16,197,96,+++++,+++,209,95,196,95,+++++,+++,207,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comparsion with ext on uSD ===&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext3 ext3], async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext3, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1122  69  1911  40  2288  28  1832  82 43012  99  2923  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   111  96 18460  95  1315  85   111  95 20824  99   258  75&lt;br /&gt;
localhost,32M,1122,69,1911,40,2288,28,1832,82,43012,99,2923.0,98,16,111,96,18460,95,1315,85,111,95,20824,99,258,75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext2 ext2], sync ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, sync ===  ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M    70   5   122   3   970  11  2196  98 42969  99  56.1   1&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16    18  12 17609  89    14   2    18  12 20165  98     6   1&lt;br /&gt;
localhost,32M,70,5,122,3,970,11,2196,98,42969,99,56.1,1,16,18,12,17609,89,14,2,18,12,20165,98,6,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ext2, async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1319  70  2637  29  1997  16  1904  86 42504  99  3151  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   166  95 19707  98  2588  97   170  96 20644  99   321  63&lt;br /&gt;
localhost,32M,1319,70,2637,29,1997,16,1904,86,42504,99,3151.4,98,16,166,95,19707,98,2588,97,170,96,20644,99,321,63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Status ==&lt;br /&gt;
=== 11.1.2010 ===&lt;br /&gt;
There are some issues for now, because kernel 2.6.32 isn't really ready yet:&lt;br /&gt;
GSM doesn't work&lt;br /&gt;
WSOD (White screen of death) could/will come up..&lt;br /&gt;
&lt;br /&gt;
It's also possible to start and use the system with the last shr-kernel, but theres the ubifs-module unstable (but gsm works, wsod not seen there)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing SHR]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/UBIFS</id>
		<title>UBIFS</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/UBIFS"/>
				<updated>2010-01-19T22:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* UBIFS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== With kernel 2.6.32 ==&lt;br /&gt;
&lt;br /&gt;
1) booting 2.6.32 kernel on uSD&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/&lt;br /&gt;
&lt;br /&gt;
download uImage to /boot &lt;br /&gt;
&lt;br /&gt;
download modules and untar it to /&lt;br /&gt;
&lt;br /&gt;
update uImage link in /boot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) flash image&lt;br /&gt;
&lt;br /&gt;
flash_eraseall /dev/mtd6&lt;br /&gt;
&lt;br /&gt;
nandwrite -p /dev/mtd6 shr-full-eglibc-ipk--20100105-om-gta02.rootfs.ubi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) then test if it works &lt;br /&gt;
&lt;br /&gt;
ubiattach /dev/ubi_ctrl -O 2048 -m 6&lt;br /&gt;
&lt;br /&gt;
mount -t ubifs ubi0:om-gta02-rootfs /media/om&lt;br /&gt;
&lt;br /&gt;
ls /media/om&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) update Qi with dfu-util&lt;br /&gt;
&lt;br /&gt;
http://build.shr-project.org/shr-unstable/images/om-gta02/ &lt;br /&gt;
&lt;br /&gt;
qi-s3c* expects jffs2 as rootfs&lt;br /&gt;
&lt;br /&gt;
qi-ubi-s3c* expects ubifs as rootfs (with rootfs name om-gta02-rootfs which corresponds to name in ubinized image)&lt;br /&gt;
&lt;br /&gt;
it is now in OE repository as qi_git.bb and qi-ubi_git.bb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) flash 2.6.32 also to NAND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) boot it, test it, play with it&lt;br /&gt;
&lt;br /&gt;
(Written by Martin JaMa Jansa [http://www.mail-archive.com/community@lists.openmoko.org/msg56825.html])&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
How to test:&lt;br /&gt;
Please run 'bonnie\+\+ -u 0:0 -s 32 -m 16 -r 16' on a fresh filesystem. bonnie++ is now in shr-unstable feeds.&lt;br /&gt;
&lt;br /&gt;
=== [http://en.wikipedia.org/wiki/UBIFS UBIFS] ===&lt;br /&gt;
max_posedon provided some bonnie++ results using kernel 2.6.29&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ubifs ===       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1531  78  7594  73  4318  76  2195  98 42904  99  2805  87&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   887  94  2802  99   859  98   914  97 18084  99   659  98&lt;br /&gt;
localhost,32M,1531,78,7594,73,4318,76,2195,98,42904,99,2804.8,87,16,887,94,2802,99,859,98,914,97,18084,99,659,98&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://build.shr-project.org/shr-unstable/images/om-gta02/qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu qi-ubi] booting [http://build.shr-project.org/tests/mrmoku/2.6.32/images/om-gta02/uImage-2.6.31-oe1+gitr157549+dd32737aa524e09c1d141a0e735dd58674552244-r6-om-gta02.bin 2.6.31-oe1] with [http://build.shr-project.org/shr-unstable/images/om-gta02/shr-lite-eglibc-ipk--20100115-om-gta02.rootfs.ubi rootfs.ubi]. (reported by [[User:Nukama|Nukama]])&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M  2046  86 21393  21  8687  36  2231  94 52556 100  5118  99&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16  1924  94 12296  99  1966  96  1888  93 +++++ +++  1492  95&lt;br /&gt;
16,32M,2046,86,21393,21,8687,36,2231,94,52556,100,5117.9,99,16,1924,94,12296,99,1966,96,1888,93,+++++,+++,1492,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[JFFS2]] ===&lt;br /&gt;
Latest 2.6.29-andy-tracking with jffs2 and SHR-testing (by  Dima Kogan[http://www.mail-archive.com/shr-user@lists.shr-project.org/msg02761.html], with unknown parameters)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
om-gta02       300M   844  96  1552  92  1550  94  1508  96  4252  92 462.4  94&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   174  68 17360  99   275  92   208  80 18970  99   236  79&lt;br /&gt;
om-gta02,300M,844,96,1552,92,1550,94,1508,96,4252,92,462.4,94,16,174,68,17360,99,275,92,208,80,18970,99,236,79&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kernel 2.6.32, parameters as indicated above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
16              32M   614  97  1802  96  1776  97  1155  97 33702  98  1282  97&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   197  96 +++++ +++   209  95   196  95 +++++ +++   207  95&lt;br /&gt;
16,32M,614,97,1802,96,1776,97,1155,97,33702,98,1282.2,97,16,197,96,+++++,+++,209,95,196,95,+++++,+++,207,95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comparsion with ext on uSD ===&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext3 ext3], async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext3, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1122  69  1911  40  2288  28  1832  82 43012  99  2923  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   111  96 18460  95  1315  85   111  95 20824  99   258  75&lt;br /&gt;
localhost,32M,1122,69,1911,40,2288,28,1832,82,43012,99,2923.0,98,16,111,96,18460,95,1315,85,111,95,20824,99,258,75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [http://en.wikipedia.org/wiki/Ext2 ext2], sync ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, sync ===  ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M    70   5   122   3   970  11  2196  98 42969  99  56.1   1&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16    18  12 17609  89    14   2    18  12 20165  98     6   1&lt;br /&gt;
localhost,32M,70,5,122,3,970,11,2196,98,42969,99,56.1,1,16,18,12,17609,89,14,2,18,12,20165,98,6,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ext2, async ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== ext2, async === ------Sequential Output------ --Sequential Input- --Random-&lt;br /&gt;
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--&lt;br /&gt;
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP&lt;br /&gt;
localhost       32M  1319  70  2637  29  1997  16  1904  86 42504  99  3151  98&lt;br /&gt;
                    ------Sequential Create------ --------Random Create--------&lt;br /&gt;
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--&lt;br /&gt;
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP&lt;br /&gt;
                 16   166  95 19707  98  2588  97   170  96 20644  99   321  63&lt;br /&gt;
localhost,32M,1319,70,2637,29,1997,16,1904,86,42504,99,3151.4,98,16,166,95,19707,98,2588,97,170,96,20644,99,321,63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Status ==&lt;br /&gt;
=== 11.1.2010 ===&lt;br /&gt;
There are some issues for now, because kernel 2.6.32 isn't really ready yet:&lt;br /&gt;
GSM doesn't work&lt;br /&gt;
WSOD (White screen of death) could/will come up..&lt;br /&gt;
&lt;br /&gt;
It's also possible to start and use the system with the last shr-kernel, but theres the ubifs-module unstable (but gsm works, wsod not seen there)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing SHR]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2010-01-19T16:06:18Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
*No SIM auth dialog (also in unstable jffs2)&lt;br /&gt;
gsm_request_on_start = false&lt;br /&gt;
&lt;br /&gt;
maybe restart phonefsod manually? (worked in jffs2-unstable@2.6.2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
&lt;br /&gt;
dim_idle_prelock_percent = 3           &lt;br /&gt;
                             &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...       &lt;br /&gt;
                                      &lt;br /&gt;
and don't try to suspend your device, sometimes an application crashes and the WSOD reappears.&lt;br /&gt;
&lt;br /&gt;
maybe related to [http://shr-project.org/trac/ticket/167 #167]&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2010-01-19T15:59:44Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
*No SIM auth dialog (also in unstable jffs2)&lt;br /&gt;
gsm_request_on_start = false&lt;br /&gt;
&lt;br /&gt;
maybe restart phonefsod manually? (worked in jffs2-unstable@2.6.2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
&lt;br /&gt;
dim_idle_prelock_percent = 3           &lt;br /&gt;
                             &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...       &lt;br /&gt;
                                      &lt;br /&gt;
and don't try to suspend your device&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2010-01-19T15:58:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software related =&lt;br /&gt;
&lt;br /&gt;
== [[Distributions]] ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[SHR]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ubi - ubinized for flashing with [[NeoTool]]&lt;br /&gt;
&lt;br /&gt;
ubifs - [[UBIFS]] &lt;br /&gt;
&lt;br /&gt;
==== Problems  ====&lt;br /&gt;
with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu&lt;br /&gt;
&lt;br /&gt;
*No SIM auth dialog (also in unstable jffs2)&lt;br /&gt;
gsm_request_on_start = false&lt;br /&gt;
&lt;br /&gt;
maybe restart phonefsod manually? (worked in jffs2-unstable@2.6.2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears &lt;br /&gt;
&lt;br /&gt;
Workaround: edit /etc/phonefsod.conf&lt;br /&gt;
dim_idle_prelock_percent = 3                                        &lt;br /&gt;
auto_suspend = never   /maybe normal would work also...                                             &lt;br /&gt;
and don't try to suspend your device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== USB-Networking ==&lt;br /&gt;
&lt;br /&gt;
=== [[OpenWrt]] ===&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.202&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.200&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without modifying the /etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.10 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enscribi on OM2009 ===&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
http://trac.shr-project.org/trac/ticket/868&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other tricks ==&lt;br /&gt;
=== A-GPS ===&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware related =&lt;br /&gt;
== Bicycle ==&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2010-01-14T21:09:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Packages ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
intone&lt;br /&gt;
intone-video&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Intone-video</id>
		<title>Talk:Intone-video</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Intone-video"/>
				<updated>2010-01-14T17:50:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: New page: === Bugs ===  Intone-video is started with intonevideo, so change the corresponding value in /usr/share/applications/intone-video.desktop (valid for shr-unstable20100114.   intonevideo sta...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
Intone-video is started with intonevideo, so change the corresponding value in /usr/share/applications/intone-video.desktop (valid for shr-unstable20100114.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
intonevideo starts and hangs after a while (on shr-unstable20100114) with following output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CRI: e_dbus.c:152 e_dbus_connection_new() eina_log_print() unknown domain -1, original message format 'Connected! Name: %s'&lt;br /&gt;
CRI: e_dbus.c:325 cb_watch_add() eina_log_print() unknown domain -1, original message format 'cb_watch_add'&lt;br /&gt;
CRI: e_dbus.c:135 e_dbus_connection_data_watch_add() eina_log_print() unknown domain -1, original message format 'watch add (enabled: %d)'&lt;br /&gt;
CRI: e_dbus.c:325 cb_watch_add() eina_log_print() unknown domain -1, original message format 'cb_watch_add'&lt;br /&gt;
CRI: e_dbus.c:135 e_dbus_connection_data_watch_add() eina_log_print() unknown domain -1, original message format 'watch add (enabled: %d)'&lt;br /&gt;
CRI: e_dbus.c:86 e_dbus_fd_handler_add() eina_log_print() unknown domain -1, original message format 'fd handler add (%d)'&lt;br /&gt;
CRI: e_dbus.c:209 cb_dispatch_status() eina_log_print() unknown domain -1, original message format 'dispatch status: %d!'&lt;br /&gt;
CRI: e_dbus.c:265 cb_timeout_add() eina_log_print() unknown domain -1, original message format 'timeout add!'&lt;br /&gt;
inwin 0xe00006&lt;br /&gt;
CRI: e_dbus.c:57 e_dbus_fd_handler() eina_log_print() unknown domain -1, original message format 'fd handler (%ld)!'&lt;br /&gt;
CRI: e_dbus.c:283 cb_timeout_del() eina_log_print() unknown domain -1, original message format 'timeout del!'&lt;br /&gt;
CRI: e_dbus.c:196 cb_main_wakeup() eina_log_print() unknown domain -1, original message format 'wakeup main!'&lt;br /&gt;
CRI: e_dbus.c:201 cb_main_wakeup() eina_log_print() unknown domain -1, original message format 'already idling'&lt;br /&gt;
CRI: e_dbus.c:426 e_dbus_idler() eina_log_print() unknown domain -1, original message format 'dispatch!'&lt;br /&gt;
CRI: e_dbus.c:372 e_dbus_filter() eina_log_print() unknown domain -1, original message format '-----------------'&lt;br /&gt;
CRI: e_dbus.c:373 e_dbus_filter() eina_log_print() unknown domain -1, original message format 'Message!'&lt;br /&gt;
CRI: e_dbus.c:375 e_dbus_filter() eina_log_print() unknown domain -1, original message format 'type: %s'&lt;br /&gt;
CRI: e_dbus.c:376 e_dbus_filter() eina_log_print() unknown domain -1, original message format 'path: %s'&lt;br /&gt;
CRI: e_dbus.c:377 e_dbus_filter() eina_log_print() unknown domain -1, original message format 'interface: %s'&lt;br /&gt;
CRI: e_dbus.c:378 e_dbus_filter() eina_log_print() unknown domain -1, original message format 'member: %s'&lt;br /&gt;
CRI: e_dbus.c:379 e_dbus_filter() eina_log_print() unknown domain -1, original message format 'sender: %s'&lt;br /&gt;
CRI: e_dbus.c:426 e_dbus_idler() eina_log_print() unknown domain -1, original message format 'dispatch!'&lt;br /&gt;
CRI: e_dbus.c:253 e_dbus_timeout_data_free() eina_log_print() unknown domain -1, original message format 'e_dbus_timeout_data_free'&lt;br /&gt;
CRI: e_dbus.c:209 cb_dispatch_status() eina_log_print() unknown domain -1, original message format 'dispatch status: %d!'&lt;br /&gt;
status = [ ErrorOldFrame OldFrameIndex ErrorThisFrame ThisFrameIndex ]&lt;br /&gt;
ERR:Ecore ecore.c:159 _ecore_magic_fail() &lt;br /&gt;
*** ECORE ERROR: Ecore Magic Check Failed!!!&lt;br /&gt;
*** IN FUNCTION: ecore_timer_del()&lt;br /&gt;
ERR:Ecore ecore.c:169 _ecore_magic_fail()   Input handle is wrong type&lt;br /&gt;
    Expected: f7d713f4 - Ecore_Timer (Timer)&lt;br /&gt;
    Supplied: 00000000 - &amp;lt;UNKNOWN&amp;gt;&lt;br /&gt;
ERR:Ecore ecore.c:172 _ecore_magic_fail() *** NAUGHTY PROGRAMMER!!!&lt;br /&gt;
*** SPANK SPANK SPANK!!!&lt;br /&gt;
*** Now go fix your code. Tut tut tut!&lt;br /&gt;
ERR:Ecore ecore.c:159 _ecore_magic_fail() &lt;br /&gt;
*** ECORE ERROR: Ecore Magic Check Failed!!!&lt;br /&gt;
*** IN FUNCTION: ecore_timer_thaw()&lt;br /&gt;
ERR:Ecore ecore.c:169 _ecore_magic_fail()   Input handle is wrong type&lt;br /&gt;
    Expected: f7d713f4 - Ecore_Timer (Timer)&lt;br /&gt;
    Supplied: 00000000 - &amp;lt;UNKNOWN&amp;gt;&lt;br /&gt;
ERR:Ecore ecore.c:172 _ecore_magic_fail() *** NAUGHTY PROGRAMMER!!!&lt;br /&gt;
*** SPANK SPANK SPANK!!!&lt;br /&gt;
*** Now go fix your code. Tut tut tut!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2010-01-14T15:32:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Packages ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ffalarms&lt;br /&gt;
dates&lt;br /&gt;
openssh-sftp-server&lt;br /&gt;
tangogps&lt;br /&gt;
navit&lt;br /&gt;
zinnia&lt;br /&gt;
zinnia-tomoe-zh&lt;br /&gt;
enscribi&lt;br /&gt;
ttf-arphic-uming&lt;br /&gt;
elementary-sms?&lt;br /&gt;
elementary-alarm?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2010-01-13T00:14:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* OpenWrt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while True:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if l == &amp;quot;&amp;quot;:&lt;br /&gt;
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-11-22T10:21:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Enscribi on OM2009 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maybe link the old libs against the even older libs. But seems not to work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
cp /location-of-old-libs-for-enscribi/* .&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-11-22T10:20:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Japanese and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g. ttf-arphic-uming)&lt;br /&gt;
 opkg install task-fonts-truetype-chinese (on SHR)&lt;br /&gt;
 opkg install ttf-sazanami-gothic&lt;br /&gt;
 opkg install ttf-arphic-uming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19 and SHR-unstable 6-Sept-2009 16:34)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On newer SHR build it seems to be broken with the pre-svn-04 version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-11-21T23:55:33Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Japanese and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g. ttf-arphic-uming)&lt;br /&gt;
 opkg install task-fonts-truetype-chinese (on SHR)&lt;br /&gt;
 opkg install ttf-sazanami-gothic&lt;br /&gt;
 opkg install ttf-arphic-uming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19 and SHR-unstable 6-Sept-2009 16:34)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On newer SHR builds link the pre-svn-04 versions against pre-svn-01. Seems to be broken with the pre-svn-04 version.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
in /usr/lib&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-pre-svn-04.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-pre-svn-04.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-pre-svn-04.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-pre-svn-04.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-pre-svn-04.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-pre-svn-04.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-pre-svn-04.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-pre-svn-04.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-pre-svn-04.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-pre-svn-04.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-pre-svn-04.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-11-21T23:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Japanese and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g. ttf-arphic-uming)&lt;br /&gt;
 opkg install task-fonts-truetype-chinese (on SHR)&lt;br /&gt;
 opkg install ttf-sazanami-gothic&lt;br /&gt;
 opkg install ttf-arphic-uming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19 and SHR-unstable 6-Sept-2009 16:34)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On newer SHR builds link the pre-svn-04 versions against pre-svn-01&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
in /usr/lib&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-pre-svn-04.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-pre-svn-04.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-pre-svn-04.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-pre-svn-04.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-pre-svn-04.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-pre-svn-04.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-pre-svn-04.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-pre-svn-04.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-pre-svn-04.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-pre-svn-04.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-pre-svn-04.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Mokonnect</id>
		<title>Talk:Mokonnect</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Mokonnect"/>
				<updated>2009-11-04T21:42:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Feel free to post here questions, or problems, or suggestions, or whatever...&lt;br /&gt;
&lt;br /&gt;
=Bug=&lt;br /&gt;
*Problem: changing password after deleting &amp;quot;Password&amp;quot; in the Wifi menu.&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-11-04T14:05:05Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Japanese and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g. ttf-arphic-uming)&lt;br /&gt;
 opkg install task-fonts-truetype-chinese (on SHR)&lt;br /&gt;
 opkg install ttf-sazanami-gothic&lt;br /&gt;
 opkg install ttf-arphic-uming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19 and SHR-unstable 6-Sept-2009 16:34)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-11-04T14:03:30Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Janpaness and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g. ttf-arphic-uming)&lt;br /&gt;
 opkg install task-fonts-truetype-chinese (on SHR)&lt;br /&gt;
 opkg install ttf-sazanami-gothic&lt;br /&gt;
 opkg install ttf-arphic-uming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19 and SHR-unstable 6-Sep-2009 16:34)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-11-04T13:57:28Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Enscribi on OM2009 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
  opkg install task-fonts-truetype-chinese&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:OpenWrt</id>
		<title>Talk:OpenWrt</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:OpenWrt"/>
				<updated>2009-10-22T12:35:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usability =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Battery runtime ==&lt;br /&gt;
&lt;br /&gt;
With suspend disabled and no running applications the battery on my openmoko lasted for at least 16 hours and 30 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
&lt;br /&gt;
Build packages on your own: make package/&amp;lt;package_name&amp;gt;/{clean,compile,install} V=99&lt;br /&gt;
&lt;br /&gt;
= Bugs =&lt;br /&gt;
&lt;br /&gt;
After depletion of the battery and boot-up with usb-power the gsm didn't work. &lt;br /&gt;
A manual shutdown and restart brings up the gsm again.&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:OpenWrt</id>
		<title>Talk:OpenWrt</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:OpenWrt"/>
				<updated>2009-10-19T15:05:21Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: New page: = Usability =   == Battery runtime ==  With suspend disabled and no running applications the battery on my openmoko lasted for at least 16 hours and 30 minutes.   = Bugs =  After depletion...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Usability =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Battery runtime ==&lt;br /&gt;
&lt;br /&gt;
With suspend disabled and no running applications the battery on my openmoko lasted for at least 16 hours and 30 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bugs =&lt;br /&gt;
&lt;br /&gt;
After depletion of the battery and boot-up with usb-power the gsm didn't work. &lt;br /&gt;
A manual shutdown and restart brings up the gsm again.&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T19:43:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* OpenWrt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful packages:&lt;br /&gt;
 opkg install openssh-sftp-server&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T19:24:29Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* OpenWrt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T19:23:48Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: Undo revision 76888 by Nukama (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.1.11&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.1.1&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T19:23:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: Undo revision 76889 by Nukama (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.1.11&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.1.1&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.11 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.12 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T19:13:57Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Ubuntu 9.10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.1.11&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.1.1&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.11 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.12 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
route add -host 192.168.1.11 dev usb0&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T19:13:00Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Ubuntu 9.10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.1.11&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.1.1&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.1.11 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.1.12 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T19:12:40Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* OpenWrt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.1.11&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.1.1&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/OpenWrt</id>
		<title>OpenWrt</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/OpenWrt"/>
				<updated>2009-10-14T18:30:01Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installing packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|OpenWrt}}&lt;br /&gt;
&lt;br /&gt;
News about OpenWrt on Neo FreeRunner is at [http://nanl.de/blog/].&lt;br /&gt;
&lt;br /&gt;
= Installing pre-built image =&lt;br /&gt;
&lt;br /&gt;
== Installing to [[NAND-flash]] ==&lt;br /&gt;
&lt;br /&gt;
As usual, you need rootfs and kernel (assuming you're using [[Qi]] or [[U-Boot]]) which are available at :&lt;br /&gt;
http://nanl.de/files/openwrt/openmoko/&lt;br /&gt;
&lt;br /&gt;
 wget http://nanl.de/files/openwrt/openmoko/LATEST_openwrt-s3c24xx-2.6-root.jffs2-128k&lt;br /&gt;
 wget http://nanl.de/files/openwrt/openmoko/LATEST_openwrt-s3c24xx-2.6-uImage&lt;br /&gt;
&lt;br /&gt;
 # Neofreerunner flashing:&lt;br /&gt;
 #&lt;br /&gt;
 sudo dfu-util -d [[USB Product IDs|0x1d50:0x5119]] -a rootfs -R -D LATEST_openwrt-s3c24xx-2.6-root.jffs2-128k&lt;br /&gt;
 sudo dfu-util -d [[USB Product IDs|0x1d50:0x5119]] -a kernel -R -D LATEST_openwrt-s3c24xx-2.6-uImage&lt;br /&gt;
 #&lt;br /&gt;
 # The IDs (0x1d50:0x5119) was found by using the command #dfu-util --listdfu-util&lt;br /&gt;
 # and looking for name=&amp;quot;USB Device Firmware Upgrade&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Then boot from flash.&lt;br /&gt;
&lt;br /&gt;
== Installing to SD card via PC and Freerunner ==&lt;br /&gt;
{{note|Not succesful yet (20090728_r16973, [[U-Boot]]), but files seems ok.}}&lt;br /&gt;
&lt;br /&gt;
For booting from SD card fetch this rootfs and the kernel image (same than above mentioned):&lt;br /&gt;
 wget http://nanl.de/files/openwrt/openmoko/LATEST_openwrt-s3c24xx-rootfs.tgz&lt;br /&gt;
 wget http://nanl.de/files/openwrt/openmoko/LATEST_openwrt-s3c24xx-2.6-uImage&lt;br /&gt;
&lt;br /&gt;
[[Booting_from_SD#Prepare_the_SD_card|Prepare your SD, SDHC card for kernel and rootfs partitions]].&lt;br /&gt;
&lt;br /&gt;
Assuming 8MB kernel partition mounted as /mnt/mokokernel and /path is where the file is stored on your PC. Run command from PC:&lt;br /&gt;
&lt;br /&gt;
 scp /path/LATEST_openwrt-s3c24xx-2.6-uImage root@192.168.0.202:/mnt/mokokernel/uImage-GTA02.bin&lt;br /&gt;
&lt;br /&gt;
Assuming rootfs partition mounted as /media/card :&lt;br /&gt;
&lt;br /&gt;
 cat /path/LATEST_openwrt-s3c24xx-rootfs.tgz |ssh root@192.168.0.202 &amp;quot;gunzip -d | tar -C /media/card/ -xf -&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Installing to SD card via PC ==&lt;br /&gt;
{{note|This part assume you use [[Qi]] as bootloader. [[U-Boot]] will not work using this setup  }}&lt;br /&gt;
For booting from SD card fetch this rootfs and the kernel image (same than above mentioned):&lt;br /&gt;
 wget http://nanl.de/files/openwrt/openmoko/LATEST_openwrt-s3c24xx-rootfs.tgz&lt;br /&gt;
 wget http://nanl.de/files/openwrt/openmoko/LATEST_openwrt-s3c24xx-2.6-uImage&lt;br /&gt;
&lt;br /&gt;
Following instructions assume that you are using a SD card reader on host PC.&lt;br /&gt;
* Format SD card using ext2 or ext3.&lt;br /&gt;
 mkfs.ext2 /dev/sdf1&lt;br /&gt;
* Mount this partion &lt;br /&gt;
 mount /dev/sdf1 /mnt/disk&lt;br /&gt;
* Unpack rootfs archive to card.&lt;br /&gt;
 tar xvzf LATEST_openwrt-s3c24xx-rootfs.tgz -C /mnt/disk&lt;br /&gt;
* Copy kernel to card /boot/uImage-GTA02.bin&lt;br /&gt;
 cp LATEST_openwrt-s3c24xx-2.6-uImage /mnt/disk/boot/uImage-GTA02.bin&lt;br /&gt;
* Umount SD card partition&lt;br /&gt;
 umount /mnt/disk&lt;br /&gt;
* Then boot from SD card with your FreeRunner.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
After flashing both images, reboot your phone and depending on what packages were built into the image (if compiled yourself this means the packages you've selected) you might be able to initiate and receive phonecalls with your FreeRunner running OpenWrt :)&lt;br /&gt;
&lt;br /&gt;
'''First start'''&lt;br /&gt;
&lt;br /&gt;
You see nice OpenWrt bootsplash and message &amp;quot;split_squashfs: no squashfs found in neo1973-nand&amp;quot;, but just wait minute or two and X will start. Enlightenment+illume starts. There are xterm installed and qwerty-button for [[on-screen-keyboard]].&lt;br /&gt;
&lt;br /&gt;
You can reach the Freerunner over wlan or [[USB_Networking|usb network]] as usual but Freerunner under OpenWrt have '''192.168.1.1 IP address''' as default.&lt;br /&gt;
&lt;br /&gt;
'''Enable wifi'''&lt;br /&gt;
 echo s3c2440-sdi &amp;gt; /sys/bus/platform/drivers/s3c2440-sdi/unbind&lt;br /&gt;
 echo s3c2440-sdi &amp;gt; /sys/bus/platform/drivers/s3c2440-sdi/bind&lt;br /&gt;
 &lt;br /&gt;
 ifconfig eth0 up&lt;br /&gt;
 iwconfig eth0 essid NAME&lt;br /&gt;
 udhcpc&lt;br /&gt;
&lt;br /&gt;
If your router has ip 192.168.1.1 (which is recommend in usb-networking), use this to stop usb0:&lt;br /&gt;
 ifconfig br-lan down&lt;br /&gt;
Or you can change the address of usb0. Is it in file: ''/etc/config/network''&lt;br /&gt;
&lt;br /&gt;
'''Enable SSH'''&lt;br /&gt;
&lt;br /&gt;
To be able to SSH your phone, you must setup a password. You can use xterm and command 'passwd' or you can use telnet (if you connects over wlan, use proper ip-address):&lt;br /&gt;
&lt;br /&gt;
 $ telnet 192.168.1.1&lt;br /&gt;
 Trying 192.168.1.1...&lt;br /&gt;
 Connected to 192.168.1.1.&lt;br /&gt;
 Escape character is '^]'.&lt;br /&gt;
  === IMPORTANT ============================&lt;br /&gt;
   Use 'passwd' to set your login password&lt;br /&gt;
   this will disable telnet and enable SSH&lt;br /&gt;
  ------------------------------------------&lt;br /&gt;
 .&lt;br /&gt;
 BusyBox v1.13.4 (2009-07-06 01:59:55 CEST) built-in shell (ash)&lt;br /&gt;
 Enter 'help' for a list of built-in commands.&lt;br /&gt;
 .&lt;br /&gt;
   _______                     ________        __&lt;br /&gt;
  |       |.-----.-----.-----.|  |  |  |.----.|  |_&lt;br /&gt;
  |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|&lt;br /&gt;
  |_______||   __|_____|__|__||________||__|  |____|&lt;br /&gt;
           |__| W I R E L E S S   F R E E D O M&lt;br /&gt;
  KAMIKAZE (bleeding edge, r16703) -------------------&lt;br /&gt;
   * 10 oz Vodka       Shake well with ice and strain&lt;br /&gt;
   * 10 oz Triple sec  mixture into 10 shot glasses.&lt;br /&gt;
   * 10 oz lime juice  Salute!&lt;br /&gt;
  ---------------------------------------------------&lt;br /&gt;
 root@OpenWrt:/# passwd&lt;br /&gt;
 Changing password for root&lt;br /&gt;
 New password:&lt;br /&gt;
 Retype password:&lt;br /&gt;
 Password for root changed by root&lt;br /&gt;
 root@OpenWrt:/#&lt;br /&gt;
&lt;br /&gt;
== Installing packages ==&lt;br /&gt;
It uses opkg and default repository is http://downloads.openwrt.org/snapshots/trunk/s3c24xx/packages/&lt;br /&gt;
&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install nano&lt;br /&gt;
&lt;br /&gt;
If the opkg install quits with error &amp;quot;* Packages were found, but none compatible with the architectures configured&amp;quot; then the following line should be checked in /etc/opkg.conf (error occured with nanl.de rootfs (22. September 09))&lt;br /&gt;
&lt;br /&gt;
 arch s3c24xx 1&lt;br /&gt;
&lt;br /&gt;
Where ’s3c24xx’ is the architecture and ‘1′ is a ‘priority'.&lt;br /&gt;
&lt;br /&gt;
= Build custom image =&lt;br /&gt;
== Fetching OpenWrt trunk ==&lt;br /&gt;
First you have to create a svn checkout of the OpenWrt base system&lt;br /&gt;
&lt;br /&gt;
 svn co svn://svn.openwrt.org/openwrt/trunk openwrt&lt;br /&gt;
&lt;br /&gt;
The command will fetch the OpenWrt base system and put it into the openwrt subfolder of your current working directory. From now on this HOWTO assumes that your working direcory will be the newly created openwrt folder. &lt;br /&gt;
&lt;br /&gt;
 cd openwrt&lt;br /&gt;
&lt;br /&gt;
== Add packages from extra feeds ==&lt;br /&gt;
Although this is sufficient enough to build an image for the freerunner you will not be able to build a lot of packages useful on your phone. Those packages are in extra feeds. To enable those feeds:&lt;br /&gt;
&lt;br /&gt;
 cp feeds.conf.default feeds.conf&lt;br /&gt;
&lt;br /&gt;
Then edit your feeds.conf and enable the efl (for enlightenment) and phone (for fso, paroli, ...) feeds, by removing the '#' at the beginning of these lines, so that it might look like:&lt;br /&gt;
&lt;br /&gt;
 src-svn packages svn://svn.openwrt.org/openwrt/packages&lt;br /&gt;
 src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package&lt;br /&gt;
 src-svn luci http://svn.luci.subsignal.org/luci/branches/luci-0.8/contrib/package&lt;br /&gt;
 src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone&lt;br /&gt;
 src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl&lt;br /&gt;
 src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop&lt;br /&gt;
 #src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce&lt;br /&gt;
&lt;br /&gt;
Please mind that this config does not define what packages will be compiled - it just defines which package-descriptions (OpenWrt-Makefiles) will be fetched which will be listed within the menuconfig later.&lt;br /&gt;
&lt;br /&gt;
After that update your feeds to download the OpenWrt-Makefiles of these packages and provide (install) them&lt;br /&gt;
&lt;br /&gt;
 scripts/feeds update -a&lt;br /&gt;
 scripts/feeds install -a&lt;br /&gt;
&lt;br /&gt;
== Configure target and packages ==&lt;br /&gt;
Now you'll have to select the target platform for the freerunner. Run&lt;br /&gt;
&lt;br /&gt;
 make menuconfig&lt;br /&gt;
&lt;br /&gt;
and select s3c24xx as the Target System. As Target Profile you have to choice between &lt;br /&gt;
* '''Openmoko GTA-02 (full)''': This is the one you probably want since it has enlightenment and paroli preselected.&lt;br /&gt;
* '''Openmoko GTA-02 (minimal)''': This profile contains only the basic OpenWrt packages, so you'll only get a shell and some command-line utils.&lt;br /&gt;
&lt;br /&gt;
You now can also select additional packages you want to be installed in your image. Make sure you select as build in [*] else [M] you'll only get the packages but they will not be in the image, but can be installed later on.&lt;br /&gt;
&lt;br /&gt;
You maybe also want to change the IP address under which the freerunner will be reachable. To do so select &amp;quot;[*] Image configuration&amp;quot;. In its submenu you can change the images network configuration.&lt;br /&gt;
&lt;br /&gt;
Per default OpenWrt is using the uclibc as libc implementation. You can use another libc (e.g. the glibc) by changing that via &amp;quot;[*] Advanced configuration options (for developers)&amp;quot; -&amp;gt; &amp;quot;---   Toolchain Options&amp;quot; -&amp;gt; &amp;quot;LIBC implementation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Build your OpenWrt image ==&lt;br /&gt;
If your done configuring the image you can build it by just running:&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' OpenWrt build system have more or less requirements depends on selected packages. Using GTA-02 full profile, we need: &lt;br /&gt;
* ''subversion'' and git to retrieve some external sources. (On Debian Lenny: ''subversion git-core'')&lt;br /&gt;
* full ''autotools'' suite. (On Debian Lenny: ''automake autoconf autotools-dev libtool pkg-config'')&lt;br /&gt;
* ''dbus-binding-tool'' to be able to compile &amp;quot;gsm0710muxd&amp;quot;. (On Debian Lenny: ''libdbus-glib-1-dev'')&lt;br /&gt;
* ''autopoint'' and ''cvs'' is used by enlightenment building process. (On Debian Lenny: ''gettext cvs'')&lt;br /&gt;
&lt;br /&gt;
This will now take some time. Please make sure you have enough free space left (~4 GB for full-profile).&lt;br /&gt;
Instead you can use &amp;quot;make V=99&amp;quot; to get debug output to see what's going on / went wrong.&lt;br /&gt;
&lt;br /&gt;
== Flash Neo FreeRunner ==&lt;br /&gt;
When the build process is finished you will find a rootfs (openwrt-s3c24xx-2.6-root.jffs2-128k) and a kernel image (openwrt-s3c24xx-2.6-uImage) in the bin/ subfolder of your OpenWrt installation, which can be installed on your freerunner with the [[Dfu-util|dfu util]] as normal. Then you can continue as usage section says (beware if you have disable something).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Congratulations! =&lt;br /&gt;
&lt;br /&gt;
Please help us making this site better! Give feedback on the mailinglist (Openmoko as well as OpenWrt), change this site, file bug-reports or just tell us how much you love OpenWrt ;)&lt;br /&gt;
&lt;br /&gt;
'''State'''&lt;br /&gt;
 http://oldwiki.openwrt.org/Hardware%282f%29Openmoko.html&lt;br /&gt;
&lt;br /&gt;
[[Category:OpenWrt| ]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T18:15:34Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenWrt ====&lt;br /&gt;
&lt;br /&gt;
append &amp;quot;arch s3c24xx 1&amp;quot; to /etc/opkg.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-10-14T16:17:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== OpenWrt =====&lt;br /&gt;
&lt;br /&gt;
/etc/config/network&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config interface lan&lt;br /&gt;
option proto static&lt;br /&gt;
option ifname eth0&lt;br /&gt;
option ipaddr 192.168.0.1&lt;br /&gt;
option netmask 255.255.255.0&lt;br /&gt;
option gateway 192.168.0.2&lt;br /&gt;
option dns 208.67.222.222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.2 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-08-20T16:14:11Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Ubuntu 8.10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-08-20T16:13:38Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 8.10 =====&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu 9.04 =====&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-08-20T16:13:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 8.10 ===&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.04 ===&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-08-20T16:12:20Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Bicycle ====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking ====&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 8.10 ===&lt;br /&gt;
sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
sudo bash -c 'echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward'&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 9.04 ===&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A-GPS ====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-08-18T12:48:13Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Janpaness and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g.FIXME)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-08-18T12:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installation */ cosmetics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Janpaness and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g.FIXME)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-08-18T12:43:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installation */  cosmetics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Janpaness and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g.FIXME)&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Enscribi</id>
		<title>Enscribi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Enscribi"/>
				<updated>2009-08-18T12:42:24Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Installation */ added workaround because enscribi is linked against the old libs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enscribi is a handwriting recognition input method for Linux. It's mainly developed for the Openmoko Freerunner smartphone. Though it's a stand-alone application, it can be used as the default keyboard in the Illume window manager. Now it supports Janpaness and Chinese and other languages. You can get more information on following link:&lt;br /&gt;
: http://olofsj.github.com/enscribi/&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g.FIXME)&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Applications]]&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-08-18T12:40:22Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Enscribi on OM2009 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== Bicycle =====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
 opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)&lt;br /&gt;
 opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
Install fonts for Japanese (e.g. ttf-sazanami-gothic) and Chinese (e.g.FIXME)&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19)&lt;br /&gt;
If enscribi is linked against the new libs then these symbolic links are obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
 goto &amp;quot;setup&amp;quot; --&amp;gt; &amp;quot;keyboard&amp;quot; --&amp;gt; &amp;quot;enscribi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To get a Chinese/Japanese input method.&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking on Ubuntu 9.04 ====&lt;br /&gt;
&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== A-GPS =====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-08-18T12:19:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Enscribi on OM2009 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== Bicycle =====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
1. Step:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk&lt;br /&gt;
opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Step:&lt;br /&gt;
&lt;br /&gt;
Install fonts for chinese (e.g.?) and japanese (e.g. ttf-sazanami-gothic)&lt;br /&gt;
&lt;br /&gt;
3. Step:&lt;br /&gt;
&lt;br /&gt;
create links for the old libs?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking on Ubuntu 9.04 ====&lt;br /&gt;
&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== A-GPS =====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-08-18T12:19:28Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: /* Enscribi on OM2009 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== Bicycle =====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
1. Step:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk&lt;br /&gt;
opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Step;&lt;br /&gt;
Install fonts for chinese (e.g.?) and japanese (e.g. ttf-sazanami-gothic)&lt;br /&gt;
&lt;br /&gt;
3. Step:&lt;br /&gt;
create links for the old libs?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking on Ubuntu 9.04 ====&lt;br /&gt;
&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== A-GPS =====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Nukama</id>
		<title>User:Nukama</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Nukama"/>
				<updated>2009-08-18T12:18:46Z</updated>
		
		<summary type="html">&lt;p&gt;Nukama: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== Bicycle =====&lt;br /&gt;
&lt;br /&gt;
Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance. &lt;br /&gt;
&lt;br /&gt;
Wishlist for this USB-Charger:&lt;br /&gt;
* 5V, 500-1500mA output (through diodes or MOSFET)&lt;br /&gt;
* Voltage, Frequency (should be dynamohub independable)&lt;br /&gt;
* USB-Device (maybe with USBprog)&lt;br /&gt;
&lt;br /&gt;
nice to&lt;br /&gt;
* 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)&lt;br /&gt;
* buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enscribi on OM2009 ====&lt;br /&gt;
&lt;br /&gt;
1. Step:&lt;br /&gt;
opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk&lt;br /&gt;
opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk&lt;br /&gt;
opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
2. Step;&lt;br /&gt;
Install fonts for chinese (e.g.?) and japanese (e.g. ttf-sazanami-gothic)&lt;br /&gt;
&lt;br /&gt;
3. Step:&lt;br /&gt;
create links for the old libs?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 &lt;br /&gt;
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0&lt;br /&gt;
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USB-Networking on Ubuntu 9.04 ====&lt;br /&gt;
&lt;br /&gt;
/etc/network/freerunner (chmod -x)&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/udev/rules.d/80-freerunner.rules&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;
# 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;
/usr/local/sbin/freerunner-usb-add.sh  (chmod -x)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
(&lt;br /&gt;
ip address add 192.168.0.200/26 netmask dev usb0 &amp;gt; /dev/null&lt;br /&gt;
ip link set usb0 up &amp;gt; /dev/null&lt;br /&gt;
/etc/network/freerunner start&lt;br /&gt;
) &amp;amp;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== A-GPS =====&lt;br /&gt;
agps.sh &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
agps-alm.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# ublox AssistNow Online almanac downloader for Neo FreeRunner&lt;br /&gt;
#&lt;br /&gt;
# v0.1&lt;br /&gt;
#&lt;br /&gt;
# Wilfried Klaebe &amp;lt;wk-openmoko@chaos.in-kiel.de&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Usage:&lt;br /&gt;
#&lt;br /&gt;
# agps-alm.py &amp;gt; /dev/ttySAC1&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import socket&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
user='your@mail.address'&lt;br /&gt;
pwd='pwdfromublox'&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
s.connect(('agps.u-blox.com',46434))&lt;br /&gt;
&lt;br /&gt;
s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')&lt;br /&gt;
&lt;br /&gt;
buf = s.recv(4096)&lt;br /&gt;
while 1:&lt;br /&gt;
        b = s.recv(4096)&lt;br /&gt;
        if not b:&lt;br /&gt;
                break&lt;br /&gt;
        buf += b&lt;br /&gt;
&lt;br /&gt;
h = {}&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
        (l,s,buf) = buf.partition('\n')&lt;br /&gt;
        l = l.rstrip('\r\n')&lt;br /&gt;
        #&lt;br /&gt;
        sys.stderr.write(l+'\n')&lt;br /&gt;
        #&lt;br /&gt;
        if (l == &amp;quot;&amp;quot;):&lt;br /&gt;
                if h.has_key('content-length') and h['content-length'].isdigit() and h.has_key('content-type') and h['content-type'] == 'application/ubx':&lt;br /&gt;
                        sys.stdout.write(buf[0:int(h['content-length'])])&lt;br /&gt;
                sys.exit(0)&lt;br /&gt;
        #&lt;br /&gt;
        m = re.search('\\A(.+): (.+)\\Z',l)&lt;br /&gt;
        if m:&lt;br /&gt;
                h[m.group(1).lower()] = m.group(2).lower();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nukama</name></author>	</entry>

	</feed>