Handhelds.org splash banner Handhelds.org logo by Chrysovalandes Sophocleous
Linux on HP iPAQ H1900

The HP iPAQ H1910, H1915, H1920 and H1925 series of devices is basically a subset of the H3900 except that it contains 16MB of NAND flash instead of the H3900's 48MB of NOR flash and it uses an AC97 audio codec uses a UDA1380 just like the H3900. Go figure.

If you have questions, want to receive the latest news, or wish to help us, you can join the h1900-port mailing list.

The more recent HP iPAQ H1930, H1935, H1940 and H1945 devices are very different devices, as they are based on the the Samsung S3C2410X ARM920T-based ASIC. Linux porting on these devices is addressed by another project. See the H1940 page for more details.

This project page is not maintained. Please visit the wiki page instead, where you will find much more up to date information.




Only old content follows. Please visit the wiki page as mentioned above.

h1910 weblog

  • 20040818: While sifting through information on graphics LCDs for my own projects, I came across the following page about how to initialize the power supply for one manufacturer's LCDs. Presumably this can be used much the same for the iPAQ h1910's LCD to avoid blowing up support logic in the future. HANTRONIX Graphic LCD Reliability/Power supply information. -joshua
  • 20040817: aquadran on IRC has successfully made the h1910 boot into GPE from WinCE. The touchscreen calibrates, but is still a little bit quirky.
  • 20040801 or thereabouts: aquadran on IRC has figured out how to deal with the NAND flash on the h1910 to get the dump into a format usable by the utilities for pulling apart images. I have made a tarball of all the files on the device using his utilities. Thanks aquadran!
  • 20040603: Ok, I got kernel 2.6.latest compiled for this thing, only to find that.... D'oh. The ASIC on my h1910 died, probably from the device sitting on my desk for too long. I'm going to look into acquiring another h1910 (hopefully one with a working write protect.) Sorry for the delay, everyone.
  • 20040422: My ohmmeter says that /WP is on GPIO 37. Woot.
  • 20040422: Doing some discovery today about how to control NAND /WP. It is pulled to ground by default (ie, active) by the 47.2k resistor that is show above the six pads in the image below. FYI:
  • 20040303: LAB BLEW UP ANOTHER IPAQ. Do NOT try to boot LAB on your h1910 until this bug is fixed!
  • 20040213: LAB's LCD support still works, not certain if it's going to blow up another one though. I think we can back up NAND flash. As to writing to it, well, we can mount jffs2 and load a kernel! I am not planning on backporting to 2.4 - we'll just run the OS from inside 2.6. Oh. And my iPAQ has a big snazzy red button for reset ... and a lot of hot glue to prevent any more kitty-induced damage.
  • 20031116: LAB can write to NOR flash. Uncompress stage is accelerated. Remaining tasks: be able to back up NAND flash. Be able to write to NAND flash. Backport all this crap to kernel 2.4.
  • 20031112: LAB can initialize the ASIC as far as I've seen 100% of the time. Discoloring around the LCD borders, don't know whether that's there in PPC though. (ASIC initialization means that USB and LCD works when we boot LAB out of flash.) Remaining tasks: make LAB be able to write itself to flash. Accelerate uncompress stage - see why it's so much slower on h1910 than on h3900. Probably more that I forgot.
  • 20031111: 19.354838% of the time we can initialize the ASIC and hence the LCD. Still some discoloring around the borders. I forget whether that was there in pocketpc though.
  • 20031110: boot> prompt reached over USB from LAB. From flash. But ASIC3 seems to be flaky, I'll have to take a look into that. (Do I need to assert some reset line?)
  • 20030903: School started. boot> prompt over USB-Gadget in LAB. Woot.
  • 20030901: I'm home. Kernel 2.6 boots. Working on getting USB-Gadget up for LAB. That would rock. ~jwise
  • 200307xx: I am on vacation and will probably not have time to work on h1900. (Ok I'm at camp. In a week or so, I'll have time.) ~joshua
  • 20030623: added links to Flash chip specs below. -Jamey
  • 20030620: I have gotten JTAG running to download the bootloader for it. Go fetch! (Or maybe you want an ELF, or a disassembly?)
  • 20030608 (after getting a restful night's sleep): After a few more hours of hacking, I (the usual I) have done hooks to the HAL, so we officially have X running. rxvt is randomly crashing for some reason, which I will look into shortly.
  • 20030608: After many hours of hacking, I (NonToxic/Joshua Wise) have gotten the touchscreen to give me meaningful data! Now interpreting that data will be another challenge entirely, but I'm sure it will happen.
  • Unknown: I (NonToxic/Joshua Wise) have gotten ASIC support vaguely running - enough to support buttons at least.
  • 20030531: I (NonToxic/Joshua Wise) have been able to ping the device over IrNET! Here it is:
    64 bytes from 10.2.0.2: icmp_seq=1 ttl=64 time=250.3ms
    How exciting! This should facilitate development with devmem2 to be probing for the ASIC.
  • 20030526: I (NonToxic/Joshua Wise) have gotten a prompt. I also wrote battery charge support today. Screenshot (blurry, sorry)
  • NonToxic has gotten Demo's Axim boot kernel to run on the h1900 and display a penguin! There's no root filesystem, so it immediately segfaults. Everything in its turn.

Things left to do (in no particular order)

BootBlaster

  • Joshua was thinking that we will not use BootBlaster, and instead we will use LAB. This will make sure that people have the necessary equipment to talk to the device (namely, a host that supports USB serial.)
  • Get BootBlaster running on H1900.
  • Detect H1900 machine type
  • Read firmware from H1900 (and pass to bootldr team to disassemble) DONE. see earlier on the page
  • Read all of flash for backup
  • Update code to enable VPPEN so flash can be erased and written.
  • Write new bootldr to flash.

Bootldr

  • Bootldr will not run on the h1910. Instead, we will run LAB.
  • Allocate H1900 machine type for Linux. DONE - 337
  • Update PocketPC signature to match PocketPC image on H1900
  • First pass conditionalizing on h1900
  • Fix memory region addresses in bootconfig.h.

JTAG

JTAG is brought to card edge pads on the H1910.

The front side of the board has the CPU and the DRAM and pins 1,3,5,7 of the JTAG connector:

/--------------|_|-----------------------------------------|
|                                     [7][5][3][1]         |
|                                      |  |  |  |-- TCK
                                       |  |  |----- TMS   
                                       |  |-------- TDI
                                       |----------- TDO

The back side of the board has pins 2,4,6,8, where 2 is behind 1, 4 is behind 3, 6 is behind 5, and 8 is behind 7. Here is a view through the board:
/--------------|_|-----------------------------------------|
|                                     [8][6][4][2]         |
|                                      |  |  |  |-- TRST#
                                       |  |  |----- SRST#   
                                       |  |-------- GND
                                       |----------- GND

The ground pins are easy to identify because they are part of a ground plane or pour.

JTAG tasks

  • optimize jtag writing code DONE
  • coat joshua's iPAQ in superglue to keep the @#$% wires from popping out when it falls off his PC DONE

Linux Kernel

Most of the peripherals are the same as on the H3900. Here are some known differences:
  • Allocate H1900 machine type for Linux. DONE - 337
  • Add support to arch/arm/mach-pxa/ipaq.c. DONE
  • Check all machine_is_h3xxx() and machine_is_h3800() calls DONE
  • Implement GPIO support for h1900. DONE (or pretty close)
  • Update HAL support for h1900. DONE (as far as I have implemented for other things, in kernel 2.4.) Kernel 2.6 - status?
  • Display: pxafb, decode wince regdump and fill in values for h1900. DONE
  • LCD: turn on power to LCD. DONE (really done this time!)
  • control frontlight Pretty close
  • Sound: AC97 UDA1380. pxa-uda1380 may work out of box - untested.
  • Touchscreen: ADS7846 over Microwire. DONE
  • LEDs: DONE
  • Flash: We're close.

Known Problems

Other notes

GPIO Connections

... in include/linux/mach/arch/h1900_asic.h .

Flash Chips

  • Firmware is in AMD AM29LV400BT NOR Flash. It looks like this implemented JEDEC probing and identification instead of CFI probing.
  • OS is in Samsung K9F2808 NAND Flash (K9F5616U0B on schematics)
  • I'll need to figure out how to backup NAND...
    • NAND signal ALE: connected to pxa addr[3]
    • NAND signal CE#: connected to pxa CS2#
    • NAND signal RE#: connected to pxa OE#
    • NAND signal WE#: connected to pxa WE#
    • NAND signal WP#: connected to FLASH_VPEN (pxa gpio 37)
    • NAND signal R/B#: connected to FLASH_BUSY# (pxa gpio 55)
    • NAND signal CLE: connected to pxa addr[2]


$Id: h1900.html,v 1.45 2005/06/25 06:19:11 joshua Exp $