xxxxx@gmail.com wrote:
Yeah, I know this is completely backwards, but that was the way the device was designed. The VID/PID of the hub can’t be used because a decision was made to not control those values. Instead, I’m supposed to use the VID/PID of the chip to identify the device and work back up the tree, but that doesn’t make much sense to me.
For your next engineering design meeting, I would point out that the
behavior of a USB hub is dictated rather precisely by the USB
specification. You can’t just go around doing your own thing,
especially if you plan to put a USB logo on it. To get certified, it
has to behave like a USB device.
Yes, this is a security scheme. Essentially, the control chip is supposed to enable the other ports on the hub. If the control chip does not enable the ports, the device is essentially dead/unusable. When the device is first plugged in, I would use the first driver to load for the enumerated control chip and enable the other ports while the hub would use the generic Windows driver.
OK, so when the hub is first plugged in, it is a generic hub with one
active port. You plug in your Super Secret Decoder Ring Device (or
maybe it is wired in), which brings up your Decoder Ring Driver. That
driver somehow sends a vendor command to the hub that tells it to unlock
the other ports. Is that the principle? That would not be hard. The
hub is going to have to drop off of the bus and get re-enumerated to
have the additional ports be recognized. You can’t add ports to a hub
on the fly.
You wouldn’t even need a filter driver to make that work, but it assumes
that the hub has vendor commands to control the enable/disable state of
the other ports in hardware, and that it can re-enumerate itself.
Once the ports are enabled, I would use the service to load the filter driver for the hub.
Why do you need a filter driver? What does it bring to the party? And
if you don’t know the VID and PID, how would you know which hubs to filter?
My apologies if this is confusing. I haven’t done much driver development and I’m sure if this even possible.
This is not so much a driver development question as it is a hardware
design question.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.