Skip to content

FW16, linux: ambient light sensor (ALS) does not work when queried just after resume from sleep #179

@colingeniet

Description

@colingeniet

Device Information

System Model or SKU

Framework Laptop 16 (AMD Ryzen™ 7040 Series)

BIOS VERSION

4.03

DIY Edition information

Memory: Kingston KF556S40IBK2-32
Storage: Crucial CT2000T500SSD8

Standalone Operation (Laptop Only)

Are you running your mainboard as a standalone device. Is standalone mode enabled in the BIOS?

  • Yes
  • No

Describe the bug

When accessing the ALS through linux sysfs (/sys/bus/iio/devices/iio:device0/in_illuminance_raw),
reading the ALS just after resuming from sleep causes it to output 0.
If read frequently enough, it will keep answering 0.
Not reading for a few seconds allows it to recover, after which it works normally.

Steps To Reproduce

  • have a process frequently (~every 2sec) read the ALS from linux sysfs
  • suspend computer, and resume
  • after resume, ALS will always output '0'
  • if reading process is stopped for ~5sec, the ALS 'recovers', and will work normally again

Example in shell:

$ while true; do
    cat /sys/bus/iio/devices/iio:device0/in_illuminance_raw; sleep 2;
done
# output:
2002
1976
1948
1927
# Suspend computer here, and resume
0
0
0
0
^Z # stop reading process, wait for a few seconds
fg # restart reading
2196
2135
2075
2038

Expected behavior

correct value when reading /sys/bus/iio/devices/iio:device0/in_illuminance_raw

Operating System (please complete the following information):

  • OS/Distribution: archlinux
  • Version: n/a
  • Linux Kernel Version: Linux 6.18.9-arch1-2 #1 SMP PREEMPT_DYNAMIC Mon, 09 Feb 2026 17:16:33 +0000 x86_64 GNU/Linux

Additional context

Forum thread: https://community.frame.work/t/ambient-light-sensor-does-not-work-after-resume/75799

BIOS / Kernel versions:
The same problem exists with BIOS 3.05, 3.07, kernel 6.16.8-arch3-1
I am not aware of any versions for which this problem does not exist.

In the above thread, someone suggested a different way to read the ALS, through /dev/port.
When I tested it back then, /dev/port gave the correct value, while /sys/bus/iio/devices/iio:device0/in_illuminance_raw gave the wrong one.
Linux kernel might be the culprit?
(I tried testing it again, but the method they suggested crashes my computer now!)

Edit for extra info:

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions