Date: Thu, 6 Nov 2008 23:52:32 -0800 From: Jeremy Chadwick <koitsu@FreeBSD.org> To: freebsd-current@freebsd.org Subject: USB4BSD (USB2): Microsoft 4000 keyboard unusable Message-ID: <20081107075232.GA1608@icarus.home.lan>
next in thread | raw e-mail | index | archive | help
So this weekend, as a result of some insane disk/controller/ZFS problems I experienced, followed by reproducible kernel wedging when trying to copy data to a USB flash drive, I thought I'd take the plunge and give CURRENT a shot. All went well, and so I decided to switch over to the USB2 stack to help test. Everything built (csup date: 2008/11/06 ~2200 PST) fine, no issues -- until I noticed my USB keyboard didn't function any longer. During boot0/boot2/loader, the keyboard functions (as expected, re: USB Legacy option is enabled in my BIOS), and the keyboard LEDs are lit as expected. The kernel loads, some drivers initialise, and the LEDs go off. Once the USB2 stack loads, the keyboard LEDs turn back up, but as stated, no keypresses are registered. I was forced to hook up a PS/2 keyboard. Situation is the same no matter if I try to enter single-user or not. Disabling atkbd/atkbdc via hints made no difference (other than killing my ability to use a real PS/2 keyboard), and disabling kbdmux also made no difference. In multi-user (with kbdmux enabled), I also tried doing what the last section of kbdcontrol(1) recommended, but I witnessed a series of errors during open() or ioctl(), and of course the USB keyboard still did not function. icarus# kbdcontrol -K < /dev/console kbd1 kbdmux0, type:AT 101/102 (2) icarus# kbdcontrol -a atkbd0 < /dev/kbdmux0 /dev/kbdmux0: Device busy. icarus# kbdcontrol -a ukbd0 < /dev/kbdmux0 /dev/kbdmux0: Device busy. icarus# kbdcontrol -k /dev/kbdmux0 < /dev/console kbdcontrol: cannot open /dev/kbdmux0: Device busy The keyboard in question is a Microsoft Natural Ergonomic 4000. This keyboard is known for being a real pain in the ass, since some of the multimedia keys, and the infamous F-Lock key, are HID-controlled, while alphanumeric are USB keyboard class controlled. (For sake of example, Linux has a *huge* web page dedicated to dealing with this keyboard alone.) dmesg and ls -l /dev/u* are below. Let me know if I can enable something to help debug this; if remote access is needed (once multi-user is up), I can provide it. usbus0: 12Mbps Full Speed USB v1.0 ugen0.1: <Intel> at usbus0 ushub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0 ushub0: 2 ports with 2 removable, self powered usbus1: 12Mbps Full Speed USB v1.0 ugen1.1: <Intel> at usbus1 ushub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1 ushub1: 2 ports with 2 removable, self powered usbus2: 12Mbps Full Speed USB v1.0 ugen2.1: <Intel> at usbus2 ushub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus2 ushub2: 2 ports with 2 removable, self powered usbus3: 12Mbps Full Speed USB v1.0 ugen3.1: <Intel> at usbus3 ushub3: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus3 ushub3: 2 ports with 2 removable, self powered usbus4: 480Mbps High Speed USB v2.0 ugen4.1: <Intel> at usbus4 ushub4: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus4 ushub4: 8 ports with 8 removable, self powered acd0: DVDR <PLEXTOR DVDR PX-708A/1.11> at ata0-master UDMA33 ad4: 190782MB <WDC WD2000JD-00HBB0 08.02D08> at ata2-master SATA150 ad6: 476940MB <WDC WD5000AAKS-00TMA0 12.01C01> at ata3-master SATA300 ad8: 476940MB <WDC WD5000AAKS-00YGA0 12.01C02> at ata4-master SATA300 ad10: 715404MB <WDC WD7500AACS-00D6B0 01.01A01> at ata5-master SATA300 SMP: AP CPU #1 Launched! Trying to mount root from ufs:/dev/ad4s1a ugen0.2: <Microsoft> at usbus0 ukbd0: <Microsoft product 0x00db, class 0/0, rev 2.00/1.73, addr 2> on usbus0 kbd2 at ukbd0 uhid0: <Microsoft product 0x00db, class 0/0, rev 2.00/1.73, addr 2> on usbus0 Symlink: uhid0 -> usb0.2.1.16 $ ls -l /dev/u* crw------- 1 root wheel 0, 87 6 Nov 23:26 /dev/ukbd0 lrwxr-xr-x 1 root wheel 6 6 Nov 23:26 /dev/urandom -> random crwxrwxrwx 1 root operator 0, 67 6 Nov 23:26 /dev/usb -- | Jeremy Chadwick jdc at parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB |
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081107075232.GA1608>