Unable to adjust brightness on amd CPU with integrated GPU

I am running Manjaro on an AMD CPU with integrated GPU. The problem I encountered is that I cannot change the brightness of my screen by dragging the brightness bar in gnome.

However, value of /sys/class/backlight/acpi_video0/brightness changed from 1 to 49 when I tried to adjust the brightness from the smallest to the biggest.

Things I tried

  1. install acpilight
  2. add amdgpu.enable_dpcd_backlight=0 to grub config as This post mentioned.

Some information

inxi -Fxxz:

System:    Kernel: 5.9.11-3-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 Desktop: GNOME 3.38.1 tk: GTK 3.24.23 
           wm: gnome-shell dm: GDM Distro: Manjaro Linux 
Machine:   Type: Desktop Mobo: Micro-Star model: B550M PRO-VDH WIFI (MS-7C95) v: 1.0 serial: <filter> 
           UEFI: American Megatrends v: 2.00 date: 06/04/2020 
CPU:       Info: 6-Core model: AMD Ryzen 5 PRO 4400G with Radeon Graphics bits: 64 type: MT MCP arch: Zen rev: 1 
           L2 cache: 3072 KiB 
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 88826 
           Speed: 1768 MHz min/max: 1400/3700 MHz boost: enabled Core speeds (MHz): 1: 3498 2: 1766 3: 1570 4: 2694 5: 1678 
           6: 1840 7: 1527 8: 3560 9: 3949 10: 1848 11: 1653 12: 1597 
Graphics:  Device-1: Advanced Micro Devices [AMD/ATI] Renoir driver: amdgpu v: kernel bus ID: 30:00.0 chip ID: 1002:1636 
           Display: x11 server: X.org 1.20.10 compositor: gnome-shell driver: amdgpu,ati unloaded: modesetting 
           alternate: fbdev,vesa resolution: <xdpyinfo missing> 
           OpenGL: renderer: AMD RENOIR (DRM 3.39.0 5.9.11-3-MANJARO LLVM 11.0.0) v: 4.6 Mesa 20.2.3 direct render: Yes 
Audio:     Device-1: Advanced Micro Devices [AMD/ATI] vendor: Micro-Star MSI driver: snd_hda_intel v: kernel bus ID: 30:00.1 
           chip ID: 1002:1637 
           Device-2: Advanced Micro Devices [AMD] Family 17h HD Audio vendor: Micro-Star MSI driver: snd_hda_intel v: kernel 
           bus ID: 30:00.6 chip ID: 1022:15e3 
           Sound Server: ALSA v: k5.9.11-3-MANJARO 
Network:   Device-1: Intel Dual Band Wireless-AC 3168NGW [Stone Peak] driver: iwlwifi v: kernel bus ID: 29:00.0 
           chip ID: 8086:24fb 
           IF: wlo1 state: up mac: <filter> 
           Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: Micro-Star MSI driver: r8169 v: kernel 
           port: f000 bus ID: 2a:00.0 chip ID: 10ec:8168 
           IF: enp42s0 state: up speed: 100 Mbps duplex: full mac: <filter> 
Drives:    Local Storage: total: 1.38 TiB used: 101.57 GiB (7.2%) 
           ID-1: /dev/nvme0n1 vendor: Colorful model: CN600 512GB size: 476.94 GiB speed: 31.6 Gb/s lanes: 4 serial: <filter> 
           ID-2: /dev/sda vendor: Western Digital model: WD10EZEX-22MFCA0 size: 931.51 GiB speed: 6.0 Gb/s serial: <filter> 
Partition: ID-1: / size: 78.24 GiB used: 25.77 GiB (32.9%) fs: ext4 dev: /dev/nvme0n1p3 
           ID-2: /home size: 97.93 GiB used: 50.78 GiB (51.9%) fs: ext4 dev: /dev/nvme0n1p1 
Swap:      ID-1: swap-1 type: partition size: 7.63 GiB used: 0 KiB (0.0%) priority: -2 dev: /dev/nvme0n1p9 
Sensors:   System Temperatures: cpu: 32.5 C mobo: N/A gpu: amdgpu temp: 25.0 C 
           Fan Speeds (RPM): N/A 
Info:      Processes: 337 Uptime: 12m Memory: 14.64 GiB used: 2.11 GiB (14.4%) Init: systemd v: 246 Compilers: gcc: 10.2.0 
           Packages: pacman: 1438 Shell: Zsh v: 5.8 running in: gnome-terminal inxi: 3.1.08 

ls /sys/class/backlight:

➜  ~ ls /sys/class/backlight 
acpi_video0
➜  ~ ls /sys/class/backlight/acpi_video0 
actual_brightness  bl_power  brightness  device  max_brightness  power  scale  subsystem  type  uevent

Any idea how to fix this?

1 Like

Hello
I also have the problem on 2 laptops,
on my Lenovo with an AMD chip it helped to add the first entry at grub.

But with an HP notebook it only worked with acpi_backlight=native

You can test yourself with the 3 options with which you get the best results.
Options are:

acpi_backlight=vendor
acpi_backlight=video
acpi_backlight=native

Thanks for the suggestions but, sadly, none of these options worked for me. :pensive:

I’ve had this issue in about every distro I tried. This is a kernel bug which has been reported on bugzilla as well. In my case

$ ls /sys/class/backlight
amdgpu_bl0

On garuda rn, this might help:

https://forum.garudalinux.org/t/failed-to-save-backlight-issue-on-boot/1401/2

1 Like

No wonder I had the same issue on another Ubuntu machine. Good to know it’s a kernel bug.

** Edit 21/01/21 23:14 CST: This method will not work after a system restart. Investigating solution. **
** Edit 21/01/22 20:10 CST: A workaround for above issue had been found. **

Well, I have a temporary workaround with xrandr, inotifywait, and systemd.
The idea is watching brightness modification, and then apply it with xrandr.

Depends on:

  • inotify-tools package.
  • Screen brightness can be adjusted by xrandr.

Step:

  1. Edit /usr/local/bin/adjust_brightness and make it executable

    #!/bin/sh
    
    bl_dev=/sys/class/backlight/amdgpu_bl1  # Modify device path to meet your brand
    
    ratio=$(echo $(<$bl_dev/brightness) / $(<$bl_dev/max_brightness) | bc -l)
    xrandr --output eDP --brightness $ratio
    
  2. Edit ~/.config/systemd/user/adjust-brightness.service

    [Unit]
    Description=Adjust Screen Brightness
    
    [Service]
    Type=simple
    ExecStart=/bin/bash -c "while true; do inotifywait -q -e modify /sys/class/backlight/amdgpu_bl1/brightness; /usr/local/bin/adjust_brightness; done"
    
    [Install]
    WantedBy=default.target
    
  3. Edit ~/.config/autostart/brightness-adjuster.desktop

    [Desktop Entry]
    Name=Brightness Adjuster
    Exec=systemctl --user start adjust-brightness
    Type=Application
    Terminal=false
    Comment=Adjust Brightness
    

I’m using Lenovo Legion 5 15ARH05H with Manjaro KDE 20.2.1 (5.10.7-3-MANJARO).
Please let me know if this method works for others too.
Further discussion is welcome.

1 Like

Thank you!
Works on my Lenovo Legion 5 Pro 16ACH6H without any problems :slight_smile:

I had to adjust adjust_brightness script quite a bit because I couldn’t get it to work with Gnome (?), here is my version:

#!/bin/sh

bl_dev=/sys/class/backlight/amdgpu_bl0  # Modify device path to meet your brand

ratio=$(echo $(<$bl_dev/brightness) / $(<$bl_dev/max_brightness) | bc -l)
DISPLAY=:1 XDG_RUNTIME_DIR=/run/user/$(id -ru) DBUS_SESSION_BUS_ADDRESS=unix:path=/$XDG_RUNTIME_DIR/bus xrandr --output eDP --brightness $ratio