wulf7 / iichid Goto Github PK
View Code? Open in Web Editor NEWGeneric HID layer for FreeBSD. Including I2C and USB backends.
License: BSD 2-Clause "Simplified" License
Generic HID layer for FreeBSD. Including I2C and USB backends.
License: BSD 2-Clause "Simplified" License
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.
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
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
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?
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.
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! :-)
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
The new hconf code cannot find the input mode feature on the Pixelbook touchpad…
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.
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);
}
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
ELAN0501 Trackpad is working well until the computer goes to sleep in ACPI S3.
After waking up, the trackpad is functional but choppy.
Some logs at helloSystem/ISO#100, please let me know whether I should provide more.
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?
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..
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.
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
Hello,
This project looks very similiar to https://www.freedesktop.org/wiki/Software/libinput
Can you give some details about what is different/similar?
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)
Not exactly an issue, the keyboard works pretty well (even volume and media player buttons). I just want to know if it's possible to make the G-Keys work, no macros or fancy stuff, just like the extra keys (home, mail, etc) of other keyboards.
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);
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.
hi, thanks for the work!
The Google Pixelbook has a Wacom touchscreen that supports both fingers and a pen:
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)
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
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.
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.
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.
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.
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.
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
Hi,
any chance to get 32bit compat support on 64bit systems?
The story behind this request is:
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.
iichid is in packages for 12.1-RELEASE but not (yet?) in 13-CURRENT. Is this planned? We might want to include it in helloSystem Live ISOs.
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)
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.
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]$
Now that the sysutils/iichid port has landed, update README to include at least:
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.
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!
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)
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?
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.
# 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
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.
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
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.
How to make It work?
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.
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
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
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!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.