Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-154219

[RHEL 10] 2 touch panels with the same Vendor ID and model ID are recegnized as one device by mutter

Linking RHIVOS CVEs to...Migration: Automation ...Sync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • rhel-10.1
    • mutter
    • None
    • Low
    • rhel-display-desktop-foundation
    • None
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • None

      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

      1.  
      2.  
      3.  

      Expected results

      The touch panels can be expanded.

      Actual results

      2 touch panels works as 1 device when tap/touch the screen.

              cgarnach Carlos Garnacho
              rhn-support-lilhuang Lili Huang
              Carlos Garnacho Carlos Garnacho
              Barry Dunn Barry Dunn
              Votes:
              1 Vote for this issue
              Watchers:
              12 Start watching this issue

                Created:
                Updated: