Hi,
First, an external hub has nothing to do with the EHCI. EHCI is the host-side controller. An external hub does not comply to the EHCI specs. An external hub can be USB 1.1, USB 2.0, USB 3.0, etc., compliant.
Anyway, just a few questions/comments?
1) are you resetting any other ports on the hub at the same time? i.e.:, a hub should not have more than one port in the reset mode at a time. If you try to reset more than one port at a time, multiple attached devices can and will be in the default state, which is a big no-no.
2) are you sure it is a high-speed hub?
3) a high-speed hub plugged into a low/full-speed root-hub port makes the hub a full-speed hub.
4) a full speed hub plugged into a high speed root-hub port makes the hub a full speed hub (still).
5) sending and receiving packets to/from a downstream device is the same as if the device was plugged in to the root hub. i.e.: It doesn't matter that there is an external hub in-between the root-hub and the downstream device. This is the point of external hubs. Therefore, does your code work without the external hub, but not when the external hub is used? (your post hints to this).
6) if your code works without the external hub, but doesn't with the external hub, you are not initializing the hub correctly, or:
7) if the hub is a full-speed hub, any attached device will only enumerate up to full-speed, not high-speed. (a downstream device is only as fast as its parent device).
8) is the external hub you speak of the Rate Matching Hub on the EHCI card? If so, the RMH can (and usually does) have a vendor-specific initialization procedure.
On a slightly different note, is there any reason you are using EHCI? Is this the only hardware you have? I actually recommend either UHCI/OHCI or the new xHCI instead. Unless you only have EHCI hardware (root hubs), I suggest you choose another controller type.
Anyway, let us know more information about what is going on and we might be able to help out.
Ben
-
http://www.fysnet.net/the_universal_serial_bus.htm