밝기 변경은 시스템이 절전 모드에서 다시 시작된 후에만 적용됩니다.

밝기 변경은 시스템이 절전 모드에서 다시 시작된 후에만 적용됩니다.

커널 5.17에서 Manjaro 21.2.3을 실행하는 Lenovo Legion Slim 7 노트북(15ACH6)이 있습니다.

내가 직면한 문제는 클린 부팅 시 시스템 밝기를 변경할 수 없다는 것입니다(Fn 키를 사용하거나 brightnessin 의 실제 값 변경 /sys/class/backlight). 그러나 시스템을 절전 모드로 전환한 후 다시 시작한 후에는 밝기 수준이 유지되지 않았지만 밝기 제어가 제대로 작동했습니다.

콘텐츠 /sys/class/backlight:

amdgpu_bl1 -> ../../devices/pci0000:00/0000:00:08.1/0000:05:00.0/backlight/amdgpu_bl1/
nvidia_0 -> ../../devices/pci0000:00/0000:00:01.1/0000:01:00.0/backlight/nvidia_0/
nvidia_wmi_ec_backlight -> ../../devices/pci0000:00/PNP0C14:00/wmi_bus/wmi_bus-PNP0C14:00/603E9613-EF25-4338-A3D0-C46177516DB7/backlight/nvidia_wmi_ec_backlight/

이것실제밝기 값이 nvidia_wmi_ec_backlight/brightness파일에 기록되고 나머지 2개는 변경되지 않습니다.

로드된 nVidia 커널 모듈:

nvidia_uvm           2650112  0
nvidia_drm             73728  2
nvidia_modeset       1163264  3 nvidia_drm
nvidia_wmi_ec_backlight    16384  0
nvidia              39133184  99 nvidia_uvm,nvidia_modeset
wmi                    40960  3 nvidia_wmi_ec_backlight,wmi_bmof,ideapad_laptop

5.16 미만의 커널에서는 이 nvidia_wmi_ec_backlight모듈이 존재하지 않으며 밝기를 변경할 수 없습니다. 이 모듈이 올바르게 작동하는 원인을 알고 싶습니다.잠에서 깨어난 후에야.

뭔가 의심스럽네경쟁 조건또는부적절한 초기화. 이 동작을 이해하려면 어떤 종류의 조사를 수행해야 합니까?


커널 모듈의 소스 코드는 다음과 같습니다.nvidia-wmi-ec-backlight.c.


출력 inxi -Fz:

System:
  Kernel: 5.17.0-1-MANJARO x86_64 bits: 64 Desktop: GNOME 41.3
    Distro: Manjaro Linux
Machine:
  Type: Laptop System: LENOVO product: 82K8 v: Legion S7 15ACH6
    serial: <superuser required>
  Mobo: LENOVO model: LNVNB161216 v: NO DPK serial: <superuser required>
    UEFI: LENOVO v: HACN27WW date: 08/02/2021
Battery:
  ID-1: BAT0 charge: 64.3 Wh (90.6%) condition: 71.0/71.0 Wh (100.0%)
CPU:
  Info: 8-core model: AMD Ryzen 9 5900HX with Radeon Graphics bits: 64
    type: MT MCP cache: L2: 4 MiB
  Speed (MHz): avg: 1526 min/max: 400/4680 cores: 1: 1397 2: 1397 3: 1397
    4: 1395 5: 1396 6: 1395 7: 1397 8: 1397 9: 1397 10: 3482 11: 1395 12: 1396
    13: 1396 14: 1395 15: 1397 16: 1397
Graphics:
  Device-1: NVIDIA GA106M [GeForce RTX 3060 Mobile / Max-Q] driver: nvidia
    v: 510.47.03
  Device-2: AMD Cezanne driver: amdgpu v: kernel
  Device-3: Syntek Integrated Camera type: USB driver: uvcvideo
  Display: x11 server: X.org 1.21.1.3 driver: loaded: amdgpu,ati,nvidia
    unloaded: modesetting,nouveau,radeon resolution: <missing: xdpyinfo>
  OpenGL: renderer: AMD RENOIR (DRM 3.44.0 5.17.0-1-MANJARO LLVM 13.0.0)
    v: 4.6 Mesa 21.3.5
Audio:
  Device-1: NVIDIA driver: snd_hda_intel
  Device-2: AMD Raven/Raven2/FireFlight/Renoir Audio Processor driver: N/A
  Device-3: AMD Family 17h HD Audio driver: snd_hda_intel
  Sound Server-1: ALSA v: k5.17.0-1-MANJARO running: yes
  Sound Server-2: PulseAudio v: 15.0 running: yes
Network:
  Device-1: Intel Wi-Fi 6 AX200 driver: iwlwifi
  IF: wlp2s0 state: up mac: <filter>
Bluetooth:
  Device-1: Intel AX200 Bluetooth type: USB driver: btusb
  Report: rfkill ID: hci0 rfk-id: 4 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: see --recommends
Drives:
  Local Storage: total: 953.87 GiB used: 169.04 GiB (17.7%)
  ID-1: /dev/nvme0n1 vendor: SK Hynix model: HFS001TDE9X084N
    size: 953.87 GiB
Partition:
  ID-1: / size: 905.83 GiB used: 169.04 GiB (18.7%) fs: ext4
    dev: /dev/nvme0n1p3
  ID-2: /boot/efi size: 511 MiB used: 288 KiB (0.1%) fs: vfat
    dev: /dev/nvme0n1p1
Swap:
  ID-1: swap-1 type: partition size: 32 GiB used: 0 KiB (0.0%)
    dev: /dev/nvme0n1p2
Sensors:
  System Temperatures: cpu: N/A mobo: N/A
  Fan Speeds (RPM): N/A
Info:
  Processes: 452 Uptime: 8m Memory: 30.79 GiB used: 3.68 GiB (12.0%)
  Shell: Zsh inxi: 3.3.12

고쳐 쓰다:amdgpu_bl1클린 부팅 시 컨트롤러를 사용하여 밝기를 제어 할 수 있는 것 같습니다 .

echo 50 | sudo tee /sys/class/backlight/amdgpu_bl1/brightness

잠에서 깨어난 후에는 nvidia_wmi_ec_backlight책임을 져야 합니다.

답변1

대안으로 xrandr을 사용하여 명령줄에서 밝기를 제어할 수 있습니다. 출력 장치의 이름이 DP-1이라고 가정하면(xrandr을 실행하여 찾을 수 있음) 다음 명령을 사용하여 설정할 수 있습니다.

xrandr --output DP-1 --brightness .8

그러면 밝기가 80%로 설정됩니다. 밝기를 설정하는 Bash 함수를 만들 수도 있습니다. 예를 들면 다음과 같습니다.

brightness() {
    DEV=$(xrandr |grep ' connected' |awk '{print $1}')
    (($1 >= 15 && $1 <= 115)) &&
       xrandr --output "${DEV}" --brightness \
         $(awk -v n="$1" 'BEGIN { printf "%.2f", n / 100 }') ||
    echo "invalid input"
 }

이는 15에서 115 사이의 값을 밝기 수준으로 허용합니다(감마의 약간의 과포화를 허용하기 위해).

brightness 100   # full brightness
brighness 40    # 40%, very dim
brightness 105  # over-saturated

답변2

모듈 작성자인 Daniel Dadap에게 연락했고 nvidia-wmi-ec-backlight그는 내 문제를 해결할 수 있는 패치를 제안했습니다.

여기 메일링 리스트의 토론을 따라가실 수 있습니다: https://patchwork.kernel.org/project/platform-driver-x86/patch/[이메일 보호됨]/

관련 정보