解决ubuntu无法调整和保存屏幕亮度的问题

1. 问题发现

ubuntu无法调整屏幕亮度,对笔记本来说很耗电,同时也很刺眼,因为它是默认以最大亮度来工作的。

所谓的调整,方法为下面的其中一种:

  1. Fn+左右的快捷键,亮度没有变化

  2. 在亮度与锁屏中拉动进度条亮度没有变化

解决ubuntu无法调整和保存屏幕亮度的问题_第1张图片

fn调节的是/sys/class/backlight/acpi_video0/brightness文件

而I卡的文件是/sys/class/backlight/intel_backlight/brightness。

2. 什么是i卡?

三种主要品牌显卡: Nvidia , AMD/ATI 和 Intel

2.1 Nvidia

提供最基本的仅支持 2D 的开源驱动(只提供闭源驱动)。但闭源驱动的性能非常好,与 Windows 上的性能几乎差不多。而且 Nvidia 的驱动更新很频繁,而且他们还会使用 VDPAU 加速 API 来提供快速视频加速,这个加速 API 功能仅被当前最新的 Adobe Flash beta 支持。所以,如果你经常观看全屏高清视频的话,一块 Nvidia 显卡加上他们的驱动应该是最佳方案了。但是 Nvidia 至今还不支持 Xrandr 协议,Xrandr 协议可以允许 X 来调整显示分辨率,或者扩展/克隆到外部显示器。

2.2 AMD/ATI

在 AMD 收购 ATI 之前,可以说在 Linux 上基本没有像样的 ATI 驱动。不过自从被 AMD 收购后,情况就变得大为不同。ATI 的闭源 Linux 驱动有了跨越式的发展,而且还支持 Xrandr 协议,这样你就可以完全使用 Ubuntu 内置分辨率调整工具了。而且在性能方面也非常好,也可以与 Wine 一起很好的工作。AMD 在 Linux 驱动方面确实贡献卓越。当然有一点与 Nividia 驱动相似的,那就是也不支持 KMS 。闭源的 AMD 驱动使用与 Nvidia 不同的视频 API ,而是唤作的 VA-API,不幸的是 Adobe 目前至今还没有支持它,所以基于 Flash 的高清视频受到一定的影响。另外与 Nvidia 相比欠缺的一点是,AMD 驱动需要花费更多的时间来支持新版内核及新的 X Server 版本,但对于 Ubuntu 用户来说并不是问题,因为它会默认搭载在 Ubuntu 发行版中

2.3 Intel

可以说, Intel 是开源 Linux 图形卡驱动方面的王者,他们只发布 Linux 平台上的开源驱动,这也意味着你能体验到像 KMS 及 Xrandar 支持这样的所有功能。但 Intel 也并不完美,如果你拥有一块基于 GMA500 的卡的话,它基本上无法工作于 Ubuntu 上,因为这是英特尔购买了其他公司的芯片组后并更名了它,而且他们也不能为其开发开源驱动,虽然目前英特尔还在解决此问题。Intel 的另外一个最大缺点是他们的硬件性能远远不如 AMD 和 Nvidia ,并且对于游戏支持也不够好。

2.4 总结

如果对于你来说有开源驱动是非常重要的事,那么你可以用 Intel 或 AMD 的卡;如果你更关注性能,那么你可以用 AMD 或 Nvidia 的卡。
总的来说, AMD/ATI 是更加前沿,更加值得推荐,因为他们在提供稳定开源驱动的同时,还提供了可靠快速的闭源驱动,堪称两全其美。

3 解决办法

回来原来的问题

一种比较将就的方法就是刚开机的时候就按Fn+左右键,这样就可以改变亮度了。一旦进去之后就不可以改变了。

比较完美的方法如下:

3.1 配置grub使得fn可以调节亮度

首先,修改grub的用户配置文件, /etc/default/grub

注意该配置文件是grub2才有的, 首先你必须明确你的grub版本是多少, 较低的版本没有这个设置文件

更过关于配置文件的信息,请参见

修改系统启动项 grub2配置的方法 ubuntu

grub2的/etc/default/grub文件详解

sudo vim /etc/default/grub 

GRUB_CMDLINE_LINUX=""改为GRUB_CMDLINE_LINUX="acpi_backlight=vendor"
或者使用下面更复杂的配置

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 
GRUB_CMDLINE_LINUX=""

修改为

acpi_osi=Linux acpi_backlight=vendor
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash acpi_osi=Linux”
GRUB_CMDLINE_LINUX="acpi_backlight=vendor“

更新grub.cfg

sudo update-grub 

查看grub.cfg,可以发现每个启动项都加入了”acpi_backlight=vendor”

grub.cfg位于/boot/grub/grub.cfg

3.2 修改影响屏幕亮度的文件

fn调节的是/sys/class/backlight/acpi_video0/brightness文件, /sys/class/backlight/acpi_video0/brightness文件则存储了最大的屏幕亮度

而I卡的文件是/sys/class/backlight/intel_backlight/brightness, 同样/sys/class/backlight/intel_backlight/max_brightness文件存储了其所标识的屏幕最大值

3.2.1 Fn键的系统配置文件

首先查看一下你的屏幕亮度值的范围:

sudo cat /sys/class/backlight/acpi_video0/max_brightness

我的是9,也就是说亮度值可以在 0 ~ 9之间。
解决ubuntu无法调整和保存屏幕亮度的问题_第2张图片

修改 /etc/rc.local ,在最后的 exit 0 之前添加:

echo 3 > /sys/class/backlight/acpi_video0/brightness

解决ubuntu无法调整和保存屏幕亮度的问题_第3张图片

即可在系统启动后将屏幕亮度设置成你期望的值

3.2.2 intel集显的配置文件

sudo vim /sys/class/backlight/intel_backlight/brightness 

最大值是976
改变数值,保存后屏幕亮度会发生对应的变化(0-976)
另外,可以输入下面的命令来直接改变其数值

echo 50 > /sys/class/backlight/intel_backlight/brightness

这样里面的数值就改成了50了,当然其他数值都是一样的。不过,这一命令要在root环境下

如果觉得每次都这样设定呢?太麻烦了
把echo 50> /sys/class/backlight/intel_backlight/brightness添加到/etc/rc.local 就能开机自动设定屏幕初始亮度了, 当然我们可以先在终端内常试几次, 选择一个自己感觉最舒服的亮度

3.3 调节gamma值

xgamma -gamma .7 

关于gamma:

gamma值是用曲线表示的,这是一种人的眼睛对光的一种感应曲线,其中包括了物理量、身理感官及心理的感知度。
如果一个显示器若要完整的表现出高度真实的画面(无论是高亮度的画面或低亮度的画面),则显示器的对比很少必须5000:1以上,而我们的显示器由于成本的考虑,我们只能做出500~1000:1时,我们就必须用gamma修正来作补偿,也就是在较暗的影片我们选择较高的gamma值(如2或3,甚至4),以牺牲部分亮部的层次来获取更多的暗部层次;相反的在一些较亮的影片(外景较多)则我们则选择较低的gamma值(如0,-1甚至-2)以牺牲部分的暗部层次,来使得亮部层次(如云层)能更分明。
PS:什么是显示器的对比?
所谓的对比,是指最亮除以最暗

在实际的景色环境中,您极少可能从很亮的画面瞬间进入很暗的画面,但在电影或电视和游戏画面上则我们经常会突然从很亮的画面进入很暗的画面,或从很暗的画面进入很亮的画面,因此正确的gamma曲线设定可以帮助我们获得最真实的视觉感受。

重启就大功告成了。

你可能感兴趣的:(ubuntu,bug,屏幕,笔记本,亮度)