Handhelds.org splash banner Handhelds.org logo by Chrysovalandes Sophocleous
PocketPC Restoration

iPAQ PocketPC (WinCE) Restoration Project

Backing Up PocketPC ROM Image Before Installing Linux
Perform this step before installing Linux on the iPAQ
Restoring PocketPC from wince_image.gz
Use this method if you used BootBlaster to create a wince_image.gz backup of your PocketPC ROM
Verifying the PocketPC Restoration
It is strongly advised to verify that PocketPC was correctly restored
Restoring the Original Firmware
This step, which is an optional part of the restoration process, describes how to reinstall the original firmware.
Verifying the flash_00x00000.bin files
This step applies only if you used the old osloader to save a copy of wince on an h3600.
Restoring PocketPC on the H3900 and H5400
See the note on the ipaq mailing list.

Backing Up PocketPC ROM Image Before Installing Linux

Follow the Backing Up PocketPC step from the bootldr installation instructions

Please do not skip this step before installing Linux. It is much easier to restore from your own backup images than to have to rely on someone else having just the right one for your device (and one that isn't corrupted). Make the backup and keep it in a safe place.

Verifying wince_image.gz

To verify that a wince_image.gz is uncorrupted:
            gzip -tv wince_image.gz
        
Note that no md5sum is necessary for a wince_image.gz file because the compressed file includes a good CRC that the bootldr uses to verify the file contents beforing writing to flash.

Restoring PocketPC from wince_image.gz

To restore Windows CE / PocketPC / Windows Mobile on your iPAQ, please use the instructions on the following wiki page:

http://handhelds.org/moin/moin.cgi/RestoringPocketPc

The instructions below are somewhat out of date.

Reboot the iPAQ, and quickly hit the space bar a few times during the boot process to get a 'boot>' prompt.. You can restart the iPAQ with the Linux command shutdown -r now.

Warning: Please carefully read the messages produced by the following commands. Should you receive an error message of any kind, DO NOT PROCEED. Please send a message to ipaq@handhelds.org or france@handhelds.org.

Make sure the ipaq has bootldr 2.18.01 or greater installed on it before proceeding with these instructions.

It is available at one of the following locations:

Compaq CRL (Cambridge Research Lab) will fix any units that fail to restore properly, but we would like to avoid problems rather than correcting them afterwards.

    At the 'boot>' prompt type:

  • load root

    then start the xmodem transfer of the file wince_image.gz from the host to the iPAQ.

  • At this point, 'boot wince' will boot PocketPC. It will also autoboot on reset unless you hold the center of the joypad while pushing the recessed reset button.
  • If you get:
    	boot> boot wince
    	booting wince...
    	Disabling LCD controller
    	
    and then nothing, and pushing the reset button does not help, then use the sliding hard reset switch to disable power for several minutes.
Now proceed to the Verifying the PocketPC Restoration step.

Verifying the PocketPC Restoration

How do I know that PocketPC was restored correctly?

  1. Push the Q button.
  2. Select the QUtilities
  3. tap the 'Self Test' tab on the bottom of the screen
  4. verify that the box beside 'ROM checksum' is checked
  5. tap the 'Next' button
  6. check the 'Perform automatic Reset' before test box.
  7. tap the 'Start' button.
  8. answer the test questions
  9. verify that the 'ROM checksum' test == 'pass'. If this test passed then you have successfully restored PocketPC.

Reloading the original (parrot) firmware

The bootldr will boot PocketPC automatically, so this step is not required.

If you desire, you may reload the original parrot firmware as follows:

  1. Verify that PocketPC boots!
  2. On the linux host: dd if=flash_00000000.bin of=parrot.bin bs=1k count=256
  3. The file should be 262,144 bytes.
  4. At the bootldr prompt:
                load bootldr
                  
    and xmodem transfer the parrot.bin file.
As of version 2.16.16, the 'load bootldr' command will load either a CRL bootldr or a Parrot bootldr.

Verifying the flash_00x00000.bin files

This is not needed if PocketPC was saved to a wince_image.gz file because the compressed file includes a CRC.

H3100 Series English Language, provided by David Neuer on a 3150 and confirmed by Paul Bickford on a 3135.

  • md5sum flash_00000000.bin
    result == a97e8d807395ee2aef19fc4196baeaf2 flash_00000000.bin
  • md5sum flash_00400000.bin
    result == 6454107ca25bd23397fbe86891c18eb7 flash_00400000.bin
  • md5sum flash_00800000.bin
    result == 043e19e42dce1eece570141eae4f25ad flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == f11957f717c915a777c5e13c0cac4864 flash_00c00000.bin

English Language version 1.77.00, provided by Joseph J. McCarthy on June 26, 2001.

  • md5sum flash_00000000.bin
    result == 2ca24741f229aeadb14dd6decda5d705 flash_00000000.bin
  • md5sum flash_00400000.bin
    result == bd0c962f8ac8d9b6abf4aa1db1e62bc3 flash_00400000.bin
  • md5sum flash_00800000.bin
    result == 9aabd63eba397395e466e1a2fdd246c2 flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == 5d4aa92320ccd5b251a07fdf20d940df flash_00c00000.bin

English Language Distribution (3.0.9348) -- provided by Geoff Hoff and Torquil Gault and one other:

  • md5sum flash_00000000.bin
    result == e729f74d5ec89b4c0888444d2bf2a204 flash_00000000.bin
  • md5sum flash_00400000.bin
    result == 56c22ec2a4c4e49ab7fed81c81e28f7a flash_00400000.bin
  • md5sum flash_00800000.bin
    result == 471b67d2a5f0585478633ef12899582b flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == c8fb012788d31cb03972762ec2f6d586 flash_00c00000.bin

English Language Distribution (3.0.9348) -- provided by Goetz Bock:

  • md5sum flash_00000000.bin
    result == d011e84427def3af9eabaa4c9959c785 flash_00000000.bin
  • md5sum flash_00400000.bin
    result == 56c22ec2a4c4e49ab7fed81c81e28f7a flash_00400000.bin
  • md5sum flash_00800000.bin
    result == f2a35dfd90584d9801f970864396fedc flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == 7c1deb803b30ad31de4025fb1e4e9902 flash_00c00000.bin

Original English Language Distribution:

  • md5sum flash_00000000.bin
    result == 19048543fda719a9bcb6286c482d33fe flash_00000000.bin
  • md5sum flash_00400000.bin
    result == ac231b93e9f87cec278a10749db71679 flash_00400000.bin
  • md5sum flash_00800000.bin
    result == 8d86a064b7c7a9e561212226a4f1f870 flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == a1997ee7b898044b8d138e8bd0e19439 -

French Language Distribution - provided by Lionel Ulmer:

  • md5sum flash_00000000.bin
    result == 6f04a05750082ac8f51929e6e31be24d flash_00000000.bin
  • md5sum flash_00400000.bin
    result == b77a8d21606a6ade64400085017bbb48 flash_00400000.bin
  • md5sum flash_00800000.bin
    result == 47b4be1d434b126361fbe46f6186f796 flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == dcee91b882c8e85a4721b23233603485 -

German Language Distribution - provided by Jörn Eyrich:

  • md5sum flash_00000000.bin
    result == 065f9fc89031a313c922213850f93fd6 flash_00000000.bin
  • md5sum flash_00400000.bin
    result == 81d0c22823f1c767bbda5b49ff7db585 flash_00400000.bin
  • md5sum flash_00800000.bin
    result == cb922a93a45fa27c8e19cb9b9df71526 flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == 559d7c2134ab17241328cba29b0ed183 -

Dutch Language Distribution - provided by Kero van Gelder:

  • md5sum flash_00000000.bin
    result == a725655cf47bbff04a25df3e433548b1 flash_00000000.bin
  • md5sum flash_00400000.bin
    result == 2f5f56d9a7aa032a31c39d1a9c91e783 flash_00400000.bin
  • md5sum flash_00800000.bin
    result == 7e60ca1fa5985a64689ec0047368a862 flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == 11505fb722955cee335402de8c08f227 -

Italian Language Distribution - provided by Ing. Marcello Giustiniani

  • md5sum flash_00000000.bin
    result == 3456aa1cdc118f917c9c60984d7bde9f flash_00000000.bin
  • md5sum flash_00400000.bin
    result == 4fef6dd723ccec7cac18bef53cf11b88 flash_00400000.bin
  • md5sum flash_00800000.bin
    result == 412d1d7c5177c484d1c996853fdc7035 flash_00800000.bin
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == d7aa682bb6b204546164d07d5730c4ce -

Spanish WinCE 3.0.9348 that came with my iPAQ H3660 - provide by Robert Millan

  • md5sum flash_00000000.bin
    result == 25398ca611f9a930a7d8d6bfa19739ec
  • md5sum flash_00400000.bin
    result == 172ec2f7e5beaa400bf1e7a6f88796e6
  • md5sum flash_00800000.bin
    result == c80d8b7031bf78156171424cabf589c3
  • dd if=flash_00c00000.bin bs=1024 count=3584 | md5sum
    result == 37d93f8c3ef1496a5abc38d8dfb63a8f

You must use dd on the last file because it appears that PocketPC uses the last 1/2MB of the file to store data. This data will be different for every unit depending upon how the unit was used before the OSloader program was executed.


Restoring PocketPC on the H3900 and H5400

See this thread on the ipaq mailing list.

Questions?

Please post any questions to ipaq@handhelds.org.

Have fun,

--George

Modified $Date: 2005/04/09 04:40:25 $ by $Author: paule $

Please send comments on this document to the bootldr mailing list (bootldr@handhelds.org)



$Id: wincerestoration.html,v 1.68 2005/04/09 04:40:25 paule Exp $