Summary: | USB Keyboard is detected as USB mouse when USB mouse is plugged in at boot | ||||||
---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | nc <chuckiels2011> | ||||
Component: | usb | Assignee: | freebsd-usb (Nobody) <usb> | ||||
Status: | New --- | ||||||
Severity: | Affects Only Me | CC: | Scoobi_doo, hselasky, karl, pi | ||||
Priority: | --- | ||||||
Version: | 10.3-STABLE | ||||||
Hardware: | amd64 | ||||||
OS: | Any | ||||||
See Also: | https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211884 | ||||||
Attachments: |
|
Description
nc
2016-08-18 15:22:44 UTC
What keyboard and mouse are they? Does the same behavior happen when a different USB mouse is plugged in at boot? What is the output of 'usbconfig dump_device_desc' when 1) both devices were plugged in at boot, and 2) mouse is plugged in after boot? This sounds related to https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211884 I'm going to try removing the code change that might be involved and will advise. Created attachment 173828 [details]
login prompt when unplugging/plugging in keyboard when mouse is plugged in at boot
(In reply to Anthony Jenkins from comment #1) Wow, thanks for jumping on this so fast :) * The keyboard is a WhiteFox Mechanical Keyboard and the mouse is a SteelSeries Kinzu v2. * The problem still exists with other USB mice. * Output of usbconfig dump_device_desc (mouse plugged in after boot): ugen0.1: <XHCI root HUB 0x1106> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0300 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0003 bMaxPacketSize0 = 0x0009 idVendor = 0x0000 idProduct = 0x0000 bcdDevice = 0x0100 iManufacturer = 0x0001 <0x1106> iProduct = 0x0002 <XHCI root HUB> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen1.1: <OHCI root HUB ATI> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0100 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x0000 idProduct = 0x0000 bcdDevice = 0x0100 iManufacturer = 0x0001 <ATI> iProduct = 0x0002 <OHCI root HUB> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen2.1: <OHCI root HUB ATI> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0100 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x0000 idProduct = 0x0000 bcdDevice = 0x0100 iManufacturer = 0x0001 <ATI> iProduct = 0x0002 <OHCI root HUB> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen3.1: <EHCI root HUB ATI> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0001 bMaxPacketSize0 = 0x0040 idVendor = 0x0000 idProduct = 0x0000 bcdDevice = 0x0100 iManufacturer = 0x0001 <ATI> iProduct = 0x0002 <EHCI root HUB> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen4.1: <OHCI root HUB ATI> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0100 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x0000 idProduct = 0x0000 bcdDevice = 0x0100 iManufacturer = 0x0001 <ATI> iProduct = 0x0002 <OHCI root HUB> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen5.1: <OHCI root HUB ATI> at usbus5, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0100 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x0000 idProduct = 0x0000 bcdDevice = 0x0100 iManufacturer = 0x0001 <ATI> iProduct = 0x0002 <OHCI root HUB> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen6.1: <EHCI root HUB ATI> at usbus6, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0001 bMaxPacketSize0 = 0x0040 idVendor = 0x0000 idProduct = 0x0000 bcdDevice = 0x0100 iManufacturer = 0x0001 <ATI> iProduct = 0x0002 <EHCI root HUB> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen7.1: <OHCI root HUB ATI> at usbus7, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0100 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x0000 idProduct = 0x0000 bcdDevice = 0x0100 iManufacturer = 0x0001 <ATI> iProduct = 0x0002 <OHCI root HUB> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen0.2: <USB2.0 Hub vendor 0x2109> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (100mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0210 bDeviceClass = 0x0009 <HUB> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0001 bMaxPacketSize0 = 0x0040 idVendor = 0x2109 idProduct = 0x3431 bcdDevice = 0x0420 iManufacturer = 0x0000 <no string> iProduct = 0x0001 <USB2.0 Hub> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen0.3: <HD Pro Webcam C920 vendor 0x046d> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x00ef <Miscellaneous device> bDeviceSubClass = 0x0002 bDeviceProtocol = 0x0001 bMaxPacketSize0 = 0x0040 idVendor = 0x046d idProduct = 0x082d bcdDevice = 0x0011 iManufacturer = 0x0000 <no string> iProduct = 0x0002 <HD Pro Webcam C920> iSerialNumber = 0x0001 <C717D91F> bNumConfigurations = 0x0001 ugen0.4: <Elements 25A2 Western Digital> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (224mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0300 bDeviceClass = 0x0000 <Probed by interface class> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0009 idVendor = 0x1058 idProduct = 0x25a2 bcdDevice = 0x1004 iManufacturer = 0x0001 <Western Digital> iProduct = 0x0002 <Elements 25A2> iSerialNumber = 0x0003 <57583831413136453032334C> bNumConfigurations = 0x0001 ugen1.2: <Keyboard - WhiteFox PartialMap pjrcUSB full Kiibohd> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 <Probed by interface class> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x1c11 idProduct = 0xb04d bcdDevice = 0x0100 iManufacturer = 0x0001 <Kiibohd> iProduct = 0x0002 <Keyboard - WhiteFox PartialMap pjrcUSB full> iSerialNumber = 0x0003 <Clean master - 2016-05-31 00:40:10 -0700> bNumConfigurations = 0x0001 ugen3.2: <Im Fulla Schiit Schiit Audio> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 <Probed by interface class> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x0d8c idProduct = 0x1066 bcdDevice = 0x0102 iManufacturer = 0x0001 <Schiit Audio> iProduct = 0x0002 <I'm Fulla Schiit> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen3.3: <product 0x8191 vendor 0x0bda> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 <Probed by interface class> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x0bda idProduct = 0x8191 bcdDevice = 0x0200 iManufacturer = 0x0001 <Realtek> iProduct = 0x0002 <802.11n WLAN Adapter> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 ugen0.5: <Kinzu V2 Gaming Mouse SteelSeries> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x0000 <Probed by interface class> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x1038 idProduct = 0x1366 bcdDevice = 0x0096 iManufacturer = 0x0001 <SteelSeries> iProduct = 0x0002 <Kinzu V2 Gaming Mouse> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 * I wasn't able to get the output when the mouse was plugged in at boot (since I couldn't log in because the keyboard wasn't working). When I plug in any keyboard after the mouse has been plugged in at boot, it is detected incorrectly. However, I did get the output of unplugging/replugging the keyboard, after boot, when the mouse was plugged in at boot (in attachment) Some dual USB keyboard and mice might not work. Setting one of the following quirks for your device and then "usbconfig -d X.Y reset" might resolve the issue. usbconfig -d X.Y add_quirk UQ_KBD_BOOTPROTO usbconfig -d X.Y add_quirk UQ_KBD_IGNORE usbconfig -d X.Y add_quirk UQ_UMS_IGNORE --HPS (In reply to Hans Petter Selasky from comment #5) OK, I'll try that. Should I run those commands for the keyboard or for the mouse? For wrongly detected mouse you add: usbconfig -d X.Y add_quirk UQ_UMS_IGNORE For wrongly detected keyboard you add: usbconfig -d X.Y add_quirk UQ_KBD_IGNORE Given that keyboard and mouse is not same ugenX.Y. --HPS (In reply to Hans Petter Selasky from comment #7) Hmm... it doesn't seem to work. I also realized that this issues is affecting any USB keyboard I plug in (including other brands/models). Maybe it has something to do with the USB controller on my motherboard? See the bug I linked; I reverted that change and the problem with IPKVM keyboards disappeared. You might want to try reverting this change on your system. (In reply to karl from comment #9) Thanks, I'll try that. Is there a "proper" way of building the kernel from a specific commit, or is it just an svn checkout to a random directory, then build it from there? (I couldn't find a docs page on it, and I've only done Linux kernel compilations in the past). (In reply to nc from comment #10) From /usr/src... svn log -v -r xxxxxxx (will tell you which file(s) got changed, in this case just one file in the USB driver set) Then, after figuring out whether you have interdependencies and can safely roll back just one file or you must do the entire tree: svn update -r xxxxxx file-that-got-changed (if just one file as is the case here, and no other dependencies on later commits; this can be dangerous but in this case it's ok) or cd /usr/src (or /usr/src/sys in this case, since this is kernel-specific) svn update -r xxxxxx . (will roll the entire tree from that point downward back to the specified revision) and then of course "make buildkernel;make installkernel" from /usr/src. (In reply to nc from comment #10) BTW if your machine is multi-core (and most are these days) you may want "make -jx buildkernel" instead of just "make buildkernel"; the "-jx" (replace "x" with the number of cores you have) tells the system to build with one executing job per CPU core. This can *greatly* reduce build time. Awesome, I think that solved it. Should I leave this bug open or close it then? (In reply to nc from comment #13) Probably ought to merge it with my other report.... |