Unable to adjust brightness level laptop screen

The screen is way to bright for me (I have an eye-nerve problem) and trying to change it either in settings/tray or with the keyboard does absolutely nothing. The only two solutions I found on the internet do not work. One was xrandr --output eDP-2 --brightness 0.5 and the other was adding acpi_backlight=native to the grub file. The former did nothing and the latter actually removed the brightness control from the tray, so made it worse.
Can anyone please help me with this?

 System:
Kernel: 6.9.3-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 14.1.1
clocksource: tsc avail: acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=1fd92795-3146-4e46-8663-cfe0d6c8e2d9 rw rootflags=subvol=@
quiet resume=UUID=a772fb04-021e-4e90-b758-ee9247136083 loglevel=3
acpi_backlight=vendor ibt=off
Desktop: KDE Plasma v: 6.0.5 tk: Qt v: N/A info: frameworks v: 6.3.0
wm: kwin_wayland vt: 1 dm: SDDM Distro: Garuda base: Arch Linux
Machine:
Type: Laptop System: Acer product: Nitro AN515-58 v: V2.13
serial: <superuser required>
Mobo: ADL model: Jimny_ADH v: V2.13 serial: <superuser required>
part-nu: 0000000000000000 uuid: <superuser required> UEFI: Insyde v: 2.13
date: 03/08/2024
Battery:
ID-1: BAT1 charge: 57.5 Wh (100.0%) condition: 57.5/57.5 Wh (100.0%)
volts: 16.5 min: 15.4 model: LGC AP21D8M type: Li-ion serial: <filter>
status: full
CPU:
Info: model: 12th Gen Intel Core i7-12650H bits: 64 type: MST AMCP
arch: Alder Lake gen: core 12 level: v3 note: check built: 2021+
process: Intel 7 (10nm ESF) family: 6 model-id: 0x9A (154) stepping: 3
microcode: 0x433
Topology: cpus: 1x cores: 10 mt: 6 tpc: 2 st: 4 threads: 16 smt: enabled
cache: L1: 864 KiB desc: d-4x32 KiB, 6x48 KiB; i-6x32 KiB, 4x64 KiB
L2: 9.5 MiB desc: 6x1.2 MiB, 1x2 MiB L3: 24 MiB desc: 1x24 MiB
Speed (MHz): avg: 449 high: 1186 min/max: 400/4600:4700:3500 scaling:
driver: intel_pstate governor: powersave cores: 1: 400 2: 400 3: 1186 4: 400
5: 400 6: 400 7: 400 8: 400 9: 400 10: 400 11: 400 12: 400 13: 400 14: 400
15: 400 16: 400 bogomips: 86016
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Vulnerabilities: <filter>
Graphics:
Device-1: Intel Alder Lake-P GT1 [UHD Graphics]
vendor: Acer Incorporated ALI driver: i915 v: kernel alternate: xe
arch: Gen-12.2 process: Intel 10nm built: 2021-22+ ports: active: eDP-2
empty: DP-2,DP-3 bus-ID: 0000:00:02.0 chip-ID: 8086:46a3 class-ID: 0300
Device-2: NVIDIA AD107M [GeForce RTX 4060 Max-Q / Mobile]
vendor: Acer Incorporated ALI driver: nvidia v: 550.90.07
alternate: nouveau,nvidia_drm non-free: 550.xx+
status: current (as of 2024-04) arch: Lovelace code: AD1xx
process: TSMC n4 (5nm) built: 2022+ ports: active: none
empty: DP-1,HDMI-A-1,eDP-1 bus-ID: 0000:01:00.0 chip-ID: 10de:28a0
class-ID: 0300
Device-3: Quanta ACER HD User Facing driver: uvcvideo type: USB rev: 2.0
speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 3-6:3 chip-ID: 0408:4035
class-ID: fe01 serial: <filter>
Display: wayland server: X.org v: 1.21.1.13 with: Xwayland v: 24.1.0
compositor: kwin_wayland driver: X: loaded: modesetting,nvidia
alternate: fbdev,intel,nouveau,nv,vesa dri: iris gpu: i915,nvidia
display-ID: 0
Monitor-1: eDP-2 res: 1536x864 size: N/A modes: N/A
API: EGL v: 1.5 hw: drv: intel iris drv: nvidia platforms: device: 0
drv: nvidia device: 2 drv: iris device: 3 drv: swrast gbm: drv: nvidia
surfaceless: drv: nvidia wayland: drv: iris x11: drv: iris
inactive: device-1
API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 24.1.1-arch1.1
glx-v: 1.4 direct-render: yes renderer: Mesa Intel Graphics (ADL GT2)
device-ID: 8086:46a3 memory: 7.48 GiB unified: yes display-ID: :1.0
API: Vulkan v: 1.3.279 layers: 7 device: 0 type: discrete-gpu name: NVIDIA
GeForce RTX 4060 Laptop GPU driver: nvidia v: 550.90.07
device-ID: 10de:28a0 surfaces: xcb,xlib,wayland
Audio:
Device-1: Intel Alder Lake PCH-P High Definition Audio
vendor: Acer Incorporated ALI driver: sof-audio-pci-intel-tgl
alternate: snd_hda_intel, snd_soc_avs, snd_sof_pci_intel_tgl
bus-ID: 0000:00:1f.3 chip-ID: 8086:51c8 class-ID: 0401
Device-2: NVIDIA vendor: Acer Incorporated ALI driver: snd_hda_intel
v: kernel bus-ID: 0000:01:00.1 chip-ID: 10de:22be class-ID: 0403
API: ALSA v: k6.9.3-zen1-1-zen status: kernel-api with: aoss
type: oss-emulator tools: N/A
Server-1: PipeWire v: 1.0.7 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Intel Alder Lake-P PCH CNVi WiFi vendor: Rivet Networks Dual Band
Wi-Fi 6 Killer AX1650i 160MHz 2x2 driver: iwlwifi v: kernel
bus-ID: 0000:00:14.3 chip-ID: 8086:51f0 class-ID: 0280
IF: wlp0s20f3 state: up mac: <filter>
Device-2: Realtek Killer E2600 GbE vendor: Acer Incorporated ALI
driver: r8169 v: kernel port: 3000 bus-ID: 0000:2b:00.0 chip-ID: 10ec:2600
class-ID: 0200
IF: enp43s0 state: down mac: <filter>
Info: services: NetworkManager, smbd, systemd-timesyncd, wpa_supplicant
Bluetooth:
Device-1: Intel AX201 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-10:4 chip-ID: 8087:0026
class-ID: e001
Report: btmgmt ID: hci0 rfk-id: 2 state: up address: <filter> bt-v: 5.2
lmp-v: 11 status: discoverable: no pairing: no class-ID: 6c010c
RAID:
Hardware-1: Intel Volume Management Device NVMe RAID Controller driver: vmd
v: 0.6 port: N/A bus-ID: 0000:00:0e.0 chip-ID: 8086:467f rev: class-ID: 0104
Drives:
Local Storage: total: 476.94 GiB used: 15.27 GiB (3.2%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Micron model: 3400 MTFDKBA512TFH
size: 476.94 GiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
lanes: 4 tech: SSD serial: <filter> fw-rev: P7MA000 temp: 47.9 C
scheme: GPT
Partition:
ID-1: / raw-size: 459.8 GiB size: 459.8 GiB (100.00%) used: 15.27 GiB (3.3%)
fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 584 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 459.8 GiB size: 459.8 GiB (100.00%)
used: 15.27 GiB (3.3%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-4: /var/log raw-size: 459.8 GiB size: 459.8 GiB (100.00%)
used: 15.27 GiB (3.3%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 459.8 GiB size: 459.8 GiB (100.00%)
used: 15.27 GiB (3.3%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 15.31 GiB used: 0 KiB (0.0%) priority: 100
comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 16 dev: /dev/zram0
ID-2: swap-2 type: partition size: 16.84 GiB used: 0 KiB (0.0%)
priority: -2 dev: /dev/nvme0n1p3 maj-min: 259:3
Sensors:
Src: /sys System Temperatures: cpu: 43.0 C mobo: N/A
Fan Speeds (rpm): N/A
Info:
Memory: total: 16 GiB note: est. available: 15.31 GiB used: 3.17 GiB (20.7%)
Processes: 376 Power: uptime: 3m states: freeze,mem,disk suspend: deep
avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
suspend, test_resume image: 6.08 GiB services: org_kde_powerdevil,
power-profiles-daemon, upowerd Init: systemd v: 255 default: graphical
tool: systemctl
Packages: pm: pacman pkgs: 1779 libs: 529 tools: octopi,pamac,paru
Compilers: gcc: 14.1.1 Shell: garuda-inxi default: fish v: 3.7.1
running-in: konsole inxi: 3.3.34
Garuda (2.6.26-1):
System install date:     2024-06-11
Last full system update: 2024-06-12
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut nvidia-dkms
Windows dual boot:       No/Undetected
Failed units:

Do any of the Fn keys work? Can you turn the volume up and down?

Yes, I can. All the other Fn seem to work fine.

Give brightnessctl a try, it often “just works”. GitHub - Hummer12007/brightnessctl: A program to read and control device brightness

Not to say “RTFM”, but just this one article alone contains dozens of suggestions: Backlight - ArchWiki

I am continuing in searching for a solution even while I hope for an answer here :wink: I did find some info regarding brightnessctl, and Garuda actually has it preinstalled.
Funny thing: when I change the brightness slider, the brightness itself does not change, but brightnessctl does report the correct value. I can also read and set the values via the hardware interface as explained on the Arch wiki. Changing the values just doesn’t do anything to the actual light level. atm I need to take a break as I am getting a headache from the light and I need to go to bed anyway. Revisiting tomorrow. Thanks so-far for the help.

Couldn’t get to sleep. So I tried a few other distro’s like Pop OS, Mint and Ubuntu (I know, all Debian based). None of them were able to make me change the screen brightness which makes me suspect the problem is I need some specific solution for this hardware and it is not specific to Arch/Garuda. Surely I am not the only person in the world with an Acer Nitro 5 having this problem?

Certainly not. A cursory web search reveals this issue is essentially ubiquitous.

In this thread here, someone mentioned they resolved the issue by using the pcie_aspm=force parameter in addition to the one you tried. Acer nitro 5 + linux mint -> change screen brightness - r/AcerNitro

no matter what I was trying with acpi_backlight parameter, it always showed mi ACPI 'AE_NOT_FOUND' errors related to backlight and I had no entry in sysfs; dir /sys/class/backlight was always empty. Now I got it to work by setting pcie_aspm=force acpi_backlight=native.

Looks like they have an AMD CPU though, so your mileage may very.

This looks like a promising solution:

It appears to be for the exact model you are using. I took a quick look through the repo and I see a couple gotchas here:

  1. The first line installs inotify-tools with apt (instead of Pacman), but that’s easy enough to fix.
  2. chown” is typo’d on line 8.
  3. chmod 644” does not provide the executable bit, so the service file will not actually be able to run that script. :face_with_peeking_eye:

Still, if you wanted to lift a few ideas from this repo and see if it works, it seems like it would be worth a shot.

Install inotify-tools if you don’t already have it:

sudo pacman -S --needed inotify-tools

Create the script with an editor like Micro:

sudo micro /usr/local/bin/brightness_bypass_service.sh

Paste in the body of the script:

#!/bin/bash
if [ -L sys/class/backlight/intel_backlight/brightness ]; then
    while inotifywait -e modify /sys/class/backlight/nvidia_wmi_ec_backlight/brightness; do
    VALUE=$(cat /sys/class/backlight/nvidia_wmi_ec_backlight/brightness)
    NEWVALUE=$(($VALUE * 75))
    echo $NEWVALUE > /sys/class/backlight/intel_backlight/brightness
    done
else
    while inotifywait -e modify /sys/class/backlight/acpi_video0/brightness; do
    cat /sys/class/backlight/acpi_video0/brightness > /sys/class/backlight/acpi_video1/brightness
    done
fi

Save and exit out of the file, then make it executable:

sudo chmod +x /usr/local/bin/brightness_bypass_service.sh

Run the script, and see if it works!

sudo brightness_bypass_service.sh

:point_up: It should be run with sudo because it attempts to read from and write to files in the /sys/class/backlight/ directory, which typically require root access.

If it doesn’t work, see this note in the README:

if /sys/class/backlight/intel_backlight/brightness doesn’t exsist on your system, you may need to add acpi_backlight=video to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub so it looks something like GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=video".

after that you’ll need to run “sudo update-grub

If it does work, go ahead and create the service file to start it automatically.

sudo micro /etc/systemd/system/brightness_bypass.service
[Unit]
Description=File Monitoring Service
After=network.target

[Service]
ExecStart=/bin/bash /usr/local/bin/brightness_bypass_service.sh
Restart=on-failure

[Install]
WantedBy=default.target

I took out User=root (not needed) and added Restart=on-failure (potentially helpful), other than that I left it how the guy wrote it.

Finally, enable and start the service.

sudo systemctl enable --now brightness_bypass_service.sh
4 Likes

Thank you so much ! for the time and effort you put into that reply. I just woke up, but this looks promising. I won’t be back home until tonight but I’ll be sure to let you know I can get it to work with any of this info.

Been at it for a few hours non-stop. None of those things you found worked for me and I found some other tips I tried, but no luck :frowning: I have given up for now. I wish I could just set the brightness lower. I can live with the controls not working if only it wasn’t so bright. For now I am using a dark gray theme which helps a little bit. Thanks again for your efforts, they are appreciated.

Good on you for sticking with it and trying to make it work.

I know you have already spent a lot of time on this, but it would be worth going through these same troubleshooting efforts (kernel parameters, scripts, etc) while using the LTS kernel instead of the 6.9.3 kernel. This is because it is possible the most recent kernel has introduced a regression.

sudo pacman -S linux-lts linux-lts-headers

You can boot to the LTS kernel by selecting it from the advanced options in the Grub menu, or make it the default boot option by adding the GRUB_TOP_LEVEL option in /etc/default/grub as described here: New Grub option GRUB_TOP_LEVEL

GRUB_TOP_LEVEL="/boot/vmlinuz-linux-lts"

As you must be aware from adding kernel parameters here, you need to regenerate the Grub configuration after making any changes to this file.

sudo update-grub
1 Like

Thanks for trying. Today I tried a number of kernels and distro’s. Went sofar as to dof ull installs of Ubuntu, Manjaro, plain Arch and currently it is on Endeavour. I found several (older) solutions mentioning e.g.
nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1 to the kernelparameters or in the Xorg configs. I tried a lot of things I forgot. I think I just have to accept I bought a laptop that isn’t supported (yet) in terms of brightness-control. Not sure what to do now, I think I can still return it or reinstall Windows 11 on it. Both solutions are not what I’d like to do. For now I use sunglasses (lol).

I wanted to double-check on this one, because a couple days ago I noticed it resolved the same issue for someone else on another Arch-based distro.

They added a little step-by-step to the thread if you want to take a look. It essentially boils down to this:

  1. Add the pcie_aspm=force and acpi_backlight=native kernel parameters to the GRUB_CMDLINE_LINUX_DEFAULT line in /etc/default/grub. Add it to whatever parameters you already have on the line. For example, in your case it might look something like this:
GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash resume=UUID=a772fb04-021e-4e90-b758-ee9247136083 loglevel=3 ibt=off pcie_aspm=force acpi_backlight=native”
  1. Save and exit out of the file, then regenerate the Grub configuration file.
sudo update-grub

Then reboot, and test both the regular and LTS kernels.

Okay, so still on endeavour I managed to get it working. Not sure which of these is the solution right now.

  1. Had to set the BIOS to Optimus instead of Dedicated
  2. Removed the nvidea_drm.modeset=1 from kernel parameters
  3. added acpi_backlight=native to kernel parameters
  4. Using systemd-boot instead of grub (probably not important)
  5. added Option “RegistryDwords” “EnableBrightnessControl=1” to /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf

With all these I can now control the screen brightness, yay! Not sure which of those are needed and if I can get this to work on Garuda. That will be something for tomorrow.

EDIT: just to say that pcie_aspm=force did not work for me.

Hi @BertMv , glad that you figure out a solution please mark @BluishHumility reply or yours as a solution so others can benefit .

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.