Laptop backlight not working properly after system sleeps

System info:

  • machine: HP Pavilion Gaming Laptop 15-ec0xxx
  • kernel: Linux 6.12.5-2-cachyos
  • brightnessctl output: Device ‘amdgpu_bl1’ of class ‘backlight’: Current brightness: 78 (31%) Max brightness: 255

After the recent kernel update what I have observed is that after system wakes up from sleep the screen backlight doesn’t work properly. The problem is a little weird. The restored brightness after waking up appears to be something like 40% or 50% even when I have set it to zero. And only after 50%, actually setting it to 50%, does it increase. This has been happening to both my KDE plasma and Hyprland installs. Is this a kernel thing, a distro thing, or a DE/WM thing? And is there any solution?

edit: typo

It gives me the following output:
$ ddcutil detect
output :
Invalid display
I2C bus: /dev/i2c-5
DRM connector: card1-eDP-1
EDID synopsis:
Mfg id: NCP - UNK
Model:
Product code: 64 (0x0040)
Serial number:
Binary serial number: 0 (0x00000000)
Manufacture year: 2018, Week: 1
This is a laptop display. Laptop displays do not support DDC/CI

You seem to be correct.
https://www.ddcutil.com/faq/

I did not know that bout laptop screens, I guess it might be incorrect for the deck where I posted it initially too.

Sorry, I have no idea.

Edit
On second thought, if you CAN use brighnessctl, then you can probably find a method to automatically run a script that sets the brightness when coming back from sleep.
But remember, your brightnessctl is between 0-255, not 0-100. (78/255=0.305 ie 31%)
I think that behavior can be changed though, but don’t quote me on that.

Well, the issue is, a I said, a little tricky. brightnessctl works as expected during the initial boot. After the system go into sleep/hibernation, however, the backlight “appears” to be at 40% or 50% and does not seem to go lower that that. It goes up, but not down. Even when executing the brightnessctl command it gives the “correct” output but the brightness still does not go down.
Its confusing…

Well, that throws my idea out the door.
I was hoping you could use a systemd.service and just add the necessary brightnessctl line to get the correct setting when waking up…
But if it doesn’t work to use brightnessctl that is of no use.

Sorry, now I really am out of ideas.