Recently, I've come across a problem with some key USB devices that
used to work but since moving this server to FreeBSD 8-STABLE, they
don't.  This is 8.3-PRERELEASE at svn rev r231818.

The devices in question are a USB CD-ROM, USB keyboard, and USB mouse.
 All are provided directly onto the motherboard by an IPMI controller
for remote lights-out management.  This previously worked, but this
machine was last running FreeBSD in the late 6.x early 7.x era.  And
indeed they all *still* work all the way up through the boot process
until the loader exits and the kernel takes over.  (Well, except the
virtual mouse, which I have no way to test / no need for.)

When the machine boots, the following appears on console/dmesg:

usbus0: 12Mbps Full Speed USB v1.0
usbus1: 12Mbps Full Speed USB v1.0
usbus2: 12Mbps Full Speed USB v1.0
usbus3: 480Mbps High Speed USB v2.0
ugen0.1: <Intel> at usbus0
uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
ugen1.1: <Intel> at usbus1
uhub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
ugen2.1: <Intel> at usbus2
uhub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus2
ugen3.1: <Intel> at usbus3
uhub3: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus3
uhub0: 2 ports with 2 removable, self powered
uhub1: 2 ports with 2 removable, self powered
uhub2: 2 ports with 2 removable, self powered
uhub3: 6 ports with 6 removable, self powered
usb_alloc_device: set address 2 failed (USB_ERR_STALLED, ignored)
Root mount waiting for: usbus3
usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored)
Root mount waiting for: usbus3
Root mount waiting for: usbus3
usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored)
Root mount waiting for: usbus3
ugen3.2: <Unknown> at usbus3 (disconnected)
uhub_reattach_port: could not allocate new device

Here's what shows up after boot:

# usbconfig
ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=SAVE
ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=SAVE
ugen2.1: <UHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=SAVE
ugen3.1: <EHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=SAVE

If I remove/re-add these devices at will, they do generate USB traffic
visible to the machine.  This part appears again on console/dmesg:

uhub_reattach_port: could not allocate new device
usb_alloc_device: set address 2 failed (USB_ERR_STALLED, ignored)
usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored)
usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored)
ugen3.2: <Unknown> at usbus3 (disconnected)
uhub_reattach_port: could not allocate new device

Here is what usbdump shows:

# usbdump -i usbus3
21:59:13.737075 usbus3.2 SUBM-CTRL-EP=00000000,SPD=HIGH,NFR=1,SLEN=8,IVAL=0
21:59:13.737238 usbus3.2
DONE-CTRL-EP=00000000,SPD=HIGH,NFR=1,SLEN=0,IVAL=0,ERR=STALLED
21:59:13.749995 usbus3.2 SUBM-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=8,IVAL=0
21:59:13.750109 usbus3.2
DONE-CTRL-EP=00000080,SPD=HIGH,NFR=1,SLEN=0,IVAL=0,ERR=STALLED
21:59:13.950535 usbus3.2 SUBM-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=8,IVAL=0
21:59:13.950607 usbus3.2
DONE-CTRL-EP=00000080,SPD=HIGH,NFR=1,SLEN=0,IVAL=0,ERR=STALLED
(repeats a bunch more times -- total of 27 pairs, 54 packets)

With more verbosity for the above, they each look like this:

# usbdump -vvvv -i usbus3
22:01:23.705347 usbus3.2 SUBM-CTRL-EP=00000000,SPD=HIGH,NFR=1,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  00 05 02 00 00 00 00 00  -- -- -- -- -- -- -- --  |........        |
 flags 0x50 <PROXY_BUFFER|MANUAL_STATUS|0>
 status 0xea3a3
<OPEN|TRANSFERRING|STARTED|CONTROL_XFR|CONTROL_HDR|CONTROL_ACT|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
22:01:23.705461 usbus3.2
DONE-CTRL-EP=00000000,SPD=HIGH,NFR=1,SLEN=0,IVAL=0,ERR=STALLED
 frame[0] WRITE 0 bytes
 flags 0x50 <PROXY_BUFFER|MANUAL_STATUS|0>
 status 0xca1a1
<OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>

My focus is on getting the keyboard to work.  To that and, here's the
kernel config I'm using:

include GENERIC
nodevice umass
nodevice ums
nodevice ugen
nodevice uhid
nodevice ulpt
nodevice ural
nodevice urio
nodevice uscanner
nodevice aue
nodevice axe
nodevice cdce
nodevice cue
nodevice kue
nodevice rue

How can I help debug this in more detail?

Thanks!
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to