Created attachment 227361 [details] `pciconf -lv` output On HardenedBSD 14-CURRENT/amd64 on a Dell Precision 7550, the touchpad semi-works. The mouse cursor can be manipulated (moved around), but the physical buttons don't work right. Buttons one and two don't work at all, and button three (middle button) does indeed work. `uname -a`: FreeBSD hbsd-laptop-02 14.0-CURRENT-HBSD FreeBSD 14.0-CURRENT-HBSD #0 : Tue Aug 10 16:30:04 UTC 2021 root@ci-06.md.hardenedbsd.lan:/usr/obj/usr/src/amd64.amd64/sys/HARDENEDBSD amd64
Created attachment 227362 [details] `usbconfig list` output
Output from dmesg and devinfo is appreciated. Adding, wulf@ and @cdrom. --HPS
s/cdrom/cedro
Created attachment 227390 [details] dmesg from dmesg.boot
Created attachment 227391 [details] devinfo -rv
Could you do following steps: 1. kldload hidraw.ko 2. install sysutils/hid-tools 3. run hid-recorder and choose 'DELL09C3:00 0488:120A' 4. press and release 3 buttons one after one 5. post output from hid-recorder here
Created attachment 227402 [details] hid-recorder output Buttons pressed in order: 1. Button 1 (left button) 2. Button 2 (right button) 3. Button 3 (middle button)
Created attachment 227403 [details] missing_button_type.patch Report descriptor misses "button_type" usage resulting in touchpad detected as clickpad. Try attached patch.
(In reply to Vladimir Kondratyev from comment #8) Patch applied. Same behavior as before.
(In reply to Shawn Webb from comment #9) > Patch applied. Same behavior as before. Could you run evemu-record from devel/evemu, than choose 'DELL09C3:00 0488:120A TouchPad' device and provide its output after pressing the buttons
(In reply to Vladimir Kondratyev from comment #10) > Could you run evemu-record With "missing_button_type.patch" applied
Created attachment 227415 [details] evemu-record output This, too, had the patch applied.
(In reply to Shawn Webb from comment #12) I forgot to note: same button presses as before: left, right, middle.
All looks OK except the touchpad is recognized as clickpad. Could you add 'options IICHID_DEBUG' line to kernel config and 'hw.iichid.debug=1' to /boot/loader.conf than rebuild kernel, reboot and post dmesg output from the boot process. especially lines starting from iichid? as temporary workaround you may try to comment out 'evdev_support_prop(sc->evdev, INPUT_PROP_BUTTONPAD);' line (about #400) in sys/dev/hid/hmt.c. P.S. I was wrong about missing "button_type" usage. It exists.
(In reply to Vladimir Kondratyev from comment #14) Will do tomorrow. Do you want me to keep the patch when building the new kernel?
(In reply to Shawn Webb from comment #15) > Do you want me to keep the patch when building the new kernel? It is up to you. It was inspired by following OpenBSD commit https://github.com/openbsd/src/commit/db49bb0f212c1bd79ebc3bc96aadc7346a0dc1fe but looks irrelevant here. I am interesting in content of report which contains "button_type" usage.
Created attachment 227434 [details] copy of /var/log/messages with iichid debug enabled This includes the experimental patch. And it includes me hitting the left, right, and middle buttons.
Created attachment 227443 [details] missing_button_type.patch > Aug 25 16:37:06 hbsd-laptop-02 kernel[38]: iichid0: HID command I2C_HID_CMD_GET_REPORT 9 (type 3, len 3) > Aug 25 16:37:06 hbsd-laptop-02 kernel[38]: iichid0: response size 4 != expected length 5 > Aug 25 16:37:06 hbsd-laptop-02 kernel[38]: iichid0: response: 04 00 09 05 You get report with "button type" data truncated. Try updated patch
Created attachment 227452 [details] copy of /var/log/messages with iichid debug enabled and the second version of the patch That new patch seems to do the trick!
(In reply to Shawn Webb from comment #19) Also, thanks a lot for helping with this. I really appreciate it.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/src/commit/?id=9d04336b615d16faa631da2824ee719683540276 commit 9d04336b615d16faa631da2824ee719683540276 Author: Vladimir Kondratyev <wulf@FreeBSD.org> AuthorDate: 2021-09-02 19:33:51 +0000 Commit: Vladimir Kondratyev <wulf@FreeBSD.org> CommitDate: 2021-09-02 19:35:27 +0000 hmt(4): Add support for touchpads with no "button type" or "maximum number of contacts" usages. Assume touchpad to be a clickpad if it has only internal button. Set number of contacts to 5 for touchpads and to 10 for touchscreens. Check for fetched report length to avoid reading of stalled data. Fixes Dell Precision 7550 laptop. Tested by: Shawn Webb <shawn.webb_AT_hardenedbsd_DOT_org> PR: 257992 MFC after: 2 week sys/dev/hid/hmt.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-)
A commit in branch stable/13 references this bug: URL: https://cgit.FreeBSD.org/src/commit/?id=470478ff012fd8a2c083fead60574ec6c798376f commit 470478ff012fd8a2c083fead60574ec6c798376f Author: Vladimir Kondratyev <wulf@FreeBSD.org> AuthorDate: 2021-09-02 19:33:51 +0000 Commit: Vladimir Kondratyev <wulf@FreeBSD.org> CommitDate: 2021-09-21 23:41:40 +0000 hmt(4): Add support for touchpads with no "button type" or "maximum number of contacts" usages. Assume touchpad to be a clickpad if it has only internal button. Set number of contacts to 5 for touchpads and to 10 for touchscreens. Check for fetched report length to avoid reading of stalled data. Fixes Dell Precision 7550 laptop. Tested by: Shawn Webb <shawn.webb_AT_hardenedbsd_DOT_org> PR: 257992 (cherry picked from commit 9d04336b615d16faa631da2824ee719683540276) sys/dev/hid/hmt.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-)