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

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
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

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 Networking |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
_______________________________________________ mailing list
To unsubscribe, send any mail to ""