Torizon Weston Touch Calibrator issue: Known “DPI-1 was not found” error

Hi,

I am having some issues calibrating my touch screen.
I get the following error when launching weston-touch-calibrator. (full log below)

weston-touch-calibrator error: “DPI-1” was not found.

The display and touch work fine on Kiosk mode (just not calibrated). While calibrating all I can see is the default gray scren with time and date on the top right.

We are using a Winstar WF50DTYA3MNG10 panel which has a Goodix GT928
WF50DTYA3MNG10.pdf (1.9 MB)

Could you please point me towards what I need to fix ?

I have read other similar issues posted here but couldn’t find a solution.
I include all the information that was requested by toradex suport in similar issues.

verdin-imx8mm-06944605:~$ uname -r
5.4.129-5.4.0+git.cb88cc157bfb

Taken from torizon-core-docker-verdin-imx8mm-Tezi_5.4.0+build.10 + custom dtbo on top

verdin-imx8mm-06944605:~$ ls -al /dev/input/
total 0
drwxr-xr-x  3 root root     120 Oct 28 10:49 .
drwxr-xr-x 16 root root    4840 Oct 28 10:49 ..
drwxr-xr-x  2 root root     100 Oct 28 10:49 by-path
crw-rw----  1 root input 13, 64 Oct 28 10:49 event0
crw-rw----  1 root input 13, 65 Oct 28 10:49 event1
crw-rw----  1 root input 13, 66 Oct 28 10:49 event2
verdin-imx8mm-06944605:~$ udevadm info /dev/input/event2
P: /devices/platform/soc@0/soc@0:bus@30800000/30a30000.i2c/i2c-1/1-005d/input/input2/event2
N: input/event2
L: 0
S: input/by-path/platform-30a30000.i2c-event
E: DEVPATH=/devices/platform/soc@0/soc@0:bus@30800000/30a30000.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=9302298
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-30a30000.i2c
E: ID_PATH_TAG=platform-30a30000_i2c
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-30a30000.i2c-event
E: TAGS=:power-switch:
verdin-imx8mm-06944605:~$ ls -la /dev/dri
total 0
drwxr-xr-x  3 root root        120 Oct 28 10:49 .
drwxr-xr-x 16 root root       4840 Oct 28 10:49 ..
drwxr-xr-x  2 root root        100 Oct 28 10:49 by-path
crw-rw----  1 root video  226,   0 Oct 28 10:49 card0
crw-rw----  1 root video  226,   1 Oct 28 10:49 card1
crw-rw-rw-  1 root render 226, 128 Oct 28 10:49 renderD128
verdin-imx8mm-06944605:~$ ls -la /sys/class/drm
total 0
drwxr-xr-x  2 root root    0 Oct 28 10:59 .
drwxr-xr-x 82 root root    0 Oct 28 10:51 ..
lrwxrwxrwx  1 root root    0 Oct 28 11:03 card0 -> ../../devices/platform/38000000.gpu/drm/card0
lrwxrwxrwx  1 root root    0 Oct 28 11:03 card1 -> ../../devices/platform/soc@0/soc@0:bus@32c00000/soc@0:bus@32c00000:display-subsystem/drm/card1
lrwxrwxrwx  1 root root    0 Oct 28 11:03 card1-DSI-1 -> ../../devices/platform/soc@0/soc@0:bus@32c00000/soc@0:bus@32c00000:display-subsystem/drm/card1/card1-DSI-1
lrwxrwxrwx  1 root root    0 Oct 28 11:03 renderD128 -> ../../devices/platform/38000000.gpu/drm/renderD128
-r--r--r--  1 root root 4096 Oct 28 11:03 version

There are some error messages but works fine after, so I am not sure if the errors are relevant …

verdin-imx8mm-06944605:~$ dmesg | grep Goodix
[    7.541795] Goodix-TS 1-005d: 1-005d supply AVDD28 not found, using dummy regulator
[    7.541881] Goodix-TS 1-005d: 1-005d supply VDDIO not found, using dummy regulator
[    7.653341] Goodix-TS 1-005d: ID 928, version: 1040
[    7.653458] Goodix-TS 1-005d: Direct firmware load for goodix_928_cfg.bin failed with error -2
[    7.660622] input: Goodix Capacitive TouchScreen as /devices/platform/soc@0/soc@0:bus@30800000/30a30000.i2c/i2c-1/1-005d/input/input2

Complete log of the weston-touch-calibrator run

verdin-imx8mm-06944605:~$ docker run -ti --rm -e ACCEPT_FSL_EULA=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: 2021-10-28 UTC
[11:28:30.400] weston 9.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 9.0.0
[11:28:30.401] Command line: /usr/bin/weston
[11:28:30.401] OS: Linux, 5.4.129-5.4.0+git.cb88cc157bfb, #1-TorizonCore SMP PREEMPT Wed Sep 29 18:17:21 UTC 2021, aarch64
[11:28:30.401] 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:28:30.402] Using config file '/etc/xdg/weston/weston.ini'
[11:28:30.403] Output repaint window is 7 ms maximum.
[11:28:30.403] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/drm-backend.so'
[11:28:30.413] initializing drm backend
[11:28:30.414] logind: not running in a systemd session
[11:28:30.414] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[11:28:30.418] using /dev/dri/card1
[11:28:30.418] DRM: supports atomic modesetting
[11:28:30.418] DRM: does not support GBM modifiers
[11:28:30.418] DRM: supports picture aspect ratio
[11:28:30.419] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/gl-renderer.so'
[11:28:30.428] EGL client extensions: EGL_EXT_client_extensions
               EGL_EXT_platform_base EGL_KHR_platform_wayland
               EGL_EXT_platform_wayland EGL_KHR_platform_gbm
[11:28:30.431] EGL version: 1.5
[11:28:30.432] EGL vendor: Vivante Corporation
[11:28:30.432] EGL client APIs: OpenGL_ES OpenVG
[11:28:30.432] 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_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
[11:28:30.433] EGL_KHR_surfaceless_context available
[11:28:30.437] GL version: OpenGL ES 2.0 V6.4.3.p1.305572
[11:28:30.438] GLSL version: OpenGL ES GLSL ES 1.0.0
[11:28:30.438] GL vendor: Vivante Corporation
[11:28:30.438] GL renderer: Vivante GC7000NanoUltra
[11:28:30.438] GL extensions: 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_required_internalformat
               GL_OES_surfaceless_context GL_OES_texture_border_clamp
               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_robustness
               GL_EXT_texture_sRGB_decode GL_EXT_texture_border_clamp
               GL_EXT_texture_rg GL_VIV_direct_texture
[11:28:30.438] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: no
               EGL Wayland extension: yes
[11:28:30.447] event1  - gpio-keys: is tagged by udev as: Keyboard
[11:28:30.447] event1  - gpio-keys: device is a keyboard
[11:28:30.451] event0  - 30370000.snvs:snvs-powerkey: is tagged by udev as: Keyboard
[11:28:30.451] event0  - 30370000.snvs:snvs-powerkey: device is a keyboard
[11:28:30.455] event2  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[11:28:30.455] event2  - Goodix Capacitive TouchScreen: device is a keyboard
[11:28:30.455] event2  - Goodix Capacitive TouchScreen: device is a touch device
[11:28:30.474] libinput: configuring device "gpio-keys".
[11:28:30.474] libinput: configuring device "30370000.snvs:snvs-powerkey".
[11:28:30.474] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/platform/soc@0/soc@0:bus@30800000/30a30000.i2c/i2c-1/1-005d/input/input2/event2
[11:28:30.474] libinput: configuring device "Goodix Capacitive TouchScreen".
[11:28:30.474] input device event2 has no enabled output associated (none named), skipping calibration for now.
[11:28:30.475] DRM: head 'DSI-1' found, connector 35 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[11:28:30.475] Registered plugin API 'weston_drm_output_api_v1' of size 24
[11:28:30.475] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 48
[11:28:30.485] 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)
[11:28:30.485] Output DSI-1 (crtc 33) video modes:
               720x1280@58.3, preferred, current, 60.0 MHz
[11:28:30.485] associating input device event1 with output DSI-1 (none by udev)
[11:28:30.485] associating input device event0 with output DSI-1 (none by udev)
[11:28:30.485] associating input device event2 with output DSI-1 (none by udev)
[11:28:30.486] Output 'DSI-1' enabled with head(s) DSI-1
[11:28:30.486] 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:28:30.487] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
[11:28:30.488] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
[11:28:30.492] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/xwayland.so'
[11:28:30.514] Registered plugin API 'weston_xwayland_v1' of size 32
[11:28:30.514] Registered plugin API 'weston_xwayland_surface_v1' of size 16
[11:28:30.515] xserver listening on display :0
[11:28:30.516] launching '/usr/lib/aarch64-linux-gnu/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.

Thanks,
Jaume

Hi @jcabecerans ,

Thank you for using the Toradex community.

We are having a look at your question. In the meantime I suggest you give the community post below a quick read.

This post seems to be very similar to your question.

Best Regards
Kevin

Hi @kevin.tx ,

Yes, I had a look through it before posting.
But I think in that post he had issues because he was using two displays, I am using only one so I think our issues might be unrelated.

Thanks,
Jaume

Hi @jcabecerans ,

sorry for the delay. Just to be sure could you provide your device tree file? Did you do any changes to the device tree yourself?

It might be possible that some configuration there is causing the issue.

Best Regards
Kevin

Hi @kevin.tx,

Yes, I do apply some device tree overlays.
I will append them here once I am back in office tomorrow.

Thanks,
Jaume

Hi @kevin.tx,

The device tree I am using is the imx8mm-verdin-wifi-dev.dts from branch toradex_5.4-2.3.x-imx (which I haven’t modified).

I am using the following overlay:
overlay.dts (3.6 KB)

Thanks,
Jaume

Hi @jcabecerans ,

Thank you for the device tree. I’ll have a look.

Meanwhile, we would need to receive more information on your project. Would you mind reaching out to your account manager?

Best Regards
Kevin

Hi @kevin.tx,

Sorry, I don’t know who is my account manager.
How might I contact him/her ?

Thanks,
Jaume

Hi Jaume,

This is Walter. I’d be your KAM :slight_smile:
Anyway, do not worry, I settled this.
@kevin.tx please go ahead and provide support to Jaume

1 Like

Hi @kevin.tx @walter.tx,

Is there any update on this issue ?

In the meantime I have managed to “calibrate it by hand” by fooling the goodix in the device tree and passing it the wrong screen size:

	touchscreen@5d {
		compatible = "goodix,gt928";
      .....
		touchscreen-size-x = <1000>;
		touchscreen-size-y = <1760>;
	};

Thanks,
Jaume

Hi @jcabecerans ,

sorry for the delay. Thanks for the update.

We’ll update you as soon as possible.

Best Regards
Kevin

Dear @jcabecerans ,

Thank you for all the detailed logs.

I would have some clarifying questions for us to better isolate the issue.

  • Does your touch not work at all? or your Touch is off? And this kind of calibration is used generally for resistive displays, but you seem to be using the capacitive display. is there a reason why would want to calibrate?

  • I see from your ls -al /dev/input/ out that there is no mention of the touchscreen, even though event2 mentions ID_INPUT_TOUCHSCREEN=1. I was expecting to see something like lrwxrwxrwx 1 root root 6 Oct 28 10:49 touchscreen0 -> event0. This seems strange. Was your touch ever working at all?

  • Could you try to use evtest and see if your touch is being up?
    If not, could you maybe re-check the connections?

  • Could you maybe share the output of cat overlays.txt? I would like to see if you have enabled all the right overlays.
    Alternatively, you could also cross-check yourself here.

  • You also mentioned that you tried to alter the resolution. Could you maybe tell us why? Was your resolution a bit off too?

Best Regards,
Janani

Hi @saijanani.tx,

  • Does your touch not work at all? or your Touch is off? And this kind of calibration is used generally for resistive displays, but you seem to be using the capacitive display. is there a reason why would want to calibrate?
  • I see from your ls -al /dev/input/ out that there is no mention of the touchscreen, even though event2 mentions ID_INPUT_TOUCHSCREEN=1 . I was expecting to see something like lrwxrwxrwx 1 root root 6 Oct 28 10:49 touchscreen0 -> event0 . This seems strange. Was your touch ever working at all?

Yes, touch works. But it is off.
If my kind of panel does not need calibration, what do you think the reason for it beeing off could be ?

  • Could you try to use evtest and see if your touch is being up?
    If not, could you maybe re-check the connections?

evtest_result.txt (30.5 KB)

  • Could you maybe share the output of cat overlays.txt ? I would like to see if you have enabled all the right overlays.
    Alternatively, you could also cross-check yourself here.

I am using a custom overlay on a custom carrier board. It is loading it correctly as the display wouldn’t turn on without it.
overlay.dts (3.9 KB)

  • You also mentioned that you tried to alter the resolution. Could you maybe tell us why? Was your resolution a bit off too?

I opened a shell inside the weston container and tried out some of the tools available

docker exec -it torizon_weston_1 bash

I tried weston-transformed and weston-simple-touch.
This allowed me to quantize the extent of the distorsion. I realized that by modifiying the resolution
passed to the Goodix touch driver I could alter the distorsion. I tried a few values untill I got it to a point int worked “good enough”.

According to the manufacturer it should be:

	touchscreen@5d {
		compatible = "goodix,gt928";
      .....
		touchscreen-size-x = <720>;  // vs <1000>
		touchscreen-size-y = <1280>; // vs <1760>
	};

To reiterate, I modified “resolution” passed to the Goodix touch driver but not the one to the display driver.

Please, don’t hesitate to let me know if you need more information.

Thanks,
Jaume

Hello @jcabecerans ,

Thank you for this information.

Did the evtest respond to your touch? I mean was the touch detected every time in evtest?

BR, Janani

Hi @jcabecerans

Just to chime in with a suggestion. Maybe as a sanity check you could try using the Touch Calibrator tool to see if it helps at all. Of course as said previously the tool is meant for DPI interface displays with resistive touch interfaces. But it might be worth a try anyways.

Fortunately the source for the touch calibrator tool is available here: debian-docker-images/weston-touch-calibrator at bullseye · toradex/debian-docker-images · GitHub

You can try to modify and re-build so that it works with your display here. Then we can see if the calibration solves the issue. If not then we can at least narrow our list of possible issues.

Best Regards,
Jeremias