PROBLEM: Lenovo ALS sensor disguised under custom usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

my Lenovo Yoga 9 14IAP7 includes several sensors above the screen which
are connected to the Intel ISH of this device. The report descriptor of
the sensor hub categorizes them in a custom usage. But fields under
that usage are clearly those of a sensor.

I went ahead and activated the sensor I believed to be for ambient
light sensing and checked the values reported. The sensor behaves like
a virtual ISH sensor. It does not report values on a synchronous
request. But, when in buffered mode, reports the light-level as
expected.

A modified version of hid-sensor-custom.c allowed for other known
sensors beside the intel-custom-hinge-sensor and exposed it under a
modified name as an hid sensor. I slightly modified the
hid-sensor-als.c to allow it to bind to this device and it works
without problems.

But, maybe a little late, I'm considering whether a fixup for the ish
report descriptor would be the better way to go.

I'll post the patches I used in reply to this message for discussion.
And I'd really like to see at least the ambient light sensor working on
mainline as an iio-sensor.

Lenovo seems to use the sensors for some proprietary features of their
Lenovo Vantage application under the name Lenovo Intelligent Sensing
Solution.

Regards,
Philipp Jungkamp


I used this fish script to query some information on the sensors:
https://raw.githubusercontent.com/PJungkamp/yoga9-linux/main/intel-ish/find_sensors.fish

Which yields this output on my device:
https://raw.githubusercontent.com/PJungkamp/yoga9-linux/main/intel-ish/sensors.txt

Here is the report descriptor for the relevant ISH device (already
decoded text file):
https://raw.githubusercontent.com/PJungkamp/yoga9-linux/main/intel-ish/ish_report_descriptor







[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux