Issue with processing (incorrect?) GET_REPORT replies from HID keyboard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,


I have a Samsung VG-KBD1000 HID Keyboard + Touchpad device, which does
not seem to work with Linux 4.1/4.2 and BlueZ 5.36.


It *almost* works though, even getting registered in X, but seem to get
timed-out by kernel due to missing replies to GET_REPORT calls.

I can see these replies in Wireshark and btmon (both attached), with
correct keypress info, but without Report ID which Linux seem to be
requesting.

GET_REPORT request sent by kernel looks like this (as decoded by
wireshark, HID layer only):

  Bluetooth HID Profile
    0100 .... = Transaction Type: GET_REPORT (0x04)
    .... 0... = Size: Buffer equal to report size (0x00)
    .... .0.. = Parameter reserved: 0x00
    .... ..01 = Report Type: Input (0x01)
    Report Id: Unknown (0x03)

And response that follows looks like this:

  Bluetooth HID Profile
    1010 .... = Transaction Type: DATA (0x0a)
    .... 00.. = Parameter reserved: 0x00
    .... ..01 = Report Type: Input (0x01)
    Protocol Code: Keyboard (0x01)
    0... .... = Modifier: RIGHT GUI: False
    .0.. .... = Modifier: RIGHT ALT: False
    ..0. .... = Modifier: RIGHT SHIFT: False
    ...0 .... = Modifier: RIGHT CTRL: False
    .... 0... = Modifier: LEFT GUI: False
    .... .0.. = Modifier: LEFT ALT: False
    .... ..0. = Modifier: LEFT SHIFT: False
    .... ...0 = Modifier: LEFT CTRL: False
    Reserved: 0x00
    Keycode 1: l (0x0f)
    Keycode 2: <ACTION KEY UP> (0x00)
    Keycode 3: <ACTION KEY UP> (0x00)
    Keycode 4: <ACTION KEY UP> (0x00)
    Keycode 5: <ACTION KEY UP> (0x00)
    Keycode 6: <ACTION KEY UP> (0x00)

Unfortunately, kernel/bluez don't seem to acknowledge it in any way,
and send 4 more repeated GET_REPORT requests, after which drop device
with "Reason: Connection Timeout (0x08)".

From "HUMAN INTERFACE DEVICE PROFILE 1.1" doc, I see that it is clearly
stated that device "Report ID shall precede report data if Report IDs
are declared in the report descriptor ..."  (3.1.2.3), but
unfortunately device does not seem to follow that, if I'm reading
wireshark data correctly.

Wireshark pcap and btmon ascii output for the whole exchange from
pressing button on the keyboard to it getting disconnected should be
attached to this message.


Prehaps someone with more bluetooth protocols knowledge can check if my
conclusion above seem to be correct or not?


If it is, what's the best way to approach this problem?
Maybe there is an easy flag or option to disable using Report IDs in
kernel for the device?


If there's no existing workaround to handle such devices, I'd greatly
appreciate any hints as to where/how to add an exception case for it in
the code in a proper and/or upstreamable way.


Thanks in advance for any response and happy holidays!


-- 
Mike Kazantsev // fraggod.net
Bluetooth monitor ver 5.36
= New Index: F2:D9:6D:CF:EB:AF (BR/EDR,USB,hci0)                                                                                                [hci0] 0.886995
> HCI Event: Connect Request (0x04) plen 10                                                                                                    [hci0] 20.846651
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
        Class: 0x0005cc
          Major class: Peripheral (mouse, joystick, keyboards)
          Minor class: 0x33
        Link type: ACL (0x01)
< HCI Command: Accept Connection Request (0x01|0x0009) plen 7                                                                                  [hci0] 20.846725
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
        Role: Master (0x00)
> HCI Event: Command Status (0x0f) plen 4                                                                                                      [hci0] 20.851649
      Accept Connection Request (0x01|0x0009) ncmd 1
        Status: Success (0x00)
> HCI Event: Role Change (0x12) plen 8                                                                                                         [hci0] 21.020648
        Status: Success (0x00)
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
        Role: Master (0x00)
> HCI Event: Connect Complete (0x03) plen 11                                                                                                   [hci0] 21.075650
        Status: Success (0x00)
        Handle: 43
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
        Link type: ACL (0x01)
        Encryption: Disabled (0x00)
< HCI Command: Read Remote Supported Features (0x01|0x001b) plen 2                                                                             [hci0] 21.075773
        Handle: 43
> HCI Event: Page Scan Repetition Mode Change (0x20) plen 7                                                                                    [hci0] 21.076631
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
        Page scan repetition mode: R0 (0x00)
> HCI Event: Max Slots Change (0x1b) plen 3                                                                                                    [hci0] 21.077617
        Handle: 43
        Max slots: 5
> HCI Event: Command Status (0x0f) plen 4                                                                                                      [hci0] 21.081625
      Read Remote Supported Features (0x01|0x001b) ncmd 1
        Status: Success (0x00)
> HCI Event: Read Remote Supported Features (0x0b) plen 11                                                                                     [hci0] 21.086655
        Status: Success (0x00)
        Handle: 43
        Features: 0xbf 0x06 0x86 0x7e 0x98 0x1f 0x79 0x87
          3 slot packets
          5 slot packets
          Encryption
          Slot offset
          Timing accuracy
          Role switch
          Sniff mode
          Power control requests
          Channel quality driven data rate (CQDDR)
          Paging parameter negotiation
          Power control
          Broadcast Encryption
          Enhanced Data Rate ACL 2 Mbps mode
          Enhanced Data Rate ACL 3 Mbps mode
          Enhanced inquiry scan
          Interlaced inquiry scan
          Interlaced page scan
          RSSI with inquiry results
          AFH capable slave
          AFH classification slave
          3-slot Enhanced Data Rate ACL packets
          5-slot Enhanced Data Rate ACL packets
          Sniff subrating
          Pause encryption
          AFH capable master
          AFH classification master
          Extended Inquiry Response
          Secure Simple Pairing
          Encapsulated PDU
          Erroneous Data Reporting
          Non-flushable Packet Boundary Flag
          Link Supervision Timeout Changed Event
          Inquiry TX Power Level
          Enhanced Power Control
          Extended features
< HCI Command: Read Remote Extended Features (0x01|0x001c) plen 3                                                                              [hci0] 21.086749
        Handle: 43
        Page: 1
> HCI Event: Command Status (0x0f) plen 4                                                                                                      [hci0] 21.092653
      Read Remote Extended Features (0x01|0x001c) ncmd 1
        Status: Success (0x00)
> HCI Event: Link Key Request (0x17) plen 6                                                                                                    [hci0] 21.108647
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
< HCI Command: Link Key Request Reply (0x01|0x000b) plen 22                                                                                    [hci0] 21.108715
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
        Link key: ffc14eab18b75c33471acb068007df7f
> HCI Event: Read Remote Extended Features (0x23) plen 13                                                                                      [hci0] 21.109646
        Status: Success (0x00)
        Handle: 43
        Page: 1/1
        Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
          Secure Simple Pairing (Host Support)
< ACL Data TX: Handle 43 flags 0x00 dlen 10                                                                                                    [hci0] 21.109726
      L2CAP: Information Request (0x0a) ident 1 len 2
        Type: Extended features supported (0x0002)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.116614
        Num handles: 1
        Handle: 43
        Count: 1
> ACL Data RX: Handle 43 flags 0x02 dlen 16                                                                                                    [hci0] 21.119615
      L2CAP: Information Response (0x0b) ident 1 len 8
        Type: Extended features supported (0x0002)
        Result: Success (0x0000)
        Features: 0x00000280
          Fixed Channels
          Unicast Connectionless Data Reception
> HCI Event: Command Complete (0x0e) plen 10                                                                                                   [hci0] 21.119635
      Link Key Request Reply (0x01|0x000b) ncmd 1
        Status: Success (0x00)
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
< ACL Data TX: Handle 43 flags 0x00 dlen 10                                                                                                    [hci0] 21.119689
      L2CAP: Information Request (0x0a) ident 2 len 2
        Type: Fixed channels supported (0x0003)
< HCI Command: Remote Name Request (0x01|0x0019) plen 10                                                                                       [hci0] 21.119705
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
        Page scan repetition mode: R2 (0x02)
        Page scan mode: Mandatory (0x00)
        Clock offset: 0x0000
> HCI Event: Command Status (0x0f) plen 4                                                                                                      [hci0] 21.123613
      Remote Name Request (0x01|0x0019) ncmd 1
        Status: Success (0x00)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.131649
        Num handles: 1
        Handle: 43
        Count: 1
> HCI Event: Remote Name Req Complete (0x07) plen 255                                                                                          [hci0] 21.163630
        Status: Success (0x00)
        Address: C4:57:6E:FA:9E:D1 (Samsung Electronics Co.,Ltd)
        Name: Samsung Wireless Keyboard
@ Device Connected: C4:57:6E:FA:9E:D1 (0) flags 0x0000
        1a 09 53 61 6d 73 75 6e 67 20 57 69 72 65 6c 65  ..Samsung Wirele
        73 73 20 4b 65 79 62 6f 61 72 64 04 0d cc 05 00  ss Keyboard.....
> HCI Event: Encryption Change (0x08) plen 4                                                                                                   [hci0] 21.189613
        Status: Success (0x00)
        Handle: 43
        Encryption: Enabled with E0 (0x01)
> ACL Data RX: Handle 43 flags 0x02 dlen 20                                                                                                    [hci0] 21.190609
      L2CAP: Information Response (0x0b) ident 2 len 12
        Type: Fixed channels supported (0x0003)
        Result: Success (0x0000)
        Channels: 0x0000000000000006
          L2CAP Signaling (BR/EDR)
          Connectionless reception
> ACL Data RX: Handle 43 flags 0x02 dlen 12                                                                                                    [hci0] 21.193613
      L2CAP: Connection Request (0x02) ident 2 len 4
        PSM: 17 (0x0011)
        Source CID: 64
< ACL Data TX: Handle 43 flags 0x00 dlen 16                                                                                                    [hci0] 21.193697
      L2CAP: Connection Response (0x03) ident 2 len 8
        Destination CID: 64
        Source CID: 64
        Result: Connection successful (0x0000)
        Status: No further information available (0x0000)
< ACL Data TX: Handle 43 flags 0x00 dlen 12                                                                                                    [hci0] 21.193711
      L2CAP: Configure Request (0x04) ident 3 len 4
        Destination CID: 64
        Flags: 0x0000
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.199618
        Num handles: 1
        Handle: 43
        Count: 1
> ACL Data RX: Handle 43 flags 0x02 dlen 16                                                                                                    [hci0] 21.224616
      L2CAP: Configure Request (0x04) ident 3 len 8
        Destination CID: 64
        Flags: 0x0000
        Option: Maximum Transmission Unit (0x01) [mandatory]
          MTU: 700
< ACL Data TX: Handle 43 flags 0x00 dlen 18                                                                                                    [hci0] 21.224692
      L2CAP: Configure Response (0x05) ident 3 len 10
        Source CID: 64
        Flags: 0x0000
        Result: Success (0x0000)
        Option: Maximum Transmission Unit (0x01) [mandatory]
          MTU: 700
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.225623
        Num handles: 1
        Handle: 43
        Count: 1
> ACL Data RX: Handle 43 flags 0x02 dlen 14                                                                                                    [hci0] 21.226646
      L2CAP: Configure Response (0x05) ident 3 len 6
        Source CID: 64
        Flags: 0x0000
        Result: Success (0x0000)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.237627
        Num handles: 1
        Handle: 43
        Count: 1
> ACL Data RX: Handle 43 flags 0x02 dlen 12                                                                                                    [hci0] 21.259617
      L2CAP: Connection Request (0x02) ident 4 len 4
        PSM: 19 (0x0013)
        Source CID: 65
< ACL Data TX: Handle 43 flags 0x00 dlen 16                                                                                                    [hci0] 21.259713
      L2CAP: Connection Response (0x03) ident 4 len 8
        Destination CID: 65
        Source CID: 65
        Result: Connection pending (0x0001)
        Status: Authorization pending (0x0002)
< ACL Data TX: Handle 43 flags 0x00 dlen 16                                                                                                    [hci0] 21.259820
      L2CAP: Connection Response (0x03) ident 4 len 8
        Destination CID: 65
        Source CID: 65
        Result: Connection successful (0x0000)
        Status: No further information available (0x0000)
< ACL Data TX: Handle 43 flags 0x00 dlen 12                                                                                                    [hci0] 21.259835
      L2CAP: Configure Request (0x04) ident 4 len 4
        Destination CID: 65
        Flags: 0x0000
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.265653
        Num handles: 1
        Handle: 43
        Count: 1
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.266613
        Num handles: 1
        Handle: 43
        Count: 1
> ACL Data RX: Handle 43 flags 0x02 dlen 16                                                                                                    [hci0] 21.267646
      L2CAP: Configure Request (0x04) ident 5 len 8
        Destination CID: 65
        Flags: 0x0000
        Option: Maximum Transmission Unit (0x01) [mandatory]
          MTU: 700
< ACL Data TX: Handle 43 flags 0x00 dlen 18                                                                                                    [hci0] 21.267716
      L2CAP: Configure Response (0x05) ident 5 len 10
        Source CID: 65
        Flags: 0x0000
        Result: Success (0x0000)
        Option: Maximum Transmission Unit (0x01) [mandatory]
          MTU: 700
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.268617
        Num handles: 1
        Handle: 43
        Count: 1
> ACL Data RX: Handle 43 flags 0x02 dlen 14                                                                                                    [hci0] 21.269617
      L2CAP: Configure Response (0x05) ident 4 len 6
        Source CID: 65
        Flags: 0x0000
        Result: Success (0x0000)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.272613
        Num handles: 1
        Handle: 43
        Count: 1
< ACL Data TX: Handle 43 flags 0x00 dlen 6                                                                                                     [hci0] 21.273543
      Channel: 64 len 2 [PSM 17 mode 0] {chan 0}
        41 03                                            A.
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                         [hci0] 21.279614
        Num handles: 1
        Handle: 43
        Count: 1
> ACL Data RX: Handle 43 flags 0x02 dlen 14                                                                                                    [hci0] 21.280625
      Channel: 65 len 10 [PSM 19 mode 0] {chan 1}
        a1 01 00 00 0f 00 00 00 00 00                    ..........
< ACL Data TX: Handle 43 flags 0x00 dlen 6                                                                                                     [hci0] 26.273180
      Channel: 64 len 2 [PSM 17 mode 0] {chan 0}
        41 03                                            A.
< ACL Data TX: Handle 43 flags 0x00 dlen 6                                                                                                     [hci0] 31.273865
      Channel: 64 len 2 [PSM 17 mode 0] {chan 0}
        41 03                                            A.
< ACL Data TX: Handle 43 flags 0x00 dlen 6                                                                                                     [hci0] 36.274036
      Channel: 64 len 2 [PSM 17 mode 0] {chan 0}
        41 03                                            A.
< ACL Data TX: Handle 43 flags 0x00 dlen 6                                                                                                     [hci0] 41.273326
      Channel: 64 len 2 [PSM 17 mode 0] {chan 0}
        41 03                                            A.
> HCI Event: Disconnect Complete (0x05) plen 4                                                                                                 [hci0] 41.283405
        Status: Success (0x00)
        Handle: 43
        Reason: Connection Timeout (0x08)
@ Device Disconnected: C4:57:6E:FA:9E:D1 (0) reason 1

Attachment: bt_vg-kbd1000_get_report_issue.pcapng
Description: application/pcapng


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux