4

Hopeful someone can help me out. I have a laptop with a malfunctioning touch device. The device can't be disabled in the bios or by any other means (other than replacing the screen where the cost exceeds the value of the laptop). Disconnecting is behind a glued screen that will shatter when removed.

I want to disable this device outright or blacklist its hardware address in some way. Ideally a kernel boot parameter, a udev rule, or something of the sort. It seems to identify as

acpi:NTRG0001:PNP0C50 . LNXSYBUS:00/PNP0A08:00/INT33C3:00/NTRG0001:01

It's not a PCI device and doesn't show up in lspci. Naturally I have other input devices ( a touchpad or mouse ) and hence can't just block all of the drivers.

I have tried:

  1. Disabling the hid_multitouch module with echo "blacklist hid_multitouch" > /etc/modprobe.d/hid_multitouch.conf, rebooted (and confirmed with lsmod that it didn't load) however it then registered under the fallback hid-generic (instead of hid_multitouch) and still registers the clicks all over my screen. Hence this doesn't seem to solve my problem.
  2. Trying to write a udev rule (in /etc/udev/rules.d/80-touchscreen) which sets 'authorized=0' however either I can't seem to figure out how to formulate it properly -or- (more accurately since that parameter doesn't seem to be there) I think it doesn't work with the HID device or its subdevices. In all of these various devices under the INT33C3 or i2c-NTRG0001, 'authorized' is not a writable file. I think this is the wrong path as the authorized file isn't present.
  3. Tried unbinding the i2c_hid driver from the NTRG device via echo "i2c-NTRG0001:01" > /sys/bus/i2c/drivers/i2c_hid/unbind which seems to be the only thing to work, but it isn't persistent across reboots. Adding this to rc.local or something seems like a bit of a hack. I would hope that there is a way to accomplish this by some other way (though this is my fallback).

Any insight how to, from a kernel, udev, or module loading perspective to simply say "don't do anything with this device" or to always ensure that it doesn't bind to any driver or to simply block all events/inputs from the input device?

Some excerpts (which may have been taken at different reboots module statuses) to maybe help identify the device From dmesg (with hid_multitouch disabled)

[3.555071] input: NTRG0001:01 1B96:1B05             as /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input11
[3.555358] input: NTRG0001:01 1B96:1B05 Touchscreen as /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input12
[3.555527] input: NTRG0001:01 1B96:1B05 Mouse       as /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input13
[3.555702] input: NTRG0001:01 1B96:1B05             as /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input14
[3.555763] input: NTRG0001:01 1B96:1B05             as /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input15
[3.555880] hid-generic 0018:1B96:1B05.0003: input,hidraw2: I2C HID v1.00 Mouse [NTRG0001:01 1B96:1B05] on i2c-NTRG0001:01

udevadm

looking at device '/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/hidraw/hidraw1':
  KERNEL=="hidraw1"
  SUBSYSTEM=="hidraw"
  DRIVER==""
looking at parent device '/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003':
  KERNELS=="0018:1B96:1B05.0003"
  SUBSYSTEMS=="hid"
  DRIVERS=="hid-multitouch"
  ATTRS{country}=="00"
  ATTRS{quirks}=="1"
looking at device '/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01':
  KERNEL=="i2c-NTRG0001:01"
  SUBSYSTEM=="i2c"
  DRIVER==""
  ATTR{name}=="NTRG0001:01"
looking at parent device '/devices/pci0000:00/INT33C3:00/i2c-2':
  KERNELS=="i2c-2"
  SUBSYSTEMS=="i2c"
  DRIVERS==""
  ATTRS{name}=="Synopsys DesignWare I2C adapter"
looking at parent device '/devices/pci0000:00/INT33C3:00':
  KERNELS=="INT33C3:00"
  SUBSYSTEMS=="platform"
  DRIVERS=="i2c_designware"
  ATTRS{driver_override}=="(null)"
looking at parent device '/devices/pci0000:00':
  KERNELS=="pci0000:00"S
  UBSYSTEMS==""
  DRIVERS==""

udevadm when loaded

P: /devices/pci0000:00/INT33C3:00
L: 0
E: DEVPATH=/devices/pci0000:00/INT33C3:00
E: SUBSYSTEM=platform
E: DRIVER=i2c_designware
E: MODALIAS=acpi:INT33C3:INT33C3:
E: USEC_INITIALIZED=29617217
E: ID_VENDOR_FROM_DATABASE=Interphase Corporation
P: /devices/pci0000:00/INT33C3:00/i2c-2
L: 0
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2
E: SUBSYSTEM=i2c
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01
L: 0
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01
E: SUBSYSTEM=i2c
E: DRIVER=i2c_hid
E: MODALIAS=acpi:NTRG0001:PNP0C50:
E: USEC_INITIALIZED=29693864
E: ID_VENDOR_FROM_DATABASE=N-trig Innovative Technologies, Inc.
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003
L: 0
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003
E: SUBSYSTEM=hid
E: DRIVER=hid-multitouch
E: HID_ID=0018:00001B96:00001B05
E: HID_NAME=NTRG0001:01 1B96:1B05
E: HID_PHYS=i2c-NTRG0001:01
E: HID_UNIQ=
E: MODALIAS=hid:b0018g0004v00001B96p00001B05
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/hidraw/hidraw1
N: hidraw1
L: 0
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/hidraw/hidraw1
E: SUBSYSTEM=hidraw
E: DEVNAME=/dev/hidraw1
E: MAJOR=245
E: MINOR=1
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input32
L: 0
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input32
E: SUBSYSTEM=input
E: PRODUCT=18/1b96/1b05/100
E: NAME="NTRG0001:01 1B96:1B05 Pen"
E: PHYS="i2c-NTRG0001:01"
E: UNIQ=""
E: PROP=0
E: EV=1b
E: KEY=c03 0 0 0 0 0
E: ABS=1000003
E: MSC=10
E: MODALIAS=input:b0018v1B96p1B05e0100-e0,1,3,4,k140,141,14A,14B,ra0,1,18,m4,lsfw
E: USEC_INITIALIZED=1589142529
E: ID_INPUT=1
E: ID_INPUT_TABLET=1
E: ID_SERIAL=noserial
E: ID_PATH=platform-INT33C3:00
E: ID_PATH_TAG=platform-INT33C3_00
E: ID_FOR_SEAT=input-platform-INT33C3_00
E: TAGS=:seat:
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input32/event5
N: input/event5
L: 0
S: input/by-path/platform-INT33C3:00-event-mouse
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input32/event5
E: SUBSYSTEM=input
E: DEVNAME=/dev/input/event5
E: MAJOR=13
E: MINOR=69
E: USEC_INITIALIZED=1589364685
E: ID_INPUT=1
E: ID_INPUT_TABLET=1
E: ID_INPUT_WIDTH_MM=252
E: ID_INPUT_HEIGHT_MM=167
E: ID_SERIAL=noserial
E: ID_PATH=platform-INT33C3:00
E: ID_PATH_TAG=platform-INT33C3_00
E: LIBINPUT_DEVICE_GROUP=18/1b96/1b05:i2c-NTRG0001:01
E: DEVLINKS=/dev/input/by-path/platform-INT33C3:00-event-mouse
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input32/mouse1
N: input/mouse1
L: 0
S: input/by-path/platform-INT33C3:00-mouse
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input32/mouse1
E: SUBSYSTEM=input
E: DEVNAME=/dev/input/mouse1
E: MAJOR=13
E: MINOR=33
E: USEC_INITIALIZED=1589149616
E: ID_INPUT=1
E: ID_INPUT_TABLET=1
E: ID_SERIAL=noserial
E: ID_PATH=platform-INT33C3:00
E: ID_PATH_TAG=platform-INT33C3_00
E: DEVLINKS=/dev/input/by-path/platform-INT33C3:00-mouse
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input33
L: 0
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input33
E: SUBSYSTEM=input
E: PRODUCT=18/1b96/1b05/100
E: NAME="NTRG0001:01 1B96:1B05"
E: PHYS="i2c-NTRG0001:01"
E: UNIQ=""
E: PROP=2
E: EV=1b
E: KEY=400 0 0 0 0 0
E: ABS=3273800000000003
E: MSC=20
E: MODALIAS=input:b0018v1B96p1B05e0100-e0,1,3,4,k14A,ra0,1,2F,30,31,34,35,36,39,3C,3D,m5,lsfw
E: USEC_INITIALIZED=1589143403
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=platform-INT33C3:00
E: ID_PATH_TAG=platform-INT33C3_00
E: ID_FOR_SEAT=input-platform-INT33C3_00
E: TAGS=:seat:
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input33/event6
N: input/event6
L: 0
S: input/by-path/platform-INT33C3:00-event
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input33/event6
E: SUBSYSTEM=input
E: DEVNAME=/dev/input/event6
E: MAJOR=13
E: MINOR=70
E: USEC_INITIALIZED=1589368910
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_INPUT_WIDTH_MM=252
E: ID_INPUT_HEIGHT_MM=167
E: ID_PATH=platform-INT33C3:00
E: ID_PATH_TAG=platform-INT33C3_00
E: LIBINPUT_DEVICE_GROUP=18/1b96/1b05:i2c-NTRG0001:01
E: DEVLINKS=/dev/input/by-path/platform-INT33C3:00-event
P: /devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input33/mouse2
N: input/mouse2
L: 0
E: DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-2/i2c-NTRG0001:01/0018:1B96:1B05.0003/input/input33/mouse2
E: SUBSYSTEM=input
E: DEVNAME=/dev/input/mouse2
E: MAJOR=13
E: MINOR=34
E: USEC_INITIALIZED=1589149528
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=platform-INT33C3:00
E: ID_PATH_TAG=platform-INT33C3_00

udevadm extended

P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/INT33C3:00/NTRG0001:00
L: 0
E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/INT33C3:00/NTRG0001:00
E: SUBSYSTEM=acpi
E: MODALIAS=
P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/INT33C3:00/NTRG0001:01
L: 0
E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/INT33C3:00/NTRG0001:01
E: SUBSYSTEM=acpi
E: MODALIAS=acpi:NTRG0001:PNP0C50:
E: USEC_INITIALIZED=29483509
E: ID_VENDOR_FROM_DATABASE=N-trig Innovative Technologies, Inc.
P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/INT33C3:00/SYNA2393:00
L: 0
E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/INT33C3:00/SYNA2393:00
E: SUBSYSTEM=acpi
E: MODALIAS=
jsotola
  • 429
  • 1
  • 5
  • 9
michaelkrieger
  • 480
  • 4
  • 8
  • Adding a /etc/udev/rules.d/80-touchscreen.rules (I noticed .rules is required) and testing it still results in the kmod as follows: run: 'mod load acpi:NTRG0001:PNP0C50:' with a rule like 'SUBSYSTEM=="i2c", DEVPATH=="*NTRG*", OPTIONS="ignore_device' so it appears I can't get udev to ignore it. – michaelkrieger Jun 14 '20 at 21:17
  • The only way I've found that seems to work is echo "i2c-NTRG0001:01" > /sys/bus/i2c/drivers/i2c_hid/unbind after boot. What I can't understand is why there is no method to simply not bind a driver to it in the first place. I can't get rid of the i2c_hid module entirely as the touchpad/keyboard uses it. If anyone has an idea how to blacklist this device or prevent it from associating a module, that's what I need to know. – michaelkrieger Jun 14 '20 at 22:47
  • I have the same issue with a broken touch screen. I do run X and was able to disable in Xorg but the login screen doesn't see that configuration. I used your `unbind` trick it seems to be working ! – wbg Feb 21 '23 at 02:13

1 Answers1

2

You can disable it with xinput.

Do a xinput list and identify your device. It will have an id=NUM.

You then do:

xinput --disable NUM
Eduardo Trápani
  • 12,032
  • 1
  • 18
  • 35
  • 1
    this would disable it as an X device, however I'm looking to remove the device from the system. If no other solution, may have to go that route, but would prefer to disable the device entirely, not just its integration with X. – michaelkrieger Jun 14 '20 at 21:20
  • As you wish. I don't know which other process would try to use it though. – Eduardo Trápani Jun 14 '20 at 21:24
  • 1
    I'm using Wayland/GNOME as well, so xinput doesn't quite work. Trying to figure out how to remove the device from wayland now. Still would prefer to simply blacklist the device. – michaelkrieger Jun 14 '20 at 22:36