Ubuntu 16.04 LTS 完善解决亮度调整

环境:
ubuntu16.04 lts acer aspire 4752G i5-2450M

内容来源:点击这里

ubuntu无法调整屏幕亮度,对笔记本来说很耗电,同时也很刺眼,因为它是默认以最大亮度来工作的。
所谓的调整,方法为下面的其中一种:
1、Fn+左右的快捷键,亮度没有变化
2、在亮度与锁屏中拉动进度条亮度没有变化
 
解决ubuntu无法调整和保存屏幕亮度的问题

原因:
fn+(x)调节的是: /sys/class/backlight/acpi_video0/brightness文件,而I卡的文件是/sys/class/backlight/intel_backlight/brightness。

什么是i卡?
三种主要品牌显卡: Nvidia , AMD/ATI 和 Intel 
Nvidia
提供最基本的仅支持 2D 的开源驱动(只提供闭源驱动)。但闭源驱动的性能非常好,与 Windows 上的性能几乎差不多。而且 Nvidia 的驱动更新很频繁,而且他们还会使用 VDPAU 加速 API 来提供快速视频加速,这个加速 API 功能仅被当前最新的 Adobe Flash beta 支持。所以,如果你经常观看全屏高清视频的话,一块 Nvidia 显卡加上他们的驱动应该是最佳方案了。但是 Nvidia 至今还不支持 Xrandr 协议,Xrandr 协议可以允许 X 来调整显示分辨率,或者扩展/克隆到外部显示器。
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 发行版中。
Intel
可以说, Intel 是开源 Linux 图形卡驱动方面的王者,他们只发布 Linux 平台上的开源驱动,这也意味着你能体验到像 KMS 及 Xrandar 支持这样的所有功能。但 Intel 也并不完美,如果你拥有一块基于 GMA500 的卡的话,它基本上无法工作于 Ubuntu 上,因为这是英特尔购买了其他公司的芯片组后并更名了它,而且他们也不能为其开发开源驱动,虽然目前英特尔还在解决此问题。Intel 的另外一个最大缺点是他们的硬件性能远远不如 AMD 和 Nvidia ,并且对于游戏支持也不够好。 
总结
如果对于你来说有开源驱动是非常重要的事,那么你可以用 Intel 或 AMD 的卡;如果你更关注性能,那么你可以用 AMD 或 Nvidia 的卡。总的来说, AMD/ATI 是更加前沿,更加值得推荐,因为他们在提供稳定开源驱动的同时,还提供了可靠快速的闭源驱动,堪称两全其美。

回来原来的问题

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

===============================================
比较完美的方法如下:
1.修改 grub
$ sudo vi /etc/default/grub 
把GRUB_CMDLINE_LINUX="" 
改成GRUB_CMDLINE_LINUX="acpi_backlight=vendor" 
-----------------------------------------------------------------------------
下面是修改后的grub文件:

# If you change this file, run 'update-grub' afterwards to update 
# /boot/grub/grub.cfg. 
# For full documentation of the options in this file, see: 
#   info -f grub -n 'Simple configuration' 
 
GRUB_DEFAULT=0 
#GRUB_HIDDEN_TIMEOUT=0 
GRUB_HIDDEN_TIMEOUT_QUIET=true 
GRUB_TIMEOUT=10 
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` 
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 
GRUB_CMDLINE_LINUX="acpi_backlight=vendor" 
 
# Uncomment to enable BadRAM filtering, modify to suit your needs 
# This works with Linux (no patch required) and with any kernel that obtains 
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) 
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" 
 
# Uncomment to disable graphical terminal (grub-pc only) 
#GRUB_TERMINAL=console 
 
# The resolution used on graphical terminal 
# note that you can use only modes which your graphic card supports via VBE 
# you can see them in real GRUB with the command `vbeinfo' 
#GRUB_GFXMODE=640x480 
 
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux 
#GRUB_DISABLE_LINUX_UUID=true 
 
# Uncomment to disable generation of recovery mode menu entries 
#GRUB_DISABLE_RECOVERY="true" 
 
# Uncomment to get a beep at grub start 
#GRUB_INIT_TUNE="480 440 1"

-----------------------------------------------------------------------------------

2. 更新: grub.cfg
$ sudo update-grub 
查看grub.cfg,可以发现每个启动项都加入了"acpi_backlight=vendor" 
PS:grub.cfg 位于 /boot/grub/grub.cfg

修改影响屏幕亮度的文件
$ sudo vi /sys/class/backlight/intel_backlight/brightness 
默认是976(这也是我们开机每次都是最亮的原因)
改变数值(0 - 976),保存后屏幕亮度会发生对应的变化
另外,可以输入下面的命令来直接改变其数值
echo 50 > /sys/class/backlight/intel_backlight/brightness
这样里面的数值就改成了50了,当然其他数值都是一样的。不过,这一命令要在root环境下
PS:怎样进入root环境呢?
$ sudo su 
root@ubuntu:/home/zero#
这样系统就自动到zero用户目录下了

什么你没有root帐户? 看下面

$ sudo passwd
[sudo] password for zero: Enter your sudo password.

Enter new UNIX password: Enter your new root password.

Retype new UNIX password: Enter repassword.

passwd: password updated successfully
==================================================================

3. 锁定亮度
是不是每次都这样设定呢?太麻烦了
把echo 50> /sys/class/backlight/intel_backlight/brightness 添加到 /etc/rc.local 就能开机自动设定屏幕初始亮度了。

$ sudo vi /etc/rc.local

============================================================
修改/etc/rc.local如下:
#!/bin/sh -e 
# rc.local 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error. 
# In order to enable or disable this script just change the execution 
# bits. 
# By default this script does nothing. 
 #加上下面的这句
echo 50 > /sys/class/backlight/intel_backlight/brightness 
exit 0
===========================================================
另外调节gamma值,需要root权限。
root@ubuntu:/home/zero# xgamma -gamma .7 
-> Red  1.000, Green  1.000, Blue  1.000 
<- Red  0.700, Green  0.700, Blue  0.700

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

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

重启就大功告成了。

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

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

亮度较小的时候 
看起来变化 不是很大,可能是截图的原因吧。没想到可以把整个屏幕 都调黑的,嘿嘿
posted @ 2016-10-12 23:18  Zero.zf  阅读(23945)  评论(1编辑  收藏  举报