Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Aug 2012 13:55:14 +0200
From:      Kra OTN <kraotn@gmail.com>
To:        Hans Petter Selasky <hselasky@c2i.net>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: USB keyboard partially functioning
Message-ID:  <CANec788A6Xf_pEgHmQU25TvRvYz6pLjw58F1%2BzjN3x_=bCiRwQ@mail.gmail.com>
In-Reply-To: <CANec78-iUbfg7O0tqfBDOvU9Yc%2Bk3WpzWjZ1_24WY5NGhWCr7w@mail.gmail.com>
References:  <CANec788SGbmvqa5sXR=4a0MLZOj0aULneFsYrHN8r-o7XCoLdw@mail.gmail.com> <201208111152.35966.hselasky@c2i.net> <CANec78-iUbfg7O0tqfBDOvU9Yc%2Bk3WpzWjZ1_24WY5NGhWCr7w@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
*Output of usbdump (at time of problem, it loops):*
-------------------------------------------------------------------
13:49:38.646846 usbus3.2
DONE-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  01 01 00 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
 flags 0x10 <PROXY_BUFFER|0>
 status 0xea1a1
<OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
13:49:38.646855 usbus3.2 SUBM-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  A3 00 00 00 02 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
 flags 0x10 <PROXY_BUFFER|0>
 status 0xea1a3
<OPEN|TRANSFERRING|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
13:49:38.646971 usbus3.2
DONE-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  01 01 00 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
 flags 0x10 <PROXY_BUFFER|0>
 status 0xca1a1
<OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
13:49:38.646974 usbus3.2 SUBM-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  A3 00 00 00 03 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
 flags 0x10 <PROXY_BUFFER|0>
 status 0xca1a3
<OPEN|TRANSFERRING|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
13:49:38.647095 usbus3.2
DONE-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  00 01 00 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
 flags 0x10 <PROXY_BUFFER|0>
 status 0xea1a1
<OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
13:49:38.647098 usbus3.2 SUBM-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  A3 00 00 00 04 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
 flags 0x10 <PROXY_BUFFER|0>
 status 0xea1a3
<OPEN|TRANSFERRING|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
13:49:38.647220 usbus3.2
DONE-CTRL-EP=00000080,SPD=HIGH,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  00 01 00 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
 flags 0x10 <PROXY_BUFFER|0>
 status 0xca1a1
<OPEN|STARTED|CONTROL_XFR|CONTROL_HDR|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
-------------------------------------------------------------------

*output of usbconfig (i have manually set the pwr to OFF)*
-------------------------------------------------------------------
[root@desktop ~]# usbconfig
ugen0.1: <EHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps)
pwr=SAVE
ugen1.1: <XHCI root HUB 0x1b21> at usbus1, cfg=0 md=HOST spd=SUPER
(5.0Gbps) pwr=SAVE
ugen2.1: <XHCI root HUB 0x1b21> at usbus2, cfg=0 md=HOST spd=SUPER
(5.0Gbps) pwr=SAVE
ugen3.1: <EHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps)
pwr=SAVE
ugen0.2: <product 0x0024 vendor 0x8087> at usbus0, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=SAVE
ugen3.2: <product 0x0024 vendor 0x8087> at usbus3, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=SAVE
ugen3.5: <product 0x3000 vendor 0x0cf3> at usbus3, cfg=255 md=HOST spd=FULL
(12Mbps) pwr=OFF
ugen3.3: <Corsair Vengeance M60 Mouse Corsair> at usbus3, cfg=255 md=HOST
spd=FULL (12Mbps) pwr=OFF
ugen3.4: <Corsair Vengeance K60 Keyboard Corsair> at usbus3, cfg=255
md=HOST spd=FULL (12Mbps) pwr=OFF
-------------------------------------------------------------------



On Sat, Aug 11, 2012 at 1:02 PM, Kra OTN <kraotn@gmail.com> wrote:

> Hans,
>
> Thank you for your support. Executing the "usbconfig -d x.y add_quirk
> UQ_KBD_BOOTPROTO" -command did the trick once but after a warm reboot and
> executing the above command again results in a, what it looks like, a bus
> error / conflict.
>
> The keyboard LEDs are flashing rapidly and my USB mouse has stopped
> working also (rapidly flashing light).
>
> Debugging gives me the following error messages:
>
> -------------------------------------------------------------------------------------
> Aug 11 12:33:35 desktop kernel: uhid0: at uhub5, port 1, addr 3
> (disconnected)
> Aug 11 12:33:35 desktop kernel: ukbd_intr_callback: error=USB_ERR_STALLED
> Aug 11 12:33:35 desktop last message repeated 3 times
> Aug 11 12:33:35 desktop kernel: usbd_req_re_enumerate: addr=3, set address
> failed! (USB_ERR_STALLED, ignored)
> Aug 11 12:33:35 desktop kernel: usbd_setup_device_desc: getting device
> descriptor at addr 3 failed, USB_ERR_STALLED
> Aug 11 12:33:35 desktop kernel: ukbd_intr_callback: error=USB_ERR_STALLED
> Aug 11 12:33:36 desktop last message repeated 8 times
> Aug 11 12:33:36 desktop kernel: usbd_req_re_enumerate: addr=3, set address
> failed! (USB_ERR_STALLED, ignored)
> Aug 11 12:33:36 desktop kernel: usbd_setup_device_desc: getting device
> descriptor at addr 3 failed, USB_ERR_STALLED
> Aug 11 12:33:36 desktop kernel: ukbd_intr_callback: error=USB_ERR_STALLED
> Aug 11 12:58:09 desktop kernel: ugen3.4: <Unknown> at usbus3 (disconnected)
> Aug 11 12:58:09 desktop kernel: uhub_reattach_port: could not allocate new
> device
>
> -------------------------------------------------------------------------------------
>
> Is it possible to auto quirk at boot?
>
>
> Many thanks,
>
> M.
>
>
>
>
> On Sat, Aug 11, 2012 at 11:52 AM, Hans Petter Selasky <hselasky@c2i.net>wrote:
>
>> On Saturday 11 August 2012 11:25:25 Kra OTN wrote:
>> > Hi guys,
>> >
>> > I'm currently facing a problem with my Corsair K60 USB keyboard on a
>> system
>> > that is running FreeBSD9 with a standard kernel (9.0-RELEASE FreeBSD
>> > 9.0-RELEASE #0: Tue Jan  3 07:46:30 UTC 2012
>> > root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64)
>> >
>> > The keyboard is detected with the following device nodes:
>> >
>> >
>> ---------------------------------------------------------------------------
>> >
>> ---------------------------------------------------------------------------
>> > -------------------------- *syslog:*
>> > Aug 11 11:05:47 desktop kernel: ugen0.3: <Corsair> at usbus0
>> > Aug 11 11:05:47 desktop kernel: ukbd_probe:
>> > Aug 11 11:05:47 desktop kernel: ukbd_probe:
>> > Aug 11 11:05:47 desktop kernel: ukbd0: <Corsair Corsair Vengeance K60
>> > Keyboard, class 0/0, rev 2.00/1.00, addr 3> on usbus0
>> > Aug 11 11:05:47 desktop kernel: ukbd_attach: Parsing HID descriptor of
>> 65
>> > bytes
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found left control
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found right control
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found left shift
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found right shift
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found left alt
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found right alt
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found left GUI
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found right GUI
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found keyboard events
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found keyboard numlock
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found keyboard capslock
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found keyboard
>> scrolllock
>> > Aug 11 11:05:47 desktop kernel: ukbd_set_leds: leds=0x00
>> > Aug 11 11:05:47 desktop kernel: ukbd_set_leds: leds=0x02
>> > Aug 11 11:05:47 desktop kernel: kbd2 at ukbd0
>> > Aug 11 11:05:47 desktop kernel: ukbd_probe:
>> > Aug 11 11:05:47 desktop kernel: ukbd_set_leds_callback: len=1, id=0
>> > Aug 11 11:05:47 desktop kernel: uhid0: <Corsair Corsair Vengeance K60
>> > Keyboard, class 0/0, rev 2.00/1.00, addr 3> on usbus0
>> > Aug 11 11:05:47 desktop kernel: ukbd_probe:
>> > Aug 11 11:05:47 desktop kernel: ukbd_probe:
>> > Aug 11 11:05:47 desktop kernel: ukbd1: <Corsair Corsair Vengeance K60
>> > Keyboard, class 0/0, rev 2.00/1.00, addr 3> on usbus0
>> > Aug 11 11:05:47 desktop kernel: ukbd_attach: Parsing HID descriptor of
>> 37
>> > bytes
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found left control
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found right control
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found left shift
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found right shift
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found left alt
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found right alt
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found left GUI
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found right GUI
>> > Aug 11 11:05:47 desktop kernel: ukbd_parse_hid: Found keyboard events
>> > Aug 11 11:05:47 desktop kernel: ukbd_set_leds: leds=0x00
>> > Aug 11 11:05:47 desktop kernel: ukbd_set_leds: leds=0x02
>> > Aug 11 11:05:47 desktop kernel: kbd3 at ukbd1
>> >
>> ---------------------------------------------------------------------------
>> >
>> ---------------------------------------------------------------------------
>> > -------------------------- *usbconfig:*
>> > ugen0.1: <EHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=HIGH
>> (480Mbps)
>> > pwr=SAVE
>> > ugen1.1: <XHCI root HUB 0x1b21> at usbus1, cfg=0 md=HOST spd=SUPER
>> > (5.0Gbps) pwr=SAVE
>> > ugen2.1: <XHCI root HUB 0x1b21> at usbus2, cfg=0 md=HOST spd=SUPER
>> > (5.0Gbps) pwr=SAVE
>> > ugen3.1: <EHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=HIGH
>> (480Mbps)
>> > pwr=SAVE
>> > ugen0.2: <product 0x0024 vendor 0x8087> at usbus0, cfg=0 md=HOST
>> spd=HIGH
>> > (480Mbps) pwr=SAVE
>> > ugen3.2: <product 0x0024 vendor 0x8087> at usbus3, cfg=0 md=HOST
>> spd=HIGH
>> > (480Mbps) pwr=SAVE
>> > ugen3.3: <product 0x3000 vendor 0x0cf3> at usbus3, cfg=0 md=HOST
>> spd=FULL
>> > (12Mbps) pwr=ON
>> > ugen0.3: <Corsair Vengeance K60 Keyboard Corsair> at usbus0, cfg=0
>> md=HOST
>> > spd=FULL (12Mbps) pwr=ON
>> >
>> ---------------------------------------------------------------------------
>> >
>> ---------------------------------------------------------------------------
>> > --------------------------
>> >
>> > As the syslog suggests right/left shift, ctrl and alt keys are working
>> > correctly. But those keys are the _only_ functioning keys. Debugging
>> ukbd
>> > (sysctl hw.usb.ukbd.debug=15) gives me the following output on a working
>> > key:
>> >
>> ---------------------------------------------------------------------------
>> >
>> ---------------------------------------------------------------------------
>> > -------------------------- ukbd_put_key: 0xe2 (226) pressed
>> > ukbd_intr_callback: actlen=15 bytes
>> > ukbd_intr_callback: modifiers = 0x0004
>> > ukbd_put_key: 0x4e0 (1248) released
>> >
>> ---------------------------------------------------------------------------
>> >
>> ---------------------------------------------------------------------------
>> > --------------------------
>> >
>> > But when pressing a key that is not working, the "a" for example I get
>> the
>> > following output:
>> >
>> ---------------------------------------------------------------------------
>> >
>> ---------------------------------------------------------------------------
>> > -------------------------- Aug 11 11:12:45 desktop kernel:
>> > ukbd_intr_callback: actlen=15 bytes Aug 11 11:12:45 desktop kernel:
>> > ukbd_intr_callback: modifiers = 0x0000 Aug 11 11:12:46 desktop kernel:
>> > ukbd_intr_callback: actlen=15 bytes Aug 11 11:12:46 desktop kernel:
>> > ukbd_intr_callback: modifiers = 0x0000
>> >
>> --------------------------------------------------------------------------
>> >
>> ---------------------------------------------------------------------------
>> > ---------------------------
>> >
>> > I want to remind you that _all_ keys are not working except those parsed
>> > by ukbd_parse_hid.
>> >
>> > The USB keyboard is functioning correctly on a Linux machine, so it's
>> not a
>> > hardware defect. Can someone help me out troubleshooting this problem?
>>
>> Hi,
>>
>> Usually the actlen should be only 8-bytes. ukbd makes certain assumptions
>> about where the key-data is supposed to be placed.
>>
>> Try using:
>>
>> usbdump -i usbusX -f Y -vvv
>>
>> To capture the data. There is also a quirk to set the BOOT protocol:
>>
>> usbconfig -d X.Y add_quirk UQ_KBD_BOOTPROTO
>>
>> Then re-plug the device.
>>
>> --HPS
>>
>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANec788A6Xf_pEgHmQU25TvRvYz6pLjw58F1%2BzjN3x_=bCiRwQ>