Neo 1973 Phase 0

From Openmoko

(Difference between revisions)
Jump to: navigation, search
m ('erase clean' not 'erase.jff2')
m (uboot rootfs/clean + memory corruption)
Line 65: Line 65:
  
 
=== power-off while DFU ===
 
=== power-off while DFU ===
 
 
u-boot can power-off the phone while in DFU mode :(
 
u-boot can power-off the phone while in DFU mode :(
  
 
==== Workaround ====
 
==== Workaround ====
 
 
Either press the AUX button frequently to keep the phone from shutting off while the transfer is  in progress, ''or'' access the u-boot console to increase boot_menu_timeout to some large value (in seconds) and restart.
 
Either press the AUX button frequently to keep the phone from shutting off while the transfer is  in progress, ''or'' access the u-boot console to increase boot_menu_timeout to some large value (in seconds) and restart.
  
=== Licenses not in rootfs image ===
+
==== Solution ====
 +
Update to a more recent u-boot revision.  All builds with svn revision '''1284''' or later address this issue.
  
 +
=== Licenses not in rootfs image ===
 
/usr/share/common-licenses is not populated
 
/usr/share/common-licenses is not populated
  
 
==== Workaround ====
 
==== Workaround ====
 
 
printed GPL/LGPL included
 
printed GPL/LGPL included
  
 
=== rootfs update causes what seems like bad blocks ===
 
=== rootfs update causes what seems like bad blocks ===
 
 
Since we do block-by-block erasing of the flash during DFU, the 'rootfs' partition is not erased completely before writing a new JFFS2 image to NAND, if the rootfs image is smaller than the flash size
 
Since we do block-by-block erasing of the flash during DFU, the 'rootfs' partition is not erased completely before writing a new JFFS2 image to NAND, if the rootfs image is smaller than the flash size
  
 
==== Workaround ====
 
==== Workaround ====
 
 
Either use the 'pad' option to '''mkfs.jffs2' when creating the image '''or''' use
 
Either use the 'pad' option to '''mkfs.jffs2' when creating the image '''or''' use
 
  GTA01Bv3#  nand erase clean rootfs
 
  GTA01Bv3#  nand erase clean rootfs
Line 91: Line 88:
  
 
=== Mechanical stress to microSD lid can cause short-circuit ===
 
=== Mechanical stress to microSD lid can cause short-circuit ===
 
 
If you operate the microSD slot without a card inserted, while the device is powered on, plus put some mechanical stress to it, it can short-circuit the contact pins, resulting in 3.3V supply voltage short-circuit.
 
If you operate the microSD slot without a card inserted, while the device is powered on, plus put some mechanical stress to it, it can short-circuit the contact pins, resulting in 3.3V supply voltage short-circuit.
  
 
==== Workaround ====
 
==== Workaround ====
 
 
Please do not power the phone without microSD card inserted.  Especially, never try to switch cards without unpowering the phone completely.
 
Please do not power the phone without microSD card inserted.  Especially, never try to switch cards without unpowering the phone completely.
 +
 +
=== Random system crashes ===
 +
Due to a bug in the GPIO initialization routines of our [[u-boot]] patchset up to '''moko5''', we had memory corruption as soon as more than 64MB of SDRAM were used.
 +
 +
==== Workaround ====
 +
None.
 +
 +
==== Solution ====
 +
The real solution is to update to a more recent u-boot revision, such as http://buildhost.openmoko.org/tmp/deploy/images/u-boot-gta01bv3-r3_0_0_1321.bin
 +
 +
=== Rootfs corrulted after flashing via DFU ===
 +
The [[USB DFU]] code for handling the JFFS2 root filesystem partition did not properly erase the rest of the partition, in case you are flashing an image that is smaller than the physical size of the rootfs partition.
 +
 +
==== Workaround ====
 +
Manually issue
 +
nand erase clean rootfs
 +
on the [[u-boot]] commandline before flashing a new rootfs image.
 +
 +
==== Solution ====
 +
Use a u-boot image svn rev. 1306 or higher.

Revision as of 01:11, 11 March 2007

Contents

Software Image

We were using u-boot, kernel and rootfs images from http://people.openmoko.org/werner/devirginate-20070301.tar.gz to pre-install the devices. This is a self-contained devirginator snapshot, and can be used at any given time to fully restore the phone (complete loss of data is implied).


Restoring original Software Image

NOTE: This is how you do a full restore, including bootloader. This requires a Debug Board. In most cases, it is sufficient to use dfu-util to flash kernel and rootfs partitions


This is how to restore the phone:

  • Go to a convenient directory, then
tar xfz devirginate-20070301.tar.gz
  • Enter the directory:
cd devirginate-20070301
  • Disconnect everything:
    • the USB connector of the debug v2 board from the PC
    • the USB cable from the Neo
    • remove the battery
  • Connect the Neo to the debug v2 board.
  • Connect USB of the debug v2 board to the PC.
  • If you have a serial console, start it now. The device should be something like /dev/ttyUSB0.
  • Connect the USB cable of the Neo.
  • Insert the battery.
  • Power on the Neo. (If it has powered on by itself, that's okay.)
  • Start OpenOCD (if you have a local openocd.cfg, please use that one):
tmp/openocd -f tmp/openocd-debugv2.cfg
  • OpenOCD should print one line (below) and keep running:
Info:    openocd.c:84 main(): Open On-Chip Debugger (2007-01-31 12:00 CET)

If OpenOCD prints an error, please disconnect the USB cable of debug v2 from the PC, connect it again, then restart OpenOCD.

  • In another window, start the install script:
./devirginate -0 -1 -2
NOTE: The -0 option irrecoverably destroys bad block information provided by the chip manufacturer. This is only appropriate for devices from phase 0, or earlier. Instructions will be updated for later models.


Watch the screen of the Neo. The following things should happen:

  • it turns on, showing weird things for about 10-30 seconds
  • the screen goes dark for 1-2 minutes
  • the screen lights up and shows a smiling face for a few minutes
  • the screen goes dark and shows a partial (broken) OpenMoko logo for about 5-10 seconds
  • the screen goes dark again, then shows the full OpenMoko logo
  • the machine will boot Linux now and start touch screen calibration

Errata

power-off while DFU

u-boot can power-off the phone while in DFU mode :(

Workaround

Either press the AUX button frequently to keep the phone from shutting off while the transfer is in progress, or access the u-boot console to increase boot_menu_timeout to some large value (in seconds) and restart.

Solution

Update to a more recent u-boot revision. All builds with svn revision 1284 or later address this issue.

Licenses not in rootfs image

/usr/share/common-licenses is not populated

Workaround

printed GPL/LGPL included

rootfs update causes what seems like bad blocks

Since we do block-by-block erasing of the flash during DFU, the 'rootfs' partition is not erased completely before writing a new JFFS2 image to NAND, if the rootfs image is smaller than the flash size

Workaround

Either use the 'pad' option to mkfs.jffs2' when creating the image or use

GTA01Bv3#  nand erase clean rootfs

on the bootloader console before using DFU to flash a new rootfs image

Mechanical stress to microSD lid can cause short-circuit

If you operate the microSD slot without a card inserted, while the device is powered on, plus put some mechanical stress to it, it can short-circuit the contact pins, resulting in 3.3V supply voltage short-circuit.

Workaround

Please do not power the phone without microSD card inserted. Especially, never try to switch cards without unpowering the phone completely.

Random system crashes

Due to a bug in the GPIO initialization routines of our u-boot patchset up to moko5, we had memory corruption as soon as more than 64MB of SDRAM were used.

Workaround

None.

Solution

The real solution is to update to a more recent u-boot revision, such as http://buildhost.openmoko.org/tmp/deploy/images/u-boot-gta01bv3-r3_0_0_1321.bin

Rootfs corrulted after flashing via DFU

The USB DFU code for handling the JFFS2 root filesystem partition did not properly erase the rest of the partition, in case you are flashing an image that is smaller than the physical size of the rootfs partition.

Workaround

Manually issue

nand erase clean rootfs

on the u-boot commandline before flashing a new rootfs image.

Solution

Use a u-boot image svn rev. 1306 or higher.

Personal tools

Software Image

We were using u-boot, kernel and rootfs images from http://people.openmoko.org/werner/devirginate-20070301.tar.gz to pre-install the devices. This is a self-contained devirginator snapshot, and can be used at any given time to fully restore the phone (complete loss of data is implied).


Restoring original Software Image

NOTE: This is how you do a full restore, including bootloader. This requires a Debug Board. In most cases, it is sufficient to use dfu-util to flash kernel and rootfs partitions


This is how to restore the phone:

  • Go to a convenient directory, then
tar xfz devirginate-20070301.tar.gz
  • Enter the directory:
cd devirginate-20070301
  • Disconnect everything:
    • the USB connector of the debug v2 board from the PC
    • the USB cable from the Neo
    • remove the battery
  • Connect the Neo to the debug v2 board.
  • Connect USB of the debug v2 board to the PC.
  • If you have a serial console, start it now. The device should be something like /dev/ttyUSB0.
  • Connect the USB cable of the Neo.
  • Insert the battery.
  • Power on the Neo. (If it has powered on by itself, that's okay.)
  • Start OpenOCD (if you have a local openocd.cfg, please use that one):
tmp/openocd -f tmp/openocd-debugv2.cfg
  • OpenOCD should print one line (below) and keep running:
Info:    openocd.c:84 main(): Open On-Chip Debugger (2007-01-31 12:00 CET)

If OpenOCD prints an error, please disconnect the USB cable of debug v2 from the PC, connect it again, then restart OpenOCD.

  • In another window, start the install script:
./devirginate -0 -1 -2
NOTE: The -0 option irrecoverably destroys bad block information provided by the chip manufacturer. This is only appropriate for devices from phase 0, or earlier. Instructions will be updated for later models.


Watch the screen of the Neo. The following things should happen:

  • it turns on, showing weird things for about 10-30 seconds
  • the screen goes dark for 1-2 minutes
  • the screen lights up and shows a smiling face for a few minutes
  • the screen goes dark and shows a partial (broken) OpenMoko logo for about 5-10 seconds
  • the screen goes dark again, then shows the full OpenMoko logo
  • the machine will boot Linux now and start touch screen calibration

Errata

power-off while DFU

u-boot can power-off the phone while in DFU mode :(

Workaround

Either press the AUX button frequently to keep the phone from shutting off while the transfer is in progress, or access the u-boot console to increase boot_menu_timeout to some large value (in seconds) and restart.

Licenses not in rootfs image

/usr/share/common-licenses is not populated

Workaround

printed GPL/LGPL included

rootfs update causes what seems like bad blocks

Since we do block-by-block erasing of the flash during DFU, the 'rootfs' partition is not erased completely before writing a new JFFS2 image to NAND, if the rootfs image is smaller than the flash size

Workaround

Either use the 'pad' option to mkfs.jffs2' when creating the image or use

GTA01Bv3#  nand erase clean rootfs

on the bootloader console before using DFU to flash a new rootfs image

Mechanical stress to microSD lid can cause short-circuit

If you operate the microSD slot without a card inserted, while the device is powered on, plus put some mechanical stress to it, it can short-circuit the contact pins, resulting in 3.3V supply voltage short-circuit.

Workaround

Please do not power the phone without microSD card inserted. Especially, never try to switch cards without unpowering the phone completely.