5年前我花了一周时间也没解决的问题,现在只用了2个小时就完美解决了

重要提示

这篇文章展示了我的思考及尝试过程,其中一些诸如文件保存的方法等简单操作没有加入,如果你很着急或是刚刚接触Linux,请参考这篇精简版【地址摸我】

参考资料:[1]https://blog.csdn.net/u013991521/article/details/49562365

[2]https://askubuntu.com/questions/762764/cant-change-brightness-in-ubuntu-16-04-lts

本人的一台联想昭阳E46G笔记本(无独显),在被换上i5 520M、4G内存、120G ssd之后继续延续着他第8年的使命。

尽管如此,但即便是windows7也无法流畅的在这台老机器上运行了。于是,我重新给他装上了Linux系统(5年前尝试了基于Debian 8 某Linux发行版,这次是Ubuntu 18.04 LTS)

不出所料,5年前的BUG又一次的出现了!!

只能在结束boot界面后到Ubuntu的logo出现的那短短几秒的时间可以通过Fn组合键调节亮度!!进入系统后使用Fn调节亮度,屏幕的亮度调节滑块正常显示,但屏幕背光没有丝毫改变

全亮与一格亮度对比【没有任何变化】

然而这个现象在我的另一台笔记本上却没有出现。

附上未出BUG机器的配置:

Model:ASUS X84L

CPU:intel B815 @1.60GHz

RAM:2G DDR3

HDD:320G WD

GPU:AMD HD6470m 1G

在查阅多方资料与不断尝试后,我发现是因为Intel集成显卡的原因。

原因如下:

fn调节的是/sys/class/backlight/acpi_video0/brightness文件,而Intel的文件是/sys/class/backlight/intel_backlight/brightness

-------来自参考资料[1]

参考资料[1]中给出了两种解决方案:

1)通过修改/etc/default/grub 来实现对Intel显卡的支持

2)手动通过命令修改

然而第1种方案对我无效,而我喜欢经常调节亮度,法2实在过于麻烦。

在参考资料[2]中也有一种方案,但依旧对我无效。

由于发现是外文资料,且国内好像无人翻译,现翻译在另一篇文章上,可以先尝试一下【地址摸我】

解决思路

经过实验发现,在通过Fn组合键促发亮度调节功能时,系统的亮度logo会有正常响应

而且,/sys/class/backlight/acpi_video0/brightness 会有变化

!我可以写一个程序监控/sys/class/backlight/acpi_video0/brightness ,然后反手把读出来的值经过处理写到/sys/class/backlight/intel_backlight/brightness!

观察得出:

我的/sys/class/backlight/acpi_video0/brightness 值的范围在[0,10],且0时为最暗但不是黑屏,10为最亮

我的/sys/class/backlight/intel_backlight/brightness值的范围在[0,4882],且0时为最暗且为黑屏,4882为最亮

写入超出范围的值均会触发写入错误。

注:图片仅为文件格式展示,不代表最低/高值

于是就有了第一代程序

import time

import os

# 先赋777权限(其实这里给高了,不过没关系

os.system("sudo chmod -R 777 /sys/class/backlight/intel_backlight/brightness")

while True:

# 先读取Fn组合键保存的文件

acpi_l = open("/sys/class/backlight/acpi_video0/brightness")

# 简单的线性调整,偏置值+20 为了在调至最暗时不至于黑屏 480权重请自己测试,不同机型可能不一样

brightness= str(int(acpi_l.read()) * 480 + 20)

acpi_l.close()

# 以“w”模式打开,方便清空

intel_l = open("/sys/class/backlight/intel_backlight/brightness","w")

intel_l.write(brightness)

intel_l.close()

# 等待0.5s,在不过多占用系统资源的情况下获得较好的体验

time.sleep(0.5)

先解释下为什么要每次给写入权限:因为sys目录里的权限掉电会还原,所以每次都要打上。

然而这样的操作很麻烦,每次先不说要打开一个文件,还要输密码,而且还要给他一个单独的shell占用着。

拓展1

我先创建了/etc/rc.local文件(Ubuntu16.10以后就没有了)

加入了

# 注:为了精简,这里的/etc/rc.local文件内容仅包含有实际意义的部分

sudo chmod -R 777 /sys/class/backlight/intel_backlight/brightness

python /etc/auto_brightness/change.py

然后重启

结果卡死在启动界面!!

赶紧进入可读写的单用户模式把rc.local删了。

分析原因

Linux的开机启动项目必须执行完才能进入桌面,然而 while True。。。。

难道这与开机自启无缘了吗?

拓展2

其实用screen就可以完美解决!

要使用screen,请先执行

sudo apt-get install screen

然后建立一个sh文件

screen_name="auto_run"

screen -dmS $screen_name

#以下路径为python程序的路径

cmd="python3 /etc/auto_run/change.py";

screen -x -S $screen_name -p 0 -X stuff "$cmd"

screen -x -S $screen_name -p 0 -X stuff '\n'

在/etc/rc.local中加入

如果没找到/etc/rc.local,请参考https://blog.csdn.net/weixin_43599336/article/details/85970601

sudo chmod -R 777 /sys/class/backlight/intel_backlight/brightness

# 刚刚的sh文件路径

sh /etc/auto_run/auto_run.sh

重启

sudo reboot

问题解决!

通过反光就看得出来!!!

拓展3

你以为就这么结束了吗?

其实我觉得个人喜欢的亮度范围在[500,2500]之间,如果用线性变化有时会出现加一格嫌亮,降一格觉得暗的情况。

于是我就开始用了一个新的处理函数

10.8x2 + 299x + 201

整个程序就变成了这样

import time

while True:

acpi_l = open("/sys/class/backlight/acpi_video0/brightness")

l = int(acpi_l.read())

brightness = str(int(10.8 * l * l + 299 * l + 201))

intel_l = open("/sys/class/backlight/intel_backlight/brightness","w")

intel_l.write(brightness)

intel_l.close()

time.sleep(0.5)

这个函数可以使亮度调节的中后段调节更加的细腻,更符合我的个人习惯

要注意的一点是:一点要确保当l在[0,10]时,你的函数值不会小于0或溢出最大值(我的是4880)

Linux快捷键不能调节亮度,Linux(Ubuntu)无法调节亮度的终极解决方案(还原Fn组合键调节方法...相关推荐

  1. linux开机黑屏时间长,Ubuntu启动长时间黑屏解决方案

    虽然不知道这是不是Ubuntu的通病,不过从10版本后很多机器都会出现Ubuntu启动过程中一直黑屏直到登录画面,中间显示器一点反应没有,根本看不到发生了什么,让人很难受.造成这种情况的原因主要是安装 ...

  2. linux快捷键锁定屏幕,天天Linux-Ctrl+S快捷键锁定屏幕的问题

    Windows过来的初学者常遇到的问题,在Vi里写完东西,习惯性Ctrl+S保存,然后就死在那里了,完全没有反映,只好重启,高级点的用Alt+F2/3/4切换到另外的控制台干别的事情 其实应该用Ctr ...

  3. 常用的Linux快捷键 [译]

    本文原文是英文,我只做了翻译和一点整理工作.感谢 Pio 大侠!原文作者还在不停的更新这个帖子: 点击这里查看原文出处 目前的翻译稿基于2006年11月6日原稿.可以到原作者的Blog上去提供您所知道 ...

  4. linux系统怎么安装pr,Linux安装后的配置

    系统:CentOS-6.3 1.NVIDIA驱动的安装与配置 Linux本身的显卡驱动是能够满足平常应用的,但是有时候我们为了获得3D效果,或者更流畅的视频体验,我们会安装新的显卡驱动.这时候就需要安 ...

  5. 查看linux代码版本,如何查看 Linux Mint 版本号和代号 | Linux 中国

    Linux Mint 每两年发布一次主版本(如 Mint 19),每六个月左右发布一次次版本(如 Mint 19.1.19.2 等).你可以自己升级 Linux Mint 版本,而次版本也会自动更新. ...

  6. linux mint版本,如何查看 Linux Mint 版本号和代号 | Linux 中国

    原标题:如何查看 Linux Mint 版本号和代号 | Linux 中国 了解 Linux Mint 版本号可以帮助你确定某个特定软件是否适用于你的系统,或者检查你的系统是否已达到使用寿命. -- ...

  7. 电脑组合键无法调节亮度及其解决方法

    电脑组合键无法调节亮度及其解决方法 @author Gxiang date 2019/5/13 #Question1 问题:新装的系统使用组合键(FN+F5/F6(个人电脑的))无法调节屏幕的亮度. ...

  8. Linux快捷键不能调节亮度,linux debian ubuntu等亮度调节失效或滑竿无效的解决办法...

    前情提要:我的笔记本,东芝SatelliteL600-22B,生产日期2010年. 自从装了Ubuntu14.04,小生就经常处于被亮瞎的状态,因为亮度调节是失效的,默认应该是开了最高亮度. Ubun ...

  9. Linux自动亮度,ubuntu亮度无法自动调节终极解决方案

    关于ubuntu亮度无法自动调节的问题,纠结了我快两年,主要是自己懒,写了个脚本来调节亮度,不过还是稍显不便.近日兴起折腾了一番,终于找到问题根结了. There are many ways to c ...

最新文章

  1. Java 和 HTTP 的那些事(四) HTTPS 和 证书
  2. 论文,风险管理(背诵)
  3. 调用cmd方法,用于网盘文件压缩下载
  4. javaScript第七天(1)
  5. 3.live555源码分析----延时队列
  6. python url解析path_Django(CBV解析、模板层)
  7. java基础:8.1 异常
  8. 知识表示学习Trans系列梳理(论文+代码)
  9. Java密码类型_java加密类型和算法名称
  10. easyMule自动关机工具(可用于1.X和2.0版本)
  11. vue 判断是否是微信浏览器
  12. as常用固定搭配_语法必看:as的几种固定用法
  13. 2015~2020年中国房价走势
  14. 一文读懂keepalive的工作原理
  15. Spider爬虫--手机App抓包爬虫
  16. 超全整理100个 Pandas 函数,建议收藏!
  17. 原理图库:元器件引脚命名如何输出上划线
  18. Linux搭建Discuz论坛
  19. View系列 (三) — Measure 流程详解
  20. 全国大中学生体测取消选测 长跑成为必测项目

热门文章

  1. 全景播放器-js+flash
  2. Java获取当前时间戳的方法
  3. Python后端工程师学习路线——大学版
  4. IDisposable
  5. 为什么Service之间最好不要相互调用?
  6. 风压和功率计算公式轴流式_带你认识风机中风压、风量、功率与转速的关系!...
  7. 多个ai文件合并成pdf_Ai保存为多页面pdf脚本 Ai(Illustrator)多图层保存
  8. win10 电脑u盘读不出来怎么办
  9. 计算与数据结构篇 - 哈希算法 (Hash)
  10. “开-闭”原则(Open-Closed Principle)