TorizonOS kernel module "clash"

Hi all,

hope you are all well!

I am currently testing Torizon OS 6.4 and 6.5.0-develop with our customizations for our inhouse carrier board. In the TorizonCore 5.7.2 we were missing a driver for our touch controller, so I put the in-tree driver code into an out-of-tree kernel module, loaded it using torizoncore-builder tool and later updated the driver by backporting the version from linux kernel 5.17 that we find is way more satisfying in scroll behavior.
Starting with Torizon OS 6.4, I suddenly observed a strange throwback in scroll behavior from pipeline builds and started to investigate why my local build still works perfectly fine. To be more clear, we use TEZI for first-time installation in production, but I use torizoncore-builder deploy locally. I guess that my local build replaces the loaded modules on my device using ostree, whereas TEZI installation flashes the device. What I found out so far seems to be a pretty obvious clash in kernel module, as the Torizon OS 6.4 seems to already have a driver ready for our touch controller ili210x.ko:

torizon@apalis-imx8-14798127:~$ ls /lib/modules/5.15.129-6.5.0-devel+git.6f32493eb88e/kernel/drivers/input/touchscreen/ -alh
total 732K
drwxr-xr-x 3 root root 4.0K Jan  1  1970 .
drwxr-xr-x 7 root root 4.0K Jan  1  1970 ..
-rw-r--r-- 2 root root  24K Jan  1  1970 ad7877.ko
-rw-r--r-- 2 root root  34K Jan  1  1970 ads7846.ko
-rw-r--r-- 2 root root 9.9K Jan  1  1970 ar1021_i2c.ko
-rw-r--r-- 2 root root  58K Jan  1  1970 atmel_mxt_ts.ko
-rw-r--r-- 2 root root  15K Jan  1  1970 colibri-vf50-ts.ko
-rw-r--r-- 2 root root  38K Jan  1  1970 edt-ft5x06.ko
-rw-r--r-- 2 root root  12K Jan  1  1970 eeti_ts.ko
-rw-r--r-- 2 root root  46K Jan  1  1970 elants_i2c.ko
-rw-r--r-- 2 root root  15K Jan  1  1970 elo.ko
-rw-r--r-- 2 root root  17K Jan  1  1970 exc3000.ko
-rw-r--r-- 2 root root  36K Jan  1  1970 goodix.ko
-rw-r--r-- 2 root root  19K Jan  1  1970 ili210x.ko
-rw-r--r-- 2 root root  23K Jan  1  1970 ilitek_ts_i2c.ko
-rw-r--r-- 2 root root  12K Jan  1  1970 max11801_ts.ko
-rw-r--r-- 2 root root  14K Jan  1  1970 mc13783_ts.ko
-rw-r--r-- 2 root root  11K Jan  1  1970 penmount.ko
-rw-r--r-- 2 root root  20K Jan  1  1970 pixcir_i2c_ts.ko
-rw-r--r-- 2 root root  30K Jan  1  1970 raydium_i2c_ts.ko
-rw-r--r-- 2 root root  13K Jan  1  1970 resistive-adc-touch.ko
-rw-r--r-- 2 root root  21K Jan  1  1970 rohm_bu21023.ko
-rw-r--r-- 2 root root  26K Jan  1  1970 silead.ko
-rw-r--r-- 2 root root  13K Jan  1  1970 sis_i2c.ko
-rw-r--r-- 2 root root  15K Jan  1  1970 st1232.ko
-rw-r--r-- 2 root root  25K Jan  1  1970 stmfts.ko
-rw-r--r-- 2 root root  23K Jan  1  1970 sx8654.ko
drwxr-xr-x 2 root root 4.0K Jan  1  1970 synaptics_dsx
-rw-r--r-- 2 root root 7.8K Jan  1  1970 tsc2004.ko
-rw-r--r-- 2 root root 8.1K Jan  1  1970 tsc2005.ko
-rw-r--r-- 2 root root  22K Jan  1  1970 tsc2007.ko
-rw-r--r-- 2 root root  22K Jan  1  1970 tsc200x-core.ko
-rw-r--r-- 2 root root  43K Jan  1  1970 usbtouchscreen.ko
torizon@apalis-imx8-14798127:~$ cat /etc/os-release
ID=torizon
NAME="TorizonCore"
VERSION="6.5.0-devel-202311+build.14 (kirkstone)"
VERSION_ID=6.5.0-devel-202311-build.14
PRETTY_NAME="TorizonCore 6.5.0-devel-202311+build.14 (kirkstone)"
DISTRO_CODENAME="kirkstone"
BUILD_ID="14"
ANSI_COLOR="1;34"
VARIANT="Docker"

And here comes my question: Is there an easy way to replace an existing module using torizoncore-builder tool? We really want to use the /drivers/input/touchscreen/ili210x.c from kernel version v5.17.

Best regards,

I managed to get the module “replaced” by renaming the custom version to ili2511 and blacklisting the one already present in Torizon OS 6.2

/usr/etc/.tcattr:

# file: modprobe.d/blacklist.conf
# owner: 0
# group: 0
user::rw-
group::r--
other::r--

/usr/etc/modprobe.d/blacklist.conf

blacklist ili210x

I hope this will help others, but I would also like to know if there is an official way to do things in such a case.

Best regards,

Hi @bgo ,

Glad you managed to find a solution!

To clarify: When we developed TorizonCore Builder, we only considered the use case of adding kernel modules to a Torizon OS image, not replacing an existing module with a custom one.

So currently with TorizonCore Builder we don’t have a recommended way to substitute or remove an existing kernel module already present in the image. In these cases we recommend customization via Yocto.

This may change depending on the demand for this feature and the complexity of incorporating it into TorizonCore Builder.

Best regards,
Lucas Akira

1 Like