STMicroelectronics / STMems_Android_Sensor_HAL_IIO

DISCONTINUED (October 2022): the maintenance for this repository has been discontinued. Please refer to https://github.com/STMicroelectronics/st-mems-android-linux-sensors-hal for the up-to-date HAL repository. This repository contains ST Android sensor Hardware Abstraction Layer (HAL) for MEMS Linux IIO drivers
Apache License 2.0
34 stars 21 forks source link

Missing /sys paths. Is this SensorHAL compatible with just one particular Linux version? #12

Open fadedbee opened 2 years ago

fadedbee commented 2 years ago

I want to use the LSM6DSRX with Android 10, on a iMX8, where our vendor-provided kernel is Linux v4.19.42.

In the meantime, I've added support for the LSM6DSRX to this SensorHAL, by following the changes in the commit which added support for the LSM6DSR: https://github.com/STMicroelectronics/STMems_Android_Sensor_HAL_IIO/commit/b881cc23546473653e3feccfe57ce2d3f8f3b34b#diff-fb707bbb2b47122299b6dab9e5b27be184c6df6fa3707ca81c2fbd0770f57673

I've also added kernel support for the LSM6DSRX by backporting the driver from v5.14-rc7 to v4.19.42.

(I also had to revert https://patchwork.kernel.org/project/linux-iio/patch/20190801143908.27608-1-martin.kepplinger@puri.sm/ in order to get in_accel_x_scale to appear. After this, the SensorHAL was happy to start.)

I now find that Android can see the LSM6DSRX, but that Android gets no events from it.

After adding extensive logging to util.cpp, I can see many paths in /sys which the SensorHAL is expecting but which the Linux kernel driver does not provide. (The Linux kernel drivers can change what is in /sys with each release. I don't think that /sys is a stable interface.)

The missing paths in /sys are:

fadedbee@pc:~$ grep sysfs_ boot.log -A1 | grep errno -B1 | grep sys/bus | cut -d' ' -f 12 | sort | uniq
/sys/bus/iio/devices/iio:device0/hwfifo_watermark_max
/sys/bus/iio/devices/iio:device0/in_anglvel_x_offset
/sys/bus/iio/devices/iio:device0/in_anglvel_y_offset
/sys/bus/iio/devices/iio:device0/in_anglvel_z_offset
/sys/bus/iio/devices/iio:device0/injection_mode
/sys/bus/iio/devices/iio:device0/injection_sensors
/sys/bus/iio/devices/iio:device0/in_timestamp_offset
/sys/bus/iio/devices/iio:device0/in_timestamp_scale
/sys/bus/iio/devices/iio:device1/hwfifo_watermark_max
/sys/bus/iio/devices/iio:device1/in_accel_x_offset
/sys/bus/iio/devices/iio:device1/in_accel_y_offset
/sys/bus/iio/devices/iio:device1/in_accel_z_offset
/sys/bus/iio/devices/iio:device1/injection_mode
/sys/bus/iio/devices/iio:device1/injection_sensors
/sys/bus/iio/devices/iio:device1/in_timestamp_offset
/sys/bus/iio/devices/iio:device1/in_timestamp_scale

A fuller log:


fadedbee@pc:~$ grep sysfs_ boot.log -A1
09-21 10:07:25.887  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/
09-21 10:07:25.887  3649  3649 I SensorHAL: debug &data[0].iio_sysfs_path: /sys/bus/iio/devices/iio:device1
09-21 10:07:25.887  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device1/scan_elements
09-21 10:07:25.887  3649  3649 I SensorHAL: debug sysfs_write_uint, file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_x_en, val: 1
09-21 10:07:25.887  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_x_en
09-21 10:07:25.887  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_x_en, val: 1, ret: 1
09-21 10:07:25.887  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_x_index
09-21 10:07:25.887  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_x_index, val: 0, ret: 1
09-21 10:07:25.887  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_x_scale
09-21 10:07:25.892  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_x_scale, val: 0.000598, ret: 1
09-21 10:07:25.892  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_x_offset
09-21 10:07:25.892  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.892  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device1/scan_elements
09-21 10:07:25.892  3649  3649 I SensorHAL: debug sysfs_write_uint, file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_z_en, val: 1
09-21 10:07:25.892  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_z_en
09-21 10:07:25.893  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_z_en, val: 1, ret: 1
09-21 10:07:25.893  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_z_index
09-21 10:07:25.893  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_z_index, val: 2, ret: 1
09-21 10:07:25.893  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_z_scale
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_z_scale, val: 0.000598, ret: 1
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_z_offset
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device1/scan_elements
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_write_uint, file: /sys/bus/iio/devices/iio:device1/scan_elements/in_timestamp_en, val: 1
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_timestamp_en
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_timestamp_en, val: 1, ret: 1
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_timestamp_index
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_timestamp_index, val: 3, ret: 1
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_timestamp_scale
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_timestamp_offset
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device1/scan_elements
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_write_uint, file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_y_en, val: 1
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_y_en
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_y_en, val: 1, ret: 1
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_y_index
09-21 10:07:25.898  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_y_index, val: 1, ret: 1
09-21 10:07:25.899  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_y_scale
09-21 10:07:25.903  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_y_scale, val: 0.000598, ret: 1
09-21 10:07:25.903  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device1/in_accel_y_offset
09-21 10:07:25.903  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.903  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device1/scan_elements
09-21 10:07:25.904  3649  3649 I SensorHAL: debug euid: 1000
--
09-21 10:07:25.904  3649  3649 I SensorHAL: debug sysfs_write_int, file: /sys/bus/iio/devices/iio:device1/buffer/enable, val: 0
09-21 10:07:25.904  3649  3649 I SensorHAL: debug enable_events device_dir: /sys/bus/iio/devices/iio:device1, enable: 0
--
09-21 10:07:25.919  3649  3649 I SensorHAL: debug sysfs_read_str file: /sys/bus/iio/devices/iio:device1/sampling_frequency_available
09-21 10:07:25.925  3649  3649 I SensorHAL: debug sysfs_read_str file: /sys/bus/iio/devices/iio:device1/sampling_frequency_available, str: 13 26 52 104 208 416
09-21 10:07:25.925  3649  3649 I SensorHAL: , err: 0
--
09-21 10:07:25.930  3649  3649 I SensorHAL: debug sysfs_write_float, file: /sys/bus/iio/devices/iio:device1/in_accel_x_scale, val: 0.000598
09-21 10:07:25.940  3649  3649 I SensorHAL: debug st_hal_set_fullscale err: 0
--
09-21 10:07:25.940  3649  3649 I SensorHAL: debug sysfs_read_int file: /sys/bus/iio/devices/iio:device1/hwfifo_watermark_max
09-21 10:07:25.940  3649  3649 I SensorHAL: debug sysfs_read_int, -errno: -2
09-21 10:07:25.940  3649  3649 I SensorHAL: debug &data[1].iio_sysfs_path: /sys/bus/iio/devices/iio:device0
09-21 10:07:25.940  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device0/scan_elements
09-21 10:07:25.940  3649  3649 I SensorHAL: debug sysfs_write_uint, file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_z_en, val: 1
09-21 10:07:25.940  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_z_en
09-21 10:07:25.940  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_z_en, val: 1, ret: 1
09-21 10:07:25.940  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_z_index
09-21 10:07:25.940  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_z_index, val: 2, ret: 1
09-21 10:07:25.941  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_z_scale
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_z_scale, val: 0.000153, ret: 1
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_z_offset
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device0/scan_elements
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_write_uint, file: /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_en, val: 1
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_en
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_en, val: 1, ret: 1
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_index
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_index, val: 3, ret: 1
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_timestamp_scale
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_timestamp_offset
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.945  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device0/scan_elements
09-21 10:07:25.946  3649  3649 I SensorHAL: debug sysfs_write_uint, file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_y_en, val: 1
09-21 10:07:25.946  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_y_en
09-21 10:07:25.946  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_y_en, val: 1, ret: 1
09-21 10:07:25.946  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_y_index
09-21 10:07:25.946  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_y_index, val: 1, ret: 1
09-21 10:07:25.946  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_y_scale
09-21 10:07:25.950  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_y_scale, val: 0.000153, ret: 1
09-21 10:07:25.950  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_y_offset
09-21 10:07:25.950  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.950  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device0/scan_elements
09-21 10:07:25.950  3649  3649 I SensorHAL: debug sysfs_write_uint, file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_x_en, val: 1
09-21 10:07:25.951  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_x_en
09-21 10:07:25.951  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_x_en, val: 1, ret: 1
09-21 10:07:25.951  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_x_index
09-21 10:07:25.951  3649  3649 I SensorHAL: debug sysfs_read_uint file: /sys/bus/iio/devices/iio:device0/scan_elements/in_anglvel_x_index, val: 0, ret: 1
09-21 10:07:25.951  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_x_scale
09-21 10:07:25.955  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_x_scale, val: 0.000153, ret: 1
09-21 10:07:25.955  3649  3649 I SensorHAL: debug sysfs_read_float file: /sys/bus/iio/devices/iio:device0/in_anglvel_x_offset
09-21 10:07:25.955  3649  3649 I SensorHAL: debug sysfs_read_float, -errno: -2
09-21 10:07:25.955  3649  3649 I SensorHAL: debug sysfs_opendir, name: /sys/bus/iio/devices/iio:device0/scan_elements
09-21 10:07:25.955  3649  3649 I SensorHAL: debug euid: 1000
--
09-21 10:07:25.955  3649  3649 I SensorHAL: debug sysfs_write_int, file: /sys/bus/iio/devices/iio:device0/buffer/enable, val: 0
09-21 10:07:25.956  3649  3649 I SensorHAL: debug enable_events device_dir: /sys/bus/iio/devices/iio:device0, enable: 0
--
09-21 10:07:25.956  3649  3649 I SensorHAL: debug sysfs_read_str file: /sys/bus/iio/devices/iio:device0/sampling_frequency_available
09-21 10:07:25.957  3671  3696 I ServiceManager: Waiting for service 'package_native' on '/dev/binder'...
09-21 10:07:25.962  3649  3649 I SensorHAL: debug sysfs_read_str file: /sys/bus/iio/devices/iio:device0/sampling_frequency_available, str: 13 26 52 104 208 416
09-21 10:07:25.962  3649  3649 I SensorHAL: , err: 0
--
09-21 10:07:25.967  3649  3649 I SensorHAL: debug sysfs_write_float, file: /sys/bus/iio/devices/iio:device0/in_anglvel_x_scale, val: 0.001222
09-21 10:07:25.971  3649  3649 I android.hardwar: type=1400 audit(0.0:9): avc: denied { read } for name="iio:device1" dev="tmpfs" ino=10563 scontext=u:r:hal_sensors_default:s0 tcontext=u:object_r:iio_device:s0 tclass=chr_file permissive=1
--
09-21 10:07:25.977  3649  3649 I SensorHAL: debug sysfs_read_int file: /sys/bus/iio/devices/iio:device0/hwfifo_watermark_max
09-21 10:07:25.977  3649  3649 I SensorHAL: debug sysfs_read_int, -errno: -2
09-21 10:07:25.977  3649  3649 I SensorHAL: debug hardware/STMicroelectronics/SensorHAL_IIO/STMems_Android_Sensor_HAL_IIO/src/SensorHAL.cpp st_hal_open_sensors device_found_num: 2
--
09-21 10:07:25.977  3649  3649 I SensorHAL: debug sysfs_read_int file: /sys/bus/iio/devices/iio:device1/injection_mode
09-21 10:07:25.978  3649  3649 I SensorHAL: debug sysfs_read_int, -errno: -2
09-21 10:07:25.978  3649  3649 I SensorHAL: debug sysfs_read_str file: /sys/bus/iio/devices/iio:device1/injection_sensors
09-21 10:07:25.978  3649  3649 I SensorHAL: debug sysfs_read_str, -errno: -2
09-21 10:07:25.978  3649  3649 I SensorHAL: debug GetName
--
09-21 10:07:25.978  3649  3649 I SensorHAL: debug sysfs_read_int file: /sys/bus/iio/devices/iio:device0/injection_mode
09-21 10:07:25.978  3649  3649 I SensorHAL: debug sysfs_read_int, -errno: -2
09-21 10:07:25.978  3649  3649 I SensorHAL: debug sysfs_read_str file: /sys/bus/iio/devices/iio:device0/injection_sensors
09-21 10:07:25.978  3649  3649 I SensorHAL: debug sysfs_read_str, -errno: -2
09-21 10:07:25.978  3649  3649 I SensorHAL: debug GetName
--
09-21 10:07:53.801  3649  3719 I SensorHAL: debug sysfs_write_int, file: /sys/bus/iio/devices/iio:device1/buffer/enable, val: 0
09-21 10:07:53.801  3649  3719 I SensorHAL: debug enable_events device_dir: /sys/bus/iio/devices/iio:device1, enable: 0
--
09-21 10:07:53.823  3649  3649 I SensorHAL: debug sysfs_write_int, file: /sys/bus/iio/devices/iio:device0/buffer/enable, val: 0
09-21 10:07:53.823  3649  3649 I SensorHAL: debug enable_events device_dir: /sys/bus/iio/devices/iio:device0, enable: 0
--
09-21 10:08:02.867  3649  3719 I SensorHAL: debug sysfs_write_int, file: /sys/bus/iio/devices/iio:device1/sampling_frequency, val: 26
09-21 10:08:02.867  4097  4097 D InterruptionStateProvider: No heads up: unimportant notification: -1|android|32|null|1000
--
09-21 10:08:02.882  3649  3719 I SensorHAL: debug sysfs_write_int, file: /sys/bus/iio/devices/iio:device1/buffer/enable, val: 1
09-21 10:08:02.913  3649  3719 I SensorHAL: debug enable_events device_dir: /sys/bus/iio/devices/iio:device1, enable: 1