如何在`/ sys / class / backlight`中切换选项以解决亮度问题?

操作系统:Ubuntu – 18.04 LTS

我在/sys/class/backlight/目录中有2个符号链接。

 acpi_video0 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/backlight/acpi_video0/ nv_backlight -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-LVDS-1/nv_backlight/ 

亮度热键会更改acpi_video0/brightness的值。 但这实际上并没有改变显示器的亮度。

但是,手动更改nv_backlight/brightness的值实际上会改变显示器的亮度。

因此,将热键链接到nv_backlight而不是acpi_video0将解决我的问题,但我不知道该怎么做。

编辑:屏幕上出现弹出滑块进度条,用于操作亮度(热键)的Fn键。

编辑:

  1. 输入:

     cat /sys/class/backlight/nv_backlight/max_brightness 

    输出:

     100 
  2. 输入:

     cat /sys/class/backlight/nv_backlight/actual_brightness 

    输出(此值自动更改为相同的值,我手动输入/sys/class/backlight/nv_backlight/brightness ):

     10 
  3. 输入:

     cat /sys/class/backlight/acpi_video0/max_brightness 

    输出:

     15 

Bash脚本redirect-brightness

你的问题是增加/减少亮度的function键是更新/sys/class/backlight/acpi_video0/brightness而不是/sys/class/backlight/nv_backlight/brightness

最初的请求是拦截function键并使用它们来控制nv_backlight驱动程序。 这个问题是:

  • 棘手的udev脚本
  • 没有复杂的Python脚本,没有弹出通知滑块显示亮度。

解决方案是使用inotify监视对acpi_video0更改。 然后计算亮度百分比并将相同的百分比应用于nv_backlight

在下面的bash脚本中,您需要将WatchDriver更改为/sys/class/backlight/acpi_video0/brightness ,将PatchDriver to / sys / class / backlight / nv_backlight / brightness`

将脚本放在/usr/local/bin并使用以下命令使其可执行:

 chmod a+x /usr/local/bin/redirect-brightness 

首先使用命令行运行脚本

 redirect-brightness -l 

如果出现问题,请使用以下命令检查日志文件:

 cat /tmp/redirect-brightness.log 

如果一切正常,请将redirect-brightness添加到启动应用程序中。

redirect-brightness bash脚本

 #!/bin/bash # NAME: redirect-brightness # PATH: /usr/local/bin # DESC: Redirect to correct driver when Ubuntu is adjusting the wrong # /sys/class/DRIVER_NAME/brightness # DATE: June 13, 2018. Modified June 14, 2018. # NOTE: Written for Ubuntu question: # https://askubuntu.com/q/1045624/307523 WatchDriver="/sys/class/backlight/intel_backlight" PatchDriver="/sys/class/backlight/intel_backlight" # Must be running as sudo if [[ $(id -u) != 0 ]]; then echo >&2 "Root access required. Use: 'sudo redirect-brightness'" exit 1 fi # inotifywait required type inotifywait >/dev/null 2>&1 || \ { echo >&2 "'inotifywait' required but it's not installed. Aborting."; \ echo >&2 "Use 'sudo apt install inotify-tools' to install it.'"; \ exit 1; } # Was right watch driver directory name setup correctly? if [[ ! -d $WatchDriver ]]; then echo >&2 "Watch directory: '$WatchDriver'"; \ echo >&2 "does not exist. Did you spell it correctly? Aborting.'"; \ exit 1; fi # Was right patch driver directory name setup correctly? if [[ ! -d $PatchDriver ]]; then echo >&2 "Redirect to directory: '$PatchDriver'"; \ echo >&2 "does not exist. Did you spell it correctly? Aborting.'"; \ exit 1; fi # Get maximum brightness values WatchMax=$(cat $WatchDriver/max_brightness) PatchMax=$(cat $PatchDriver/max_brightness) # PARM: 1="-l" or "--log-file" then write each step to log file. fLogFile=false if [[ $1 == "-l" ]] || [[ $1 == "--log-file" ]]; then fLogFile=true LogFile=/tmp/redirect-brightness.log echo redirect-brightness LOG FILE > $LogFile echo WatchMax: $WatchMax PatchMax: $PatchMax >> $LogFile fi SetBrightness () { # Calculate watch current percentage WatchAct=$(cat $WatchDriver/actual_brightness) WatchPer=$(( WatchAct * 100 / WatchMax )) [[ $fLogFile == true ]] && echo WatchAct: $WatchAct WatchPer: $WatchPer >> $LogFile # Reverse engineer patch brightness to set PatchAct=$(( PatchMax * WatchPer / 100 )) echo $PatchAct | sudo tee $PatchDriver/brightness [[ $fLogFile == true ]] && echo PatchAct: $PatchAct >> $LogFile } # When machine boots, set brightness to last saved value SetBrightness # Wait forever for user to press Fn keys adjusting brightness up/down. while (true); do inotifywait --event modify $WatchDriver/actual_brightness [[ $fLogFile == true ]] && \ echo "Processing modify event in $WatchDriver/actual_brightness" >> $LogFile SetBrightness done 

原始答案2018年6月11日。

正在进行的工作答案

在Ubuntu 18.04中有许多nVidia用户遇到类似的问题:

  • 笔记本电脑MSI GT72VR的亮度在Ubuntu 18.04与NVIDIA GTX 1060移动无法正常工作
  • 电脑不会从悬挂中醒来,也无法改变亮度
  • 使用Nvidia驱动程序时亮度控制丢失,但重新出现在X.Org中
  • Xubuntu 18.04:使Fn亮度键与/ sys / class / backlight / nv_backlight /一起使用
  • 如何改变lubuntu中的背光驱动器
  • 笔记本电脑MSI GT72VR的亮度在Ubuntu 18.04与NVIDIA GTX 1060移动无法正常工作
  • NVIDIA在亮度控制和video播放上显示问题
  • 无法更改屏幕亮度
  • 无法使用按钮或滑块调节笔记本电脑屏幕的亮度。 编辑

在编写脚本之前

我可以编写一个脚本来模仿对/ acpi_video的更改并填充/ nv_backlight但是在我尝试这个之前:

  • 编辑/etc/default/grub
  • 寻找quiet splash
  • 添加后面的启动: acpi_backlight=vendor
  • 保存文件
  • 运行sudo update-grub

根据这个答案它应该适合你: Xubuntu 18.04:使Fn亮度键与/ sys / class / backlight / nv_backlight /一起使用


韦兰

在Wayland下,亮度不起作用。 确保您没有使用它。 请参阅: 无法使用按钮或滑块调整笔记本电脑屏幕的亮度。 编辑