My touchpad was recognized as a mouse

Background: It a Honor Magicbook 14 2023 with a newly installed Manjaro on kernel 6.1.41-1-MANJARO and Gnome 44.3.

The problem: My touch-pad was recognized as a mouse.

I can move the cursor and do primary button clicks with my touch-pad, but not scrolling or any multi-touch actions.
Even if I disable touch-pad in the options, my touch-pad still works. And change mouse’s the primary button setting or cursor speed setting actually effects my touch-pad behavior.
I tried both X11 and Wayland, none of them worked.

I went to /proc/bus/input/devices and these were what i found:

I: Bus=0018 Vendor=347d Product=7853 Version=0100
N: Name="BLTP7853:00 347D:7853 Mouse"
P: Phys=i2c-BLTP7853:00
S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-BLTP7853:00/0018:347D:7853.0001/input/input11
U: Uniq=
H: Handlers=event7 mouse0 
B: PROP=0
B: EV=17
B: KEY=70000 0 0 0 0
B: REL=903
B: MSC=10

I: Bus=0018 Vendor=347d Product=7853 Version=0100
N: Name="BLTP7853:00 347D:7853 Touchpad"
P: Phys=i2c-BLTP7853:00
S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-BLTP7853:00/0018:347D:7853.0001/input/input12
U: Uniq=
H: Handlers=event8 mouse1 
B: PROP=5
B: EV=1b
B: KEY=e520 10000 0 0 0 0
B: ABS=2e0800000000003
B: MSC=20

I first tried the device with name “Touchpad” in it (which is event8), I ran:

cat /dev/input/event8

And then used my touch-pad, nothing happened.

Then I tried the device with name “Mouse” in it (which is event7), I ran:

cat /dev/input/event7

As I use my touch-pad, it outputs lots of binary data.

With the above information, I think it’s some wrong driver config, but I have no idea about how to fix it.

please provide output of;

$ xinput list

refer wiki page below for additional info;
https://wiki.archlinux.org/title/libinput

These are the output of xinput list and xinput lisr-props 10, xinput list-props 11:

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ BLTP7853:00 347D:7853 Mouse             	id=10	[slave  pointer  (2)]
⎜   ↳ BLTP7853:00 347D:7853 Touchpad          	id=11	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ HD Camera: HD Camera                    	id=9	[slave  keyboard (3)]
    ↳ BLTP7853:00 347D:7853 UNKNOWN           	id=12	[slave  keyboard (3)]
    ↳ Huawei WMI hotkeys                      	id=13	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=14	[slave  keyboard (3)]

------------------------------------

Device 'BLTP7853:00 347D:7853 Mouse':
    Device Enabled (187):   1
    Coordinate Transformation Matrix (189): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Natural Scrolling Enabled (316):   0
    libinput Natural Scrolling Enabled Default (317):   0
    libinput Scroll Methods Available (318):    0, 0, 1
    libinput Scroll Method Enabled (319):   0, 0, 1
    libinput Scroll Method Enabled Default (320):   0, 0, 1
    libinput Button Scrolling Button (321): 2
    libinput Button Scrolling Button Default (322): 2
    libinput Button Scrolling Button Lock Enabled (323):    0
    libinput Button Scrolling Button Lock Enabled Default (324):    0
    libinput Middle Emulation Enabled (325):    0
    libinput Middle Emulation Enabled Default (326):    0
    libinput Accel Speed (327): -0.389121
    libinput Accel Speed Default (328): 0.000000
    libinput Accel Profiles Available (329):    1, 1, 1
    libinput Accel Profile Enabled (330):   1, 0, 0
    libinput Accel Profile Enabled Default (331):   1, 0, 0
    libinput Accel Custom Fallback Points (332):    <no items>
    libinput Accel Custom Fallback Step (333):  0.000000
    libinput Accel Custom Motion Points (334):  <no items>
    libinput Accel Custom Motion Step (335):    0.000000
    libinput Accel Custom Scroll Points (336):  <no items>
    libinput Accel Custom Scroll Step (337):    0.000000
    libinput Left Handed Enabled (338): 0
    libinput Left Handed Enabled Default (339): 0
    libinput Send Events Modes Available (301): 1, 0
    libinput Send Events Mode Enabled (302):    0, 0
    libinput Send Events Mode Enabled Default (303):    0, 0
    Device Node (304):  "/dev/input/event7"
    Device Product ID (305):    13437, 30803
    libinput Drag Lock Buttons (340):   <no items>
    libinput Horizontal Scroll Enabled (341):   1
    libinput Scrolling Pixel Distance (342):    15
    libinput Scrolling Pixel Distance Default (343):    15
    libinput High Resolution Wheel Scroll Enabled (344):    1

------------------------------------

Device 'BLTP7853:00 347D:7853 Touchpad':
    Device Enabled (187):   1
    Coordinate Transformation Matrix (189): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Tapping Enabled (345): 1
    libinput Tapping Enabled Default (346): 0
    libinput Tapping Drag Enabled (347):    1
    libinput Tapping Drag Enabled Default (348):    1
    libinput Tapping Drag Lock Enabled (349):   0
    libinput Tapping Drag Lock Enabled Default (350):   0
    libinput Tapping Button Mapping Enabled (351):  1, 0
    libinput Tapping Button Mapping Default (352):  1, 0
    libinput Natural Scrolling Enabled (316):   1
    libinput Natural Scrolling Enabled Default (317):   0
    libinput Disable While Typing Enabled (353):    1
    libinput Disable While Typing Enabled Default (354):    1
    libinput Scroll Methods Available (318):    1, 1, 0
    libinput Scroll Method Enabled (319):   1, 0, 0
    libinput Scroll Method Enabled Default (320):   1, 0, 0
    libinput Click Methods Available (355): 1, 1
    libinput Click Method Enabled (356):    0, 1
    libinput Click Method Enabled Default (357):    1, 0
    libinput Middle Emulation Enabled (325):    0
    libinput Middle Emulation Enabled Default (326):    0
    libinput Accel Speed (327): -0.735537
    libinput Accel Speed Default (328): 0.000000
    libinput Accel Profiles Available (329):    1, 1, 1
    libinput Accel Profile Enabled (330):   1, 0, 0
    libinput Accel Profile Enabled Default (331):   1, 0, 0
    libinput Accel Custom Fallback Points (332):    <no items>
    libinput Accel Custom Fallback Step (333):  0.000000
    libinput Accel Custom Motion Points (334):  <no items>
    libinput Accel Custom Motion Step (335):    0.000000
    libinput Accel Custom Scroll Points (336):  <no items>
    libinput Accel Custom Scroll Step (337):    0.000000
    libinput Left Handed Enabled (338): 0
    libinput Left Handed Enabled Default (339): 0
    libinput Send Events Modes Available (301): 1, 1
    libinput Send Events Mode Enabled (302):    0, 0
    libinput Send Events Mode Enabled Default (303):    0, 0
    Device Node (304):  "/dev/input/event8"
    Device Product ID (305):    13437, 30803
    libinput Drag Lock Buttons (340):   <no items>
    libinput Horizontal Scroll Enabled (341):   1
    libinput Scrolling Pixel Distance (342):    15
    libinput Scrolling Pixel Distance Default (343):    15
    libinput High Resolution Wheel Scroll Enabled (344):    1

I tried to run xinput set-prop 10 187 0, which led to my touch-pad became fully inaccessible.

I also tired to toggle configure item 353,345 and 302, they don’t work either.

I tried gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled, does not work.

I guess this is not a problem with libinput though, libinput reads data from /dev/input/event*, but the touchpad device /dev/input/event8 is simply not send anything.

looks to me like a kernel issue for your new laptop. there are some similar bugs reported sometime back for older kernels. would like you to look into bug; [SOLVED] Touchpad recognized as PS/2 Generic Mouse / Laptop Issues / Arch Linux Forums

if you can some how find which kernel module loads the support for the mouse here, and disable that, you might have a workaround for the timebeing.

Sounds good! Do you know any effective ways on finding the module, there are up to 155 modules loaded in my computer.

Module                  Size  Used by
rfcomm                 90112  4
ccm                    20480  6
cmac                   16384  2
algif_hash             16384  1
algif_skcipher         16384  1
af_alg                 36864  6 algif_hash,algif_skcipher
snd_hda_codec_hdmi     86016  1
snd_hda_codec_realtek   172032  1
snd_hda_codec_generic    98304  1 snd_hda_codec_realtek
bnep                   28672  2
snd_sof_pci_intel_tgl    16384  0
snd_sof_intel_hda_common   221184  1 snd_sof_pci_intel_tgl
joydev                 28672  0
soundwire_intel        57344  1 snd_sof_intel_hda_common
soundwire_generic_allocation    16384  1 soundwire_intel
soundwire_cadence      45056  1 soundwire_intel
snd_sof_intel_hda      20480  1 snd_sof_intel_hda_common
snd_sof_pci            24576  2 snd_sof_intel_hda_common,snd_sof_pci_intel_tgl
snd_sof_xtensa_dsp     20480  1 snd_sof_intel_hda_common
snd_sof               335872  2 snd_sof_pci,snd_sof_intel_hda_common
snd_sof_utils          20480  1 snd_sof
snd_soc_hdac_hda       28672  1 snd_sof_intel_hda_common
snd_hda_ext_core       36864  2 snd_sof_intel_hda_common,snd_soc_hdac_hda
snd_soc_acpi_intel_match    73728  2 snd_sof_intel_hda_common,snd_sof_pci_intel_tgl
snd_soc_acpi           16384  2 snd_soc_acpi_intel_match,snd_sof_intel_hda_common
soundwire_bus         126976  3 soundwire_intel,soundwire_generic_allocation,soundwire_cadence
intel_tcc_cooling      16384  0
snd_soc_core          393216  4 soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hda
snd_compress           28672  1 snd_soc_core
x86_pkg_temp_thermal    20480  0
intel_powerclamp       20480  0
ac97_bus               16384  1 snd_soc_core
coretemp               20480  0
snd_pcm_dmaengine      16384  1 snd_soc_core
snd_hda_intel          61440  3
kvm_intel             393216  0
snd_intel_dspcfg       36864  3 snd_hda_intel,snd_sof,snd_sof_intel_hda_common
vfat                   24576  1
fat                    98304  1 vfat
snd_intel_sdw_acpi     20480  2 snd_sof_intel_hda_common,snd_intel_dspcfg
kvm                  1150976  1 kvm_intel
iwlmvm                532480  0
snd_hda_codec         188416  6 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda,snd_sof_intel_hda
irqbypass              16384  1 kvm
i915                 3211264  70
crct10dif_pclmul       16384  1
snd_hda_core          118784  9 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda
crc32_pclmul           16384  0
btusb                  69632  0
polyval_clmulni        16384  0
snd_hwdep              16384  1 snd_hda_codec
polyval_generic        16384  1 polyval_clmulni
btrtl                  28672  1 btusb
gf128mul               16384  1 polyval_generic
mac80211             1310720  1 iwlmvm
uvcvideo              163840  0
ghash_clmulni_intel    16384  0
btbcm                  24576  1 btusb
sha512_ssse3           53248  0
videobuf2_vmalloc      20480  1 uvcvideo
snd_pcm               172032  11 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_compress,snd_soc_core,snd_sof_utils,snd_hda_core,snd_pcm_dmaengine
btintel                45056  1 btusb
videobuf2_memops       20480  1 videobuf2_vmalloc
iTCO_wdt               16384  0
aesni_intel           393216  7
videobuf2_v4l2         40960  1 uvcvideo
drm_buddy              20480  1 i915
btmtk                  16384  1 btusb
processor_thermal_device_pci    16384  0
libarc4                16384  1 mac80211
intel_pmc_bxt          16384  1 iTCO_wdt
videobuf2_common       86016  4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
ttm                    94208  1 i915
crypto_simd            16384  1 aesni_intel
huawei_wmi             24576  0
hid_multitouch         32768  0
iTCO_vendor_support    16384  1 iTCO_wdt
cryptd                 24576  3 crypto_simd,ghash_clmulni_intel
processor_thermal_device    20480  1 processor_thermal_device_pci
snd_timer              49152  1 snd_pcm
ledtrig_audio          16384  2 snd_hda_codec_generic,huawei_wmi
rapl                   16384  0
mei_pxp                20480  0
bluetooth             937984  32 btrtl,btmtk,btintel,btbcm,bnep,btusb,rfcomm
iwlwifi               491520  1 iwlmvm
mei_hdcp               24576  0
processor_thermal_rfim    16384  1 processor_thermal_device
spi_nor               118784  0
drm_display_helper    184320  1 i915
videodev              319488  3 videobuf2_v4l2,uvcvideo,videobuf2_common
snd                   131072  17 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_sof,snd_timer,snd_compress,snd_soc_core,snd_pcm
i2c_i801               45056  0
processor_thermal_mbox    16384  2 processor_thermal_rfim,processor_thermal_device
pmt_telemetry          16384  0
intel_cstate           20480  0
intel_rapl_msr         20480  0
sparse_keymap          16384  1 huawei_wmi
wmi_bmof               16384  0
pmt_class              16384  1 pmt_telemetry
ecdh_generic           16384  1 bluetooth
intel_uncore          221184  0
pcspkr                 16384  0
mc                     77824  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
usbhid                 73728  0
mtd                    94208  3 spi_nor
soundcore              16384  1 snd
i2c_smbus              20480  1 i2c_i801
cfg80211             1138688  3 iwlmvm,iwlwifi,mac80211
cec                    81920  2 drm_display_helper,i915
video                  65536  1 i915
i2c_hid_acpi           16384  0
processor_thermal_rapl    20480  1 processor_thermal_device
mei_me                 57344  2
intel_lpss_pci         28672  0
i2c_hid                40960  1 i2c_hid_acpi
wmi                    45056  3 video,huawei_wmi,wmi_bmof
intel_gtt              28672  1 i915
intel_lpss             16384  1 intel_lpss_pci
intel_rapl_common      32768  2 intel_rapl_msr,processor_thermal_rapl
mei                   176128  5 mei_hdcp,mei_pxp,mei_me
intel_vsec             20480  0
rfkill                 36864  9 iwlmvm,bluetooth,cfg80211
idma64                 20480  0
int3400_thermal        20480  0
acpi_thermal_rel       16384  1 int3400_thermal
int3403_thermal        20480  0
acpi_pad               24576  0
int340x_thermal_zone    20480  2 int3403_thermal,processor_thermal_device
mac_hid                16384  0
loop                   36864  0
crypto_user            24576  0
fuse                  176128  5
dm_mod                192512  0
bpf_preload            24576  0
ip_tables              36864  0
x_tables               57344  1 ip_tables
ext4                 1032192  2
crc32c_generic         16384  0
crc16                  16384  2 bluetooth,ext4
mbcache                16384  1 ext4
jbd2                  192512  1 ext4
serio_raw              20480  0
atkbd                  36864  0
libps2                 20480  1 atkbd
nvme                   61440  4
vivaldi_fmap           16384  1 atkbd
nvme_core             208896  6 nvme
crc32c_intel           24576  4
spi_intel_pci          16384  0
xhci_pci               24576  0
i8042                  49152  0
nvme_common            24576  1 nvme_core
spi_intel              32768  1 spi_intel_pci
xhci_pci_renesas       24576  1 xhci_pci
serio                  28672  4 serio_raw,atkbd,i8042

however, there is only one module named after “mouse”, which is “mousedev”, and disabling that doesn’t help…

What does sudo libinput list-devices print? What does sudo libinput debug-events print when you move your fingers on the touchpad? Try running sudo libinput debug-gui and see how that reacts when you use the touchpad.

i’ll consider any module having “hid” in their name a potential candidate to blacklist (there are a few in the list), does the laptop also have a touchscreen

No, it doesn’t. I’ll try to blacklist those drivers tomorrow, thanks for your help.

Update:

When I tried to disable i2c_hid_acpi, my touchpad stops working and both “mouse” and “touchpad” disappeared in the libinput list-devices. Disabling other modules named after “hid” doesn’t help.

Look for me that my touchpad is a new kind of device to the kernel, its vendor:device id is 347d:7853, which can’t be found in kernel source. Now I’m hacking into the kernel to add my device.

That absolutely does not mean that the device is not supported. Not all USB cameras are listed in the kernel, yet most just work out of the box because they present the same interface. What you need to do is check if a driver binds to the devices under the appropriate /sys/bus/<bus>/<device>/driver.

hi @szTom,
have you solved the problem? I have the same device with you. Tested on kernel 6.6-rc4 from fedora rawhide the touchpad is still not working.
I noticed that there are two device in Windows Device Manager: I2C HID Device and Microsoft Input Configuration Device. the two device have similar hardware id, the former is

ACPI\VEN_BLTP&DEV_7853
ACPI\BLTP7853
*BLTP7853

and the latter is

HID\VEN_BLTP&DEV_7853&Col03
HID\BLTP7853&Col03
HID\*BLTP7853&Col03
HID\VID_347D&UP:000D_U:000E
HID_DEVICE_UP:000D_U:000E

search on ms, i found a page that describes the device: https://learn.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-precision-touchpad-required-hid-top-level-collections#input-mode-feature-report

excerpt

Configuration collection

Using the HID protocol in Windows 8.1, a Windows Precision Touchpad shall provide a top-level collection that appears as digitizer/configuration (Page 0x0D, Usage 0x0E).

The configuration collection of a Windows Precision Touchpad enables the host to configure two different aspects of the device. The collection shall support two feature reports: one that allows the host to select input mode, and the other to allow the host to be selective in what is reported. No mandatory input reports are associated with this collection.

Input mode feature report

The input mode feature report is communicated by the host to the Windows Precision Touchpad to indicate which top-level collection should be used for input reporting. There are two collections which may be used for input reporting: the mouse collection and the Windows Precision Touchpad collection.
By default, upon cold-boot/power cycle, Windows Precision Touchpads shall report input by using the mouse collection. A Windows Precision Touchpad shall only report data by using one given collection at any time and shall only report from a different collection after the corresponding feature report has been received from the host that indicates the desired input mode.

The value that is specified by the host for input mode (Usage 0x52) determines the collection that should be used to report input.

Table 1 Input Mode Usage Values

Input Mode Value Input Reporting
0 Mouse Collection
3 Windows Precision Touchpad Collection

which may be just the case that our device is not configured, causing it working on mouse mode.

I search by Precision Touchpad configuration site:kernel.org, only to find this patch: https://patchwork.kernel.org/patch/11230017 . In this patch there is a flag HID_SCAN_FLAG_MT_WIN_8, but looks like it just used for probing without using for configuration mentioned above.
Hoping these information would help for supporting this kind of precision touchpad that need to be configured.

(sorry for i cannot include links for i am new to the forum)

upd: for reference, the bios device name is \_SB.PC00.I2C0.TPD0

No, I haven’t solved it yet. If you have found a workaround, please let me know. Thanks for the information you provided.

Have you tried using the recently released 6.6 kernel, instead of 6.1 LTS?

hello,

I’ve managed to create a patch to LKML (https://patchwork.kernel.org/project/linux-input/patch/DM6PR04MB412176BD43A29E1E873FB7E5CEA9A@DM6PR04MB4121.namprd04.prod.outlook.com/). Unfortunately it has been two weeks since i handle the patch without any reply. I may try to handle the patch again.

currently there are two workaround:

  1. the patch above. This patch sets MT_QUIRE_FORCE_GET_FEATURE to let the hid feature related function force SET_FEATURE, and in fact, only the latter step is required.
  2. Install pypi3 package [hid-tools](https://gitlab.freedesktop.org/libevdev/hid-tools). you may need to install it by pipx but i haven’t test it. Then you can call hid-feature in terminal.
    The workaround is:
sudo hid-feature set -f 30000 3 /dev/hidraw0 

if this didn’t work, you may need to find the feature manually. Find it by:

sudo hid-feature list /dev/hidraw0 |grep Inputmode

you would get one-line output like this:

  30000 |      3 | Digitizers                | Inputmode                                  | [ 0,  10] |     1 |   8 

the meaning of these entities can be obtained with the header of output which filtered by grep, referenced by MS standard. here we only need the first entity, 30000. replace this number to the command mentioned above, and the touchpad should works.

This topic was automatically closed 3 hours after the last reply. New replies are no longer allowed.