如何在`/ 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键。
编辑:
-
输入:
cat /sys/class/backlight/nv_backlight/max_brightness
输出:
100
-
输入:
cat /sys/class/backlight/nv_backlight/actual_brightness
输出(此值自动更改为相同的值,我手动输入
/sys/class/backlight/nv_backlight/brightness
):10
-
输入:
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下,亮度不起作用。 确保您没有使用它。 请参阅: 无法使用按钮或滑块调整笔记本电脑屏幕的亮度。 编辑
- / proc / acpi / battery / BAT0 / XXX在哪里进入12.10?
- 不同的Boot Options意味着什么? (即acpi = off,noapic,nolapic等)
- 惠普Pavilion G6 1209的温度比平常高,风扇工作在11.10
- “电池电量”无法识别
- bootoption“acpi = noirq”在永久使用中有任何缺点吗? 帮我调试一下
- 在shell脚本中使用acpi_listen命令
- 18.04在MSI GE63上 – 启动挂起在’加载初始ramdisk’而没有’acpi = off`
- 安装Ubuntu 15.04挂在“ACPI PCC探测失败”然后“失败命令:读取Fpdma排队”
- 如何使键盘亮度按钮以较小的间隔调整?