Torizon Weston Touch Calibrator issue

Hi,

I am using Torizon with Colibri iMX7 1GB and Viola Carrier Board
I am facing issue while running touch-calibrator contianer and I am unable to calibrate the touch Screen.
After running touch calibrator container, I am getting weston-touch-calibrator error: “DPI-1” was not found error. I have stopped all the container before running calibrator.

Please help.

Regards,
Pradeep Pol

Greetings @eklavya19,

Hmm that error seems to suggest that weston can’t find your display for some reason. Could you share the full logs for the touch container?

Furthermore what happens if you just run a simple weston/wayland container stack with this display? I.e. try running the basic weston/wayland example here: https://developer.toradex.com/knowledge-base/debian-container-for-torizon#15-torizon-400

Best Regards,
Jeremias

Hi,

touch calibrator container log

Date: 2020-10-30 UTC
[11:46:57.455] weston 5.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: unknown (not built from git or tarball)
[11:46:57.466] Command line: /usr/bin/weston
[11:46:57.466] OS: Linux, 5.4.54-5.0.0-devel+git.c0969469ee07, #1-TorizonCore SMP Sat Sep 5 20:36:18 UTC 2020, armv7l
[11:46:57.466] 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.
[11:46:57.467] Using config file '/etc/xdg/weston/weston.ini'
[11:46:57.468] Output repaint window is 7 ms maximum.
[11:46:57.469] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-5/drm-backend.so'
[11:46:57.492] initializing drm backend
[11:46:57.502] logind: not running in a systemd session
[11:46:57.503] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[11:46:57.520] using /dev/dri/card0
[11:46:57.520] DRM: supports universal planes
[11:46:57.520] DRM: supports atomic modesetting
[11:46:57.521] DRM: supports picture aspect ratio
[11:46:57.521] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-5/gl-renderer.so'
gbm: failed to open any driver (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
gbm: Last dlopen error: /usr/lib/dri/mxsfb-drm_dri.so: cannot open shared object file: No such file or directory
failed to load driver: mxsfb-drm
[11:46:58.300] 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_wayland EGL_EXT_platform_x11
               EGL_MESA_platform_gbm EGL_MESA_platform_surfaceless
[11:46:58.312] warning: neither EGL_EXT_swap_buffers_with_damage or EGL_KHR_swap_buffers_with_damage is supported. Performance could be affected.
[11:46:58.312] warning: Disabling render GPU timeline due to missing EGL_ANDROID_native_fence_sync extension
[11:46:58.313] EGL_KHR_surfaceless_context available
[11:46:58.442] EGL version: 1.4
[11:46:58.444] EGL vendor: Mesa Project
[11:46:58.445] EGL client APIs: OpenGL OpenGL_ES 
[11:46:58.445] EGL extensions: EGL_EXT_buffer_age EGL_EXT_image_dma_buf_import
               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_colorspace
               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_image_dma_buf_export
[11:46:58.446] GL version: OpenGL ES 3.0 Mesa 18.3.6
[11:46:58.446] GLSL version: OpenGL ES GLSL ES 3.00
[11:46:58.446] GL vendor: VMware, Inc.
[11:46:58.446] GL renderer: llvmpipe (LLVM 7.0, 128 bits)
[11:46:58.446] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_compression_s3tc GL_EXT_occlusion_query_boolean
               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_float
               GL_OES_texture_float_linear GL_OES_texture_half_float
               GL_OES_texture_half_float_linear GL_OES_texture_npot
               GL_OES_vertex_half_float GL_EXT_texture_sRGB_decode
               GL_OES_EGL_image GL_OES_depth_texture
               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_texture_rg
               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_OES_depth_texture_cube_map GL_OES_required_internalformat
               GL_OES_surfaceless_context GL_EXT_color_buffer_float
               GL_EXT_separate_shader_objects GL_EXT_shader_integer_mix
               GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_copy_image GL_EXT_draw_buffers_indexed
               GL_EXT_draw_elements_base_vertex GL_EXT_polygon_offset_clamp
               GL_EXT_texture_border_clamp GL_KHR_context_flush_control
               GL_OES_copy_image GL_OES_draw_buffers_indexed
               GL_OES_draw_elements_base_vertex GL_OES_texture_border_clamp
               GL_OES_texture_stencil8 GL_EXT_blend_func_extended
               GL_KHR_no_error GL_KHR_texture_compression_astc_sliced_3d
               GL_OES_EGL_image_external_essl3 GL_EXT_clip_cull_distance
               GL_EXT_disjoint_timer_query GL_MESA_shader_integer_functions
[11:46:58.451] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: no
[11:46:58.502] event1  - gpio-keys: is tagged by udev as: Keyboard
[11:46:58.503] event1  - gpio-keys: device is a keyboard
[11:46:58.525] event0  - AD7879 Touchscreen: is tagged by udev as: Touchscreen
[11:46:58.539] event0  - AD7879 Touchscreen: device is a touch device
[11:46:58.555] event2  - Dell KB216 Wired Keyboard: is tagged by udev as: Keyboard
[11:46:58.565] event2  - Dell KB216 Wired Keyboard: device is a keyboard
[11:46:58.589] event3  - Dell KB216 Wired Keyboard System Control: is tagged by udev as: Keyboard
[11:46:58.589] event3  - Dell KB216 Wired Keyboard System Control: device is a keyboard
[11:46:58.606] event4  - Dell KB216 Wired Keyboard Consumer Control: is tagged by udev as: Keyboard
[11:46:58.618] event4  - Dell KB216 Wired Keyboard Consumer Control: device is a keyboard
[11:46:58.706] Touchscreen - AD7879 Touchscreen - /sys/devices/platform/soc/30800000.aips-bus/30a20000.i2c/i2c-0/0-002c/input/input0/event0
[11:46:58.716] input device event0 has no enabled output associated (none named), skipping calibration for now.
[11:46:58.717] DRM: head 'Unknown-1' found, connector 31 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[11:46:58.717] Registered plugin API 'weston_drm_output_api_v1' of size 12
[11:46:58.718] Chosen EGL config details:
               RGBA bits: 8 8 8 0
               swap interval range: 1 - 1
[11:46:58.718] No backlight control for output 'Unknown-1'
[11:46:58.719] Output Unknown-1 (crtc 33) video modes:
               800x480@60.1, preferred, current, 33.2 MHz
[11:46:58.719] associating input device event1 with output Unknown-1 (none by udev)
[11:46:58.719] associating input device event0 with output Unknown-1 (none by udev)
[11:46:58.720] associating input device event2 with output Unknown-1 (none by udev)
[11:46:58.720] associating input device event3 with output Unknown-1 (none by udev)
[11:46:58.720] associating input device event4 with output Unknown-1 (none by udev)
[11:46:58.720] Output 'Unknown-1' enabled with head(s) Unknown-1
[11:46:58.721] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[11:46:58.722] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[11:46:58.725] launching '/usr/lib/weston/weston-keyboard'
[11:46:58.731] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-5/xwayland.so'
[11:46:58.837] Registered plugin API 'weston_xwayland_v1' of size 16
[11:46:58.842] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[11:46:58.843] xserver listening on display :0
[11:46:58.844] launching '/usr/lib/weston/weston-desktop-shell'
[11:47:00.673] atomic: couldn't commit new state: Invalid argument
could not load cursor 'dnd-move'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-copy'
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.

Regards,
Pradeep Pol

Alright it definitely seems your display is not being found. I should’ve asked this earlier but what touch display are you using and what overlays have you applied to get it to work? Also could you give me the exact Torizon version you are on? (i.e. the output of cat /etc/issue).

Also have you seen any output from this display while running Torizon?

Best Regards,
Jeremias

Hi,

We are using GVTW50SPBC2R0 TFT with touch.

I have attached the Datasheet. I have applied display-lt161010-overlay.dts overlay. I have tried on both Torizon 5.0.0 & 4.0.0 version. Yes Display output is fine. I am able to run our qt application with debian container.

Display Datasheet Display Datasheet

Regards, Pradeep Pol

Okay I see from the datasheet you have a 4-wire resistive touch panel. 4-wire touch should be enabled by default in the software. Can you confirm whether the touch worked at all at any point for you?

The issue could be that perhaps the touch interface isn’t being detected properly. Can you check on the device if there is some kind of /dev entry for touch. It should be something like /dev/input/event1 or similar. If you can locate this then try running udevadm info /dev/input/event1, this should help to see if anything unusual is going on with the touch interface.

Best Regards,
Jeremias

Hi,

Os version

TorizonCore 5.0.0-devel-202009+build.2 \n \l

These are the available input devices

colibri-imx7-06581402:/dev/input$ ls -al
total 0
drwxr-xr-x  3 root root     120 Nov  4 04:52 .
drwxr-xr-x 13 root root   14220 Nov  4 04:53 ..
drwxr-xr-x  2 root root      80 Nov  4 04:52 by-path
crw-rw----  1 root input 13, 64 Nov  4 04:52 event0
crw-rw----  1 root input 13, 65 Nov  4 04:52 event1
lrwxrwxrwx  1 root root       6 Nov  4 04:52 touchscreen0 -> event0

udevinfo of event0 is as following

colibri-imx7-06581402:/dev/input$ udevadm info /dev/input/event0
P: /devices/platform/soc/30800000.aips-bus/30a20000.i2c/i2c-0/0-002c/input/input0/event0
N: input/event0
L: 0
S: input/by-path/platform-30a20000.i2c-event
S: input/touchscreen0
E: DEVPATH=/devices/platform/soc/30800000.aips-bus/30a20000.i2c/i2c-0/0-002c/input/input0/event0
E: DEVNAME=/dev/input/event0
E: MAJOR=13
E: MINOR=64
E: SUBSYSTEM=input
E: USEC_INITIALIZED=18883012
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=platform-30a20000.i2c
E: ID_PATH_TAG=platform-30a20000_i2c
E: DEVLINKS=/dev/input/by-path/platform-30a20000.i2c-event /dev/input/touchscreen0

Regards,
Pradeep Pol

Alright everything looks normal there. It seems your touch interface is being picked up by the kernel.

Just to make sure touch is working though can you run install and run the evtest utility in a Debian container.

Also your original error still has me thinking this is related to your display not being picked up correctly. It might be possible that somehow Weston is trying to use the wrong display, somehow.

Can you additionally return the contents of the following directories: /dev/dri and /sys/class/drm.

Best Regards,
Jeremias

Hi,

I have installed and run the evtest utility on touchscreen input and its detecting touch event everytime.

root@colibri-imx7-06581402:/# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	AD7879 Touchscreen
/dev/input/event1:	gpio-keys
Select the device event number [0-1]: 0       
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x79 version 0x3
Input device name: "AD7879 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      0
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max     4095
    Event code 24 (ABS_PRESSURE)
      Value      0
      Min        0
      Max     4096
Properties:
Testing ... (interrupt to exit)
Event: time 1604567582.190035, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1604567582.190035, type 3 (EV_ABS), code 0 (ABS_X), value 3233
Event: time 1604567582.190035, type 3 (EV_ABS), code 1 (ABS_Y), value 2417
Event: time 1604567582.190035, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 82

Content of /dev/dri

root@colibri-imx7-06581402:/# cd dev/dri/
root@colibri-imx7-06581402:/dev/dri# ls -al
total 0
drwxr-xr-x  3 root root      80 Nov  5 14:24 .
drwxr-xr-x 13 root root   14220 Nov  5 14:24 ..
drwxr-xr-x  2 root root      60 Nov  5 14:24 by-path
crw-rw----  1 root video 226, 0 Nov  5 14:24 card0

Content of /sys/class/drm

root@colibri-imx7-06581402:/sys/class/drm# ls -al
total 0
drwxr-xr-x  2 root root    0 Nov  5 14:47 .
drwxr-xr-x 58 root root    0 Nov  5 14:46 ..
lrwxrwxrwx  1 root root    0 Nov  5 14:47 card0 -> ../../devices/platform/soc/30400000.aips-bus/30730000.lcdif/drm/card0
lrwxrwxrwx  1 root root    0 Nov  5 14:47 card0-Unknown-1 -> ../../devices/platform/soc/30400000.aips-bus/30730000.lcdif/drm/card0/card0-Unknown-1
-r--r--r--  1 root root 4096 Nov  5 14:47 version

Regards,
Pradeep Pol

Hi,

Using container suggested by you, I am able to calibrate the touch screen successfully.

Thanks for the support.

One more request regarding Touch Screen Issue while running Qt Application in Debian Container posted seperately.
https://www.toradex.com/community/questions/53028/touch-screen-functionality-not-working-in-qt-appli.html?childToView=55459#answer-55459
Any proper solution for this issue as combobox is not working properly in recommended solution?

Regards,
Pradeep Pol

Alright there’s the issue right there the DRM device is showing up as “Uknown-1” instead of “DPI-1” which explains why Weston can’t find it. I checked with the team internally and it seems this is a bug with DRM on the i.MX7.

We do have a temporary workaround in place however.

Run the following:
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

This should pull down and execute a special version of the touch calibration container that contains the workaround for this bug.

Please let me know if you encounter further issues with this.

Best Regards,
Jeremias

Glad the new container worked for you. As for the Qt-touch issue I believe the last I heard it was a bug between how Qt/weston interprets touch events differently. It’s currently under investigation as it may require a more in-depth fix.

Best Regards,
Jeremias