Two directories in sys/class/backlight; every controller picks the wrong one

Hi! Brand new to Garuda and to Linux in general. As seems to be common, my backlight controls aren’t working. After a lot of trial and error, I’ve figured out what the problem is, but not how to solve it.

In my sys/class/backlight directory, there are two subfolders: /amdgpu_bl2, and /nvidia_0. I’ve figured out that amdgpu_bl2 is the correct device to modify, but every method of controlling my backlight brightness modifies nvidia_0. For example, I’ve successfully modified my screen brightness with “brightnessctl --device=amdgpu_bl2 s 40%” but the generic command “brightnessctl s 40%” sets nvidia_0 to 40% (which does nothing). The backlight icon in the Waybar displays the brightness value from amdgpu_bl2, but it, too, seems to be stuck modifying the value of nvidia_0.

I’ve found a few solutions listed for problems similar to this, but all of them were fixed by users appending the kernel parameter “acpi_backlight=vendor” or “use_native_backlight=1”; neither of these did much of anything for me. If it helps, acpi_backlight=vendor did change how my backlight controls worked (the value in the Waybar now changes), but it did not let me control the backlight itself.

I’m certain this is at least partially because I’m on an unsupported GPU, but I have no idea how to proceed from here. Any help would be appreciated!

System:
  Kernel: 6.12.4-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 14.2.1
    clocksource: hpet avail: acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=85410ea9-baf0-4f7d-9954-99fccaf1ba24 rw rootflags=subvol=@
    quiet resume=UUID=58b67e2f-f052-4a7e-aa85-7a546ee72558 loglevel=3 ibt=off
  Desktop: Sway v: 0.4 with: waybar tools: swayidle avail: swaylock vt: 1
    lm: greetd Distro: Garuda base: Arch Linux
Machine:
  Type: Laptop System: LENOVO product: 82B5 v: Lenovo Legion 5 15ARH05
    serial: <superuser required> Chassis: type: 10 v: Lenovo Legion 5 15ARH05
    serial: <superuser required>
  Mobo: LENOVO model: LNVNB161216 v: SDK0J40709 WIN
    serial: <superuser required> part-nu: LENOVO_MT_82B5_BU_idea_FM_Legion 5
    15ARH05 uuid: <superuser required> UEFI: LENOVO v: EUCN41WW
    date: 09/20/2023
Battery:
  ID-1: BAT0 charge: 52.2 Wh (100.0%) condition: 52.2/60.0 Wh (87.0%)
    volts: 17.3 min: 15.4 model: SMP L19M4PC0 type: Li-poly serial: <filter>
    status: full cycles: 83
CPU:
  Info: model: AMD Ryzen 5 4600H with Radeon Graphics bits: 64 type: MT MCP
    arch: Zen 2 gen: 2 level: v3 note: check built: 2020-22
    process: TSMC n7 (7nm) family: 0x17 (23) model-id: 0x60 (96) stepping: 1
    microcode: 0x860010D
  Topology: cpus: 1x dies: 1 clusters: 1 cores: 6 threads: 12 tpc: 2
    smt: enabled cache: L1: 384 KiB desc: d-6x32 KiB; i-6x32 KiB L2: 3 MiB
    desc: 6x512 KiB L3: 8 MiB desc: 2x4 MiB
  Speed (MHz): avg: 3000 min/max: 1400/3000 boost: enabled scaling:
    driver: acpi-cpufreq governor: schedutil cores: 1: 3000 2: 3000 3: 3000
    4: 3000 5: 3000 6: 3000 7: 3000 8: 3000 9: 3000 10: 3000 11: 3000 12: 3000
    bogomips: 71862
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities: <filter>
Graphics:
  Device-1: NVIDIA TU117M [GeForce GTX 1650 Ti Mobile] vendor: Lenovo
    driver: nvidia v: 565.77 alternate: nouveau,nvidia_drm non-free: 550.xx+
    status: current (as of 2024-09; EOL~2026-12-xx) arch: Turing code: TUxxx
    process: TSMC 12nm FF built: 2018-2022 pcie: gen: 1 speed: 2.5 GT/s
    lanes: 8 link-max: gen: 3 speed: 8 GT/s lanes: 16 ports: active: none
    empty: DP-1,HDMI-A-1,eDP-1 bus-ID: 01:00.0 chip-ID: 10de:1f95
    class-ID: 0300
  Device-2: Advanced Micro Devices [AMD/ATI] Renoir [Radeon Vega Series /
    Radeon Mobile Series] vendor: Lenovo driver: amdgpu v: kernel arch: GCN-5
    code: Vega process: GF 14nm built: 2017-20 pcie: gen: 4 speed: 16 GT/s
    lanes: 16 ports: active: eDP-2 empty: none bus-ID: 05:00.0
    chip-ID: 1002:1636 class-ID: 0300 temp: 33.0 C
  Device-3: Realtek USB Boot driver: N/A type: USB rev: 2.0 speed: 480 Mb/s
    lanes: 1 mode: 2.0 bus-ID: 1-3:3 chip-ID: 0bda:5846 class-ID: 0e02
    serial: <filter>
  Display: wayland server: Xwayland v: 24.1.4 compositor: Sway v: 0.4
    driver: gpu: amdgpu display-ID: 1
  Monitor-1: eDP-2 model: BOE Display 0x08e8 built: 2019 res: 1920x1080
    hz: 120 dpi: 142 gamma: 1.2 scale: 1 size: 344x194mm (13.54x7.64")
    diag: 395mm (15.5") ratio: 16:9 modes: max: 1920x1080 min: 640x480
  API: EGL v: 1.5 hw: drv: nvidia drv: amd radeonsi platforms: device: 0
    drv: nvidia gbm: drv: nvidia surfaceless: drv: nvidia wayland: drv: radeonsi
    x11: drv: radeonsi
  API: OpenGL v: 4.6.0 compat-v: 4.6 vendor: amd mesa v: 24.3.1-arch1.3
    glx-v: 1.4 direct-render: yes renderer: AMD Radeon Graphics (radeonsi
    renoir LLVM 18.1.8 DRM 3.59 6.12.4-zen1-1-zen) device-ID: 1002:1636
    memory: 500 MiB unified: no
  API: Vulkan v: 1.4.303 layers: 11 device: 0 type: integrated-gpu name: AMD
    Radeon Graphics (RADV RENOIR) driver: N/A device-ID: 1002:1636
    surfaces: xcb,xlib,wayland device: 1 type: discrete-gpu name: NVIDIA
    GeForce GTX 1650 Ti driver: N/A device-ID: 10de:1f95
    surfaces: xcb,xlib,wayland device: 2 type: cpu name: llvmpipe (LLVM
    18.1.8 256 bits) driver: N/A device-ID: 10005:0000
    surfaces: xcb,xlib,wayland
Audio:
  Device-1: NVIDIA driver: snd_hda_intel v: kernel pcie: gen: 3 speed: 8 GT/s
    lanes: 8 link-max: lanes: 16 bus-ID: 01:00.1 chip-ID: 10de:10fa
    class-ID: 0403
  Device-2: Advanced Micro Devices [AMD] ACP/ACP3X/ACP6x Audio Coprocessor
    vendor: Lenovo driver: N/A alternate: snd_pci_acp3x, snd_rn_pci_acp3x,
    snd_pci_acp5x, snd_pci_acp6x, snd_acp_pci, snd_rpl_pci_acp6x, snd_pci_ps,
    snd_sof_amd_renoir, snd_sof_amd_rembrandt, snd_sof_amd_vangogh,
    snd_sof_amd_acp63, snd_sof_amd_acp70 pcie: gen: 4 speed: 16 GT/s lanes: 16
    bus-ID: 05:00.5 chip-ID: 1022:15e2 class-ID: 0480
  Device-3: Advanced Micro Devices [AMD] Family 17h/19h/1ah HD Audio
    vendor: Lenovo driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s
    lanes: 16 bus-ID: 05:00.6 chip-ID: 1022:15e3 class-ID: 0403
  API: ALSA v: k6.12.4-zen1-1-zen status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: PipeWire v: 1.2.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: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: Lenovo driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    port: 2000 bus-ID: 03:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: eno1 state: down mac: <filter>
  Device-2: Intel Wi-Fi 6 AX200 driver: iwlwifi v: kernel pcie: gen: 2
    speed: 5 GT/s lanes: 1 bus-ID: 04:00.0 chip-ID: 8086:2723 class-ID: 0280
  IF: wlp4s0 state: up mac: <filter>
  Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
Bluetooth:
  Device-1: Intel AX200 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-3:3 chip-ID: 8087:0029
    class-ID: e001
  Report: btmgmt ID: hci0 rfk-id: 2 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: <filter> bt-v: 5.2 lmp-v: 11
    status: discoverable: no pairing: no
Drives:
  Local Storage: total: 1.14 TiB used: 690.96 GiB (59.1%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung
    model: MZVLB256HBHQ-000L2 size: 238.47 GiB block-size: physical: 512 B
    logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
    fw-rev: 3L1QEXH7 temp: 36.9 C scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 vendor: Western Digital model: WD10SPSX-08A6W
    size: 931.51 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: 1A01 scheme: GPT
Partition:
  ID-1: / raw-size: 229.37 GiB size: 229.37 GiB (100.00%)
    used: 102.59 GiB (44.7%) 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: 229.37 GiB size: 229.37 GiB (100.00%)
    used: 102.59 GiB (44.7%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-4: /var/log raw-size: 229.37 GiB size: 229.37 GiB (100.00%)
    used: 102.59 GiB (44.7%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-5: /var/tmp raw-size: 229.37 GiB size: 229.37 GiB (100.00%)
    used: 102.59 GiB (44.7%) 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: partition size: 8.8 GiB used: 0 KiB (0.0%) priority: -2
    dev: /dev/nvme0n1p3 maj-min: 259:3
  ID-2: swap-2 type: zram size: 7.13 GiB used: 0 KiB (0.0%) priority: 100
    comp: zstd avail: lzo-rle,lzo,lz4,lz4hc,deflate,842 max-streams: 12
    dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 51.1 C mobo: N/A gpu: amdgpu temp: 34.0 C
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 8 GiB note: est. available: 7.13 GiB used: 3.31 GiB (46.5%)
  Processes: 397 Power: uptime: 22m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 2.77 GiB services: upowerd Init: systemd
    v: 257 default: graphical tool: systemctl
  Packages: pm: pacman pkgs: 1700 libs: 531 tools: pacseek,paru Compilers:
    clang: 18.1.8 gcc: 14.2.1 Shell: garuda-inxi default: fish v: 3.7.1
    running-in: foot inxi: 3.3.36
Garuda (2.6.26-1):
  System install date:     2024-12-17
  Last full system update: 2024-12-19
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut nvidia-dkms
  Windows dual boot:       No/Undetected
  Failed units:            

Use brightnessctl -l to list all devices with available brightness controls.

brightnessctl -l

Edit your Sway config in ~/.config/sway/config.d/default and add the device you want to change to the backlight commands with the -d flag.

#
# Backlight
#
bindsym XF86MonBrightnessUp exec brightnessctl -d my_device set 5%+
bindsym XF86MonBrightnessDown exec brightnessctl -d my_device set 5%-

I hope that helps, welcome to the community @1-800-RATS. :wave:

3 Likes

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