New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 825288 link

Starred by 4 users

Issue metadata

Status: Assigned
Owner:
Last visit > 30 days ago
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug


Show other hotlists

Hotlists containing this issue:
Hotlist-1


Sign in to add a comment

Unable to enumerate Logitech MeetUp conference cam as HID device on ChromeOS.

Reported by usbtestp...@partnerhangoutstest.com, Mar 23 2018

Issue description

UserAgent: Mozilla/5.0 (X11; CrOS x86_64 10176.76.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.190 Safari/537.36
Platform: 10176.76.0 (Official Build) stable-channel guado

Steps to reproduce the problem:
1. On ChromeOS, install HID sample extension from https://github.com/GoogleChrome/chrome-app-samples
2. Plug in Logitech MeetUp device.
3. The sample extensions do not see MeetUp HID device.

What is the expected behavior?
Logitech MeetUp device should be enumerated as HID device and recognized by HID extension apps on ChromeOS.

What went wrong?
This issue might come from ChromeOS device driver and is related with the ID of "Vendor-defined Usage Page" in HID report descriptor. 
MeetUp device defines 3 sections of Vendor-defined Usage Page with 3 different IDs and device driver does not recognize multiple Vendor-defined Usage Page. 

Did this work before? No 

Chrome version: 64.0.3282.190  Channel: n/a
OS Version: 10176.76.0
Flash Version: 

If all Vendor-defined usage page IDs are changed to 0xFF00, ChromeOS HID extension app can recognized MeetUp Hid device.
 
Components: Platform>Apps>API>HID
Labels: Needs-Feedback
Please attach the relevant section of the kernel log from when the device was enumerated so we can see whether the device driver successfully recognized the device and created a hidraw device node for it. It will look something like this:

12754.311123] usb 1-1.4.4.4.3: new full-speed USB device number 21 using xhci_hcd
[112754.402328] usb 1-1.4.4.4.3: New USB device found, idVendor=046d, idProduct=c52b
[112754.402334] usb 1-1.4.4.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[112754.402337] usb 1-1.4.4.4.3: Product: USB Receiver
[112754.402339] usb 1-1.4.4.4.3: Manufacturer: Logitech
[112754.411775] logitech-djreceiver 0003:046D:C52B.0017: hiddev0,hidraw2: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:14.0-1.4.4.4.3/input2

Please attach the relevant section of the system log from when the permssion_broker processed the request from Chrome to access the device. It will look something like this:

2018-03-29T13:28:32.549352-07:00 INFO permission_broker[1078]: ProcessPath(/dev/hidraw2)
2018-03-29T13:28:32.603002-07:00 INFO permission_broker[1078]:   AllowUsbDeviceRule: IGNORE
2018-03-29T13:28:32.603012-07:00 INFO permission_broker[1078]:   AllowTtyDeviceRule: IGNORE
2018-03-29T13:28:32.603016-07:00 INFO permission_broker[1078]:   DenyClaimedUsbDeviceRule: IGNORE
2018-03-29T13:28:32.603034-07:00 INFO permission_broker[1078]:   DenyUninitializedDeviceRule: IGNORE
2018-03-29T13:28:32.603037-07:00 INFO permission_broker[1078]:   DenyUsbDeviceClassRule: IGNORE
2018-03-29T13:28:32.603040-07:00 INFO permission_broker[1078]:   DenyUsbDeviceClassRule: IGNORE
2018-03-29T13:28:32.603043-07:00 INFO permission_broker[1078]:   DenyUsbVendorIdRule: IGNORE
2018-03-29T13:28:32.603046-07:00 INFO permission_broker[1078]:   AllowHidrawDeviceRule: ALLOW
2018-03-29T13:28:32.603050-07:00 INFO permission_broker[1078]:   AllowGroupTtyDeviceRule: IGNORE
2018-03-29T13:28:32.603053-07:00 INFO permission_broker[1078]:   DenyGroupTtyDeviceRule: IGNORE
2018-03-29T13:28:32.603059-07:00 INFO permission_broker[1078]: message repeated 2 times: [   DenyGroupTtyDeviceRule: IGNORE]
2018-03-29T13:28:32.603156-07:00 INFO permission_broker[1078]: Found Logitech Unifying receiver. Skipping rule.
2018-03-29T13:28:32.603161-07:00 INFO permission_broker[1078]:   DenyClaimedHidrawDeviceRule: IGNORE
2018-03-29T13:28:32.603189-07:00 INFO permission_broker[1078]:   DenyUnsafeHidrawDeviceRule: IGNORE
2018-03-29T13:28:32.603192-07:00 INFO permission_broker[1078]: Verdict for /dev/hidraw2: ALLOW
I got the log from my ChromeBox:
Plug in:
2018-03-29T18:55:33.700068-07:00 INFO kernel: [117467.799354] usb 1-4: new high-speed USB device number 12 using xhci_hcd
2018-03-29T18:55:33.868091-07:00 INFO kernel: [117467.967268] usb 1-4: New USB device found, idVendor=046d, idProduct=086a
2018-03-29T18:55:33.868124-07:00 INFO kernel: [117467.967287] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
2018-03-29T18:55:33.868128-07:00 INFO kernel: [117467.967296] usb 1-4: Product: USB2.1 Hub
2018-03-29T18:55:33.868130-07:00 INFO kernel: [117467.967305] usb 1-4: Manufacturer: GenesysLogic
2018-03-29T18:55:33.869020-07:00 INFO kernel: [117467.968828] hub 1-4:1.0: USB hub found
2018-03-29T18:55:33.869050-07:00 INFO kernel: [117467.969106] hub 1-4:1.0: 2 ports detected
2018-03-29T18:55:34.160095-07:00 INFO kernel: [117468.259268] usb 1-4.1: new high-speed USB device number 13 using xhci_hcd
2018-03-29T18:55:34.270071-07:00 INFO kernel: [117468.370114] usb 1-4.1: New USB device found, idVendor=046d, idProduct=0866
2018-03-29T18:55:34.270112-07:00 INFO kernel: [117468.370131] usb 1-4.1: New USB device strings: Mfr=0, Product=2, SerialNumber=3
2018-03-29T18:55:34.270115-07:00 INFO kernel: [117468.370139] usb 1-4.1: Product: Logitech MeetUp
2018-03-29T18:55:34.270118-07:00 INFO kernel: [117468.370146] usb 1-4.1: SerialNumber: 509C4267
2018-03-29T18:55:34.273022-07:00 INFO kernel: [117468.372667] uvcvideo: Found UVC 1.00 device Logitech MeetUp (046d:0866)
2018-03-29T18:55:34.362089-07:00 INFO kernel: [117468.461290] usb 1-4.2: new full-speed USB device number 14 using xhci_hcd
2018-03-29T18:55:34.471029-07:00 INFO kernel: [117468.570963] usb 1-4.2: New USB device found, idVendor=046d, idProduct=0867
2018-03-29T18:55:34.471050-07:00 INFO kernel: [117468.570975] usb 1-4.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2018-03-29T18:55:34.471052-07:00 INFO kernel: [117468.570983] usb 1-4.2: Product: Logitech MeetUp Speakerphone
2018-03-29T18:55:34.471053-07:00 INFO kernel: [117468.570989] usb 1-4.2: Manufacturer: Logitech
2018-03-29T18:55:34.471055-07:00 INFO kernel: [117468.570995] usb 1-4.2: SerialNumber: 0x05c92476
2018-03-29T18:55:34.483964-07:00 INFO kernel: [117468.583817] input: Logitech Logitech MeetUp Speakerphone as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.2/1-4.2:1.3/0003:046D:0867.0006/input/input10
2018-03-29T18:55:34.534969-07:00 INFO kernel: [117468.634477] hid-generic 0003:046D:0867.0006: input,hiddev0,hidraw3: USB HID v1.11 Device [Logitech Logitech MeetUp Speakerphone] on usb-0000:00:14.0-4.2/input3
2018-03-29T18:55:34.635603-07:00 INFO permission_broker[1056]: ProcessPath(/dev/bus/usb/001/013)
2018-03-29T18:55:34.664915-07:00 ERR cras_server[1134]: USB card: vendor:046d, product:0867, serial num:0x05c92476, checksum:3c71084e
2018-03-29T18:55:34.684883-07:00 INFO permission_broker[1056]:   AllowUsbDeviceRule: ALLOW
2018-03-29T18:55:34.684894-07:00 INFO permission_broker[1056]:   AllowTtyDeviceRule: IGNORE
2018-03-29T18:55:34.726146-07:00 INFO permission_broker[1056]:   DenyClaimedUsbDeviceRule: DENY
2018-03-29T18:55:34.726156-07:00 INFO permission_broker[1056]: Verdict for /dev/bus/usb/001/013: DENY
2018-03-29T18:55:34.726209-07:00 ERR permission_broker[1056]: OpenPath(...): Domain=permission_broker, Code=permission_denied, Message=Permission to open '/dev/bus/usb/001/013' denied
2018-03-29T18:55:34.726323-07:00 INFO permission_broker[1056]: ProcessPath(/dev/bus/usb/001/014)
2018-03-29T18:55:34.756004-07:00 INFO permission_broker[1056]:   AllowUsbDeviceRule: ALLOW
2018-03-29T18:55:34.756014-07:00 INFO permission_broker[1056]:   AllowTtyDeviceRule: IGNORE
2018-03-29T18:55:34.796284-07:00 INFO permission_broker[1056]:   DenyClaimedUsbDeviceRule: DENY
2018-03-29T18:55:34.796296-07:00 INFO permission_broker[1056]: Verdict for /dev/bus/usb/001/014: DENY

==============================================================

Add device in chrome hid app:
8-03-29T18:57:39.415870-07:00 INFO permission_broker[1056]: ProcessPath(/dev/hidraw2)
2018-03-29T18:57:39.470614-07:00 INFO permission_broker[1056]:   AllowUsbDeviceRule: IGNORE
2018-03-29T18:57:39.470627-07:00 INFO permission_broker[1056]:   AllowTtyDeviceRule: IGNORE
2018-03-29T18:57:39.470633-07:00 INFO permission_broker[1056]:   DenyClaimedUsbDeviceRule: IGNORE
2018-03-29T18:57:39.470654-07:00 INFO permission_broker[1056]:   DenyUninitializedDeviceRule: IGNORE
2018-03-29T18:57:39.470661-07:00 INFO permission_broker[1056]:   DenyUsbDeviceClassRule: IGNORE
2018-03-29T18:57:39.470666-07:00 INFO permission_broker[1056]:   DenyUsbDeviceClassRule: IGNORE
2018-03-29T18:57:39.470672-07:00 INFO permission_broker[1056]:   DenyUsbVendorIdRule: IGNORE
2018-03-29T18:57:39.470678-07:00 INFO permission_broker[1056]:   AllowHidrawDeviceRule: ALLOW
2018-03-29T18:57:39.470684-07:00 INFO permission_broker[1056]:   AllowGroupTtyDeviceRule: IGNORE
2018-03-29T18:57:39.470690-07:00 INFO permission_broker[1056]:   DenyGroupTtyDeviceRule: IGNORE
2018-03-29T18:57:39.470701-07:00 INFO permission_broker[1056]: message repeated 2 times: [   DenyGroupTtyDeviceRule: IGNORE]
2018-03-29T18:57:39.510444-07:00 INFO permission_broker[1056]:   DenyClaimedHidrawDeviceRule: DENY
2018-03-29T18:57:39.510455-07:00 INFO permission_broker[1056]: Verdict for /dev/hidraw2: DENY
2018-03-29T18:57:39.510601-07:00 INFO permission_broker[1056]: ProcessPath(/dev/hidraw3)
2018-03-29T18:57:39.542825-07:00 INFO permission_broker[1056]:   AllowUsbDeviceRule: IGNORE
2018-03-29T18:57:39.542834-07:00 INFO permission_broker[1056]:   AllowTtyDeviceRule: IGNORE
2018-03-29T18:57:39.542838-07:00 INFO permission_broker[1056]:   DenyClaimedUsbDeviceRule: IGNORE
2018-03-29T18:57:39.542853-07:00 INFO permission_broker[1056]:   DenyUninitializedDeviceRule: IGNORE
2018-03-29T18:57:39.542857-07:00 INFO permission_broker[1056]:   DenyUsbDeviceClassRule: IGNORE
2018-03-29T18:57:39.542860-07:00 INFO permission_broker[1056]:   DenyUsbDeviceClassRule: IGNORE
2018-03-29T18:57:39.542864-07:00 INFO permission_broker[1056]:   DenyUsbVendorIdRule: IGNORE
2018-03-29T18:57:39.542868-07:00 INFO permission_broker[1056]:   AllowHidrawDeviceRule: ALLOW
2018-03-29T18:57:39.542871-07:00 INFO permission_broker[1056]:   AllowGroupTtyDeviceRule: IGNORE
2018-03-29T18:57:39.542875-07:00 INFO permission_broker[1056]:   DenyGroupTtyDeviceRule: IGNORE
2018-03-29T18:57:39.542881-07:00 INFO permission_broker[1056]: message repeated 2 times: [   DenyGroupTtyDeviceRule: IGNORE]
2018-03-29T18:57:39.586762-07:00 INFO permission_broker[1056]:   DenyClaimedHidrawDeviceRule: DENY
2018-03-29T18:57:39.586771-07:00 INFO permission_broker[1056]: Verdict for /dev/hidraw3: DENY

Labels: -Needs-Feedback
Owner: frankhu@chromium.org
Status: Assigned (was: Unconfirmed)
The device cannot be opened by chrome because it fails the DenyClaimedHidrawDeviceRule. This rule is implemented here:

https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/deny_claimed_hidraw_device_rule.cc

The purpose of this rule is to prevent input devices that appear to be mice or keyboards from being claimed by Chrome, while devices with only special function keys are okay. An analysis of the HID report descriptors for the Logitech device is necessary to determine precisely why this rule is triggering and whether that is intentional or a bug in the report descriptor parsing.

Comment 4 Deleted

Comment 5 by noahp@chromium.org, Apr 3 2018

USB2.1 Hub:

              Product ID: 0x086a
              Vendor ID: 0x046d  (Logitech Inc.)
              Version: 0.18
              Speed: Up to 480 Mb/sec
              Manufacturer: GenesysLogic
              Location ID: 0x14110000 / 47
              Current Available (mA): 500
              Current Required (mA): 100
              Extra Operating Current (mA): 0

                Logitech MeetUp Speakerphone:

                  Product ID: 0x0867
                  Vendor ID: 0x046d  (Logitech Inc.)
                  Version: 1.16
                  Serial Number: 0x05c92476
                  Speed: Up to 12 Mb/sec
                  Manufacturer: Logitech
                  Location ID: 0x14112000 / 49
                  Current Available (mA): 500
                  Current Required (mA): 100
                  Extra Operating Current (mA): 0

                Logitech MeetUp:

                  Product ID: 0x0866
                  Vendor ID: 0x046d  (Logitech Inc.)
                  Version: 0.17
                  Serial Number: 509C4267
                  Speed: Up to 480 Mb/sec
                  Location ID: 0x14111000 / 48
                  Current Available (mA): 500
                  Current Required (mA): 500
                  Extra Operating Current (mA): 0
Here's a better article on how to dump the HID report descriptors for the device. The information there is just the USB device descriptor.

http://www.slashdev.ca/2010/05/08/get-usb-report-descriptor-with-linux/

A comment there also links to this utility:

https://github.com/DIGImend/usbhid-dump
Cc: reillyg@chromium.org

Comment 8 by noahp@chromium.org, Apr 3 2018

$ lsusb
[...]
Bus 003 Device 012: ID 046d:0867 Logitech, Inc. 
Bus 003 Device 011: ID 046d:0866 Logitech, Inc. 
Bus 003 Device 010: ID 046d:086a Logitech, Inc. 
[...]

$ lsusb -v -d 046d:0867

Bus 003 Device 012: ID 046d:0867 Logitech, Inc. 
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x046d Logitech, Inc.
  idProduct          0x0867 
  bcdDevice            1.16
  iManufacturer           1 
  iProduct                2 
  iSerial                 3 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          219
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength           72
        bInCollection           2
        baInterfaceNr( 0)       1
        baInterfaceNr( 1)       2
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 2
        bSourceID               1
        bControlSize            1
        bmaControls( 0)      0x03
          Mute Control
          Volume Control
        bmaControls( 1)      0x00
        bmaControls( 2)      0x00
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             3
        wTerminalType      0x0405 Echo-canceling speakerphone
        bAssocTerminal          5
        bSourceID               2
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             5
        wTerminalType      0x0405 Echo-canceling speakerphone
        bAssocTerminal          3
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 6
        bSourceID               5
        bControlSize            1
        bmaControls( 0)      0x03
          Mute Control
          Volume Control
        bmaControls( 1)      0x00
        bmaControls( 2)      0x00
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             7
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               6
        iTerminal               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           7
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        32000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x0084  1x 132 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           1
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        32000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0084  1x 132 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     674
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               2

$ lsusb -v -d 046d:0866

Bus 003 Device 011: ID 046d:0866 Logitech, Inc. 
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x046d Logitech, Inc.
  idProduct          0x0866 
  bcdDevice            0.17
  iManufacturer           0 
  iProduct                2 
  iSerial                 3 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength         2339
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              500mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass         14 Video
      bFunctionSubClass       3 Video Interface Collection
      bFunctionProtocol       0 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0 
      iInterface              0 
      VideoControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdUVC               1.00
        wTotalLength          215
        dwClockFrequency       30.000000MHz
        bInCollection           1
        baInterfaceNr( 0)       1
      VideoControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Camera Sensor
        bAssocTerminal          0
        iTerminal               0 
        wObjectiveFocalLengthMin      0
        wObjectiveFocalLengthMax      0
        wOcularFocalLength            0
        bControlSize                  3
        bmControls           0x0000120e
          Auto-Exposure Mode
          Auto-Exposure Priority
          Exposure Time (Absolute)
          Zoom (Absolute)
          PanTilt (Relative)
      VideoControl Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      5 (PROCESSING_UNIT)
      Warning: Descriptor too short
        bUnitID                 3
        bSourceID               1
        wMaxMultiplier      16384
        bControlSize            2
        bmControls     0x0000175b
          Brightness
          Contrast
          Saturation
          Sharpness
          White Balance Temperature
          Backlight Compensation
          Gain
          Power Line Frequency
          White Balance Temperature, Auto
        iProcessing             0 
        bmVideoStandards     0x1b
          None
          NTSC - 525/60
          SECAM - 625/50
          NTSC - 625/50
      VideoControl Interface Descriptor:
        bLength                27
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                14
        guidExtensionCode         {6ad1492c-b832-8544-3ea8-643a152362f2}
        bNumControl             6
        bNrPins                 1
        baSourceID( 0)          3
        bControlSize            2
        bmControls( 0)       0x3f
        bmControls( 1)       0x00
        iExtension              0 
      VideoControl Interface Descriptor:
        bLength                27
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 6
        guidExtensionCode         {d09ee423-7811-314f-ae52-d2fb8a8d3b48}
        bNumControl            14
        bNrPins                 1
        baSourceID( 0)          3
        bControlSize            2
        bmControls( 0)       0xff
        bmControls( 1)       0x6f
        iExtension              0 
      VideoControl Interface Descriptor:
        bLength                27
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 8
        guidExtensionCode         {e48e6769-0f41-db40-a850-7420d7d8240e}
        bNumControl             8
        bNrPins                 1
        baSourceID( 0)          3
        bControlSize            2
        bmControls( 0)       0x3f
        bmControls( 1)       0x03
        iExtension              0 
      VideoControl Interface Descriptor:
        bLength                28
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 9
        guidExtensionCode         {a94c5d1f-11de-8744-840d-50933c8ec8d1}
        bNumControl            18
        bNrPins                 1
        baSourceID( 0)          3
        bControlSize            3
        bmControls( 0)       0xff
        bmControls( 1)       0xff
        bmControls( 2)       0x0f
        iExtension              0 
      VideoControl Interface Descriptor:
        bLength                27
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                10
        guidExtensionCode         {1502e449-34f4-fe47-b158-0e885023e51b}
        bNumControl            10
        bNrPins                 1
        baSourceID( 0)          3
        bControlSize            2
        bmControls( 0)       0xba
        bmControls( 1)       0x2f
        iExtension              0 
      VideoControl Interface Descriptor:
        bLength                28
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                11
        guidExtensionCode         {212de5ff-3080-2c4e-82d9-f587d00540bd}
        bNumControl             9
        bNrPins                 1
        baSourceID( 0)          3
        bControlSize            3
        bmControls( 0)       0x0f
        bmControls( 1)       0x47
        bmControls( 2)       0x01
        iExtension              0 
      VideoControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             4
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               3
        iTerminal               0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               8
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      VideoStreaming Interface Descriptor:
        bLength                            15
        bDescriptorType                    36
        bDescriptorSubtype                  1 (INPUT_HEADER)
        bNumFormats                         2
        wTotalLength                     1901
        bEndPointAddress                  129
        bmInfo                              0
        bTerminalLink                       4
        bStillCaptureMethod                 0
        bTriggerSupport                     0
        bTriggerUsage                       0
        bControlSize                        1
        bmaControls( 0)                    27
        bmaControls( 1)                    27
      VideoStreaming Interface Descriptor:
        bLength                            27
        bDescriptorType                    36
        bDescriptorSubtype                  4 (FORMAT_UNCOMPRESSED)
        bFormatIndex                        1
        bNumFrameDescriptors               19
        guidFormat                            {59555932-0000-1000-8000-00aa00389b71}
        bBitsPerPixel                      16
        bDefaultFrameIndex                  1
        bAspectRatioX                       0
        bAspectRatioY                       0
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 2 fields
          Field 1 first: No
          Field pattern: Field 1 only
          bCopyProtect                      0
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           480
        dwMinBitRate                 24576000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            160
        wHeight                           120
        dwMinBitRate                  1536000
        dwMaxBitRate                  9216000
        dwMaxVideoFrameBufferSize       38400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         3
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            176
        wHeight                           144
        dwMinBitRate                  2027520
        dwMaxBitRate                 12165120
        dwMaxVideoFrameBufferSize       50688
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         4
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            320
        wHeight                           180
        dwMinBitRate                  4608000
        dwMaxBitRate                 27648000
        dwMaxVideoFrameBufferSize      115200
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         5
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            320
        wHeight                           240
        dwMinBitRate                  6144000
        dwMaxBitRate                 36864000
        dwMaxVideoFrameBufferSize      153600
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         6
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            352
        wHeight                           288
        dwMinBitRate                  8110080
        dwMaxBitRate                 48660480
        dwMaxVideoFrameBufferSize      202752
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         7
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            340
        wHeight                           340
        dwMinBitRate                  9248000
        dwMaxBitRate                 55488000
        dwMaxVideoFrameBufferSize      231200
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         8
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            424
        wHeight                           240
        dwMinBitRate                  8140800
        dwMaxBitRate                 48844800
        dwMaxVideoFrameBufferSize      203520
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         9
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            440
        wHeight                           440
        dwMinBitRate                 15488000
        dwMaxBitRate                 15488000
        dwMaxVideoFrameBufferSize      387200
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        10
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            480
        wHeight                           270
        dwMinBitRate                 10368000
        dwMaxBitRate                 62208000
        dwMaxVideoFrameBufferSize      259200
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        11
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                 18432000
        dwMaxBitRate                110592000
        dwMaxVideoFrameBufferSize      460800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        12
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            800
        wHeight                           448
        dwMinBitRate                 28672000
        dwMaxBitRate                172032000
        dwMaxVideoFrameBufferSize      716800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        13
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            800
        wHeight                           600
        dwMinBitRate                 38400000
        dwMaxBitRate                184320000
        dwMaxVideoFrameBufferSize      960000
        dwDefaultFrameInterval         416666
        bFrameIntervalType                  6
        dwFrameInterval( 0)            416666
        dwFrameInterval( 1)            500000
        dwFrameInterval( 2)            666666
        dwFrameInterval( 3)           1000000
        dwFrameInterval( 4)           1333333
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        14
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            848
        wHeight                           480
        dwMinBitRate                 32563200
        dwMaxBitRate                195379200
        dwMaxVideoFrameBufferSize      814080
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  7
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            416666
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           1333333
        dwFrameInterval( 6)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            42
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        15
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            960
        wHeight                           540
        dwMinBitRate                 41472000
        dwMaxBitRate                124416000
        dwMaxVideoFrameBufferSize     1036800
        dwDefaultFrameInterval         666666
        bFrameIntervalType                  4
        dwFrameInterval( 0)            666666
        dwFrameInterval( 1)           1000000
        dwFrameInterval( 2)           1333333
        dwFrameInterval( 3)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            42
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        16
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1024
        wHeight                           576
        dwMinBitRate                 47185920
        dwMaxBitRate                141557760
        dwMaxVideoFrameBufferSize     1179648
        dwDefaultFrameInterval         666666
        bFrameIntervalType                  4
        dwFrameInterval( 0)            666666
        dwFrameInterval( 1)           1000000
        dwFrameInterval( 2)           1333333
        dwFrameInterval( 3)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            38
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        17
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1280
        wHeight                           720
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize     1843200
        dwDefaultFrameInterval        1000000
        bFrameIntervalType                  3
        dwFrameInterval( 0)           1000000
<f
...

[Message clipped]  View entire message

It looks like this message was clipped so I'm not sure if they're included later on but the HID report descriptors are marked as "** UNAVAILABLE **" in what I see here so far. The article I linked provides a solution to this problem.

Comment 10 by l...@logitech.com, Apr 3 2018

Can you add me (llu7@logitech.com) to the cc list of this bug report. I've filed without really paying attention on what account i was on.
Thanks
Cc: l...@logitech.com
Summary: Unable to enumerate Logitech MeetUp conference cam as HID device on ChromeOS. (was: Enable to enumerate Logitech MeetUp conference cam as HID device on ChromeOS.)
I dumped the HID report descriptor here for now (internal access only)
http://gpaste/5625364344733696

Another way to get to the HID report descriptor is to do:
cd /sys/kernel/debug/hid/<SOME_DEVICE>
for i in $(head -n 1 rdesc); do echo -n "0x$i, "; done; echo

Paste that output into
http://eleccelerator.com/usbdescreqparser/

On an email thread we found out that the kernel appears to be parsing the HID report descriptor in a way that is making it think that the device is an absolute pointing device:

# cat /sys/class/input/input11/capabilities/abs
ffffff0000000000
# cat /sys/class/input/input11/capabilities/rel
0
# cat /sys/class/input/input11/capabilities/key
1 1000000000000000 0 c000000000000000 0

This is why the permission_broker is rejecting the open request.

Comment 15 by dtor@chromium.org, Apr 16 2018

I think this happens because the device does not export usages hid-input understands well, and so it maps them onto ABS_MISC + n, which eventually bleeds into multi-touch range.

We might need this: https://patchwork.kernel.org/patch/9795625/

I'll ping upstream on the status of it.

Comment 16 by dtor@chromium.org, Apr 16 2018

Cc: dtor@chromium.org

Comment 17 by dtor@chromium.org, Apr 18 2018

The HID maintainer has accepted the patch in question and queued it for inclusion in 4.18 kernel. I made a CL for guado here:

https://crrev.com/c/1017864

Please give it a try and if that fixes your issue we can get it into the rest of chromeos kernels.

Comment 18 by noahp@google.com, Apr 26 2018

Initial tests show that the same issue is occuring 

The sample app does not detect the MeetUp, volume sync is not maintained. We see:

# cat /sys/class/input/input11/capabilities/abs
ffffff0000000000
# cat /sys/class/input/input11/capabilities/rel
0
# cat /sys/class/input/input11/capabilities/key
1 1000000000000000 0 c000000000000000 0

Comment 19 by dtor@chromium.org, Apr 27 2018

Re: #18 I do not think that you used patched kernel as here is what I see with the device:

Input device ID: bus 0x3 vendor 0x46d product 0x867 version 0x111
Input device name: "Logitech Logitech MeetUp Speakerphone"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 248 (?)
    Event code 256 (BTN_0)
  Event type 3 (EV_ABS)
    Event code 40 (ABS_MISC)
      Value      0
      Min        0
      Max      255
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
  Event type 17 (EV_LED)
    Event code 7 (LED_MUTE)

localhost ~ # cat /sys/class/input/input9/capabilities/abs 
10000000000

Still, this ABS_MISC mapping will cause permission broker to disallow access to the device. Reilly, do you think we could ignore ABS_MISC if there are no other axes present in an input device?

Another option is for Logitech to write a proper hid sub-driver that maps the reports properly. As it is the device's behavior is not optimal: it sends KeyUp events, but not KeyDown; 1, 2 or zoom keys do not seem to produce events, etc.


Do we know anything about what kinds of events are being reported under this event type? For devices that generate ABS_MISC events is that something that usually corresponds to a kind of input we would be concerned about apps getting access to? Remember, the goal of this filtering is to prevent apps from logging keyboard and mouse (or touch) input.

Comment 21 by dtor@google.com, Apr 30 2018

ABS_MISC is for events that we can't easily classify or is used by mistake:

- Wacom driver is using ABS_MISC to report tool ID (to help distinguishing cases where you may have several pens that you use with a tablet)
- Aiptek tablet driver (incorrectly) is using ABS_MISC to report tool type (stylus/mouse/unknown)
- Hanwang appears to be doping the same
- GTCO - Transducer? - I do not think there are devices left in the wild anyway
- cma3000 - accelerometer - used to indicate free fall condition
- Walkera and PXRC - remote controllers for helicopters/planes - additional axis

I think we should be OK allowing accessing devices with ABS_MISC if there are no other absolute axis.

Project Member

Comment 22 by bugdroid1@chromium.org, May 5 2018

Labels: merge-merged-chromeos-3.14
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/54ef25029f84806e870410b29f88d7ce696653b1

commit 54ef25029f84806e870410b29f88d7ce696653b1
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Sat May 05 18:06:59 2018

BACKPORT: FROMLIST: HID: input: do not increment usages when a duplicate is found

This is something that bothered us from a long time. When hid-input
doesn't know how to map a usage, it uses *_MISC. But there is something
else which increments the usage if the evdev code is already used.

This leads to few issues:
- some devices may have their ABS_X mapped to ABS_Y if they export a bad
  set of usages (see the DragonRise joysticks IIRC -> fixed in a specific
  HID driver)
- *_MISC + N might (will) conflict with other defined axes (my Logitech
  H800 exports some multitouch axes because of that)
- this prevents to freely add some new evdev usages, because "hey, my
  headset will now report ABS_COFFEE, and it's not coffee capable".

So let's try to kill this nonsense, and hope we won't break too many
devices.

I my headset case, the ABS_MISC axes are created because of some
proprietary usages, so we might not break that many devices.

For backward compatibility, a quirk HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE
is created and can be applied to any device that needs this behavior.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

BUG=chromium:825288
TEST=Build on guado, try connecting MeetUp device and verify it does not
list any extra absolute axes.

(am from https://patchwork.kernel.org/patch/10102635/ and adjust hid.h
to not use BIT() macros but plain constants)
Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Change-Id: Id86933886d98ea4f5d7bb27784876bc7e56501c2
Reviewed-on: https://chromium-review.googlesource.com/1017864
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/54ef25029f84806e870410b29f88d7ce696653b1/drivers/hid/hid-input.c
[modify] https://crrev.com/54ef25029f84806e870410b29f88d7ce696653b1/include/linux/hid.h

Project Member

Comment 23 by bugdroid1@chromium.org, May 8 2018

Labels: merge-merged-chromeos-3.10
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/ccc4d1d53e0a6c80add52cec87f0f097d1e5b715

commit ccc4d1d53e0a6c80add52cec87f0f097d1e5b715
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue May 08 03:45:45 2018

BACKPORT: FROMLIST: HID: input: do not increment usages when a duplicate is found

This is something that bothered us from a long time. When hid-input
doesn't know how to map a usage, it uses *_MISC. But there is something
else which increments the usage if the evdev code is already used.

This leads to few issues:
- some devices may have their ABS_X mapped to ABS_Y if they export a bad
  set of usages (see the DragonRise joysticks IIRC -> fixed in a specific
  HID driver)
- *_MISC + N might (will) conflict with other defined axes (my Logitech
  H800 exports some multitouch axes because of that)
- this prevents to freely add some new evdev usages, because "hey, my
  headset will now report ABS_COFFEE, and it's not coffee capable".

So let's try to kill this nonsense, and hope we won't break too many
devices.

I my headset case, the ABS_MISC axes are created because of some
proprietary usages, so we might not break that many devices.

For backward compatibility, a quirk HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE
is created and can be applied to any device that needs this behavior.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

BUG=chromium:825288
TEST=Build on guado, try connecting MeetUp device and verify it does not
list any extra absolute axes.

(am from https://patchwork.kernel.org/patch/10102635/ and adjust hid.h
to not use BIT() macros but plain constants)
Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Change-Id: Id86933886d98ea4f5d7bb27784876bc7e56501c2
Reviewed-on: https://chromium-review.googlesource.com/1017864
Reviewed-by: Benson Leung <bleung@chromium.org>
(cherry picked from commit 54ef25029f84806e870410b29f88d7ce696653b1)
Reviewed-on: https://chromium-review.googlesource.com/1048005
Reviewed-by: Guenter Roeck <groeck@chromium.org>

[modify] https://crrev.com/ccc4d1d53e0a6c80add52cec87f0f097d1e5b715/drivers/hid/hid-input.c
[modify] https://crrev.com/ccc4d1d53e0a6c80add52cec87f0f097d1e5b715/include/linux/hid.h

Project Member

Comment 24 by bugdroid1@chromium.org, May 8 2018

Labels: merge-merged-chromeos-3.8
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/f633324aeb8d109ec5dd498e3a8d94e0bf0fd826

commit f633324aeb8d109ec5dd498e3a8d94e0bf0fd826
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue May 08 03:45:34 2018

BACKPORT: FROMLIST: HID: input: do not increment usages when a duplicate is found

This is something that bothered us from a long time. When hid-input
doesn't know how to map a usage, it uses *_MISC. But there is something
else which increments the usage if the evdev code is already used.

This leads to few issues:
- some devices may have their ABS_X mapped to ABS_Y if they export a bad
  set of usages (see the DragonRise joysticks IIRC -> fixed in a specific
  HID driver)
- *_MISC + N might (will) conflict with other defined axes (my Logitech
  H800 exports some multitouch axes because of that)
- this prevents to freely add some new evdev usages, because "hey, my
  headset will now report ABS_COFFEE, and it's not coffee capable".

So let's try to kill this nonsense, and hope we won't break too many
devices.

I my headset case, the ABS_MISC axes are created because of some
proprietary usages, so we might not break that many devices.

For backward compatibility, a quirk HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE
is created and can be applied to any device that needs this behavior.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

BUG=chromium:825288
TEST=Build on guado, try connecting MeetUp device and verify it does not
list any extra absolute axes.

(am from https://patchwork.kernel.org/patch/10102635/ and adjust hid.h
to not use BIT() macros but plain constants)
Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Change-Id: Id86933886d98ea4f5d7bb27784876bc7e56501c2
Reviewed-on: https://chromium-review.googlesource.com/1017864
Reviewed-by: Benson Leung <bleung@chromium.org>
(cherry picked from commit 54ef25029f84806e870410b29f88d7ce696653b1)
Reviewed-on: https://chromium-review.googlesource.com/1048006
Reviewed-by: Guenter Roeck <groeck@chromium.org>

[modify] https://crrev.com/f633324aeb8d109ec5dd498e3a8d94e0bf0fd826/drivers/hid/hid-input.c
[modify] https://crrev.com/f633324aeb8d109ec5dd498e3a8d94e0bf0fd826/include/linux/hid.h

Comment 25 by dtor@google.com, May 8 2018

Labels: Merge-Request-67 M-67
Project Member

Comment 26 by sheriffbot@chromium.org, May 8 2018

Labels: -Merge-Request-67 Merge-Review-67 Hotlist-Merge-Review
This bug requires manual review: M67 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), kbleicher@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Hi, this isn't a M67 regression.  In fact it's fairly old (M64).  M67 is already in beta.  Is there a compelling reason for M67?  
My change to permission_broker had not landed yet so this is not ready to merge.

Comment 29 by noahp@google.com, May 8 2018

There is a compelling business reason here given the major infocomm plans we have. It would be cleanest for users to simultaneously announce and have full functionality. 

If merged only to 68 it would be over a month from announcement to the time that these fixes go stable on CFM. 
Project Member

Comment 30 by bugdroid1@chromium.org, May 9 2018

Labels: merge-merged-chromeos-4.4
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/742412e7f39aeb8895746657dca8ca25996e6750

commit 742412e7f39aeb8895746657dca8ca25996e6750
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Wed May 09 00:44:32 2018

BACKPORT: FROMLIST: HID: input: do not increment usages when a duplicate is found

This is something that bothered us from a long time. When hid-input
doesn't know how to map a usage, it uses *_MISC. But there is something
else which increments the usage if the evdev code is already used.

This leads to few issues:
- some devices may have their ABS_X mapped to ABS_Y if they export a bad
  set of usages (see the DragonRise joysticks IIRC -> fixed in a specific
  HID driver)
- *_MISC + N might (will) conflict with other defined axes (my Logitech
  H800 exports some multitouch axes because of that)
- this prevents to freely add some new evdev usages, because "hey, my
  headset will now report ABS_COFFEE, and it's not coffee capable".

So let's try to kill this nonsense, and hope we won't break too many
devices.

I my headset case, the ABS_MISC axes are created because of some
proprietary usages, so we might not break that many devices.

For backward compatibility, a quirk HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE
is created and can be applied to any device that needs this behavior.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

BUG=chromium:825288
TEST=Build on guado, try connecting MeetUp device and verify it does not
list any extra absolute axes.

(am from https://patchwork.kernel.org/patch/10102635/ and adjust hid.h
to not use BIT() macros but plain constants)
Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Change-Id: Id86933886d98ea4f5d7bb27784876bc7e56501c2
Reviewed-on: https://chromium-review.googlesource.com/1017864
Reviewed-by: Benson Leung <bleung@chromium.org>
(cherry picked from commit 54ef25029f84806e870410b29f88d7ce696653b1)
Reviewed-on: https://chromium-review.googlesource.com/1048949
Reviewed-by: Guenter Roeck <groeck@chromium.org>

[modify] https://crrev.com/742412e7f39aeb8895746657dca8ca25996e6750/drivers/hid/hid-input.c
[modify] https://crrev.com/742412e7f39aeb8895746657dca8ca25996e6750/include/linux/hid.h

Project Member

Comment 31 by bugdroid1@chromium.org, May 9 2018

Labels: merge-merged-chromeos-3.18
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/987c6ba0a02e8a08332fbc2bb82cc8bb96cad278

commit 987c6ba0a02e8a08332fbc2bb82cc8bb96cad278
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Wed May 09 21:40:33 2018

BACKPORT: FROMLIST: HID: input: do not increment usages when a duplicate is found

This is something that bothered us from a long time. When hid-input
doesn't know how to map a usage, it uses *_MISC. But there is something
else which increments the usage if the evdev code is already used.

This leads to few issues:
- some devices may have their ABS_X mapped to ABS_Y if they export a bad
  set of usages (see the DragonRise joysticks IIRC -> fixed in a specific
  HID driver)
- *_MISC + N might (will) conflict with other defined axes (my Logitech
  H800 exports some multitouch axes because of that)
- this prevents to freely add some new evdev usages, because "hey, my
  headset will now report ABS_COFFEE, and it's not coffee capable".

So let's try to kill this nonsense, and hope we won't break too many
devices.

I my headset case, the ABS_MISC axes are created because of some
proprietary usages, so we might not break that many devices.

For backward compatibility, a quirk HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE
is created and can be applied to any device that needs this behavior.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

BUG=chromium:825288
TEST=Build on guado, try connecting MeetUp device and verify it does not
list any extra absolute axes.

(am from https://patchwork.kernel.org/patch/10102635/ and adjust hid.h
to not use BIT() macros but plain constants)
Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Change-Id: Id86933886d98ea4f5d7bb27784876bc7e56501c2
Reviewed-on: https://chromium-review.googlesource.com/1017864
Reviewed-by: Benson Leung <bleung@chromium.org>
(cherry picked from commit 54ef25029f84806e870410b29f88d7ce696653b1)
Reviewed-on: https://chromium-review.googlesource.com/1049045
Reviewed-by: Guenter Roeck <groeck@chromium.org>

[modify] https://crrev.com/987c6ba0a02e8a08332fbc2bb82cc8bb96cad278/drivers/hid/hid-input.c
[modify] https://crrev.com/987c6ba0a02e8a08332fbc2bb82cc8bb96cad278/include/linux/hid.h

Project Member

Comment 32 by bugdroid1@chromium.org, May 9 2018

Labels: merge-merged-chromeos-4.14
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/7b62350248ff9ea7e1a6c4572116cb69b89c71d8

commit 7b62350248ff9ea7e1a6c4572116cb69b89c71d8
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Wed May 09 21:40:24 2018

BACKPORT: FROMLIST: HID: input: do not increment usages when a duplicate is found

This is something that bothered us from a long time. When hid-input
doesn't know how to map a usage, it uses *_MISC. But there is something
else which increments the usage if the evdev code is already used.

This leads to few issues:
- some devices may have their ABS_X mapped to ABS_Y if they export a bad
  set of usages (see the DragonRise joysticks IIRC -> fixed in a specific
  HID driver)
- *_MISC + N might (will) conflict with other defined axes (my Logitech
  H800 exports some multitouch axes because of that)
- this prevents to freely add some new evdev usages, because "hey, my
  headset will now report ABS_COFFEE, and it's not coffee capable".

So let's try to kill this nonsense, and hope we won't break too many
devices.

I my headset case, the ABS_MISC axes are created because of some
proprietary usages, so we might not break that many devices.

For backward compatibility, a quirk HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE
is created and can be applied to any device that needs this behavior.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

BUG=chromium:825288
TEST=Build on guado, try connecting MeetUp device and verify it does not
list any extra absolute axes.

(am from https://patchwork.kernel.org/patch/10102635/ and adjust hid.h
to not use BIT() macros but plain constants)
Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Change-Id: Id86933886d98ea4f5d7bb27784876bc7e56501c2
Reviewed-on: https://chromium-review.googlesource.com/1049121
Reviewed-by: Guenter Roeck <groeck@chromium.org>

[modify] https://crrev.com/7b62350248ff9ea7e1a6c4572116cb69b89c71d8/drivers/hid/hid-input.c
[modify] https://crrev.com/7b62350248ff9ea7e1a6c4572116cb69b89c71d8/include/linux/hid.h

Labels: -Merge-Review-67 Merge-Rejected-67
Per #29 M67 is locked down for new features.  That was communicated for M67 specifically and per our regular release process.    Once we're in beta we're only approving bug fixes. 

Comment 34 by mikaeld@google.com, May 17 2018

Labels: M-68 Merge-Request-68

Comment 35 by noahp@google.com, May 17 2018

Thanks - We've added M-68 merge request labels. Would be great to get these patches landed there! 
Project Member

Comment 36 by sheriffbot@chromium.org, May 17 2018

Labels: -Merge-Request-68 Merge-Review-68
This bug requires manual review: We don't branch M68 until 2018-05-24.
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), kariahda@(iOS), bhthompson@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Project Member

Comment 37 by bugdroid1@chromium.org, May 19 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/e560639e3e1a9b37598a1fb14b68afe1c85bfdac

commit e560639e3e1a9b37598a1fb14b68afe1c85bfdac
Author: Reilly Grant <reillyg@chromium.org>
Date: Sat May 19 03:08:29 2018

permission_broker: Allow connections to input devices with ABS_MISC

This patch modifies the permission_broker so that Chrome is allowed to open
a connection to the hidraw node of an input device that provides ABS_MISC
events. These events are not considered to be at risk for keylogging.

BUG=chromium:825288
TEST=Ran unit tests

Change-Id: I16971303c07b2ad6b3756b39ab923bf1ce49a23d
Reviewed-on: https://chromium-review.googlesource.com/1040826
Commit-Ready: Reilly Grant <reillyg@chromium.org>
Tested-by: Reilly Grant <reillyg@chromium.org>
Reviewed-by: Jorge Lucangeli Obes <jorgelo@chromium.org>

[modify] https://crrev.com/e560639e3e1a9b37598a1fb14b68afe1c85bfdac/permission_broker/deny_claimed_hidraw_device_rule_unittest.cc
[modify] https://crrev.com/e560639e3e1a9b37598a1fb14b68afe1c85bfdac/permission_broker/deny_claimed_hidraw_device_rule.cc

Labels: -Merge-Review-68
These should already be in 68 as they landed before the branch, no need to merge.

Sign in to add a comment