3

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=
2
  • 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. 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. Jun 14 '20 at 22:47
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
3
  • 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. Jun 14 '20 at 21:20
  • As you wish. I don't know which other process would try to use it though. 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. Jun 14 '20 at 22:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.