Mozilla Skin

Hardware documentation jornada700 usbhost

From JLiMe.com

Contents

About

The SA1111 companion chip present in HP Jornada 7xx machines does have USB Host functionality. Unfortunately HP decided not to provide USB connector.

I am currently trying to develop a way to add host USB connector. This page describes progress I make.

Please note that currently this doesnt work, I am working on it! I don't take any responsibility for eventual damages to your hardware. If you attempt to add USB host to your jornada, you are responsible for the result.

border

Kernel support

TODO. You will need a 2.6.32 kernel from git (Kernel development compiling hp700) or from here.

Finding USB host vias on the mainboard

SA1111 is contained in a 256pin (16 rows of 16 pins) mini-BGA (Ball Grid Array) package. According to SA1111 documentation (page 175) USB host pins are as follows:

  • USB_PLUS (green - First wire of USB data link pair): H3
  • USB_MINUS (white - Second wire of USB data link pair): G1
  • USB_PWRCNTL (red - Output signal enabling power to the usb port): H4
  • USB_PWR_SENSE (blue - Input signal indicating overcurrent condition - active low): K5

This is the packaging image with highlighted USB host pins as seen from bottom (PCB side):

border

and from top (chip side):

border

I have developed a method to access any pin under the BGA package using thin winding wire and an old toothbrush and found out that USB host signals are indeed present on the board in these places (this is the part of bottom side of the mainboard hidden under black adhesive material placed between pcmcia socket and the board):

border

and from top side (here you can easily find additional GND - black and 5V - red pads):

border

Yellow circle in the first photo shows a clamp which needs to be replaced with a ~ 10kOhm resistor if you want to utilize a power control chip like TPS2015.

Modding the device

Getting the mainboard out

First thing you need to do is to disassemble your jornada (be careful with hinge cover latches, they are very fragile) and separate the mainboard from everything else.

Removing the PCMCIA slot

Then you have to carefully remove the metal shield from the pcmcia slot. It is attached to the mainboard with two screws on the back (these are case screws, so you don't need to worry about them now) and two soldering points near the front. To separate them you need to desolder these two points (the other one is in the back, don't mind the supporting bluetooth dongle):

border

Beware that these pads tend to separate from the board, so you will have to be gentle and push the two sides of a shield pin together.

After disassembling the shield remove the black adhesive cover from underneath it.

Preparing vias

You will need to solder wires to the vias shown above. I have chosen to access USB_PLUS and USB_MINUS points from the top, not bottom. To be able to solder anything to them, you have to scrub protective paint off them (very carefully!). Power pads are available without scrubbing.

Preparing thin wires

You will need to solder wires to prepared vias. These are quite fragile, so I have decided to use thin transformer winding enameled wire (about 0.1-0.15mm in diameter). I have twisted them in pairs and put inside a regular wire coating (coating of a standard solid ethernet wire should do). This way I will rather break the wire than separate via from the mainboard, moreover it fits better between mainboard components. It looks like this:

border

Building an interface

In theory SA1111 could be attached directly (or almost directly) to the USB port, but it shouldn't be done. I have prepared my interface based on Intel Neponset (SA1111 development module) documentation (page 12). I salvaged needed parts from a fried laptop motherboard. I replaced TPS2015 with TPS2043. This is the final result (resistor values are incorrect, I need to get proper ones):

border

The absolute minimum you will probably need are four resistors (two in series and two parallel to data lines). But such setup may be dangerous for the SA1111 (surges) and Jornada's internal power supply (overloads).

If you are using a chip like TPS2015 or similar, you HAVE to replace a clamp (surrounded by a yellow circle in one of the images above) on the mainboard with a 10kohm resistor (or similar). This is a pullup resistor for the open-drain output of the power control chip.

Building in an USB connector

To use the USB host you need to have a connector. I have decided to remove the built in phone line interface, because I have never used and probably never will. The USB interface fits nicely in its place:

border

You can solder the USB connector to the mainboard in a way that it will be available through the hole where the phone jack was. I have desoldered an USB connector from the same fried laptop motherboard:

border

You need to grind it a bit and remove excess parts so that it fits in place. This is how I have mounted it (right below the serial connector):

borderborderborder

Remember to solder it firmly. This connector will have to withstand a lot of force.

All you need for pleasant looks is to craft a piece that will cover the remaining space (phone jack is much bigger than an USB connector):

borderborder

Note the dents which provide room for springing elements in the connector.

Next step I had to take was to grind the bottom of the case a bit so that the connector would fit (note that the CF slot opener holder had to be cut a bit too):

borderborder

This is the final look:

border


Wiring it all together

It should look somewhat like this:

borderborder

I found plain office sticky tape to be useful when arranging wires.

The problem

Well, it just doesn't work.

Wiring is probably correct, because:

  • host is cycling the port power on modprobe ohci-hcd (what means that USB_PWRCNTL is properly located),
  • shorting USB_PWR_SENSE to GND prevents host from operating (overcurrent signal),
  • system can retrieve idProduct and idVendor from the device - that means that host and device can communicate - USB_PLUS and USB_MINUS lines are ok.

But nothing else works - host times out on any attempt to accessing the device (even binding a driver to it). What is more, ohci-hcd tends to block rmmod. OHCI HCD driver probably needs some Jornada 720 specific additions.


^EDITED at 22.12.'09 by Matthew@CRO After searching for information’s, I’m sure that drivers need change prior work state of USB host functionality.

On web site [1], some info can be found. These guys has done driver support for SA1111 Audio and USB host. On USB Host part, at ARM section [2], I had mentioned this because maybe some co-work can be done

In sense of driver support one might look at these pages: ARM OHCI support [3]

Config.in change [4]

Use of USB subsystem with SA-1111 as host [5]

Maybe this can be of some help, not for USB host: [6]