<div dir="ltr"><div>Hi Benjamin,<br><br><br></div><div>I tried to create the custom rule to new file "/etx/udev/rules.d/01-touchscreen.rules" and also with exixting file with following content but it is not showing with udevadm and touch still not working.<br><br>ACTION=="add", KERNEL=="input[0-9]*", SUBSYSTEM=="input", ENV{ID_INPUT}=="1", ENV{ID_INPUT_TOUCHSCREEN}=="1" ATTRS{name} =="mxt540e_i2c"<br></div><div>or<br>ACTION=="add", KERNEL=="input*", SUBSYSTEM=="input", ENV{ID_INPUT}=="1", ENV{ID_INPUT_TOUCHSCREEN}=="1" ATTRS{name} =="mxt540e_i2c"<br></div><div>or<br>ACTION=="change", KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT}=="1", ENV{ID_INPUT_TOUCHSCREEN}=="1" ATTRS{name} =="mxt540e_i2c"<br></div><div>or<br>ACTION=="change", KERNEL=="event[0-9]*", SUBSYSTEM=="input", ENV{ID_INPUT}=="1", ENV{ID_INPUT_TOUCHSCREEN}=="1" ATTRS{name} =="mxt540e_i2c"<br><br></div><div>and some many more options too.<br><br></div><div>Is there anything wrong with above lines? or Could you help me to create the custom rule for my touch device?<br><br></div><div>I am using systemd (version 208).<br></div><div><br><br></div><div>Some more information on touch device on platform<br><br>root@llinux:/etc/udev/rules.d# udevadm info -a -n /dev/input/event0<br><br>Udevadm info starts with the device specified by the devpath and then<br>walks up the chain of parent devices. It prints for every device<br>found, all possible attributes in the udev rules key format.<br>A rule to match, can be composed by the attributes of the device<br>and the attributes from one single parent device.<br><br>  looking at device '/devices/virtual/input/input0/event0':<br>    KERNEL=="event0"<br>    SUBSYSTEM=="input"<br>    DRIVER==""<br><br>  looking at parent device '/devices/virtual/input/input0':<br>    KERNELS=="input0"<br>    SUBSYSTEMS=="input"<br>    DRIVERS==""<br>    ATTRS{name}=="mxt540e_i2c"<br>    ATTRS{phys}==""<br>    ATTRS{uniq}==""<br>    ATTRS{properties}=="2"<br><br>root@linux:~# cat /proc/bus/input/devices<br>I: Bus=0000 Vendor=0000 Product=0000 Version=0000<br>N: Name="mxt540e_i2c"<br>P: Phys=<br>S: Sysfs=/devices/virtual/input/input0<br>U: Uniq=<br>H: Handlers=event0<br>B: PROP=2<br>B: EV=b<br>B: KEY=400 0 0 0 0 0 0 0 0 0 0<br>B: ABS=6618000 3<br></div><div><br><br></div><div>Thanks & Regards,<br></div><div>Vikash<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 25, 2015 at 6:38 PM, Benjamin Tissoires <span dir="ltr"><<a href="mailto:benjamin.tissoires@gmail.com" target="_blank">benjamin.tissoires@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><span class=""><br><br>On Fri, Sep 25, 2015 at 8:20 AM, Vikas Patil <<a href="mailto:vikasmpatil@gmail.com" target="_blank">vikasmpatil@gmail.com</a>> wrote:<br>> Hi Benjamin,<br>><br>> First of all thank a lot for your quick response.<br>><br>> It means since weston 1.7.0 libinput is by default enabled and only the<br>> input backend. I need not to set any specific build switch for it. So in<br>> that case I am using libinput. I thought "BUILD_LIBINPUT_BACKEND" still<br>> exists and as I haven't set it so thought not using libinput.<br><br></span>OK makes sense. But since 1.7.0, the code supporting non libinput devices has been pruned from weston, so the BUILD_LIBINPUT_BACKEND flags does not apply anymore.<span class=""><br><br>><br>> What do  you mean by we need to fix the kernel? Does that mean libinput<br>> support also requires modification in linux kernel (i.e tocuhscreen driver<br>> or evedev or somethign else)?<br><br></span>Normally, there is no need to fix the kernel in 90% of the cases. I thought your device was not exported properly by the kernel, and the udev internal rule for input was not picking it up as it should.<br><br>However, after looking at your records, it seems your kernel is fine. The problem you are seeing is that udev does not tag your device as a touchscreen and libinput ignores it.<span class=""><br><br>> How should I start doing this? Do I need to upgrade to latest version of<br>> libudev/libevedev?<br><br></span>Please update udev or add a custom udev rule to add:<br> ID_INPUT=1<br> ID_INPUT_TOUCHSCREEN=1<br><br></div>To your device.<span class=""><br><div><br><br>><br>> Attached here the output of following two commands.<br>><br>> root@linux# evemu-describe /dev/input/event0 > mydevice.desc<br>> root@linux# evemu-record /dev/input/event0 > mydevice.events<br>><br>> Just for information, Touch screen works fine with weston 1.6.0/weston 1.5.0<br>> with this kernel.<br><br></div></span><div>Yes. It kind of makes sense. However, switching to a full udev discovery allows us to remove the heuristics to decide whether a device is a mouse, keyboard, touchscreen, etc... to udev, and allows the user to override it if the heuristic fails.<br></div><div>That's why we use udev.<br><br></div><div>In previous weston builds, the heuristic was in weston, and that's why it was working.<br></div><div><br></div><div>Cheers,<br></div><div>Benjamin<br></div><div><div class="h5"><div><br>><br>> Thanks & Regards,<br>> Vikash<br>><br>> On Fri, Sep 25, 2015 at 4:48 PM, Benjamin Tissoires<br>> <<a href="mailto:benjamin.tissoires@gmail.com" target="_blank">benjamin.tissoires@gmail.com</a>> wrote:<br>>><br>>> On Fri, Sep 25, 2015 at 2:22 AM, Vikas Patil <<a href="mailto:vikasmpatil@gmail.com" target="_blank">vikasmpatil@gmail.com</a>><br>>> wrote:<br>>> > Dear Members,<br>>> ><br>>> > I am trying Weston 1.8.0 on i.MX6 with Freescale linux 3.14.28 and seems<br>>> > that touch input is not working for me. Weston.log show the following<br>>> > messages. I am not using llibinput backend yet.<br>>><br>>> That's weird. Since Weston 1.7.0, there are no other backend than<br>>> libinput for handling input devices. Or maybe I am missing something?<br>>><br>>> ><br>>> > Could anyone give some inputs/suggestion to fix this? Is this due to<br>>> > following ckeck-in?<br>>> ><br>>> ><br>>> > <a href="http://lists.freedesktop.org/archives/wayland-devel/2015-June/022411.html" target="_blank">http://lists.freedesktop.org/archives/wayland-devel/2015-June/022411.html</a><br>>> ><br>>><br>>> Yes it is, but believe me, it is for the better. Your touchscreen is<br>>> not properly tagged by udev, so we need to fix the kernel to make it<br>>> look like a touchscreen that libinput could understand.<br>>><br>>> ><br>>> ><br>>> > [00:00:50.248] input device 'mxt540e_i2c', /dev/input/event0 not tagged<br>>> > as<br>>> > input<br>>> > [00:00:50.248] failed to create input device '/dev/input/event0'.<br>>> > [00:00:50.249] warning: no input devices on entering Weston. Possible<br>>> > causes:<br>>> >         - no permissions to read /dev/input/event*<br>>> >         - seats misconfigured (Weston backend option 'seat', udev device<br>>> > propert<br>>> ><br>>> > I can see “/dev/input/event0” already there and all the touch drivers<br>>> > and<br>>> > dependencies (i.e. mxt540e.ko, input_polldev.ko, evdev.ko) are loaded.<br>>> ><br>>> > root@linux:~# udevadm info /dev/input/event0<br>>> > P: /devices/virtual/input/input0/event0<br>>> > N: input/event0<br>>> > E: DEVNAME=/dev/input/event0<br>>> > E: DEVPATH=/devices/virtual/input/input0/event0<br>>> > E: MAJOR=13<br>>> > E: MINOR=64<br>>> > E: SUBSYSTEM=input<br>>><br>>> You are missing all the important bits here. For instance, on my<br>>> touchscreen I have:<br>>> $ sudo udevadm info /dev/input/event6<br>>> P:<br>>> /devices/pci0000:00/INT3433:00/i2c-8/i2c-ATML0001:01/input/input6/event6<br>>> N: input/event6<br>>> S: input/by-path/platform-INT3433:00-event<br>>> E: DEVLINKS=/dev/input/by-path/platform-INT3433:00-event<br>>> E: DEVNAME=/dev/input/event6<br>>> E:<br>>> DEVPATH=/devices/pci0000:00/INT3433:00/i2c-8/i2c-ATML0001:01/input/input6/event6<br>>> E: EVDEV_ABS_00=::10<br>>> E: EVDEV_ABS_01=::10<br>>> E: EVDEV_ABS_35=::10<br>>> E: EVDEV_ABS_36=::10<br>>> E: ID_INPUT=1<br>>> E: ID_INPUT_TOUCHSCREEN=1<br>>> E: ID_PATH=platform-INT3433:00<br>>> E: ID_PATH_TAG=platform-INT3433_00<br>>> E: LIBINPUT_DEVICE_GROUP=18/0/0/0:i2c-8-004b<br>>> E: MAJOR=13<br>>> E: MINOR=70<br>>> E: SUBSYSTEM=input<br>>> E: USEC_INITIALIZED=3206730<br>>><br>>> The device is tagged with ID_INPUT_TOUCHSCREEN which makes libinput<br>>> handling it.<br>>><br>>> Could you attach an evemu-record of your touchscreen that we<br>>> understand why udev ignores it?<br>>><br>>> Cheers,<br>>> Benjamin<br>><br>></div></div></div></div>
</blockquote></div><br></div>