USB2 - keyboard error

Hans Petter Selasky hselasky at c2i.net
Sat Feb 14 01:39:03 PST 2009


On Saturday 14 February 2009, Yoshihiro Ota wrote:
> I just installed 8-CURRENT with USB2 kernel config to join the test.
>
> I use a laptop PC and sometime use USB keyboard.
> It was detected as following and it is usable when
> I see FreeBSD login prompt.
>
> ugen0.2: <NEC> at usbus0
> ushub2: <NEC hub, class 9/0, rev 1.00/1.00, addr 2> on usbus0
> ushub2: 4 ports with 4 removable, bus powered
> ugen0.3: <Alps Electric> at usbus0
> ukbd0: <Alps Electric M2452, class 0/0, rev 1.00/1.01, addr 3> on usbus0
> kbd2 at ukbd0
> ukbd_set_leds_callback:556: error=USB_ERR_IOERROR
> ukbd_set_leds_callback:556: error=USB_ERR_IOERROR
>
>
> Regular alphabet keys work fine but as soon as I hit Alt-F2 to switch
> to another virtual console (or is it called virtual terminal?), I
> start seeing the above error.  Then, keyboard stops responding or
> starts repeating some irregular keys.
>
> This is without X.
>
> How do we begin fixing this issue?
>

Hi,

Looks like your keyboard has bug when it crashes on control requests. You can 
try slowing down the set leds request. Edit "src/sys/dev/usb2/input/ukbd2.c", 
then lookup:

        [UKBD_CTRL_LED] = {
                .type = UE_CONTROL,
                .endpoint = 0x00,       /* Control pipe */
                .direction = UE_DIR_ANY,
                .mh.bufsize = sizeof(struct usb2_device_request) + 1,
                .mh.callback = &ukbd_set_leds_callback,
                .mh.timeout = 1000,     /* 1 second */
        },

Add:
                .interval = 10, /* 10 milliseconds */

Try different interval values in the range 10 to 500 ms.

--HPS


More information about the freebsd-current mailing list