From owner-freebsd-current@FreeBSD.ORG Fri Nov 7 08:02:35 2008 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A52281065676 for ; Fri, 7 Nov 2008 08:02:35 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from QMTA04.westchester.pa.mail.comcast.net (qmta04.westchester.pa.mail.comcast.net [76.96.62.40]) by mx1.freebsd.org (Postfix) with ESMTP id 4FC878FC1C for ; Fri, 7 Nov 2008 08:02:34 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from OMTA05.westchester.pa.mail.comcast.net ([76.96.62.43]) by QMTA04.westchester.pa.mail.comcast.net with comcast id c7p31a00t0vyq2s547sazu; Fri, 07 Nov 2008 07:52:34 +0000 Received: from koitsu.dyndns.org ([69.181.141.110]) by OMTA05.westchester.pa.mail.comcast.net with comcast id c7sZ1a0032P6wsM3R7sZ7n; Fri, 07 Nov 2008 07:52:34 +0000 X-Authority-Analysis: v=1.0 c=1 a=yRd1m7eT-4oA:10 a=7v5ILF8KIIoA:10 a=QycZ5dHgAAAA:8 a=4sGxGEJBSPMJ6N9ZM0YA:9 a=SuhwI0Wqkkcos44p-xMA:7 a=vtoO1biNICmJd8n5DF0yELlhG-4A:4 a=EoioJ0NPDVgA:10 a=oqs56FR1YJwA:10 Received: by icarus.home.lan (Postfix, from userid 1000) id 342C85C19; Thu, 6 Nov 2008 23:52:32 -0800 (PST) Date: Thu, 6 Nov 2008 23:52:32 -0800 From: Jeremy Chadwick To: freebsd-current@freebsd.org Message-ID: <20081107075232.GA1608@icarus.home.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Subject: USB4BSD (USB2): Microsoft 4000 keyboard unusable X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Nov 2008 08:02:35 -0000 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: at usbus0 ushub0: on usbus0 ushub0: 2 ports with 2 removable, self powered usbus1: 12Mbps Full Speed USB v1.0 ugen1.1: at usbus1 ushub1: on usbus1 ushub1: 2 ports with 2 removable, self powered usbus2: 12Mbps Full Speed USB v1.0 ugen2.1: at usbus2 ushub2: on usbus2 ushub2: 2 ports with 2 removable, self powered usbus3: 12Mbps Full Speed USB v1.0 ugen3.1: at usbus3 ushub3: on usbus3 ushub3: 2 ports with 2 removable, self powered usbus4: 480Mbps High Speed USB v2.0 ugen4.1: at usbus4 ushub4: on usbus4 ushub4: 8 ports with 8 removable, self powered acd0: DVDR at ata0-master UDMA33 ad4: 190782MB at ata2-master SATA150 ad6: 476940MB at ata3-master SATA300 ad8: 476940MB at ata4-master SATA300 ad10: 715404MB at ata5-master SATA300 SMP: AP CPU #1 Launched! Trying to mount root from ufs:/dev/ad4s1a ugen0.2: at usbus0 ukbd0: on usbus0 kbd2 at ukbd0 uhid0: 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 |