What were you trying to do that didn't work?
A customer reported that connecting 2 touch panels which have the same vendor ID and model ID to RHEL 10.1 system as join mode, no matter touch either of the screens, only 1 screen responds.
Customer also did following tests.
- RHEL 10 (wayland) with or without nvidia --> issue happens
- RHEL 9 (wayland & Xorg), with or without nvidia ---> issue happens
- Use only 1 touch panel, no matter which one ---> actions as expected
- With 2 touch panels connected, use mouse ---> actions as expected
- Use 2 touch panels which from different vendors or different models (G2Touch Multi-Touch & Weida Hi-Tech ) ---> actions as expected
Checked the libinput outputs, didn't find any problems.
# libinput list-devices ... Device: G2Touch Multi-Touch Kernel: /dev/input/event18 Group: 7 Seat: seat0, default Size: 345x194mm Capabilities: touch ... Device: G2Touch Multi-Touch Kernel: /dev/input/event19 Group: 5 Seat: seat0, default Size: 345x194mm Capabilities: touch # udevadm info /dev/input/<eventID> ... /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.2/1-5.2:1.0/0003:2A94:504D.0005/input/input23/event18 M: event18 R: 18 J: c13:82 U: input D: c 13:82 N: input/event18 L: 0 S: input/by-path/pci-0000:00:14.0-usb-0:5.2:1.0-event S: input/by-id/usb-G2Touch_Multi-Touch-event-if00 S: input/by-path/pci-0000:00:14.0-usbv2-0:5.2:1.0-event E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.2/1-5.2:1.0/0003:2A94:504D.0005/input/input23/event18 E: DEVNAME=/dev/input/event18 E: MAJOR=13 E: MINOR=82 E: SUBSYSTEM=input E: USEC_INITIALIZED=589257715 E: ID_INPUT=1 E: ID_INPUT_TOUCHSCREEN=1 E: ID_INPUT_WIDTH_MM=345 E: ID_INPUT_HEIGHT_MM=194 E: ID_BUS=usb E: ID_MODEL=Multi-Touch E: ID_MODEL_ENC=Multi-Touch E: ID_MODEL_ID=504d E: ID_SERIAL=G2Touch_Multi-Touch E: ID_VENDOR=G2Touch E: ID_VENDOR_ENC=G2Touch E: ID_VENDOR_ID=2a94 E: ID_REVISION=0103 E: ID_TYPE=hid E: ID_USB_MODEL=Multi-Touch E: ID_USB_MODEL_ENC=Multi-Touch E: ID_USB_MODEL_ID=504d E: ID_USB_SERIAL=G2Touch_Multi-Touch E: ID_USB_VENDOR=G2Touch E: ID_USB_VENDOR_ENC=G2Touch E: ID_USB_VENDOR_ID=2a94 E: ID_USB_REVISION=0103 E: ID_USB_TYPE=hid E: ID_USB_INTERFACES=:030102:030000: E: ID_USB_INTERFACE_NUM=00 E: ID_USB_DRIVER=usbhid E: ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:5.2:1.0 E: ID_PATH=pci-0000:00:14.0-usb-0:5.2:1.0 E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_5_2_1_0 E: LIBINPUT_DEVICE_GROUP=3/2a94/504d:usb-0000:00:14.0-5 E: DEVLINKS=/dev/input/by-path/pci-0000:00:14.0-usb-0:5.2:1.0-event /dev/input/by-id/usb-G2Touch_Multi-Touch-event-if00 /dev/input/by-path/pci-0000:00:14.0-usbv2-0:5.2:1.0-event ... /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:2A94:504D.0008/input/input24/event19 M: event19 R: 19 J: c13:83 U: input D: c 13:83 N: input/event19 L: 0 S: input/by-path/pci-0000:00:14.0-usb-0:1.2:1.0-event S: input/by-id/usb-G2Touch_Multi-Touch-event-if00 S: input/by-path/pci-0000:00:14.0-usbv2-0:1.2:1.0-event E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:2A94:504D.0008/input/input24/event19 E: DEVNAME=/dev/input/event19 E: MAJOR=13 E: MINOR=83 E: SUBSYSTEM=input E: USEC_INITIALIZED=621003087 E: ID_INPUT=1 E: ID_INPUT_TOUCHSCREEN=1 E: ID_INPUT_WIDTH_MM=345 E: ID_INPUT_HEIGHT_MM=194 E: ID_BUS=usb E: ID_MODEL=Multi-Touch E: ID_MODEL_ENC=Multi-Touch E: ID_MODEL_ID=504d E: ID_SERIAL=G2Touch_Multi-Touch E: ID_VENDOR=G2Touch E: ID_VENDOR_ENC=G2Touch E: ID_VENDOR_ID=2a94 E: ID_REVISION=0103 E: ID_TYPE=hid E: ID_USB_MODEL=Multi-Touch E: ID_USB_MODEL_ENC=Multi-Touch E: ID_USB_MODEL_ID=504d E: ID_USB_SERIAL=G2Touch_Multi-Touch E: ID_USB_VENDOR=G2Touch E: ID_USB_VENDOR_ENC=G2Touch E: ID_USB_VENDOR_ID=2a94 E: ID_USB_REVISION=0103 E: ID_USB_TYPE=hid E: ID_USB_INTERFACES=:030102:030000: E: ID_USB_INTERFACE_NUM=00 E: ID_USB_DRIVER=usbhid E: ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:1.2:1.0 E: ID_PATH=pci-0000:00:14.0-usb-0:1.2:1.0 E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_2_1_0 E: LIBINPUT_DEVICE_GROUP=3/2a94/504d:usb-0000:00:14.0-1 E: DEVLINKS=/dev/input/by-path/pci-0000:00:14.0-usb-0:1.2:1.0-event /dev/input/by-id/usb-G2Touch_Multi-Touch-event-if00 /dev/input/by-path/pci-0000:00:14.0-usbv2-0:1.2:1.0-event # libinput debug-events (the eventID changed because customer removed a usb mouse) ... -event18 DEVICE_ADDED G2Touch Multi-Touch seat0 default group5 cap:t size 345x194mm ntouches 10 calib -event17 DEVICE_ADDED G2Touch Multi-Touch seat0 default group6 cap:t size 345x194mm ntouches 10 calib ... // tap panel A -event17 TOUCH_DOWN +0.000s 0 (0) 38.70/31.78 (133.65/61.76mm) event17 TOUCH_FRAME +0.000s event17 TOUCH_MOTION +0.099s 0 (0) 38.82/31.96 (134.06/62.10mm) event17 TOUCH_FRAME +0.099s ... // tap panel B -event18 TOUCH_DOWN +36.373s 0 (0) 39.36/43.25 (135.94/84.06mm) event18 TOUCH_FRAME +36.373s event18 TOUCH_MOTION +36.452s 0 (0) 39.42/43.48 (136.13/84.51mm) event18 TOUCH_FRAME +36.452s
Seems it's a problem in mutter. Does mutter only check the "vendor" and "product" of the device ?
mutter-47.5/src/backends/native/meta-input-device-native.c if (type == CLUTTER_TOUCHSCREEN_DEVICE) { group = "touchscreens"; schema = "org.gnome.desktop.peripherals.touchscreen"; } else if (type == CLUTTER_TABLET_DEVICE || type == CLUTTER_PEN_DEVICE || type == CLUTTER_ERASER_DEVICE || type == CLUTTER_CURSOR_DEVICE || type == CLUTTER_PAD_DEVICE) { group = "tablets"; schema = "org.gnome.desktop.peripherals.tablet"; } else { return NULL; } vendor = clutter_input_device_get_vendor_id (device); product = clutter_input_device_get_product_id (device); path = g_strdup_printf ("/org/gnome/desktop/peripherals/%s/%s:%s/", group, vendor, product); settings = g_settings_new_with_path (schema, path); g_free (path); return settings; }
Customer provided gsettings information, didn't see any value.
$ gsettings list-schemas | grep -i touch org.gnome.desktop.peripherals.touchpad org.gnome.settings-daemon.peripherals.touchscreen $ gsettings get org.gnome.desktop.peripherals.touchscreen:/org/gnome/desktop/peripherals/touchscreens/2a94:504d/ output ['', '', '']
What is the impact of this issue to you?
Customer can't expand the touchscreen.
Please provide the package NVR for which the bug is seen:
mutter
How reproducible is this bug?:
Connected 2 touch panels which have the same vendor id and model id to a RHEL 10 system. The display mode is set as join mode.
Steps to reproduce
Expected results
The touch panels can be expanded.
Actual results
2 touch panels works as 1 device when tap/touch the screen.