Hi
I have the following system:
Software summary
------------------------------------------------------------
Bootloader: U-Boot
Kernel version: 6.6.119-7.5.0-00057-g86497e203ba0 #1-Torizon SMP PREEMPT Mon Jun 30 14:11:55 UTC 2025
Kernel command line: root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.0/torizon/947b90f5159fced3e491e121c1c98ccfe5727fa6e37548cfb450b0303924db64/0
Distro name: NAME="Torizon OS Upstream"
Distro version: VERSION_ID=7.5.0-build.30
Distro variant: VARIANT="Docker"
Hostname: colibri-imx7-emmc-07311078
------------------------------------------------------------
Hardware info
------------------------------------------------------------
HW model: Toradex Colibri iMX7D 1GB (eMMC) on Colibri Evaluation Board V3
Toradex version: 0039 V1.1B
Serial number: 07311078
Processor arch: armv7l
------------------------------------------------------------
I would like the touch screen to have the 0,0 co-ordinate system in the top, left corner and the max co-ordinates in the lower, right corner.
Currently, the y axis is flipped, with the 0, 0 in the lower, left and max co-ordinates in the top, right.
This is seen by executing evtest:
$ 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: AD7879 Touchscreen
/dev/input/event1: gpio-keys
/dev/input/event2: Logitech USB Optical Mouse
/dev/input/event3: HP HP Conferencing Keyboard
/dev/input/event4: HP HP Conferencing Keyboard System Control
/dev/input/event5: HP HP Conferencing Keyboard Consumer Control
Select the device event number [0-5]: 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 3559
Min 0
Max 4095
Event code 1 (ABS_Y)
Value 490
Min 0
Max 4095
Event code 24 (ABS_PRESSURE)
Value 0
Min 0
Max 4096
Properties:
Testing ... (interrupt to exit)
Event: time 1774958933.796724, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1774958933.796724, type 3 (EV_ABS), code 0 (ABS_X), value 331
Event: time 1774958933.796724, type 3 (EV_ABS), code 1 (ABS_Y), value 596
Event: time 1774958933.796724, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 110
Event: time 1774958933.796724, -------------- SYN_REPORT ------------
Event: time 1774958933.809312, type 3 (EV_ABS), code 0 (ABS_X), value 339
Event: time 1774958933.809312, type 3 (EV_ABS), code 1 (ABS_Y), value 603
Event: time 1774958933.809312, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 78
Event: time 1774958933.809312, -------------- SYN_REPORT ------------
Event: time 1774958933.821742, type 3 (EV_ABS), code 0 (ABS_X), value 325
Event: time 1774958933.821742, type 3 (EV_ABS), code 1 (ABS_Y), value 617
Event: time 1774958933.821742, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64
Event: time 1774958933.821742, -------------- SYN_REPORT ------------
Event: time 1774958933.834425, type 3 (EV_ABS), code 0 (ABS_X), value 324
Event: time 1774958933.834425, type 3 (EV_ABS), code 1 (ABS_Y), value 615
Event: time 1774958933.834425, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 61
Event: time 1774958933.834425, -------------- SYN_REPORT ------------
Event: time 1774958933.846973, type 3 (EV_ABS), code 0 (ABS_X), value 320
Event: time 1774958933.846973, type 3 (EV_ABS), code 1 (ABS_Y), value 619
Event: time 1774958933.846973, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 58
Event: time 1774958933.846973, -------------- SYN_REPORT ------------
Event: time 1774958933.859423, type 3 (EV_ABS), code 1 (ABS_Y), value 621
Event: time 1774958933.859423, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 56
Event: time 1774958933.859423, -------------- SYN_REPORT ------------
Event: time 1774958933.871703, type 3 (EV_ABS), code 0 (ABS_X), value 321
Event: time 1774958933.871703, type 3 (EV_ABS), code 1 (ABS_Y), value 620
Event: time 1774958933.871703, -------------- SYN_REPORT ------------
Event: time 1774958933.884162, type 3 (EV_ABS), code 0 (ABS_X), value 320
Event: time 1774958933.884162, type 3 (EV_ABS), code 1 (ABS_Y), value 623
Event: time 1774958933.884162, -------------- SYN_REPORT ------------
Event: time 1774958933.896686, type 3 (EV_ABS), code 0 (ABS_X), value 313
Event: time 1774958933.896686, type 3 (EV_ABS), code 1 (ABS_Y), value 625
Event: time 1774958933.896686, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 57
Event: time 1774958933.896686, -------------- SYN_REPORT ------------
Event: time 1774958933.909134, type 3 (EV_ABS), code 0 (ABS_X), value 315
Event: time 1774958933.909134, type 3 (EV_ABS), code 1 (ABS_Y), value 626
Event: time 1774958933.909134, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 65
Event: time 1774958933.909134, -------------- SYN_REPORT ------------
Event: time 1774958933.963808, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1774958933.963808, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1774958933.963808, -------------- SYN_REPORT ------------
Event: time 1774958938.117586, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1774958938.117586, type 3 (EV_ABS), code 0 (ABS_X), value 3711
Event: time 1774958938.117586, type 3 (EV_ABS), code 1 (ABS_Y), value 3518
Event: time 1774958938.117586, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 85
Event: time 1774958938.117586, -------------- SYN_REPORT ------------
Event: time 1774958938.130109, type 3 (EV_ABS), code 0 (ABS_X), value 3700
Event: time 1774958938.130109, type 3 (EV_ABS), code 1 (ABS_Y), value 3528
Event: time 1774958938.130109, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 70
Event: time 1774958938.130109, -------------- SYN_REPORT ------------
Event: time 1774958938.142461, type 3 (EV_ABS), code 0 (ABS_X), value 3698
Event: time 1774958938.142461, type 3 (EV_ABS), code 1 (ABS_Y), value 3543
Event: time 1774958938.142461, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 58
Event: time 1774958938.142461, -------------- SYN_REPORT ------------
Event: time 1774958938.155001, type 3 (EV_ABS), code 0 (ABS_X), value 3700
Event: time 1774958938.155001, type 3 (EV_ABS), code 1 (ABS_Y), value 3550
Event: time 1774958938.155001, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 57
Event: time 1774958938.155001, -------------- SYN_REPORT ------------
Event: time 1774958938.167465, type 3 (EV_ABS), code 0 (ABS_X), value 3692
Event: time 1774958938.167465, type 3 (EV_ABS), code 1 (ABS_Y), value 3552
Event: time 1774958938.167465, -------------- SYN_REPORT ------------
Event: time 1774958938.180020, type 3 (EV_ABS), code 0 (ABS_X), value 3686
Event: time 1774958938.180020, type 3 (EV_ABS), code 1 (ABS_Y), value 3529
Event: time 1774958938.180020, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 62
Event: time 1774958938.180020, -------------- SYN_REPORT ------------
Event: time 1774958938.233799, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1774958938.233799, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1774958938.233799, -------------- SYN_REPORT ------------
So, I know the hardware is working but the driver configuration and calibration is out.
if I execute the docker container:
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
It does not work:
[12:11:02.101] Output DPI-1 (crtc 35) video modes:
800x480@60.1, preferred, current, 33.2 MHz
[12:11:02.101] associating input device event1 with output DPI-1 (none by udev)
[12:11:02.101] associating input device event0 with output DPI-1 (none by udev)
[12:11:02.103] associating input device event2 with output DPI-1 (none by udev)
[12:11:02.104] associating input device event3 with output DPI-1 (none by udev)
[12:11:02.104] associating input device event4 with output DPI-1 (none by udev)
[12:11:02.104] associating input device event5 with output DPI-1 (none by udev)
[12:11:02.104] Output 'DPI-1' enabled with head(s) DPI-1
[12:11:02.104] Compositor capabilities:
arbitrary surface rotation: yes
screen capture uses y-flip: yes
cursor planes: yes
arbitrary resolutions: no
view mask clipping: yes
explicit sync: no
color operations: yes
presentation clock: CLOCK_MONOTONIC, id 1
presentation clock resolution: 0.000000001 s
[12:11:02.106] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[12:11:02.109] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[12:11:02.116] 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.
[12:11:02.117] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-10/xwayland.so'
[12:11:02.180] Registered plugin API 'weston_xwayland_v1' of size 16
[12:11:02.186] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[12:11:02.187] xserver listening on display :0
[12:11:02.187] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
wayland-1
[12:11:03.222] failed to create kms fb: Invalid argument
[12:11:03.222] failed to get drm_fb for bo
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-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'
weston-touch-calibrator error: "Unknown-1" was not found.
[12:11:05.784] failed to create kms fb: Invalid argument
[12:11:05.785] failed to get drm_fb for bo
There is no screen output for me to calibrate to.
I have read:
https://developer.toradex.com/linux-bsp/application-development/multimedia/resistive-touch-screen-linux
and executed the docker container from this page:
https://developer.toradex.com/torizon/application-development/use-cases/multimedia/touch-screen-calibration-torizon/
To switch the Y-axis I believe I need to execute the calibration container which currently fails.
What am I missing to get the calibration container to work?
Lloyd