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

	<entry>
		<id>http://wiki.openmoko.org/wiki/NeoTool</id>
		<title>NeoTool</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/NeoTool"/>
				<updated>2010-11-16T14:29:30Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: v1.3 released, some comments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NeoTool is a bash script for your desktop system to provide a friendly GUI frontend to some common management tasks, like for example flashing Openmoko smartphones. It is aimed at being very intuitive and easy to use, and flexible enough to make it useful in a wide variety of circumstances.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
The main features of NeoTool are:&lt;br /&gt;
* Ability to [[Flashing the Neo Freerunner|flash]] your Neo via a GUI for the following image types:&lt;br /&gt;
**rootfs&lt;br /&gt;
**kernel&lt;br /&gt;
**[[Uboot]]/[[Qi]] bootloader&lt;br /&gt;
**splash screen&lt;br /&gt;
* Ability to flash multiple images at once (for example, flash rootfs and the kernel at the same time)&lt;br /&gt;
* Ability to backup your Neo via a GUI&lt;br /&gt;
* Ability to backup Multiple images at once&lt;br /&gt;
* rootfs can be backed up to either a flashable image or a tar archive&lt;br /&gt;
* most / all configuration can be done via the GUI&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
[[Image:NeoTool.png|NeoTool opening screen]]&lt;br /&gt;
&lt;br /&gt;
== Download / Releases ==&lt;br /&gt;
&lt;br /&gt;
The most recent version of NeoTool is available for download at http://users.on.net/~antisol/neotool&lt;br /&gt;
&lt;br /&gt;
When a new version is released it will be announced on the community mailing list, and on this page.&lt;br /&gt;
&lt;br /&gt;
[https://bugs.launchpad.net/ubuntu/+bug/288747 Here] is the packaging request of NeoTool for '''Ubuntu'''; [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=504131 here] for '''Debian''' (which will probably not succeed).&lt;br /&gt;
&lt;br /&gt;
(the author currently has no intention of taking action on these - if you want it packaged for your distro, you should do something about it rather than waiting)&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
* [http://software.opensuse.org/ymp/home:worldcitizen/SLE_10/NeoTool.ymp 1-Click Install for SLE 10]&lt;br /&gt;
* [http://software.opensuse.org/ymp/home:worldcitizen/SLE_11/NeoTool.ymp 1-Click Install for SLE 11]&lt;br /&gt;
* [http://software.opensuse.org/ymp/home:worldcitizen/openSUSE_10.3/NeoTool.ymp 1-Click Install for openSuSE 10.3]&lt;br /&gt;
* [http://software.opensuse.org/ymp/home:worldcitizen/openSUSE_11.0/NeoTool.ymp 1-Click Install for openSuSE 11.0]&lt;br /&gt;
* [http://software.opensuse.org/ymp/home:worldcitizen/openSUSE_11.1/NeoTool.ymp 1-Click Install for openSuSE 11.1]&lt;br /&gt;
* [http://software.opensuse.org/ymp/home:worldcitizen/openSUSE_11.2/NeoTool.ymp 1-Click Install for openSuSE 11.2]&lt;br /&gt;
* [http://software.opensuse.org/ymp/home:worldcitizen/openSUSE_Factory/NeoTool.ymp 1-Click Install for openSuSE Factory]&lt;br /&gt;
&lt;br /&gt;
=== CentOS ===&lt;br /&gt;
* [http://download.opensuse.org/repositories/home:/worldcitizen/CentOS_5/noarch/ Centos 5]&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
* [http://download.opensuse.org/repositories/home:/worldcitizen/Fedora_10/noarch/ Fedora 9]&lt;br /&gt;
* [http://download.opensuse.org/repositories/home:/worldcitizen/Fedora_10/noarch/ Fedora 10]&lt;br /&gt;
&lt;br /&gt;
=== Mandriva ===&lt;br /&gt;
* [http://download.opensuse.org/repositories/home:/worldcitizen/Mandriva_2008/noarch/ Mandriva 2008]&lt;br /&gt;
* [http://download.opensuse.org/repositories/home:/worldcitizen/Mandriva_2009/noarch/ Mandriva 2009]&lt;br /&gt;
&lt;br /&gt;
=== RHEL ===&lt;br /&gt;
* [http://download.opensuse.org/repositories/home:/worldcitizen/RHEL_5/noarch/ RHEL 5]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You will have to install [[dfu-util]] in order to be able to use NeoTool.&lt;br /&gt;
&lt;br /&gt;
Other prerequisites for NeoTool should be installed on most modern linux systems by default:&lt;br /&gt;
* bash&lt;br /&gt;
* zenity&lt;br /&gt;
* which&lt;br /&gt;
* awk&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
&lt;br /&gt;
* pipe viewer (pv), shows display while backing up rootfs&lt;br /&gt;
&lt;br /&gt;
* to backup rootfs, you need to have a [[USB_Networking|USB networking]] configured and working&lt;br /&gt;
&lt;br /&gt;
* mkfs-jffs2 needs to be installed on your neo to backup rootfs to a flashable image (type 'opkg install mkfs-jffs2' in ssh)&lt;br /&gt;
&lt;br /&gt;
* While not a requirement, backing up rootfs is much less painful if you set up an authorized_keys entry for your host on your Neo. To do this, run 'ssh-keygen' (preferrably as root) on your host, and then copy the contents of ~/.ssh/id_rsa.pub on your host into /home/root/.ssh/authorized_keys on your freerunner&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host# su&lt;br /&gt;
&lt;br /&gt;
root@host# ssh-keygen&lt;br /&gt;
&lt;br /&gt;
root@host# scp ~/.ssh/id_rsa.pub root@&amp;lt;Neo IP Address&amp;gt;:/home/root&lt;br /&gt;
&lt;br /&gt;
root@host# ssh root@&amp;lt;Neo IP Address&amp;gt;&lt;br /&gt;
root@om-gta02:~# cat id_rsa.pub &amp;gt;&amp;gt; /home/root/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will prevent you from having to enter the password for your Neo when you use ssh and scp.&lt;br /&gt;
&lt;br /&gt;
If you don't do this, you will need to enter your password repeatedly in order to backup rootfs.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
NeoTool should usually be run as root, although this is not required if you only want to backup rootfs and/or the kernel via scp.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ./neotool&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will initially be presented with the main menu. Most of the functions should be relatively self-explanatory&lt;br /&gt;
&lt;br /&gt;
(thorough documentation on usage goes here)&lt;br /&gt;
&lt;br /&gt;
== Revision History ==&lt;br /&gt;
&lt;br /&gt;
See [http://lists.openmoko.org/pipermail/community/2008-September/029731.html this thread] and [http://lists.openmoko.org/pipermail/community/2008-September/030257.html that update] for discussions on the community list.&lt;br /&gt;
&lt;br /&gt;
=== 09-Sep-2008 ===&lt;br /&gt;
&lt;br /&gt;
- ability to flash more than one image at once - the 'what do you wanna&lt;br /&gt;
flash' now has checkboxes instead of radio buttons, and all your&lt;br /&gt;
selections are flashed one after the other. (which i find very handy,&lt;br /&gt;
stops the FR powering down while you're typing the next dfu-util&lt;br /&gt;
command, or locating the next image - works great for flashing a new&lt;br /&gt;
distro &amp;amp; kernel). if an error occurs, subsequent files will not be flashed.&lt;br /&gt;
&lt;br /&gt;
- more confirmation / idiot-proofing - it now tells you what you're&lt;br /&gt;
doing much more clearly (i.e: &amp;quot;about to flash Kernel with /foo/bar.bin,&lt;br /&gt;
rootfs with /foo/bar.jffs&amp;quot;. allows you to confirm that you chose the&lt;br /&gt;
right images). also the 'choose file' dialogs tell you what you're&lt;br /&gt;
browsing for&lt;br /&gt;
&lt;br /&gt;
- ability for users to press 'cancel' at the various dialogs and exit&lt;br /&gt;
gracefully.&lt;br /&gt;
&lt;br /&gt;
- checks that dfu-util exists and is executable. I moved my dfu-util to&lt;br /&gt;
/usr/local/bin, so it looks there first, but it will also check the&lt;br /&gt;
current directory and prompt if it can't find it&lt;br /&gt;
&lt;br /&gt;
- I wasn't a fan of patching dfu-util, and the pulsating zenity progress&lt;br /&gt;
dialog drags my (prehistoric) PC to a crawl, so I disabled the progress&lt;br /&gt;
bar and use the text output of dfu-util instead.&lt;br /&gt;
&lt;br /&gt;
=== 12-Sep-2008 (v1.0) ===&lt;br /&gt;
&lt;br /&gt;
- Utility now has the ability to flash the splash image as per request&lt;br /&gt;
&lt;br /&gt;
- Utility can now also backup your device to flashable rootfs / kernel images (david might like this for building FDOM images)&lt;br /&gt;
&lt;br /&gt;
- Configurification is loaded on startup and saved in /etc/frutil (you can only modify settings if you run it as root)&lt;br /&gt;
&lt;br /&gt;
- more idiot proofing - uses 'which' to find dfu-util, checks to ensure it's being run as root, checks that zenity is installed on the host, checks that you have mkfs.jffs2 installed before backing up, checks that you have pv installed and acts accordingly (by either using it or not during the backup [this is not properly tested because I don't have pv, please report]), and possibly other stuff I've forgotten about.&lt;br /&gt;
&lt;br /&gt;
- new name (frutil) to reflect the new abilities&lt;br /&gt;
&lt;br /&gt;
=== 17-Sep-2008 (v1.1) ===&lt;br /&gt;
&lt;br /&gt;
- Added ChangeLog&lt;br /&gt;
&lt;br /&gt;
- Added ability to handle multiple DFU-capable devices&lt;br /&gt;
&lt;br /&gt;
- Changed references to 'freerunner' to 'neo'&lt;br /&gt;
&lt;br /&gt;
- name changed to NeoTool (despite implied connection with Keanu Reeves' crotch)&lt;br /&gt;
&lt;br /&gt;
- Added 'Reset to defaults' option&lt;br /&gt;
&lt;br /&gt;
- Added warning that flashing uboot on neo1973 may result in a paperweight&lt;br /&gt;
&lt;br /&gt;
- several small bugfixes&lt;br /&gt;
&lt;br /&gt;
- made backup functionality much more versatile:&lt;br /&gt;
&lt;br /&gt;
- made backup filenames configurable&lt;br /&gt;
&lt;br /&gt;
- Added ability to choose what to backup&lt;br /&gt;
&lt;br /&gt;
- Added rootfs backup type option (jffs2 or tar)&lt;br /&gt;
&lt;br /&gt;
- Added kernel backup method option (scp or dfu)&lt;br /&gt;
&lt;br /&gt;
- Added ability to backup uboot and splash&lt;br /&gt;
&lt;br /&gt;
=== 31-Oct-2008 (v1.2) ===&lt;br /&gt;
- Changed information at pre-flash prompt to include instructions for how to get to the NOR menu. eliminated any mention of NAND, as everything can be flashed from NOR.&lt;br /&gt;
&lt;br /&gt;
- bugfix - when user selects a filename under 'customize backup filenames' and then presses cancel, the selected filename was set to nothing.&lt;br /&gt;
&lt;br /&gt;
- NeoTool now checks that the path of backup files exist, and attempts to create it if it doesn't. This allows you to organise your backups in a folder hierarchy, i.e set the backup filename to: /data/openmoko/backups/{date}/{image}_backup and the {date} directory will be created by NeoTool, assuming /data/openmoko/backups exists and you have permission.&lt;br /&gt;
&lt;br /&gt;
=== 17-Nov-2010 (v1.3) ===&lt;br /&gt;
&lt;br /&gt;
- Added (broken) ubifs support per chris' patch&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Suggestions? comments? feedback? problems?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;NeoTool is perfect in every respect - if it breaks it's because you did something wrong.&amp;lt;/strike&amp;gt;&lt;br /&gt;
* Email the Community list,&lt;br /&gt;
* or (if you have a patch), email antisol (at) internode (dot) on (dot) net. &lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;br /&gt;
[[Category:Host OSes]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:NeoTool</id>
		<title>Talk:NeoTool</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:NeoTool"/>
				<updated>2010-11-16T14:20:44Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: reply to chris&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since I installed SHR-U from Oct. 2010 recently I thougt about ubifs support for neotool... What do you think?&lt;br /&gt;
&lt;br /&gt;
Here's a patch against version 1.2 of neotool:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
--- neotool.sh.cpx	2010-06-09 19:53:40.000000000 +0200&lt;br /&gt;
+++ neotool.sh	2010-10-22 09:45:57.000000000 +0200&lt;br /&gt;
@@ -493,7 +493,34 @@&lt;br /&gt;
 				echo Cleanup...&lt;br /&gt;
 				ssh root@$FRIP &amp;quot;umount /var/tmp/root; rmdir /var/tmp/root&amp;quot;&lt;br /&gt;
 				;;&lt;br /&gt;
+			&amp;quot;ubifs&amp;quot;)&lt;br /&gt;
+			&lt;br /&gt;
+				ip_test&lt;br /&gt;
+				if [ $? != 0 ]; then&lt;br /&gt;
+					return&lt;br /&gt;
+				fi&lt;br /&gt;
+				&lt;br /&gt;
+				echo ' - Checking device for mkfs-ubifs...'&lt;br /&gt;
+				if [ -z &amp;quot;`ssh root@$FRIP 'opkg status mkfs-ubifs'`&amp;quot; ]; then&lt;br /&gt;
+					zenity --error --text 'prerequisite mkfs-ubifs is not installed on the device! \n\n do &amp;quot;opkg install mkfs-ubifs&amp;quot; and try again.'&lt;br /&gt;
+					return&lt;br /&gt;
+				fi&lt;br /&gt;
 &lt;br /&gt;
+				echo &amp;quot; - Mounting flash at /var/tmp/root...&amp;quot;&lt;br /&gt;
+				ssh root@$FRIP &amp;quot;mkdir /var/tmp/root; mount -t ubifs ubi0:om-gta02-rootfs /var/tmp/root&amp;quot;&lt;br /&gt;
+&lt;br /&gt;
+				echo ' - Performing backup... (this will take a while)'&lt;br /&gt;
+				if [ -z &amp;quot;`which pv 2&amp;gt;/dev/null`&amp;quot; ]; then	&lt;br /&gt;
+					#pv is not installed, so don't use it...&lt;br /&gt;
+					ssh root@$FRIP &amp;quot;mkfs.ubifs -r /var/tmp/root -o- -e 128KiB -m 512 -c 100 -x lzo&amp;quot; &amp;gt; $FSIMG&lt;br /&gt;
+				else&lt;br /&gt;
+					# FIXME: the mkfs.ubifs wants to have '-o &amp;lt;file&amp;gt;' option, how to pipe the data stream?&lt;br /&gt;
+					ssh root@$FRIP &amp;quot;mkfs.ubifs -r /var/tmp/root -o- -e 128KiB -m 512 -c 100 -x lzo&amp;quot; | pv -W &amp;gt; $FSIMG&lt;br /&gt;
+				fi&lt;br /&gt;
+				&lt;br /&gt;
+				echo Cleanup...&lt;br /&gt;
+				ssh root@$FRIP &amp;quot;umount /var/tmp/root; rmdir /var/tmp/root&amp;quot;&lt;br /&gt;
+				;;&lt;br /&gt;
 			&amp;quot;tar&amp;quot;)&lt;br /&gt;
 				echo ' - Performing backup... (this will take a while)'&lt;br /&gt;
 				if [ -z &amp;quot;`which pv 2&amp;gt;/dev/null`&amp;quot; ]; then	&lt;br /&gt;
@@ -637,7 +664,7 @@&lt;br /&gt;
 &lt;br /&gt;
 function root_backup_type {&lt;br /&gt;
 		old_rootfs_type=$rootfs_type&lt;br /&gt;
-		rootfs_type=$(zenity --list --text &amp;quot;Choose rootfs backup type:\n\nIf you have modified your rootsf filename, this will reset it to the default.&amp;quot; --column &amp;quot;Format&amp;quot; --column &amp;quot;Description&amp;quot; jffs2 &amp;quot;Flashable JFFS2 Image&amp;quot; &amp;quot;tar&amp;quot; &amp;quot;For SD card install&amp;quot;)&lt;br /&gt;
+		rootfs_type=$(zenity --list --text &amp;quot;Choose rootfs backup type:\n\nIf you have modified your rootsf filename, this will reset it to the default.&amp;quot; --column &amp;quot;Format&amp;quot; --column &amp;quot;Description&amp;quot; jffs2 &amp;quot;Flashable JFFS2 Image&amp;quot; ubifs &amp;quot;Flashable ubifs Image&amp;quot; &amp;quot;tar&amp;quot; &amp;quot;For SD card install&amp;quot;)&lt;br /&gt;
 		if [ -z &amp;quot;$rootfs_type&amp;quot; ]; then&lt;br /&gt;
 			rootfs_type=$old_rootfs_type&lt;br /&gt;
 		fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It does not work at the moment because the mkfs.ubifs command wants to have an output option '-o &amp;lt;filename&amp;gt;'. How to make it stream the output to stdout so we can pipe it?&lt;br /&gt;
&lt;br /&gt;
To flash ubifs files nothing has to be changed, I've successfully done this using neotool v1.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another feature request: Automatic installation of mkfs-jffs2/mkfs-ubifs if not found on openmoko device.&lt;br /&gt;
&lt;br /&gt;
--ChrisPZV 11:45, 22 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hi Chris,&lt;br /&gt;
&lt;br /&gt;
Ooh! a patch! Thanks!&lt;br /&gt;
&lt;br /&gt;
Sorry I haven't had a chance to get back to you, I've been meaning to check this out, but I haven't used my freerunner in nearly a year and haven't gotten around to trying out your patch. it looks OK though.&lt;br /&gt;
&lt;br /&gt;
To make it send output to stdout for streaming across our ssh connection, you could try using something like '-o /dev/stdout', or you could try using a FIFO buffer using the 'mkfifo' command.&lt;br /&gt;
&lt;br /&gt;
The reality of the situation is that I'm not particularly likely to add anything to NeoTool - at one time I had grand plans to rewrite it in something other than bash, but since I'm not using my FreeRunner anymore I don't see myself making any further improvements unless I have a resurgence of interest in this (terribly horribly awfully awful) device.&lt;br /&gt;
&lt;br /&gt;
Having said that, I've applied your patch to the version I'm hosting (which is the 'official' download link on the wiki page - http://users.on.net/~antisol/neotool) and labelled it v1.3. If you want to play around with getting the ubifs stuff working properly and send me another patch, I'll be happy to apply it!&lt;br /&gt;
&lt;br /&gt;
If you want to talk to me about neotool, probably your best option is to email me (see the bottom of the main neotool wiki page) :)&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
-Dale&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Jokes</id>
		<title>Jokes</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Jokes"/>
				<updated>2009-05-12T10:38:27Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Jokes in English =&lt;br /&gt;
&lt;br /&gt;
'''Q:  Why did OM cross the road?'''&lt;br /&gt;
&lt;br /&gt;
A:  To get to another toolkit :)&lt;br /&gt;
&lt;br /&gt;
'''Q:  How many OM devs does it take to change a lightbulb?'''&lt;br /&gt;
&lt;br /&gt;
A:  Well first we need to abandon the old lightbulb holder because at a later date we may not be able to plug a floodlight in,  bring in a new lightbulb holder and adapt it to multiple floodlights,  meanwhile the engineering team has realized that this will only run green floodlights and has started rewiring the whole house.. :)  The burnt out lightbulb is due to be fixed at a later date :) &lt;br /&gt;
&lt;br /&gt;
'''Q:  What is the difference between a professional photographer and OM user?'''&lt;br /&gt;
&lt;br /&gt;
A:  The OM user has to flash more often :)&lt;br /&gt;
&lt;br /&gt;
'''Q:  Why did the OM newbie log onto #openmoko?'''&lt;br /&gt;
&lt;br /&gt;
A:  Because they had not read:&lt;br /&gt;
*#  the wiki, and&lt;br /&gt;
*#  the topic&lt;br /&gt;
As then they would know you slide your finder up on the keyboard to get the numbers to enter your sim pin.&lt;br /&gt;
&lt;br /&gt;
'''Q: What's the difference between an iphone and a freerunner?'''&lt;br /&gt;
&lt;br /&gt;
A: One works but takes away your freedom, the other is free but needs your work&lt;br /&gt;
&lt;br /&gt;
  Knock, Knock&lt;br /&gt;
  Who's There?&lt;br /&gt;
  A Neo User&lt;br /&gt;
  A Neo User&lt;br /&gt;
&lt;br /&gt;
'''Q: What did the Neo say to the insomniac?'''&lt;br /&gt;
&lt;br /&gt;
A: At least when you go to sleep you know you'll wake up!&lt;br /&gt;
&lt;br /&gt;
'''Ancient chinese proverb:''' &amp;quot;Neo owner is man carrying wall charger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Q: What's the difference between a brick and a freerunner?'''&lt;br /&gt;
&lt;br /&gt;
A: The brick is heavier... slightly.&lt;br /&gt;
&lt;br /&gt;
A: The brick comes in different colors.&lt;br /&gt;
&lt;br /&gt;
A: You can't de-brick the brick.&lt;br /&gt;
&lt;br /&gt;
A: A brick doesn't have to be recharged every twelve hours&lt;br /&gt;
&lt;br /&gt;
A: A brick will reliably perform it's intended function out of the box, no configuration required.&lt;br /&gt;
&lt;br /&gt;
A: You don't have to constantly re-flash / update the software on a brick&lt;br /&gt;
&lt;br /&gt;
A: The brick will not buzz&lt;br /&gt;
&lt;br /&gt;
A: The brick won't stop working after a day or two&lt;br /&gt;
&lt;br /&gt;
A: The brick is waterproof&lt;br /&gt;
&lt;br /&gt;
A: Bricks are cheap, reliable, and widely available.&lt;br /&gt;
&lt;br /&gt;
A: A brick isn't designed to make phone calls.&lt;br /&gt;
&lt;br /&gt;
'''Q: And what's the similarity?'''&lt;br /&gt;
&lt;br /&gt;
A:  The probability they ever reliably will.&lt;br /&gt;
&lt;br /&gt;
'''OM2008.9 and FSO walk into a bar.'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;How are you?  How are you?&amp;quot; asks FSO.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Buzzzzzzz&amp;quot; says OM2008.9&lt;br /&gt;
&lt;br /&gt;
'''Q:  How to switch off this phone?'''&lt;br /&gt;
&lt;br /&gt;
A:  You have to write program :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--consider using this kind of formatting:--&amp;gt;&lt;br /&gt;
;Q What if somebody important calls?:A Err..&lt;br /&gt;
&lt;br /&gt;
;A. Because it messes up with the normal order in which people read things.:Q. Why is top-posting prohibited on our mailing lists?&lt;br /&gt;
&lt;br /&gt;
;Q What is your new year resolution?:A 640x480.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''E-mail quotes:'''&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yesterday I accidentally put my OM phone near LCD TV (Samsung).&lt;br /&gt;
&lt;br /&gt;
SW on OM is QT Extended and when I press power button (to wake up mobile) TV immediately turn off.&lt;br /&gt;
&lt;br /&gt;
I tried again and TV changed channel. So, on my phone this behavioure is repeatable.&lt;br /&gt;
&lt;br /&gt;
Is it normal behavioure?&lt;br /&gt;
&lt;br /&gt;
Thanks in advance&lt;br /&gt;
&lt;br /&gt;
Mile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''IRC quotes:'''&lt;br /&gt;
&lt;br /&gt;
[16:03] &amp;lt;jadams_&amp;gt; does 2008.8 support the neo yet?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AntonTakk&amp;gt; i don't want another phone that would just need a bubble on top to look like an apple mouse&lt;br /&gt;
&amp;lt;playya_&amp;gt; AntonTakk, a apple mouse has less buttons&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Rampentpancake&amp;gt; can i run openmoko as a live cd?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Rampentpancake&amp;gt; like is it a bootable linux distribution?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Motivator'''&lt;br /&gt;
[http://www.om.vptt.ch/site/wp-content/uploads/2008/11/poster81947927.jpg]&lt;br /&gt;
&lt;br /&gt;
'''Accessories'''&lt;br /&gt;
* [http://lists.openmoko.org/pipermail/support/attachments/20081201/5bc502e1/attachment-0001.jpg Freerunner anti-theft-protection]&lt;br /&gt;
&lt;br /&gt;
'''Fantasy release announcements:'''&lt;br /&gt;
* New distribution: [http://scap.linuxtogo.org/files/2c3159f3e1a2622fd56fe29d2f222d9c.png OpenmokoMe Millenium Edition] !&lt;br /&gt;
* New hardware: [http://notnews.today.com/2008/09/22/free-software-foundation-announces-gnuphone/ the GnuPhone].&lt;br /&gt;
&lt;br /&gt;
= Openmoko Jokes in Other Languages =&lt;br /&gt;
&lt;br /&gt;
As a special page, I'd like all languages to be on the same page.&lt;br /&gt;
&lt;br /&gt;
== Finnish ==&lt;br /&gt;
&lt;br /&gt;
[http://www.1songlyrics.com/k/kummeli/jumankauta-juu-n--s-p-iv--.html Kummeli-assosiaatio]&amp;lt;br&amp;gt;&lt;br /&gt;
”GTA nolla kakkonen on, luureista ehkä voittamaton;&amp;lt;br&amp;gt;&lt;br /&gt;
pientä laittoo se vaatii vaan, sitten baanalle brassailemaan&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
Jumankauta juu nääs päivää, ei ole huolen häivää;&amp;lt;br&amp;gt;&lt;br /&gt;
toolkitit kun tunnelmaa tuo, bassfix ja buzzfix soundit luo”&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(saa jatkaa/kehitellä)&lt;br /&gt;
&lt;br /&gt;
== ... ==&lt;br /&gt;
&lt;br /&gt;
[[category:Community]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Drdeath</id>
		<title>User:Drdeath</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Drdeath"/>
				<updated>2009-05-08T19:45:11Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: New page: Hey, AntiSol Here. I just wanted to congratulate you on your BRILLIANT expansion of my &amp;quot;brick&amp;quot; Joke. I Laughed very hard!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey, AntiSol Here. I just wanted to congratulate you on your BRILLIANT expansion of my &amp;quot;brick&amp;quot; Joke. I Laughed very hard!&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Import_Vcf_Contacts</id>
		<title>Import Vcf Contacts</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Import_Vcf_Contacts"/>
				<updated>2008-12-08T10:37:55Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: added note for later versions of QT Extended&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To copy your contacts from other devices or desktop systems, you can use the VCF VCard format. This page explains how to export your contacts from various systems and how to import the resulting file on on Openmoko smartphone.&lt;br /&gt;
&lt;br /&gt;
== Exporting old contacts to VCard format ==&lt;br /&gt;
&lt;br /&gt;
To use the import tools you need your Contacts in VCF format.&lt;br /&gt;
&lt;br /&gt;
# On nokia phones use the Nokia phone manager {{Citation needed}}&lt;br /&gt;
# On windows mobile phones you could use active sync to sync with Outlook and then use a Outlook VCF export plugin below&lt;br /&gt;
# On LG phones the backup function to memory card creates one file with multiple VCards&lt;br /&gt;
&lt;br /&gt;
=== Evolution ===&lt;br /&gt;
&lt;br /&gt;
Evolution can export only to VCF version 3.0, so you need to post-process the exported file.&lt;br /&gt;
&lt;br /&gt;
* Select Contacts, then File &amp;gt; Save Address Book as VCard and save to your desired destination.&lt;br /&gt;
* Use the following command to remove evolution's proprietary fields and convert the file to an encoding Om2008.8 will understand (replace old.vcf to the filename you chose for export of your addressbook in evolution):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -r -e 's/&amp;quot;X-EVOLUTION-CALLBACK&amp;quot;/MSG/g' \&lt;br /&gt;
-e 's/;TYPE=([^,]+),[^;]+([;:])/;TYPE=\1\2/g' \&lt;br /&gt;
-e 's/;X-EVOLUTION-UI-SLOT=[0-9]//g' old.vcf \&lt;br /&gt;
| iconv -t ISO-8859-1 &amp;gt; new.vcf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that if you run into errors like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;found unknown attribute in vobject, TEL &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then there are probably still occurrences of X-EVOLUTION- fields that need to be removed.&lt;br /&gt;
Also note that the above script converts your addressbook file to ISO-8859-1 (see last line), as its native UTF-8 apparently isn't recognized by Om2008.8. If necessary, eplace ISO-8859-1 by a encoding that better suits your needs.&lt;br /&gt;
&lt;br /&gt;
=== Thunderbird ===&lt;br /&gt;
&lt;br /&gt;
To export VCF from Thunderbird:&lt;br /&gt;
&lt;br /&gt;
* Get &amp;quot;MoreFunctionsForAddressBook&amp;quot; from http://nic-nac-project.de/~kaosmos/morecols-en.html&lt;br /&gt;
* Install the downloaded *.xpi file in Thunderbird&lt;br /&gt;
* Open address book&lt;br /&gt;
* Select address book to export (not a contact or set of contacts!)&lt;br /&gt;
* Right click and export to Vcf format (or use the Tools menu, Actions for AddressBooks) (If gray, you did not select an addressbook.)&lt;br /&gt;
* Select destination folder&lt;br /&gt;
&lt;br /&gt;
=== Outlook / ActiveSync to VCF ===&lt;br /&gt;
&lt;br /&gt;
To export VCF from Outlook, open Outlook, then open the VB editor by pressing ALT-F11, Insert a module, and paste in the following. Change &amp;quot;Z:\Openmoko\contacts&amp;quot; to wherever you want your vcf files saved (should be an existing, empty directory), and press F5 to run it.&lt;br /&gt;
&lt;br /&gt;
'''Code:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sub ExportContactsToVCF()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'Cheap and nasty way to export All Contacts to VCF files.&lt;br /&gt;
'By Dale Maggee, antisol (at) earthling (dot) net&lt;br /&gt;
&lt;br /&gt;
Dim CN As ContactItem&lt;br /&gt;
Dim NS As NameSpace&lt;br /&gt;
Dim Fld As MAPIFolder&lt;br /&gt;
&lt;br /&gt;
Set NS = Application.GetNamespace(&amp;quot;MAPI&amp;quot;)&lt;br /&gt;
Set Fld = NS.GetDefaultFolder(olFolderContacts)&lt;br /&gt;
&lt;br /&gt;
For Each CN In Fld.Items&lt;br /&gt;
Debug.Print CN.FullName&lt;br /&gt;
CN.SaveAs &amp;quot;z:\Openmoko\contacts\&amp;quot; &amp;amp; CN.FullName &amp;amp; &amp;quot;.vcf&amp;quot;, olVCard&lt;br /&gt;
Next CN&lt;br /&gt;
&lt;br /&gt;
MsgBox &amp;quot;Done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
voila! you now have multiple VCF files in whatever directory you chose, suitable to be imported by the Om 2007.2 python script below. (However not suitable for the addressbook tool of Om 2008.8.)&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X Addressbook ===&lt;br /&gt;
&lt;br /&gt;
To export VCF:&lt;br /&gt;
&lt;br /&gt;
# Set the vCard Format to 2.1 in the config dialog&lt;br /&gt;
# Select all contacts and say &amp;quot;export vcard&amp;quot;&lt;br /&gt;
# Despite having selected the charset to be utf-8 you may need to do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
iconv -f latin1 -t utf-8 vCards.vcf | sed 's/CHARSET=LATIN1://g' &amp;gt; all.vcf&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Import (and export?) on Om 2008.8 and Qtopia ==&lt;br /&gt;
&lt;br /&gt;
The Qtopia addressbook application supports import of VCF files out of the box. However, since there is a bug, if there are non-ASCII characters in your contacts you cannot use the version 3 format, otherwise you get multibyte UTF-8 characters mangled. Use the version 2.1 to get the encoding stated explicitly and thus characters imported correctly. But because there is another bug, when using version 2.1 vCards, the addressbook eats up all memory (and potentionally crashes the system) on ''some'' vCards with multiline entries.&lt;br /&gt;
&lt;br /&gt;
If you're connected via SSH, run the following command first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export DISPLAY=:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''(So that the addressbook will show on your phone. If you do not that and try to run addressbook locally on your computer display, you won't be able to use the application since the needed buttons will not show.)''&lt;br /&gt;
&lt;br /&gt;
Then you can simply run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
addressbook path_to_vCards_file_to_import.vcf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure your contact list has extension .vcf.&lt;br /&gt;
&lt;br /&gt;
You will be asked if you want to import the contacts form addressbook.vcf (the contact name will be taken from the &amp;quot;N:&amp;quot; vCard field).&lt;br /&gt;
&lt;br /&gt;
To import a huge number of contacts, single .vcf files can be merged together using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat *.vcf &amp;gt; all.tmp&lt;br /&gt;
mv all.tmp all.vcf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then import all.vcf&lt;br /&gt;
&lt;br /&gt;
''Tip: If you want to prevent crashing your system if the memory leak occurs, set some limit on memory available to use, so that only the addressbook application dies after reaching the limit. I.e. prior to running the import, do something like:''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v 50000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the above does not work, here are the original import guidelines:&lt;br /&gt;
&lt;br /&gt;
To import your address book from VCard format (ASU/&amp;lt;=Qtopia 4.3.2-080808 snapshot):&lt;br /&gt;
&lt;br /&gt;
'''''Note: On later versions of QT Extended, replace /opt/Qtopia with /opt/Trolltech/Qtopia in the instructions below'''''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export LD_LIBRARY_PATH=/opt/Qtopia/lib&lt;br /&gt;
/opt/Qtopia/bin/addressbook /home/root/addressbook.vcf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To import your address book from VCard format (&amp;gt;=Qtopia 4.3.2 stable):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export LD_LIBRARY_PATH=/opt/Nokia/Qtopia/lib&lt;br /&gt;
/opt/Nokia/Qtopia/bin/addressbook /home/root/addressbook.vcf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To import your address book from VCard format (&amp;gt;=QTextended 4.4.1 stable):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export LD_LIBRARY_PATH=/opt/Trolltech/Qtopia/lib&lt;br /&gt;
/opt/Trolltech/Qtopia/bin/addressbook /home/root/addressbook.vcf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mass Delete===&lt;br /&gt;
&lt;br /&gt;
The Qtopia addressbook doesn't seem to have a delete all function, which means that botching a vcf import is a painful process to undo through the phone GUI.&lt;br /&gt;
&lt;br /&gt;
If you want to delete your entire addressbook or do other mass edits then you'll need access to a command line or GUI SQLite client (SQLite Database Browser seems to be a good, free one, though the SQLite command line client should be fine).&lt;br /&gt;
&lt;br /&gt;
====Qtopia====&lt;br /&gt;
&lt;br /&gt;
* Shutdown Qtopia&lt;br /&gt;
* Use the client you have chosen to open up /home/root/Applications/qtopia_sqlite.db.&lt;br /&gt;
* Important tables: contacts, contactphonenumbers, contactaddresses&lt;br /&gt;
* Restart Qtopia when you're done and you should have a reset addressbook.&lt;br /&gt;
&lt;br /&gt;
====On Om 2008.8====&lt;br /&gt;
&lt;br /&gt;
* Install sqlite3&lt;br /&gt;
* Open the database&lt;br /&gt;
* Delete all data from the contacts tables '''This will erase all your contacts and contact categories.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg install sqlite3&lt;br /&gt;
sqlite3 /home/root/Applications/Qtopia/qtopia_db.sqlite&lt;br /&gt;
&lt;br /&gt;
delete from contactcategories;&lt;br /&gt;
delete from contactaddresses;&lt;br /&gt;
delete from contactcustom;&lt;br /&gt;
delete from contactphonenumbers;&lt;br /&gt;
delete from contacts;&lt;br /&gt;
.quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first two are shell commands, the ''delete'' commands must by typed in the '''sqlite&amp;gt;''' prompt which appears after the sqlite3 command. Prompt is not included here to allow copy/paste.&lt;br /&gt;
&lt;br /&gt;
==== Exporting ====&lt;br /&gt;
Make sure you have sqlite3 client installed&lt;br /&gt;
&amp;lt;pre&amp;gt;opkg install sqlite3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we can play with the PIM database file located at&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/root/Applications/Qtopia/qtopia_db.sqlite&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exporting to VCF can be done via qtmail's 'send all' function (which only supports sms, bluetooth). Exporting all the contacts to a VCF file has yet to be documented. Here is [http://lists.openmoko.org/pipermail/community/2008-October/033588.html Vasco Névoa's contribution] to export to a tab-delimited file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sqlite3 ~/Applications/Qtopia/qtopia_db.sqlite \&lt;br /&gt;
'Select distinct nickname, title, firstname, middlename, lastname, suffix, \&lt;br /&gt;
profession, b_webpage, company, office, department, jobtitle, default_email, \&lt;br /&gt;
phone_number, h_webpage, spouse, gender, birthday, anniversary from contacts, \&lt;br /&gt;
contactphonenumbers where contacts.recid=contactphonenumbers.recid;'\&lt;br /&gt;
| sed 's/|/\t/g' &amp;gt; addressbook.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vasco says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Each contact that has more than one phone number will appear multiple&lt;br /&gt;
times because I haven't yet come up with a clean way to show the &amp;quot;join&amp;quot;&lt;br /&gt;
between the &amp;quot;contacts&amp;quot; and &amp;quot;contactphonenumbers&amp;quot; tables, so for now it&lt;br /&gt;
just duplicates the whole line, with the only difference being the phone&lt;br /&gt;
number. Also, this still does not take care of contacts with multiple email&lt;br /&gt;
addresses, so it is just a work in progress (but better than nothing if you're&lt;br /&gt;
in a jam).&lt;br /&gt;
&lt;br /&gt;
Anyone versed in SQL will be able to hack this into a full VCF file&lt;br /&gt;
generator... or you can just go the Python or Perl way (but I prefer to use&lt;br /&gt;
the nice tools already in place - SQL is pretty powerful if you know how).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can export all your contact's phone numbers on the same line with this SQL query. This works because the contactphonenumbers table has limited phone_type values. We can't do the same left outer join query for the emails because there can be an unlimited count of emails per contacts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select distinct nickname, title, firstname, middlename, lastname, suffix,&lt;br /&gt;
profession, b_webpage, company, office, department, jobtitle, default_email,&lt;br /&gt;
cpn1.phone_number as Home_Phone,&lt;br /&gt;
cpn2.phone_number as Home_Mobile,&lt;br /&gt;
cpn3.phone_number as Home_VOIP,&lt;br /&gt;
cpn4.phone_number as Home_Fax,&lt;br /&gt;
cpn5.phone_number as Business_Phone,&lt;br /&gt;
cpn6.phone_number as Business_Mobile,&lt;br /&gt;
cpn7.phone_number as Business_VOIP,&lt;br /&gt;
cpn8.phone_number as Business_Fax,&lt;br /&gt;
cpn9.phone_number as Business_Pager,&lt;br /&gt;
h_webpage, spouse, gender, birthday, anniversary from contacts&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn1&lt;br /&gt;
on contacts.recid=cpn1.recid and cpn1.phone_type=1&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn2&lt;br /&gt;
on contacts.recid=cpn2.recid and cpn2.phone_type=257&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn3&lt;br /&gt;
on contacts.recid=cpn3.recid and cpn3.phone_type=769&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn4&lt;br /&gt;
on contacts.recid=cpn4.recid and cpn4.phone_type=513&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn5&lt;br /&gt;
on contacts.recid=cpn5.recid and cpn5.phone_type=2&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn6&lt;br /&gt;
on contacts.recid=cpn6.recid and cpn6.phone_type=258&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn7&lt;br /&gt;
on contacts.recid=cpn7.recid and cpn7.phone_type=770&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn8&lt;br /&gt;
on contacts.recid=cpn8.recid and cpn8.phone_type=514&lt;br /&gt;
&lt;br /&gt;
left outer join contactphonenumbers as cpn9&lt;br /&gt;
on contacts.recid=cpn9.recid and cpn9.phone_type=1026;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I needed the vcf file for other purposes and found a script [http://sourceforge.net/projects/tsv2vcf/] on SF.net to convert a tab seperated value to a vcf file.&lt;br /&gt;
So I used this ugly thing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sqlite3 ~/Applications/Qtopia/qtopia_db.sqlite $1 'Select distinct firstname, lastname, middlename,&lt;br /&gt;
nickname, default_email,title,&lt;br /&gt;
cpn5.phone_number as Business_Phone,&lt;br /&gt;
cpn1.phone_number as Home_Phone,&lt;br /&gt;
cpn8.phone_number as Business_Fax,&lt;br /&gt;
cpn9.phone_number as Business_Pager,&lt;br /&gt;
cpn2.phone_number as Home_Mobile from contacts&lt;br /&gt;
left outer join contactphonenumbers as cpn1&lt;br /&gt;
on contacts.recid=cpn1.recid and cpn1.phone_type=1&lt;br /&gt;
left outer join contactphonenumbers as cpn2&lt;br /&gt;
on contacts.recid=cpn2.recid and cpn2.phone_type=257&lt;br /&gt;
left outer join contactphonenumbers as cpn3&lt;br /&gt;
on contacts.recid=cpn3.recid and cpn3.phone_type=769&lt;br /&gt;
left outer join contactphonenumbers as cpn4&lt;br /&gt;
on contacts.recid=cpn4.recid and cpn4.phone_type=513&lt;br /&gt;
left outer join contactphonenumbers as cpn5&lt;br /&gt;
on contacts.recid=cpn5.recid and cpn5.phone_type=2&lt;br /&gt;
left outer join contactphonenumbers as cpn6&lt;br /&gt;
on contacts.recid=cpn6.recid and cpn6.phone_type=258&lt;br /&gt;
left outer join contactphonenumbers as cpn7&lt;br /&gt;
on contacts.recid=cpn7.recid and cpn7.phone_type=770&lt;br /&gt;
left outer join contactphonenumbers as cpn8&lt;br /&gt;
on contacts.recid=cpn8.recid and cpn8.phone_type=514&lt;br /&gt;
left outer join contactphonenumbers as cpn9&lt;br /&gt;
on contacts.recid=cpn9.recid and cpn9.phone_type=1026;'| sed 's/|/\t/g' &amp;gt; addressbook.tsv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
put the output through tsv2vcf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perl tsv2vcf addressbook.tsv addressbook.vcf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and got a usable vcf File, with some problems with special chars.&lt;br /&gt;
&lt;br /&gt;
== Export raw config (including contacts) with Qtopia ==&lt;br /&gt;
&lt;br /&gt;
scp root@192.168.0.202:~/Applications/Qtopia/qtopia_db.sqlite /tmp/&lt;br /&gt;
sqlite3 /tmp/qtopia_db.sqlite .dump&lt;br /&gt;
&lt;br /&gt;
Then you can grep the output for your contacts.&lt;br /&gt;
&lt;br /&gt;
== Import and export for 2007.2 ==&lt;br /&gt;
&lt;br /&gt;
=== Basic Information ===&lt;br /&gt;
&lt;br /&gt;
Neo FreeRunner uses Evolution data server (eds) to save contacts.&lt;br /&gt;
However, the specific version used differs from what is probably used on your desktop (if you have Evolution installed).&lt;br /&gt;
&lt;br /&gt;
You ''cannot'' copy your addressbook.db from your desktop to Neo ([http://docs.openmoko.org/trac/ticket/1119 bug 1119]).&lt;br /&gt;
&lt;br /&gt;
=== Import and Manage Scripts ===&lt;br /&gt;
&lt;br /&gt;
If you want to import your old contacts to the Neo you could use this script:&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/manage-contacts Manage Contacts script] [http://www.placard.fr.eu.org/~roland/tmp/manage-contacts.py mirror]&lt;br /&gt;
&lt;br /&gt;
If you first want to remove all existing contacts you could use this script.&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/remove_all_contacts remove all script]&lt;br /&gt;
&lt;br /&gt;
If you have all contacts in seperate vcf files and just want to import all at once:&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/ac Simple script]&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/import_contacts Simple script for one big contactsfile]&lt;br /&gt;
&lt;br /&gt;
(please add a .py after the filename, sorry my hoster gives an error if i link to .py files, even .py.txt)&lt;br /&gt;
&lt;br /&gt;
In the simple scripts you need to add the following lines&lt;br /&gt;
ps = os.popen ('ps auxwwwwe | grep -m 1 DBUS_SESSION_BUS_ADDRESS')&lt;br /&gt;
l = ps.read ()&lt;br /&gt;
r = re.compile ('DBUS_SESSION_BUS_ADDRESS=(\S+)')&lt;br /&gt;
m = r.search (l)&lt;br /&gt;
a = m.expand ('\\1')&lt;br /&gt;
os.environ ['DBUS_SESSION_BUS_ADDRESS'] = a&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The script is for the 2007.2 Version (default install on Neo FreeRunner), not for Qtopia&lt;br /&gt;
&lt;br /&gt;
You need Python to use this script so do a&lt;br /&gt;
&lt;br /&gt;
opkg install python-dbus&lt;br /&gt;
&lt;br /&gt;
to install python and the python dbus module&lt;br /&gt;
&lt;br /&gt;
==== Manage Contacts Script ====&lt;br /&gt;
&lt;br /&gt;
'''This script needs all contacts in one big file'''&lt;br /&gt;
&lt;br /&gt;
'''You also could run this script on a ssh session!'''&lt;br /&gt;
&lt;br /&gt;
# Copy your big contacts file (contacts.txt) to your Neo&lt;br /&gt;
# Copy script to your Neo&lt;br /&gt;
# Connect via ssh to your Neo&lt;br /&gt;
# Fix special chars in your contacts file with you favorite text editor&lt;br /&gt;
# To import the file run on the SSH shell:&lt;br /&gt;
&lt;br /&gt;
python manage-contacts.py load &amp;lt; contacts.txt&lt;br /&gt;
&lt;br /&gt;
# For a backup your existing contacts on the Neo&lt;br /&gt;
&lt;br /&gt;
python manage-contacts.py dump &amp;gt; contacts.txt&lt;br /&gt;
&lt;br /&gt;
==== Simple Script ====&lt;br /&gt;
&lt;br /&gt;
'''You must run the script in the OM Terminal, not over ssh'''&lt;br /&gt;
&lt;br /&gt;
The script does a listdir and imports ALL files it found in that dir. (i'm a bad python programmer)&lt;br /&gt;
&lt;br /&gt;
# Copy all vcf files to a separate directory on my freerunner&lt;br /&gt;
# Copy the ac script to the parent directory also on my freerunner&lt;br /&gt;
# Have the contacts program running (so you have eds running too)&lt;br /&gt;
# Go to the terminal on the freerunner and type in the vcf directory: &amp;quot;python ../ac&amp;quot; (root@om-gta02:~/vcf# python ../ac)&lt;br /&gt;
## Note: '''You must call the script in the OM terminal''' not via Bluetooth or USB or you get a dbus error. Using &amp;quot;dbus-launch python ../ac&amp;quot; doesn't work either.&lt;br /&gt;
# Done :D&lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting ====&lt;br /&gt;
* Make sure you have python and python-dbus installed&lt;br /&gt;
* Make sure you have no illegal chars (utf) in the filename and inside the vcf files. (I had problems with Ü,Ä etc)&lt;br /&gt;
** The characters seem to work if you convert them from =C3=A4 type of format to proper UTF-8, and the vcards also specify UTF-8 charset. you cannot use other charsets besides UTF-8 since they are delivered via DBus which does not allow others.&lt;br /&gt;
* Only vcf files should be in your current directory so do a ../ac.&lt;br /&gt;
* You must call the script in the OM terminal not via Bluetooth or USB. If you do so a dbus error occur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authors ===&lt;br /&gt;
&lt;br /&gt;
* Simple script by smurfy - phil &amp;lt;openmoko at smurfy.de&amp;gt;&lt;br /&gt;
* Manage Contacts script by Roland Mas &amp;lt;lolando at debian.org&amp;gt;&lt;br /&gt;
* Remove all Contacts script / simple script for one big file by Andreas Dalsgaard &amp;lt;andreas.dalsgaard at gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to [[Import_Sim_Contacts]] for the original Python Script.&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced End User]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Community_Updates</id>
		<title>Talk:Community Updates</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Community_Updates"/>
				<updated>2008-11-30T03:08:08Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Add news to this page, and from time to time we will issue a community update.&lt;br /&gt;
&lt;br /&gt;
Watch these links:&lt;br /&gt;
* Git logs: [http://git.openmoko.org/?p=kernel.git;a=log;h=stable kernel/stable], [http://git.openmoko.org/?p=kernel.git;a=log;h=stable-tracking kernel/stable-tracking], [http://git.openmoko.org/?p=qtopia.git;a=log;h=master Qtopia/master], [http://git.openmoko.org/?p=openmoko.git;a=summary Openmoko's OpenEmbedded], [http://git.openmoko.org/?p=u-boot.git;a=log;h=stable uboot/stable], [http://git.openmoko.org/?p=qi.git;a=log Qi/master]&lt;br /&gt;
* Mailing lists: [http://lists.openmoko.org/nabble.html#nabble-f528196 hardware], [http://lists.openmoko.org/nabble.html#nabble-f528196 devel], [http://lists.openmoko.org/nabble.html#nabble-f1954 community], [http://lists.openmoko.org/nabble.html#nabble-f681789 kernel], [http://lists.openmoko.org/nabble.html#nabble-f528183 support], [http://lists.openmoko.org/nabble.html#nabble-f832940 SHR devel], [http://lists.projects.openmoko.org/pipermail/fdom-development/ FDOM devel]&lt;br /&gt;
* [http://projects.openmoko.org/ Project news].&lt;br /&gt;
&lt;br /&gt;
How are newsletters organized elsewhere:&lt;br /&gt;
http://lists.openmoko.org/pipermail/community/2008-October/032628.html&lt;br /&gt;
&lt;br /&gt;
[[/Archive 1]]&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
* A [http://scalde.free.fr/index.php?option=com_content&amp;amp;amp;view=article&amp;amp;amp;id=93:pong-pogresses&amp;amp;amp;catid=43:openmoko&amp;amp;amp;Itemid=66 Pong]&lt;br /&gt;
* [http://blog.1407.org/2008/11/19/openmoko-newrotate-050-lazy-edition-is-out/ Newrotate 0.5] is out, uses really little CPU now.&lt;br /&gt;
* Valério won the first 24h-coding prize at Sapo Codebits by turning [http://www.valeriovalerio.org/?p=187 freerunner in a mouse and gamepad] using the accelerometers. Code will be merged with [[ReMoko]].&lt;br /&gt;
* [[Gtkaddpoi]] 0.5 : software to add a Point Of Interest to TangoGPS.&lt;br /&gt;
* neoqplayer 0.1 : codenamed frog. A media player that conserves CPU cycles.&lt;br /&gt;
* First release of [[TwitterMoko]], a twitter client for openmoko.&lt;br /&gt;
* ShortOm 0.2 : an application/shell launcher.&lt;br /&gt;
* openmoko-panel-plugin 0.6 : support for fso frameworkd milestone 4.&lt;br /&gt;
* [[Unison]] works.&lt;br /&gt;
* [http://www.srcf.ucam.org/~taw27/openmoko/openmoocow/ OpenMooCow] 0.2. Mooes more, runs headless, tickleable.&lt;br /&gt;
* [http://www.cs.helsinki.fi/u/rantalai/freerunner/aaterm/ AaTerm], an improved openmoko-terminal2.&lt;br /&gt;
* Azmodie proposed a solution for right and middle clicking: Use the gnome accessibility tool [http://live.gnome.org/Mousetweaks/Home mousetweaks] ([http://packages.debian.org/lenny/mousetweaks .deb]).&lt;br /&gt;
&lt;br /&gt;
== Distributions ==&lt;br /&gt;
&lt;br /&gt;
* The [http://downloads.openmoko.org/releases/ official 2008.9 image] is back online without the questionable audio codecs.&lt;br /&gt;
* ASU. 2008.11 is not going to see the light, but at least the bug count is decreasing in the testing build (see testing [http://lists.openmoko.org/pipermail/devel/2008-November/003312.html penultimate] and [http://lists.openmoko.org/pipermail/devel/2008-November/003493.html latest] reports, where A7 with capacitor is declared good for m&amp;lt;i&amp;gt;e&amp;lt;/i&amp;gt;ss roduction ;). The testing build is the one with all the fixes from  optimization team (read their [http://lists.openmoko.org/pipermail/community/2008-November/036276.html last], [http://lists.openmoko.org/pipermail/community/2008-November/035769.html previous] reports), i.e. about 1 minute boot and [http://git.openmoko.org/?p=qtopia.git;a=commit;h=eb855af76018bedf6a89b9ac736d2ffa3961932b Volume control] during call.&lt;br /&gt;
* SHR. [http://lists.openmoko.org/nabble.html#nabble-td1576966 newer snapshot] available.&lt;br /&gt;
*  For [[Android]]: Walter Chang [http://lists.openmoko.org/pipermail/community/2008-November/036054.html made a soft keyboard]. Rui Castro implemented an [http://lists.openmoko.org/pipermail/community/2008-November/036564.html OnScreen Keyboard]. It was immediately included in Sean's image, to be released at [[User:Seanmcneil3|the usual page]] without mp3 support soon.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* For an armband to hold the Freerunner while exercising, Gilles Casse recommends the [http://www.caselogic.com/universal_mp3_sport_case_large/product_detail/index.cfm?modelid=120544 UMC-3] from Case Logic.&lt;br /&gt;
* Patrick Beck grafted a light on a miniusb - connector, to make an [http://yourse.de/wiki/doku.php?id=openmoko:usb_light OpenMoko flash light]. More lumens the bright white screen one get with the [http://projects.openmoko.org/projects/flashlight/ Flashlight] script.&lt;br /&gt;
* The [http://lists.openmoko.org/pipermail/community/2008-November/036132.html official fix] for buzzing is to add a 100uF capacity here and replace one resistance there. Technical details to be published in an Openmoko rework SOP paper. The company is looking at how to fix *all* devices sold.&lt;br /&gt;
* The Calypso GSM firmware moko10 was released, it fixes {{ticket|666}} for those users with 3G SIM cards. A few Indiana Jones types did try and follow [http://wiki.openmoko.org/wiki/GSM/Flashing the wiki instructions] to reflash, most with success, some with hubris (def: &amp;lt;i&amp;gt;excessive pride&amp;lt;/i&amp;gt;). For the rest of us, a user-friendly installer is being prepared.&lt;br /&gt;
&lt;br /&gt;
== Kernel and bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Big bad bug of the month prize goes to {{ticket|1841}} white screen of death (WSOD) after resume. This bug shows itself only by cold weather! Nicolas Dufresne found out that the culprit was probably a too tight timing in the JBT driver. Hopefully this will be fixed soon now, and we can all switch to Linux 2.6.28 happily everafter. Developpers must read [http://lists.openmoko.org/pipermail/community/2008-November/036142.html Andy's explanations] about kernel branch management.&lt;br /&gt;
&lt;br /&gt;
* Preview upcoming [http://lists.openmoko.org/nabble.html#nabble-td1569863 changes to the /sys] directory.&lt;br /&gt;
* Improvements to the touchscreen, backlight and accelleremometers kernel drivers.&lt;br /&gt;
* [[Qi]] gets lots of GTA03 love, audio back and a memory test ability (called when there are no valid kernels).&lt;br /&gt;
* The opkg package manager was patched to cache downloaded files.&lt;br /&gt;
&lt;br /&gt;
==Community==&lt;br /&gt;
* Removed the tagcloud extension that messed up with page formatting.&lt;br /&gt;
* There are many links to nice [[Ringtones]] on the wiki, but the page and the whole topic need a good overhaul.&lt;br /&gt;
* GnuPhone here we come: Sten Kvamme explains how to [http://lists.openmoko.org/pipermail/devel/2008-November/003318.html make a call from the command line] (on FSO).&lt;br /&gt;
* For your pleasure, here is the OpenMoko [[Jokes]] page. Thanks to the community, keep them coming ;) We (Coolcat and I) are also thinking about adding a pic of the week to the homepage, so stay tuned.&lt;br /&gt;
* Courtesy of Dale Maggee, [http://lists.openmoko.org/pipermail/community/2008-November/036053.html here] and [http://lists.openmoko.org/pipermail/community/2008-November/036142.html here] are a few funny splash screens. Note that you already trust Dale if you are using ''neotool'' to flash your Neo.&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/NeoTool</id>
		<title>NeoTool</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/NeoTool"/>
				<updated>2008-10-31T06:41:46Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: v1.2 released - info added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NeoTool is a bash script for your desktop system to provide a friendly GUI frontend to some common management tasks, like for example flashing Openmoko smartphones. It is aimed at being very intuitive and easy to use, and flexible enough to make it useful in a wide variety of circumstances.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
The main features of NeoTool are:&lt;br /&gt;
* Ability to flash your Neo via a GUI&lt;br /&gt;
* Ability to flash multiple images at once (for example, flash rootfs and the kernel at the same time)&lt;br /&gt;
* Ability to backup your Neo via a GUI&lt;br /&gt;
* Ability to backup Multiple images at once&lt;br /&gt;
* rootfs can be backed up to either a flashable image or a tar archive&lt;br /&gt;
* most / all configuration can be done via the GUI&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
[[Image:NeoTool.png|NeoTool opening screen]]&lt;br /&gt;
&lt;br /&gt;
== Download / Releases ==&lt;br /&gt;
&lt;br /&gt;
The most recent version of NeoTool is available for download at http://users.on.net/~antisol/neotool&lt;br /&gt;
&lt;br /&gt;
When a new version is released it will be announced on the community mailing list, and on this page.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The software prerequisites for NeoTool should be installed on most modern linux systems by default:&lt;br /&gt;
* bash&lt;br /&gt;
* zenity&lt;br /&gt;
* which&lt;br /&gt;
* awk&lt;br /&gt;
&lt;br /&gt;
* dfu-util is required to be able to flash your Neo, but NeoTool is able to download this automatically.&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
&lt;br /&gt;
* pipe viewer (pv), shows display while backing up rootfs&lt;br /&gt;
&lt;br /&gt;
* to backup rootfs, you need to have a [[USB_Networking|USB networking]] configured and working&lt;br /&gt;
&lt;br /&gt;
* mkfs-jffs2 needs to be installed on your neo to backup rootfs to a flashable image (type 'opkg install mkfs-jffs2' in ssh)&lt;br /&gt;
&lt;br /&gt;
* While not a requirement, backing up rootfs is much less painful if you set up an authorized_keys entry for your host on your Neo. To do this, run 'ssh-keygen' (preferrably as root) on your host, and then copy the contents of ~/.ssh/id_rsa.pub on your host into /home/root/.ssh/authorized_keys on your freerunner&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host# su&lt;br /&gt;
&lt;br /&gt;
root@host# ssh-keygen&lt;br /&gt;
&lt;br /&gt;
root@host# scp ~/.ssh/id_rsa.pub root@&amp;lt;Neo IP Address&amp;gt;:/home/root&lt;br /&gt;
&lt;br /&gt;
root@host# ssh root@&amp;lt;Neo IP Address&amp;gt;&lt;br /&gt;
root@om-gta02:~# cat id_rsa.pub &amp;gt;&amp;gt; /home/root/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will prevent you from having to enter the password for your Neo when you use ssh and scp.&lt;br /&gt;
&lt;br /&gt;
If you don't do this, you will need to enter your password repeatedly in order to backup rootfs.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
NeoTool should usually be run as root, although this is not required if you only want to backup rootfs and/or the kernel via scp.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ./neotool&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will initially be presented with the main menu. Most of the functions should be relatively self-explanatory&lt;br /&gt;
&lt;br /&gt;
(thorough documentation on usage goes here)&lt;br /&gt;
&lt;br /&gt;
== Revision History ==&lt;br /&gt;
&lt;br /&gt;
See [http://lists.openmoko.org/pipermail/community/2008-September/029731.html this thread] and [http://lists.openmoko.org/pipermail/community/2008-September/030257.html that update] for discussions on the community list.&lt;br /&gt;
&lt;br /&gt;
=== 09-Sep-2008 ===&lt;br /&gt;
&lt;br /&gt;
- ability to flash more than one image at once - the 'what do you wanna&lt;br /&gt;
flash' now has checkboxes instead of radio buttons, and all your&lt;br /&gt;
selections are flashed one after the other. (which i find very handy,&lt;br /&gt;
stops the FR powering down while you're typing the next dfu-util&lt;br /&gt;
command, or locating the next image - works great for flashing a new&lt;br /&gt;
distro &amp;amp; kernel). if an error occurs, subsequent files will not be flashed.&lt;br /&gt;
&lt;br /&gt;
- more confirmation / idiot-proofing - it now tells you what you're&lt;br /&gt;
doing much more clearly (i.e: &amp;quot;about to flash Kernel with /foo/bar.bin,&lt;br /&gt;
rootfs with /foo/bar.jffs&amp;quot;. allows you to confirm that you chose the&lt;br /&gt;
right images). also the 'choose file' dialogs tell you what you're&lt;br /&gt;
browsing for&lt;br /&gt;
&lt;br /&gt;
- ability for users to press 'cancel' at the various dialogs and exit&lt;br /&gt;
gracefully.&lt;br /&gt;
&lt;br /&gt;
- checks that dfu-util exists and is executable. I moved my dfu-util to&lt;br /&gt;
/usr/local/bin, so it looks there first, but it will also check the&lt;br /&gt;
current directory and prompt if it can't find it&lt;br /&gt;
&lt;br /&gt;
- I wasn't a fan of patching dfu-util, and the pulsating zenity progress&lt;br /&gt;
dialog drags my (prehistoric) PC to a crawl, so I disabled the progress&lt;br /&gt;
bar and use the text output of dfu-util instead.&lt;br /&gt;
&lt;br /&gt;
=== 12-Sep-2008 (v1.0) ===&lt;br /&gt;
&lt;br /&gt;
- Utility now has the ability to flash the splash image as per request&lt;br /&gt;
&lt;br /&gt;
- Utility can now also backup your device to flashable rootfs / kernel images (david might like this for building FDOM images)&lt;br /&gt;
&lt;br /&gt;
- Configurification is loaded on startup and saved in /etc/frutil (you can only modify settings if you run it as root)&lt;br /&gt;
&lt;br /&gt;
- more idiot proofing - uses 'which' to find dfu-util, checks to ensure it's being run as root, checks that zenity is installed on the host, checks that you have mkfs.jffs2 installed before backing up, checks that you have pv installed and acts accordingly (by either using it or not during the backup [this is not properly tested because I don't have pv, please report]), and possibly other stuff I've forgotten about.&lt;br /&gt;
&lt;br /&gt;
- new name (frutil) to reflect the new abilities&lt;br /&gt;
&lt;br /&gt;
=== 17-Sep-2008 (v1.1) ===&lt;br /&gt;
&lt;br /&gt;
- Added ChangeLog&lt;br /&gt;
&lt;br /&gt;
- Added ability to handle multiple DFU-capable devices&lt;br /&gt;
&lt;br /&gt;
- Changed references to 'freerunner' to 'neo'&lt;br /&gt;
&lt;br /&gt;
- name changed to NeoTool (despite implied connection with Keanu Reeves' crotch)&lt;br /&gt;
&lt;br /&gt;
- Added 'Reset to defaults' option&lt;br /&gt;
&lt;br /&gt;
- Added warning that flashing uboot on neo1973 may result in a paperweight&lt;br /&gt;
&lt;br /&gt;
- several small bugfixes&lt;br /&gt;
&lt;br /&gt;
- made backup functionality much more versatile:&lt;br /&gt;
&lt;br /&gt;
- made backup filenames configurable&lt;br /&gt;
&lt;br /&gt;
- Added ability to choose what to backup&lt;br /&gt;
&lt;br /&gt;
- Added rootfs backup type option (jffs2 or tar)&lt;br /&gt;
&lt;br /&gt;
- Added kernel backup method option (scp or dfu)&lt;br /&gt;
&lt;br /&gt;
- Added ability to backup uboot and splash&lt;br /&gt;
&lt;br /&gt;
=== 31-Sep-2008 (v1.2) ===&lt;br /&gt;
- Changed information at pre-flash prompt to include instructions for how to get to the NOR menu. eliminated any mention of NAND, as everything can be flashed from NOR.&lt;br /&gt;
&lt;br /&gt;
- bugfix - when user selects a filename under 'customize backup filenames' and then presses cancel, the selected filename was set to nothing.&lt;br /&gt;
&lt;br /&gt;
- NeoTool now checks that the path of backup files exist, and attempts to create it if it doesn't. This allows you to organise your backups in a folder hierarchy, i.e set the backup filename to: /data/openmoko/backups/{date}/{image}_backup and the {date} directory will be created by NeoTool, assuming /data/openmoko/backups exists and you have permission. &lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Suggestions? comments? feedback? problems?&lt;br /&gt;
* Are all welcome&lt;br /&gt;
* Email the Community list,&lt;br /&gt;
* or, email antisol (at) internode (dot) on (dot) net&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;NeoTool is perfect in every respect - if it breaks it's because you did something wrong.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;br /&gt;
[[Category:Host OSes]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Configuring_the_boot_splash_screens</id>
		<title>Configuring the boot splash screens</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Configuring_the_boot_splash_screens"/>
				<updated>2008-10-25T05:07:05Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: Plugged NeoTool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are three boot screens (also called splashes or splash screens) as of 13 Nov. 2007.  The U-Boot splash is displayed until the kernel takes over.  Presumably the kernel will eventually display a splash while it boots.  When userspace initializes, psplash displays a splash.  Finally X displays a splash when it starts.&lt;br /&gt;
&lt;br /&gt;
== U-boot Splash ==&lt;br /&gt;
&lt;br /&gt;
=== Original instructions ===&lt;br /&gt;
Is a raw framebuffer bitmap that is gzipped.&lt;br /&gt;
&lt;br /&gt;
Here is a basic description: http://svn.openmoko.org/trunk/src/host/splash/README&lt;br /&gt;
&lt;br /&gt;
Use [[dfu-util]] or [[NeoTool]] to send to the Openmoko.&lt;br /&gt;
&lt;br /&gt;
=== Instructions which worked for me ===&lt;br /&gt;
The above instruction did not work, unfortunately, maybe there were for a previous release of u-boot. The following did work for me:&lt;br /&gt;
&lt;br /&gt;
* Install the appropriate tools&lt;br /&gt;
** Download the README and the Perl script from http://svn.openmoko.org/developers/werner/splash/&lt;br /&gt;
** chmod a+rx *.pl&lt;br /&gt;
** Be sure to have netpbm installed&lt;br /&gt;
&lt;br /&gt;
* How to use the tools&lt;br /&gt;
** First, make a PNG 480x640x8 (or just get the original picture from http://wiki.openmoko.org/images/c/c2/), and name it System_boot.png&lt;br /&gt;
** Convert the System_boot.png into a compressed converted image file splash.gz, then download it to the splash partition (the neo1973 must be in u-boot mode, and you need dfu-util)&lt;br /&gt;
*** ./imghs.pl | gzip -9 &amp;gt; splash.gz&lt;br /&gt;
*** sudo ../bin/dfu-util -a splash -R -D splash.gz&lt;br /&gt;
** If the size of splash.gz is not exactly 0x5000, please see the next section.&lt;br /&gt;
&lt;br /&gt;
=== Modifying the size of the compressed splash image ===&lt;br /&gt;
NOTE... the README states you must issue two U-Boot commands to enable the flashed splash image to appear on the screen at boot:&lt;br /&gt;
&lt;br /&gt;
    ''setenv splashimage nand read.e 0x32000000 splash 0x5000\; unzip 0x32000000 0x33d00000 0x96000''&lt;br /&gt;
    ''saveenv''&lt;br /&gt;
&lt;br /&gt;
This is already a part of the U-Boot image received in the phone... however, if you make changes to your splash image, you may need to change the splashimage variable to compensate!&lt;br /&gt;
&lt;br /&gt;
0x5000 is the (maximum) size of the compressed file -- the splash.gz that gets created. If you've made changes to your image you may have increased the compressed size; if it exceeds 0x5000 (20480) bytes, the entire image will not load unless you increase this value in your splashimage U-Boot environment variable.&lt;br /&gt;
&lt;br /&gt;
Note that the framebuffer address on GTA02 is mapped to 0x8800000, not 0x33d00000&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
&lt;br /&gt;
This ticket has recent explanations: &amp;lt;strike&amp;gt;[http://docs.openmoko.org/trac/ticket/1735 1735]&amp;lt;/strike&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Linux kernel ==&lt;br /&gt;
''To Do''&lt;br /&gt;
&lt;br /&gt;
== psplash ==&lt;br /&gt;
You need to recompile psplash, because the picture is hardcoded.  There is a script in the source for psplash for making a new header file.  On Ubuntu, you need the libgtk2.0-dev package to run the script.&lt;br /&gt;
&lt;br /&gt;
 make-image-header.sh my_image.png HAND&lt;br /&gt;
 mv my_image-img.h psplash-hand-img.h&lt;br /&gt;
&lt;br /&gt;
Then add your custom header to the OpenEmbedded recipe (org.openembedded.dev/packages/psplash/files/openmoko/psplash-hand-img.h), or rebuild psplash by hand.&lt;br /&gt;
&lt;br /&gt;
== X splash ==&lt;br /&gt;
&lt;br /&gt;
The X server accepts a -root-ppm option, which takes a plain old (raw) ppm file.  Replace /usr/share/pixmaps/xsplash-vga.ppm on the phone or org.openembedded.dev/packages/xserver-kdrive-common/xserver-kdrive-common/openmoko/xsplash-vga.ppm in OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

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

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

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

	<entry>
		<id>http://wiki.openmoko.org/wiki/NeoTool</id>
		<title>NeoTool</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/NeoTool"/>
				<updated>2008-09-17T13:45:32Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: Created Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=NeoTool=&lt;br /&gt;
&lt;br /&gt;
NeoTool is a bash script which makes use of zenity to provide a friendly GUI frontend to some common management tasks. It is aimed at being very intuitive and easy to use, and flexible enough to make it usefull in a wide variety of circumstances.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
The main features of NeoTool are:&lt;br /&gt;
* Ability to flash your Neo via a GUI&lt;br /&gt;
* Ability to flash multiple images at once (for example, flash rootfs and the kernel at the same time)&lt;br /&gt;
* Ability to backup your Neo via a GUI&lt;br /&gt;
* Ability to backup Multiple images at once&lt;br /&gt;
* rootfs can be backed up to either a flashable image or a tar archive&lt;br /&gt;
* most / all configuration can be done via the GUI&lt;br /&gt;
&lt;br /&gt;
== Download / Releases ==&lt;br /&gt;
&lt;br /&gt;
The most recent version of NeoTool is available for download at http://users.on.net/~antisol/neotool&lt;br /&gt;
&lt;br /&gt;
When a new version is released it will be announced on the community mailing list, and on this page.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The software prerequisites for NeoTool should be installed on most modern linux systems by default:&lt;br /&gt;
* bash&lt;br /&gt;
* zenity&lt;br /&gt;
* which&lt;br /&gt;
* awk&lt;br /&gt;
&lt;br /&gt;
* dfu-util is required to be able to flash your Neo, but NeoTool is able to download this automatically.&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
&lt;br /&gt;
* pipe viewer (pv), shows display while backing up rootfs&lt;br /&gt;
&lt;br /&gt;
* to backup rootfs, you need to have a [[USB_Networking|USB networking]] configured and working&lt;br /&gt;
&lt;br /&gt;
* mkfs-jffs2 needs to be installed on your neo to backup rootfs to a flashable image (type 'opkg install mkfs-jffs2' in ssh)&lt;br /&gt;
&lt;br /&gt;
* While not a requirement, backing up rootfs is much less painful if you set up an authorized_keys entry for your host on your Neo. To do this, run 'ssh-keygen' (preferrably as root) on your host, and then copy the contents of ~/.ssh/id_rsa.pub on your host into /home/root/.ssh/authorized_keys on your freerunner&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host# su&lt;br /&gt;
&lt;br /&gt;
root@host# ssh-keygen&lt;br /&gt;
&lt;br /&gt;
root@host# scp ~/.ssh/id_rsa.pub root@&amp;lt;Neo IP Address&amp;gt;:/home/root&lt;br /&gt;
&lt;br /&gt;
root@host# ssh root#&amp;lt;Neo IP Address&amp;gt;&lt;br /&gt;
root@om-gta02:~# cat id_rsa.pub &amp;gt;&amp;gt; /home/root/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will prevent you from having to enter the password for your Neo when you use ssh and scp.&lt;br /&gt;
&lt;br /&gt;
If you don't do this, you will need to enter your password repeatedly in order to backup rootfs.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
NeoTool should usually be run as root, although this is not required if you only want to backup rootfs and/or the kernel via scp.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ./neotool&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will initially be presented with the main menu. Most of the functions should be relatively self-explanatory&lt;br /&gt;
&lt;br /&gt;
(thorough documentation on usage goes here)&lt;br /&gt;
&lt;br /&gt;
== Revision History ==&lt;br /&gt;
&lt;br /&gt;
See [http://lists.openmoko.org/pipermail/community/2008-September/029731.html this thread] and [http://lists.openmoko.org/pipermail/community/2008-September/030257.html that update] for discussions on the community list. &lt;br /&gt;
&lt;br /&gt;
=== 09-Sep-2008 ===&lt;br /&gt;
&lt;br /&gt;
- ability to flash more than one image at once - the 'what do you wanna &lt;br /&gt;
flash' now has checkboxes instead of radio buttons, and all your &lt;br /&gt;
selections are flashed one after the other. (which i find very handy, &lt;br /&gt;
stops the FR powering down while you're typing the next dfu-util &lt;br /&gt;
command, or locating the next image - works great for flashing a new &lt;br /&gt;
distro &amp;amp; kernel). if an error occurs, subsequent files will not be flashed.&lt;br /&gt;
&lt;br /&gt;
- more confirmation / idiot-proofing - it now tells you what you're &lt;br /&gt;
doing much more clearly (i.e: &amp;quot;about to flash Kernel with /foo/bar.bin, &lt;br /&gt;
rootfs with /foo/bar.jffs&amp;quot;. allows you to confirm that you chose the &lt;br /&gt;
right images). also the 'choose file' dialogs tell you what you're &lt;br /&gt;
browsing for&lt;br /&gt;
&lt;br /&gt;
- ability for users to press 'cancel' at the various dialogs and exit &lt;br /&gt;
gracefully.&lt;br /&gt;
&lt;br /&gt;
- checks that dfu-util exists and is executable. I moved my dfu-util to &lt;br /&gt;
/usr/local/bin, so it looks there first, but it will also check the &lt;br /&gt;
current directory and prompt if it can't find it&lt;br /&gt;
&lt;br /&gt;
- I wasn't a fan of patching dfu-util, and the pulsating zenity progress &lt;br /&gt;
dialog drags my (prehistoric) PC to a crawl, so I disabled the progress &lt;br /&gt;
bar and use the text output of dfu-util instead.&lt;br /&gt;
&lt;br /&gt;
=== 12-Sep-2008 (v1.0) ===&lt;br /&gt;
&lt;br /&gt;
- Utility now has the ability to flash the splash image as per request&lt;br /&gt;
&lt;br /&gt;
- Utility can now also backup your device to flashable rootfs / kernel images (david might like this for building FDOM images)&lt;br /&gt;
&lt;br /&gt;
- Configurification is loaded on startup and saved in /etc/frutil (you can only modify settings if you run it as root)&lt;br /&gt;
&lt;br /&gt;
- more idiot proofing - uses 'which' to find dfu-util, checks to ensure it's being run as root, checks that zenity is installed on the host, checks that you have mkfs.jffs2 installed before backing up, checks that you have pv installed and acts accordingly (by either using it or not during the backup [this is not properly tested because I don't have pv, please report]), and possibly other stuff I've forgotten about.&lt;br /&gt;
&lt;br /&gt;
- new name (frutil) to reflect the new abilities&lt;br /&gt;
&lt;br /&gt;
=== 17-Sep-2008 (v1.1) ===&lt;br /&gt;
&lt;br /&gt;
- Added ChangeLog&lt;br /&gt;
&lt;br /&gt;
- Added ability to handle multiple DFU-capable devices&lt;br /&gt;
&lt;br /&gt;
- Changed references to 'freerunner' to 'neo' &lt;br /&gt;
&lt;br /&gt;
- name changed to NeoTool (despite implied connection with Keanu Reeves' crotch)&lt;br /&gt;
&lt;br /&gt;
- Added 'Reset to defaults' option&lt;br /&gt;
&lt;br /&gt;
- Added warning that flashing uboot on neo1973 may result in a paperweight&lt;br /&gt;
&lt;br /&gt;
- several small bugfixes&lt;br /&gt;
&lt;br /&gt;
- made backup functionality much more versatile:&lt;br /&gt;
&lt;br /&gt;
	- made backup filenames configurable&lt;br /&gt;
&lt;br /&gt;
	- Added ability to choose what to backup&lt;br /&gt;
&lt;br /&gt;
	- Added rootfs backup type option (jffs2 or tar)&lt;br /&gt;
&lt;br /&gt;
	- Added kernel backup method option (scp or dfu)&lt;br /&gt;
&lt;br /&gt;
	- Added ability to backup uboot and splash&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Suggestions? comments? feedback? problems? &lt;br /&gt;
* Are all welcome&lt;br /&gt;
* Email the Community list, &lt;br /&gt;
* or, email antisol (at) internode (dot) on (dot) net&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;NeoTool is perfect in every respect - if it breaks it's because you did something wrong.&amp;lt;/strike&amp;gt;&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Toolchain</id>
		<title>Toolchain</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Toolchain"/>
				<updated>2008-08-04T10:25:55Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Toolchain}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
A toolchain is a set of tools that allows you to compile code. For Openmoko, we have to differentiate between the following use-cases:&lt;br /&gt;
&lt;br /&gt;
== Developing a single application ==&lt;br /&gt;
&lt;br /&gt;
For this, you should use a prebuilt toolchain from the Openmoko project. Here you can find a recipe to get started with this toolchain leading you through a series of steps to compile a project and run it on your target device. You might have heard about [[OpenEmbedded]], however as an application programmer, you should '''not''' be using [[OpenEmbedded]].&lt;br /&gt;
&lt;br /&gt;
== System Integration and customizing a distribution ==&lt;br /&gt;
&lt;br /&gt;
For this task, you should use [[OpenEmbedded]] which builds its own cross compiler during the bootstrapping/build process. System Integration and customizing a distribution is out of scope of this page.&lt;br /&gt;
&lt;br /&gt;
=Basic toolchain usage=&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
You should be reasonably familiar with Linux and its command line tools, have an x86-compatible computer with at least 1G of free disk space. You should have experience with compiling programs from source using your local compiler. The remainder of this document will also assume you have write access in your home directory (~) and &amp;lt;tt&amp;gt;/usr/local/&amp;lt;/tt&amp;gt; (becoming root if needed). If any of this is not the case, please call your local administrator for help.&lt;br /&gt;
&lt;br /&gt;
Last but not least you should have a working setup that allows you to compile native software packages using the autotools build system (the triade of '''./configure, make, make install''').&lt;br /&gt;
&lt;br /&gt;
A (partial) list of required packages -- please append as necessary:&lt;br /&gt;
&lt;br /&gt;
* For most Linux version you might only need to install the packages&lt;br /&gt;
** autoconf, automake&lt;br /&gt;
** binutils, gcc, gcc-c++&lt;br /&gt;
** libtool&lt;br /&gt;
** ccache&lt;br /&gt;
** intltool&lt;br /&gt;
&lt;br /&gt;
* For Ubuntu 8.04 ( Previous versions don't support libmokoui2 ) the following is required:&lt;br /&gt;
 sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev \&lt;br /&gt;
 ccache libxrender-dev intltool libmokoui2-dev libgconf2-dev mtools&lt;br /&gt;
&lt;br /&gt;
* For Fedora-Core the following is required, while logged in as &amp;lt;tt&amp;gt;root&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 yum install gcc gcc-c++ autoconf automake binutils libtool glib2-devel \&lt;br /&gt;
 ccache libXrender-devel intltool GConf2-devel mtools gettext-devel&lt;br /&gt;
Fedora-Core does not appear to have &amp;lt;tt&amp;gt;libmokoui2&amp;lt;/tt&amp;gt; available.&lt;br /&gt;
&lt;br /&gt;
==Downloading and installing==&lt;br /&gt;
&lt;br /&gt;
{{Note|Debian and Ubuntu i386 users (or others who can install a .deb) may wish to skip the below and instead use:&lt;br /&gt;
[http://andreasdalsgaard.blogspot.com/2008/07/openmoko-development-in-5-minutes.html Openmoko application development in 5 minutes] by Andreas Dalsgaard.}}&lt;br /&gt;
&lt;br /&gt;
The prebuilt toolchain can be downloaded from [http://downloads.openmoko.org/toolchains downloads.openmoko.org]:&lt;br /&gt;
&lt;br /&gt;
* Creating a destination directory can be anywhere, but for example:&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/sources&lt;br /&gt;
  cd ~/sources&lt;br /&gt;
&lt;br /&gt;
* Depending on your CPU type (x86_64 or i686) download the proper package:&lt;br /&gt;
&lt;br /&gt;
  wget http://downloads.openmoko.org/toolchains/openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2&lt;br /&gt;
 or&lt;br /&gt;
  wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2&lt;br /&gt;
&lt;br /&gt;
{{Note|Several people have had problems with the latest toolchain built 20080521.  If you experience errors, try an older version. (as of July 23, 2008)}}&lt;br /&gt;
&lt;br /&gt;
Next, you want to extract it on your filesystem. This toolchain is ''not'' relocatable, it needs to be installed into &amp;lt;tt&amp;gt;/usr/local/openmoko/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Now you have the following options:&lt;br /&gt;
&lt;br /&gt;
* Extract it directly as root, so use command &amp;quot;su&amp;quot; first (or prefix the tar command with &amp;quot;sudo&amp;quot; when you are using Debian/Ubuntu):&lt;br /&gt;
&lt;br /&gt;
   cd /&lt;br /&gt;
   tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2&lt;br /&gt;
&lt;br /&gt;
* On Debian-based systems, you can use alien(+fakeroot) to create an easy-to-uninstall package from this .tar.bz2:&lt;br /&gt;
&lt;br /&gt;
   bunzip2 openmoko-*-arm-linux-gnueabi-toolchain.tar.bz2&lt;br /&gt;
   gzip openmoko-*-arm-linux-gnueabi-toolchain.tar&lt;br /&gt;
   fakeroot alien -d openmoko-*-arm-linux-gnueabi-toolchain.tar.gz&lt;br /&gt;
   sudo dpkg -i openmoko_*-arm-linux-gnueabi-toolchain*.deb&lt;br /&gt;
&lt;br /&gt;
* The prebuilt toolchain is for x86_64 or i686. If you wanted, you could build it on your own with OE:&lt;br /&gt;
&lt;br /&gt;
   bitbake meta-toolchain-openmoko&lt;br /&gt;
&lt;br /&gt;
Finally, everytime you want to use this toolchain, you need to alter some environment variables, so that your tools will be found. The toolchain provides a script to do that, so the only thing you need to do is to source it.&lt;br /&gt;
Note that if you are not using a &amp;quot;sh&amp;quot; or &amp;quot;bash&amp;quot; shell (check with &amp;quot;echo $SHELL&amp;quot;) that you need&lt;br /&gt;
to start &amp;quot;sh&amp;quot; or &amp;quot;bash&amp;quot; first.&lt;br /&gt;
&lt;br /&gt;
 . /usr/local/openmoko/arm/setup-env&lt;br /&gt;
&lt;br /&gt;
* At least, you should add /usr/local/openmoko/arm/bin to your $PATH variable, otherwise the next steps won't work (om-conf and make).&lt;br /&gt;
&lt;br /&gt;
==Building OpenMoko Kernel from git repo using Toolchain==&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openmoko.org/git/kernel.git linux-2.6&lt;br /&gt;
 cd linux-2.6&lt;br /&gt;
 git checkout origin/stable&lt;br /&gt;
 cp defconfig-gta02 .config&lt;br /&gt;
 ./build&lt;br /&gt;
&lt;br /&gt;
Will fail with error message &amp;quot;arm-angstrom-linux-gnueabi-ld: unrecognized option '-Wl,-rpath-link,/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/lib'&amp;quot; until /usr/local/openmoko/arm/setup-env is modified. LDFLAGS should be changed from:&lt;br /&gt;
&lt;br /&gt;
 export LDFLAGS=&amp;quot;-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-rpath-link,${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-O1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
to:&lt;br /&gt;
&lt;br /&gt;
 export LDFLAGS=&amp;quot;-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -rpath-link ${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -O1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building a sample project==&lt;br /&gt;
&lt;br /&gt;
In a chosen destination directory (in this example ~/):&lt;br /&gt;
&lt;br /&gt;
* copy the downloaded sample application source:&lt;br /&gt;
&lt;br /&gt;
 cp -r /usr/local/openmoko/source/openmoko-sample2 ~/&lt;br /&gt;
&lt;br /&gt;
* Remember to set the proper environment variables (again with &amp;quot;sh&amp;quot; or &amp;quot;bash&amp;quot;) for openmoko:&lt;br /&gt;
&lt;br /&gt;
 . /usr/local/openmoko/arm/setup-env&lt;br /&gt;
&lt;br /&gt;
* You need to create a build configuration for this application. This also checks if all needed libraries, tools, etc.. is available on your system. If this fails see the notes about the needed packages in the section &amp;quot;Prerequisites&amp;quot; mentioned earlier.&lt;br /&gt;
&lt;br /&gt;
 om-conf openmoko-sample2&lt;br /&gt;
&lt;br /&gt;
* Optionally now you can modify the source code in openmoko-sample2/src.  Before the next step, go into the sample directory.&lt;br /&gt;
&lt;br /&gt;
 cd openmoko-sample2&lt;br /&gt;
&lt;br /&gt;
* If you are using an older version of the toolchain, you may have to create the makefile by running &amp;quot;./autogen.sh&amp;quot;.  Otherwise, to build the application from the source code just type:&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
* If there are errors (i.e. &amp;quot;You need to install gnome-common from the GNOME CVS&amp;quot;) deal with them.  Also see &amp;quot;Troubleshooting&amp;quot; section at the end of this page for known issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to install this project on host for staging usage later, a shared library, for example, you can do the following to install it into a given configured prefix.&lt;br /&gt;
 om-conf --prefix=/usr/local/openmoko openmoko-sample2&lt;br /&gt;
 cd openmoko-sample2&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
==How to modify the sample project==&lt;br /&gt;
&lt;br /&gt;
In order to build your own project by using openmoko-sample2 files, some changes are needed:&lt;br /&gt;
&lt;br /&gt;
* copy the downloaded sample application source&lt;br /&gt;
&lt;br /&gt;
 cp -r /usr/local/openmoko/source/openmoko-sample2 ~/&lt;br /&gt;
 &lt;br /&gt;
* rename the folder with the name of your project (in this example your-project-name) and delete old sample files &lt;br /&gt;
&lt;br /&gt;
 mv openmoko-sample2 your-project-name&lt;br /&gt;
 cd your-project-name&lt;br /&gt;
 cd src&lt;br /&gt;
 rm *.c&lt;br /&gt;
&lt;br /&gt;
* copy your sources (in this example your-sources) into src/&lt;br /&gt;
&lt;br /&gt;
 cp your-sources .&lt;br /&gt;
 cd ..&lt;br /&gt;
&lt;br /&gt;
* now in the main folder modify autogen.sh by updating the following lines&lt;br /&gt;
&lt;br /&gt;
 PKG_NAME=&amp;quot;your-project-name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* modify configure.ac by updating the following lines ('main.c' should be the main file in your project)&lt;br /&gt;
&lt;br /&gt;
 AC_INIT(your-project-name, 0.0.1, http://www.openmoko.org/)    &lt;br /&gt;
 AC_CONFIG_SRCDIR(src/main.c)&lt;br /&gt;
&lt;br /&gt;
* go into data/ folder and rename these files with the name of your project&lt;br /&gt;
&lt;br /&gt;
 cd data&lt;br /&gt;
 mv openmoko-sample.png your-project-name.png&lt;br /&gt;
 mv openmoko-sample.desktop your-project-name.desktop&lt;br /&gt;
&lt;br /&gt;
* modify Makefile.am inside data/ by updating the following lines&lt;br /&gt;
&lt;br /&gt;
 dist_desktop_DATA = your-project-name.desktop&lt;br /&gt;
 dist_appicon_DATA = your-project-name.png&lt;br /&gt;
&lt;br /&gt;
* modify Makefile.in inside data/ by updating the following lines&lt;br /&gt;
 &lt;br /&gt;
 dist_desktop_DATA = your-project-name.desktop&lt;br /&gt;
 dist_appicon_DATA = your-project-name.png&lt;br /&gt;
&lt;br /&gt;
* modify your-project-name.desktop by updating the following lines&lt;br /&gt;
&lt;br /&gt;
 Name=your-project-name&lt;br /&gt;
 Encoding=UTF-8&lt;br /&gt;
 Version=0.0.1&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Exec=your-project-name&lt;br /&gt;
&lt;br /&gt;
* and by adding the following line&lt;br /&gt;
&lt;br /&gt;
 Icon=your-project-name&lt;br /&gt;
&lt;br /&gt;
* move into src/ folder&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 cd src&lt;br /&gt;
&lt;br /&gt;
* modify Makefile.am by updating the following lines&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = your-project-name	&lt;br /&gt;
 your_project_name_SOURCES = \				&lt;br /&gt;
  		main.c &lt;br /&gt;
 your_project_name_LDADD  = @DEPENDENCIES_LIBS@&lt;br /&gt;
&lt;br /&gt;
* be sure to put instead of main.c all your .c and .h files and modify all the '-' characters with '_' in the variable names&lt;br /&gt;
&lt;br /&gt;
==Packaging your application==&lt;br /&gt;
&lt;br /&gt;
We have included a script to make an ipkg out of your application. Note that this is not needed to test your application on the Neo (for that you can just scp the resulting binary and data over), however it's very handy if you want to distribute your application to others.&lt;br /&gt;
&lt;br /&gt;
 om-make-ipkg openmoko-sample2&lt;br /&gt;
&lt;br /&gt;
Now you got openmoko-sample2_0.1_armv4t.ipk , you can `scp' it to your&lt;br /&gt;
Neo and install it:&lt;br /&gt;
&lt;br /&gt;
 scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202:&lt;br /&gt;
 ssh root@192.168.0.202 opkg install openmoko-sample2_0.1_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
Note that while you can redistribute the generated ipkg, be aware that this is a bare-bones ipk that contains no further information, i.e. you will lack library dependencies. See below how to fix this.&lt;br /&gt;
&lt;br /&gt;
You can also supply the version number, a description, and an author / contacts string in a control file:&lt;br /&gt;
&lt;br /&gt;
 om-make-ipkg myapp myapp_control&lt;br /&gt;
&lt;br /&gt;
A template of myapp_control:&lt;br /&gt;
&lt;br /&gt;
 Package: $appname&lt;br /&gt;
 Version: 0.1&lt;br /&gt;
 Description: package built by openmoko toolchain&lt;br /&gt;
 Section: openmoko/applications&lt;br /&gt;
 Priority: optional&lt;br /&gt;
 Maintainer: $USER&lt;br /&gt;
 Architecture: armv4t&lt;br /&gt;
 Homepage: http://www.openmoko.org/&lt;br /&gt;
 Depends: &lt;br /&gt;
 Source: ${SRC}&lt;br /&gt;
&lt;br /&gt;
==Where to go from here==&lt;br /&gt;
&lt;br /&gt;
Using the external toolchain is an easy way to build applications for your Neo. If you are familiar with this procedure, you might also want to look into&lt;br /&gt;
* Using [[Qemu]] to test your applications in an emulated environment&lt;br /&gt;
** Ubuntu users might prefer to look at [[Automatic_emulation_in_Ubuntu]]&lt;br /&gt;
* Using [[Host-based_development_with_Xoo_and_Xephyr|host-based development]] to improve your efficiency&lt;br /&gt;
* Using [[OpenEmbedded]] to customize your Openmoko distribution image&lt;br /&gt;
&lt;br /&gt;
=Advanced topics=&lt;br /&gt;
==Using toolchain provided libraries==&lt;br /&gt;
Add the necessary libraries to the _LDADD field in src/Makefile.am, for example:&lt;br /&gt;
 openmoko_sample2_LDADD  = @DEPENDENCIES_LIBS@ -lmokogsmd2&lt;br /&gt;
&lt;br /&gt;
make sure to run om-conf again after this.&lt;br /&gt;
&lt;br /&gt;
==Installing additional libraries into the toolchain==&lt;br /&gt;
&lt;br /&gt;
Sooner or later you will want to compile an application that has dependencies which can't be fulfilled by the precompiled toolchain, e.g. some obscure libraries.&lt;br /&gt;
&lt;br /&gt;
In that case, feel free to request the inclusion of additional libraries into the next release of the OpenMoko toolchain. Until then, here is how you enhance your already installed toolchain. Say, we want to add the library called liburiparse:&lt;br /&gt;
&lt;br /&gt;
 cd ~/source&lt;br /&gt;
 wget http://downloads.sourceforge.net/uriparser/uriparser-0.6.0.tar.bz2&lt;br /&gt;
 ./configure --host=arm-angstrom-linux-gnueabi \&lt;br /&gt;
 --prefix=/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
That's it.&lt;br /&gt;
&lt;br /&gt;
==Getting your application packaged by OE==&lt;br /&gt;
&lt;br /&gt;
If you have written a cool application which you want to share with others, the best way to do that is to&lt;br /&gt;
&lt;br /&gt;
# upload your application source code to a public location&lt;br /&gt;
# submit a [[BitBake]] recipe to [[OpenEmbedded]], preferably via the [http://bugzilla.openembedded.org OpenEmbedded bugtracker].&lt;br /&gt;
&lt;br /&gt;
See also [[Customizing the Openmoko Distribution]].&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
* Some Versions of the Toolchain have corrupt .la files. If you compile an application using the Toolchain and you receive a '/space/fic/openmoko-daily/neo1973/work/armv4t-angstrom-linux-gnueabi/pango-1.18.3-r0/pango-1.18.3/pango/libpangoft2-1.0.la' error, you are affected. To fix that you should go to your &amp;quot;/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib&amp;quot; directory and open the affected .la files and change &amp;quot;/space/fic...&amp;quot; to &amp;quot;/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib&amp;quot;. You have to fix more than one .la file. For the pango error you have to change &amp;quot;libpangocairo-1.0.la&amp;quot;, but there are more corrupt .la files.&lt;br /&gt;
&lt;br /&gt;
Attached is a beta fix for the .la problem. Untar the .tar.bz2 as root, and execute the following bash script as root:&lt;br /&gt;
&lt;br /&gt;
        #!/bin/sh&lt;br /&gt;
        DIR=/usr/local/openmoko/arm&lt;br /&gt;
        for la in `find $DIR -iname \*.la`; do&lt;br /&gt;
         dependency_libs=&lt;br /&gt;
         . $la&lt;br /&gt;
         for lib in $dependency_libs ; do&lt;br /&gt;
         delib=`echo $lib | grep -E .la$`&lt;br /&gt;
         if [ -z $delib ] ; then&lt;br /&gt;
          echo -n&lt;br /&gt;
         elif [ -f $delib ]; then&lt;br /&gt;
          echo -n&lt;br /&gt;
         else&lt;br /&gt;
          basedelib=`basename $delib`&lt;br /&gt;
          replacedelibs=`find $DIR -iname $basedelib`&lt;br /&gt;
          found=0&lt;br /&gt;
          for replacedelib in $replacedelibs ; do&lt;br /&gt;
          if [ $replacedelib == $delib ]; then&lt;br /&gt;
           found=1&lt;br /&gt;
          fi&lt;br /&gt;
          done&lt;br /&gt;
          if [ $found -gt 0 ] ; then&lt;br /&gt;
           echo -n&lt;br /&gt;
          else&lt;br /&gt;
            sed_delib=`echo $delib | sed 's/\//\\\\\//g'`&lt;br /&gt;
            sed_replacedelib=`echo $replacedelib | sed 's/\//\\\\\//g'`&lt;br /&gt;
            # A bit slow, we could chain expressions for speed. :)&lt;br /&gt;
            cp $la $la.old&lt;br /&gt;
            cat $la | sed &amp;quot;s/$sed_delib/$sed_replacedelib/g&amp;quot; &amp;gt; $la.new&lt;br /&gt;
            mv $la.new $la&lt;br /&gt;
            rm $la.old&lt;br /&gt;
          fi&lt;br /&gt;
         fi&lt;br /&gt;
         done&lt;br /&gt;
        done&lt;br /&gt;
&lt;br /&gt;
* Please use the [http://lists.openmoko.org/mailman/listinfo/openmoko-devel Openmoko-Devel] mailing list.&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/USB_Networking</id>
		<title>USB Networking</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/USB_Networking"/>
				<updated>2008-07-31T16:39:51Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: /* Option A - Tested with FC8 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OpenMoko Networking Setup =&lt;br /&gt;
&lt;br /&gt;
In order to communicate via TCP/IP to your FreeRunner, a basic understanding of the networking expectations is required.  Each end of the USB connection forms a LAN (local area network) segment, with the FreeRunner's USB networking device at one end (default 192.168.0.202) and your laptop or desktop at the other end (192.168.0.200 in this guide).&lt;br /&gt;
&lt;br /&gt;
Normally, your desktop machine will know how to reach the Internet, having had its gateway (the IP address of the machine or device which knows how to send packets to machines beyond your subnet) configured via DHCP or statically (probably via a router).  For the FreeRunner to reach the Internet, your desktop will have to be configured to route and masquerade (NAT) packets from it.  &lt;br /&gt;
&lt;br /&gt;
Normally, none of this is an issue, but problems can arise when the subnet between the FreeRunner and your desktop overlap with the desktop to the router (which forms a second LAN), since your desktop might not know how to route traffic properly.&lt;br /&gt;
&lt;br /&gt;
= DNS =&lt;br /&gt;
&lt;br /&gt;
In addition to routing issues, to be practical, DNS will need to work.  In some cases, you might already be running a DNS server on your desktop such as dnsmasq or bind9, which is the default assumption the FreeRunner makes.  In other cases, you'll need to configure DNS to that of your router, or a DNS server further out on the internet such as that provided by your ISP.&lt;br /&gt;
&lt;br /&gt;
= Linux Kernel Support =&lt;br /&gt;
&lt;br /&gt;
Your Linux desktop/laptop needs to have suitable support, in particular, you will need to have enabled full masquerading in the kernel and USB networking options:&lt;br /&gt;
&lt;br /&gt;
* CONFIG_USB_USBNET&lt;br /&gt;
* CONFIG_USB_NET_CDCETHER&lt;br /&gt;
&lt;br /&gt;
Both USB networking options are available in the ''Device Drivers -&amp;gt; USB support -&amp;gt; USB Network Adapters'' or ''Device Drivers -&amp;gt; Network Device Support -&amp;gt; USB Network Adapters -&amp;gt; Multipurpose USB Networking Framework''. For more info see the [http://www.linux-usb.org/usbnet/ usbnet driver homepage].&lt;br /&gt;
&lt;br /&gt;
It can be complex to set all the correct options for masquerading in the kernel if they are not turned on.  This could be detailed further.&lt;br /&gt;
&lt;br /&gt;
= Simple Manual Linux Configuration =&lt;br /&gt;
&lt;br /&gt;
Try this first.  If it works, then you can add permanent configuration or use more sophisticated setups below:&lt;br /&gt;
&lt;br /&gt;
(as root on your host machine):&lt;br /&gt;
&lt;br /&gt;
 iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
 ifconfig usb0 192.168.0.200&lt;br /&gt;
&lt;br /&gt;
If your Internet connection is also in the range 192.168.0.x then instead you might want to use:&lt;br /&gt;
&lt;br /&gt;
 ifconfig usb0 192.168.0.200 netmask 255.255.255.248&lt;br /&gt;
&lt;br /&gt;
Then (ideally, not as root):&lt;br /&gt;
&lt;br /&gt;
 ssh root@192.168.0.202&lt;br /&gt;
&lt;br /&gt;
== Testing Your Connection ==&lt;br /&gt;
&lt;br /&gt;
Log in with a blank password (press enter).  Now, make sure you can ping back to your desktop:&lt;br /&gt;
&lt;br /&gt;
 ping 192.168.0.200&lt;br /&gt;
&lt;br /&gt;
This tests the basic network connection.&lt;br /&gt;
&lt;br /&gt;
(Note that some systems like Vista, don't respond to ICMP ping by default) &lt;br /&gt;
&lt;br /&gt;
Or your router, for example (your IP will probably be different):&lt;br /&gt;
&lt;br /&gt;
 ping 192.168.1.99&lt;br /&gt;
&lt;br /&gt;
Or to a Google IP:&lt;br /&gt;
&lt;br /&gt;
 ping 74.125.19.147&lt;br /&gt;
&lt;br /&gt;
This demonstrates that masquerading is working - your desktop is sending/receiving packets to the wider internet.&lt;br /&gt;
&lt;br /&gt;
== Configure DNS ==&lt;br /&gt;
&lt;br /&gt;
Note that step won't help much if you don't have connectivity above.  DNS is configured in /etc/resolv.conf.  It should contain:&lt;br /&gt;
&lt;br /&gt;
 nameserver 192.168.0.200&lt;br /&gt;
&lt;br /&gt;
Which means that by default it expects your desktop to have a DNS server.  On some Linux and Windows systems this is true, especially those configured as servers, but in general it is not.  You can install packages such as ''bind9'' or ''dnsmasq''.   See the section below on [[USB Networking#More on DNS|More on DNS]] for other solutions.    &lt;br /&gt;
&lt;br /&gt;
Test if it works:&lt;br /&gt;
&lt;br /&gt;
 ping www.google.com&lt;br /&gt;
&lt;br /&gt;
If so, then this is sufficient for most internet access. But manual changes to resolv.conf are usually lost later if for example one uses DHCP, especially for WiFi, and so may not be convenient to configure manually.&lt;br /&gt;
&lt;br /&gt;
== Firewall Issues == &lt;br /&gt;
&lt;br /&gt;
On some systems, you may have firewall rules which prevent this working - such as added by the iptables service on Fedora.  You may care to stop these, and/or review any rules or policies you think might cause issues.&lt;br /&gt;
&lt;br /&gt;
= Make it Permanent =&lt;br /&gt;
&lt;br /&gt;
Based up [http://blog.haerwu.biz/2007/03/22/hotpluging-usbnet/ Hotplugging usbnet] by Marcin 'Hrw' Juszkiewicz.&lt;br /&gt;
&lt;br /&gt;
== Debian, Ubuntu and others ==&lt;br /&gt;
&lt;br /&gt;
Edit /etc/network/interfaces and add:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 allow-hotplug usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
        address 192.168.0.200&lt;br /&gt;
        netmask 255.255.255.192&lt;br /&gt;
        post-up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.192/26&lt;br /&gt;
        post-up echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
        post-up iptables -P FORWARD ACCEPT&lt;br /&gt;
        pre-down iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.192/26&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is more sophisticated than the manual setup.  The allow-hotplug stanza ties into Linux hotplug system so that when the device appears and vanishes, as happens when the FreeRunner's is connected via USB, this is run.  &lt;br /&gt;
&lt;br /&gt;
In addition, the desktop-side netmask is limited to a much smaller range, so that overlapping subnets are less of a problem - Linux will use more specific routes first when deciding where to send packets.&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu Issues ===&lt;br /&gt;
&lt;br /&gt;
Ubuntu Feisty, Gutsy and Hardy reportedly have a bug where ifdown is not run when the interface is unplugged, meaning this only works once after the system is booted.  This is mentioned at https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/130437 &lt;br /&gt;
&lt;br /&gt;
One can patch /etc/udev/rules.d/85-ifupdown.rules, editing the two lines at the end of the file:&lt;br /&gt;
&lt;br /&gt;
 SUBSYSTEM==&amp;quot;net&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;, GOTO=&amp;quot;net_start&amp;quot;&lt;br /&gt;
 GOTO=&amp;quot;net_end&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LABEL=&amp;quot;net_start&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Bring devices up and down only if they're marked auto.&lt;br /&gt;
 # Use start-stop-daemon so we don't wait on dhcp&lt;br /&gt;
 ACTION==&amp;quot;add&amp;quot;,          RUN+=&amp;quot;/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifup -- --allow auto $env{INTERFACE}&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LABEL=&amp;quot;net_end&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;,       RUN+=&amp;quot;/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifdown -- --allow auto $env{INTERFACE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The bug is that the LABEL=&amp;quot;net_end&amp;quot; is at the wrong position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  This appears to be fixed in Ubuntu 8.04 [[User:Mattt|Mattt]] 11:38, 30 July 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Mandriva ==&lt;br /&gt;
&lt;br /&gt;
Tested with Mandriva 2008.1. The idea here is that we will carve out a small (8 hosts) subnet from the main subnet. So our netmask will be 255.255.255.252&lt;br /&gt;
&lt;br /&gt;
This first file configures the network system for the usb0 interface. Any time you plug in the FreeRunner the interface will be configured. &lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network-scripts/ifcfg-usb0:&lt;br /&gt;
&lt;br /&gt;
 DEVICE=usb0&lt;br /&gt;
 BOOTPROTO=static&lt;br /&gt;
 IPADDR=192.168.0.200&lt;br /&gt;
 NETMASK=255.255.255.252&lt;br /&gt;
 ONBOOT=yes&lt;br /&gt;
 METRIC=10&lt;br /&gt;
 MII_NOT_SUPPORTED=no&lt;br /&gt;
 USERCTL=yes&lt;br /&gt;
&lt;br /&gt;
This next file configures the static routes that we need to communicate to the subnet. Since it has &amp;quot;usb0&amp;quot; in the name, the system will automatically apply these static routes any time that the usb0 interface is configured. (i.e. when you connect the FreeRunner)&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network-scripts/usb0-routes:&lt;br /&gt;
&lt;br /&gt;
 ADDRESS0=192.168.0.200&lt;br /&gt;
 NETMASK0=255.255.255.252&lt;br /&gt;
&lt;br /&gt;
Now we need to restart the network system to pick up the changes.&lt;br /&gt;
&lt;br /&gt;
 service network restart&lt;br /&gt;
&lt;br /&gt;
== SuSE ==&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network/ifcfg-usb0:&lt;br /&gt;
&lt;br /&gt;
 # USB configuration for PDAs (openmoko)&lt;br /&gt;
 IPADDR=192.168.0.200&lt;br /&gt;
 NETMASK=255.255.255.0&lt;br /&gt;
 STARTMODE=onboot&lt;br /&gt;
&lt;br /&gt;
For more information on getting USB networking up using YaST, see [[USB Networking with openSUSE]].&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
&lt;br /&gt;
=== Option A - Tested with FC8 &amp;amp; FC5 ===&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network-scripts/ifcfg-usb0:&lt;br /&gt;
&lt;br /&gt;
 # USB configuration for PDAs (openmoko)&lt;br /&gt;
 # from http://www.handhelds.org/moin/moin.cgi/UsbNet&lt;br /&gt;
 DEVICE=usb0&lt;br /&gt;
 BOOTPROTO=none&lt;br /&gt;
 IPADDR=192.168.0.200&lt;br /&gt;
 NETMASK=255.255.255.0&lt;br /&gt;
 ONBOOT=yes&lt;br /&gt;
&lt;br /&gt;
=== Option B ===&lt;br /&gt;
&lt;br /&gt;
This setup is probably over-complex:&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network-scripts/ifcfg-usb0:&lt;br /&gt;
&lt;br /&gt;
 DEVICE=usb0&lt;br /&gt;
 IPADDR=192.168.0.200&lt;br /&gt;
 NETMASK=255.255.255.0&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/network-scripts/ifup-usb:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 . /etc/init.d/functions&lt;br /&gt;
 &lt;br /&gt;
 cd /etc/sysconfig/network-scripts&lt;br /&gt;
 . ./network-functions&lt;br /&gt;
 &lt;br /&gt;
 [ -f ../network ] &amp;amp;&amp;amp; . ../network&lt;br /&gt;
 &lt;br /&gt;
 CONFIG=${1}&lt;br /&gt;
 &lt;br /&gt;
 need_config ${CONFIG}&lt;br /&gt;
 &lt;br /&gt;
 source_config&lt;br /&gt;
 &lt;br /&gt;
 NETBITS=`ipcalc -p ${IPADDR} ${NETMASK} | awk -F'=' '{print $2;}'`&lt;br /&gt;
 &lt;br /&gt;
 /sbin/ip addr flush dev ${DEVICE} 2&amp;gt;/dev/null&lt;br /&gt;
 /sbin/ip link set dev ${DEVICE} up&lt;br /&gt;
 /sbin/ip addr add dev ${DEVICE} ${IPADDR}/${NETBITS}&lt;br /&gt;
 &lt;br /&gt;
 /sbin/iptables -I POSTROUTING -t nat -j MASQUERADE -s ${IPADDR}/${NETBITS}&lt;br /&gt;
 /sbin/sysctl net.ipv4.ip_forward=1&lt;br /&gt;
 /sbin/iptables -I FORWARD -s ${IPADDR}/${NETBITS} -j ACCEPT&lt;br /&gt;
 /sbin/iptables -I FORWARD -d ${IPADDR}/${NETBITS} -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Set /etc/sysconfig/network-scripts/ifdown-usb:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 . /etc/init.d/functions&lt;br /&gt;
 &lt;br /&gt;
 cd /etc/sysconfig/network-scripts&lt;br /&gt;
 . ./network-functions&lt;br /&gt;
 &lt;br /&gt;
 [ -f ../network ] &amp;amp;&amp;amp; . ../network&lt;br /&gt;
 &lt;br /&gt;
 CONFIG=${1}&lt;br /&gt;
 &lt;br /&gt;
 need_config ${CONFIG}&lt;br /&gt;
 &lt;br /&gt;
 source_config&lt;br /&gt;
 &lt;br /&gt;
 NETBITS=`ipcalc -p ${IPADDR} ${NETMASK} | awk -F'=' '{print $2;}'`&lt;br /&gt;
 &lt;br /&gt;
 /sbin/iptables -D FORWARD -d ${IPADDR}/${NETBITS} -j ACCEPT&lt;br /&gt;
 /sbin/iptables -D FORWARD -s ${IPADDR}/${NETBITS} -j ACCEPT&lt;br /&gt;
 /sbin/sysctl net.ipv4.ip_forward=0&lt;br /&gt;
 /sbin/iptables -D POSTROUTING -t nat -j MASQUERADE -s ${IPADDR}/${NETBITS}&lt;br /&gt;
 &lt;br /&gt;
 /sbin/ip link set dev ${DEVICE} down&lt;br /&gt;
 /sbin/ip addr flush dev ${DEVICE} 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
If you are using NetworkManager, restart it and enable the usb device from its menu, otherwise it will disable your connection shortly after you enable it.&lt;br /&gt;
&lt;br /&gt;
 /sbin/service NetworkManager restart&lt;br /&gt;
&lt;br /&gt;
== Red Hat or Similar (tested with Workstation 5) ==&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig/network-scripts/net.hotplug:&lt;br /&gt;
&lt;br /&gt;
After this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    case $INTERFACE in&lt;br /&gt;
	# interfaces that are registered after being &amp;quot;up&amp;quot; (?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	usb0)&lt;br /&gt;
		ifconfig usb0 192.168.0.200 netmask 255.255.255.0&lt;br /&gt;
		route add 192.168.0.202 usb0&lt;br /&gt;
		iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
		iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
                iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
                echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
		exit 0&lt;br /&gt;
	;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
&lt;br /&gt;
Open /etc/conf.d/net and add:&lt;br /&gt;
&lt;br /&gt;
 # Neo&lt;br /&gt;
 config_usb0=( &amp;quot;192.168.0.200 netmask 255.255.255.0&amp;quot; )&lt;br /&gt;
 routes_usb0=( &amp;quot;192.168.0.202/32 via 192.168.0.200&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Create a new init script:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/init.d&lt;br /&gt;
 ln -s net.lo net.usb0&lt;br /&gt;
&lt;br /&gt;
Put iptables into use:&lt;br /&gt;
&lt;br /&gt;
 iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
 iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
 iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
&lt;br /&gt;
Store them:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/iptables save&lt;br /&gt;
&lt;br /&gt;
If you want the routing by default:&lt;br /&gt;
&lt;br /&gt;
 rc-update add iptables default&lt;br /&gt;
&lt;br /&gt;
You must also inform the kernel, to start forwarding.  &lt;br /&gt;
&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
One way to automate all this is to create /etc/conf.d/net.usb0 as follows. It sets IP forwarding and the iptables rules all in one go. It removes the iptables rules and disables ip forwarding when the FreeRunner is unplugged.&lt;br /&gt;
 &lt;br /&gt;
 preup() {&lt;br /&gt;
        echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
        iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
        iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
        iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
        return 0&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 postdown() {&lt;br /&gt;
        echo 0 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
        iptables -D INPUT -s 192.168.0.202 -j ACCEPT&lt;br /&gt;
        iptables -D OUTPUT -s 192.168.0.200 -j ACCEPT&lt;br /&gt;
        iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;
        return 0&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== MacOS X ==&lt;br /&gt;
See the [[MacOS_X#USB_Networking|USB Networking section in the MacOS X article]].&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
See the [[Neo1973_and_Windows#USB_Ethernet_emulation|USB Ethernet emulation section in the Neo1973 and Windows]] article.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= More on DNS =&lt;br /&gt;
&lt;br /&gt;
== Hostnames ==&lt;br /&gt;
&lt;br /&gt;
Instead of using the IP address, instead enter in your desktop's /etc/hosts:&lt;br /&gt;
&lt;br /&gt;
 192.168.0.202 openmoko&lt;br /&gt;
&lt;br /&gt;
Then instead type:&lt;br /&gt;
&lt;br /&gt;
 ssh root@openmoko&lt;br /&gt;
&lt;br /&gt;
== DNS proxying ==&lt;br /&gt;
&lt;br /&gt;
If you move about, making assumptions about the network may not be convenient, and it is possible to proxy DNS requests via your host laptop (which you are also taking with you).  There are a number of ways to do this:&lt;br /&gt;
&lt;br /&gt;
=== Proxying with dnrd ===&lt;br /&gt;
&lt;br /&gt;
The script is designed to use [http://dnrd.sourceforge.net/ dnrd] as the DNS proxy. The [http://buildhost.automated.it/gta01 script] and a copy of [http://buildhost.automated.it/dnrd-2.20.3.tar.gz dnrd] are available. The script also performs the initial setup of the connection as per the [[USB_Networking#Manual_method]] above.&lt;br /&gt;
&lt;br /&gt;
=== Proxying with a UDP forwarder ===&lt;br /&gt;
&lt;br /&gt;
Another easy setup is using a UDP forwarder like the one from http://www.tapor.com/udpf/ - use it with the command&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 udpf-elf -p=53-f=`cat /etc/resolv.conf|awk '$1 == &amp;quot;nameserver&amp;quot;{print $2; exit(0);}'`:53&lt;br /&gt;
&lt;br /&gt;
=== Proxying with iptables ===&lt;br /&gt;
&lt;br /&gt;
It is possible to forward DNS requests with iptables using the DNAT target:&lt;br /&gt;
&lt;br /&gt;
 iptables -t nat -A PREROUTING -p tcp -s 192.168.0.202 -d 192.168.0.200 --dport domain -j DNAT --to-destination 192.168.0.1&lt;br /&gt;
 iptables -t nat -A PREROUTING -p udp -s 192.168.0.202 -d 192.168.0.200 --dport domain -j DNAT --to-destination 192.168.0.1&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;tt&amp;gt;192.168.0.1&amp;lt;/tt&amp;gt; is the IP of your router. &lt;br /&gt;
&lt;br /&gt;
= SSH Extras =&lt;br /&gt;
&lt;br /&gt;
Reportedly, the ssh daemon (dropbear 0.49) on the FreeRunner appears to have a bug when sending the exit status back to the client. From time to time you receive an exit status of 255.&lt;br /&gt;
&lt;br /&gt;
To avoid ssh added a new line for every ssh host-key to you known_hosts you can add the following to the phone section in ~/.ssh/config&lt;br /&gt;
&lt;br /&gt;
  UserKnownHostsFile /dev/null&lt;br /&gt;
&lt;br /&gt;
You might want to use keys to bypass the login prompt too.&lt;br /&gt;
&lt;br /&gt;
== SSH Keys ==&lt;br /&gt;
&lt;br /&gt;
== From desktop to FreeRunner ==&lt;br /&gt;
&lt;br /&gt;
To generate ssh keys for use as a login mechanism type:&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
When prompted for a password either hit enter for no password (''not really a good idea'') or enter a password for this key. ssh into the phone and create ~/.ssh:&lt;br /&gt;
&lt;br /&gt;
 # mkdir ~/.ssh&lt;br /&gt;
&lt;br /&gt;
Then from your desktop copy the '''.pub''' file to the phone.&lt;br /&gt;
&lt;br /&gt;
 # scp ~/.ssh/id_rsa.pub phone:.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You should now be able to ssh directly into the phone without a password prompt.&lt;br /&gt;
&lt;br /&gt;
To disable password logins ('''after setting up key access''') edit /etc/init.d/dropbear and change the following line:&lt;br /&gt;
&lt;br /&gt;
 DROPBEAR_EXTRA_ARGS=&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
 DROPBEAR_EXTRA_ARGS=&amp;quot;-s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You will need to restart dropbear for this to take effect.&lt;br /&gt;
&lt;br /&gt;
=== From FreeRunner to Desktop ===&lt;br /&gt;
&lt;br /&gt;
Generate the key:&lt;br /&gt;
&lt;br /&gt;
  dropbearkey -t rsa -f id_rsa&lt;br /&gt;
&lt;br /&gt;
The output will look something like this:&lt;br /&gt;
&lt;br /&gt;
  Will output 1024 bit rsa secret key to 'id_rsa'&lt;br /&gt;
  Generating key, this may take a while...&lt;br /&gt;
  Public key portion is:&lt;br /&gt;
  ssh-rsa AAAAB3Nza[...]&lt;br /&gt;
  Fingerprint: md5 ca:e8:f0:b7:f6:7b:c2:b6:b9:71:e4:45:86:a9:ff:b8&lt;br /&gt;
&lt;br /&gt;
Copy and paste the one line (in this example, starting with 'ssh-rsa' onto the end of the host's authorized_keys file (often in ~/.ssh/).&lt;br /&gt;
&lt;br /&gt;
From the phone, ssh with -i:&lt;br /&gt;
&lt;br /&gt;
  ssh -i id_rsa user@host&lt;br /&gt;
&lt;br /&gt;
=== Changing host keys ===&lt;br /&gt;
&lt;br /&gt;
If you reflash, your hosts keys will change.  Try this ~/.ssh/config snippet:&lt;br /&gt;
&lt;br /&gt;
 Host moko&lt;br /&gt;
 HostName 192.168.0.202&lt;br /&gt;
 StrictHostKeyChecking no&lt;br /&gt;
 UserKnownHostsFile /dev/null&lt;br /&gt;
 User root&lt;br /&gt;
&lt;br /&gt;
This is suggested because ssh on your desktop may complain if the key matching a certain IP changes (stored in .ssh/known_hosts).&lt;br /&gt;
&lt;br /&gt;
== GUI on desktop through SSH ==&lt;br /&gt;
&lt;br /&gt;
To get the GUI on the FreeRunner onto the desktop via USB, you can use ssh as follows:&lt;br /&gt;
&lt;br /&gt;
  ssh -l root -X -v 192.168.0.202&lt;br /&gt;
&lt;br /&gt;
Using this, run openmoko-finger-demo for example, and it will open up on the desktop. To get landscape view, just resize the GUI window on the desktop.&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: dbus-launch failed to     &lt;br /&gt;
 autolaunch D-Bus session: Autolaunch requested, but X11 support not compiled in.&lt;br /&gt;
you need to set the DBUS_SESSION_BUS_ADDRESS environment variable to the value on the Freerunner before launching the process from your desktop.  You can find the value of this variable by using a command such as&lt;br /&gt;
 ps auxwwwwe | grep -m 1 DBUS_SESSION_BUS_ADDRESS&lt;br /&gt;
Note that you must run that command on the Freerunner.  Back on your desktop, run the process you want with the ''env'' command like this:&lt;br /&gt;
 env DBUS_SESSION_BUS_ADDRESS=''dbus_address'' ''process''&lt;br /&gt;
&lt;br /&gt;
==Display Remote Applications on FreeRunner==&lt;br /&gt;
&lt;br /&gt;
To get desktop apps to show up on your FreeRunner, first log in:&lt;br /&gt;
&lt;br /&gt;
  ssh -l root 192.168.0.202&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
  DISPLAY=:0 xhost +192.168.0.200&lt;br /&gt;
&lt;br /&gt;
After this you can close the ssh session. Back on the desktop computer, run:&lt;br /&gt;
&lt;br /&gt;
  DISPLAY=openmoko:0 xclock&lt;br /&gt;
&lt;br /&gt;
Note that the xhost command will allow remote applications on 192.168.0.200 to access the X server. It will allow anyone on the desktop machine to access the X server of the neo, including snooping anything you type on it. To disallow remote applications again, run this in the neo:&lt;br /&gt;
&lt;br /&gt;
  DISPLAY=:0 xhost -192.168.0.200&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bottom&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &lt;br /&gt;
{{Languages|USB Networking}}&lt;br /&gt;
&lt;br /&gt;
[[Category:USB]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Implemented]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Import_Vcf_Contacts</id>
		<title>Import Vcf Contacts</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Import_Vcf_Contacts"/>
				<updated>2008-07-31T16:31:10Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: /* Exporting from Outlook / ActiveSync */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Import for 2007.2 ==&lt;br /&gt;
=== Basic Information ===&lt;br /&gt;
&lt;br /&gt;
Neo FreeRunner uses Evolution data server (eds) to save contacts. &lt;br /&gt;
However, the specific version used differs from what is probably used on your desktop (if you have Evolution installed).&lt;br /&gt;
&lt;br /&gt;
You ''cannot'' copy your addressbook.db from your desktop to Neo ([http://docs.openmoko.org/trac/ticket/1119 bug 1119]).&lt;br /&gt;
&lt;br /&gt;
=== Import and Manage Scripts ===&lt;br /&gt;
&lt;br /&gt;
If you want to import your old contacts to the Neo you could use this script:&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/manage-contacts Manage Contacts script] [http://www.placard.fr.eu.org/~roland/tmp/manage-contacts.py mirror]&lt;br /&gt;
&lt;br /&gt;
If you first want to remove all existing contacts you could use this script.&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/remove_all_contacts remove all script]&lt;br /&gt;
&lt;br /&gt;
If you have all contacts in seperate vcf files and just want to import all at once:&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/ac Simple script]&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/import_contacts Simple script for one big contactsfile]&lt;br /&gt;
&lt;br /&gt;
(please add a .py after the filename, sorry my hoster gives an error if i link to .py files, even .py.txt)&lt;br /&gt;
&lt;br /&gt;
In the simple scripts you need to add the following lines&lt;br /&gt;
 ps = os.popen ('ps auxwwwwe | grep -m 1 DBUS_SESSION_BUS_ADDRESS')&lt;br /&gt;
 l = ps.read ()&lt;br /&gt;
 r = re.compile ('DBUS_SESSION_BUS_ADDRESS=(\S+)')&lt;br /&gt;
 m = r.search (l)&lt;br /&gt;
 a = m.expand ('\\1')&lt;br /&gt;
 os.environ ['DBUS_SESSION_BUS_ADDRESS'] = a&lt;br /&gt;
&lt;br /&gt;
=== Exporting old contacts to VCard format ===&lt;br /&gt;
&lt;br /&gt;
To use the manage Script you need your Contacts in VCF format.&lt;br /&gt;
&lt;br /&gt;
# on nokia phones i used the nokia phone manager (long time ago)&lt;br /&gt;
# on windows mobile phones you could use active sync to sync with Outlook and then use a Outlook export plugin to export as vcf&lt;br /&gt;
# on lg phones the backup function to memory card creates one file with multiple VCards.&lt;br /&gt;
&lt;br /&gt;
=== Exporting from Outlook / ActiveSync to VCF ===&lt;br /&gt;
&lt;br /&gt;
Doing a quick google I was unable to find a free export plugin for outlook (they all seem to want between $19.95 and $49), so I put together some quick-and-dirty VB code to do it. To use it, Open Outlook, then open the VB editor by pressing ALT-F11, Insert a module, and paste in the following. Change &amp;quot;Z:\OpenMoko\contacts&amp;quot; to wherever you want your vcf files saved (should be an existing, empty directory), and press F5 to run it.&lt;br /&gt;
&lt;br /&gt;
'''Code:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sub ExportContactsToVCF()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    'Cheap and nasty way to export All Contacts to VCF files. &lt;br /&gt;
    'By Dale Maggee, antisol (at) earthling (dot) net&lt;br /&gt;
&lt;br /&gt;
    Dim CN As ContactItem&lt;br /&gt;
    Dim NS As NameSpace&lt;br /&gt;
    Dim Fld As MAPIFolder    &lt;br /&gt;
&lt;br /&gt;
    Set NS = Application.GetNamespace(&amp;quot;MAPI&amp;quot;)&lt;br /&gt;
    Set Fld = NS.GetDefaultFolder(olFolderContacts)     &lt;br /&gt;
&lt;br /&gt;
    For Each CN In Fld.Items&lt;br /&gt;
        Debug.Print CN.FullName&lt;br /&gt;
        CN.SaveAs &amp;quot;z:\OpenMoko\contacts\&amp;quot; &amp;amp; CN.FullName &amp;amp; &amp;quot;.vcf&amp;quot;, olVCard&lt;br /&gt;
    Next CN&lt;br /&gt;
&lt;br /&gt;
    MsgBox &amp;quot;Done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
voila! you now have multiple VCF files in whatever directory you chose, suitable to be imported by the python script below.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The script is for the 2007.2 Version (default install on Neo FreeRunner), not for Qtopia&lt;br /&gt;
&lt;br /&gt;
You need Python to use this script so do a&lt;br /&gt;
&lt;br /&gt;
 opkg install python-dbus&lt;br /&gt;
&lt;br /&gt;
to install python and the python dbus module&lt;br /&gt;
&lt;br /&gt;
==== Manage Contacts Script ====&lt;br /&gt;
&lt;br /&gt;
'''This script needs all contacts in one big file'''&lt;br /&gt;
&lt;br /&gt;
'''You also could run this script on a ssh session!'''&lt;br /&gt;
&lt;br /&gt;
# Copy your big contacts file (contacts.txt) to your Neo&lt;br /&gt;
# Copy script to your Neo&lt;br /&gt;
# Connect via ssh to your Neo&lt;br /&gt;
# Fix special chars in your contacts file with you favorite text editor&lt;br /&gt;
# To import the file run on the SSH shell:&lt;br /&gt;
&lt;br /&gt;
 python manage-contacts.py load &amp;lt; contacts.txt&lt;br /&gt;
&lt;br /&gt;
# For a backup your existing contacts on the Neo&lt;br /&gt;
&lt;br /&gt;
 python manage-contacts.py dump &amp;gt; contacts.txt&lt;br /&gt;
&lt;br /&gt;
==== Simple Script ====&lt;br /&gt;
&lt;br /&gt;
'''You must run the script in the OM Terminal, not over ssh'''&lt;br /&gt;
&lt;br /&gt;
The script does a listdir and imports ALL files it found in that dir. (i'm a bad python programmer)&lt;br /&gt;
&lt;br /&gt;
# Copy all vcf files to a separate directory on my freerunner&lt;br /&gt;
# Copy the ac script to the parent directory also on my freerunner&lt;br /&gt;
# Have the contacts program running (so you have eds running too)&lt;br /&gt;
# Go to the terminal on the freerunner and type in the vcf directory: &amp;quot;python ../ac&amp;quot; (root@om-gta02:~/vcf# python ../ac)&lt;br /&gt;
## Note: '''You must call the script in the OM terminal''' not via Bluetooth or USB or you get a dbus error.&lt;br /&gt;
# Done :D &lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting ====&lt;br /&gt;
* Make sure you have python and python-dbus installed&lt;br /&gt;
* Make sure you have no illegal chars (utf) in the filename and inside the vcf files. (I had problems with Ü,Ä etc)&lt;br /&gt;
** The characters seem to work if you convert them from =C3=A4 type of format to proper UTF-8, and the vcards also specify UTF-8 charset. you cannot use other charsets besides UTF-8 since they are delivered via DBus which does not allow others.&lt;br /&gt;
* Only vcf files should be in your current directory so do a ../ac.&lt;br /&gt;
* You must call the script in the OM terminal not via Bluetooth or USB. If you do so a dbus error occur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authors ===&lt;br /&gt;
* Simple script by smurfy - phil &amp;lt;openmoko at smurfy.de&amp;gt;&lt;br /&gt;
* Manage Contacts script by Roland Mas &amp;lt;lolando at debian.org&amp;gt;&lt;br /&gt;
* Remove all Contacts script / simple script for one big file by Andreas Dalsgaard &amp;lt;andreas.dalsgaard at gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to [[Import_Sim_Contacts]] for the original Python Script.&lt;br /&gt;
&lt;br /&gt;
== Import for ASU/Qtopia ==&lt;br /&gt;
The Qtopia addressbook application suports import of VCF files out of the box:&lt;br /&gt;
  LD_LIBRARY_PATH=/opt/Qtopia/lib /opt/Qtopia/bin/addressbook /home/root/addressbook.vcf&lt;br /&gt;
&lt;br /&gt;
You will be asked if you want to import the contacts form addressbook.vcf (the contact name will be taken from the &amp;quot;N:&amp;quot; vCard field).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Openmoko]]&lt;br /&gt;
[[category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Import_Vcf_Contacts</id>
		<title>Import Vcf Contacts</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Import_Vcf_Contacts"/>
				<updated>2008-07-31T16:29:28Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: /* Exporting old contacts to VCard format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Import for 2007.2 ==&lt;br /&gt;
=== Basic Information ===&lt;br /&gt;
&lt;br /&gt;
Neo FreeRunner uses Evolution data server (eds) to save contacts. &lt;br /&gt;
However, the specific version used differs from what is probably used on your desktop (if you have Evolution installed).&lt;br /&gt;
&lt;br /&gt;
You ''cannot'' copy your addressbook.db from your desktop to Neo ([http://docs.openmoko.org/trac/ticket/1119 bug 1119]).&lt;br /&gt;
&lt;br /&gt;
=== Import and Manage Scripts ===&lt;br /&gt;
&lt;br /&gt;
If you want to import your old contacts to the Neo you could use this script:&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/manage-contacts Manage Contacts script] [http://www.placard.fr.eu.org/~roland/tmp/manage-contacts.py mirror]&lt;br /&gt;
&lt;br /&gt;
If you first want to remove all existing contacts you could use this script.&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/remove_all_contacts remove all script]&lt;br /&gt;
&lt;br /&gt;
If you have all contacts in seperate vcf files and just want to import all at once:&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/ac Simple script]&lt;br /&gt;
&lt;br /&gt;
[http://www.smurfy.de/files/neo/import_contacts Simple script for one big contactsfile]&lt;br /&gt;
&lt;br /&gt;
(please add a .py after the filename, sorry my hoster gives an error if i link to .py files, even .py.txt)&lt;br /&gt;
&lt;br /&gt;
In the simple scripts you need to add the following lines&lt;br /&gt;
 ps = os.popen ('ps auxwwwwe | grep -m 1 DBUS_SESSION_BUS_ADDRESS')&lt;br /&gt;
 l = ps.read ()&lt;br /&gt;
 r = re.compile ('DBUS_SESSION_BUS_ADDRESS=(\S+)')&lt;br /&gt;
 m = r.search (l)&lt;br /&gt;
 a = m.expand ('\\1')&lt;br /&gt;
 os.environ ['DBUS_SESSION_BUS_ADDRESS'] = a&lt;br /&gt;
&lt;br /&gt;
=== Exporting old contacts to VCard format ===&lt;br /&gt;
&lt;br /&gt;
To use the manage Script you need your Contacts in VCF format.&lt;br /&gt;
&lt;br /&gt;
# on nokia phones i used the nokia phone manager (long time ago)&lt;br /&gt;
# on windows mobile phones you could use active sync to sync with Outlook and then use a Outlook export plugin to export as vcf&lt;br /&gt;
# on lg phones the backup function to memory card creates one file with multiple VCards.&lt;br /&gt;
&lt;br /&gt;
=== Exporting from Outlook / ActiveSync ===&lt;br /&gt;
&lt;br /&gt;
Doing a quick google I was unable to find a free export plugin for outlook (they all seem to want between $19.95 and $49), so I put together some quick-and-dirty VB code to do it. To use it, Open Outlook, then open the VB editor by pressing ALT-F11, Insert a module, and paste in the following. Change &amp;quot;Z:\OpenMoko\contacts&amp;quot; to wherever you want your vcf files saved (should be an existing, empty directory), and press F5 to run it.&lt;br /&gt;
&lt;br /&gt;
'''Code:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sub ExportContactsToVCF()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    'Cheap and nasty way to export All Contacts to VCF files. &lt;br /&gt;
    'By Dale Maggee, antisol (at) earthling (dot) net&lt;br /&gt;
&lt;br /&gt;
    Dim CN As ContactItem&lt;br /&gt;
    Dim NS As NameSpace&lt;br /&gt;
    Dim Fld As MAPIFolder    &lt;br /&gt;
&lt;br /&gt;
    Set NS = Application.GetNamespace(&amp;quot;MAPI&amp;quot;)&lt;br /&gt;
    Set Fld = NS.GetDefaultFolder(olFolderContacts)     &lt;br /&gt;
&lt;br /&gt;
    For Each CN In Fld.Items&lt;br /&gt;
        Debug.Print CN.FullName&lt;br /&gt;
        CN.SaveAs &amp;quot;z:\OpenMoko\contacts\&amp;quot; &amp;amp; CN.FullName &amp;amp; &amp;quot;.vcf&amp;quot;, olVCard&lt;br /&gt;
    Next CN&lt;br /&gt;
&lt;br /&gt;
    MsgBox &amp;quot;Done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
voila! you now have multiple VCF files in whatever directory you chose, suitable to be imported by the python script below.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The script is for the 2007.2 Version (default install on Neo FreeRunner), not for Qtopia&lt;br /&gt;
&lt;br /&gt;
You need Python to use this script so do a&lt;br /&gt;
&lt;br /&gt;
 opkg install python-dbus&lt;br /&gt;
&lt;br /&gt;
to install python and the python dbus module&lt;br /&gt;
&lt;br /&gt;
==== Manage Contacts Script ====&lt;br /&gt;
&lt;br /&gt;
'''This script needs all contacts in one big file'''&lt;br /&gt;
&lt;br /&gt;
'''You also could run this script on a ssh session!'''&lt;br /&gt;
&lt;br /&gt;
# Copy your big contacts file (contacts.txt) to your Neo&lt;br /&gt;
# Copy script to your Neo&lt;br /&gt;
# Connect via ssh to your Neo&lt;br /&gt;
# Fix special chars in your contacts file with you favorite text editor&lt;br /&gt;
# To import the file run on the SSH shell:&lt;br /&gt;
&lt;br /&gt;
 python manage-contacts.py load &amp;lt; contacts.txt&lt;br /&gt;
&lt;br /&gt;
# For a backup your existing contacts on the Neo&lt;br /&gt;
&lt;br /&gt;
 python manage-contacts.py dump &amp;gt; contacts.txt&lt;br /&gt;
&lt;br /&gt;
==== Simple Script ====&lt;br /&gt;
&lt;br /&gt;
'''You must run the script in the OM Terminal, not over ssh'''&lt;br /&gt;
&lt;br /&gt;
The script does a listdir and imports ALL files it found in that dir. (i'm a bad python programmer)&lt;br /&gt;
&lt;br /&gt;
# Copy all vcf files to a separate directory on my freerunner&lt;br /&gt;
# Copy the ac script to the parent directory also on my freerunner&lt;br /&gt;
# Have the contacts program running (so you have eds running too)&lt;br /&gt;
# Go to the terminal on the freerunner and type in the vcf directory: &amp;quot;python ../ac&amp;quot; (root@om-gta02:~/vcf# python ../ac)&lt;br /&gt;
## Note: '''You must call the script in the OM terminal''' not via Bluetooth or USB or you get a dbus error.&lt;br /&gt;
# Done :D &lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting ====&lt;br /&gt;
* Make sure you have python and python-dbus installed&lt;br /&gt;
* Make sure you have no illegal chars (utf) in the filename and inside the vcf files. (I had problems with Ü,Ä etc)&lt;br /&gt;
** The characters seem to work if you convert them from =C3=A4 type of format to proper UTF-8, and the vcards also specify UTF-8 charset. you cannot use other charsets besides UTF-8 since they are delivered via DBus which does not allow others.&lt;br /&gt;
* Only vcf files should be in your current directory so do a ../ac.&lt;br /&gt;
* You must call the script in the OM terminal not via Bluetooth or USB. If you do so a dbus error occur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authors ===&lt;br /&gt;
* Simple script by smurfy - phil &amp;lt;openmoko at smurfy.de&amp;gt;&lt;br /&gt;
* Manage Contacts script by Roland Mas &amp;lt;lolando at debian.org&amp;gt;&lt;br /&gt;
* Remove all Contacts script / simple script for one big file by Andreas Dalsgaard &amp;lt;andreas.dalsgaard at gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to [[Import_Sim_Contacts]] for the original Python Script.&lt;br /&gt;
&lt;br /&gt;
== Import for ASU/Qtopia ==&lt;br /&gt;
The Qtopia addressbook application suports import of VCF files out of the box:&lt;br /&gt;
  LD_LIBRARY_PATH=/opt/Qtopia/lib /opt/Qtopia/bin/addressbook /home/root/addressbook.vcf&lt;br /&gt;
&lt;br /&gt;
You will be asked if you want to import the contacts form addressbook.vcf (the contact name will be taken from the &amp;quot;N:&amp;quot; vCard field).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Openmoko]]&lt;br /&gt;
[[category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Antisol</id>
		<title>User:Antisol</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Antisol"/>
				<updated>2008-07-04T09:33:13Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: New page: * Semi-Recently converted Open Source evangelist from Melbourne, AU.  * Windows programmer of sorts (VB / Delphi mostly)  * Not a kernel hacker by any means, or even a (good) shell-scripte...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Semi-Recently converted Open Source evangelist from Melbourne, AU.&lt;br /&gt;
&lt;br /&gt;
* Windows programmer of sorts (VB / Delphi mostly)&lt;br /&gt;
&lt;br /&gt;
* Not a kernel hacker by any means, or even a (good) shell-scripter, but not afraid to compile a program or follow a HOWTO.&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_Melbourne</id>
		<title>Openmoko Local Groups: Melbourne</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_Melbourne"/>
				<updated>2008-07-04T09:26:40Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Melbourne Openmoko usergroup.&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Level of Interest&lt;br /&gt;
!Location&lt;br /&gt;
!Other&lt;br /&gt;
|-&lt;br /&gt;
|[[User:KellyV|Kelly Vlahovic]]&lt;br /&gt;
|Linux, C, PHP&lt;br /&gt;
|User and developer&lt;br /&gt;
|Hawthorn, Melbourne&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Mcsporran|Johnny McKenzie ]]&lt;br /&gt;
| Linux, Networking&lt;br /&gt;
| User &lt;br /&gt;
| City, Melbourne&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Antisol|Dale Maggee ]]&lt;br /&gt;
| Following HOWTOs&lt;br /&gt;
| User &lt;br /&gt;
| Scumsborough, Melbourne&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:Openmoko Local Groups]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Wishlist/Accessories</id>
		<title>Wishlist/Accessories</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Wishlist/Accessories"/>
				<updated>2008-07-04T06:20:19Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hardware Wishlist}}&lt;br /&gt;
This is a page detailing accessories that may be of use for your Neo1973.&lt;br /&gt;
&lt;br /&gt;
This is both accessories that do not exist, and existing devices that may be good to add to a web-store.&lt;br /&gt;
&lt;br /&gt;
Advertising on this page is permitted, but keep it brief and factual.&lt;br /&gt;
&lt;br /&gt;
=Existing devices=&lt;br /&gt;
&lt;br /&gt;
==Storage Devices==&lt;br /&gt;
&lt;br /&gt;
* '''Seagate's DAVE (Digital Audio Video Experience)''' with Bluetooth 2.0 WiFi 802.11b/g and USB-on-the-go-Interface (USB-OTG) http://www.seagate.com/docs/pdf/marketing/po_DAVE.pdf&lt;br /&gt;
&lt;br /&gt;
==Input Devices==&lt;br /&gt;
&lt;br /&gt;
===Pedometer===&lt;br /&gt;
&lt;br /&gt;
There are (at least) two uses for a Bluetooth pedometer as a Neo1973 accessory:&lt;br /&gt;
&lt;br /&gt;
* As an input device for exercise-monitoring software&lt;br /&gt;
&lt;br /&gt;
* A pedometer combined with a compass (see [[Wish_List_-_Hardware#Digital_compass]]) would allow the positioning software to perform [http://en.wikipedia.org/wiki/Dead_reckoning dead reckoning] when the GPS signal has been lost. The US Army's [http://www.army-technology.com/projects/land_warrior/ Land Warrior system] already does this. (Maybe the pedometer is partly redundant with the accelerometers for dead reckoning tasks? See the [http://www.autospectator.com/modules/news/article.php?storyid=9942 SiRFDiRect announcement].)&lt;br /&gt;
&lt;br /&gt;
=Wishlist=&lt;br /&gt;
==Special covers==&lt;br /&gt;
Different special covers could be made available with features like:&lt;br /&gt;
* A standard slip-on or clip-on template (possibly with buttons) to make the touch-screen blind accessible&lt;br /&gt;
* Small metal frame for protection (like Siemens M65, only with more style)&lt;br /&gt;
* Case with mirror on the back, for putting on makeup/checking appearance or helping with self-portraits with an integrated camera.&lt;br /&gt;
* Option to completely design printable case styles, perhaps with engraving. Ability to share these on a 'community' site.&lt;br /&gt;
* Solar powered recharger (perhaps as extendable/unfoldable [[Expansion Back]]).&lt;br /&gt;
* Rubber protection like available for iPod, of course in different colors and transparency.&lt;br /&gt;
* Underwater case. This could be a housing that fits around a normal Freerunner like the kinds for digital cameras. Alternatively, it could be an actual case that the Freerunner guts fits into.&lt;br /&gt;
* Screen Protector: A simple and very easy to produce screen protector, like the one on my iPaq: &lt;br /&gt;
&lt;br /&gt;
Protector Flipped up image: http://www.pocketpcthoughts.com/images/ppct-ipaq6900-preview-small-01.jpg&lt;br /&gt;
&lt;br /&gt;
Protector Flipped down image: http://www.pocketpcthoughts.com/images/ppct-ipaq6900-preview-small-06.jpg&lt;br /&gt;
&lt;br /&gt;
This serves the dual purpose of protecting the screen from scratches, and stopping user's ear/face from accidentally pressing buttons while talking.&lt;br /&gt;
&lt;br /&gt;
==Car kit==&lt;br /&gt;
A car kit with a cradle which simultaneously recharges the device.&lt;br /&gt;
&lt;br /&gt;
==Bike kit==&lt;br /&gt;
Sporting a GPS, the phone would be ideal to have mounted by a bracket on the bike handle bars. Viewable from your position over the handlebars. Snap-on/snap-off, and some locking mechanism that actually keeps the phone from getting airborne on a hard break. Also, a basic spring on the bracket, making bumps softer on the phone. This type of bracket would cost peanuts to make.&lt;br /&gt;
Should also include a padded and waterproof pack that you can place the phone inside, keeping it (somewhat) safe from the elements.&lt;br /&gt;
Would also be really cool if it was possible to create a dynamo that can charge the phone, like old school bike headlights.&lt;br /&gt;
=== Cadence ===&lt;br /&gt;
Something to measure the Cadence like a normal bike computer would be great.&lt;br /&gt;
=== Heartbeat ===&lt;br /&gt;
Have the possibility to measure the heartbeat would make it a great accessory for training :)  &lt;br /&gt;
&lt;br /&gt;
==Charger conversion connector==&lt;br /&gt;
A flexible converter allowing you to recharge the Neo1973 with power from many DC sources such as other devices chargers.&lt;br /&gt;
Problems are that it may overload the DC source. It may require sensing of the input voltage, and reducing load if the voltage drops by a factor. Ideally the device should accept input voltage in the range of around 3.3v-28V in either polarity.&lt;br /&gt;
&lt;br /&gt;
==Ability to connect a USB keyboard to the phones USB port==&lt;br /&gt;
&lt;br /&gt;
It has a USB port. There are USB keyboards everywhere. It would be great to be able to ssh anywhere over wifi with a regular sized keyboard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Portability'''&lt;br /&gt;
&lt;br /&gt;
I think it should all be seen within the context of portability.&lt;br /&gt;
Have a keyboard incorporated, hinged along the long side, as noted elsewhere, with a micro-switch that induces hibernation on closing to conserve power.&lt;br /&gt;
Limit the touch screen function to different aspects of the file system and peripheral aspects - in other words, don't limit it to a phone.&lt;br /&gt;
Those of us on the go need a phone, yes, but a lot more.&lt;br /&gt;
And all of society is evolving in this direction, so the product needs to also to survive.&lt;br /&gt;
&lt;br /&gt;
USB2 - obviously, could be employed for something like this:&lt;br /&gt;
&lt;br /&gt;
[http://www.techpin.com/new-32gb-usb-flash-drives-from-corsair/]&lt;br /&gt;
&lt;br /&gt;
on which an entire OS with a massive /home partition could be carried round on a keyring.&lt;br /&gt;
&lt;br /&gt;
Why try to crowd it all onto one screen when all you have to do is make an alteration in the size of your belt mounted, carry pouch.&lt;br /&gt;
&lt;br /&gt;
The world needs the portable office, not just the portable phone.&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Weaver.&lt;br /&gt;
&lt;br /&gt;
==Make the stylus laser-pen recharge its batteries from phone while &amp;quot;docked&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
The stylus pen with built in laser pointer and flashlight seemed too big to be able to be attached to the phone while it is not being used, according to the demonstration video. If that is the case, make a slot on the phone where one can &amp;quot;dock&amp;quot; the pen while not using it. Make the phone recharge the batteries in the pen while the pen is docked to the phone.&lt;br /&gt;
&lt;br /&gt;
==USB laser pointer==&lt;br /&gt;
&lt;br /&gt;
Make a laser pointer that plugs into the USB connector and controlled in the same through the same interface that that wold make the Freerunner a presentation remote control.&lt;br /&gt;
&lt;br /&gt;
==Bluetooth earpiece with possible both-ears use==&lt;br /&gt;
&lt;br /&gt;
It will be like a regular bluetooth speaker, but with another (wired or wireless) speaker in the other ear for music listening and telephony. The main, bulky piece with bluetooth could have a multi-purpose button: for answering calls when it whispers the name of the caller in my ears, or to raise/lower the volume of music or telephone call.&lt;br /&gt;
&lt;br /&gt;
Would be nice to have them for the left-handed too.&lt;br /&gt;
&lt;br /&gt;
==Make a VGA and/or DVI out connector==&lt;br /&gt;
&lt;br /&gt;
The screen on the phone is small. But if it had a VGA out connector, we could connect an ordinary full sized monitor to it. It already has a USB connector. Imagine the coolness of attaching a usb keyboard and a 22&amp;quot; widescreen monitor to your ''phone'' and then viewing youtube videos through the phones wlan connection. You wouldn't have to carry around your laptop anymore since usb keyboards and vga monitors are availible practically everywhere.&lt;br /&gt;
&lt;br /&gt;
This also may be used to show the conference presentations. There is enough memory in the phone to store the average presentation (the pdf or maybe even html formats could be used). Having the VGA port would transform it into very lightweight tool that could even replace a laptop for some people. It may be OK to have the same VGA resolution as presentations are usually prepared with the big fonts and figures.&lt;br /&gt;
&lt;br /&gt;
== Pouch ==&lt;br /&gt;
The pouch could have external or internal place to keep the stylus.&lt;br /&gt;
&lt;br /&gt;
== USB camera ==&lt;br /&gt;
A camera connected to the usb port.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User]]&lt;br /&gt;
[[Category:Ideas| ]]&lt;br /&gt;
[[Category:Hardware ideas]]&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Music_Player</id>
		<title>Talk:Music Player</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Music_Player"/>
				<updated>2008-06-29T08:25:39Z</updated>
		
		<summary type="html">&lt;p&gt;Antisol: /* Features I'd like to see */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;([[User:ken]])&lt;br /&gt;
* Q:Does our media player support both audio and video files?&lt;br /&gt;
* Q:What kind of decoding library should be added?&lt;br /&gt;
&lt;br /&gt;
([[User:Mickey]])&lt;br /&gt;
&lt;br /&gt;
The S3C2410 is too slow to do video.&lt;br /&gt;
Audio-wise, we should limit support for the most popular formats which is&lt;br /&gt;
* mp3&lt;br /&gt;
* ogg&lt;br /&gt;
* wav.&lt;br /&gt;
We don't have an FM-Chip in the device, so I'm afraid we can't do .mid -- at least not in hardware. There are software MIDI players available, but I don't know whether this is interesting for us or not.&lt;br /&gt;
&lt;br /&gt;
The S3C2410 is too slow to do fullscreen video.&lt;br /&gt;
It is able to do halfscreen video, with the LCD stretch mode enabled&lt;br /&gt;
See [[Video Player]]&lt;br /&gt;
--[[User:Speedevil|Speedevil]] 14:33, 18 February 2007 (CET)&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Q]: At present,  we will decide what kind of third party software for media player?&lt;br /&gt;
&lt;br /&gt;
([[User:Sean|Sean Moss-Pultz]])&lt;br /&gt;
''What kind of third party software do you have in mind?''&lt;br /&gt;
&lt;br /&gt;
([[user:Alex|Alex]]) ''What about RealPlayer? It has a linux version, but for mobile phone use, the performance should be taken into consideration.''&lt;br /&gt;
&lt;br /&gt;
([[User:Sean|Sean Moss-Pultz]])&lt;br /&gt;
Unless we can't find a FOSS version, I would prefer not to use closed-source programs. Have a look at the follow:&lt;br /&gt;
&lt;br /&gt;
[http://www.mplayerhq.hu/design7/news.html]&lt;br /&gt;
[http://www.videolan.org/vlc/]&lt;br /&gt;
&lt;br /&gt;
We should check what OPIE and GPE use. [[User:Mickey]] Can you provide some feedback here?&lt;br /&gt;
&lt;br /&gt;
([[user:Alex|Alex]]) GPE and OPIE both have their own media players.&lt;br /&gt;
*GPE's NMF[http://gpe.handhelds.org/projects/GPE-media.shtml] is based on GStreamer[http://www.gstreamer.net/]. NMF can play ogg and mp3 files.&lt;br /&gt;
*OPIE's opie-mediaplayer2[http://zaurus.logix.cz/ipkg/detail.xp?package=opie-mediaplayer2] It plays mp3, mpeg, wav, ogg, quicktime, divx and more. Also it is streaming capable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: In &amp;quot;Playback Mode&amp;quot; section it says &amp;quot;15) Panning -- realtime updated when panning wheel been rotated.&amp;quot;  The panning wheel isn't mentioned anywhere else.  Is it another option for objects 5 and 6?&lt;br /&gt;
A: Looks like it, yeah. However I don't see the point for being able to do panning since the speakers are so close and point in the same direction, meaning that you probably won't be able to tell the differences panning would make. I'll have to check that on real hardware but unless it's noticable I'll leave panning out. Yes, it would also affect the headphones but I can't think of any situation where panning would be necessary with headphones so I don't see the point there either. If anyone does, please do tell :)&lt;br /&gt;
[[User:Abraxa|Abraxa]] 16:44, 18 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
I would like a way to set balance, though I don't care much about realtime panning. My right ear is moderately less sensitive than my left, and I like to boost the volume on that ear, rather than on both ears, so I maintain some external hearing. (headphones only) --[[User:Speedevil|Speedevil]] 01:13, 20 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: '''12) Repeat''' -- Repeats the current track.&amp;lt;br&amp;gt;Is most player, repeat doesn't repeat the current track.  It repeats the playlist (it starts playback from the beginning of the playlist after the last song in the list is played). Does this player's repeat do it differently than other players?&lt;br /&gt;
&lt;br /&gt;
A: See question below&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: On the repeat button as well: I'd like to see a function where it repeats the current track once and then advances in the playlist afterwards. Maybe you could have the repeat button toggle its function with each tap - e.g. repeat all -&amp;gt; repeat current -&amp;gt; repeat current once -&amp;gt; repeat off -&amp;gt; ... [[User:Abraxa|Abraxa]] 01:51, 18 February 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
A: Since I'm writing the Music Player I'll just do it that way ;)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Is this Music Player a MPD-client (MPC)? That would be nice... However - all basic, &amp;quot;preloaded&amp;quot; software, should take speed into consideration...&lt;br /&gt;
&lt;br /&gt;
A: I don't intend it to be as running MPD on the Neo seems like overkill to me and writing a separate application to act as some kind of remote control to a MPD server at home makes more sense in my opinion. [[User:Abraxa|Abraxa]] 16:09, 18 April 2007 (CEST)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: What about Cover display ? For example browsing the music folder on the SD-Card by viewing the covers or displaying the cover while playing a song from it ? [[User:SrRaven|SrRaven]] 01:15, 19 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
A: I might add this once the must-have features are working as this is something not everyone will make use of. [[User:Abraxa|Abraxa]] 01:29, 19 April 2007 (CEST)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Certainly not a must-have and therefore not high priority, but how about built-in support for queuing songs from an off-phone song repository (such as one's home computer). Thus if you get a hankering for a particular song that doesn't happen to be on the phone, you could pick it from a preloaded list. Assuming there is some network available, the player would start downloading on the background (meanwhile continuing with the local songs) and queue the request on arrival. On server-end, perchance a CGI script to recode songs on the fly to take up less bandwidth and space.&lt;br /&gt;
&lt;br /&gt;
(No promises but I've half a mind to tinker with such a feature at some point if I find the time.) --[[User:Mjr|Mjr]] 01:46, 19 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Could there be a way to feed 'skip track' information to a script of some sort, so it can aggregate statistics, perhaps even going so far as cooperatively updating like/dislike data, line amazon. (yes, track ID is a fun problem).&lt;br /&gt;
&lt;br /&gt;
A: Do you mean some kind of last.fm submit plugin? It's certainly possible, though the lack of persistent internet connection may be an issue. If that's not what you mean then please elaborate. [[User:Abraxa|Abraxa]] 17:34, 20 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
R: I was more meaning simply throw 'user skipped track &amp;quot;Violent Femmes - Blister in the sun.mp3&amp;quot; at second 23/180' to a named pipe in ~/.music_player/output or something, and trying to read playlists from ~/.music_player/playlist, so that functionality can easily be added externally. Could be named pipe, external program called at appropriate times, or whatever. --[[User:Speedevil|Speedevil]] 11:32, 21 April 2007 (CEST)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Could there be a way to read playlists similarly?&lt;br /&gt;
&lt;br /&gt;
A: Um... I'm afraid I don't understand what you mean... [[User:Abraxa|Abraxa]] 17:34, 20 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: As you mentioned last.fm,I am a big last.fm fan and it annoys me that the tracks I played on the go don't get added at all.So how about a buffer that you than can just let it get uploaded once a wifi connection is established.Sometimes my last.fm plugin doesn't send tracks immediatly but caches them and submits them at some other time (reboot of media player) so that should not be a problem.So is that possible ? [[User:SrRaven|SrRaven]] 22:17, 20 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
A: If there'll be such a feature this mechanism will definitely be part of it, yes. [[User:Abraxa|Abraxa]] 09:02, 21 April 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice: [http://moc.daper.net/ mocp] is a console based music player : lightweight, very usable.&lt;br /&gt;
It could be interesting to write a shared library embedding the mocp features. This library would have the great advantage to be independent of the user interface.&lt;br /&gt;
--[[User:Gcasse|Gcasse]] 11:30, 25 June 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Should the Shuffle button be greyed out when shuffle is turned off? Usability guidelines suggest that options be grayed out only when they are unavailable; perhaps the Shuffle button should look normal when shuffle is turned off, and &amp;quot;active&amp;quot; when it is turned on.&lt;br /&gt;
--[[User:Cp.tar|Cp.tar]] 21:03, 5 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
== Features I'd like to see ==&lt;br /&gt;
&lt;br /&gt;
Hi, Here are a couple of things I'd like to see included in the music player software which I haven't seen mentioned anywhere (perhaps because they're obvious?):&lt;br /&gt;
&lt;br /&gt;
* 'Ipod Mode' - a button to Turn off the screen / put the unit in standby but keep the music playing, to save battery and extend the playing time.&lt;br /&gt;
&lt;br /&gt;
* 'Auto-Pause' - If I'm listening to music and the phone rings, the music should pause itself automatically. Also it should resume playing after the call ends.&lt;br /&gt;
&lt;br /&gt;
These are two cool features of the Excellent [http://www.pocketpcfreewares.com/en/index.php?soft=813 MortPlayer], which is the MP3 Player I currently use on my Windows CE (shudder) device. I'd love to see them on my freerunner!&lt;/div&gt;</summary>
		<author><name>Antisol</name></author>	</entry>

	</feed>