How to configure the touch screen with the capacitive touch screen adapter?

Hi I have a Colibri Evaluation board with a 7’’ touch screen and cannot get the touch screen running. The display is working, but the touch functionality not.

The Display

[Capacitive Touch Display 7" Parallel | Toradex Developer Center]

The Adapter

[Capacitive Touch Adapter | Toradex Developer Center]

The Board

Rev. 3.2B
[Colibri Evaluation Board | Toradex Developer Center]


Software summary
Bootloader:               U-Boot
Kernel version:           6.1.84-6.6.1+git.347385861c50 #1-TorizonCore SMP Tue Jan 16 14:35:15     UTC 2024
Kernel command line:      enable_wait_mode=off galcore.contiguousSize=50331648     root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.1/torizon/ea34e3589daba16d97d7d676f6ee759319a972778286ea5c64425a0e82920cb2/0
Distro name:              NAME="TorizonCore Upstream"
Distro version:           VERSION_ID=6.6.1-build.14
Distro variant:           VARIANT="Docker"
Hostname:                 colibri-imx6-11372190

Hardware info
HW model:                 Toradex Colibri iMX6DL/S on Colibri Evaluation Board V3
Toradex version:          0077 V1.1A
Serial number:            11372190
Processor arch:           armv7l


fdt_overlays=colibri-imx6_vga-640x480_overlay.dtbo colibri-imx6_panel-cap-touch-7inch_overlay.dtbo

According to [Touch Screen Calibration (Torizon) | Toradex Developer Center]

I tried starting the calibrator:

$ 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:$CT_TAG_WESTON_TOUCH_CALIBRATOR

Date: 2024-05-21 UTC
[14:52:30.042] weston 10.0.1
               Bug reports to:
               Build: weston-10.0.1-1-8-g8a6fd0a
[14:52:30.060] Command line: weston -Swayland-0
[14:52:30.060] OS: Linux, 6.1.84-6.6.1+git.347385861c50, #1-TorizonCore SMP Tue Jan 16     14:35:15 UTC 2024, armv7l
[14:52:30.060] Flight recorder: enabled
[14:52:30.060] warning: XDG_RUNTIME_DIR "/tmp/weston-xdg" is not configured
correctly.  Unix access mode must be 0700 (current mode is 0755),
and must be owned by the user UID 0 (current owner is UID 0).
Refer to your distribution on how to get it, or
on how to implement it.
[14:52:30.067] Using config file '/etc/xdg/weston/weston.ini'
[14:52:30.073] Output repaint window is 7 ms maximum.
[14:52:30.075] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-10/'
[14:52:30.143] initializing drm backend
[14:52:30.148] Trying libseat launcher...
[14:52:30.161] libseat: session control granted
[14:52:30.173] using /dev/dri/card1
[14:52:30.178] DRM: supports atomic modesetting
[14:52:30.178] DRM: supports GBM modifiers
[14:52:30.178] DRM: supports picture aspect ratio
[14:52:30.182] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-10/'
[14:52:31.998] 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_EXT_platform_xcb
               EGL_MESA_platform_gbm EGL_KHR_platform_gbm
[14:52:32.015] EGL device extensions: EGL_EXT_device_drm
[14:52:32.018] EGL version: 1.4
[14:52:32.019] EGL vendor: Mesa Project
[14:52:32.019] EGL client APIs: OpenGL OpenGL_ES 
[14:52:32.019] EGL extensions: EGL_ANDROID_blob_cache
               EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_context_flush_control
               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
[14:52:32.027] EGL_KHR_surfaceless_context available
[14:52:32.069] GL version: OpenGL ES 2.0 Mesa 22.3.6
[14:52:32.069] GLSL version: OpenGL ES GLSL ES 1.0.16
[14:52:32.070] GL vendor: etnaviv
[14:52:32.071] GL renderer: Vivante GC880 rev 5106
[14:52:32.071] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
               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_NV_pack_subimage GL_EXT_frag_depth
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               GL_OES_EGL_sync GL_OES_vertex_array_object
               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_debug_label GL_EXT_separate_shader_objects
               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_parallel_shader_compile GL_INTEL_blackhole_render
[14:52:32.223] GL ES 2.0 - renderer features:
               read-back format: BGRA
               EGL Wayland extension: yes
[14:52:32.299] event0  - gpio-keys: is tagged by udev as: Keyboard
[14:52:32.303] event0  - gpio-keys: device is a keyboard
[14:52:32.322] event1  - PixArt Lenovo USB Optical Mouse: is tagged by udev as: Mouse
[14:52:32.328] event1  - PixArt Lenovo USB Optical Mouse: device is a pointer
[14:52:32.346] event2  - Lenovo Lenovo Traditional USB Keyboard: is tagged by udev as:             Keyboard
[14:52:32.351] event2  - Lenovo Lenovo Traditional USB Keyboard: device is a keyboard
[14:52:32.446] libinput: configuring device "gpio-keys".
[14:52:32.450] libinput: configuring device "PixArt Lenovo USB Optical Mouse".
[14:52:32.454] libinput: configuring device "Lenovo Lenovo Traditional USB Keyboard".
[14:52:32.454] DRM: head 'DPI-1' updated, connector 49 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[14:52:32.455] DRM: head 'DPI-1' found, connector 49 is connected, EDID make 'unknown', model     'unknown', serial 'unknown'
[14:52:32.456] Registered plugin API 'weston_drm_output_api_v1' of size 12
[14:52:32.456] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[14:52:32.456] Color manager: no-op
[14:52:32.460] Output 'DPI-1' using color profile: built-in default sRGB SDR profile
[14:52:32.461] Chosen EGL config details: id:  13 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type:     win vis_id: XRGB8888 (0x34325258)
[14:52:32.461] Output DPI-1 (crtc 36) video modes:
               800x480@60.1, preferred, current, 33.2 MHz
[14:52:32.462] associating input device event0 with output DPI-1 (none by udev)
[14:52:32.463] associating input device event1 with output DPI-1 (none by udev)
[14:52:32.463] associating input device event2 with output DPI-1 (none by udev)
[14:52:32.464] Output 'DPI-1' enabled with head(s) DPI-1
[14:52:32.464] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               cursor planes: yes
               arbitrary resolutions: no
               view mask clipping: yes
               explicit sync: yes
               color operations: no
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[14:52:32.473] Loading module '/usr/lib/arm-linux-gnueabihf/weston/'
[14:52:32.483] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[14:52:32.491] Note: support for the deprecated wl_shell interface is disabled. If a legacy client still needs it, it can be re-enabled by passing -Ddeprecated-wl-shell=true to Meson when building Weston.
[14:52:32.503] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-10/'
[14:52:32.752] Registered plugin API 'weston_xwayland_v1' of size 16
[14:52:32.756] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[14:52:32.758] xserver listening on display :0
[14:52:32.760] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
could not load cursor 'dnd-move'
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'
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.

Of course I know that I may not need a calibration, but anyway I thought this is the way I can test at least the touch display.

Any hints? Pictures how the board has to be connected would be helpful.


Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


To address the issue where the touch functionality of your 7’’ touch screen is not working on the Colibri Evaluation Board, despite the display working, let’s go through a systematic approach to troubleshoot and resolve the problem.

  1. Check Hardware Connections: Ensure that the touch screen and the capacitive touch adapter are correctly connected to the Colibri Evaluation Board. The touch screen interface usually connects to specific pins or connectors on the board. Refer to the hardware setup guides provided with your display and touch adapter for detailed instructions on how to connect them properly.

  2. Verify Device Tree Overlays: You’ve mentioned that your overlays.txt includes colibri-imx6_vga-640x480_overlay.dtbo and colibri-imx6_panel-cap-touch-7inch_overlay.dtbo. This setup seems correct for enabling the display and touch functionality. Ensure that these overlays are correctly applied by checking the boot log for any errors related to device tree overlays.

  3. Check Touch Interface Driver: The capacitive touch functionality requires a specific driver to be loaded in the Linux kernel. Since you are using TorizonCore, which is a containerized version of Linux, ensure that the necessary driver for your touch screen is included in the TorizonCore image or is loaded dynamically. The driver should match the touch controller used in your capacitive touch display.

  4. Calibration and Testing: Although calibration might not be necessary for capacitive touch screens as it is for resistive ones, running the touch calibrator can help test if the touch functionality is being recognized at the system level. The error message from the weston-touch-calibrator indicates that it couldn’t find “DPI-1”, which suggests a possible issue with recognizing the touch input. This could be due to missing or incorrect touch driver support.

  5. Review System Logs: Look into the system logs for any messages related to the touch screen. Use commands like dmesg and journalctl to review kernel and system logs. Look for any errors or warnings related to the touch functionality, such as failed driver loading or hardware communication issues.

  6. Software Configuration: Ensure that the software configuration within TorizonCore is set up to recognize and use the touch screen. This includes checking that the correct modules are loaded and that the system is configured to use the touch screen as an input device.

  7. Testing with a Different Environment: If possible, test the touch screen with a different software environment or a different version of Torizon

Please, also check if these links can help you solve your problem:

First Steps with Capacitive Touch Display 7" Parallel | Toradex Developer Center.

For the adapter, you should use the colibri-imx6_panel-cap-touch-7inch_adapter_overlay.dtbo overlay instead of colibri-imx6_panel-cap-touch-7inch_overlay.dtbo .

Hi, it was a combination of choosing the right overlay and connection problems with the cabel. Thanks for help.