Subject: Re: Status of firewire/usb support?
To: NetBSD Current Users <current-users@netbsd.org>
From: Barry Bouwsma <freebsd-misuser@remove-NOSPAM-to-reply.NOSPAM.dyndns.dk>
List: current-users
Date: 08/02/2004 11:30:40
Sheesh.  I composed and sent my last messages minutes before
passing out, while my brain was shutting down.  I'm still not
fully awake, but I can see the need for clarification in my
USB description, to wit:

> The particular configuration works fine with my FreeBSD code,
> where I have a USB1 hub attached to an OHCI internal hub, and
> several devices to that, as well as another device connected
> directly to the OHCI hub.  With NetBSD, everything connected
> directly to the internal OHCI hub is seen (except for a USB2
> hub, which manages to be used successfully as USB1 with
> FreeBSD), but nothing connected to the external USB1 hub is
> recognized.

Let me try again.
I have two USB2 cards, one with OHCI, the other with UHCI
companions.  The OHCI card is the one at hand, the UHCI is
in my other machine.
My FreeBSD (USB code derived in part from NetBSD) kernel
works fine, though is different in that I've no EHCI support --
I had problems with toggle updates -- while my NetBSD
kernel includes EHCI support, so the configuration is
somewhat different.

When I tried FreeBSD with EHCI, one of the two cards could
successfully attach an external USB2 hub to the companion
controller as USB1; the other card could not.  I can't remember
which worked, so I don't know if I have that one here, or
if I have the one that didn't successfully attach.

I also have two different USB2 external hubs based on different
Cypress chip revisions, so perhaps there's an issue here --
I seem to remember one having issues with FreeBSD and an
identical setup, but that could have been pilot error.
Juggling hardware gets confusing with all the possible
combinations.


Anyway, the OHCI-only FreeBSD finds the external USB1 hub
and all devices attached to it.
The OHCI+EHCI NetBSD finds the external USB1 hub, but fails
to find anything attached to it on this here machine.
The external USB2 hub should be disregarded as it's apples
and oranges, until I reboot into FreeBSD+EHCI to see which
behaviour I can expect from this particular OHCI hardware.

I haven't tried NetBSD sans EHCI to see if there's a difference.
Yet.  Maybe later...

The UHCI+EHCI controller is in my other machine so I'm unable
to try it, but I remember it not having this problem, I think,
as my root was on EHCI and I think it saw the attached USB1
hub as well as the USB2 hub attached to that, and mouse attached
to the USB2 hub.  That is, I think it worked as expected with
UHCI, but I'm not positive.


Another issue, both the cheap external USB2 Cypress hubs have
an overcurrent issue with the OHCI card, but no problems with
the UHCI card, when not connected to a wall wart.
Booting with, or connecting the hub, results in whatever it's
connected to being disabled, both NetBSD and FreeBSD, with
the OHCI-based card.
I also see some difference at boot in how power is applied to
the ports of the two cards -- the UHCI card delivers power to
some silly LED-equipped kewl-kables immediately, while the OHCI
card does not seem to, until the card is probed.
That wouldn't explain why I'm able to hot-plug the Cypress hub
into the UHCI card without problems, anyway.

My USB1 external hub does not have this problem (nor does
it have an external power supply, so I'm lucky).

I don't have a different OHCI card with a different chipset
to be able to tell if the problem is specific to my one card.
Many months ago, I managed to hack one of the BSDen so that
it would retry when overcurrent was detected, which usually
managed to supply power to the hub at boot.  I haven't been
able to get the latest code to do that successfully yet, if
I remember, but I haven't tried really hard.



> (My USB problem may also be OHCI-related, as earlier when I
> built my root filesystem on the external drive, it had been
> connected via EHCI successfully, and the internal UHCI controller
> was able to see the connected external USB2 hub (as USB1), as

This may have been because I had the USB1 hub in between, to
avoid the known issues with USB2 hubs.  I don't remember if I
tried that USB2 hub directly with that other controller and
NetBSD.  (Or did I say that above?  I need sleep)


My NetBSD code is basically unhacked from around 19.Jul or so;
if it could make a difference, it was crossbuilt on FreeBSD;
my FreeBSD code is partially heavily hacked based on patches
floating around, and may not correspond to anything in their
tree, but I'm not having a problem with it (just so nobody
tries to compare the two directly).


Thanks for the info about firewire; I'll see if I have the
infrastructure here to build a new kernel and try it out (I
have two geographically-separated machines, one non-networked,
that one being where I've done my builds).

barry bouwsma
sheesh, I'm not sure if I made anything any clearer
now for some REAL sleep, I hope