how to jtag your 900/900c

if your 900 or 900c suddenly stops powering up, maybe after a system crash or just on its own after a reboot,
then it probably has a corrupt bootloader image, but otherwise perfectly working hardware.
or if you flashed the device in the wrong way (oops) that resulted in corrupt bootloader...
well, here's the ultimate last chance solution.

what you need:
- PC with windows (98 or later), or linux works too, but this description applies to windows
- if you are on windows, then also cygwin from
- parallel port on PC
- jtag cable, schematics for a working example (very simple!!) here:
note, this emulates a wiggler cable... you can also order some more serious type of wiggler but that costs more.
- soldering iron and the right screwdriver to disassemble the 900c
- bootloader file
- jtag tools 0.5.1, here's a version compiled for cygwin:

1. after you got all the above, disassemble the 900c, hpcnec has a disassembly guide here:
2. solder the jtag cable to the jtag pins on the 900c like this: in this picture and sort out the LPT end on the PC too.
NOTE: an alternative jtag header and pinout exists on the motherboard, for more information refer to the hpcfactor thread linked at the bottom of this page.
3. now to make the software work... assuming you are on windows, download and install cygwin from when it gets to ask you about which packages to download,
leave all that on default except for an extra package you need, it's ioperm under Devel packages.
4. using cmd.exe, cmd into cygwin\bin and run this command: ioperm -i
5. after that, here is the already compiled jtag tools for cygwin in windows: download and unzip that to cygwin\home\yourusername\jtag. then copy the jtag folder within usr\local\share from into cygwin\usr\local\share\jtag now it's all ready...
to start jtag tools, run cygwin from the cygwin icon on desktop or start menu, and from the cmd it opens, issue this command: cd jtag, then issue this command: cd src, finally issue this: ./jtag
6. connect the 900c if you haven't already, and power it up by simply inserting the battery and putting it on AC power as well! type this command: cable parallel 0x378 WIGGLER
(check if your parallel port is indeed on 0x378, in device manager, lpt port, resources) it should say Initializing ...
of course, if you have a non wiggler cable that is supported by jtag tools then use the name of that instead.
7. then type this command: detect
this should tell you your CPU is a PXA255A0.
if it doesn't return anything, make sure the device is on AC properly / battery is fully charged. the point is that the board must be powered on for detect to work.
8. next command is: detectflash
that should return lots of info on the flash
9. now try reading your current bootloader image: readmem 0x0 0x80000 filename
you can check its contents or compare it to saboot.nb0 bootloader image to see if it is the same... if not then it's probably corrupt and you have a good chance to revive the device.
10. now flash the file you extracted from the bootloader download: flashmem msbin saboot.xip
if verification is ok, then you are almost finished now.
11. disconnect from the PC, remove power from 900c, and try reinserting battery and powering up. it should boot up now! if not then maybe something went wrong, try jtag again. note, it's fine if it doesn't boot to OS, just bootloader. you jtagged bootloader 4.10 in, so feel free to just reflash an OS!

1. if you had a 900 running hpc2000 OS then the above posted bootloader will not boot the OS. but the solution is simple: you can choose to keep hpc2000 or upgrade to cenet.
if you want hpc2000, then just download and flash this hpc2000 image compatible with cenet bootloader. if you want then download stock cenet rom from my download page (select any of the options except "Not listed").
then, flash the image from CF card using C+F method (how to described at this link).
2. if cygwin won't run jtag tools then read more for a solution: 1) extract somewhere else on your PC outside cygwin folder. 2) take the cygwindlls folder from the extracted and copy the dlls from it into \src folder. 3) then copy the jtag folder within usr\local\share from into cygwin\usr\local\share\jtag. 4) then, simply (using windows cmd.exe) cmd into the \src folder where you copied the cygwindlls folder contents too and type the command jtag to run jtag tools. hopefully that works.
3. for more information, you can read the original 900c jtag thread at:
this also describes an alternative pinout for jtag, but as a sumup it is: on the white JTAG connector under the modem: test - 8, nTRST 9, TCK 1, TMS 3, TDI 5, TDO 10, A1-DC3,3V