TorizonCore Touch calibration not working

Hello,

I cannot seem to configure and use an ILI2511 touchscreen controller.

I added an overlay with this:

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
&i2c4 {
    touchscreen@41 {
        compatible = "ilitek,ili251x";
        reg = <0x41>;
        interrupt-parent = <&gpio4>;
        interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
        reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
        status = "okay";
    };
};

And, I am compiling the ili210x.c driver as a module, following the Torizon documentation.
The final image uses the latest nightly build and runs on a Verdin iMX8MP using the dahlia carrier board. So, the screen and touch panel are connected to the DSI-LVDS adapter board.

On the target, it seems like the driver works correctly:

torizon@verdin-imx8mp-12345678:~$ ls -l /dev/input
total 0
drwxr-xr-x 2 root root     100 Apr  6 06:41 by-path
crw-rw---- 1 root input 13, 64 Apr  6 06:41 event0
crw-rw---- 1 root input 13, 65 Apr  6 06:41 event1
crw-rw---- 1 root input 13, 66 Apr  6 06:41 event2
lrwxrwxrwx 1 root root       6 Apr  6 06:41 touchscreen0 -> event2

torizon@verdin-imx8mp-12345678:~$ udevadm info /dev/input/event2
P: /devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-0041/input/input2/event2
N: input/event2
L: 0
S: input/by-path/platform-30a50000.i2c-event
S: input/touchscreen0
E: DEVPATH=/devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-0041/input/input2/event2
E: DEVNAME=/dev/input/event2
E: MAJOR=13
E: MINOR=66
E: SUBSYSTEM=input
E: USEC_INITIALIZED=5625898
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=platform-30a50000.i2c
E: ID_PATH_TAG=platform-30a50000_i2c
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-30a50000.i2c-event /dev/input/touchscreen0

torizon@verdin-imx8mp-12345678:~$ evtest
No device specified, trying to scan all of /dev/input/event*
Not running as root, no devices may be available.
Available devices:
/dev/input/event0:      30370000.snvs:snvs-powerkey
/dev/input/event1:      gpio-keys
/dev/input/event2:      ILI210x Touchscreen
Select the device event number [0-2]: 2
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "ILI210x Touchscreen"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value  16343
      Min        0
      Max    65535
    Event code 1 (ABS_Y)
      Value   4852
      Min        0
      Max    65535
    Event code 24 (ABS_PRESSURE)
      Value      0
      Min        0
      Max       10
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max        9
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max    65535
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max    65535
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
    Event code 58 (ABS_MT_PRESSURE)
      Value      0
      Min        0
      Max       10
Properties:
  Property type 1 (INPUT_PROP_DIRECT)
Testing ... (interrupt to exit)
Event: time 1680766941.991424, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 300
Event: time 1680766941.991424, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2810
Event: time 1680766941.991424, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2072
Event: time 1680766941.991424, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1680766941.991424, type 3 (EV_ABS), code 0 (ABS_X), value 2810
Event: time 1680766941.991424, type 3 (EV_ABS), code 1 (ABS_Y), value 2072
Event: time 1680766941.991424, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 10
Event: time 1680766941.991424, -------------- SYN_REPORT ------------
Event: time 1680766942.069549, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1
Event: time 1680766942.069549, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1680766942.069549, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1680766942.069549, -------------- SYN_REPORT ------------

But, when want to calibrate the touchscreen and use:

docker run -ti --rm -e ACCEPT_FSL_EULA=1 -e DISPLAY=LVDS-1 --privileged -v /dev:/dev -v /run/udev/:/run/udev/ -v /etc/udev/rules.d:/etc/udev/rules.d torizon/weston-touch-calibrator:$CT_TAG_WESTON_TOUCH_CALIBRATOR

Nothing happens, it just returns without doing anything. No container is launched.

I also have a gui application that uses Flutter and the touch is seemingly not forwarded to the application. Here is the docker-compose:

version: "2.4"
services:
  dlcoclient-deploy:
    image: registry/guiapplication:tag
    depends_on:
      weston:
        condition: service_healthy
    device_cgroup_rules:
      - c 226:* rmw
      - c 199:* rmw
      - c 116:* rmw
    volumes:
      - /tmp:/tmp
      - /dev/snd:/dev/snd:rw
      - /dev/dri:/dev/dri:rw
     - /dev/galcore:/dev/galcore:rw

  weston:
    cap_add:
      - CAP_SYS_TTY_CONFIG
    device_cgroup_rules:
      - 'c 4:0 rmw'
      - 'c 4:7 rmw'
      - 'c 13:* rmw'
      - 'c 199:* rmw'
      - 'c 226:* rmw'
    environment:
      - ACCEPT_FSL_EULA=1
    image: torizon/weston-vivante:2
    network_mode: host
    scale: 1
    command: weston-launch --tty=/dev/tty7 --user=torizon
    healthcheck:
      test: ["CMD", "test", "-S", "/tmp/.X11-unix/X0"]
      interval: 5s
      timeout: 4s
      retries: 6
      start_period: 10s
    volumes:
      - source: /tmp
        target: /tmp
        type: bind
      - source: /dev
        target: /dev
        type: bind
      - source: /run/udev
        target: /run/udev
        type: bind

Would you happen to know what is going on?

Thank you for your help.

Hi @mnano ,

I took a quick look at your overlay and I don’t see any obvious mistake in it.

On the target, it seems like the driver works correctly:

Given the evtest logs you sent the SoM does register touch events, is this correct?

Nothing happens, it just returns without doing anything. No container is launched.

That’s strange. Can you execute the docker run command again but without --rm? This way we can see the logs given by the container if it failed: To do this just run docker logs <name-of-container> after docker run.

I also have a gui application that uses Flutter and the touch is seemingly not forwarded to the application. Here is the docker-compose:

In your docker compose file, can you try adding

- /dev/input:/dev/input

in the volumes section of your application and see if the touchscreen works?

One thing to note is that the calibration app was made for resistive touchscreens, and ILI2511 is a capacitive touchscreen controller.

Best regards,
Lucas Akira

Yes, the SoM does register the touch events.

For whatever reason, it now works with or without --rm (I tried without first, maybe that has an influence):

torizon@verdin-imx8mp-12345678:~$ docker run -ti -e ACCEPT_FSL_EULA=1 -e DISPLAY=LVDS-1 --privileged -v /dev:/dev -v /run/udev/:/run/udev/ -v /etc/udev/rules.d:/etc/udev/rules.d torizon/weston-touch-calibrator:$CT_TAG_WESTON_TOUCH_CALIBRATOR
NXP EULA has already been accepted.
Date: 2023-04-11 UTC
[06:04:02.185] weston 9.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 9.0.0
[06:04:02.185] Command line: /usr/bin/weston
[06:04:02.185] OS: Linux, 5.15.77-6.2.0-devel+git.2276f375f152, #1-TorizonCore SMP PREEMPT Mon Apr 3 13:46:31 UTC 2023, aarch64
[06:04:02.185] warning: XDG_RUNTIME_DIR "/tmp/weston-xdg" is not configured
correctly.  Unix access mode must be 0700 (current mode is 755),
and must be owned by the user (current owner is UID 0).
Refer to your distribution on how to get it, or
http://www.freedesktop.org/wiki/Specifications/basedir-spec
on how to implement it.
[06:04:02.187] Using config file '/etc/xdg/weston/weston.ini'
[06:04:02.189] Output repaint window is 7 ms maximum.
[06:04:02.190] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/drm-backend.so'
[06:04:02.207] initializing drm backend
[06:04:02.207] logind: not running in a systemd session
[06:04:02.207] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[06:04:02.211] using /dev/dri/card0
[06:04:02.211] DRM: supports atomic modesetting
[06:04:02.211] DRM: does not support GBM modifiers
[06:04:02.211] DRM: supports picture aspect ratio
[06:04:02.212] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/gl-renderer.so'
[06:04:02.240] EGL client extensions: EGL_EXT_client_extensions
               EGL_EXT_platform_base EGL_KHR_platform_wayland
               EGL_EXT_platform_wayland EGL_KHR_platform_gbm
[06:04:02.245] EGL version: 1.5
[06:04:02.245] EGL vendor: Vivante Corporation
[06:04:02.245] EGL client APIs: OpenGL_ES OpenVG
[06:04:02.245] EGL extensions: EGL_KHR_fence_sync EGL_KHR_reusable_sync
               EGL_KHR_wait_sync EGL_KHR_image EGL_KHR_image_base
               EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_lock_surface
               EGL_KHR_create_context EGL_KHR_no_config_context
               EGL_KHR_surfaceless_context EGL_KHR_get_all_proc_addresses
               EGL_EXT_create_context_robustness EGL_EXT_protected_surface
               EGL_EXT_protected_content EGL_EXT_buffer_age
               EGL_ANDROID_native_fence_sync EGL_WL_bind_wayland_display
               EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
               EGL_EXT_swap_buffers_with_damage
               EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float
[06:04:02.246] EGL_KHR_surfaceless_context available
[06:04:02.264] GL version: OpenGL ES 3.1 V6.4.3.p1.305572
[06:04:02.264] GLSL version: OpenGL ES GLSL ES 3.10
[06:04:02.264] GL vendor: Vivante Corporation
[06:04:02.264] GL renderer: Vivante GC7000UL
[06:04:02.264] GL extensions: GL_OES_vertex_type_10_10_10_2
               GL_OES_vertex_half_float GL_OES_element_index_uint
               GL_OES_mapbuffer GL_OES_vertex_array_object
               GL_OES_compressed_ETC1_RGB8_texture
               GL_OES_compressed_paletted_texture GL_OES_texture_npot
               GL_OES_rgb8_rgba8 GL_OES_depth_texture
               GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32
               GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap
               GL_OES_get_program_binary GL_OES_fragment_precision_high
               GL_OES_standard_derivatives GL_OES_EGL_image
               GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3
               GL_OES_EGL_sync GL_OES_texture_stencil8
               GL_OES_shader_image_atomic
               GL_OES_texture_storage_multisample_2d_array
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_OES_draw_buffers_indexed GL_OES_texture_border_clamp
               GL_OES_texture_buffer GL_OES_texture_cube_map_array
               GL_OES_draw_elements_base_vertex GL_OES_texture_half_float
               GL_OES_texture_float GL_KHR_blend_equation_advanced
               GL_KHR_debug GL_KHR_robustness
               GL_KHR_robust_buffer_access_behavior
               GL_EXT_texture_type_2_10_10_10_REV
               GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
               GL_EXT_texture_compression_s3tc GL_EXT_read_format_bgra
               GL_EXT_multi_draw_arrays GL_EXT_frag_depth
               GL_EXT_discard_framebuffer GL_EXT_blend_minmax
               GL_EXT_multisampled_render_to_texture
               GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float
               GL_EXT_robustness GL_EXT_texture_sRGB_decode
               GL_EXT_draw_buffers_indexed GL_EXT_texture_border_clamp
               GL_EXT_texture_buffer GL_EXT_texture_cube_map_array
               GL_EXT_multi_draw_indirect GL_EXT_draw_elements_base_vertex
               GL_EXT_texture_rg GL_EXT_protected_textures GL_EXT_sRGB
               GL_VIV_direct_texture
[06:04:02.265] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: yes
[06:04:02.282] event1  - gpio-keys: is tagged by udev as: Keyboard
[06:04:02.282] event1  - gpio-keys: device is a keyboard
[06:04:02.286] event0  - 30370000.snvs:snvs-powerkey: is tagged by udev as: Keyboard
[06:04:02.286] event0  - 30370000.snvs:snvs-powerkey: device is a keyboard
[06:04:02.290] event2  - ILI210x Touchscreen: is tagged by udev as: Touchscreen
[06:04:02.291] event2  - ILI210x Touchscreen: device is a touch device
[06:04:02.321] libinput: configuring device "gpio-keys".
[06:04:02.321] libinput: configuring device "30370000.snvs:snvs-powerkey".
[06:04:02.321] Touchscreen - ILI210x Touchscreen - /sys/devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-0041/input/input2/event2
[06:04:02.321] libinput: configuring device "ILI210x Touchscreen".
[06:04:02.321] input device event2 has no enabled output associated (none named), skipping calibration for now.
[06:04:02.322] DRM: head 'LVDS-1' found, connector 35 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[06:04:02.323] Registered plugin API 'weston_drm_output_api_v1' of size 24
[06:04:02.323] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 48
[06:04:02.324] Chosen EGL config details: id:  41 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-60 type: win|pix|pbf|swap_preserved vis_id: XRGB8888 (0x34325258)
[06:04:02.324] Output LVDS-1 (crtc 33) video modes:
               1024x600@96.4, preferred, current, 71.1 MHz
[06:04:02.324] associating input device event1 with output LVDS-1 (none by udev)
[06:04:02.324] associating input device event0 with output LVDS-1 (none by udev)
[06:04:02.324] associating input device event2 with output LVDS-1 (none by udev)
[06:04:02.325] Output 'LVDS-1' enabled with head(s) LVDS-1
[06:04:02.325] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[06:04:02.326] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
[06:04:02.329] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
[06:04:02.335] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/xwayland.so'
[06:04:02.402] Registered plugin API 'weston_xwayland_v1' of size 32
[06:04:02.403] Registered plugin API 'weston_xwayland_surface_v1' of size 16
[06:04:02.403] xserver listening on display :0
[06:04:02.403] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
could not load cursor 'dnd-move'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-none'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
[06:04:03.143] input device event2: applying calibration:
                 1.000000 0.000000 0.000000
                 0.000000 1.000000 0.000000
[06:04:28.303] input device event2: applying calibration:
                 1.000000 0.000000 0.000000
                 0.000000 1.000000 0.000000
[06:04:28.317] input device event2: applying calibration:
                 3.971098 -0.129536 0.017572
                 0.046343 7.049267 -0.013870
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
Unknown parameter: ?2004
child 30 exited
^C[06:05:57.701] caught signal 2
[06:05:57.725] output for input device event1 removed
[06:05:57.725] output for input device event0 removed
[06:05:57.725] output for input device event2 removed
[06:05:57.727] event1  - gpio-keys: device removed
[06:05:57.727] event0  - 30370000.snvs:snvs-powerkey: device removed
[06:05:57.727] event2  - ILI210x Touchscreen: device removed

And, I can see:

torizon@verdin-imx8mp-12345678:~$ cat /etc/udev/rules.d/touchscreen.rules
# There are a number of modifiers that are allowed to be used in some
# of the different fields. They provide the following subsitutions:
#
# %n the "kernel number" of the device.
#    For example, 'sda3' has a "kernel number" of '3'
# %e the smallest number for that name which does not matches an existing node
# %k the kernel name for the device
# %M the kernel major number for the device
# %m the kernel minor number for the device
# %b the bus id for the device
# %c the string returned by the PROGRAM
# %s{filename} the content of a sysfs attribute
# %% the '%' char itself
#

# Create a symlink to any touchscreen input device
SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="ads7846", SYMLINK+="input/touchscreen0"
SUBSYSTEM=="input", KERNEL=="event[0-9]*", ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="3.971098 -0.129536 0.017572 0.046343 7.049267 -0.013870"
SUBSYSTEM=="input", KERNEL=="event[0-9]*", ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="4.077866 -0.083456 -0.003963 0.031012 6.971746 -0.001819"

However, when I look at udevadm info /dev/input/touchscreen0, I do not see E: LIBINPUT_CALIBRATION_MATRIX=3.971098 -0.129536 0.017572 0.046343 7.049267 -0.013870:

torizon@verdin-imx8mp-12345678:~$ udevadm info /dev/input/touchscreen0
P: /devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-0041/input/input2/event2
N: input/event2
L: 0
S: input/touchscreen0
S: input/by-path/platform-30a50000.i2c-event
E: DEVPATH=/devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-0041/input/input2/event2
E: DEVNAME=/dev/input/event2
E: MAJOR=13
E: MINOR=66
E: SUBSYSTEM=input
E: USEC_INITIALIZED=4970495
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=platform-30a50000.i2c
E: ID_PATH_TAG=platform-30a50000_i2c
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/touchscreen0 /dev/input/by-path/platform-30a50000.i2c-event

It still does not work for some reason. Here is what the docker-compose looks like:

root@verdin-imx8mp-12345678:/var/sota/storage/docker-compose# cat docker-compose.yml
networks:
  dbhostnet: {}
services:
  gui-client:
    container_name: app-client
    depends_on:
      weston:
        condition: service_healthy
    device_cgroup_rules:
    - c 116:* rmw
    - c 199:* rmw
    - c 226:* rmw
    image: orgregistry/gui@sha256:...
    networks:
      dbhostnet: null
    restart: always
    volumes:
    - /tmp:/tmp:rw
    - /dev/snd:/dev/snd:rw
    - /dev/dri:/dev/dri:rw
    - /dev/input:/dev/input
    - /dev/galcore:/dev/galcore:rw

  weston:
    cap_add:
    - CAP_SYS_TTY_CONFIG
    command: weston-launch --tty=/dev/tty7 --user=torizon
    container_name: weston-backend
    device_cgroup_rules:
    - c 4:0 rmw
    - c 4:7 rmw
    - c 13:* rmw
    - c 199:* rmw
    - c 226:* rmw
    environment:
      ACCEPT_FSL_EULA: '1'
    healthcheck:
      interval: 5s
      retries: 6
      start_period: 10s
      test:
      - CMD
      - test
      - -S
      - /tmp/.X11-unix/X0
      timeout: 4s
    image: torizon/weston-vivante@sha256:c9c846118538dee213cd740602796ca1a4eb73c5a2d6505659ce37932e40966d
    network_mode: host
    scale: 1
    volumes:
    - source: /tmp
      target: /tmp
      type: bind
    - source: /dev
      target: /dev
      type: bind
    - source: /run/udev
      target: /run/udev
      type: bind
version: '2.4'

Even without /dev/input in the volumes, mouse and keyboards work correctly though.

Hi @mnano ,

For whatever reason, it now works with or without --rm (I tried without first, maybe that has an influence):

Good to know this works now.

Even without /dev/input in the volumes, mouse and keyboards work correctly though.

That’s probably because the Weston-vivante container bind mounts the entire /dev directory. This should make your touchscreen work on Weston, and by extension, on your application.

Just to be sure the issue isn’t related to permissions, can you try running the Weston container with --privileged mode and see if it makes any difference?

What version of TorizonCore are you running?

Do you have any active device tree overlays that can interfere with your display configuration?

Best regards,
Lucas Akira

After using the latest build that contains CONFIG_TOUCHSCREEN_ILI210X ( How to activate a configuration for a device - Technical Support - Toradex Community) instead of building the driver as a module, it now works as intended. I also added the touchscreen.rules to the filesystem customization when building my image.

torizon@verdin-imx8mp-12345678:~$ ls -l /dev/input
total 0
drwxr-xr-x 2 root root     100 Sep  6  2022 by-path
crw-rw---- 1 root input 13, 64 Sep  6  2022 event0
crw-rw---- 1 root input 13, 65 Sep  6  2022 event1
crw-rw---- 1 root input 13, 66 Sep  6  2022 event2
lrwxrwxrwx 1 root root       6 Sep  6  2022 touchscreen0 -> event2
torizon@verdin-imx8mp-12345678:~$ udevadm info /dev/input/event2
P: /devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-0041/input/input2/event2
N: input/event2
L: 0
S: input/touchscreen0
S: input/by-path/platform-30a50000.i2c-event
E: DEVPATH=/devices/platform/soc@0/30800000.bus/30a50000.i2c/i2c-3/3-0041/input/input2/event2
E: DEVNAME=/dev/input/event2
E: MAJOR=13
E: MINOR=66
E: SUBSYSTEM=input
E: USEC_INITIALIZED=6433140
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=platform-30a50000.i2c
E: ID_PATH_TAG=platform-30a50000_i2c
E: UDISKS_FILESYSTEM_SHARED=1
E: LIBINPUT_CALIBRATION_MATRIX=3.971098 -0.129536 0.017572 0.046343 7.049267 -0.013870
E: DEVLINKS=/dev/input/touchscreen0 /dev/input/by-path/platform-30a50000.i2c-event

I did not have to add /dev/input, so the docker-compose file I am using is the same as shown on the first post.

Thank you for your help (on the other thread as well).

Hi @mnano ,

Glad that the touchscreen is now working with the new config option added!

Best regards,
Lucas Akira