ehci breaking Supermicro IPMI keyboard on uhci?

Steven Hartland killing at multiplay.co.uk
Tue Nov 4 00:07:08 UTC 2014


Had the problem where the Supermicro IPMI keyboard wouldn't work on some 
machines for a while, tonight I finally had time to play with all the 
options to see if anything would make it work.

Turns out adding the following to loader.conf does fixes the issue:
hint.ehci.0.disabled="1"

So the question is why would this help?

Surely disabling one controller shouldn't make devices attached to 
another work?

Messages when working (with ehci.0 disabled):
Nov  3 23:18:42 test1 kernel: usbus0 on uhci0
Nov  3 23:18:42 test1 kernel: usbus1 on uhci1
Nov  3 23:18:42 test1 kernel: usbus2 on uhci2
Nov  3 23:18:42 test1 kernel: usbus0: 12Mbps Full Speed USB v1.0
Nov  3 23:18:42 test1 kernel: usbus1: 12Mbps Full Speed USB v1.0
Nov  3 23:18:42 test1 kernel: usbus2: 12Mbps Full Speed USB v1.0
Nov  3 23:18:42 test1 kernel: ugen1.1: <Intel> at usbus1
Nov  3 23:18:42 test1 kernel: uhub0: <Intel UHCI root HUB, class 9/0, 
rev 1.00/1.00, addr 1> on usbus1
Nov  3 23:18:42 test1 kernel: ugen0.1: <Intel> at usbus0
Nov  3 23:18:42 test1 kernel: uhub1: <Intel UHCI root HUB, class 9/0, 
rev 1.00/1.00, addr 1> on usbus0
Nov  3 23:18:42 test1 kernel: ugen2.1: <Intel> at usbus2
Nov  3 23:18:42 test1 kernel: uhub2: <Intel UHCI root HUB, class 9/0, 
rev 1.00/1.00, addr 1> on usbus2
Nov  3 23:18:42 test1 kernel: Root mount waiting for: usbus2
Nov  3 23:18:42 test1 kernel: ugen2.2: <Peppercon AG> at usbus2
Nov  3 23:18:42 test1 kernel: ukbd0: <Peppercon AG Multidevice, class 
0/0, rev 2.00/0.01, addr 2> on usbus2

usbconfig list
ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL 
(12Mbps) pwr=SAVE (0mA)
ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=FULL 
(12Mbps) pwr=SAVE (0mA)
ugen2.1: <UHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=FULL 
(12Mbps) pwr=SAVE (0mA)
ugen2.2: <Multidevice Peppercon AG> at usbus2, cfg=0 md=HOST spd=FULL 
(12Mbps) pwr=ON (100mA)

Messages when not working:
Nov  3 23:02:45 test1 kernel: usbus0 on uhci0
Nov  3 23:02:45 test1 kernel: usbus1 on uhci1
Nov  3 23:02:45 test1 kernel: usbus2 on uhci2
Nov  3 23:02:45 test1 kernel: usbus3: EHCI version 1.0
Nov  3 23:02:45 test1 kernel: usbus3 on ehci0
Nov  3 23:02:45 test1 kernel: usbus0: 12Mbps Full Speed USB v1.0
Nov  3 23:02:45 test1 kernel: usbus1: 12Mbps Full Speed USB v1.0
Nov  3 23:02:45 test1 kernel: usbus2: 12Mbps Full Speed USB v1.0
Nov  3 23:02:45 test1 kernel: usbus3: 480Mbps High Speed USB v2.0
Nov  3 23:02:45 test1 kernel: ugen1.1: <Intel> at usbus1
Nov  3 23:02:45 test1 kernel: uhub0: <Intel UHCI root HUB, class 9/0, 
rev 1.00/1.00, addr 1> on usbus1
Nov  3 23:02:45 test1 kernel: ugen0.1: <Intel> at usbus0
Nov  3 23:02:45 test1 kernel: uhub1: <Intel UHCI root HUB, class 9/0, 
rev 1.00/1.00, addr 1> on usbus0
Nov  3 23:02:45 test1 kernel: ugen3.1: <Intel> at usbus3
Nov  3 23:02:45 test1 kernel: uhub2: <Intel EHCI root HUB, class 9/0, 
rev 2.00/1.00, addr 1> on usbus3
Nov  3 23:02:45 test1 kernel: ugen2.1: <Intel> at usbus2
Nov  3 23:02:45 test1 kernel: uhub3: <Intel UHCI root HUB, class 9/0, 
rev 1.00/1.00, addr 1> on usbus2
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usb_alloc_device: set address 2 failed 
(USB_ERR_IOERROR, ignored)
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_setup_device_desc: getting device 
descriptor at addr 2 failed, USB_ERR_IOERROR
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_req_re_enumerate: addr=2, set address 
failed! (USB_ERR_IOERROR, ignored)
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_setup_device_desc: getting device 
descriptor at addr 2 failed, USB_ERR_IOERROR
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_req_re_enumerate: addr=2, set address 
failed! (USB_ERR_IOERROR, ignored)
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_setup_device_desc: getting device 
descriptor at addr 2 failed, USB_ERR_IOERROR
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_req_re_enumerate: addr=2, set address 
failed! (USB_ERR_IOERROR, ignored)
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_setup_device_desc: getting device 
descriptor at addr 2 failed, USB_ERR_IOERROR
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_req_re_enumerate: addr=2, set address 
failed! (USB_ERR_IOERROR, ignored)
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_setup_device_desc: getting device 
descriptor at addr 2 failed, USB_ERR_IOERROR
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_req_re_enumerate: addr=2, set address 
failed! (USB_ERR_IOERROR, ignored)
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: Root mount waiting for: usbus3
Nov  3 23:02:45 test1 kernel: usbd_setup_device_desc: getting device 
descriptor at addr 2 failed, USB_ERR_IOERROR
Nov  3 23:02:45 test1 kernel: usb_alloc_device: Failure selecting 
configuration index 0:USB_ERR_IOERROR, port 6, addr 2 (ignored)
Nov  3 23:02:45 test1 kernel: ugen3.2: <vendor 0x14dd> at usbus3

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



More information about the freebsd-usb mailing list