Dear ladies and gentlemen,
dear @jeremias.tx .
We are using Torizon with Apalis iMX6 1GB V1.1B and Customized Carrier Board and we are facing issue while running touch-calibrator container, so that we are unable to calibrate the touch screen. After running touch calibrator container, we are getting weston-touch-calibrator error: “DPI-1” was not found error. We have stopped all the container before running calibrator as was requested by your Touch Screen Calibration (Torizon) article.
Faced with similar imx7-torizon-weston-touch-post Torizon Weston Touch Calibrator issue, we are running in the same issue for imx6: weston-touch-calibrator error: "DPI-1" was not found error
. Our setting refers to two different LVDS displays, only having touch on LVDS1.
As you have requested at the former post, we have prepared the same outputs in the following. So, we use the following Torizon version:
# cat /etc/issue
Torizoncore Upstream 5.1.0-devel-202011+build.4 \n \l
Event 2 refers to relevant touch and seems to be recognized correctly:
# udevadm info /dev/input/event2
P: /devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-1/1-005d/input/input2/event2
N: input/event2
L: 0
S: input/by-path/platform-21a8000.i2c-event
E: DEVPATH=/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-1/1-005d/input/input2/event2
E: DEVNAME=/dev/input/event2
E: MAJOR=13
E: MINOR=66
E: SUBSYSTEM=input
E: USEC_INITIALIZED=12588259
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-21a8000.i2c
E: ID_PATH_TAG=platform-21a8000_i2c
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-21a8000.i2c-event
Event 1 refer to gpio-keys and seems to be work properly:
# udevadm info /dev/input/event1
P: /devices/soc0/gpio-keys/input/input1/event1
N: input/event1
L: 0
S: input/by-path/platform-gpio-keys-event
E: DEVPATH=/devices/soc0/gpio-keys/input/input1/event1
E: DEVNAME=/dev/input/event1
E: MAJOR=13
E: MINOR=65
E: SUBSYSTEM=input
E: USEC_INITIALIZED=9162730
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-gpio-keys
E: ID_PATH_TAG=platform-gpio-keys
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-gpio-keys-event
E: TAGS=:power-switch:
And Event 0 seems to be not relevant:
# udevadm info /dev/input/event0
P: /devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-2/2-0041/stmpe-ts/input/input0/event0
N: input/event0
L: 0
S: input/by-path/platform-21a4000.i2c-platform-stmpe-ts-event
S: input/touchscreen0
E: DEVPATH=/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-2/2-0041/stmpe-ts/input/input0/event0
E: DEVNAME=/dev/input/event0
E: MAJOR=13
E: MINOR=64
E: SUBSYSTEM=input
E: USEC_INITIALIZED=10524289
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=platform-21a4000.i2c-platform-stmpe-ts
E: ID_PATH_TAG=platform-21a4000_i2c-platform-stmpe-ts
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-21a4000.i2c-platform-stmpe-ts-event /dev/input/touchscreen0
Available input devices seem to be identified, too:
# ls -al /dev/input
total 0
drwxr-xr-x 3 root root 140 Jan 23 16:09 .
drwxr-xr-x 14 root root 14820 Jan 23 16:15 ..
drwxr-xr-x 2 root root 100 Jan 23 16:09 by-path
crw-rw---- 1 root input 13, 64 Jan 23 16:09 event0
crw-rw---- 1 root input 13, 65 Jan 23 16:09 event1
crw-rw---- 1 root input 13, 66 Jan 23 16:09 event2
lrwxrwxrwx 1 root root 6 Jan 23 16:09 touchscreen0 -> event0
Both devices seem to work correctly:
# ls -al /dev/dri
total 0
drwxr-xr-x 3 root root 120 Jan 23 16:09 .
drwxr-xr-x 14 root root 14820 Jan 23 16:15 ..
drwxr-xr-x 2 root root 100 Jan 23 16:09 by-path
crw-rw---- 1 root video 226, 0 Jan 23 16:09 card0
crw-rw---- 1 root video 226, 1 Jan 23 16:09 card1
crw-rw-rw- 1 root render 226, 128 Jan 23 16:09 renderD128
It seems that both LVDS displays are associated with card 1:
# ls -al /sys/class/drm
total 0
drwxr-xr-x 2 root root 0 Jan 23 16:27 .
drwxr-xr-x 59 root root 0 Jan 23 16:15 ..
lrwxrwxrwx 1 root root 0 Jan 23 16:27 card0 -> ../../devices/platform/etnaviv/drm/card0
lrwxrwxrwx 1 root root 0 Jan 23 16:27 card1 -> ../../devices/soc0/display-subsystem/drm/card1
lrwxrwxrwx 1 root root 0 Jan 23 16:27 card1-LVDS-1 -> ../../devices/soc0/display-subsystem/drm/card1/card1-LVDS-1
lrwxrwxrwx 1 root root 0 Jan 23 16:27 card1-LVDS-2 -> ../../devices/soc0/display-subsystem/drm/card1/card1-LVDS-2
lrwxrwxrwx 1 root root 0 Jan 23 16:27 renderD128 -> ../../devices/platform/etnaviv/drm/renderD128
-r--r--r-- 1 root root 4096 Jan 23 16:27 version
When starting the configuration container with docker run -ti --rm --privileged -v /dev:/dev -v /run/udev/:/run/udev/ -v /etc/udev/rules.d:/etc/udev/rules.d torizon/weston-touch-calibrator:2
, both displays show typical gray weston surface, a calibration app is not displayed, and we are running in the weston-touch-calibrator error: "DPI-1" was not found.
on console as follows:
# docker run -ti --rm --privileged -v /dev:/dev -v /run/udev/:/run/udev/ -v /etc/udev/rules.d:/etc/udev/rules.d torizon/weston-touch-calibrator:2
[16:28:05.030] weston 8.0.0
https://wayland.freedesktop.org
Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
Build: 8.0.0
[16:28:05.031] Command line: /usr/bin/weston
[16:28:05.031] OS: Linux, 5.4.61-5.1.0-devel+git.26abb5b86e17, #1-TorizonCore SMP Wed Sep 23 16:54:17 UTC 2020, armv7l
[16:28:05.031] 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.
[16:28:05.032] Using config file '/etc/xdg/weston/weston.ini'
[16:28:05.033] Output repaint window is 7 ms maximum.
[16:28:05.033] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/drm-backend.so'
[16:28:05.053] initializing drm backend
[16:28:05.054] logind: not running in a systemd session
[16:28:05.054] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[16:28:05.077] using /dev/dri/card1
[16:28:05.077] DRM: supports universal planes
[16:28:05.077] DRM: supports atomic modesetting
[16:28:05.077] DRM: supports picture aspect ratio
[16:28:05.077] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/gl-renderer.so'
[16:28:05.436] EGL client extensions: EGL_EXT_device_base
EGL_EXT_device_enumeration EGL_EXT_device_query
EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
EGL_EXT_platform_wayland EGL_KHR_platform_wayland
EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
[16:28:05.442] EGL version: 1.4
[16:28:05.442] EGL vendor: Mesa Project
[16:28:05.442] EGL client APIs: OpenGL OpenGL_ES
[16:28:05.442] EGL extensions: EGL_ANDROID_blob_cache
EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
EGL_EXT_image_dma_buf_import
EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
EGL_KHR_config_attribs EGL_KHR_create_context
EGL_KHR_create_context_no_error EGL_KHR_fence_sync
EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
EGL_KHR_image_base EGL_KHR_image_pixmap
EGL_KHR_no_config_context EGL_KHR_reusable_sync
EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
EGL_KHR_wait_sync EGL_MESA_configless_context
EGL_MESA_drm_image EGL_MESA_image_dma_buf_export
EGL_MESA_query_driver EGL_WL_bind_wayland_display
[16:28:05.444] EGL_KHR_surfaceless_context available
[16:28:05.458] GL version: OpenGL ES 2.0 Mesa 20.1.5
[16:28:05.458] GLSL version: OpenGL ES GLSL ES 1.0.16
[16:28:05.458] GL vendor: etnaviv
[16:28:05.458] GL renderer: Vivante GC2000 rev 5108
[16:28:05.458] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
GL_EXT_texture_format_BGRA8888
GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
GL_OES_element_index_uint GL_OES_fbo_render_mipmap
GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot
GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture
GL_AMD_performance_monitor GL_OES_packed_depth_stencil
GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary
GL_APPLE_texture_max_level GL_EXT_discard_framebuffer
GL_EXT_read_format_bgra GL_EXT_frag_depth
GL_NV_fbo_color_attachments GL_OES_EGL_image_external
GL_OES_EGL_sync GL_OES_vertex_array_object
GL_ANGLE_texture_compression_dxt3
GL_ANGLE_texture_compression_dxt5
GL_EXT_occlusion_query_boolean GL_EXT_unpack_subimage
GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth
GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers
GL_EXT_map_buffer_range GL_KHR_debug
GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
GL_OES_required_internalformat GL_OES_surfaceless_context
GL_EXT_separate_shader_objects
GL_EXT_compressed_ETC1_RGB8_sub_texture
GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp
GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex
GL_OES_texture_border_clamp GL_KHR_no_error
GL_KHR_texture_compression_astc_sliced_3d
GL_EXT_disjoint_timer_query
GL_EXT_texture_compression_s3tc_srgb
GL_KHR_parallel_shader_compile
[16:28:05.461] GL ES 2 renderer features:
read-back format: BGRA
wl_shm sub-image to texture: yes
EGL Wayland extension: yes
[16:28:05.478] event1 - gpio-keys: is tagged by udev as: Keyboard
[16:28:05.478] event1 - gpio-keys: device is a keyboard
[16:28:05.490] event0 - stmpe-ts: is tagged by udev as: Touchscreen
[16:28:05.491] event0 - stmpe-ts: device is a touch device
[16:28:05.498] event2 - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[16:28:05.499] event2 - Goodix Capacitive TouchScreen: device is a keyboard
[16:28:05.500] event2 - Goodix Capacitive TouchScreen: device is a touch device
[16:28:05.528] libinput: configuring device "gpio-keys".
[16:28:05.528] Touchscreen - stmpe-ts - /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-2/2-0041/stmpe-ts/input/input0/event0
[16:28:05.528] libinput: configuring device "stmpe-ts".
[16:28:05.528] input device event0 has no enabled output associated (none named), skipping calibration for now.
[16:28:05.529] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-1/1-005d/input/input2/event2
[16:28:05.529] libinput: configuring device "Goodix Capacitive TouchScreen".
[16:28:05.529] input device event2 has no enabled output associated (none named), skipping calibration for now.
[16:28:05.529] DRM: head 'LVDS-1' found, connector 54 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[16:28:05.530] DRM: head 'LVDS-2' found, connector 56 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[16:28:05.530] Registered plugin API 'weston_drm_output_api_v1' of size 12
[16:28:05.531] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[16:28:05.532] Chosen EGL config details: id: 21 rgba: 8 8 8 0 buf: 24 dep: 0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[16:28:05.532] Output LVDS-1 (crtc 34) video modes:
1280x320@62.0, preferred, current, 36.0 MHz
[16:28:05.532] associating input device event1 with output LVDS-1 (none by udev)
[16:28:05.532] associating input device event0 with output LVDS-1 (none by udev)
[16:28:05.533] associating input device event2 with output LVDS-1 (none by udev)
[16:28:05.534] Output 'LVDS-1' enabled with head(s) LVDS-1
[16:28:05.535] Chosen EGL config details: id: 21 rgba: 8 8 8 0 buf: 24 dep: 0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[16:28:05.535] Output LVDS-2 (crtc 41) video modes:
256x1920@61.1, preferred, current, 75.5 MHz
[16:28:05.536] Output 'LVDS-2' enabled with head(s) LVDS-2
[16:28:05.536] Compositor capabilities:
arbitrary surface rotation: yes
screen capture uses y-flip: yes
presentation clock: CLOCK_MONOTONIC, id 1
presentation clock resolution: 0.000000001 s
[16:28:05.537] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[16:28:05.539] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[16:28:05.544] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/xwayland.so'
[16:28:05.598] Registered plugin API 'weston_xwayland_v1' of size 16
[16:28:05.598] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[16:28:05.599] xserver listening on display :0
[16:28:05.599] launching '/usr/lib/arm-linux-gnueabihf/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'
weston-touch-calibrator error: "DPI-1" was not found.
Having tried to start weston-touch-calibrator with $CT_TAG_WESTON_TOUCH_CALIBRATOR=1
, or starting weston-touch-calibrator with the workaround container you have suggested at the referenced post (docker run -ti --rm --privileged -v /dev:/dev -v /run/udev/:/run/udev/ -v /etc/udev/rules.d:/etc/udev/rules.d torizon/arm32v7-debian-weston-touch-calibrator:1.0.0-20201105
), the same error log is displayed.
We assume, this is the reason for not having the current touch information at
# 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"
Here, we would expect something like SUBSYSTEM=="input", KERNEL=="event[0-9]*", ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="1.039948 0.011494 -0.031650 0.009743 -1.089353 1.047852"
in the last line.
Since the touch is recognized once, we assume the Goodix GT928 touch driver is working correctly. Do we need to use an workaround, too?
Please let us know, if you need any further information.
Thank you for your help.
Best,
Marcus