Git Product home page Git Product logo

iichid's People

Contributors

avg-i avatar henryhu avatar markjdb avatar mrlightningbolt avatar valpackett avatar wulf7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iichid's Issues

Problems with ELAN1200

Here is result of trying this driver on my laptop:

iichid0: HID command I2C_HID_CMD_DESCR at 0x1
iichid0: HID descriptor: 1e 00 00 01 64 01 02 00 03 00 10 00 04 00 00 00 05 00 06 00 f3 04 45 30 11 00 00 00 00 00
iichid0 at addr 0x15 irq 117 on iicbus0
iichid0:   ACPI Hardware ID  : ELAN1200
iichid0:   IICbus addr       : 0x15
iichid0:   HID descriptor reg: 0x01
iichid0: HID command I2C_HID_CMD_SET_POWER(0)
iichid0: HID command I2C_HID_CMD_RESET
iichid0: HID command I2C_HID_REPORT_DESCR at 0x2 with size 356
iichid0: HID report descriptor: 05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02 95 06 81 03 05 01 09 30 09 31 09 38 15 81 25 7f 75 08 95 03 81 06 05 0c 0a 38 02 95 01 81 06 75 08 95 03 81 03 c0 c0 05 0d 09 05 a1 01 85 04 09 22 a1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 75 01 95 02 81 03 95 01 75 04 25 0f 09 51 81 02 05 01 15 00 26 80 0c 75 10 55 0e 65 13 09 30 35 00 46 90 01 95 01 81 02 46 13 01 26 96 08 26 96 08 09 31 81 02 05 0d 15 00 25 64 95 03 c0 55 0c 66 01 10 47 ff ff 00 00 27 ff ff 00 00 75 10 95 01 09 56 81 02 09 54 25 7f 95 01 75 08 81 02 05 09 09 01 25 01 75 01 95 01 81 02 95 07 81 03 09 c5 75 08 95 04 81 03 05 0d 85 02 09 55 09 59 75 04 95 02 25 0f b1 02 85 07 09 60 75 01 95 01 15 00 25 01 b1 02 95 0f b1 03 06 00 ff 06 00 ff 85 06 09 c5 15 00 26 ff 00 75 08 96 00 01 b1 02 85 0d 09 c5 15 00 26 ff 00 75 08 95 04 b1 02 85 0c 09 c6 96 8a 02 75 08 b1 02 85 0b 09 c7 95 80 75 08 b1 02 c0 05 0d 09 0e a1 01 85 03 09 22 a1 00 09 52 15 00 25 0a 75 08 95 02 b1 02 c0 09 22 a1 00 85 05 09 57 09 58 15 00 75 01 95 02 25 03 b1 02 95 0e b1 03 c0 c0
iichid0: allocated irq at 0xfffff80002670000 and rid 0
iichid0: successfully setup interrupt
iichid0: HID command I2C_HID_CMD_SET_POWER(1)
acpi_iichid0: <HID over I2C (ACPI)> on acpi0
hidbus0: <HID bus> on iichid0
hms0 on hidbus0
hms0: 2 buttons and [XYZT] coordinates ID=1
hmt0 on hidbus0
iichid0: HID command I2C_HID_CMD_GET_REPORT 2 (type 3, len 2)
iichid0: response: 04 00 02 05
iichid0: HID command I2C_HID_CMD_GET_REPORT 6 (type 3, len 257)
iichid0: response: 03 01 06 fc 28 fe 84 40 cb 9a 87 0d be 57 3c b6 70 09 88 07 97 2d 2b e3 38 34 b6 6c ed b0 f7 e5 9c f6 c2 2e 84 1b e8 b4 51 78 43 1f 28 4b 7c 2d 53 af fc 47 70 1b 59 6f 74 43 c4 f3 47 18 53 1a a2 a1 71 c7 95 0e 31 55 21 d3 b5 1e e9 0c ba ec b8 89 19 3e b3 af 75 81 9d 53 b9 41 57 f4 6d 39 25 29 7c 87 d9 b4 98 45 7d a7 26 9c 65 3b 85 68 89 d7 3b bd ff 14 67 f2 2b f0 2a 41 54 f0 fd 2c 66 7c f8 c0 8f 33 13 03 f1 d3 c1 0b 89 d9 1b 62 cd 51 b7 80 b8 af 3a 10 c1 8a 5b e8 8a 56 f0 8c aa fa 35 e9 42 c4 d8 55 c3 38 cc 2b 53 5c 69 52 d5 c8 73 02 38 7c 73 b6 41 e7 ff 05 d8 2b 79 9a e2 34 60 8f a3 32 1f 09 78 62 bc 80 e3 0f bd 65 20 08 13 c1 e2 ee 53 2d 86 7e a7 5a c5 d3 7d 98 be 31 48 1f fb da af a2 a8 6a 89 d6 bf f2 d3 32 2a 9a e4 cf 17 b7 b8 f4 e1 33 08 24 8b c4 43 a5 e5 24 c2
hconf0 on hidbus0
iichid0: HID command I2C_HID_CMD_GET_REPORT 3 (type 3, len 3)
iichid0: response: 05 00 03 00 00
iichid0: HID command I2C_HID_CMD_SET_REPORT 3 (type 3, len 3): 03 03 00
hmt0: Multitouch touchpad with 1 button, click-pad
hmt0: 5 contacts with [C] properties. Report range [0:0] - [3200:2198]

Looks promising. However, touching the touchpad results in messages:

iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464

Will be happy to provide any additional info or debug something.

Full featured driver for PlayStation4 DualShock4 controller on IICHID?

Hello world :-)

I have this nice PS4 controller that can work over USB and Bluetooth. It works over USB at this point on FreeBSD with using HID but not all features are supported (accelerometer, touch pad, etc, does not work).

Is it possible to extend this HID driver with additional features using this IICHID project?

How this can be achieved?

Any hints appreciated :-)

Tomek

sysutils/iichid-devel for faster/easier git head testing

Hello world :-)

I can see iichid is under heavy development and gains user interest momentum. As there are lots of new features quickly added that are not yet in the release maybe it would be helpful if port sysutils/iichid-devel was created in order to easily allow quick and easy git head testing for users on their workstations? :-)

Best regards :-)
Tomek

Bad mapping of Xbox 360 Wired controller

  • I plug the controller into the computer, running FreeBSD 13.0 STABLE. dmesg properly detects a Microsoft controller. I manually load up all the modules, just in case (xb360gp, hgame, iichid, usbus, ...).
  • The XBOX button lights flash and then turn themselves off after about 5 turns. Reconnecting it (USB 1.1? black port) will repeat this. The player1 light is meant to stay on, as it does on Windows (same port, as far as I remember), Linux (same port) and the 360 console.
  • The input is tested using emulators (mednafen uses evdev, afaik).
  • Face buttons, bumpers and right axis appear to work. Left axis -X doesn't seem to be registered. The d-pad doesn't work at all. Triggers aren't detected either. Tested using mednafen and nestopia. jstest-gtk won't even find the device.

I wanted to try experimenting with the code to fix it but I am currently unable to. Could anyone here take a look into this?

[REQUEST]: Add support for Precision Touchpad

I recently got a laptop which only supports HID-over-I2C (Synaptics touchpad) and has no PS/2 mouse, so I cannot use the laptop with FreeBSD. Right now I am running Fedora on this laptop.

In the HID-over-I2C bug report, you mentioned:

I have half-completed (it is working for me!) WIP port of wmt for i2c bus https://github.com/wulf7/iichid.
It is relatively easy (~20-30 LOC) to add support for MS-precision protocol touchpads to it but according to some docs enclosed with Darwin driver https://github.com/alexandred/VoodooI2C/blob/master/Documentation/Satellites.md it wont help as many models of touchpads uses proprietary protocol in absolute mode.

I do get iichid entries in dmesg when I tested FreeBSD, but no entries in /dev/input for HID-over-I2C.
Even if the touchpad support is mediocre, please at least implement HID-over-I2C touchpad drivers here.

Handbook / WIKI / manpage

It would be really really nice to spread the news already about this project on Touchpad WIKI and FreeBSD Hanbook :-)

man page would be also nice to have when project gets out from experimental stage :-)

I got here "by accident" while this is very important milestone in FreeBSD HID implementation, thank you!! :-)

If I can help anyhow just let me know! :-)

touchpad on Panasonic Toughbook CF-MX4

Hello world :-)

As we started working on CF-MX4 touchpad in a similar related issue #51 but this does not look like a trivial task I have created a dedicated Issue :-)

Getting back to @wulf7 suggestion:

It is quite possible that this touchpad can enable multitouch only over SMBus.

One thing you can try is to probe touchpad with active multiplexing mode enabled, like Linux does.
Replace 2 with 1 in following snippet. It is around line 6282 of sys/dev/atkbdc/psm.c and rebuild kernel.
Don't forget to remove hw.psm.mux_disabled=1 from /boot/loader.conf

        /* psm has a special support for GenMouse + SynTouchpad combination */
        if (active_ports_count >= 2) {
                for (port = 0; port < KBDC_AUX_MUX_NUM_PORTS; port++) {

So I have changed that psm.c driver recompiled a system (12-STABLE as 12.2-RELEAE currently does not build), created a memstick image to boot from. Log files are attached.

psm-panasonic-cfmx4-dmesg.txt
psm-panasonic-cfmx4-dmesg-full.txt
psm-panasonic-cfmx4-sysctl.txt

hconf does not find input_mode

The new hconf code cannot find the input mode feature on the Pixelbook touchpad…

Parsed descriptor
0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
0x09, 0x02,        // Usage (Mouse)
0xA1, 0x01,        // Collection (Application)
0x85, 0x02,        //   Report ID (2)
0x09, 0x01,        //   Usage (Pointer)
0xA1, 0x00,        //   Collection (Physical)
0x05, 0x09,        //     Usage Page (Button)
0x19, 0x01,        //     Usage Minimum (0x01)
0x29, 0x02,        //     Usage Maximum (0x02)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x02,        //     Report Count (2)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x06,        //     Report Count (6)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x09, 0x31,        //     Usage (Y)
0x15, 0x81,        //     Logical Minimum (-127)
0x25, 0x7F,        //     Logical Maximum (127)
0x75, 0x08,        //     Report Size (8)
0x95, 0x02,        //     Report Count (2)
0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0xC0,              // End Collection
0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x05,        // Usage (Touch Pad)
0xA1, 0x01,        // Collection (Application)
0x85, 0x01,        //   Report ID (1)
0x05, 0x09,        //   Usage Page (Button)
0x19, 0x01,        //   Usage Minimum (0x01)
0x29, 0x01,        //   Usage Maximum (0x01)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0x01,        //   Logical Maximum (1)
0x75, 0x01,        //   Report Size (1)
0x95, 0x01,        //   Report Count (1)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x54,        //   Usage (0x54)
0x25, 0x05,        //   Logical Maximum (5)
0x75, 0x07,        //   Report Size (7)
0x95, 0x01,        //   Report Count (1)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x47,        //     Usage (0x47)
0x09, 0x42,        //     Usage (Tip Switch)
0x09, 0x32,        //     Usage (In Range)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x03,        //     Report Count (3)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x1F,        //     Logical Maximum (31)
0x75, 0x05,        //     Report Size (5)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x06, 0x04,  //     Physical Maximum (1030)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x31,        //     Usage (Y)
0x46, 0xA8, 0x02,  //     Physical Maximum (680)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x09, 0x48,        //     Usage (0x48)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x30,        //     Usage (Tip Pressure)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3F,        //     Usage (Azimuth)
0x16, 0x00, 0x00,  //     Logical Minimum (0)
0x26, 0x68, 0x01,  //     Logical Maximum (360)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x47,        //     Usage (0x47)
0x09, 0x42,        //     Usage (Tip Switch)
0x09, 0x32,        //     Usage (In Range)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x03,        //     Report Count (3)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x1F,        //     Logical Maximum (31)
0x75, 0x05,        //     Report Size (5)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x06, 0x04,  //     Physical Maximum (1030)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x31,        //     Usage (Y)
0x46, 0xA8, 0x02,  //     Physical Maximum (680)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x09, 0x48,        //     Usage (0x48)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x30,        //     Usage (Tip Pressure)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3F,        //     Usage (Azimuth)
0x16, 0x00, 0x00,  //     Logical Minimum (0)
0x26, 0x68, 0x01,  //     Logical Maximum (360)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x47,        //     Usage (0x47)
0x09, 0x42,        //     Usage (Tip Switch)
0x09, 0x32,        //     Usage (In Range)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x03,        //     Report Count (3)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x1F,        //     Logical Maximum (31)
0x75, 0x05,        //     Report Size (5)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x06, 0x04,  //     Physical Maximum (1030)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x31,        //     Usage (Y)
0x46, 0xA8, 0x02,  //     Physical Maximum (680)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x09, 0x48,        //     Usage (0x48)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x30,        //     Usage (Tip Pressure)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3F,        //     Usage (Azimuth)
0x16, 0x00, 0x00,  //     Logical Minimum (0)
0x26, 0x68, 0x01,  //     Logical Maximum (360)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x47,        //     Usage (0x47)
0x09, 0x42,        //     Usage (Tip Switch)
0x09, 0x32,        //     Usage (In Range)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x03,        //     Report Count (3)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x1F,        //     Logical Maximum (31)
0x75, 0x05,        //     Report Size (5)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x06, 0x04,  //     Physical Maximum (1030)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x31,        //     Usage (Y)
0x46, 0xA8, 0x02,  //     Physical Maximum (680)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x09, 0x48,        //     Usage (0x48)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x30,        //     Usage (Tip Pressure)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3F,        //     Usage (Azimuth)
0x16, 0x00, 0x00,  //     Logical Minimum (0)
0x26, 0x68, 0x01,  //     Logical Maximum (360)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x47,        //     Usage (0x47)
0x09, 0x42,        //     Usage (Tip Switch)
0x09, 0x32,        //     Usage (In Range)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x03,        //     Report Count (3)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x1F,        //     Logical Maximum (31)
0x75, 0x05,        //     Report Size (5)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x06, 0x04,  //     Physical Maximum (1030)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x31,        //     Usage (Y)
0x46, 0xA8, 0x02,  //     Physical Maximum (680)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x26, 0x80, 0x33,  //     Logical Maximum (13184)
0x09, 0x48,        //     Usage (0x48)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x26, 0x00, 0x22,  //     Logical Maximum (8704)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x30,        //     Usage (Tip Pressure)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3F,        //     Usage (Azimuth)
0x16, 0x00, 0x00,  //     Logical Minimum (0)
0x26, 0x68, 0x01,  //     Logical Maximum (360)
0x75, 0x10,        //     Report Size (16)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x55, 0x0C,        //   Unit Exponent (-4)
0x66, 0x01, 0x10,  //   Unit (System: SI Linear, Time: Seconds)
0x47, 0xFF, 0xFF, 0x00, 0x00,  //   Physical Maximum (65534)
0x27, 0xFF, 0xFF, 0x00, 0x00,  //   Logical Maximum (65534)
0x75, 0x10,        //   Report Size (16)
0x95, 0x01,        //   Report Count (1)
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x56,        //   Usage (0x56)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //   Usage Page (Digitizer)
0x85, 0x0A,        //   Report ID (10)
0x09, 0x55,        //   Usage (0x55)
0x09, 0x59,        //   Usage (0x59)
0x75, 0x08,        //   Report Size (8)
0x95, 0x02,        //   Report Count (2)
0x25, 0x0F,        //   Logical Maximum (15)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x06, 0x00, 0xFF,  //   Usage Page (Vendor Defined 0xFF00)
0x85, 0x0B,        //   Report ID (11)
0x09, 0xC5,        //   Usage (0xC5)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x96, 0x00, 0x01,  //   Report Count (256)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection
0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x0E,        // Usage (0x0E)
0xA1, 0x01,        // Collection (Application)
0x85, 0x0C,        //   Report ID (12)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x52,        //     Usage (0x52)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x0F,        //     Logical Maximum (15)
0x75, 0x08,        //     Report Size (8)
0x95, 0x01,        //     Report Count (1)
0xB1, 0x02,        //     Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              //   End Collection
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x00,        //   Collection (Physical)
0x85, 0x0D,        //     Report ID (13)
0x09, 0x57,        //     Usage (0x57)
0x09, 0x58,        //     Usage (0x58)
0x75, 0x04,        //     Report Size (4)
0x95, 0x02,        //     Report Count (2)
0x25, 0x01,        //     Logical Maximum (1)
0xB1, 0x02,        //     Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              //   End Collection
0xC0,              // End Collection

// 702 bytes

Added some debug prints: the HID_TLC_FOREACH_ITEM loop does not do any iterations at all.

Only adding back the old-style loop from hmt helped.

Working hack code
static int
hconf_attach(device_t dev)
{
	struct hconf_softc *sc = device_get_softc(dev);
	const struct hid_device_info *hw = hid_get_device_info(dev);
	uint32_t flags;
	void *d_ptr;
	uint16_t d_len;
	uint8_t tlc_index;
	int error;

	device_set_desc(dev, hw->name);

	error = hid_get_report_descr(dev, &d_ptr, &d_len);
	if (error) {
		device_printf(dev, "could not retrieve report descriptor from "
		    "device: %d\n", error);
		return (ENXIO);
	}

	sc->dev = dev;

	tlc_index = hidbus_get_index(dev);

	/* Parse features for input mode switch */
	if (hid_tlc_locate(d_ptr, d_len,
	    HID_USAGE2(HUP_DIGITIZERS, HUD_CONFIG), hid_feature, tlc_index,
	    0, &sc->input_mode_loc, &flags, &sc->input_mode_rid, NULL) &&
	    (flags & (HIO_VARIABLE | HIO_RELATIVE)) == HIO_VARIABLE)
		sc->input_mode_rlen = hid_report_size_1(d_ptr, d_len,
		    hid_feature, sc->input_mode_rid);
	else {
		device_printf(dev,"failed to locate new style\n");
		bool conf_coll = false;
		struct hid_item hi;
		struct hid_data *hd = hid_start_parse(d_ptr, d_len, 1 << hid_feature);
		while (hid_get_item(hd, &hi)) {
			switch (hi.kind) {
			case hid_collection:
				if (hi.collevel == 1 && hi.usage == HID_USAGE2(HUP_DIGITIZERS, HUD_CONFIG))
					conf_coll = true;
				break;
			case hid_endcollection:
				if (hi.collevel == 0 && conf_coll)
					conf_coll = false;
				break;
			case hid_feature:
				if (conf_coll && hi.usage == HID_USAGE2(HUP_DIGITIZERS, HUD_INPUT_MODE)) {
					sc->input_mode_rid = hi.report_ID;
					if (sc == NULL) {
						device_printf(dev,"failed to locate old style\n");
						hid_end_parse(hd);
						break;
					}
					sc->input_mode_loc = hi.loc;
					sc->input_mode_rlen = hid_report_size_1(d_ptr, d_len,
					    hid_feature, sc->input_mode_rid);
				}
			default: break;
			}
		}
		hid_end_parse(hd);
	}

	return (0);
}

Won't attach to Xbox 360 controller

I'm on 12.2-RELEASE. I've tried iichid 0.0.3 from ports and the code from Github as of today. In either case, when I load iichid and plug in the controller, the output from dmesg is

ugen3.3: at usbus3
uhid0 on uhub3
uhid0: <Microsoft Corporation Controller, rev 2.00/1.10, addr 3> on usbus3
uhid0: at uhub3, port 2, addr 3 (disconnected)
uhid0: detached
usbhid0 on uhub3
usbhid0: <Microsoft Corporation Controller, rev 2.00/1.10, addr 3> on usbus3
hidbus0: on usbhid0
xb360gp0: <XBox 360 Gamepad> on hidbus0
hidraw0: on hidbus0
hidbus0: failed to attach child: error 6
xb360gp0: detached
hidraw0: detached
device_attach: hidbus0 attach returned 6

mouse drag

Thank you very much for this nice software.

I'm now using iichid daily on my Fujitsu notebook FMV WD2U with polling mode (it seems this machine requires GPIO interrupt).

Though I'm not sure whether it is related to iichid or not, I'm experiencing a small problem below.

In a drag motion (moving cursor with a button pressed), it sometimes happens a single stroke is not enough for the desired cursor motion. In this case, one needs to release the finger from the touch-pad once and continue the drag motion from the new point on the touch-pad, while the button is kept pressed. My problem is that sometimes (approx. once in 10 times) the second touch of the finger to the touch-pad makes the cursor returns to its previous original position, not retains the moved position. This is rather annoying.

Is there any way to avoid the cursor returning to its original position during the drag?

panic: device_unbusy: called for non-busy device pci0

iichid_intr → iicbus_release_bus → device_unbusy (recursively 4 times)

Something went wrong with this after updating -CURRENT..

I don't see anything wrong in the iicbus_request_bus / iicbus_release_bus code, nor the code using them here.

For now I've replaced the panic() with a print (the only downside is I can't unload iichid, it says "Device busy" now). I can see that this happens both on pci0 and iichid1, the busy field is non-zero, the state is DS_ATTACHED. Looks like a weird combination. This is right after successfully setup interrupt.

iichid1 is that Google trackpad btw.

// hmm, why isn't the !sc->power_on check done before request_bus? request and immediately release looks silly..

AmazonBasics Wired Keyboard issue

Hello. The version in ports didn't worked for me, so I've sticked to the github and worked so far. Some weeks ago I had an issue with my hdd and had to reinstall freebsd. No big deal, I have backups of my known good configurations so i did my configuration again, but this time when I start sddm only the mouse works, the keyboard doesn't wok. Doesn't matter if I load the modules later or in /boot/loader.conf (I've sticked to the /etc/rc.conf for now because I can enter via single user to comment the line instead of using a usb stick to fix it). I've also created a /usr/local/etc/rc.d/usbprobe to just run usbconfig at boot to see if the keyboard re-detect with iichid without success. If I load the modules manually after the X startup, the driver loads fine without extra output.

I'll attach the files for debug.

dmesg.txt
pciconf.txt
usbconfig.txt
devinfo.txt

touchpad buttons

Thank you very much again for the nice program.

After successful built in 13-CURRENT and 12-STABLE), the touchpad on my Fujitsu WU2/D2 laptop mostly works, but there remains an annoying problem.

The physical left button is recognized as the right button, and the physical right button is recognized as the middle button. Though this can be rectified by the button mapping fascilities, there is another problem: the middle button emulation in libinput doesn't work. I guess this emulation assumes the physical buttons were naturally recognized as the left and right buttons.

The button recognition seems to be done in hmt.c around HMT_FOREACH_BUTTONS macro. In my case, the attached patch
hmt.diff.txt
solved all the problems: the buttons are recognized correctly, and the middle button emulation works fine.

The attached patch also tells us a bit how the driver recognizes the buttons. Note BTN_MOUSE et al, are defined in /usr/include/dev/evdev/input-event-codes.h as

BTN_MOUSE 0x110
BTN_LEFT 0x110
BTN_RIGHT 0x111
BTN_MIDDLE 0x112

What the patch does is to shift
BTN_RIGHT and BTN_MIDDLE
to
BTN_LEFT and BTN_RIGHT

Use x.y.z version scheme and add git tags

I'm about to land a sysutils/iichid port via FreeBSD Review 23615 and it would be handy going forward to have an x.y.z version scheme set for the code, with git tags added so that the port can fetch using those tags instead of git commit hash

The expectation with the port, is that even if/when iichid lands in base, that the port will continue to serve as an easy test method for in development iichid code, in advance of updates landing in base, to facilitate early feedback from users for new features and bugfixes alike.

We can start with 0.0.1 for the current code (or another x.y.z version if you think its more suitable)

building with 13-CURRENT

Thank you very much for this nice software.

I recently bought a new laptop Fujitsu WU2/D2 which has no PS/2 interface for its built-in touchpad. In addition, it has a relatively new Cannon Point-LP Serial IO I2C Controller which has not been supported yet by ig4 in 12.1-RELEASE. So I need to use iichid with 13-CURRENT.

kbd.c of iichid uses genkbd_diag() and genkbd_get_fkeystr() which used to be defined in /usr/src/sys/dev/kdb/kbdreg.h. However, at some moment (probably Dec. 16, 2019), these functions become static in 13-CURRENT and the definitions in kbdreg.h were removed.

During the build of iichid with 13-CURRENT (I used the snapshot FreeBSD-13.0-CURRENT-amd64-20200116-r356767), the compiler suggested the usage of kbdd_diag an dkbdd_get_fkeystr instead. (I don't know how the compiler knew this...)

Anyway the patch below allows the build successful. I haven't checked whether this change affects the functionality of the program, though.


*** hkbd.c.orig Tue Dec 17 07:29:04 2019
--- hkbd.c Sat Jan 18 01:43:57 2020


*** 1117,1123 ****
sc->sc_flags |= HKBD_FLAG_ATTACHED;

if (bootverbose) {

! genkbd_diag(kbd, bootverbose);
}

/* start the keyboard */

--- 1117,1123 ----
sc->sc_flags |= HKBD_FLAG_ATTACHED;

if (bootverbose) {

! kbdd_diag(kbd, bootverbose);
}

/* start the keyboard */

*** 2077,2085 ****
.clear_state = &hkbd_clear_state,
.get_state = &hkbd_get_state,
.set_state = &hkbd_set_state,
! .get_fkeystr = &genkbd_get_fkeystr,
.poll = &hkbd_poll,
! .diag = &genkbd_diag,
};

KEYBOARD_DRIVER(hkbd, hkbdsw, hkbd_configure);
--- 2077,2085 ----
.clear_state = &hkbd_clear_state,
.get_state = &hkbd_get_state,
.set_state = &hkbd_set_state,
! .get_fkeystr = &kbdd_get_fkeystr,
.poll = &hkbd_poll,
! .diag = &kbdd_diag,
};

KEYBOARD_DRIVER(hkbd, hkbdsw, hkbd_configure);

Tapping or Clicking not working on HP Specte x360 13-ap0043dx

First off, thank you so much for your work on this repository and the previous HP Synaptics patches you wrote.

I recently got a HP Spectre x360 13-ap0043dx as a gift. Unlike my previous EliteBooks (which were all eBay refurbs), the Spectre (meaning my laptop, not the vulnerability) was bought brand-new.

The touchpad is a Synaptics I2C-only (meaning no PS/2) model and I am unable to tap or click. The Spectre also has an Elantech I2C touchscreen which works fine.

However, I am able to touch using the touchscreen, and move the cursor and scroll up/down using the touchpad.

Here are the attached files:

I am using the following patches:

If you need more information,

The self-written patches have been posted to Bugzilla.

[WCOM50C1] Touch end events lost

hi, thanks for the work!

The Google Pixelbook has a Wacom touchscreen that supports both fingers and a pen:

Parsed Descriptor
0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x04,        // Usage (Touch Screen)
0xA1, 0x01,        // Collection (Application)
0x85, 0x0C,        //   Report ID (12)
0x95, 0x01,        //   Report Count (1)
0x75, 0x08,        //   Report Size (8)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x15, 0x00,        //   Logical Minimum (0)
0x81, 0x03,        //   Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x54,        //   Usage (0x54)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x47,        //     Usage (0x47)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x05,        //     Report Count (5)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x10,        //     Report Size (16)
0x09, 0x51,        //     Usage (0x51)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0xFF, 0x00,  //     Physical Maximum (255)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x55, 0x0F,        //     Unit Exponent (-1)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //     Usage (X)
0x26, 0x80, 0x28,  //     Logical Maximum (10368)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x20, 0x0A,  //     Physical Maximum (2592)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x46, 0xC0, 0x06,  //     Physical Maximum (1728)
0x09, 0x31,        //     Usage (Y)
0x26, 0x00, 0x1B,  //     Logical Maximum (6912)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x45, 0x00,        //     Physical Maximum (0)
0x65, 0x00,        //     Unit (None)
0x55, 0x00,        //     Unit Exponent (0)
0x75, 0x08,        //     Report Size (8)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x30,        //     Usage (Tip Pressure)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x47,        //     Usage (0x47)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x05,        //     Report Count (5)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x10,        //     Report Size (16)
0x09, 0x51,        //     Usage (0x51)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0xFF, 0x00,  //     Physical Maximum (255)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x55, 0x0F,        //     Unit Exponent (-1)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //     Usage (X)
0x26, 0x80, 0x28,  //     Logical Maximum (10368)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x20, 0x0A,  //     Physical Maximum (2592)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x46, 0xC0, 0x06,  //     Physical Maximum (1728)
0x09, 0x31,        //     Usage (Y)
0x26, 0x00, 0x1B,  //     Logical Maximum (6912)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x45, 0x00,        //     Physical Maximum (0)
0x65, 0x00,        //     Unit (None)
0x55, 0x00,        //     Unit Exponent (0)
0x75, 0x08,        //     Report Size (8)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x30,        //     Usage (Tip Pressure)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x47,        //     Usage (0x47)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x05,        //     Report Count (5)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x10,        //     Report Size (16)
0x09, 0x51,        //     Usage (0x51)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0xFF, 0x00,  //     Physical Maximum (255)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x55, 0x0F,        //     Unit Exponent (-1)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //     Usage (X)
0x26, 0x80, 0x28,  //     Logical Maximum (10368)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x20, 0x0A,  //     Physical Maximum (2592)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x46, 0xC0, 0x06,  //     Physical Maximum (1728)
0x09, 0x31,        //     Usage (Y)
0x26, 0x00, 0x1B,  //     Logical Maximum (6912)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x45, 0x00,        //     Physical Maximum (0)
0x65, 0x00,        //     Unit (None)
0x55, 0x00,        //     Unit Exponent (0)
0x75, 0x08,        //     Report Size (8)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x30,        //     Usage (Tip Pressure)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x47,        //     Usage (0x47)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x05,        //     Report Count (5)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x10,        //     Report Size (16)
0x09, 0x51,        //     Usage (0x51)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0xFF, 0x00,  //     Physical Maximum (255)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x55, 0x0F,        //     Unit Exponent (-1)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //     Usage (X)
0x26, 0x80, 0x28,  //     Logical Maximum (10368)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x20, 0x0A,  //     Physical Maximum (2592)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x46, 0xC0, 0x06,  //     Physical Maximum (1728)
0x09, 0x31,        //     Usage (Y)
0x26, 0x00, 0x1B,  //     Logical Maximum (6912)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x45, 0x00,        //     Physical Maximum (0)
0x65, 0x00,        //     Unit (None)
0x55, 0x00,        //     Unit Exponent (0)
0x75, 0x08,        //     Report Size (8)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x30,        //     Usage (Tip Pressure)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x47,        //     Usage (0x47)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x05,        //     Report Count (5)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x10,        //     Report Size (16)
0x09, 0x51,        //     Usage (0x51)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0xFF, 0x00,  //     Physical Maximum (255)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x55, 0x0F,        //     Unit Exponent (-1)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //     Usage (X)
0x26, 0x80, 0x28,  //     Logical Maximum (10368)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0x20, 0x0A,  //     Physical Maximum (2592)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x46, 0xC0, 0x06,  //     Physical Maximum (1728)
0x09, 0x31,        //     Usage (Y)
0x26, 0x00, 0x1B,  //     Logical Maximum (6912)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x35, 0x00,        //     Physical Minimum (0)
0x45, 0x00,        //     Physical Maximum (0)
0x65, 0x00,        //     Unit (None)
0x55, 0x00,        //     Unit Exponent (0)
0x75, 0x08,        //     Report Size (8)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x30,        //     Usage (Tip Pressure)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x27, 0xFF, 0xFF, 0x00, 0x00,  //   Logical Maximum (65534)
0x75, 0x10,        //   Report Size (16)
0x95, 0x01,        //   Report Count (1)
0x09, 0x56,        //   Usage (0x56)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x85, 0x0C,        //   Report ID (12)
0x09, 0x55,        //   Usage (0x55)
0x75, 0x08,        //   Report Size (8)
0x95, 0x01,        //   Report Count (1)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x0A,        //   Report ID (10)
0x06, 0x00, 0xFF,  //   Usage Page (Vendor Defined 0xFF00)
0x09, 0xC5,        //   Usage (0xC5)
0x96, 0x00, 0x01,  //   Report Count (256)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection
0x06, 0x11, 0xFF,  // Usage Page (Vendor Defined 0xFF11)
0x09, 0x11,        // Usage (0x11)
0xA1, 0x01,        // Collection (Application)
0x85, 0x03,        //   Report ID (3)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x00,        //     Usage (0x00)
0x75, 0x08,        //     Report Size (8)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x95, 0x36,        //     Report Count (54)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x85, 0x02,        //   Report ID (2)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x01,        //   Report Count (1)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x03,        //   Report ID (3)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x3F,        //   Report Count (63)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x04,        //   Report ID (4)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x0F,        //   Report Count (15)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x07,        //   Report ID (7)
0x09, 0x00,        //   Usage (0x00)
0x96, 0x00, 0x01,  //   Report Count (256)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x08,        //   Report ID (8)
0x09, 0x00,        //   Usage (0x00)
0x96, 0x87, 0x00,  //   Report Count (135)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x09,        //   Report ID (9)
0x09, 0x00,        //   Usage (0x00)
0x96, 0x3F, 0x00,  //   Report Count (63)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x0D,        //   Report ID (13)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x07,        //   Report Count (7)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection
0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x0E,        // Usage (0x0E)
0xA1, 0x01,        // Collection (Application)
0x85, 0x0E,        //   Report ID (14)
0x09, 0x23,        //   Usage (0x23)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x52,        //     Usage (0x52)
0x09, 0x53,        //     Usage (0x53)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x0A,        //     Logical Maximum (10)
0x75, 0x08,        //     Report Size (8)
0x95, 0x02,        //     Report Count (2)
0xB1, 0x02,        //     Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              //   End Collection
0xC0,              // End Collection
0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x02,        // Usage (Pen)
0xA1, 0x01,        // Collection (Application)
0x85, 0x06,        //   Report ID (6)
0xA4,              //   Push
0x09, 0x20,        //     Usage (Stylus)
0xA1, 0x00,        //     Collection (Physical)
0x09, 0x42,        //       Usage (Tip Switch)
0x09, 0x44,        //       Usage (Barrel Switch)
0x09, 0x45,        //       Usage (Eraser)
0x09, 0x3C,        //       Usage (Invert)
0x09, 0x5A,        //       Usage (0x5A)
0x09, 0x32,        //       Usage (In Range)
0x15, 0x00,        //       Logical Minimum (0)
0x25, 0x01,        //       Logical Maximum (1)
0x75, 0x01,        //       Report Size (1)
0x95, 0x06,        //       Report Count (6)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x02,        //       Report Count (2)
0x81, 0x03,        //       Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //       Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //       Usage (X)
0x27, 0x40, 0x65, 0x00, 0x00,  //       Logical Maximum (25919)
0x47, 0x40, 0x65, 0x00, 0x00,  //       Physical Maximum (25919)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x55, 0x0D,        //       Unit Exponent (-3)
0x75, 0x10,        //       Report Size (16)
0x95, 0x01,        //       Report Count (1)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x31,        //       Usage (Y)
0x27, 0x80, 0x43, 0x00, 0x00,  //       Logical Maximum (17279)
0x47, 0x80, 0x43, 0x00, 0x00,  //       Physical Maximum (17279)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x45, 0x00,        //       Physical Maximum (0)
0x65, 0x00,        //       Unit (None)
0x55, 0x00,        //       Unit Exponent (0)
0x05, 0x0D,        //       Usage Page (Digitizer)
0x09, 0x30,        //       Usage (Tip Pressure)
0x26, 0xFF, 0x07,  //       Logical Maximum (2047)
0x75, 0x10,        //       Report Size (16)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x06, 0x00, 0xFF,  //       Usage Page (Vendor Defined 0xFF00)
0x09, 0x5B,        //       Usage (0x5B)
0x16, 0x00, 0x80,  //       Logical Minimum (-32768)
0x26, 0xFF, 0x7F,  //       Logical Maximum (32767)
0x75, 0x10,        //       Report Size (16)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //       Usage Page (Digitizer)
0x09, 0x5B,        //       Usage (0x5B)
0x17, 0x00, 0x00, 0x00, 0x80,  //       Logical Minimum (-2147483649)
0x27, 0xFF, 0xFF, 0xFF, 0x7F,  //       Logical Maximum (2147483646)
0x75, 0x20,        //       Report Size (32)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x06, 0x00, 0xFF,  //       Usage Page (Vendor Defined 0xFF00)
0x09, 0x00,        //       Usage (0x00)
0x75, 0x08,        //       Report Size (8)
0x26, 0xFF, 0x00,  //       Logical Maximum (255)
0x15, 0x00,        //       Logical Minimum (0)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //       Usage Page (Digitizer)
0x09, 0x3B,        //       Usage (Battery Strength)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x65, 0x14,        //       Unit (System: English Rotation, Length: Centimeter)
0x55, 0x00,        //       Unit Exponent (0)
0x16, 0xA6, 0xFF,  //       Logical Minimum (-90)
0x26, 0x5A, 0x00,  //       Logical Maximum (90)
0x36, 0xA6, 0xFF,  //       Physical Minimum (-90)
0x46, 0x5A, 0x00,  //       Physical Maximum (90)
0x75, 0x08,        //       Report Size (8)
0x09, 0x3D,        //       Usage (X Tilt)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3E,        //       Usage (Y Tilt)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //       Logical Minimum (0)
0x27, 0xFF, 0xFF, 0x00, 0x00,  //       Logical Maximum (65534)
0x35, 0x00,        //       Physical Minimum (0)
0x47, 0xFF, 0xFF, 0x00, 0x00,  //       Physical Maximum (65534)
0x66, 0x01, 0x10,  //       Unit (System: SI Linear, Time: Seconds)
0x55, 0x0C,        //       Unit Exponent (-4)
0x75, 0x10,        //       Report Size (16)
0x09, 0x56,        //       Usage (0x56)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //     End Collection
0xB4,              //   Pop
0x85, 0x13,        //   Report ID (19)
0x06, 0x00, 0xFF,  //   Usage Page (Vendor Defined 0xFF00)
0x09, 0xC5,        //   Usage (0xC5)
0x96, 0x00, 0x01,  //   Report Count (256)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection
0x06, 0x11, 0xFF,  // Usage Page (Vendor Defined 0xFF11)
0x09, 0x02,        // Usage (0x02)
0xA1, 0x01,        // Collection (Application)
0x85, 0x0B,        //   Report ID (11)
0xA4,              //   Push
0x09, 0x20,        //     Usage (0x20)
0xA1, 0x00,        //     Collection (Physical)
0x09, 0x42,        //       Usage (0x42)
0x09, 0x44,        //       Usage (0x44)
0x09, 0x45,        //       Usage (0x45)
0x09, 0x3C,        //       Usage (0x3C)
0x09, 0x5A,        //       Usage (0x5A)
0x09, 0x32,        //       Usage (0x32)
0x15, 0x00,        //       Logical Minimum (0)
0x25, 0x01,        //       Logical Maximum (1)
0x75, 0x01,        //       Report Size (1)
0x95, 0x06,        //       Report Count (6)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x02,        //       Report Count (2)
0x81, 0x03,        //       Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //       Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //       Usage (X)
0x27, 0x40, 0x65, 0x00, 0x00,  //       Logical Maximum (25919)
0x47, 0x40, 0x65, 0x00, 0x00,  //       Physical Maximum (25919)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x55, 0x0D,        //       Unit Exponent (-3)
0x75, 0x10,        //       Report Size (16)
0x95, 0x01,        //       Report Count (1)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x31,        //       Usage (Y)
0x27, 0x80, 0x43, 0x00, 0x00,  //       Logical Maximum (17279)
0x47, 0x80, 0x43, 0x00, 0x00,  //       Physical Maximum (17279)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x45, 0x00,        //       Physical Maximum (0)
0x65, 0x00,        //       Unit (None)
0x55, 0x00,        //       Unit Exponent (0)
0x05, 0x0D,        //       Usage Page (Digitizer)
0x09, 0x30,        //       Usage (Tip Pressure)
0x26, 0xFF, 0x07,  //       Logical Maximum (2047)
0x75, 0x10,        //       Report Size (16)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x06, 0x00, 0xFF,  //       Usage Page (Vendor Defined 0xFF00)
0x09, 0x5B,        //       Usage (0x5B)
0x16, 0x00, 0x80,  //       Logical Minimum (-32768)
0x26, 0xFF, 0x7F,  //       Logical Maximum (32767)
0x75, 0x10,        //       Report Size (16)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //       Usage Page (Digitizer)
0x09, 0x5B,        //       Usage (0x5B)
0x17, 0x00, 0x00, 0x00, 0x80,  //       Logical Minimum (-2147483649)
0x27, 0xFF, 0xFF, 0xFF, 0x7F,  //       Logical Maximum (2147483646)
0x75, 0x20,        //       Report Size (32)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x06, 0x00, 0xFF,  //       Usage Page (Vendor Defined 0xFF00)
0x09, 0x00,        //       Usage (0x00)
0x75, 0x08,        //       Report Size (8)
0x26, 0xFF, 0x00,  //       Logical Maximum (255)
0x15, 0x00,        //       Logical Minimum (0)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0D,        //       Usage Page (Digitizer)
0x09, 0x3B,        //       Usage (Battery Strength)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x65, 0x14,        //       Unit (System: English Rotation, Length: Centimeter)
0x55, 0x00,        //       Unit Exponent (0)
0x16, 0xA6, 0xFF,  //       Logical Minimum (-90)
0x26, 0x5A, 0x00,  //       Logical Maximum (90)
0x36, 0xA6, 0xFF,  //       Physical Minimum (-90)
0x46, 0x5A, 0x00,  //       Physical Maximum (90)
0x75, 0x08,        //       Report Size (8)
0x09, 0x3D,        //       Usage (X Tilt)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3E,        //       Usage (Y Tilt)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x00,        //       Logical Minimum (0)
0x27, 0xFF, 0xFF, 0x00, 0x00,  //       Logical Maximum (65534)
0x35, 0x00,        //       Physical Minimum (0)
0x47, 0xFF, 0xFF, 0x00, 0x00,  //       Physical Maximum (65534)
0x66, 0x01, 0x10,  //       Unit (System: SI Linear, Time: Seconds)
0x55, 0x0C,        //       Unit Exponent (-4)
0x75, 0x10,        //       Report Size (16)
0x09, 0x56,        //       Usage (0x56)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //     End Collection
0xB4,              //   Pop
0x06, 0x00, 0xFF,  //   Usage Page (Vendor Defined 0xFF00)
0x75, 0x08,        //   Report Size (8)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x85, 0x05,        //   Report ID (5)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x3A,        //   Report Count (58)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x85, 0x10,        //   Report ID (16)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x14,        //   Report Count (20)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x85, 0x0F,        //   Report ID (15)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x27,        //   Report Count (39)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x85, 0x0F,        //   Report ID (15)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x07,        //   Report Count (7)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x11,        //   Report ID (17)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x09,        //   Report Count (9)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x05,        //   Report ID (5)
0x09, 0x00,        //   Usage (0x00)
0x95, 0x08,        //   Report Count (8)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x10,        //   Report ID (16)
0x09, 0x00,        //   Usage (0x00)
0x96, 0x3F, 0x00,  //   Report Count (63)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x0B,        //   Report ID (11)
0x09, 0x00,        //   Usage (0x00)
0x96, 0x3F, 0x00,  //   Report Count (63)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection
0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
0x09, 0x02,        // Usage (Mouse)
0xA1, 0x01,        // Collection (Application)
0x85, 0x01,        //   Report ID (1)
0x09, 0x01,        //   Usage (Pointer)
0xA1, 0x00,        //   Collection (Physical)
0x05, 0x09,        //     Usage Page (Button)
0x19, 0x01,        //     Usage Minimum (0x01)
0x29, 0x02,        //     Usage Maximum (0x02)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x95, 0x02,        //     Report Count (2)
0x75, 0x01,        //     Report Size (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,NoWCOM50C1 Null Position)
0x95, 0x01,        //     Report Count (1)
0x75, 0x06,        //     Report Size (6)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x09, 0x31,        //     Usage (Y)
0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)
0x75, 0x10,        //     Report Size (16)
0x95, 0x02,        //     Report Count (2)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0xC0,              // End Collection

// 1289 bytes

The finger part works, but touches often get stuck without an end event.. Especially with 3 fingers, the third touch does not end. upd: there is an end event it seems, but something might be wrong with frames..??

(also there's a touchpad on this laptop but the ig4 is not seeing anything on its bus, I'm investigating that)

Dell 7490 touchpad strange cursor movement

Hi!
First of all - thank for your great job!

I installed iichid on fresh FreeBSD 12.1 with latest XOrg package (1.20.7) on Dell 7490 and pointstick and external mouse are working as expected (cursor moving, buttons) without any configuration.
Problem is just with touchpad - there are lags beetwen start(end) move finger and cursor and cursor speed is really slow. I tryed to tune some parameters throu xorg.conf (AccelProfiles, AccelSpeed, etc.), but without success.

Do you have any idea?
Some files: dmesg.log, Xorg.0.log, libinput.log

Ignore interfaces taken by uaudio

When uaudio recognizes volume keys on an audio device, it does this:

	/* prevent the uhid driver from attaching */
	usbd_set_parent_iface(uaa->device, sc->sc_hid.iface_index,
	    sc->sc_mixer_iface_index);

But that doesn't seem to prevent usbhid from attaching :/

With nothing done to address this issue, this results in weird behavior of these keys — as both uaudio and hcons grab events from the same endpoint, the KEY_VOLUMEDOWN/UP keys don't consistently get released, it's a complete mess.

I have submitted a patch making uaudio's HID support optional (via sysctl), but regardless of that, usbhid should not attach when uaudio does take the interface.

ThinkPad X1 Carbon Gen7: trackpad randomly stops responding for some time

I followed the installation instructions on the README and when I kldloaded iichid my trackpad did work though not consistently. Sometimes the trackpad just stops responding to movement. Sometimes it's fixed by waiting or clicking around. Otherwise I basically have to use the trackpoint. Are there any files/info I can provide to help debug this issue? I'm running on a 12.2-STABLE compiled a few days ago.

My NKRO keyboard does not work properly

I have an Obins Anne Pro 1 http://en.obins.net/anne-pro . When it changes to NKRO mode after booting the layout gets weird, for example I got "a" by pressing backspace or "w" and I got "e" by pressing "x". Most of the keys don't work at all. The keyboard works properly on Win7 x64 and in the UEFI, boot menu, rescue shell. People on the freebsd mail list suggested to write here.

Issue with Logitech mouse key mapping

My mouse has 2 buttons mapped to key sequences (alt+f4 and ctrl+w)
With the iichid driver, these buttons no longer work. They worked fine with ukbd.
Through xev, we can see that the key sequence changed:

KeyPress event, serial 40, synthetic NO, window 0x5400001,
root 0x1e8, subw 0x5400002, time 378209, (33,59), root:(33,112),
state 0x0, keycode 25 (keysym 0x77, w), same_screen YES,
XLookupString gives 1 bytes: (77) "w"
XmbLookupString gives 1 bytes: (77) "w"
XFilterEvent returns: False

KeyPress event, serial 40, synthetic NO, window 0x5400001,
root 0x1e8, subw 0x5400002, time 378209, (33,59), root:(33,112),
state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

KeyRelease event, serial 41, synthetic NO, window 0x5400001,
root 0x1e8, subw 0x5400002, time 378210, (33,59), root:(33,112),
state 0x4, keycode 25 (keysym 0x77, w), same_screen YES,
XLookupString gives 1 bytes: (17) ""
XFilterEvent returns: False

KeyRelease event, serial 41, synthetic NO, window 0x5400001,
root 0x1e8, subw 0x5400002, time 378210, (33,59), root:(33,112),
state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

So now it becomes w down - ctrl down - w up - ctrl up, while I believe that the expected sequence is ctrl down - w down - w up - ctrl up.

Asus C300 report length too big, trackpad only works for a little bit when ignored

Hey!

I've been trying to debug this for a little while and I admit defeat; my Elantech touchpad (_HID=ELAN0000) doesn't work under what is essentially 14-CURRENT on my Asus C300 Chromebook.

Compiling with IICHID_DEBUG and setting hw.iichid.debug=5, I'm getting a lot of input report too big. requested=28 received=32 messages in dmesg. I'll try to read into this a little more tomorrow, but so far this seems odd to me, as IETP_REPORT_LEN_LO is 32, so 32 bytes should be requested, not 28.

I added a len += 4 in ietp_intr to see if I could go any further, and it seems like it works fine-ish for a little bit after running libinput debug-events, before crapping itself, giving garbage data, and, eventually, straight up dying.

Where could I go from here wrt debugging?

Wishing you a happy new year 🍾🥂

PS: I have a sneaking suspicion that this may be related to this issue somehow, as I believe some communication with the GPU is done through the same I²C controller. I may be completely wrong about this though.

ACPI is not working properly

I'm an owner of GL553VD ROG Asus laptop and I recently migrated to FreeBSD. I installed this great driver, which helped me to work with the TouchPad. But the power manager in KDE is not recognizing the battery. Also the Fn keys are not working. So cannot change the brightness. I'm not sure if my problems are related to this repository, but let's give it a shot :) Also I believe the following information would help you as dmesg throws a lot of errors. Thank you for your time.

#devinfo -rv                                                                                                                                                                                                                           
nexus0
  cryptosoft0
  efirtc0
  apic0
      I/O memory addresses:
          0xfec00000-0xfec0001f
  ram0
      I/O memory addresses:
          0x0-0x57fff
          0x59000-0x9cfff
          0x100000-0x6d316fff
          0x6d31c000-0x79d25fff
          0x7b3fe000-0x7b3fefff
          0x100000000-0x47effffff
  aesni0
  acpi0
      Interrupt request lines:
          0x9
      I/O ports:
          0x2e-0x2f
          0x4e-0x4f
          0x61
          0x63
          0x65
          0x67
          0x70
          0x80
          0x92
          0xb2-0xb3
          0x680-0x69f
          0x800-0x87f
          0x164e-0x164f
          0x1800-0x18fe
          0xff00-0xfffe
          0xffff
      I/O memory addresses:
          0xdffe0000-0xdfffffff
          0xe0000000-0xefffffff
          0xfed10000-0xfed17fff
          0xfed18000-0xfed18fff
          0xfed19000-0xfed19fff
          0xfed20000-0xfed3ffff
          0xfed45000-0xfed8ffff
          0xfed90000-0xfed93fff
          0xfee00000-0xfeefffff
          0xff000000-0xffffffff
    acpi_ec0 pnpinfo _HID=PNP0C09 _UID=0 at handle=\_SB_.PCI0.LPCB.EC0_
        I/O ports:
            0x62
            0x66
    cpu0 pnpinfo _HID=none _UID=0 at handle=\_PR_.CPU0
      acpi_perf0
      est0
      p4tcc0
      coretemp0
      cpufreq0
    cpu1 pnpinfo _HID=none _UID=0 at handle=\_PR_.CPU1
      acpi_perf1
      est1
      p4tcc1
      coretemp1
      cpufreq1
    cpu2 pnpinfo _HID=none _UID=0 at handle=\_PR_.CPU2
      acpi_perf2
      est2
      p4tcc2
      coretemp2
      cpufreq2
    cpu3 pnpinfo _HID=none _UID=0 at handle=\_PR_.CPU3
      acpi_perf3
      est3
      p4tcc3
      coretemp3
      cpufreq3
    cpu4 pnpinfo _HID=none _UID=0 at handle=\_PR_.CPU4
      acpi_perf4
      est4
      p4tcc4
      coretemp4
      cpufreq4
    cpu5 pnpinfo _HID=none _UID=0 at handle=\_PR_.CPU5
      acpi_perf5
      est5
      p4tcc5
      coretemp5
      cpufreq5
    cpu6 pnpinfo _HID=none _UID=0 at handle=\_PR_.CPU6
      acpi_perf6
      est6
      p4tcc6
      coretemp6
      cpufreq6
    cpu7 pnpinfo _HID=none _UID=0 at handle=\_PR_.CPU7
      acpi_perf7
      est7
      p4tcc7
      coretemp7
      cpufreq7
    pcib0 pnpinfo _HID=PNP0A08 _UID=0 at handle=\_SB_.PCI0
        I/O ports:
            0xcf8-0xcff
      pci0
          PCI domain 0 bus numbers:
              0
        hostb0 pnpinfo vendor=0x8086 device=0x5910 subvendor=0x1043 subdevice=0x15e0 class=0x060000 at slot=0 function=0 dbsf=pci0:0:0:0 handle=\_SB_.PCI0.DSC0
        pcib1 pnpinfo vendor=0x8086 device=0x1901 subvendor=0x1043 subdevice=0x15e0 class=0x060400 at slot=1 function=0 dbsf=pci0:0:1:0 handle=\_SB_.PCI0.PEG0
            I/O ports:
                0xe000-0xefff
            I/O memory addresses:
                0xc0000000-0xd1ffffff
                0xde000000-0xdf0fffff
            PCI domain 0 bus numbers:
                1
          pci1
              pcib1 bus numbers:
                  1
            vgapci0 pnpinfo vendor=0x10de device=0x1c8d subvendor=0x1043 subdevice=0x15e0 class=0x030200 at slot=0 function=0 dbsf=pci0:1:0:0 handle=\_SB_.PCI0.PEG0.PEGP
                pcib1 I/O port window:
                    0xe000-0xe07f
                pcib1 memory window:
                    0xde000000-0xdeffffff
                pcib1 prefetch window:
                    0xc0000000-0xcfffffff
                    0xd0000000-0xd1ffffff
              drm0
                drm5
                  backlight0
                  drm_dp_aux_dev0
                  i2c0
                drm6
              drmn0
              acpi_video0
        vgapci1 pnpinfo vendor=0x8086 device=0x591b subvendor=0x1043 subdevice=0x15e0 class=0x030000 at slot=2 function=0 dbsf=pci0:0:2:0 handle=\_SB_.PCI0.GFX0
            Interrupt request lines:
                0x111
            I/O ports:
                0xf000-0xf03f
            I/O memory addresses:
                0xb0000000-0xbfffffff
                0xdd000000-0xddffffff
          drm1
          drmn1
            drm128
            drm2
            drm3
            drm4
            graphics0
            fbd1
          acpi_video1
        unknown pnpinfo vendor=0x8086 device=0x1911 subvendor=0x1043 subdevice=0x15e0 class=0x088000 at slot=8 function=0 dbsf=pci0:0:8:0
            I/O memory addresses:
                0xdf530000-0xdf530fff
        xhci0 pnpinfo vendor=0x8086 device=0xa12f subvendor=0x1043 subdevice=0x201f class=0x0c0330 at slot=20 function=0 dbsf=pci0:0:20:0 handle=\_SB_.PCI0.XHC_
            Interrupt request lines:
                0x108
            I/O memory addresses:
                0xdf510000-0xdf51ffff
          usbus0
            uhub0
              ukbd0 pnpinfo vendor=0x0b05 product=0x1854 devclass=0x00 devsubclass=0x00 devproto=0x00 sernum="" release=0x0302 mode=host intclass=0x03 intsubclass=0x01 intprotocol=0x01 at bus=0 hubaddr=1 port=11 devaddr=4 interface=0 ugen=ugen0.4
              ubt0 pnpinfo vendor=0x8087 product=0x0a2a devclass=0xe0 devsubclass=0x01 devproto=0x01 sernum="" release=0x0001 mode=host intclass=0xe0 intsubclass=0x01 intprotocol=0x01 at bus=0 hubaddr=1 port=8 devaddr=3 interface=0 ugen=ugen0.3
        unknown pnpinfo vendor=0x8086 device=0xa131 subvendor=0x1043 subdevice=0x15e0 class=0x118000 at slot=20 function=2 dbsf=pci0:0:20:2
            I/O memory addresses:
                0xdf52f000-0xdf52ffff
        ig4iic_pci0 pnpinfo vendor=0x8086 device=0xa160 subvendor=0x1043 subdevice=0x15e0 class=0x118000 at slot=21 function=0 dbsf=pci0:0:21:0 handle=\_SB_.PCI0.I2C0
            Interrupt request lines:
                0x10
            I/O memory addresses:
                0xdf52e000-0xdf52efff
          iicbus0
            iichid0 at addr=0x15
              hidbus0
                hms0 pnpinfo page=0x0001 usage=0x0002 bus=0x18 vendor=0x04f3 product=0x3045 version=0x0011 at index=0
                hmt0 pnpinfo page=0x000d usage=0x0005 bus=0x18 vendor=0x04f3 product=0x3045 version=0x0011 at index=1
                hconf0 pnpinfo page=0x000d usage=0x000e bus=0x18 vendor=0x04f3 product=0x3045 version=0x0011 at index=2
                hidraw0 pnpinfo page=0x0000 usage=0x0000 bus=0x18 vendor=0x04f3 product=0x3045 version=0x0011 at index=255
        unknown pnpinfo vendor=0x8086 device=0xa13a subvendor=0x1043 subdevice=0x15e0 class=0x078000 at slot=22 function=0 dbsf=pci0:0:22:0 handle=\_SB_.PCI0.HECI
            I/O memory addresses:
                0xdf52d000-0xdf52dfff
        ahci0 pnpinfo vendor=0x8086 device=0xa103 subvendor=0x1043 subdevice=0x15e0 class=0x010601 at slot=23 function=0 dbsf=pci0:0:23:0 handle=\_SB_.PCI0.SAT0
            Interrupt request lines:
                0x109
            I/O ports:
                0xf060-0xf07f
                0xf080-0xf083
                0xf090-0xf097
            I/O memory addresses:
                0xdf528000-0xdf529fff
                0xdf52b000-0xdf52b7ff
                0xdf52c000-0xdf52c0ff
          ahcich0 at channel=0 (disabled)
          ahcich1 at channel=1
              I/O memory addresses:
                  0xdf52b180-0xdf52b1ff
          ahcich2 at channel=2
              I/O memory addresses:
                  0xdf52b200-0xdf52b27f
          ahciem0 at channel=2147483647
        pcib2 pnpinfo vendor=0x8086 device=0xa112 subvendor=0x1043 subdevice=0x15e0 class=0x060400 at slot=28 function=0 dbsf=pci0:0:28:0 handle=\_SB_.PCI0.RP03
            I/O memory addresses:
                0xdf400000-0xdf4fffff
            PCI domain 0 bus numbers:
                2
          pci2
              pcib2 bus numbers:
                  2
            iwm0 pnpinfo vendor=0x8086 device=0x095a subvendor=0x8086 subdevice=0x5010 class=0x028000 at slot=0 function=0 dbsf=pci0:2:0:0 handle=\_SB_.PCI0.RP03.PXSX
                Interrupt request lines:
                    0x112
                pcib2 memory window:
                    0xdf400000-0xdf401fff
        pcib3 pnpinfo vendor=0x8086 device=0xa113 subvendor=0x1043 subdevice=0x15e0 class=0x060400 at slot=28 function=3 dbsf=pci0:0:28:3 handle=\_SB_.PCI0.RP04
            I/O ports:
                0xd000-0xdfff
            I/O memory addresses:
                0xdf300000-0xdf3fffff
            PCI domain 0 bus numbers:
                3
          pci3
              pcib3 bus numbers:
                  3
            re0 pnpinfo vendor=0x10ec device=0x8168 subvendor=0x1043 subdevice=0x200f class=0x020000 at slot=0 function=0 dbsf=pci0:3:0:0 handle=\_SB_.PCI0.RP04.PXSX
                Interrupt request lines:
                    0x10a
                pcib3 I/O port window:
                    0xd000-0xd0ff
                pcib3 memory window:
                    0xdf300000-0xdf303fff
                    0xdf304000-0xdf304fff
              miibus0
                rgephy0 pnpinfo oui=0xe04c model=0x0 rev=0x0 at phyno=1
        pcib4 pnpinfo vendor=0x8086 device=0xa116 subvendor=0x1043 subdevice=0x15e0 class=0x060400 at slot=28 function=6 dbsf=pci0:0:28:6 handle=\_SB_.PCI0.RP07
            I/O memory addresses:
                0xdf200000-0xdf2fffff
            PCI domain 0 bus numbers:
                4
          pci4
              pcib4 bus numbers:
                  4
            unknown pnpinfo vendor=0x10ec device=0x5229 subvendor=0x1043 subdevice=0x202f class=0xff0000 at slot=0 function=0 dbsf=pci0:4:0:0 handle=\_SB_.PCI0.RP07.PXSX
                pcib4 memory window:
                    0xdf200000-0xdf200fff
        pcib5 pnpinfo vendor=0x8086 device=0xa118 subvendor=0x1043 subdevice=0x15e0 class=0x060400 at slot=29 function=0 dbsf=pci0:0:29:0 handle=\_SB_.PCI0.RP09
            I/O memory addresses:
                0xdf100000-0xdf1fffff
            PCI domain 0 bus numbers:
                5
          pci5
              pcib5 bus numbers:
                  5
            nvme0 pnpinfo vendor=0x1179 device=0x010f subvendor=0x1179 subdevice=0x0001 class=0x010802 at slot=0 function=0 dbsf=pci0:5:0:0 handle=\_SB_.PCI0.RP09.PXSX
                Interrupt request lines:
                    0x10b
                    0x10c
                    0x10d
                    0x10e
                    0x10f
                pcib5 memory window:
                    0xdf100000-0xdf103fff
        isab0 pnpinfo vendor=0x8086 device=0xa152 subvendor=0x1043 subdevice=0x15e0 class=0x060100 at slot=31 function=0 dbsf=pci0:0:31:0 handle=\_SB_.PCI0.LPCB
          isa0
            sc0
            vga0
            atkbdc0
                I/O ports:
                    0x60
                    0x64
              atkbd0
                  Interrupt request lines:
                      0x1
              psm0
            fdc0
            ppc0
            uart0
            uart1
        unknown pnpinfo vendor=0x8086 device=0xa121 subvendor=0x1043 subdevice=0x15e0 class=0x058000 at slot=31 function=2 dbsf=pci0:0:31:2 handle=\_SB_.PCI0.PPMC
            I/O memory addresses:
                0xdf524000-0xdf527fff
        hdac0 pnpinfo vendor=0x8086 device=0xa171 subvendor=0x1043 subdevice=0x15e0 class=0x040380 at slot=31 function=3 dbsf=pci0:0:31:3 handle=\_SB_.PCI0.HDAS
            Interrupt request lines:
                0x110
            I/O memory addresses:
                0xdf500000-0xdf50ffff
                0xdf520000-0xdf523fff
          hdacc0 pnpinfo vendor=0x10ec device=0x0235 revision=0x00 stepping=0x02 at cad=0
            hdaa0 pnpinfo type=0x01 subsystem=0x104315e0 at nid=1
              pcm0 at nid=20,27
              pcm1 at nid=33
          hdacc1 pnpinfo vendor=0x8086 device=0x280b revision=0x00 stepping=0x00 at cad=2
            hdaa1 pnpinfo type=0x01 subsystem=0x80860101 at nid=1
              pcm2 at nid=3
        unknown pnpinfo vendor=0x8086 device=0xa123 subvendor=0x1043 subdevice=0x15e0 class=0x0c0500 at slot=31 function=4 dbsf=pci0:0:31:4 handle=\_SB_.PCI0.SBUS
            I/O ports:
                0xf040-0xf05f
            I/O memory addresses:
                0xdf52a000-0xdf52a0ff
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.PEG0.PG00
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.PEG1.PG01
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.PEG2.PG02
    unknown pnpinfo _HID=INT0800 _UID=0 at handle=\_SB_.PCI0.LPCB.FWHD
    hpet0 pnpinfo _HID=PNP0103 _UID=0 at handle=\_SB_.PCI0.LPCB.HPET
        Interrupt request lines:
            0x100
            0x101
            0x102
            0x103
            0x104
            0x105
            0x106
            0x107
        I/O memory addresses:
            0xfed00000-0xfed003ff
    unknown pnpinfo _HID=PNP0000 _UID=0 at handle=\_SB_.PCI0.LPCB.IPIC
        I/O ports:
            0x20-0x21
            0x24-0x25
            0x28-0x29
            0x2c-0x2d
            0x30-0x31
            0x34-0x35
            0x38-0x39
            0x3c-0x3d
            0xa0-0xa1
            0xa4-0xa5
            0xa8-0xa9
            0xac-0xad
            0xb0-0xb1
            0xb4-0xb5
            0xb8-0xb9
            0xbc-0xbd
            0x4d0-0x4d1
    fpupnp0 pnpinfo _HID=PNP0C04 _UID=0 at handle=\_SB_.PCI0.LPCB.MATH
        I/O ports:
            0xf0
    acpi_sysresource0 pnpinfo _HID=PNP0C02 _UID=2 at handle=\_SB_.PCI0.LPCB.LDRC
    acpi_sysresource1 pnpinfo _HID=PNP0C02 _UID=0 at handle=\_SB_.PCI0.LPCB.LDR2
    atrtc0 pnpinfo _HID=PNP0B00 _UID=0 at handle=\_SB_.PCI0.LPCB.RTC_
        Interrupt request lines:
            0x8
    attimer0 pnpinfo _HID=PNP0100 _UID=0 at handle=\_SB_.PCI0.LPCB.TIMR
        Interrupt request lines:
            0x0
        I/O ports:
            0x40-0x43
            0x50-0x53
    acpi_sysresource2 pnpinfo _HID=INT3F0D _UID=0 at handle=\_SB_.PCI0.LPCB.CWDT
    unknown pnpinfo _HID=PNP0C09 _UID=1 at handle=\_SB_.PCI0.LPCB.H_EC (disabled)
    unknown pnpinfo _HID=PNP0C0A _UID=0 at handle=\_SB_.PCI0.LPCB.H_EC.BAT0 (disabled)
    unknown pnpinfo _HID=PNP0C0A _UID=1 at handle=\_SB_.PCI0.LPCB.H_EC.BAT1 (disabled)
    unknown pnpinfo _HID=PNP0C0A _UID=2 at handle=\_SB_.PCI0.LPCB.H_EC.BAT2 (disabled)
    unknown pnpinfo _HID=PNP0C09 _UID=0 at handle=\_SB_.PCI0.LPCB.EC0_ (disabled)
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP09.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP10.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP11.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP12.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP13.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP01.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP02.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP03.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP04.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP05.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP06.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP07.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP08.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP17.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP18.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP19.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP20.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP14.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP15.PXSX.WRST
    unknown pnpinfo _HID=none _UID=0 at handle=\_SB_.PCI0.RP16.PXSX.WRST
    acpi_sysresource3 pnpinfo _HID=PNP0C02 _UID=1 at handle=\_SB_.PCI0.PDRC
    unknown pnpinfo _HID=PNP0C02 _UID=0 at handle=\_SB_.PCI0.PRRE (disabled)
    acpi_sysresource4 pnpinfo _HID=PNP0C02 _UID=0 at handle=\_SB_.PCI0.IOTR
    unknown pnpinfo _HID=INT343E _UID=0 at handle=\_SB_.PCI0.CIO2 (disabled)
    unknown pnpinfo _HID=INT343D _UID=1 at handle=\_SB_.PCI0.TERM (disabled)
    unknown pnpinfo _HID=PNP0C02 _UID=5 at handle=\_SB_.PCI0.SIRC (disabled)
    unknown pnpinfo _HID=INT345D _UID=0 at handle=\_SB_.PCI0.GPI0 (disabled)
    acpi_iichid0 pnpinfo _HID=ELAN1200 _UID=0 at handle=\_SB_.PCI0.I2C0.TPD0
    unknown pnpinfo _HID=INT0000 _UID=1 at handle=\_SB_.PCI0.I2C0.HDAC (disabled)
    unknown pnpinfo _HID=INT3515 _UID=0 at handle=\_SB_.PCI0.I2C0.UCM1 (disabled)
    unknown pnpinfo _HID=INT3515 _UID=1 at handle=\_SB_.PCI0.I2C0.UCM2 (disabled)
    unknown pnpinfo _HID=INT3443 _UID=0 at handle=\_SB_.PCI0.I2C1 (disabled)
    unknown pnpinfo _HID=XXXX0000 _UID=0 at handle=\_SB_.PCI0.I2C1.TPL1 (disabled)
    unknown pnpinfo _HID=IMPJ0003 _UID=1 at handle=\_SB_.PCI0.I2C1.IMP3 (disabled)
    unknown pnpinfo _HID=INT3444 _UID=0 at handle=\_SB_.PCI0.I2C2 (disabled)
    unknown pnpinfo _HID=INT3471 _UID=0 at handle=\_SB_.PCI0.I2C2.CAM0 (disabled)
    unknown pnpinfo _HID=INT3472 _UID=0 at handle=\_SB_.PCI0.I2C2.PMIC (disabled)
    unknown pnpinfo _HID=INT3445 _UID=0 at handle=\_SB_.PCI0.I2C3 (disabled)
    unknown pnpinfo _HID=INT3446 _UID=0 at handle=\_SB_.PCI0.I2C4 (disabled)
    unknown pnpinfo _HID=INT3474 _UID=0 at handle=\_SB_.PCI0.I2C4.CAM1 (disabled)
    unknown pnpinfo _HID=INT3447 _UID=0 at handle=\_SB_.PCI0.I2C5 (disabled)
    unknown pnpinfo _HID=INT3440 _UID=0 at handle=\_SB_.PCI0.SPI0 (disabled)
    unknown pnpinfo _HID=INT3441 _UID=0 at handle=\_SB_.PCI0.SPI1 (disabled)
    unknown pnpinfo _HID=FPNT_DIS _UID=0 at handle=\_SB_.PCI0.SPI1.FPNT (disabled)
    unknown pnpinfo _HID=INT3448 _UID=0 at handle=\_SB_.PCI0.UA00 (disabled)
    unknown pnpinfo _HID=INT33E1 _UID=0 at handle=\_SB_.PCI0.UA00.BTH0 (disabled)
    unknown pnpinfo _HID=INT3449 _UID=0 at handle=\_SB_.PCI0.UA01 (disabled)
    unknown pnpinfo _HID=INT344A _UID=0 at handle=\_SB_.PCI0.UA02 (disabled)
    unknown pnpinfo _HID=INT33A2 _UID=0 at handle=\_SB_.PCI0.GNSS (disabled)
    unknown pnpinfo _HID=INT3472 _UID=0 at handle=\_SB_.PCI0.DSC0 (disabled)
    unknown pnpinfo _HID=INT3472 _UID=1 at handle=\_SB_.PCI0.DSC1 (disabled)
    unknown pnpinfo _HID=INT3472 _UID=2 at handle=\_SB_.PCI0.DSC2 (disabled)
    unknown pnpinfo _HID=INT3472 _UID=3 at handle=\_SB_.PCI0.DSC3 (disabled)
    unknown pnpinfo _HID=INT3472 _UID=0 at handle=\_SB_.PCI0.CLP0 (disabled)
    unknown pnpinfo _HID=INT3472 _UID=1 at handle=\_SB_.PCI0.CLP1 (disabled)
    unknown pnpinfo _HID=INT3472 _UID=2 at handle=\_SB_.PCI0.CLP2 (disabled)
    unknown pnpinfo _HID=INT3472 _UID=3 at handle=\_SB_.PCI0.CLP3 (disabled)
    unknown pnpinfo _HID=INT3471 _UID=0 at handle=\_SB_.PCI0.LNK0 (disabled)
    unknown pnpinfo _HID=INT3471 _UID=1 at handle=\_SB_.PCI0.LNK1 (disabled)
    unknown pnpinfo _HID=INT3471 _UID=2 at handle=\_SB_.PCI0.LNK2 (disabled)
    unknown pnpinfo _HID=INT3471 _UID=3 at handle=\_SB_.PCI0.LNK3 (disabled)
    unknown pnpinfo _HID=ABCD0000 _UID=2 at handle=\_SB_.PCI0.DOCK (disabled)
    unknown pnpinfo _HID=PNP0F03 _UID=0 at handle=\_SB_.PCI0.PS2M (disabled)
    battery0 pnpinfo _HID=PNP0C0A _UID=0 at handle=\_SB_.PCI0.BAT0
    acpi_acad0 pnpinfo _HID=ACPI0003 _UID=0 at handle=\_SB_.PCI0.AC0_
    acpi_wmi2 pnpinfo _HID=PNP0C14 _UID=0 at handle=\_SB_.PCI0.WMI2
    acpi_wmi3 pnpinfo _HID=PNP0C14 _UID=0 at handle=\_SB_.PCI0.WMI1
    unknown pnpinfo _HID=ACPI000C _UID=0 at handle=\_SB_.PAGD (disabled)
    pci_link0 pnpinfo _HID=PNP0C0F _UID=1 at handle=\_SB_.LNKA
    pci_link1 pnpinfo _HID=PNP0C0F _UID=2 at handle=\_SB_.LNKB
    pci_link2 pnpinfo _HID=PNP0C0F _UID=3 at handle=\_SB_.LNKC
    pci_link3 pnpinfo _HID=PNP0C0F _UID=4 at handle=\_SB_.LNKD
    pci_link4 pnpinfo _HID=PNP0C0F _UID=5 at handle=\_SB_.LNKE
    pci_link5 pnpinfo _HID=PNP0C0F _UID=6 at handle=\_SB_.LNKF
    pci_link6 pnpinfo _HID=PNP0C0F _UID=7 at handle=\_SB_.LNKG
    pci_link7 pnpinfo _HID=PNP0C0F _UID=8 at handle=\_SB_.LNKH
    unknown pnpinfo _HID=INT0E0C _UID=0 at handle=\_SB_.EPC_ (disabled)
    unknown pnpinfo _HID=INT3420 _UID=0 at handle=\_SB_.BTKL (disabled)
    acpi_button0 pnpinfo _HID=PNP0C0E _UID=0 at handle=\_SB_.SLPB
    unknown pnpinfo _HID=INT33A3 _UID=0 at handle=\_SB_.ICAM (disabled)
    unknown pnpinfo _HID=INT33A1 _UID=1 at handle=\_SB_.PEPD
    unknown pnpinfo _HID=IWC0001 _UID=0 at handle=\_SB_.WCT0 (disabled)
    acpi_button1 pnpinfo _HID=PNP0C0C _UID=0 at handle=\_SB_.PWRB
    unknown pnpinfo _HID=PNP0C0D _UID=0 at handle=\_SB_.LID0 (disabled)
    unknown pnpinfo _HID=MSFT0101 _UID=1 at handle=\_SB_.TPM_
        I/O memory addresses:
            0xfed40000-0xfed4087f
    unknown pnpinfo _HID=ATK4002 _UID=0 at handle=\_SB_.ASHS
    acpi_wmi1 pnpinfo _HID=PNP0C14 _UID=0 at handle=\_SB_.ATKD
      acpi_asus_wmi0
    acpi_lid0 pnpinfo _HID=PNP0C0D _UID=0 at handle=\_SB_.LID_
    unknown pnpinfo _HID=INT3470 _UID=0 at handle=\_SB_.SKC0 (disabled)
    acpi_sysresource5 pnpinfo _HID=INT340E _UID=0 at handle=\_SB_.PTID
    acpi_tz0 pnpinfo _HID=none _UID=0 at handle=\_TZ_.THRM
    unknown pnpinfo _HID=INT3420 _UID=0 at handle=\PSM_ (disabled)
    unknown pnpinfo _HID=INT339B _UID=0 at handle=\CHUB (disabled)
    unknown pnpinfo _HID=ACPI0008 _UID=0 at handle=\ALSD (disabled)
    acpi_wmi0 pnpinfo _HID=PNP0C14 _UID=0 at handle=\WMI0
    acpi_sysresource6 pnpinfo _HID=INT33D0 _UID=0 at handle=\SHAD
    acpi_timer0 pnpinfo unknown
        ACPI I/O ports:
            0x1808-0x180b

and

#pciconf -lv
hostb0@pci0:0:0:0:      class=0x060000 card=0x15e01043 chip=0x59108086 rev=0x05 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers'
    class      = bridge
    subclass   = HOST-PCI
pcib1@pci0:0:1:0:       class=0x060400 card=0x15e01043 chip=0x19018086 rev=0x05 hdr=0x01
    vendor     = 'Intel Corporation'
    device     = 'Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16)'
    class      = bridge
    subclass   = PCI-PCI
vgapci1@pci0:0:2:0:     class=0x030000 card=0x15e01043 chip=0x591b8086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'HD Graphics 630'
    class      = display
    subclass   = VGA
none0@pci0:0:8:0:       class=0x088000 card=0x15e01043 chip=0x19118086 rev=0x00 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model'
    class      = base peripheral
xhci0@pci0:0:20:0:      class=0x0c0330 card=0x201f1043 chip=0xa12f8086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller'
    class      = serial bus
    subclass   = USB
none1@pci0:0:20:2:      class=0x118000 card=0x15e01043 chip=0xa1318086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family Thermal Subsystem'
    class      = dasp
ig4iic_pci0@pci0:0:21:0:        class=0x118000 card=0x15e01043 chip=0xa1608086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family Serial IO I2C Controller'
    class      = dasp
none2@pci0:0:22:0:      class=0x078000 card=0x15e01043 chip=0xa13a8086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family MEI Controller'
    class      = simple comms
ahci0@pci0:0:23:0:      class=0x010601 card=0x15e01043 chip=0xa1038086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'HM170/QM170 Chipset SATA Controller [AHCI Mode]'
    class      = mass storage
    subclass   = SATA
pcib2@pci0:0:28:0:      class=0x060400 card=0x15e01043 chip=0xa1128086 rev=0xf1 hdr=0x01
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family PCI Express Root Port'
    class      = bridge
    subclass   = PCI-PCI
pcib3@pci0:0:28:3:      class=0x060400 card=0x15e01043 chip=0xa1138086 rev=0xf1 hdr=0x01
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family PCI Express Root Port'
    class      = bridge
    subclass   = PCI-PCI
pcib4@pci0:0:28:6:      class=0x060400 card=0x15e01043 chip=0xa1168086 rev=0xf1 hdr=0x01
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family PCI Express Root Port'
    class      = bridge
    subclass   = PCI-PCI
pcib5@pci0:0:29:0:      class=0x060400 card=0x15e01043 chip=0xa1188086 rev=0xf1 hdr=0x01
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family PCI Express Root Port'
    class      = bridge
    subclass   = PCI-PCI
isab0@pci0:0:31:0:      class=0x060100 card=0x15e01043 chip=0xa1528086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'HM175 Chipset LPC/eSPI Controller'
    class      = bridge
    subclass   = PCI-ISA
none3@pci0:0:31:2:      class=0x058000 card=0x15e01043 chip=0xa1218086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family Power Management Controller'
    class      = memory
hdac0@pci0:0:31:3:      class=0x040380 card=0x15e01043 chip=0xa1718086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'CM238 HD Audio Controller'
    class      = multimedia
    subclass   = HDA
none4@pci0:0:31:4:      class=0x0c0500 card=0x15e01043 chip=0xa1238086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family SMBus'
    class      = serial bus
    subclass   = SMBus
vgapci0@pci0:1:0:0:     class=0x030200 card=0x15e01043 chip=0x1c8d10de rev=0xa1 hdr=0x00
    vendor     = 'NVIDIA Corporation'
    device     = 'GP107M [GeForce GTX 1050 Mobile]'
    class      = display
    subclass   = 3D
iwm0@pci0:2:0:0:        class=0x028000 card=0x50108086 chip=0x095a8086 rev=0x59 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Wireless 7265'
    class      = network
re0@pci0:3:0:0: class=0x020000 card=0x200f1043 chip=0x816810ec rev=0x15 hdr=0x00
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller'
    class      = network
    subclass   = ethernet
none5@pci0:4:0:0:       class=0xff0000 card=0x202f1043 chip=0x522910ec rev=0x01 hdr=0x00
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTS5229 PCI Express Card Reader'
nvme0@pci0:5:0:0:       class=0x010802 card=0x00011179 chip=0x010f1179 rev=0x01 hdr=0x00
    vendor     = 'Toshiba Corporation'
    device     = 'NVMe Controller'
    class      = mass storage
    subclass   = NVM

and

#usbconfig 
ugen0.1: <0x8086 XHCI root HUB> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
ugen0.2: <04081-0009480017321009947 USB2.0 HD UVC WebCam> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
ugen0.3: <vendor 0x8087 product 0x0a2a> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
ugen0.4: <ITE Tech. Inc. ITE Device(8910)> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

and

#dsmsg
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=49232
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464
iichid0: input report too big. requested=14 received=16464

32bit compat support on 64bit systems?

Hi,

any chance to get 32bit compat support on 64bit systems?

The story behind this request is:

  • you can run the Linux Steam client on FreeBSD (games/linux-steam-utils port)
  • some games work
  • some games are 32bit, some are 64bit
  • to have gamepad support working for 32bit and 64bit games, some pre-requisites are needed, ane of them would be 32bit compat support on 64bit systems for your software.

I have already discussed with the author of webcamd to include the patch referenced on the pre-req page, and now I'm looking into linux_libusb with him. And as such this request here if there is the possibility to get you interested in 32bit compat support.

Bye,
Alexander.

Add LICENSE file

Add LICENSE file containing full copy of license and Copyright information.

Allows me to set LICENSE_FILE so that this file is packaged with the port/package on user system (copyrights included)

touchpad on Panasonic CF-QV doesn't work

Thank you very much for developing iichid.

I recently set up FreeBSD for a Panasonic laptop CF-QV. The touch pad of this machine is not recognized as a PS/2 mouse and definitely we need iichid. But at this moment, it is not successful: once the mouse cursor is moved with a short stroke on the touch pad, the cursor keeps moving even after the finger is off from the touch pad.

I'm using 13.0-CURRENT r368820 (right after the snapshot 201231) and the latest iichid (Dec. 27). xorg-7.7_3 is installed from the packages.

"dmesg" shows iicbus[01] and iic[01] are created, though there are some anxious messages:
dmesg.txt

iicbus0: unknown card at addr 0x2c
iicbus1: unknown card at addr 0x10
iicbus1: unknown card at addr 0x1f
iicbus1: unknown card at addr 0x11

Anyway, when "kldload iichid", hms0 is created, but no hmt device.
kldload.txt

hms0 is connected to /dev/input/event6. Output of "evemu-record /dev/input/event6" is attached. event6.txt
Here I first press the left button and then put a short stroke on the pad. hms0 keeps reporting the (relative) cursor position even after the stroke motion ends. The report stops when another press of the left button is given at the end of the event log. It seems spurious reports are continuously generated even the finger is off the touch pad.

Is there any way to correct this?
In addition, if it is recongnized as a hmt device, it would be super.

Does not compile on -CURRENT

Hi, my machine runs Current.

I can't compile. here is the log.

./hid.h:122:14: error: redefinition of typedef 'hid_test_quirk_t' is a C11 feature [-Werror,-Wtypedef-redefinition]
typedef bool hid_test_quirk_t(const struct hid_device_info *dev_info,
             ^
/usr/src/sys/dev/hid/hid.h:306:14: note: previous definition is here
typedef bool hid_test_quirk_t(const struct hid_device_info *dev_info,
             ^
In file included from iichid.c:57:
./hid.h:126:1: error: static declaration of 'hid_get_udata' follows non-static declaration
hid_get_udata(const uint8_t *buf, hid_size_t len, struct hid_location *loc)
^
/usr/src/sys/dev/hid/hid.h:325:10: note: previous declaration is here
uint32_t hid_get_udata(const uint8_t *buf, hid_size_t len,
         ^
In file included from iichid.c:57:
./hid.h:128:10: error: implicit declaration of function 'hid_get_data_unsigned' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        return (hid_get_data_unsigned(buf, len, loc));
                ^
11 errors generated.
*** Error code 1

Stop.
make: stopped in /usr/home/phil/projects/iichid
[phil@philhost:~/projects/iichid]$ 

Keyboards with multiple bitmask (NKRO) style key reports don't work correctly

Admittedly I am doing somewhat cursed things with keyboard firmware :D Here it is:

0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
0x09, 0x06,        // Usage (Keyboard)
0xA1, 0x01,        // Collection (Application)
0x85, 0x05,        //   Report ID (5)
0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
0x19, 0xE0,        //   Usage Minimum (0xE0)
0x29, 0xE7,        //   Usage Maximum (0xE7)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0x01,        //   Logical Maximum (1)
0x95, 0x08,        //   Report Count (8)
0x75, 0x01,        //   Report Size (1)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
0x19, 0x00,        //   Usage Minimum (0x00)
0x29, 0x2F,        //   Usage Maximum (0x2F)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0x01, 0x00,  //   Logical Maximum (1)
0x95, 0x30,        //   Report Count (48)
0x75, 0x01,        //   Report Size (1)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection
0xA1, 0x01,        // Collection (Application)
0x85, 0x06,        //   Report ID (6)
0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
0x19, 0x30,        //   Usage Minimum (0x30)
0x29, 0x67,        //   Usage Maximum (0x67)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0x01, 0x00,  //   Logical Maximum (1)
0x95, 0x38,        //   Report Count (56)
0x75, 0x01,        //   Report Size (1)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection
0xA1, 0x01,        // Collection (Application)
0x85, 0x07,        //   Report ID (7)
0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
0x19, 0x68,        //   Usage Minimum (0x68)
0x29, 0x77,        //   Usage Maximum (0x77)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0x01, 0x00,  //   Logical Maximum (1)
0x95, 0x18,        //   Report Count (24)
0x75, 0x01,        //   Report Size (1)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection

Basically this is splitting the key bits

 * byte |0       |1       |2       |3       |4       |5       |6       |7        ... |15
 * -----+--------+--------+--------+--------+--------+--------+--------+--------     +--------
 * desc |mods    |bits[0] |bits[1] |bits[2] |bits[3] |bits[4] |bits[5] |bits[6]  ... |bits[14]

across three reports of max length 8, due to microcontroller USB stack limitations

 * byte |0       |1       |2       |3       |4       |5       |6       |7       
 * -----+--------+--------+--------+--------+--------+--------+--------+--------
 * desc |RID 5   |mods    |bits[0] |bits[1] |bits[2] |bits[3] |bits[4] |bits[5] 

 * byte |0       |1       |2       |3       |4       |5       |6       |7       
 * -----+--------+--------+--------+--------+--------+--------+--------+--------
 * desc |RID 6   |bits[6] |bits[7] |bits[8] |bits[9] |bits[10]|bits[11]|bits[12]

 * byte |0       |1       |2       
 * -----+--------+--------+--------
 * desc |RID 7   |bits[13]|bits[14]

For each key state change the keyboard fires off all three reports in sequence.

This works fine on Linux, keys from the different report IDs actually end up on different corresponding evdevs.

With ukbd, all keys are recognized, but only keys from the last report have working repeat. Seems like each report resets the whole bitmask in the driver, making it forget the keys from the previous reports in the batch.

With hkbd, only keys from the first report are recognized at all.

Help with Cooler Master MasterKeys M Multimedia Keys

Hi @wulf7 !

First of all thank you for all the effort on building these drivers and all the work I see you put supporting users.

I have been struggling with making my multimedia keys work.

I don't know much about the USB stack, HID and how all the drivers and userspace libraries fit together, so I am a bit lost.

ukbd seems to work perfect for anything else than the multimedia/double function keys (The ones that require Fn to be pressed).

I've tried multiple things initially I tried loading hkbd, hcons, following the instructions in their respective man pages (I am using the drivers shipped with Freebsd 14-CURRENT now).

At the beginning I was thinking that ukbd was somehow "stealing the keyboard" I have tried to remove ukbd from the kernel and also preventing devmatch to auto load the modules. As expected no keyboard input events are received at when loading the h* and ukbd not being present.

I see two input devices associated to the keyboard when I do evemu-record In one of them I get events but radio-silence from the other.

I am new to FreeBSD, and at this point I am extremely curious of what is happening, maybe the keyboard is just not supported. Anyways, it would be awesome if you could guide me on how to debug and maybe even try to add support, I am also in the process of learning low level programming and playing with the drivers would not be a bad idea.

devinfo -rv
pciconf -lv
sudo usbconfig
dmesg

As I mentioned ukbd works very nicely with non dual keys, and it is really not of a big deal but it would be great if I could make them work like in Linux/MacOS or Windows where they are working out of the box.

It would be great to have some pointers on how we could make it work :)
Let me know if need anything else!

And thanks again!

hkbd continuously presses enter in panic debugger instead of reading input

With hkbd as my only keyboard, dropping to kdb (e.g. via debug.kdb.panic) results in what seems like continuous Return presses (new copies of the db> prompt keep appearing over and over, pushing the panic text away) and the actual keyboard input is not processed. (Using the base version with multireport patches applied, but I think this was happening long before the patches)

Add shim to let Linux games use gamepads

This project appears to be doing a good job at getting game controller support working under FreeBSD with the Linux evdev interface. But right now, the actual usefulness is very limited. In real-world application, the most likely use case for this project is for Linux native games to run under FreeBSD's Linux emulation layer and be able to use gamepads just as if they were running under Linux. But right now, that isn't the case. I've tested a few Linux native games from my GoG collection under FreeBSD that run great under FreeBSD and have gamepad support but don't detect that a gamepad is present on FreeBSD.

I don't know the details of how controller detection works on Linux, but I'm assuming that there is still a piece missing. Is this some kind of functionality that needs to be added to FreeBSD's Linux emulation layer? Or does there need to be some kind of shim layer that allows proper communication between Linux games and the FreeBSD interface?

Two-finger scroll doesn't work with ELAN0608 touchpad

Hi,
I think I'm abusing the "issue" functionality here, since I have no reason to think that this is a problem with the iichid module - but since it was what got my touchpad working at all (thanks again!), I thought you might have some idea about how to get the two-finger scroll to work too...

After you helped me out in issue #20, I have upgraded to the latest xorg-server port with UDEV enabled, and even gotten it to work:-) with the help of Michael Gmelin's excellent script - no more need to specify the exact /dev/input/eventN in an xorg.conf snippet, that part "just works".

But one argument for UDEV that has been mentioned is to get more touchpad functionality working, in particular the two-finger scroll - and it doesn't work for me. I know that the touchpad supports it, since it works in Windows (I have the laptop set up for dual-boot). I think Xorg.0.log has a significant clue, in that it decides that my touchpad is a mouse:-) -

-------------------------------------------------------------
[    29.512] (II) config/udev: Adding input device ELAN0608 (/dev/input/event3)
[    29.512] (**) ELAN0608: Applying InputClass "evdev pointer catchall"
[    29.512] (**) ELAN0608: Applying InputClass "libinput pointer catchall"
[    29.512] (II) Using input driver 'libinput' for 'ELAN0608'
[    29.512] (**) ELAN0608: always reports core events
[    29.512] (**) Option "Device" "/dev/input/event3"
[    29.512] (**) Option "_source" "server/udev"
[    29.512] (II) event3  - ELAN0608: is tagged by udev as: Mouse
[    29.512] (II) event3  - ELAN0608: device is a pointer
[    29.512] (II) event3  - ELAN0608: device removed
[    29.512] (**) Option "config_info" "udev:/dev/input/event3"
[    29.512] (II) XINPUT: Adding extended input device "ELAN0608" (type: MOUSE, id 9)
[    29.513] (**) Option "AccelerationScheme" "none"
[    29.513] (**) ELAN0608: (accel) selected scheme none/0
[    29.513] (**) ELAN0608: (accel) acceleration factor: 2.000
[    29.513] (**) ELAN0608: (accel) acceleration threshold: 4
[    29.513] (II) event3  - ELAN0608: is tagged by udev as: Mouse
[    29.513] (II) event3  - ELAN0608: device is a pointer
-------------------------------------------------------------

Do you have any idea? I can easily try out any source changes.

Ducky keyboard, multimedia keys not recognized

# dmesg | grep -i ducky
ugen2.2: <DuckyChannel International Co., Ltd. Ducky Keyboard> at usbus2
ukbd0: <DuckyChannel International Co., Ltd. Ducky Keyboard, class 0/0, rev 2.00/1.10, addr 2> on usbus2
ums1: <DuckyChannel International Co., Ltd. Ducky Keyboard, class 0/0, rev 2.00/1.10, addr 2> on usbus2
# usbconfig
ugen2.2: <DuckyChannel International Co., Ltd. Ducky Keyboard> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

I also ran dmesg -c than ran kldload iichid there was no output.

FreeBSD fluffy.local 13.0-CURRENT FreeBSD 13.0-CURRENT #0 r359929: Tue Apr 14 16:55:34 EDT 2020 [email protected]:/usr/obj/usr/src/amd64.amd64/sys/GENERIC-NODEBUG amd64

Touchpad not working after resuming FreeBSD 12.1

I have FreeBSD 12.1 on my Dell Latitude 5580. After closing computer's cover OS is suspended. Here is my sysctl.conf config for power management: hw.acpi.lid_switch_state=S3
After resuming system, touchpad is not working. It's freezed and sometimes mouse cursor goes out of screen.
dmesg output prints: iichid0: read error occured: 3
Reloading iichid module doesn't help.

Kernelmodule load order

First of all: thanks for the awesome work

I am currently using freebsd-stable (r363092) on a dell latitude 7280
I am loading your mod in /etc/rc.conf with:
kld_list="/boot/modules/i915kms.ko ig4 /boot/modules/iichid.ko"

when omitting the ig4 module before iichid, my touch pad won't work.
Maybe this can be fixed in iichid or ig4 or be documented.

If you need further data from me, i am happy to help.

Regards,
Daniel

Cursor/pointer motion continues "on its own"

Hi, this driver has made my dead touchpad (ELAN0608 on Lenovo ideapad 320) come to life, thanks a lot for that! There is a weird issue though - if I move the cursor/pointer and let go of the touchpad without first stopping the motion, the cursor continues to move on its own at the same speed until it hits the closest edge of the screen (also continues along that edge until it reaches a corner). It can
pretty easily be avoided by stopping the motion before letting go of the touchpad, but it does seem like it shouldn't happen...

I have no idea if this is something that can be addressed in this driver, but if there are any patches or the like that I can try out, I'll be happy to do so. I'm using the FreeBSD port version 0.0.1 on 12.1-RELEASE.

Allow financial contributions

Because I want to support open source and especially support the specific projects I personally feel are important, I would like to be able to make financial contributions -- even if small. Please sign up at https://github.com/sponsors and allow yourself to receive contributions from users who want to support your work.

Userspace HID access (/dev/uhidN)

Was wondering why the U2F mode on Yubikeys isn't working on my laptop (and only the laptop)…

ugen0.4: <Yubico Yubikey 4 OTP+U2F+CCID> at usbus0
ukbd0 on uhub0
ukbd0: <Yubico Yubikey 4 OTP+U2F+CCID, class 0/0, rev 2.00/4.35, addr 3> on usbus0
kbd2 at ukbd0
usbhid0 on uhub0
usbhid0: <Yubico Yubikey 4 OTP+U2F+CCID, class 0/0, rev 2.00/4.35, addr 3> on usbus0
hidbus2: <HID bus> on usbhid0

oops, we don't have the driver that exposes the userspace /dev/uhidN devices here

KLD iichid.ko: depends on kernel - not available or version mismatch (KRN=12.1-RELEASE SRC=12-STABLE)

Hello @wulf7 and big thank you for creating this generic HID layer for FreeBSD !! :-)

I have problem loading iichid 0.0.1 module on a 12.1-RELEASE-p1 when built with stable/12 sources..

root@0xCFMX4:/usr/src # svn info
Path: .
Working Copy Root Path: /usr/src
URL: https://svn.freebsd.org/base/stable/12
Relative URL: ^/stable/12
Repository Root: https://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 358209
Node Kind: directory
Schedule: normal
Last Changed Author: pfg
Last Changed Rev: 358209
Last Changed Date: 2020-02-21 05:48:25 +0100 (Fri, 21 Feb 2020)

# uname -a
FreeBSD 0xCFMX4 12.1-RELEASE-p1 FreeBSD 12.1-RELEASE-p1 GENERIC  amd64

# kldload ig4
# kldload iicbus
kldload: can't load iicbus: module already loaded or in kernel
# kldload iichid
kldload: an error occurred while loading module iichid. Please check dmesg(8) for more details.

# dmesg | tail -n 2
KLD iichid.ko: depends on kernel - not available or version mismatch
linker_load_file: /boot/modules/iichid.ko - unsupported file type

c300s TERRA i2c Designware ELAN

Hi there,

Quite confused as to how to approach for this old Chromebook on FREEBSD-13.0-STABLE

I don't get any pointer when starting X. Could someone give me a few steps as to how to fix a clean install.

My issues are that I can't get any of the guides mentioned here to work and I am confused as to how to approach things now and I dont want to try older guides due to the depreciation of moused, nor go down the route of synaptics. I am also confused as to what to put in boot and rc.

Sorry to be a pain, everything else about this system seems to be workable or manageable. Thank you to anyone willing to help!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.