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

	<entry>
		<id>http://wiki.openmoko.org/wiki/Supported_microSD_cards</id>
		<title>Supported microSD cards</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Supported_microSD_cards"/>
				<updated>2008-12-05T20:22:01Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: Added Jörgs sticky tape trick&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo|Maybe reformat table, see discussion page}}&lt;br /&gt;
&lt;br /&gt;
There are a plethora of Transflash / microSD / SDHC (Secure Digital High Capacity) cards out there.&lt;br /&gt;
&lt;br /&gt;
The Neo FreeRunner supports up to 8GB SDHC cards.&lt;br /&gt;
&lt;br /&gt;
Some microSD cards appear to be too slow to work with the current default settings of the glamo driver, so some specific parameters must be set in uboot to use them (see https://docs.openmoko.org/trac/ticket/1743, and corresponding notes in the tables bellow).&lt;br /&gt;
&lt;br /&gt;
There had been a [http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=677 bug] in the SD device driver (s3cmci) which caused some trouble. Please make sure you use a post-september 4th kernel which applies our kernel patchset rev2832 or higher.&lt;br /&gt;
&lt;br /&gt;
Booting from SDHC requires a u-boot from 2008-07-23 or later. '''But pay attention''' : there are problems with SDHC cards at suspend time. More details from [[Booting from SD#Booting_from_SDHC_.2F_suspend_problems|Booting from SD]]&lt;br /&gt;
&lt;br /&gt;
Note that most vendors are using an irritating way of labeling the capacity of their cards (They are using the factor 1000 instead of 1024 for KB and MB). Therefore the real capacity of these cards will be about 5% less than the vendor's specification. For example, cards labelled ''6 GB'' will only have 5.7 GB of storage capacity.&lt;br /&gt;
&lt;br /&gt;
If you want to exchange your SD card more often: [http://people.openmoko.org/joerg/sdcard-handle/ Jörg] has a nice sticky tape trick to do this with no hassle.&lt;br /&gt;
&lt;br /&gt;
If you use a card not listed here, please add to this table.&lt;br /&gt;
&lt;br /&gt;
== Cards by Vendor ==&lt;br /&gt;
{| border=1 |&lt;br /&gt;
| Vendor || Model || Capacity || Speed || [[u-boot]] 1.1.6 || linux 2.6.17.14-fic5 || [[u-boot]] 1.2.0-moko8 svn1915 || [[u-boot]] 1.3.2-moko12 || linux 2.6.24+git75969 (2008.8 kernel as of Sept. 4, 2008) || OM2008.9's kernel || Status&lt;br /&gt;
|-&lt;br /&gt;
| A-Data || microSDHC-8GB || 8GB (SDHC) || class 4 || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Apacer || microSDHC-4GB || 4GB (SDHC) || class 6? || || {{no}} || || || {{no}} || {{no}} || I/O errors&lt;br /&gt;
|-&lt;br /&gt;
| Corsair || CMFSDMICRO-512 || 512MB || || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Dane-Elec || DA-SDMC-2048-R || 2GB || ? || ? || ? || ? || ? || {{yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| extreMemory || AE56-1280R || 128MB || || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| extreMemory || H256MS05 || 256MB || 60x || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| hama || 55371 || 256MB || || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Intuix || IXMSDM128B60X || 128MB || 60x || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || SD-C512 || 512MB || ? || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || SD-C01G || 1GB || ? || {{yes}} || ? || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || [[Supported_microSD_cards/SD-C02G|SD-C02G]] || 2GB || ? || ? || {{yes}}  || || {{yes}} || {{no}} || {{no}} (see [[Supported_microSD_cards/SD-C02G|SD-C02G]] )&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || SDC4 (N0043-012.A00LF) || 4GB || ? || ? || FSO MS2 / Linux 2.6.24: I/O Errors while formatting [http://wiki.openmoko.org/wiki/Special:Emailuser/varacanero Contact me here] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || SDC4/8GB || 8GB SDHC || ? || {{yes}} || || || || {{yes}} || {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Patriot ||  PSF128MCSD-RC || 128MB || ? || {{no}} || ? || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Patriot ||  PSF8GMCSDHC4 || 8GB (SDHC)|| Class 4 || ? || ? || ? || {{yes}} || {{yes}} || {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
| PNY || P-MICROSD512-BX || 512MB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| PNY || P-MICROSD2GB-BX (card marked with MM8GR02GUACY) || 2GB || slow ? || ? || ? (Some work needed to get it running, see [https://docs.openmoko.org/trac/ticket/1743 #1743] but apparently not enough) || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Pretec || || 128MB || ? || ? || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-128 || 128MB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || unknown || 256MB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || unknown || 512MB || || {{yes}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-1024-E10M || 1GB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQU-2048-E10M || 2GB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-2048-E11MK || 2GB || || ||  || || detects size incorrectly with U-Boot 1.3.2-moko12 (Aug 26 2008 - 08:24:58) : see http://docs.openmoko.org/trac/ticket/1815#comment:6 || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-4096-E11M || 4GB (SDHC) || || ? || {{yes}} || ? || {{yes}} || {{yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-6144-E11M || 6GB (SDHC) || || ? || {{yes}} || {{no}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-8192-E11M || 7GB (SDHC) || 4 || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || [http://www.sandisk.com/Products/Item(2630)-SDSDQY-8192-A11M-SanDisk_Mobile_Ultra_microSDHC_8GBCard.aspx SDSDQY-8192-E11M/A11M] || 8GB (SDHC) || 6 || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQR-8192-E12M || 8GB (SDHC) || 4 || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQR-8192-???? || 8GB (SDHC) || 6 || ? || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-008G-E11M || 8GB (SDHC) || 2 || || || || {{yes}} || {{yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-008G-E11M || 8GB (SDHC) || 4 || ? || {{yes}} ||  || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || [http://uk.sandisk.com/Products/ProductInfo.aspx?ID=2702 SDSDQ-016G-E11M] || 16GB (SDHC) || Class 2 || untested || untested || untested || {{yes}}, [[SanDisk/SDSDQ-016G-E11M|see details]] || {{yes}} kernel 2.6.24mw, [[SanDisk/SDSDQ-016G-E11M|see details]] || untested, but should work.|| [[SanDisk/SDSDQ-016G-E11M|WiP]]&lt;br /&gt;
|-&lt;br /&gt;
| Silicon Power || SP004GBSTH006V10 || 4GB (SDHC) || 4 || ? || ? || ? || {{yes}} || {{yes}} || {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Toshiba || SD-512R2W || 512MB || || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS128MUSD || 128MB || || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS256MUSD80 || 256MB || 80x || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.transcendusa.com/ Transcend] || [http://www.transcendusa.com/Support/DLCenter/Datasheet/TSxxUSD.pdf TS512MUSD] '''(shipped with FreeRunner)''' || 512MB || || {{no}} || {{yes}} || {{yes}} || {{yes}} || {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || MM4GRO1GUACY || 1GB || || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS1GUSDC || 1GB (SDC) || || ? || I/O errors while trying to install Om2008.8 rootfs.tar.gz, looks like [https://docs.openmoko.org/trac/ticket/1743 #1743] || ? || ? || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS4GUSDHC6 (card marked with MM8GR04GUACY) || 4GB (SDHC) || Class 6 || ? || {{yes}} (Some work needed to get it running, see [https://docs.openmoko.org/trac/ticket/1743 #1743]) || ? || || || {{no}}, see [http://docs.openmoko.org/trac/ticket/2025 bug #2025]&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS8GUSDHC4 || 8GB (SDHC) || Class 4 || ? || ? || ? || {{yes}} || linux 2.6.24+git37+d744c88c14 (2007.2 kernel as of Aug 28, 2008) ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS8GUSDHC4 || 8GB (SDHC) || Class 4 || ? || ? || ? || {{yes}} || {{yes}} since kernel of 30-Sep-2008 ||&lt;br /&gt;
|-&lt;br /&gt;
| Verbatim || 47225 || 1GB || || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Verbatim || 47206 || 4GB  (SDHC) || Class 6|| || {{yes}} (surely) || {{yes}} (surely) || {{yes}} || {{yes}} || {{yes}} (surely)&lt;br /&gt;
|-&lt;br /&gt;
| vox-fon || 1 GB || 1GB || || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| (Intenso) || ? || 4GB (SDHC) || || {{no}} || {{yes}} (Some work needed to get it running, see [https://docs.openmoko.org/trac/ticket/1743 #1743]) || ? || {{yes}} || {{yes}} (Some work needed to get it running, see [https://docs.openmoko.org/trac/ticket/1743 #1743])&lt;br /&gt;
|-&lt;br /&gt;
| Vendor || Model || Capacity || Speed || [[u-boot]] 1.1.6 || linux 2.6.17.14-fic5 || [[u-boot]] 1.2.0-moko8 svn1915 || [[u-boot]] 1.3.2-moko12 || linux 2.6.24+git75969 (2008.8 kernel as of Sept. 4, 2008) || OM2008.9's kernel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that cards with a &amp;quot;'''no'''&amp;quot; may still work at times, but that we just have found their behaviour too erratic to consider acceptable.&lt;br /&gt;
(Also note that this is a bug in our version of u-boot. The cards are probably fine.)&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Deichkind</id>
		<title>User:Deichkind</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Deichkind"/>
				<updated>2008-11-09T11:31:27Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: New page: Because you asked for it. A few information about me:  Hello, my name is Marian Flor. I am fiddling with computers and hardware since the mid-eighties. During my studies I worked with the ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Because you asked for it. A few information about me:&lt;br /&gt;
&lt;br /&gt;
Hello, my name is Marian Flor. I am fiddling with computers and hardware since the mid-eighties. During my studies I worked with the Ultra-VAX and the sleak pizza boxes from Sun Microsystems. Linux affected me since I first heard from it in 1993. On my first own PC (1996) I ran SuSE. But they had an horrible package management and updating was a nightmare, so I switched to Debian in 1999 and got stuck to it. Nowadays I run Linux (preferrable Debian) on almost every device that I own: A Synology NAS ([http://www.nslu2-linux.org/wiki/Optware NSLU2-Linux]), a Linksys WiFi-AP ([http://www.openwrt.org OpenWrt]). And of course on my laptop (Debian amd64) and my new and shiny GTA02. :-D&lt;br /&gt;
&lt;br /&gt;
I was born in nothern germany (hence my nick Deichkind) near the danish border. Later on the [http://en.wikipedia.org/wiki/The_Trials_of_Life &amp;quot;trials of life&amp;quot;] ;-) led me to switzerland, to be more precise to the marvellous city of Zurich where I now live.&lt;br /&gt;
&lt;br /&gt;
If you want to contact me use: deichkind dot 08 at &amp;lt;NOSPAM&amp;gt;schweiz dot eu&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/SanDisk/SDSDQ-016G-E11M</id>
		<title>SanDisk/SDSDQ-016G-E11M</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/SanDisk/SDSDQ-016G-E11M"/>
				<updated>2008-11-08T19:38:37Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: /* SanDisk SDSDQ-016G-E11M */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Tested with an Freerunner (GTA02v6).&lt;br /&gt;
Other software setups may work too. Important in any case is to have a recent [[Flashing_the_Neo_FreeRunner#Flashing_the_boot_loader_to_the_NAND|u-boot in your NAND]].&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
* QtExtend 4.4.2 on flash, Debian on microSD&lt;br /&gt;
* Kernel 2.6.24 from [http://moko.mwester.net/dl.html#kernels here]&lt;br /&gt;
* The card was formatted with ext2 filesystems during Debian installation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@om-gta02:~# fdisk -l /dev/mmcblk0&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 15.9 GB, 15931539456 bytes&lt;br /&gt;
4 heads, 16 sectors/track, 486192 cylinders&lt;br /&gt;
Units = cylinders of 64 * 512 = 32768 bytes&lt;br /&gt;
&lt;br /&gt;
Device Boot              Start         End      Blocks  Id System&lt;br /&gt;
/dev/mmcblk0p1               1         245        7832  83 Linux&lt;br /&gt;
/dev/mmcblk0p2             246      486192    15550304  83 Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* '''Most important''': Add extra settle time for sd card, see posting (section references) for a how to.&lt;br /&gt;
&lt;br /&gt;
== Pending Issues ==&lt;br /&gt;
* mmcinit reports false card size [https://docs.openmoko.org/trac/ticket/1815 1815]. But works fine once booted.&lt;br /&gt;
* [[Booting_from_SD#Booting_from_SDHC_.2F_suspend_problems|Suspend]] may mangle your filesystem. Workaround: Disable suspend or, once mangled: Boot from flash and then issue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;fsck.ext2 -y /dev/mmcblk0p2&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Running halt after booted from sd card may mangle your filesystem too. Workaround: add extra sync:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sync; halt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://lists.openmoko.org/pipermail/community/2008-November/035412.html Original posting]&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/SanDisk/SDSDQ-016G-E11M</id>
		<title>SanDisk/SDSDQ-016G-E11M</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/SanDisk/SDSDQ-016G-E11M"/>
				<updated>2008-11-08T19:38:09Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: Initial description of SDSDQ-016G-E11M status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= SanDisk SDSDQ-016G-E11M =&lt;br /&gt;
&lt;br /&gt;
Tested with an Freerunner (GTA02v6).&lt;br /&gt;
Other software setups may work too. Important in any case is to have a recent [[Flashing_the_Neo_FreeRunner#Flashing_the_boot_loader_to_the_NAND|u-boot in your NAND]].&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
* QtExtend 4.4.2 on flash, Debian on microSD&lt;br /&gt;
* Kernel 2.6.24 from [http://moko.mwester.net/dl.html#kernels here]&lt;br /&gt;
* The card was formatted with ext2 filesystems during Debian installation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@om-gta02:~# fdisk -l /dev/mmcblk0&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 15.9 GB, 15931539456 bytes&lt;br /&gt;
4 heads, 16 sectors/track, 486192 cylinders&lt;br /&gt;
Units = cylinders of 64 * 512 = 32768 bytes&lt;br /&gt;
&lt;br /&gt;
Device Boot              Start         End      Blocks  Id System&lt;br /&gt;
/dev/mmcblk0p1               1         245        7832  83 Linux&lt;br /&gt;
/dev/mmcblk0p2             246      486192    15550304  83 Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* '''Most important''': Add extra settle time for sd card, see posting (section references) for a how to.&lt;br /&gt;
&lt;br /&gt;
== Pending Issues ==&lt;br /&gt;
* mmcinit reports false card size [https://docs.openmoko.org/trac/ticket/1815 1815]. But works fine once booted.&lt;br /&gt;
* [[Booting_from_SD#Booting_from_SDHC_.2F_suspend_problems|Suspend]] may mangle your filesystem. Workaround: Disable suspend or, once mangled: Boot from flash and then issue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;fsck.ext2 -y /dev/mmcblk0p2&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Running halt after booted from sd card may mangle your filesystem too. Workaround: add extra sync:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sync; halt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://lists.openmoko.org/pipermail/community/2008-November/035412.html Original posting]&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Supported_microSD_cards</id>
		<title>Supported microSD cards</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Supported_microSD_cards"/>
				<updated>2008-11-08T19:10:03Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: /* Cards by Vendor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo|Maybe reformat table, see discussion page}}&lt;br /&gt;
&lt;br /&gt;
There are a plethora of Transflash / microSD / SDHC (Secure Digital High Capacity) cards out there.&lt;br /&gt;
&lt;br /&gt;
The Neo FreeRunner supports up to 8GB SDHC cards.&lt;br /&gt;
&lt;br /&gt;
Some microSD cards appear to be too slow to work with the current default settings of the glamo driver, so some specific parameters must be set in uboot to use them (see https://docs.openmoko.org/trac/ticket/1743, and corresponding notes in the tables bellow).&lt;br /&gt;
&lt;br /&gt;
There had been a [http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=677 bug] in the SD device driver (s3cmci) which caused some trouble. Please make sure you use a post-september 4th kernel which applies our kernel patchset rev2832 or higher.&lt;br /&gt;
&lt;br /&gt;
Booting from SDHC requires a u-boot from 2008-07-23 or later. '''But pay attention''' : there are problems with SDHC cards at suspend time. More details from [[Booting from SD#Booting_from_SDHC_.2F_suspend_problems|Booting from SD]]&lt;br /&gt;
&lt;br /&gt;
Note that most vendors are using an irritating way of labeling the capacity of their cards (They are using the factor 1000 instead of 1024 for KB and MB). Therefore the real capacity of these cards will be about 5% less than the vendor's specification. For example, cards labelled ''6 GB'' will only have 5.7 GB of storage capacity.&lt;br /&gt;
&lt;br /&gt;
If you use a card not listed here, please add to this table.&lt;br /&gt;
&lt;br /&gt;
== Cards by Vendor ==&lt;br /&gt;
{| border=1 |&lt;br /&gt;
| Vendor || Model || Capacity || Speed || [[u-boot]] 1.1.6 || linux 2.6.17.14-fic5 || [[u-boot]] 1.2.0-moko8 svn1915 || [[u-boot]] 1.3.2-moko12 || linux 2.6.24+git75969 (2008.8 kernel as of Sept. 4, 2008) || OM2008.9's kernel || Status&lt;br /&gt;
|-&lt;br /&gt;
| A-Data || microSDHC-8GB || 8GB (SDHC) || class 4 || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Corsair || CMFSDMICRO-512 || 512MB || || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Dane-Elec || DA-SDMC-2048-R || 2GB || ? || ? || ? || ? || ? || {{yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| extreMemory || AE56-1280R || 128MB || || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| extreMemory || H256MS05 || 256MB || 60x || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| hama || 55371 || 256MB || || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Intuix || IXMSDM128B60X || 128MB || 60x || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || SD-C512 || 512MB || ? || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || SD-C01G || 1GB || ? || {{yes}} || ? || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || [[Supported_microSD_cards/SD-C02G|SD-C02G]] || 2GB || ? || ? || {{yes}}  || || {{yes}} || {{no}} || {{no}} (see [[Supported_microSD_cards/SD-C02G|SD-C02G]] )&lt;br /&gt;
|-&lt;br /&gt;
| Kingston || SDC4 (N0043-012.A00LF) || 4GB || ? || ? || FSO MS2 / Linux 2.6.24: I/O Errors while formatting [http://wiki.openmoko.org/wiki/Special:Emailuser/varacanero Contact me here] || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Patriot ||  PSF128MCSD-RC || 128MB || ? || {{no}} || ? || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Patriot ||  PSF8GMCSDHC4 || 8GB (SDHC)|| Class 4 || ? || ? || ? || {{yes}} || {{yes}} || {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
| PNY || P-MICROSD512-BX || 512MB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| PNY || P-MICROSD2GB-BX (card marked with MM8GR02GUACY) || 2GB || slow ? || ? || ? (Some work needed to get it running, see [https://docs.openmoko.org/trac/ticket/1743 #1743] but apparently not enough) || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Pretec || || 128MB || ? || ? || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-128 || 128MB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || unknown || 256MB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || unknown || 512MB || || {{yes}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-1024-E10M || 1GB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQU-2048-E10M || 2GB || || {{yes}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-2048-E11MK || 2GB || || ||  || || detects size incorrectly with U-Boot 1.3.2-moko12 (Aug 26 2008 - 08:24:58) : see http://docs.openmoko.org/trac/ticket/1815#comment:6 || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-4096-E11M || 4GB (SDHC) || || ? || {{yes}} || ? || {{yes}} || {{yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-6144-E11M || 6GB (SDHC) || || ? || {{yes}} || {{no}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-8192-E11M || 7GB (SDHC) || 4 || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || [http://www.sandisk.com/Products/Item(2630)-SDSDQY-8192-A11M-SanDisk_Mobile_Ultra_microSDHC_8GBCard.aspx SDSDQY-8192-E11M/A11M] || 8GB (SDHC) || 6 || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQR-8192-E12M || 8GB (SDHC) || 4 || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQR-8192-???? || 8GB (SDHC) || 6 || ? || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-008G-E11M || 8GB (SDHC) || 2 || || || || {{yes}} || {{yes}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || SDSDQ-008G-E11M || 8GB (SDHC) || 4 || ? || {{yes}} ||  || || ||&lt;br /&gt;
|-&lt;br /&gt;
| SanDisk || [http://uk.sandisk.com/Products/ProductInfo.aspx?ID=2702 SDSDQ-016G-E11M] || 16GB (SDHC) || Class 2 || untested || untested || untested || {{yes}}, [[SanDisk/SDSDQ-016G-E11M|see details]] || {{yes}} kernel 2.6.24mw, [[SanDisk/SDSDQ-016G-E11M|see details]] || untested, but should work.|| [[SanDisk/SDSDQ-016G-E11M|WiP]]&lt;br /&gt;
|-&lt;br /&gt;
| Silicon Power || SP004GBSTH006V10 || 4GB (SDHC) || 4 || ? || ? || ? || {{yes}} || {{yes}} || {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Toshiba || SD-512R2W || 512MB || || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS128MUSD || 128MB || || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS256MUSD80 || 256MB || 80x || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.transcendusa.com/ Transcend] || [http://www.transcendusa.com/Support/DLCenter/Datasheet/TSxxUSD.pdf TS512MUSD] '''(shipped with FreeRunner)''' || 512MB || || {{no}} || {{yes}} || {{yes}} || {{yes}} || {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || MM4GRO1GUACY || 1GB || || ? || {{yes}} || ? || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS1GUSDC || 1GB (SDC) || || ? || I/O errors while trying to install Om2008.8 rootfs.tar.gz, looks like [https://docs.openmoko.org/trac/ticket/1743 #1743] || ? || ? || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS4GUSDHC6 (card marked with MM8GR04GUACY) || 4GB (SDHC) || Class 6 || ? || {{yes}} (Some work needed to get it running, see [https://docs.openmoko.org/trac/ticket/1743 #1743]) || ? || || || {{no}}, see [http://docs.openmoko.org/trac/ticket/2025 bug #2025]&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS8GUSDHC4 || 8GB (SDHC) || Class 4 || ? || ? || ? || {{yes}} || linux 2.6.24+git37+d744c88c14 (2007.2 kernel as of Aug 28, 2008) ||&lt;br /&gt;
|-&lt;br /&gt;
| Transcend || TS8GUSDHC4 || 8GB (SDHC) || Class 4 || ? || ? || ? || {{yes}} || {{yes}} since kernel of 30-Sep-2008 ||&lt;br /&gt;
|-&lt;br /&gt;
| Verbatim || 47225 || 1GB || || {{no}} || {{yes}} || {{yes}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Verbatim || 47206 || 4GB  (SDHC) || Class 6|| || {{yes}} (surely) || {{yes}} (surely) || {{yes}} || {{yes}} || {{yes}} (surely)&lt;br /&gt;
|-&lt;br /&gt;
| vox-fon || 1 GB || 1GB || || {{no}} || {{yes}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| (Intenso) || ? || 4GB (SDHC) || || {{no}} || {{yes}} (Some work needed to get it running, see [https://docs.openmoko.org/trac/ticket/1743 #1743]) || ? || {{yes}} || {{yes}} (Some work needed to get it running, see [https://docs.openmoko.org/trac/ticket/1743 #1743])&lt;br /&gt;
|-&lt;br /&gt;
| Vendor || Model || Capacity || Speed || [[u-boot]] 1.1.6 || linux 2.6.17.14-fic5 || [[u-boot]] 1.2.0-moko8 svn1915 || [[u-boot]] 1.3.2-moko12 || linux 2.6.24+git75969 (2008.8 kernel as of Sept. 4, 2008) || OM2008.9's kernel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that cards with a &amp;quot;'''no'''&amp;quot; may still work at times, but that we just have found their behaviour too erratic to consider acceptable.&lt;br /&gt;
(Also note that this is a bug in our version of u-boot. The cards are probably fine.)&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Supported_microSD_cards</id>
		<title>Talk:Supported microSD cards</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Supported_microSD_cards"/>
				<updated>2008-11-07T19:58:39Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: /* Reformatting the page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Let it be known that 4Gb microSDHC cards have been announced by more than one company.  Apparently these will not be supported by default in microSD devices.  Does anyone know if the Neo will support these in theory? [[User:Wasp|Wasp]] 00:06, 16 February 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
: Also 8GB MicroSD cards have now been announced. Would be really nice to know if it's just a driver issue or something more.&lt;br /&gt;
&lt;br /&gt;
: Anyone tried 16GB microSDHC cards (Sandisk)? - the are now available here in Germany --[[User:Nodge|Nodge]] 08:52, 30 October 2008 (UTC)&lt;br /&gt;
: * Yes, I have a SDSDQ-016G-E11M (16GB, Class2) in a Neo-FR in use with Debian (ext2) on it (Qtopia on flash). It can only be boot with manually from NAND. Suspending still causes I/O error on the SD. The rest seems stable. Right now, I don't know how to supply this info in the table.  -- Greetings from Switzerland, [[User:Deichkind|Deichkind]] 23:03, 2 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
&lt;br /&gt;
Can we please define repeatable tests?&lt;br /&gt;
atm I just copy stuff there and back - there is probably more to it.&lt;br /&gt;
Tested the Sandisk 512 and 1024 cards       [[User:Johan|Johan]] 22:27, 4 August 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Use newer kernel/uboot for testing ==&lt;br /&gt;
&lt;br /&gt;
As the 2.6.17 kernel is pretty outdated and openmoko uses 2.6.22 for a long time now, we maybe should use this kernel version for testing, shouldn't we? --[[User:Thomasg|Thomasg]] 16:23, 23 September 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
i strongly second that.&lt;br /&gt;
please do not test with ancient and totally outdated software. this will only generate bogus bugreports which hold everybody from seeing the real problems.&lt;br /&gt;
with recent i mean 2.6.22.5-moko11 or newer. please also add the exact release (including svnr if possible) when filing a bug.&lt;br /&gt;
&lt;br /&gt;
same goes for uboot.&lt;br /&gt;
currently we are at svnr 2943 or higher. please do not file bugs against uboots which are totally outdated.&lt;br /&gt;
if you want to update your uboot for tests, please contact me and i'll try to supply you with a tested uboot for your device. --[[User:Roh|Roh]] 22:03, 23 September 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Beginners need more information ==&lt;br /&gt;
&lt;br /&gt;
Uboot &amp;quot;?&amp;quot; or Linux &amp;quot;Yes&amp;quot; don't mean much to a beginner.&lt;br /&gt;
My guess is&lt;br /&gt;
# &amp;quot;?&amp;quot; means the test has not been performed?&lt;br /&gt;
# uboot &amp;quot;yes&amp;quot; means that you can boot directly from an image on the Micro SD device?&lt;br /&gt;
# Linux = &amp;quot;yes&amp;quot; means that once booted with the specified kernel that I can put a filesystem on the device and use it for general purpose storage?&lt;br /&gt;
Could someone clarify this by adding a legend to this page? Thanks -- [[User:Brian H Wilson|Brian H Wilson]] 18:04, 3 July 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Reformatting the page ==&lt;br /&gt;
&lt;br /&gt;
I suggest to reformat the page so the table is broken up.&lt;br /&gt;
Instead of the table, it would be more modular to have each card listed and described there, since what kernel/uboot the card will work. Additional notes could be supplied more easily than in the table.&lt;br /&gt;
&lt;br /&gt;
I do support this vote. For example: The [http://wiki.openwrt.org/TableOfHardware table of supported hardware] from [http://www.openwrt.org OpenWrt] is very well structured. [[User:Deichkind|Deichkind]] 20:56, 7 Nov 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
== How to obtain the &amp;quot;Model number&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Say how to obtain the &amp;quot;Model number&amp;quot; from the card if one no longer has the box it came in. [[User:Jidanni|Jidanni]] 08:43, 28 October 2008 (UTC)&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/U-Boot</id>
		<title>U-Boot</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/U-Boot"/>
				<updated>2008-11-06T22:27:40Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: /* Using usbtty from Linux */ Added note for USB-ID of GTA02&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Bootloader}}&lt;br /&gt;
&lt;br /&gt;
[[Image:GTA01-U-Boot.JPG|thumb|300px|u-boot menu on Neo1973]] [[Image:Neo1973 uboot splash closeup.jpg|thumb|300px|u-boot splash screen on Neo1973]]&lt;br /&gt;
&lt;br /&gt;
The bootloader used on the smartphones is called '''U-Boot'''. It takes care of device functionality until Openmoko is booted. This includes [[USB DFU]] for [[Flashing the Neo FreeRunner]], a splash screen, a boot menu, a console for [[bootloader commands]], configuration via [[bootloader environment]], and loading a [[kernel]].&lt;br /&gt;
&lt;br /&gt;
There are various [[bootloader versions]] available.&lt;br /&gt;
&lt;br /&gt;
== Booting into U-boot ==&lt;br /&gt;
&lt;br /&gt;
* Make sure that your phone has had the battery and USB cable removed for at least 30 seconds.&lt;br /&gt;
* Hold in the AUX button on power-up to access the boot menu.&lt;br /&gt;
* Connect the Neo (ie not Debug Board) to a Linux host with the USB cable.&lt;br /&gt;
* Set the console to USB.&lt;br /&gt;
* Connect to /dev/ttyACM0 with a terminal program on the Linux host (you might need to chown uucp.uucp /dev/ttyACM0 )&lt;br /&gt;
* Note that the cdc_acm /dev/ttyACM0 access disappears as soon as the Neo boots, and is replaced by the cdc_ether usb0 network access.&lt;br /&gt;
* You're now at the bootloader prompt.&lt;br /&gt;
* Set the bootdelay uboot environment variable to -1 if you want it to always halt at the bootloader on power-up.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
All versions of the OM smartphone use the [http://u-boot.sourceforge.net/ u-boot] bootloader.&lt;br /&gt;
&lt;br /&gt;
More information on u-boot can be found at&lt;br /&gt;
* http://www.denx.de/wiki/DULG&lt;br /&gt;
* http://www.gumstix.org/tikiwiki/tiki-index.php?page=U-Boot&lt;br /&gt;
* http://linuxdevices.com/articles/AT5085702347.html&lt;br /&gt;
&lt;br /&gt;
Additions to the vanilla u-boot already implemented include:&lt;br /&gt;
* Support for boot from NAND flash using [[S3C2410 Steppingstone]]&lt;br /&gt;
* Support for S3C2410 NAND flash&lt;br /&gt;
* Support for downloading programs via S3C2410 USB Device Controller&lt;br /&gt;
* Support to display bootup logo / status on S3C2410 Framebuffer&lt;br /&gt;
&lt;br /&gt;
However, u-boot still doesn't support many of the features that GTA01 needs, such as&lt;br /&gt;
* Support for reading kernel/initrd from SD/Transflash&lt;br /&gt;
&lt;br /&gt;
[[User:HaraldWelte|HaraldWelte]] is working on those issues, and in fact most of them have already been implemented.&lt;br /&gt;
&lt;br /&gt;
== Bootloader source code ==&lt;br /&gt;
&lt;br /&gt;
The current bootloader source can be found at http://git.openmoko.org/?p=u-boot.git;a=shortlog;h=stable .&lt;br /&gt;
&lt;br /&gt;
To get u-boot by git:&lt;br /&gt;
&lt;br /&gt;
git clone git://git.openmoko.org/git/u-boot.git openmoko/u-boot&lt;br /&gt;
&lt;br /&gt;
To build u-boot:&lt;br /&gt;
* Clone the git tree and check out the stable branch&lt;br /&gt;
* Set the CROSS_COMPILE environment variable to specify the prefix to your toolchain binaries&lt;br /&gt;
* Run &amp;quot;make gta02v5_config&amp;quot; (or gta01bv4_config, or whatever hardware revision you have)&lt;br /&gt;
* Run &amp;quot;make u-boot.udfu&amp;quot;. This will give you an image which you can install with dfu-util, or which you can upload into memory via JTAG (with a debug board)&lt;br /&gt;
&lt;br /&gt;
== Bootloader binary ==&lt;br /&gt;
&lt;br /&gt;
The latest bootloader binary builds can be found under http://downloads.openmoko.org/daily/ .&lt;br /&gt;
&lt;br /&gt;
All versions of the GTA02 (Neo FreeRunner) that have been sold to the public are version 5 hardware, so look for a file with &amp;quot;gta02&amp;quot; and &amp;quot;v5&amp;quot; in the name, for example:&lt;br /&gt;
uboot-gta02v5-latest.bin&lt;br /&gt;
&lt;br /&gt;
The file should be written to the NAND flash address 0x00000000 (size 0x30000) (the first [[Partitions|partition]]).&lt;br /&gt;
&lt;br /&gt;
== Bootloader development ==&lt;br /&gt;
&lt;br /&gt;
=== QT2410 ===&lt;br /&gt;
If you want to do bootloader development on the QT2410, it's easier to work with a bootloader image that can be downloaded via USB into RAM instead of flashing.&lt;br /&gt;
&lt;br /&gt;
To do so, you need to edit the u-boot/include/configs/qt2410.h file, and change the &amp;quot;if 0&amp;quot; in Line 32 into a &amp;quot;if 1&amp;quot;, then recompile with &amp;quot;make&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The resulting &amp;quot;u-boot.bin&amp;quot; is _NOT SUITABLE_ for NAND flash, but only for direct execution from within ram, e.g. by using the [[s3c2410_boot_usb]] program.&lt;br /&gt;
&lt;br /&gt;
=== Neo 1973 ===&lt;br /&gt;
&lt;br /&gt;
Doing bootloader development on the [[Neo 1973]] is a bit more tricky.  First, we don't have any NOR flash.  Second, there is no other way to boot _but_ from NAND.  Therefore, we also don't have a USB downloader like the QT2410.&lt;br /&gt;
&lt;br /&gt;
The main problem is:  The [[S3C2410 Steppingstone]] unconditionally copies the first 4k of flash into its internal SRAM.   That SRAM segment stays unconditionally mapped at physical address zero. How do we get around this&lt;br /&gt;
&lt;br /&gt;
=== Neo FreeRunner ===&lt;br /&gt;
{{main|Neo_FreeRunner_Memory_Mapping}}&lt;br /&gt;
&lt;br /&gt;
==== Using JTAG to boot from RAM ====&lt;br /&gt;
&lt;br /&gt;
So how can we boot from RAM? We use JTAG / OpenOCD to:&lt;br /&gt;
&lt;br /&gt;
* Reset and halt the cpu at PC=0&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; reset halt&lt;br /&gt;
target halted in ARM state due to debug request, current mode: Supervisor&lt;br /&gt;
cpsr: 0x400000d3 pc: 0x00000000&lt;br /&gt;
MMU: disabled, D-Cache: disabled, I-Cache: disabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Download a small piece of code for low-level SDRAM timing initialization (overwrite 4k SRAM of steppingstone)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; load_binary /space/misc/gta01/u-boot.git/board/gta01/lowlevel_foo.bin 0&lt;br /&gt;
downloaded 332 byte in 0s 21899us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Assert a break point at address 0x33f80000 (which indicates that the low-level code has finished)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; bp 0x33f80000 4 hw&lt;br /&gt;
breakpoint added at address 0x33f80000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run the code up to the break point&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; resume&lt;br /&gt;
Target 0 resumed&lt;br /&gt;
&amp;gt; Target 0 halted&lt;br /&gt;
target halted in ARM state due to breakpoint, current mode: Supervisor&lt;br /&gt;
cpsr: 0x600000d3 pc: 0x33f80000&lt;br /&gt;
MMU: disabled, D-Cache: disabled, I-Cache: enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Download the u-boot RAM image to 0x33f80000&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; load_binary /space/misc/gta01/u-boot.git/u-boot.bin 0x33f80000&lt;br /&gt;
downloaded 135692 byte in 6s 567264us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Resume processing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; resume&lt;br /&gt;
Target 0 resumed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, the display backlight gets bright and we see the following familiar prompt on the serial console:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
U-Boot 1.1.6 (Jan 13 2007 - 23:44:23)&lt;br /&gt;
&lt;br /&gt;
DRAM:  128 MB&lt;br /&gt;
NAND:  64 MiB&lt;br /&gt;
*** Warning - bad CRC or NAND, using default environment&lt;br /&gt;
&lt;br /&gt;
In:    serial&lt;br /&gt;
Out:   serial&lt;br /&gt;
Err:   serial&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
GTA01Bv2 #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating bootable images ==&lt;br /&gt;
&lt;br /&gt;
U-boot needs bootable images (such as kernels, but also initrd and others) in form of a so-called ''uImage''.  In order to create a ''uImage'' from e.g. a ''vmlinux'' kernel image, you can proceed as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
objcopy -O binary -R .note -R .comment -S vmlinux linux.bin&lt;br /&gt;
gzip -9 linux.bin&lt;br /&gt;
u-boot/tools/mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n &amp;quot;Kernel Image QT2410&amp;quot; -d linux.bin.gz uImage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Boot menu ==&lt;br /&gt;
[[Image:Neo1973 uboot menu.jpg|thumb|400px|u-boot boot menu on Neo1973]]&lt;br /&gt;
&lt;br /&gt;
As of the Phase-0 release, our u-boot version now features an on-screen boot menu. The items are defined by [[bootloader environment#menu|menu entries in the environment]].&lt;br /&gt;
&lt;br /&gt;
=== Accessing the boot menu ===&lt;br /&gt;
&lt;br /&gt;
You can access the boot menu by pressing and holding the [[Neo1973 AUX Button]] together with the power button while switching the phone on.&lt;br /&gt;
&lt;br /&gt;
=== Using the boot menu ===&lt;br /&gt;
&lt;br /&gt;
By pressing the [[Neo1973 AUX Button]] you can cycle through the menu items.  Use the ''POWER'' button to select one item.&lt;br /&gt;
&lt;br /&gt;
== Bootloader prompt ==&lt;br /&gt;
&lt;br /&gt;
=== Accessing the bootloader prompt ===&lt;br /&gt;
The bootloader prompt is available either on the serial console (via [[Debug Board]]), or as virtual USB Serial device (USB CDC_ACM).&lt;br /&gt;
Whether the serial port or usb is used depends on the u-boot environment variables '''stdin''', '''stdout''' and '''stderr'''.&lt;br /&gt;
&lt;br /&gt;
Whether or not you use usbtty, the first couple of messages will always be displayed on the serial console.&lt;br /&gt;
&lt;br /&gt;
The bootloader is currently configured to wait for three seconds.  If a key press on the '''stdin''' is received within those three seconds, auto-boot is aborted.&lt;br /&gt;
&lt;br /&gt;
==== Using usbtty from Linux ====&lt;br /&gt;
&lt;br /&gt;
Just by connecting the phone in u-boot mode to your Linux pc should make it detect a [[CDC ACM]] device, and you should get a new tty device called /dev/ttyACM0. If not, enable the CONFIG_USB_ACM (Device Drivers -&amp;gt; USB support -&amp;gt; USB Modem (CDC ACM) support). (Instructions for MacOS users are [[MacOS_X#USB_Serial|here]])&lt;br /&gt;
&lt;br /&gt;
Use your favourite terminal emulator (minicom, cu, zc, screen ...) to access it like any other serial port.&lt;br /&gt;
You can adapt the instructions for USB-serial from the [[MacOS_X#USB_Serial|Mac OS]] page.&lt;br /&gt;
If you don't have a favorite, try just: (cu is in the taylor-uucp package, use &amp;quot;apt-get install cu&amp;quot; if it is not yet installed)&lt;br /&gt;
cu -l /dev/ttyACM0&lt;br /&gt;
&lt;br /&gt;
You might need to&lt;br /&gt;
chown uucp.uucp /dev/ttyACM0&lt;br /&gt;
&lt;br /&gt;
to get the necessary rights (even as root).&lt;br /&gt;
&lt;br /&gt;
A nice alternative for cu is Werner Almesberger's [[NeoCon|neocon]].&lt;br /&gt;
&lt;br /&gt;
First, you should try to check whether the USB device shows up in 'lsusb' while you're running in u-boot mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# lsusb -d 1457:5119&lt;br /&gt;
Bus 005 Device 079: ID 1457:5119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Note''': The Neo Freerunner (GTA02) has the ID 1d50:5119&lt;br /&gt;
&lt;br /&gt;
Second, let's see some more details about the available endpoints and configurations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# lsusb -v -d 1457:5119&lt;br /&gt;
Bus 005 Device 079: ID 1457:5119&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
bLength                18&lt;br /&gt;
bDescriptorType         1&lt;br /&gt;
bcdUSB               1.10&lt;br /&gt;
bDeviceClass            2 Communications&lt;br /&gt;
bDeviceSubClass         0&lt;br /&gt;
bDeviceProtocol         0&lt;br /&gt;
bMaxPacketSize0        16&lt;br /&gt;
idVendor           0x1457&lt;br /&gt;
idProduct          0x5119&lt;br /&gt;
bcdDevice            0.00&lt;br /&gt;
iManufacturer           1 Openmoko, Inc&lt;br /&gt;
iProduct                2 Neo1973 Bootloader U-Boot 1.2.0-g6c7cac8c-dirty-moko3&lt;br /&gt;
iSerial                 3 0000000&lt;br /&gt;
bNumConfigurations      1&lt;br /&gt;
Configuration Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         2&lt;br /&gt;
wTotalLength           85&lt;br /&gt;
bNumInterfaces          3&lt;br /&gt;
bConfigurationValue     1&lt;br /&gt;
iConfiguration          4 TTY via USB&lt;br /&gt;
bmAttributes         0xc0&lt;br /&gt;
Self Powered&lt;br /&gt;
MaxPower                0mA&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         4&lt;br /&gt;
bInterfaceNumber        0&lt;br /&gt;
bAlternateSetting       0&lt;br /&gt;
bNumEndpoints           1&lt;br /&gt;
bInterfaceClass         2 Communications&lt;br /&gt;
bInterfaceSubClass      2 Abstract (modem)&lt;br /&gt;
bInterfaceProtocol      1 AT-commands (v.25ter)&lt;br /&gt;
iInterface              6 Control Interface&lt;br /&gt;
CDC Header:&lt;br /&gt;
bcdCDC               0.6e&lt;br /&gt;
CDC Call Management:&lt;br /&gt;
bmCapabilities       0x00&lt;br /&gt;
bDataInterface          1&lt;br /&gt;
CDC ACM:&lt;br /&gt;
bmCapabilities       0x00&lt;br /&gt;
CDC Union:&lt;br /&gt;
bMasterInterface        0&lt;br /&gt;
bSlaveInterface         1&lt;br /&gt;
Endpoint Descriptor:&lt;br /&gt;
bLength                 7&lt;br /&gt;
bDescriptorType         5&lt;br /&gt;
bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
bmAttributes            3&lt;br /&gt;
Transfer Type            Interrupt&lt;br /&gt;
Synch Type               None&lt;br /&gt;
Usage Type               Data&lt;br /&gt;
wMaxPacketSize     0x0010  1x 16 bytes&lt;br /&gt;
bInterval             255&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         4&lt;br /&gt;
bInterfaceNumber        1&lt;br /&gt;
bAlternateSetting       0&lt;br /&gt;
bNumEndpoints           2&lt;br /&gt;
bInterfaceClass        10 CDC Data&lt;br /&gt;
bInterfaceSubClass      0 Unused&lt;br /&gt;
bInterfaceProtocol      0&lt;br /&gt;
iInterface              5 Bulk Data Interface&lt;br /&gt;
Endpoint Descriptor:&lt;br /&gt;
bLength                 7&lt;br /&gt;
bDescriptorType         5&lt;br /&gt;
bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
bmAttributes            2&lt;br /&gt;
Transfer Type            Bulk&lt;br /&gt;
Synch Type               None&lt;br /&gt;
Usage Type               Data&lt;br /&gt;
wMaxPacketSize     0x0010  1x 16 bytes&lt;br /&gt;
bInterval             255&lt;br /&gt;
Endpoint Descriptor:&lt;br /&gt;
bLength                 7&lt;br /&gt;
bDescriptorType         5&lt;br /&gt;
bEndpointAddress     0x83  EP 3 IN&lt;br /&gt;
bmAttributes            2&lt;br /&gt;
Transfer Type            Bulk&lt;br /&gt;
Synch Type               None&lt;br /&gt;
Usage Type               Data&lt;br /&gt;
wMaxPacketSize     0x0010  1x 16 bytes&lt;br /&gt;
bInterval             255&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         4&lt;br /&gt;
bInterfaceNumber        2&lt;br /&gt;
bAlternateSetting       0&lt;br /&gt;
bNumEndpoints           0&lt;br /&gt;
bInterfaceClass       254 Application Specific Interface&lt;br /&gt;
bInterfaceSubClass      1 Device Firmware Update&lt;br /&gt;
bInterfaceProtocol      1&lt;br /&gt;
iInterface              7 USB Device Firmware Upgrade&lt;br /&gt;
Device Status:     0x0001&lt;br /&gt;
Self Powered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you can access it using your favourite terminal program.&lt;br /&gt;
&lt;br /&gt;
Then, if the environment is not set correctly, you will need to use the current console (e.g. serial console) to change the [[bootloader environment#console|console entries in the environment]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GTA01Bv2 # setenv stderr usbtty&lt;br /&gt;
GTA01Bv2 # setenv stdout usbtty&lt;br /&gt;
GTA01Bv2 # setenv stdin usbtty&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Typical u-boot prompt ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
U-Boot 1.2.0-moko1 (Feb 16 2007 - 00:36:13)&lt;br /&gt;
&lt;br /&gt;
DRAM:  128 MB&lt;br /&gt;
NAND:  64 MiB&lt;br /&gt;
Found Environment offset in OOB..&lt;br /&gt;
Video: 640x480x8 31kHz 59Hz&lt;br /&gt;
USB:   S3C2410 USB Deviced&lt;br /&gt;
In:    serial&lt;br /&gt;
Out:   serial&lt;br /&gt;
Err:   serial&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
GTA01Bv3 #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Commands on the bootloader prompt ===&lt;br /&gt;
&lt;br /&gt;
:''See [[bootloader commands]].''&lt;br /&gt;
&lt;br /&gt;
=== What if I borked my bootloader environment and don't get a prompt anymore? ===&lt;br /&gt;
{{Note|This solution applies to a changed u-boot environment which prevents NAND u-boot to successfully boot.  The Debian u-boot configuration script may be a cause of this issue.}}&lt;br /&gt;
Found a solution here:&lt;br /&gt;
[[http://markmail.org/message/gqypwiohdet6x4am?q=almesberger+partition&amp;amp;page=1&amp;amp;refer=xbamkzwwsaobv7wa]]&lt;br /&gt;
&lt;br /&gt;
It works the following way:&lt;br /&gt;
* Get the devirginator:&lt;br /&gt;
svn co http://svn.openmoko.org/trunk/src/host/devirginator&lt;br /&gt;
cd devirginator&lt;br /&gt;
* Read the u-boot environment from the device:&lt;br /&gt;
dfu-util -a u-boot_env -R -U env.in&lt;br /&gt;
* Create a file that contains everything you want to change in your u-boot environment or get it by issuing the following command:&lt;br /&gt;
wget http://svn.openmoko.org/trunk/src/host/devirginator/environment.in&lt;br /&gt;
* Now let devirginator generate a new u-boot_env partition for us, - that contains the partition table from our u-boot_env, - and all changes we wanted to make; Note that the -D GTA02 is needed for the neo FreeRunner only, and has to come before the other options.&lt;br /&gt;
./envedit.pl -D GTA02 -i env.in -f environment.in -o env.out&lt;br /&gt;
* On my box the partition layout didn't seem to match the idea of envedit.pl, so it issued 2 warnings:&lt;br /&gt;
warning: environment is 262144 bytes, expected 16384&lt;br /&gt;
CRC error: expected 0xc33e35fc, got 0x93097bfb&lt;br /&gt;
* In this case jut add an additional argument to the command line - that has to be the 1st argument, though, and that contains the size information we got from the warning:&lt;br /&gt;
./envedit.pl -s 262144 -D GTA02 -i env.in -f environment.in  -o env.out&lt;br /&gt;
* Now the perl script should produce no more output anything but write a new u-boot_env partition that we can upload to the device by:&lt;br /&gt;
dfu-util -a u-boot_env -R -D env.out&lt;br /&gt;
&lt;br /&gt;
== Device Firmware Upgrade ==&lt;br /&gt;
&lt;br /&gt;
Our version of u-boot also implements [[USB DFU]]. This can be useful to&lt;br /&gt;
load files and kernel for quick testing.&lt;br /&gt;
&lt;br /&gt;
To find out whether your version of u-boot supports this, use the output of&lt;br /&gt;
$ lsusb -v -d 1457:5119&lt;br /&gt;
while the phone is in u-boot mode.&lt;br /&gt;
&lt;br /&gt;
If it supports DFU, you should see the following snippet towards the end of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         4&lt;br /&gt;
bInterfaceNumber        2&lt;br /&gt;
bAlternateSetting       0&lt;br /&gt;
bNumEndpoints           0&lt;br /&gt;
bInterfaceClass       254 Application Specific Interface&lt;br /&gt;
bInterfaceSubClass      1 Device Firmware Update&lt;br /&gt;
bInterfaceProtocol      1&lt;br /&gt;
iInterface              0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For information on how to do firmware upgrades, please see [[dfu-util]]. For neo 1973 you may see [[Flashing the Neo 1973#Actually_flashing_things_into_the_device]], and for the FreeRunner : [[Flashing the Neo FreeRunner]].&lt;br /&gt;
&lt;br /&gt;
=== Booting files over DFU ===&lt;br /&gt;
&lt;br /&gt;
To load a file at memory address 0x32000000:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dfu-util -a 0 -D fileToLoad -R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that, send 'bootm 0x32000000' to u-boot or 'bootelf 0x32000000' if&lt;br /&gt;
its an elf file.&lt;br /&gt;
&lt;br /&gt;
Simple python script that can boot an ELF image - avoiding a ACM bug that breaks on large packets.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
import sys&lt;br /&gt;
import os&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
cmd1 = &amp;quot;neo backlight off\n&amp;quot;&lt;br /&gt;
cmd2 = &amp;quot;bootelf 0x32000000\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def output(tty, str):&lt;br /&gt;
for x in str:&lt;br /&gt;
tty.write(x)&lt;br /&gt;
tty.flush()&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) == 2:&lt;br /&gt;
print &amp;quot;Loading %s...&amp;quot; % sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
loadfile = &amp;quot;dfu-util -a 0 -D %s -R&amp;quot; % sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
os.system(loadfile)&lt;br /&gt;
&lt;br /&gt;
time.sleep(3)&lt;br /&gt;
&lt;br /&gt;
tty = open(&amp;quot;/dev/ttyACM0&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
output(tty, cmd1)&lt;br /&gt;
output(tty, cmd2)&lt;br /&gt;
&lt;br /&gt;
tty.close()&lt;br /&gt;
else:&lt;br /&gt;
print &amp;quot;Usage: %s elffile&amp;quot; % sys.argv[0]&lt;br /&gt;
print &amp;quot;&amp;quot;&lt;br /&gt;
sys.exit(2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== USB connectivity problems ===&lt;br /&gt;
&lt;br /&gt;
I once got errors like this (in dmesg or /var/log/messages) on the host side while connecting the neo in u-boot:&lt;br /&gt;
&lt;br /&gt;
usb 2-1: device descriptor read/64, error -110&lt;br /&gt;
usb usb2: Controller not stopped yet!&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
hub 4-0:1.0: port 1 disabled by hub (EMI?), re-enabling...&lt;br /&gt;
usb 4-1: USB disconnect, address 2&lt;br /&gt;
&lt;br /&gt;
A possible solution is given below. Please note that if you have a usb keyboard or mouse then the command might cause trouble.&lt;br /&gt;
&lt;br /&gt;
rmmod uhci_hcd ; modprobe uhci_hcd&lt;br /&gt;
&lt;br /&gt;
Another option is to plug the FR into a different USB port on the host, preferably one on the Motherboard not the hub.&lt;br /&gt;
&lt;br /&gt;
Disconnecting the Neo's USB while powering up may prevent this problem in the future.&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
&lt;br /&gt;
See [[Flashing the Neo 1973]] and [[Flashing the Neo FreeRunner]] for instructions on using dfu-util to install a new bootloader in your phone.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/U-Boot</id>
		<title>U-Boot</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/U-Boot"/>
				<updated>2008-11-06T22:23:25Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: /* Using usbtty from Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Bootloader}}&lt;br /&gt;
&lt;br /&gt;
[[Image:GTA01-U-Boot.JPG|thumb|300px|u-boot menu on Neo1973]] [[Image:Neo1973 uboot splash closeup.jpg|thumb|300px|u-boot splash screen on Neo1973]]&lt;br /&gt;
&lt;br /&gt;
The bootloader used on the smartphones is called '''U-Boot'''. It takes care of device functionality until Openmoko is booted. This includes [[USB DFU]] for [[Flashing the Neo FreeRunner]], a splash screen, a boot menu, a console for [[bootloader commands]], configuration via [[bootloader environment]], and loading a [[kernel]].&lt;br /&gt;
&lt;br /&gt;
There are various [[bootloader versions]] available.&lt;br /&gt;
&lt;br /&gt;
== Booting into U-boot ==&lt;br /&gt;
&lt;br /&gt;
* Make sure that your phone has had the battery and USB cable removed for at least 30 seconds.&lt;br /&gt;
* Hold in the AUX button on power-up to access the boot menu.&lt;br /&gt;
* Connect the Neo (ie not Debug Board) to a Linux host with the USB cable.&lt;br /&gt;
* Set the console to USB.&lt;br /&gt;
* Connect to /dev/ttyACM0 with a terminal program on the Linux host (you might need to chown uucp.uucp /dev/ttyACM0 )&lt;br /&gt;
* Note that the cdc_acm /dev/ttyACM0 access disappears as soon as the Neo boots, and is replaced by the cdc_ether usb0 network access.&lt;br /&gt;
* You're now at the bootloader prompt.&lt;br /&gt;
* Set the bootdelay uboot environment variable to -1 if you want it to always halt at the bootloader on power-up.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
All versions of the OM smartphone use the [http://u-boot.sourceforge.net/ u-boot] bootloader.&lt;br /&gt;
&lt;br /&gt;
More information on u-boot can be found at&lt;br /&gt;
* http://www.denx.de/wiki/DULG&lt;br /&gt;
* http://www.gumstix.org/tikiwiki/tiki-index.php?page=U-Boot&lt;br /&gt;
* http://linuxdevices.com/articles/AT5085702347.html&lt;br /&gt;
&lt;br /&gt;
Additions to the vanilla u-boot already implemented include:&lt;br /&gt;
* Support for boot from NAND flash using [[S3C2410 Steppingstone]]&lt;br /&gt;
* Support for S3C2410 NAND flash&lt;br /&gt;
* Support for downloading programs via S3C2410 USB Device Controller&lt;br /&gt;
* Support to display bootup logo / status on S3C2410 Framebuffer&lt;br /&gt;
&lt;br /&gt;
However, u-boot still doesn't support many of the features that GTA01 needs, such as&lt;br /&gt;
* Support for reading kernel/initrd from SD/Transflash&lt;br /&gt;
&lt;br /&gt;
[[User:HaraldWelte|HaraldWelte]] is working on those issues, and in fact most of them have already been implemented.&lt;br /&gt;
&lt;br /&gt;
== Bootloader source code ==&lt;br /&gt;
&lt;br /&gt;
The current bootloader source can be found at http://git.openmoko.org/?p=u-boot.git;a=shortlog;h=stable .&lt;br /&gt;
&lt;br /&gt;
To get u-boot by git:&lt;br /&gt;
&lt;br /&gt;
git clone git://git.openmoko.org/git/u-boot.git openmoko/u-boot&lt;br /&gt;
&lt;br /&gt;
To build u-boot:&lt;br /&gt;
* Clone the git tree and check out the stable branch&lt;br /&gt;
* Set the CROSS_COMPILE environment variable to specify the prefix to your toolchain binaries&lt;br /&gt;
* Run &amp;quot;make gta02v5_config&amp;quot; (or gta01bv4_config, or whatever hardware revision you have)&lt;br /&gt;
* Run &amp;quot;make u-boot.udfu&amp;quot;. This will give you an image which you can install with dfu-util, or which you can upload into memory via JTAG (with a debug board)&lt;br /&gt;
&lt;br /&gt;
== Bootloader binary ==&lt;br /&gt;
&lt;br /&gt;
The latest bootloader binary builds can be found under http://downloads.openmoko.org/daily/ .&lt;br /&gt;
&lt;br /&gt;
All versions of the GTA02 (Neo FreeRunner) that have been sold to the public are version 5 hardware, so look for a file with &amp;quot;gta02&amp;quot; and &amp;quot;v5&amp;quot; in the name, for example:&lt;br /&gt;
uboot-gta02v5-latest.bin&lt;br /&gt;
&lt;br /&gt;
The file should be written to the NAND flash address 0x00000000 (size 0x30000) (the first [[Partitions|partition]]).&lt;br /&gt;
&lt;br /&gt;
== Bootloader development ==&lt;br /&gt;
&lt;br /&gt;
=== QT2410 ===&lt;br /&gt;
If you want to do bootloader development on the QT2410, it's easier to work with a bootloader image that can be downloaded via USB into RAM instead of flashing.&lt;br /&gt;
&lt;br /&gt;
To do so, you need to edit the u-boot/include/configs/qt2410.h file, and change the &amp;quot;if 0&amp;quot; in Line 32 into a &amp;quot;if 1&amp;quot;, then recompile with &amp;quot;make&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The resulting &amp;quot;u-boot.bin&amp;quot; is _NOT SUITABLE_ for NAND flash, but only for direct execution from within ram, e.g. by using the [[s3c2410_boot_usb]] program.&lt;br /&gt;
&lt;br /&gt;
=== Neo 1973 ===&lt;br /&gt;
&lt;br /&gt;
Doing bootloader development on the [[Neo 1973]] is a bit more tricky.  First, we don't have any NOR flash.  Second, there is no other way to boot _but_ from NAND.  Therefore, we also don't have a USB downloader like the QT2410.&lt;br /&gt;
&lt;br /&gt;
The main problem is:  The [[S3C2410 Steppingstone]] unconditionally copies the first 4k of flash into its internal SRAM.   That SRAM segment stays unconditionally mapped at physical address zero. How do we get around this&lt;br /&gt;
&lt;br /&gt;
=== Neo FreeRunner ===&lt;br /&gt;
{{main|Neo_FreeRunner_Memory_Mapping}}&lt;br /&gt;
&lt;br /&gt;
==== Using JTAG to boot from RAM ====&lt;br /&gt;
&lt;br /&gt;
So how can we boot from RAM? We use JTAG / OpenOCD to:&lt;br /&gt;
&lt;br /&gt;
* Reset and halt the cpu at PC=0&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; reset halt&lt;br /&gt;
target halted in ARM state due to debug request, current mode: Supervisor&lt;br /&gt;
cpsr: 0x400000d3 pc: 0x00000000&lt;br /&gt;
MMU: disabled, D-Cache: disabled, I-Cache: disabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Download a small piece of code for low-level SDRAM timing initialization (overwrite 4k SRAM of steppingstone)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; load_binary /space/misc/gta01/u-boot.git/board/gta01/lowlevel_foo.bin 0&lt;br /&gt;
downloaded 332 byte in 0s 21899us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Assert a break point at address 0x33f80000 (which indicates that the low-level code has finished)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; bp 0x33f80000 4 hw&lt;br /&gt;
breakpoint added at address 0x33f80000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run the code up to the break point&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; resume&lt;br /&gt;
Target 0 resumed&lt;br /&gt;
&amp;gt; Target 0 halted&lt;br /&gt;
target halted in ARM state due to breakpoint, current mode: Supervisor&lt;br /&gt;
cpsr: 0x600000d3 pc: 0x33f80000&lt;br /&gt;
MMU: disabled, D-Cache: disabled, I-Cache: enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Download the u-boot RAM image to 0x33f80000&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; load_binary /space/misc/gta01/u-boot.git/u-boot.bin 0x33f80000&lt;br /&gt;
downloaded 135692 byte in 6s 567264us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Resume processing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; resume&lt;br /&gt;
Target 0 resumed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, the display backlight gets bright and we see the following familiar prompt on the serial console:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
U-Boot 1.1.6 (Jan 13 2007 - 23:44:23)&lt;br /&gt;
&lt;br /&gt;
DRAM:  128 MB&lt;br /&gt;
NAND:  64 MiB&lt;br /&gt;
*** Warning - bad CRC or NAND, using default environment&lt;br /&gt;
&lt;br /&gt;
In:    serial&lt;br /&gt;
Out:   serial&lt;br /&gt;
Err:   serial&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
GTA01Bv2 #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating bootable images ==&lt;br /&gt;
&lt;br /&gt;
U-boot needs bootable images (such as kernels, but also initrd and others) in form of a so-called ''uImage''.  In order to create a ''uImage'' from e.g. a ''vmlinux'' kernel image, you can proceed as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
objcopy -O binary -R .note -R .comment -S vmlinux linux.bin&lt;br /&gt;
gzip -9 linux.bin&lt;br /&gt;
u-boot/tools/mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n &amp;quot;Kernel Image QT2410&amp;quot; -d linux.bin.gz uImage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Boot menu ==&lt;br /&gt;
[[Image:Neo1973 uboot menu.jpg|thumb|400px|u-boot boot menu on Neo1973]]&lt;br /&gt;
&lt;br /&gt;
As of the Phase-0 release, our u-boot version now features an on-screen boot menu. The items are defined by [[bootloader environment#menu|menu entries in the environment]].&lt;br /&gt;
&lt;br /&gt;
=== Accessing the boot menu ===&lt;br /&gt;
&lt;br /&gt;
You can access the boot menu by pressing and holding the [[Neo1973 AUX Button]] together with the power button while switching the phone on.&lt;br /&gt;
&lt;br /&gt;
=== Using the boot menu ===&lt;br /&gt;
&lt;br /&gt;
By pressing the [[Neo1973 AUX Button]] you can cycle through the menu items.  Use the ''POWER'' button to select one item.&lt;br /&gt;
&lt;br /&gt;
== Bootloader prompt ==&lt;br /&gt;
&lt;br /&gt;
=== Accessing the bootloader prompt ===&lt;br /&gt;
The bootloader prompt is available either on the serial console (via [[Debug Board]]), or as virtual USB Serial device (USB CDC_ACM).&lt;br /&gt;
Whether the serial port or usb is used depends on the u-boot environment variables '''stdin''', '''stdout''' and '''stderr'''.&lt;br /&gt;
&lt;br /&gt;
Whether or not you use usbtty, the first couple of messages will always be displayed on the serial console.&lt;br /&gt;
&lt;br /&gt;
The bootloader is currently configured to wait for three seconds.  If a key press on the '''stdin''' is received within those three seconds, auto-boot is aborted.&lt;br /&gt;
&lt;br /&gt;
==== Using usbtty from Linux ====&lt;br /&gt;
&lt;br /&gt;
Just by connecting the phone in u-boot mode to your Linux pc should make it detect a [[CDC ACM]] device, and you should get a new tty device called /dev/ttyACM0. If not, enable the CONFIG_USB_ACM (Device Drivers -&amp;gt; USB support -&amp;gt; USB Modem (CDC ACM) support). (Instructions for MacOS users are [[MacOS_X#USB_Serial|here]])&lt;br /&gt;
&lt;br /&gt;
Use your favourite terminal emulator (minicom, cu, zc, screen ...) to access it like any other serial port. &lt;br /&gt;
You can adapt the instructions for USB-serial from the [[MacOS_X#USB_Serial|Mac OS]] page.&lt;br /&gt;
If you don't have a favorite, try just: (cu is in the taylor-uucp package, use &amp;quot;apt-get install cu&amp;quot; if it is not yet installed)&lt;br /&gt;
cu -l /dev/ttyACM0&lt;br /&gt;
&lt;br /&gt;
You might need to&lt;br /&gt;
chown uucp.uucp /dev/ttyACM0&lt;br /&gt;
&lt;br /&gt;
to get the necessary rights (even as root).&lt;br /&gt;
&lt;br /&gt;
A nice alternative for cu is Werner Almesberger's [[NeoCon|neocon]].&lt;br /&gt;
&lt;br /&gt;
First, you should try to check whether the USB device shows up in 'lsusb' while you're running in u-boot mode:&lt;br /&gt;
&lt;br /&gt;
# lsusb -d 1457:5119&lt;br /&gt;
Bus 005 Device 079: ID 1457:5119&lt;br /&gt;
&lt;br /&gt;
Second, let's see some more details about the available endpoints and configurations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# lsusb -v -d 1457:5119&lt;br /&gt;
Bus 005 Device 079: ID 1457:5119&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
bLength                18&lt;br /&gt;
bDescriptorType         1&lt;br /&gt;
bcdUSB               1.10&lt;br /&gt;
bDeviceClass            2 Communications&lt;br /&gt;
bDeviceSubClass         0&lt;br /&gt;
bDeviceProtocol         0&lt;br /&gt;
bMaxPacketSize0        16&lt;br /&gt;
idVendor           0x1457&lt;br /&gt;
idProduct          0x5119&lt;br /&gt;
bcdDevice            0.00&lt;br /&gt;
iManufacturer           1 Openmoko, Inc&lt;br /&gt;
iProduct                2 Neo1973 Bootloader U-Boot 1.2.0-g6c7cac8c-dirty-moko3&lt;br /&gt;
iSerial                 3 0000000&lt;br /&gt;
bNumConfigurations      1&lt;br /&gt;
Configuration Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         2&lt;br /&gt;
wTotalLength           85&lt;br /&gt;
bNumInterfaces          3&lt;br /&gt;
bConfigurationValue     1&lt;br /&gt;
iConfiguration          4 TTY via USB&lt;br /&gt;
bmAttributes         0xc0&lt;br /&gt;
Self Powered&lt;br /&gt;
MaxPower                0mA&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         4&lt;br /&gt;
bInterfaceNumber        0&lt;br /&gt;
bAlternateSetting       0&lt;br /&gt;
bNumEndpoints           1&lt;br /&gt;
bInterfaceClass         2 Communications&lt;br /&gt;
bInterfaceSubClass      2 Abstract (modem)&lt;br /&gt;
bInterfaceProtocol      1 AT-commands (v.25ter)&lt;br /&gt;
iInterface              6 Control Interface&lt;br /&gt;
CDC Header:&lt;br /&gt;
bcdCDC               0.6e&lt;br /&gt;
CDC Call Management:&lt;br /&gt;
bmCapabilities       0x00&lt;br /&gt;
bDataInterface          1&lt;br /&gt;
CDC ACM:&lt;br /&gt;
bmCapabilities       0x00&lt;br /&gt;
CDC Union:&lt;br /&gt;
bMasterInterface        0&lt;br /&gt;
bSlaveInterface         1&lt;br /&gt;
Endpoint Descriptor:&lt;br /&gt;
bLength                 7&lt;br /&gt;
bDescriptorType         5&lt;br /&gt;
bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
bmAttributes            3&lt;br /&gt;
Transfer Type            Interrupt&lt;br /&gt;
Synch Type               None&lt;br /&gt;
Usage Type               Data&lt;br /&gt;
wMaxPacketSize     0x0010  1x 16 bytes&lt;br /&gt;
bInterval             255&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         4&lt;br /&gt;
bInterfaceNumber        1&lt;br /&gt;
bAlternateSetting       0&lt;br /&gt;
bNumEndpoints           2&lt;br /&gt;
bInterfaceClass        10 CDC Data&lt;br /&gt;
bInterfaceSubClass      0 Unused&lt;br /&gt;
bInterfaceProtocol      0&lt;br /&gt;
iInterface              5 Bulk Data Interface&lt;br /&gt;
Endpoint Descriptor:&lt;br /&gt;
bLength                 7&lt;br /&gt;
bDescriptorType         5&lt;br /&gt;
bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
bmAttributes            2&lt;br /&gt;
Transfer Type            Bulk&lt;br /&gt;
Synch Type               None&lt;br /&gt;
Usage Type               Data&lt;br /&gt;
wMaxPacketSize     0x0010  1x 16 bytes&lt;br /&gt;
bInterval             255&lt;br /&gt;
Endpoint Descriptor:&lt;br /&gt;
bLength                 7&lt;br /&gt;
bDescriptorType         5&lt;br /&gt;
bEndpointAddress     0x83  EP 3 IN&lt;br /&gt;
bmAttributes            2&lt;br /&gt;
Transfer Type            Bulk&lt;br /&gt;
Synch Type               None&lt;br /&gt;
Usage Type               Data&lt;br /&gt;
wMaxPacketSize     0x0010  1x 16 bytes&lt;br /&gt;
bInterval             255&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         4&lt;br /&gt;
bInterfaceNumber        2&lt;br /&gt;
bAlternateSetting       0&lt;br /&gt;
bNumEndpoints           0&lt;br /&gt;
bInterfaceClass       254 Application Specific Interface&lt;br /&gt;
bInterfaceSubClass      1 Device Firmware Update&lt;br /&gt;
bInterfaceProtocol      1&lt;br /&gt;
iInterface              7 USB Device Firmware Upgrade&lt;br /&gt;
Device Status:     0x0001&lt;br /&gt;
Self Powered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you can access it using your favourite terminal program.&lt;br /&gt;
&lt;br /&gt;
Then, if the environment is not set correctly, you will need to use the current console (e.g. serial console) to change the [[bootloader environment#console|console entries in the environment]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GTA01Bv2 # setenv stderr usbtty&lt;br /&gt;
GTA01Bv2 # setenv stdout usbtty&lt;br /&gt;
GTA01Bv2 # setenv stdin usbtty&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Typical u-boot prompt ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
U-Boot 1.2.0-moko1 (Feb 16 2007 - 00:36:13)&lt;br /&gt;
&lt;br /&gt;
DRAM:  128 MB&lt;br /&gt;
NAND:  64 MiB&lt;br /&gt;
Found Environment offset in OOB..&lt;br /&gt;
Video: 640x480x8 31kHz 59Hz&lt;br /&gt;
USB:   S3C2410 USB Deviced&lt;br /&gt;
In:    serial&lt;br /&gt;
Out:   serial&lt;br /&gt;
Err:   serial&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
GTA01Bv3 #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Commands on the bootloader prompt ===&lt;br /&gt;
&lt;br /&gt;
:''See [[bootloader commands]].''&lt;br /&gt;
&lt;br /&gt;
=== What if I borked my bootloader environment and don't get a prompt anymore? ===&lt;br /&gt;
{{Note|This solution applies to a changed u-boot environment which prevents NAND u-boot to successfully boot.  The Debian u-boot configuration script may be a cause of this issue.}}&lt;br /&gt;
Found a solution here:&lt;br /&gt;
[[http://markmail.org/message/gqypwiohdet6x4am?q=almesberger+partition&amp;amp;page=1&amp;amp;refer=xbamkzwwsaobv7wa]]&lt;br /&gt;
&lt;br /&gt;
It works the following way:&lt;br /&gt;
* Get the devirginator:&lt;br /&gt;
svn co http://svn.openmoko.org/trunk/src/host/devirginator&lt;br /&gt;
cd devirginator&lt;br /&gt;
* Read the u-boot environment from the device:&lt;br /&gt;
dfu-util -a u-boot_env -R -U env.in&lt;br /&gt;
* Create a file that contains everything you want to change in your u-boot environment or get it by issuing the following command:&lt;br /&gt;
wget http://svn.openmoko.org/trunk/src/host/devirginator/environment.in&lt;br /&gt;
* Now let devirginator generate a new u-boot_env partition for us, - that contains the partition table from our u-boot_env, - and all changes we wanted to make; Note that the -D GTA02 is needed for the neo FreeRunner only, and has to come before the other options.&lt;br /&gt;
./envedit.pl -D GTA02 -i env.in -f environment.in -o env.out&lt;br /&gt;
* On my box the partition layout didn't seem to match the idea of envedit.pl, so it issued 2 warnings:&lt;br /&gt;
warning: environment is 262144 bytes, expected 16384&lt;br /&gt;
CRC error: expected 0xc33e35fc, got 0x93097bfb&lt;br /&gt;
* In this case jut add an additional argument to the command line - that has to be the 1st argument, though, and that contains the size information we got from the warning:&lt;br /&gt;
./envedit.pl -s 262144 -D GTA02 -i env.in -f environment.in  -o env.out&lt;br /&gt;
* Now the perl script should produce no more output anything but write a new u-boot_env partition that we can upload to the device by:&lt;br /&gt;
dfu-util -a u-boot_env -R -D env.out&lt;br /&gt;
&lt;br /&gt;
== Device Firmware Upgrade ==&lt;br /&gt;
&lt;br /&gt;
Our version of u-boot also implements [[USB DFU]]. This can be useful to&lt;br /&gt;
load files and kernel for quick testing.&lt;br /&gt;
&lt;br /&gt;
To find out whether your version of u-boot supports this, use the output of&lt;br /&gt;
$ lsusb -v -d 1457:5119&lt;br /&gt;
while the phone is in u-boot mode.&lt;br /&gt;
&lt;br /&gt;
If it supports DFU, you should see the following snippet towards the end of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bLength                 9&lt;br /&gt;
bDescriptorType         4&lt;br /&gt;
bInterfaceNumber        2&lt;br /&gt;
bAlternateSetting       0&lt;br /&gt;
bNumEndpoints           0&lt;br /&gt;
bInterfaceClass       254 Application Specific Interface&lt;br /&gt;
bInterfaceSubClass      1 Device Firmware Update&lt;br /&gt;
bInterfaceProtocol      1&lt;br /&gt;
iInterface              0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For information on how to do firmware upgrades, please see [[dfu-util]]. For neo 1973 you may see [[Flashing the Neo 1973#Actually_flashing_things_into_the_device]], and for the FreeRunner : [[Flashing the Neo FreeRunner]].&lt;br /&gt;
&lt;br /&gt;
=== Booting files over DFU ===&lt;br /&gt;
&lt;br /&gt;
To load a file at memory address 0x32000000:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dfu-util -a 0 -D fileToLoad -R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that, send 'bootm 0x32000000' to u-boot or 'bootelf 0x32000000' if&lt;br /&gt;
its an elf file.&lt;br /&gt;
&lt;br /&gt;
Simple python script that can boot an ELF image - avoiding a ACM bug that breaks on large packets.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
import sys&lt;br /&gt;
import os&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
cmd1 = &amp;quot;neo backlight off\n&amp;quot;&lt;br /&gt;
cmd2 = &amp;quot;bootelf 0x32000000\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def output(tty, str):&lt;br /&gt;
for x in str:&lt;br /&gt;
tty.write(x)&lt;br /&gt;
tty.flush()&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) == 2:&lt;br /&gt;
print &amp;quot;Loading %s...&amp;quot; % sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
loadfile = &amp;quot;dfu-util -a 0 -D %s -R&amp;quot; % sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
os.system(loadfile)&lt;br /&gt;
&lt;br /&gt;
time.sleep(3)&lt;br /&gt;
&lt;br /&gt;
tty = open(&amp;quot;/dev/ttyACM0&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
output(tty, cmd1)&lt;br /&gt;
output(tty, cmd2)&lt;br /&gt;
&lt;br /&gt;
tty.close()&lt;br /&gt;
else:&lt;br /&gt;
print &amp;quot;Usage: %s elffile&amp;quot; % sys.argv[0]&lt;br /&gt;
print &amp;quot;&amp;quot;&lt;br /&gt;
sys.exit(2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== USB connectivity problems ===&lt;br /&gt;
&lt;br /&gt;
I once got errors like this (in dmesg or /var/log/messages) on the host side while connecting the neo in u-boot:&lt;br /&gt;
&lt;br /&gt;
usb 2-1: device descriptor read/64, error -110&lt;br /&gt;
usb usb2: Controller not stopped yet!&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
hub 4-0:1.0: port 1 disabled by hub (EMI?), re-enabling...&lt;br /&gt;
usb 4-1: USB disconnect, address 2&lt;br /&gt;
&lt;br /&gt;
A possible solution is given below. Please note that if you have a usb keyboard or mouse then the command might cause trouble.&lt;br /&gt;
&lt;br /&gt;
rmmod uhci_hcd ; modprobe uhci_hcd&lt;br /&gt;
&lt;br /&gt;
Another option is to plug the FR into a different USB port on the host, preferably one on the Motherboard not the hub.&lt;br /&gt;
&lt;br /&gt;
Disconnecting the Neo's USB while powering up may prevent this problem in the future.&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
&lt;br /&gt;
See [[Flashing the Neo 1973]] and [[Flashing the Neo FreeRunner]] for instructions on using dfu-util to install a new bootloader in your phone.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;br /&gt;
[[Category:Flashing Openmoko]]&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_Zurich</id>
		<title>Openmoko Local Groups: Zurich</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_Zurich"/>
				<updated>2008-11-04T22:47:53Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
!Has Device&lt;br /&gt;
!Has Debug Board&lt;br /&gt;
|-&lt;br /&gt;
|[[User:AudriusA|Audrius Meškauskas]]&lt;br /&gt;
|Developer&lt;br /&gt;
|Learns to program this device and port programs to it. Expert in java which is no in great use here, but things may change (plans to help porting).&lt;br /&gt;
|Dubendorf&lt;br /&gt;
|Has Neo1973 Phase 1 with debug board&lt;br /&gt;
|[[Image: Moko.jpg|center]]&lt;br /&gt;
|[[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Deichkind|Marian]]&lt;br /&gt;
|Linux (since 1996), Qt, C, C++. Java to pay the rent ;-)&lt;br /&gt;
|Mobile Linux (Debian Distribution), GPS&lt;br /&gt;
|Zürich&lt;br /&gt;
|Other info&lt;br /&gt;
|[[Image: Moko.jpg|center]]GTA02&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|[[User:You|Your name here]]&lt;br /&gt;
|Anything&lt;br /&gt;
|Put your interests here&lt;br /&gt;
|Location&lt;br /&gt;
|Other info&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko Local Groups]]&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_Switzerland</id>
		<title>Openmoko Local Groups: Switzerland</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_Switzerland"/>
				<updated>2008-11-04T22:30:59Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Upcoming Events ==&lt;br /&gt;
=== OpenExpo'09 Bern ===&lt;br /&gt;
1/2 april 2009&lt;br /&gt;
&lt;br /&gt;
some ideas:&lt;br /&gt;
&lt;br /&gt;
* community meeting (grill, party?)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Past Activities ==&lt;br /&gt;
* [http://www.openexpo.ch/openexpo-2008-zuerich OpenExpo'08 Winterthur]&lt;br /&gt;
* [http://www.openexpo.ch/openexpo-2008-bern OpenExpo'08 Bern]&lt;br /&gt;
* [http://lug.zhaw.ch/wiki/Distro-Bash_2007 Distro-Bash Winterthur]&lt;br /&gt;
* Openmoko booth at the OpenExpo'07 Zurich&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buying Openmoko Neo FreeRunner in Switzerland ==&lt;br /&gt;
=== Group Sales ===&lt;br /&gt;
[[GroupSales#Switzerland]]&lt;br /&gt;
=== Distributors ===&lt;br /&gt;
see http://openmoko.com/distributors-europe-switzerland.html&lt;br /&gt;
&lt;br /&gt;
== Users in Switzerland ==&lt;br /&gt;
*[[User:C7|C7]]&lt;br /&gt;
*[[User:Obri|Obri]]&lt;br /&gt;
*[[User:yvanxxx|yvanxxx]]&lt;br /&gt;
*[[User:Megalomaniac|Megalomaniac]]&lt;br /&gt;
*[[User:toldap|toldap]]&lt;br /&gt;
*[[User:Gr33b|Gr33b]]&lt;br /&gt;
*[[User:AudriusA|AudriusA]]&lt;br /&gt;
*[[User:cgjusten|cgjusten]]&lt;br /&gt;
*[[User:DarkAngel|DarkAngel]]&lt;br /&gt;
*[[User:Agh|Agh]]&lt;br /&gt;
*[[User:Anakron|Anakron]]&lt;br /&gt;
*[[User:Nowic|Nowic]]&lt;br /&gt;
*[[User:Magbeat|Magbeat]]&lt;br /&gt;
*[[User:darktim|darktim]]&lt;br /&gt;
*[[User:nickik|nickik]]&lt;br /&gt;
*[[User:Skarhand|Skarhand]]&lt;br /&gt;
*[[User:mat|mat]]&lt;br /&gt;
*[[User:psal|psal]]&lt;br /&gt;
*[[User:Tuxfux.ch|Tuxfux.ch]]&lt;br /&gt;
*[[User:claude-elrond740|claude-elrond740]]&lt;br /&gt;
*[[User:DrYak|DrYak]]&lt;br /&gt;
*[[User:bernulli|bernulli]]&lt;br /&gt;
*[[User:jecuendet|jecuendet]]&lt;br /&gt;
*[[User:fbianco|fbianco]] (Geneva &amp;amp; Valais)&lt;br /&gt;
*[[User:dontinelli|dontinelli]]&lt;br /&gt;
*[[User:Deichkind|Deichkind]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko Local Groups]]&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Supported_microSD_cards</id>
		<title>Talk:Supported microSD cards</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Supported_microSD_cards"/>
				<updated>2008-11-02T22:06:36Z</updated>
		
		<summary type="html">&lt;p&gt;Deichkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Let it be known that 4Gb microSDHC cards have been announced by more than one company.  Apparently these will not be supported by default in microSD devices.  Does anyone know if the Neo will support these in theory? [[User:Wasp|Wasp]] 00:06, 16 February 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
: Also 8GB MicroSD cards have now been announced. Would be really nice to know if it's just a driver issue or something more.&lt;br /&gt;
&lt;br /&gt;
: Anyone tried 16GB microSDHC cards (Sandisk)? - the are now available here in Germany --[[User:Nodge|Nodge]] 08:52, 30 October 2008 (UTC)&lt;br /&gt;
: * Yes, I have a SDSDQ-016G-E11M (16GB, Class2) in a Neo-FR in use with Debian (ext2) on it (Qtopia on flash). It can only be boot with manually from NAND. Suspending still causes I/O error on the SD. The rest seems stable. Right now, I don't know how to supply this info in the table.  -- Greetings from Switzerland, [[User:Deichkind|Deichkind]] 23:03, 2 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
&lt;br /&gt;
Can we please define repeatable tests?&lt;br /&gt;
atm I just copy stuff there and back - there is probably more to it.&lt;br /&gt;
Tested the Sandisk 512 and 1024 cards       [[User:Johan|Johan]] 22:27, 4 August 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Use newer kernel/uboot for testing ==&lt;br /&gt;
&lt;br /&gt;
As the 2.6.17 kernel is pretty outdated and openmoko uses 2.6.22 for a long time now, we maybe should use this kernel version for testing, shouldn't we? --[[User:Thomasg|Thomasg]] 16:23, 23 September 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
i strongly second that.&lt;br /&gt;
please do not test with ancient and totally outdated software. this will only generate bogus bugreports which hold everybody from seeing the real problems.&lt;br /&gt;
with recent i mean 2.6.22.5-moko11 or newer. please also add the exact release (including svnr if possible) when filing a bug.&lt;br /&gt;
&lt;br /&gt;
same goes for uboot.&lt;br /&gt;
currently we are at svnr 2943 or higher. please do not file bugs against uboots which are totally outdated.&lt;br /&gt;
if you want to update your uboot for tests, please contact me and i'll try to supply you with a tested uboot for your device. --[[User:Roh|Roh]] 22:03, 23 September 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Beginners need more information ==&lt;br /&gt;
&lt;br /&gt;
Uboot &amp;quot;?&amp;quot; or Linux &amp;quot;Yes&amp;quot; don't mean much to a beginner.&lt;br /&gt;
My guess is&lt;br /&gt;
# &amp;quot;?&amp;quot; means the test has not been performed?&lt;br /&gt;
# uboot &amp;quot;yes&amp;quot; means that you can boot directly from an image on the Micro SD device?&lt;br /&gt;
# Linux = &amp;quot;yes&amp;quot; means that once booted with the specified kernel that I can put a filesystem on the device and use it for general purpose storage?&lt;br /&gt;
Could someone clarify this by adding a legend to this page? Thanks -- [[User:Brian H Wilson|Brian H Wilson]] 18:04, 3 July 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Reformatting the page ==&lt;br /&gt;
&lt;br /&gt;
I suggest to reformat the page so the table is broken up.&lt;br /&gt;
Instead of the table, it would be more modular to have each card listed and described there, since what kernel/uboot the card will work. Additional notes could be supplied more easily than in the table.&lt;br /&gt;
&lt;br /&gt;
== How to obtain the &amp;quot;Model number&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Say how to obtain the &amp;quot;Model number&amp;quot; from the card if one no longer has the box it came in. [[User:Jidanni|Jidanni]] 08:43, 28 October 2008 (UTC)&lt;/div&gt;</summary>
		<author><name>Deichkind</name></author>	</entry>

	</feed>