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 firstname.lastname@example.org:/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.
Created attachment 227390 [details]
dmesg from dmesg.boot
Created attachment 227391 [details]
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]
Buttons pressed in order:
1. Button 1 (left button)
2. Button 2 (right button)
3. Button 3 (middle button)
Created attachment 227403 [details]
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]
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.
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]
> Aug 25 16:37:06 hbsd-laptop-02 kernel: iichid0: HID command I2C_HID_CMD_GET_REPORT 9 (type 3, len 3)
> Aug 25 16:37:06 hbsd-laptop-02 kernel: iichid0: response size 4 != expected length 5
> Aug 25 16:37:06 hbsd-laptop-02 kernel: 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:
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>
MFC after: 2 week
sys/dev/hid/hmt.c | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)