http://wiki.openmoko.org/api.php?action=feedcontributions&user=TheShonkoKid&feedformat=atomOpenmoko - User contributions [en]2024-03-28T23:03:03ZUser contributionsMediaWiki 1.19.24http://wiki.openmoko.org/wiki/Dfu-util-windowsDfu-util-windows2008-02-06T15:19:38Z<p>TheShonkoKid: /* Potential Approaches */</p>
<hr />
<div>== Porting dfu-util to Windows ==<br />
<br />
Note: This is entirely work in progress and has not yet been successfully finished. Nevertheless hopefully the information on this page will serve as a starting point for anyone who find the time to take this further. After all, as many people still use Windows PCs as their every day computers, having a convenient way to re-flash a Neo from Windows would probably open up the user base.<br />
<br />
=== Potential Approaches ===<br />
<br />
* Cygwin<br />
: Not very attactive as Cygwin binaries require Cygwin in order to run. You will not get a simple, native dfu-util.exe which can be downloaded and used on any Windows machine that way.<br />
<br />
* MinGW/MSYS<br />
: MinGW (Minimalist GNU for Windows) seems to be the platform of choice.<br />
<br />
* LibUSB-Win32<br />
: Will only be able to be built on a Windows box<br />
<br />
=== MinGW/MSYS port: What has been done so far ===<br />
<br />
The preferred order of installation is:<br />
<br />
# Install MinGW (the core installation should be sufficient)<br />
# Install MSYS (Note: make comes with MSYS while GCC comes with MinGW)<br />
<br />
Here is step-by-step howto:<br />
<br />
# Download http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780&release_id=529741 and execute the installer.<br />
: Note: It has often been a good idea to install into a directory that has no spaces in the filename.<br />
# Download MSYS-1.0.10.exe from http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963 and install. You will need to enter the path where you installed MinGW. It's a good idea to install MinGW and MSYS next to each other, i.e. C:\SOMEDIR\MinGW and C:\SOMEDIR\MSYS.<br />
: Note: Make sure to open the "Current Version: 1.0.10" folder as the newer version 1.0.11 does not have an installer yet. (See: http://sourceforge.net/mailarchive/message.php?msg_id=fhvul1%24f6j%241%40ger.gmane.org)<br />
# Download http://prdownloads.sourceforge.net/mingw/msysDTK-1.0.1.exe?download, which contains the autotools. Install into the same directory into which you installed MSYS itself. The installer might not automatically suggest the right directory.<br />
: Note: If anyone can spot this file from http://sourceforge.net/project/showfiles.php?group_id=2435, please edit this page. I was only able to find this direct link by using a search engine.<br />
<br />
That should give you an Icon in your Start menu in MinGW->MSYS with the name of msys. Open that one, and you will find yourself in a bourne compatible shell on your native Windows system.<br />
<br />
You can try to execute some commends such as gcc, make, etc. to make sure you installed everything correctly.<br />
<br />
=== Getting dfu-util sources ===<br />
<br />
Your home directory in msys lives in the location where you installed MSYS in %MSYS_HOME%\home\%USERNAME. Check out the dfu-util sources there or copy them into that directory in case you checked them out somehwere else on your Windows filesystem.<br />
<br />
=== Where we're stuck ===<br />
<br />
configure.ac:4: error: Autoconf version 2.59 or higher is required<br />
configure.ac:4: the top level<br />
autom4te: /bin/m4 failed with exit status: 1<br />
configure.ac: `AM_INIT_AUTOMAKE' must be used<br />
automake: your implementation of AM_INIT_AUTOMAKE comes from an<br />
automake: old Automake version. You should recreate aclocal.m4<br />
automake: with aclocal and run automake again.<br />
configure.ac: required file `./install-sh' not found<br />
configure.ac: required file `./mkinstalldirs' not found<br />
configure.ac: required file `./missing' not found<br />
automake: no `Makefile.am' found or specified<br />
<br />
Looks like we need newer versions of the autotools. There are .tar.bz2 packages with newer versions on SourceForge, but it looks as if you have to install them manually.<br />
<br />
=== Where to go from here ===<br />
<br />
Even if the autotools will work and create a Makefile, any potential porting work is just about to start. There is a libusb port for Win32, but we don't know yet if the API will be compatible with the Linux version and what other problems might arise.<br />
<br />
Stay tuned. Or even better: Help out!</div>TheShonkoKidhttp://wiki.openmoko.org/wiki/Neo_1973_OpenOCDNeo 1973 OpenOCD2007-08-04T21:39:12Z<p>TheShonkoKid: /* Getting OpenOCD */</p>
<hr />
<div>== About OpenOCD ==<br />
<br />
[http://openocd.berlios.de/ OpenOCD] is a 100% free software On-chip-debugger for commonly-found ARM JTAG probes such as [[wiggler]], chamaeleon, jtag-key and others.<br />
<br />
It provides a human-readable telnet interface for manually halting/resuming the target device, reading/writing registers and memory, etc.<br />
<br />
In addition, it provides a RDI (remote debugger interface) on a TCP port. This interface can be used by gdb (the GNU Debugger).<br />
<br />
The GTA01 development team uses OpenOCD with a [[wiggler]] compatible probe as their ICE solution.<br />
<br />
<br />
== Getting OpenOCD ==<br />
<br />
=== Debian Package ===<br />
<br />
We now have a Debian binary package of OpenOCD, available from http://people.openmoko.org/laforge/dpkg. Installing this package is the preferred method to install OpenOCD on your development machine like<br />
<br />
dpkg --install openocd_82-1_i386.deb<br />
<br />
=== Source Code ===<br />
<br />
OpenOCD Revision 82 and later have been proven to work with our [[QT2410]] and [[Neo1973]] target board and wiggler as well as Amontect JTAGkey and JTAGkey tiny. You can e.g. check rev. 130 out of the OpenOCD subversion via<br />
<br />
svn co -r 130 http://svn.berlios.de/svnroot/repos/openocd/trunk<br />
<br />
=== Windows Binaries ===<br />
<br />
The [http://www.yagarto.de/ YAGARTO] Project provides a Win32 installer for OpenOCD. Details and download can be found at http://www.yagarto.de/howto/openocd/index.html. This will then work with the FDTI drivers available from http://people.openmoko.org/laforge/misc/debug_board_v2/windows_drivers/<br />
<br />
== Configuration ==<br />
<br />
[[User:HaraldWelte]] has provided a [http://people.gta01.hmw-consulting.de/laforge/misc/openocd.cfg openocd.cfg configuration file] for use of OpenOCD with wiggler and the QT2410 target board. <br />
<br />
== Using OpenOCD ==<br />
<br />
We cannot provide a full manual for OpenOCD, but please check <br />
[[Bootloader#Using_JTAG_to_boot_from_RAM]] and [[NAND bad blocks#JTAG_.2F_OpenOCD_.2F_u-boot_RAM_based]], as well as the [[Neo1973 OpenOCD#Using OpenOCD telnet interface]] section below.<br />
<br />
== Known Bugs and Troubleshooting ==<br />
<br />
=== CP15 register read/write of ARM920T core not working ===<br />
<br />
This has been reported upstream. Bugfix pending.<br />
<br />
=== Did you turn it on ? ===<br />
<br />
An easily made but devastating mistake is to forget to actually activate the CPU. Just connecting power is not enough !<br />
Press and hold the power button until the boot loader does its count-down, or, in case there is no runnable boot loader,<br />
the CPU keeps itself busy.<br />
<br />
=== number of discovered devices in JTAG chain doesn't match configuration ===<br />
<br />
You get something like:<br />
Error: jtag.c:1224 jtag_examine_chain(): number of discovered devices in JTAG chain (51) doesn't match configuration (1)<br />
<br />
This seems like a libftdi initialization bug. Sometimes the FT2232 doesn't get completely reset into a sane state at startup of OpenOCD. Please unplug the USB cable from the [[Amontec JTAGkey]] / [[Debug Board]] and re-plug. It should immediately work the next time. Bugfix would be appreciated a lot!<br />
<br />
=== JTAG communication failure ===<br />
<br />
Another common error is this one:<br />
JTAG communication failure, check connection, JTAG interface, target power etc.<br />
<br />
Also this one is fixed by unplugging and re-plugging USB.<br />
<br />
== OpenOCD and [[Debug Board]] ==<br />
<br />
=== libftdi-0.8 ===<br />
<br />
If you want to use OpenOCD with our Debug Board v2, and want to use the serial port simultaneously with OpenOCD, you '''need libftdi-0.8 or later'''. Chances are high that your distribution still ships an earlier version of libftdi, so you might want to download it from http://www.intra2net.com/de/produkte/opensource/ftdi/ and build yourself.<br />
<br />
=== openocd.cfg ===<br />
<br />
This is an openocd.cfg that is known to work with [[Debug Board]] (v2/v3), [[Neo1973 Hardware#GTA01Bv3]] and OpenOCD 130:<br />
<pre><br />
telnet_port 4444<br />
gdb_port 3333<br />
interface ft2232<br />
jtag_speed 0<br />
ft2232_vid_pid 0x1457 0x5118<br />
ft2232_layout "jtagkey"<br />
reset_config trst_and_srst<br />
jtag_device 4 0x1 0xf 0xe<br />
daemon_startup attach<br />
target arm920t little reset_run 0 arm920t<br />
working_area 0 0x200000 0x4000 backup<br />
run_and_halt_time 0 5000<br />
</pre><br />
<br />
For later versions of OpenOCD you may need to specify the device description. For the v2 Debug board add this line to your openocd.cfg:<br />
<pre><br />
ft2232_device_desc "Debug Board for Neo1973 A"<br />
</pre><br />
<br />
=== Using OpenOCD telnet interface ===<br />
<br />
The telnet interface can be accessed using<br />
telnet localhost 4444<br />
<br />
it provides a plethora of functions for debugging. You might be interested in<br />
<pre><br />
reset<br />
reset halt<br />
resume<br />
poll<br />
reg<br />
load_binary<br />
mdw<br />
mww<br />
</pre><br />
<br />
=== Using OpenOCD and gdb for remote debugging ===<br />
<br />
First, you will need a suitable cross-gdb (a gdb that runs on your host architecture, e.g. i386, but works with code for arm). In OpenEmbedded, you can build such a cross-gcc by using<br />
bitbake gdb-cross<br />
<br />
If you want to debug the kernel, you can then start this gdb with<br />
$ arm-linux-gdb vmlinux<br />
<br />
which will give you something like<br />
<pre><br />
GNU gdb 6.6<br />
Copyright (C) 2006 Free Software Foundation, Inc.<br />
GDB is free software, covered by the GNU General Public License, and you are<br />
welcome to change it and/or distribute copies of it under certain conditions.<br />
Type "show copying" to see the conditions.<br />
There is absolutely no warranty for GDB. Type "show warranty" for details.<br />
This GDB was configured as "--host=i686-linux --target=arm-linux"...<br />
(gdb) <br />
</pre><br />
<br />
We now need to connect to the OpenOCD daemon, which is done using the '''target remote''' command. In this particular example, we did already halt the target by issuing '''halt''' on the '''telnet''' command line<br />
<br />
<pre><br />
(gdb) target remote localhost:3333<br />
Remote debugging using localhost:3333<br />
warning: shared library handler failed to enable breakpoint<br />
0xc0129b8c in memmove () at include/asm/current.h:9<br />
9 {<br />
(gdb)<br />
</pre><br />
<br />
[[Category:Software]]<br />
[[Category:Guides]]</div>TheShonkoKidhttp://wiki.openmoko.org/wiki/Neo_1973_OpenOCDNeo 1973 OpenOCD2007-08-04T21:05:00Z<p>TheShonkoKid: /* openocd.cfg */</p>
<hr />
<div>== About OpenOCD ==<br />
<br />
[http://openocd.berlios.de/ OpenOCD] is a 100% free software On-chip-debugger for commonly-found ARM JTAG probes such as [[wiggler]], chamaeleon, jtag-key and others.<br />
<br />
It provides a human-readable telnet interface for manually halting/resuming the target device, reading/writing registers and memory, etc.<br />
<br />
In addition, it provides a RDI (remote debugger interface) on a TCP port. This interface can be used by gdb (the GNU Debugger).<br />
<br />
The GTA01 development team uses OpenOCD with a [[wiggler]] compatible probe as their ICE solution.<br />
<br />
<br />
== Getting OpenOCD ==<br />
<br />
=== Debian Package ===<br />
<br />
We now have a Debian binary package of OpenOCD, available from http://people.openmoko.org/laforge/dpkg. Installing this package is the preferred method to install OpenOCD on your development machine like<br />
<br />
dpkg --install openocd_82-1_i386.deb<br />
<br />
=== Source Code ===<br />
<br />
OpenOCD Revision 82 and later have been proven to work with our [[QT2410]] and [[Neo1973]] target board and wiggler as well as Amontect JTAGkey and JTAGkey tiny. You can e.g. check rev. 130 out of the OpenOCD subversion via<br />
<br />
svn co -r 130 http://svn.berlios.de/svnroot/repos/openocd/trunk<br />
<br />
== Configuration ==<br />
<br />
[[User:HaraldWelte]] has provided a [http://people.gta01.hmw-consulting.de/laforge/misc/openocd.cfg openocd.cfg configuration file] for use of OpenOCD with wiggler and the QT2410 target board. <br />
<br />
== Using OpenOCD ==<br />
<br />
We cannot provide a full manual for OpenOCD, but please check <br />
[[Bootloader#Using_JTAG_to_boot_from_RAM]] and [[NAND bad blocks#JTAG_.2F_OpenOCD_.2F_u-boot_RAM_based]], as well as the [[Neo1973 OpenOCD#Using OpenOCD telnet interface]] section below.<br />
<br />
== Known Bugs and Troubleshooting ==<br />
<br />
=== CP15 register read/write of ARM920T core not working ===<br />
<br />
This has been reported upstream. Bugfix pending.<br />
<br />
=== Did you turn it on ? ===<br />
<br />
An easily made but devastating mistake is to forget to actually activate the CPU. Just connecting power is not enough !<br />
Press and hold the power button until the boot loader does its count-down, or, in case there is no runnable boot loader,<br />
the CPU keeps itself busy.<br />
<br />
=== number of discovered devices in JTAG chain doesn't match configuration ===<br />
<br />
You get something like:<br />
Error: jtag.c:1224 jtag_examine_chain(): number of discovered devices in JTAG chain (51) doesn't match configuration (1)<br />
<br />
This seems like a libftdi initialization bug. Sometimes the FT2232 doesn't get completely reset into a sane state at startup of OpenOCD. Please unplug the USB cable from the [[Amontec JTAGkey]] / [[Debug Board]] and re-plug. It should immediately work the next time. Bugfix would be appreciated a lot!<br />
<br />
=== JTAG communication failure ===<br />
<br />
Another common error is this one:<br />
JTAG communication failure, check connection, JTAG interface, target power etc.<br />
<br />
Also this one is fixed by unplugging and re-plugging USB.<br />
<br />
== OpenOCD and [[Debug Board]] ==<br />
<br />
=== libftdi-0.8 ===<br />
<br />
If you want to use OpenOCD with our Debug Board v2, and want to use the serial port simultaneously with OpenOCD, you '''need libftdi-0.8 or later'''. Chances are high that your distribution still ships an earlier version of libftdi, so you might want to download it from http://www.intra2net.com/de/produkte/opensource/ftdi/ and build yourself.<br />
<br />
=== openocd.cfg ===<br />
<br />
This is an openocd.cfg that is known to work with [[Debug Board]] (v2/v3), [[Neo1973 Hardware#GTA01Bv3]] and OpenOCD 130:<br />
<pre><br />
telnet_port 4444<br />
gdb_port 3333<br />
interface ft2232<br />
jtag_speed 0<br />
ft2232_vid_pid 0x1457 0x5118<br />
ft2232_layout "jtagkey"<br />
reset_config trst_and_srst<br />
jtag_device 4 0x1 0xf 0xe<br />
daemon_startup attach<br />
target arm920t little reset_run 0 arm920t<br />
working_area 0 0x200000 0x4000 backup<br />
run_and_halt_time 0 5000<br />
</pre><br />
<br />
For later versions of OpenOCD you may need to specify the device description. For the v2 Debug board add this line to your openocd.cfg:<br />
<pre><br />
ft2232_device_desc "Debug Board for Neo1973 A"<br />
</pre><br />
<br />
=== Using OpenOCD telnet interface ===<br />
<br />
The telnet interface can be accessed using<br />
telnet localhost 4444<br />
<br />
it provides a plethora of functions for debugging. You might be interested in<br />
<pre><br />
reset<br />
reset halt<br />
resume<br />
poll<br />
reg<br />
load_binary<br />
mdw<br />
mww<br />
</pre><br />
<br />
=== Using OpenOCD and gdb for remote debugging ===<br />
<br />
First, you will need a suitable cross-gdb (a gdb that runs on your host architecture, e.g. i386, but works with code for arm). In OpenEmbedded, you can build such a cross-gcc by using<br />
bitbake gdb-cross<br />
<br />
If you want to debug the kernel, you can then start this gdb with<br />
$ arm-linux-gdb vmlinux<br />
<br />
which will give you something like<br />
<pre><br />
GNU gdb 6.6<br />
Copyright (C) 2006 Free Software Foundation, Inc.<br />
GDB is free software, covered by the GNU General Public License, and you are<br />
welcome to change it and/or distribute copies of it under certain conditions.<br />
Type "show copying" to see the conditions.<br />
There is absolutely no warranty for GDB. Type "show warranty" for details.<br />
This GDB was configured as "--host=i686-linux --target=arm-linux"...<br />
(gdb) <br />
</pre><br />
<br />
We now need to connect to the OpenOCD daemon, which is done using the '''target remote''' command. In this particular example, we did already halt the target by issuing '''halt''' on the '''telnet''' command line<br />
<br />
<pre><br />
(gdb) target remote localhost:3333<br />
Remote debugging using localhost:3333<br />
warning: shared library handler failed to enable breakpoint<br />
0xc0129b8c in memmove () at include/asm/current.h:9<br />
9 {<br />
(gdb)<br />
</pre><br />
<br />
[[Category:Software]]<br />
[[Category:Guides]]</div>TheShonkoKidhttp://wiki.openmoko.org/wiki/Dfu-utilDfu-util2007-07-30T12:08:48Z<p>TheShonkoKid: /* --list */</p>
<hr />
<div>{{warning|Dfu-util is currently broken on big-endian architectures}}<br />
{{warning|Do not flash U-Boot unless you are sure you need to}}<br />
{{note|You need to connect your neo directly to your pc with no hub between. Otherwise there could be problems with the hub and the usb reset.}}<br />
<br />
== Purpose ==<br />
<br />
dfu-util is a program that implements the Host (PC) side of the [[USB DFU]] (Universal Serial Bus Device Firmware Upgrade) protocol.<br />
<br />
In the OpenMoko project, we use this program to communicate with our specially enhanced [[u-boot]] boot loader, which implements the DFU device side.<br />
<br />
Using dfu-util and your Neo1973, you can<br />
Link* transfer and flash partitions to [[NAND Flash]], such as <br />
** The Linux [[kernel]]<br />
** The root file system partition<br />
** The splash screen partition<br />
** The u-boot environment<br />
** Last, but not least: The [[u-boot]] bootloader itself.<br />
* transfer anything into Neo1973 RAM<br />
** this can be used for fast development cycles of low-level code such as kernels without flashing them<br />
* read out the current NAND partitions<br />
** this is an easy and efficient way of doing full backups of your phone<br />
<br />
== Source Code ==<br />
<br />
dfu-util can be found at http://svn.openmoko.org/trunk/src/host/dfu-util/<br />
<br />
Binary packages will be made available as part of the regular [[OpenMoko]] builds<br />
<br />
== Reference Documentation ==<br />
<br />
=== Command-line options ===<br />
<br />
==== --help ====<br />
<br />
<pre><br />
dfu-util - (C) 2007 by OpenMoko Inc.<br />
This program is Free Software and has ABSOLUTELY NO WARRANTY<br />
<br />
Usage: dfu-util [options] ...<br />
-h --help Print this help message<br />
-V --version Print the version number<br />
-l --list List the currently attached DFU capable USB devices<br />
-d --device vendor:product Specify Vendor/Product ID of DFU device<br />
-c --cfg config_nr Specify the Configuration of DFU device<br />
-i --intf intf_nr Specify the DFU Interface number<br />
-a --alt alt_nr Specify the Altseting of the DFU Interface<br />
-t --transfer-size Specify the number of bytes per USB Transfer<br />
-U --upload file Read firmware from device into <file><br />
-D --download file Write firmware from <file> into device<br />
-R --reset Issue USB Reset signalling once we're finished<br />
</pre><br />
<br />
==== --list ====<br />
<br />
Using the --list option, you can list the available DFU capable devices, their configuration, interface and altsettings.<br />
Below is an example for a current Neo1973 phone in u-boot '''Runtime Mode'''<br />
<pre><br />
# ./dfu-util --list<br />
dfu-util - (C) 2007 by OpenMoko Inc.<br />
This program is Free Software and has ABSOLUTELY NO WARRANTY<br />
<br />
Found DFU Runtime: [0x1457:0x5119] devnum=0, cfg=0, intf=2, alt=0, name="USB Device Firmware Upgrade"<br />
</pre><br />
<br />
Below is an example for a current Neo1973 phone in u-boot '''DFU Mode'''<br />
<pre><br />
# ./dfu-util --list<br />
dfu-util - (C) 2007 by OpenMoko Inc.<br />
This program is Free Software and has ABSOLUTELY NO WARRANTY<br />
<br />
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=0, name="RAM 0x32000000"<br />
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=1, name="u-boot"<br />
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=2, name="u-boot_env"<br />
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=3, name="kernel"<br />
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=4, name="splash"<br />
Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=5, name="rootfs"<br />
</pre><br />
<br />
This shows you six interfaces, all in '''configuration 0''' and '''interface 0''', with altsetting 0...5. The name is currently not yet defined, but will be added to one of the upcoming u-boot releases. The mapping on the Neo1973 is as follows:<br />
<br />
* 0: RAM<br />
* 1: 'u-boot' partition<br />
* 2: 'u-boot_env' partition<br />
* 3: 'kernel' partition<br />
* 4: 'splash' partition<br />
* 5: 'rootfs' partition<br />
<br />
==== --device ====<br />
<br />
You can specify the USB Vendor and Product ID of the device you want to program:<br />
<br />
dfu-util --device 0x1457:0x5119<br />
<br />
If you only have one standards-compliant DFU device attached to your PC, this is optional. However, as soon as you have multiple DFU devices, dfu-util will detect this and abort, asking you to specify which device it shall use.<br />
<br />
==== --transfer-size ====<br />
<br />
Specifies the size of each individual USB transfer. If you don't use it, the maximum possible size for your combination of host operating system and USB device is chosen (for optimal performance).<br />
<br />
==== --download ====<br />
<br />
download the given file into the device.<br />
<br />
==== --upload ====<br />
<br />
upload from the DFU device into the given file[name].<br />
<br />
{{note|Upload support is currently broken}}<br />
<br />
== Phrasebook ==<br />
<br />
There's no full-fledged manual yet. Instead, some examples:<br />
<br />
=== Flashing the kernel ===<br />
<br />
dfu-util -a 3 -R -D /path/to/uImage<br />
<br />
=== Flashing the bootloader ===<br />
<br />
dfu-util -a 1 -R -D /path/to/u-boot.bin<br />
<br />
=== Copying a kernel into RAM ===<br />
<br />
dfu-util -a 0 -R -D /path/to/uImage<br />
<br />
Once this has finished, the kernel will be available at the default load address of 0x32000000 in Neo1973 RAM. <br />
<br />
{{note|You cannot transfer more than 2MB of data into RAM using this method}}<br />
<br />
== Troubleshooting notes ==<br />
<br />
If during flashing of an image using dfu-util you're consistently getting an error -110 message, check that the size of the destination NAND partition is big enough to hold the image. For example the kernel partition is only 2 MB big by default and a kernel with debugging info compiled-in can often exceed this. It's possible to change the partition layout to enlarge a given partition and shrink other partitions but you have to remember to reflash all partitions whose start offset has changed afterwards. To adjust partitions layout use the ''mtdparts'' [[Bootloader|u-boot command]].<br />
<br />
If in turn you're facing errors in seemingly random places during the flashing of images, most likely the USB hub or cable through which your Neo1973 is connected, is of too poor quality. It is recommended that you always connect the phone directly to the host when using dfu-util.<br />
<br />
If dfu-util reports a message like the following, before it starts flashing:<pre><br />
Resetting USB...<br />
not at least 2 device changes found ?!?<br />
Lost device after RESET?</pre> retry the command - it should work on a second run.<br />
* Compiling dfu-util on Mac: http://lists.openmoko.org/pipermail/community/2007-July/008438.html<br />
<br />
== See also ==<br />
<br />
[[Flashing openmoko]] to the latest software.<br />
<br />
{{Languages|Dfu-util}}<br />
<br />
[[Category:Developer software]]</div>TheShonkoKid