Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App cannot read the data using st_imu68 driver #7

Open
toni1727 opened this issue Jan 3, 2021 · 1 comment
Open

App cannot read the data using st_imu68 driver #7

toni1727 opened this issue Jan 3, 2021 · 1 comment

Comments

@toni1727
Copy link

toni1727 commented Jan 3, 2021

Hello and Happy new year!,

I'm using the LSM9DS1 sensor and i added the st_imu68 IIO driver into my kernel.

https://github.com/STMicroelectronics/STMems_Linux_IIO_drivers/tree/linux-4.14.y-gh/drivers/iio/imu/st_imu68

Inside /sys/bus/iio/devices i can read raw devices. So the driver is working fine.

But the app still cannot read the data.

The LOG is this:

image

image
image

ueventd.rc

#common iio char devices
/dev/iio:device* 0666 system system

#common sensors files

/sys/bus/iio/devices/iio:device* buffer/enable 0666 system system
/sys/bus/iio/devices/iio:device* buffer/length 0666 system system
/sys/bus/iio/devices/iio:device* buffer/watermark 0666 system system

/sys/bus/iio/devices/iio:device* dev 0666 system system

/sys/bus/iio/devices/iio:device* sampling_frequency 0666 system system
/sys/bus/iio/devices/iio:device* sampling_frequency_available 0666 system system

/sys/bus/iio/devices/iio:device* scan_elements/in_timestamp_en 0666 system system
/sys/bus/iio/devices/iio:device* scan_elements/in_timestamp_index 0666 system system
/sys/bus/iio/devices/iio:device* scan_elements/in_timestamp_type 0666 system system

/sys/bus/iio/devices/iio:device* hwfifo_flush 0666 system system
/sys/bus/iio/devices/iio:device* hwfifo_enabled 0666 system system
/sys/bus/iio/devices/iio:device* hwfifo_watermark 0666 system system
/sys/bus/iio/devices/iio:device* injection_mode 0666 system system
/sys/bus/iio/devices/iio:device* trigger/current_trigger 0666 system system

#accelerometer sensor
/sys/bus/iio/devices/iio:device* scan_elements/in_accel_x_en 0666 system system
/sys/bus/iio/devices/iio:device* scan_elements/in_accel_y_en 0666 system system
/sys/bus/iio/devices/iio:device* scan_elements/in_accel_z_en 0666 system system
/sys/bus/iio/devices/iio:device* in_accel_x_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_accel_y_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_accel_z_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_accel_x_raw 0666 system system
/sys/bus/iio/devices/iio:device* in_accel_y_raw 0666 system system
/sys/bus/iio/devices/iio:device* in_accel_z_raw 0666 system system

/sys/bus/iio/devices/iio:device* in_accel_injection_raw 0666 system system

#magnetometer sensor
/sys/bus/iio/devices/iio:device* scan_elements/in_magn_x_en 0666 system system
/sys/bus/iio/devices/iio:device* scan_elements/in_magn_y_en 0666 system system
/sys/bus/iio/devices/iio:device* scan_elements/in_magn_z_en 0666 system system
/sys/bus/iio/devices/iio:device* in_magn_x_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_magn_y_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_magn_z_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_magn_x_raw 0666 system system
/sys/bus/iio/devices/iio:device* in_magn_y_raw 0666 system system
/sys/bus/iio/devices/iio:device* in_magn_z_raw 0666 system system

#gyroscope sensor
/sys/bus/iio/devices/iio:device* scan_elements/in_anglvel_x_en 0666 system system
/sys/bus/iio/devices/iio:device* scan_elements/in_anglvel_y_en 0666 system system
/sys/bus/iio/devices/iio:device* scan_elements/in_anglvel_z_en 0666 system system
/sys/bus/iio/devices/iio:device* in_anglvel_x_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_anglvel_y_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_anglvel_z_scale 0666 system system
/sys/bus/iio/devices/iio:device* in_anglvel_x_raw 0666 system system
/sys/bus/iio/devices/iio:device* in_anglvel_y_raw 0666 system system
/sys/bus/iio/devices/iio:device* in_anglvel_z_raw 0666 system system

Dts file (I don't have an IRQ pin physically connected. I don't know if that is mandatory. Or the configuration would have to be different.):

lsm9ds1_ag@6b {
		compatible = "st,lsm9ds1";
		reg = <0x6B>;
		status = "okay";			
		interrupt-parent = <&intc>;
		interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "ag_irq";
		pinctrl-names = "default";
		rot-matrix = /bits/ 16 <(1) (0) (0)
		(0) (1) (0)
		(0) (0) (1)>;
		g-poll-interval = <100>;
		g-min-interval = <2>;
		g-fs-range = <0>;
		x-poll-interval = <100>;
		x-min-interval = <1>;
		x-fs-range = <0>;
		aa-filter-bw = <0>;			
};
lsm9ds1_m@1e{
		compatible = "st,lsm9ds1_magn";
		reg = <0x1E>;
		status = "okay";			
		interrupt-parent = <&intc>;
		interrupts = <0 90 IRQ_TYPE_LEVEL_HIGH>;	
		interrupt-names = "m_irq";	
		pinctrl-names = "default";
		rot-matrix = /bits/ 16 <(1) (0) (0)
                     (0) (1) (0)
                     (0) (0) (1)>;
        		poll-interval = <100>;
        		min-interval = <13>;
        		fs-range = <0>;			
};

image

'cat /proc/interrupts'

image

Also I modified SELinux policy: (I don't know if that is necesary)

############################################################
STSensors.te

type STSensors, domain, mlstrustedsubject, coredomain;
type STSensors_exec, exec_type, file_type;

# Started by init
init_daemon_domain(STSensors)

# Access to /persist/STSensors
allow STSensors persist_file:dir r_dir_perms;
allow STSensors persist_STSensors_file:dir rw_dir_perms;
allow STSensors persist_STSensors_file:file create_file_perms;

# Access to /data/STSensorHAL
allow STSensors system_data_file:dir  { create_dir_perms getattr };
allow STSensors system_data_file:file create_file_perms;

# This part is to be used if APK is used to get calibration data
allow STSensors app_data_file:dir  { rw_dir_perms getattr };
allow STSensors app_data_file:file rw_file_perms;

############################################################

But I received two errors when I compile:

STSensors.te:8:ERROR 'unknown type persist_file' at token ';'

"ERROR: permissive domains not allowed in user builds"
violated by allow STSensors system_data_file:file { write create setattr append unlink rename }

@PritamSSahoo01
Copy link

PritamSSahoo01 commented Oct 6, 2023

Hi @toni1727
Have you resolved the integration of LSM9DS1 in your source code and getting the value through the apk file successfully??
I am also trying to integrate LSM6DSM sensor with my Android 11 source code and i have followed the steps as mentioned in the link:https://github.com/STMicroelectronics/STMems_Android_Sensor_HAL_IIO.git .

i have tried both the way in the mentioned Documentation Steps. First i have followed the Selftest tool manual and during compilation i got many errors.Then i followed the Factory calibration option and also i am getting the same error as you as:
16:42:51 ************************************************************
16:42:51 You are building on a machine with 7.64GB of RAM
16:42:51
16:42:51 The minimum required amount of free memory is around 16GB,
16:42:51 and even with that, some configurations may not work.
16:42:51
16:42:51 If you run into segfaults or other errors, try reducing your
16:42:51 -j value.
16:42:51 ************************************************************

PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=11
TARGET_PRODUCT=phyboard_polis
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=cortex-a53
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a9
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.4.0-150-generic-x86_64-Ubuntu-18.04.6-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=RQ1A.201205.003
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl external/mesa3d vendor/nxp-opensource/imx/power hardware/google/pixel vendor/partner_gms hardware/google/camera vendor/nxp-
opensource/imx/camera

[ 1% 24/1701] build out/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows
FAILED: out/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows
/bin/bash -c "(ASAN_OPTIONS=detect_leaks=0 out/host/linux-x86/bin/checkpolicy -M -c 30 -o out/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows.tm
p out/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_intermediates/policy.conf ) && (out/host/linux-x86/bin/sepolicy-analyze out/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_i
ntermediates/sepolicy_neverallows.tmp neverallow -w -f out/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_intermediates/policy_2.conf || ( echo "" 1>&2; echo "sepolicy-analyze
failed. This is most likely due to the use" 1>&2; echo "of an expanded attribute in a neverallow assertion. Please fix" 1>&2; echo "the policy." 1>&2; exit 1 ) ) && (touch ou
t/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows.tmp ) && (mv out/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_nevera
llows.tmp out/target/product/phyboard_polis/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows )"
device/nxp/imx8m/sepolicy/STSensors.te:8:ERROR 'unknown type persist_file' at token ';' on line 58506:

Access to /persist/STSensors

allow STSensors persist_file:dir { open getattr read search ioctl lock watch watch_reads };
checkpolicy: error(s) encountered while parsing configuration
[ 1% 25/1701] build out/target/product/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/sepolicy
FAILED: out/target/product/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/sepolicy
/bin/bash -c "(ASAN_OPTIONS=detect_leaks=0 out/host/linux-x86/bin/checkpolicy -M -c 30 -o out/target/product/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/sepolicy.tmp out/target/pro
duct/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/sepolicy.recovery.conf ) && (out/host/linux-x86/bin/sepolicy-analyze out/target/product/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/
sepolicy.tmp permissive > out/target/product/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/sepolicy.permissivedomains ) && (if [ "userdebug" = "user" -a -s out/target/product/phyboard_polis/
obj/ETC/sepolicy.recovery_intermediates/sepolicy.permissivedomains ]; then echo "==========" 1>&2; echo "ERROR: permissive domains not allowed in user builds" 1>&2; e
cho "List of invalid domains:" 1>&2; cat out/target/product/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/sepolicy.permissivedomains 1>&2; exit 1; fi ) && (mv
out/target/product/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/sepolicy.tmp out/target/product/phyboard_polis/obj/ETC/sepolicy.recovery_intermediates/sepolicy )"
device/nxp/imx8m/sepolicy/STSensors.te:8:ERROR 'unknown type persist_file' at token ';' on line 62204:

Access to /persist/STSensors

allow STSensors persist_file:dir { open getattr read search ioctl lock watch watch_reads };
checkpolicy: error(s) encountered while parsing configuration
16:43:16 ninja failed with: exit status 1

failed to build some targets (28 seconds)

Any solution to deal with the error??

Thanks in advance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants