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

No one assigned

    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