Skip to content

No ambient light sensor on a stock install: the ISH rejects the generic ish_ptl.bin, so keyboard-backlight-auto has nothing to read #9

Description

@gokmensercan

Summary

On a fresh CachyOS install of this exact B9406CAA (BIOS 312, Linux 7.2.3-1-cachyos, linux-firmware 20260810) there is no iio als device at all. check-hardware.sh reports no iio 'als' device — keyboard-backlight-auto has nothing to read, and installing keyboard-backlight-auto gives a daemon with no sensor. The only iio device is the webcam's proximity sensor (prox, USB 3277:0098).

The keyboard-backlight-auto README describes iio:device1 = als as a given, but nothing in the repo explains how that device comes to exist. On my machine it needs a step the repo does not have.

Evidence

The sensor is a HID sensor behind the Intel Integrated Sensor Hub (00:12.0, 8086:e445). The ISH only runs once the kernel uploads a firmware image into it, and this board rejects the generic one:

$ journalctl -k -b | grep 'ISH loader'
intel_ish_ipc 0000:00:12.0: ISH loader: load firmware: intel/ish/ish_ptl.bin
intel_ish_ipc 0000:00:12.0: ISH loader: cmd 2 failed 10
intel_ish_ipc 0000:00:12.0: ISH loader: cmd 2 failed 10
intel_ish_ipc 0000:00:12.0: ISH loader: cmd 2 failed 10
$ ls /sys/bus/ishtp/devices/          # empty

Before that fallback the loader asks for a per-OEM file named intel/ish/ish_<platform>_<crc32(sys_vendor)>_<crc32(product_family)>.bin. The rule is not written down anywhere I could find, but it reproduces linux-firmware's own entries exactly:

DMI string CRC-32 linux-firmware file
LENOVO 53c4ffad ish_ptl_53c4ffad_75d6ebe2.bin
ThinkPad X1 Carbon Gen 14 75d6ebe2 ↑
Dell Inc. 39ceeaf8 ish_ptl_39ceeaf8.bin
ASUS 59b8d9f2 none
ASUS EXPERTBOOK 84881981 none

linux-firmware 20260810 carries Panther Lake ISH images from Lenovo, Dell and HP only (each under that vendor's own licence file). There is no ASUS image, so the kernel ends up with the generic ish_ptl.bin, which the ISH's security engine refuses.

ASUS ships the matching signed image in its Windows Intel Sensor Hub V5.8.62.0 driver package (5 MB, SensorHub_CC_Intel_Z_V5.8.62.0_48695.exe) as IshHeciExtensionTemplate/x64/FWImage/0004/AsusSign_ishS_SI_B9406CAA_5.8.1.7783.bin — same $CPD/ISHM container as ish_ptl.bin, one build newer than the generic 5.8.1.7778, same build as Dell's 581.7783.0.

Installing that file as /lib/firmware/intel/ish/ish_ptl_59b8d9f2_84881981.bin and reloading intel_ish_ipc:

intel_ish_ipc 0000:00:12.0: ISH loader: load firmware: intel/ish/ish_ptl_59b8d9f2_84881981.bin
intel_ish_ipc 0000:00:12.0: ISH loader: firmware loaded. size:420352
intel_ish_ipc 0000:00:12.0: ISH loader: FW base version: 5.8.1.7783
ish-hid {33AECD58-B679-4E54-9BD9-A04D34F0C226}: [hid-ish]: enum_devices_done OK, num_hid_devices=1
hid-sensor-hub 001F:8087:0AC2.0009: hidraw8: SENSOR HUB HID v2.00 Device [hid-ishtp 8087:0AC2]
$ cat /sys/bus/iio/devices/iio:device*/name
prox
als

After that keyboard-backlight-auto works as documented (24.8 lux | bucket 3 (12-32 lux, 70%) | level 2/3). It survives reboots; the image is uploaded to ISH RAM each boot, nothing is flashed.

Proposal

A small ish-firmware module built exactly like camera-firmware (fixed ASUS URL, pinned SHA-256 of the EXE and of the extracted image, carve the 7z resource, never run the Windows program, never redistribute the file), plus an ISH line in check-hardware.sh and a prerequisite note in the keyboard-backlight-auto README. I have it working and tested on this machine and will link the PR here.

Long term the right home is linux-firmware, but only ASUS can grant that redistribution licence the way Lenovo/Dell/HP did — which is also why the module downloads from ASUS instead of bundling the file.

Question for you: does your reference machine get its als device this way too, or is there another path I'm missing?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions