华硕n50vn小太阳开启
本帖最后由 472950043 于 2014-9-5 22:19 编辑关于亮度调节这块,这两天也研究了一下。置顶帖关于这块的内容比较少,想要开启小太阳,我认为是难度比较大的。
1、首先要有一定的DSDT经验,不会的同学请先去补课(这里我推荐MaciASL软件,很好用)
2、根据自己的情况针对性地选择方法,比如显卡是N卡还是A卡,还是集显,显卡驱动方式是什么,系统引导方式是什么,台式机还是笔记本,显示器是否内建,不同情况不同方法,能少走弯路。这点李科鑫大神做得比较好。
3、了解GenericBrightness、ACPIBacklight、AppleBacklight、AppleACPIBacklight、AsusACPIBackLightPanel这几个关键的kext,了解PNLF、_DOS、_DSM、_BCL、_BCM、_BQC这几个关键函数
下面跟大家分享一下我的一些经验,我这款机型比较特殊,是华硕n50vn笔记本,显卡Nvidia 9650M GT,显示器是奇美CMO1561。
显卡是用变色龙的GraphicsEnabler选项识别的,有水波纹,显卡驱动应该是前提。显示器是内建的,最大分辨率1280 x 800,这点也要注意一下。键盘驱动用的是VoodooPS2Controller1.8.12版(包含VoodooPS2Keyboard)可用Fn + F7 打开/关闭显示器,不过减少亮度Fn + F5增大亮度Fn + F6不可用。配置最接近白苹果的型号是MacBookPro5,1
开启小太阳的一般方法是先在DSDT的显卡部分加入PNLF代码,但是我这个DSDT里面没有Device (PWRB)也没有Scope (\_SB),找遍了帖子也没找到放哪儿,抱着试试看的心理,只有放在了Device (VGA)里面。
先说说PNLF的第一个函数Name (_HID, EisaId ("APP0002")),如果是用GenericBrightness那就是Name (_HID, EisaId ("LCD1234")),我推测这个跟GenericBrightness.kext里面Info.plist的IONameMatch字段值LCD1234有关,LCD1234应该是所有kext里面唯一的值,也就是说这句话可以加载kext,(APP0002我应该也是在一个kext的一个value里面找到过的,但是那个kext我删掉了回收站也找不到了)。
再说说PNLF的第二个函数Name (_CID, "backlight"),可以确定ACPIBacklight、AppleBacklight、AsusACPIBackLightPanel里面都有它,AppleACPIBacklight我不清楚,置顶帖的一个链接里面有提到这个,还是说AppleACPIBacklight有APP0002字段?这句话也是加载kext用的。大胆推测PNLF主要功能就是调用条和小太阳的,ncy2005说,添加PNLF代码到Device(PWRB)上面下面一个截图里有文字说明就有小太阳了。
第三个Name (_UID, 0x0A)和第四个Name (_STA, 0x0B)应该是不重要的,用ACPIBacklight的同学可能要改第三个函数为Name (_UID, 0x0E)的,我看了一下自己的DSDT,已经有Name (_UID, 0x0A)这个值了,而且出现的地方一般上面都有Name (_HID, EisaId ("PNPxxxx")),我推测这个是ACPI的即插即用设备标识,为了不重复我改成了0x0E
_DOS可选,在AsusACPIBackLightPanel和ACPIBacklight的Device (LCD)中会用到,AsusACPIBackLightPanel是华硕专用的亮度调节,使用时要删除其他的亮度调节驱动,否则它不一定能被加载(IOreg软件也可以看出来,关键字搜索back,PNLF下面加载了什么),我用它的话效果不理想,有小太阳,实际亮度不变,控制台中看到执行了多次_BCM函数。
_DSM可选,在多处可以看到,仿冒声卡,电源电量、亮度调节都有出现,它 包含多个类似"@0,built-in",Buffer () {} 的函数,配合DTGP函数来内建一个硬件,让PCI显示具体信息,在奶牛大大的三楼帖子中也有提到。其中pwm-info可以是跟分辨率有关的,NVMT是跟开机亮度有关的,EDID是显示器描述,可以写在DSDT里面,也可以用in.plist和out.plist配合变色龙加载
_BCL为必须,功能是控制亮度表,FrankieD的帖子说,亮度有16+1+2档,1是空挡,2是开机默认亮度值,对笔记本来说分使用电源时的默认亮度和使用电池时的默认亮度,大胆推测台式机应该是亮度有16+1+1档,如果这里的档位不正确,会产生亮度调到一半就卡死,控制台有错误信息,这时候最好找一个跟机子最接近的白苹果的DSDT中_BCL的档位,我是在MacBookAir5,1的ACPI下SSDT-5.aml文件中找到的,可能是我的MacBookPro5,1的ACPI文件不全,没有_BCL,我直接复制过来,重启,就可以顺畅调节了。
_BCM为必须,我用ACPIDebug(Rehabman的ACPI排错补丁,需要配合ACPIDebug.kext)看到控制台在亮度调节的时候调用了_BCM函数,而且我这里有一个判断句If (LAnd (LGreaterEqual (Arg0, Zero), LLessEqual (Arg0, 0x64)))我猜测是Arg0在亮度为Zero亮度表里面最小亮度到0x64亮度表里面最大亮度之间才执行亮度函数,否则小太阳是变化了,实际亮度却不变。我用ACPIBacklight按一下调用一次,用华硕专用的AsusACPIBackLightPanel,按一下调用好几次。。
_BQC为必须,虽然_BQC函数很简单,通常就1、2行甚至直接return 0,纯粹的一个形式主义,但是p.H大大就因为少了这个吃了亏,ACPIBacklight不能被加载。
说了这么多,大部分都是我这个新手的经验之谈,我是调节出小太阳了,但是实际屏幕不会被调节,偏好设置的节能器里面也缺少相应选项。
如果以上我的理解有误,恳请大大们指出,也欢迎其他同学回帖交流!
{:9_598:}同!DSDT我也不怎么修改,悲催死了 191539652 发表于 2014-9-6 01:19 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
同!DSDT我也不怎么修改,悲催死了
是啊,大部分人不懂修改原理,只是纯粹模仿大神修改的,而每个人机型都不一样,大神的帖子也不能面面俱到,常见的机型好弄,不常见的机型只能靠人品。 http://smilies.oss-cn-hangzhou.aliyuncs.com/ac/10.png
你dsdt发上来看? xiao201261 发表于 2014-9-6 08:21 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
你dsdt发上来看?
大神求指点,我现在是用的是ACPIBacklight.kext,有小太阳,但是实际屏幕不会被调节,偏好设置的节能器里面也缺少相应选项。
472950043 发表于 2014-9-6 10:18 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
大神求指点,我现在是用的是ACPIBacklight.kext,有小太阳,但是实际屏幕不会被调节,偏好设置的节能器里 ...
测试下{:8_528:}
本帖最后由 472950043 于 2014-9-6 11:02 编辑
xiao201261 发表于 2014-9-6 10:31 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
测试下
你在Scope (_SB)的Device (PCI0)的底部加了一个Device (PNLF)函数吧,我觉得PNLF加哪里都是一样的,甚至加在DSDT的开头和结尾都行,RehabMan的Brightness fix就是用Scope (\_SB)函数包裹Device (PNLF)加在DSDT最后面的。
他的正则代码into device label PNLF remove_entry;
into definitionblock code_regex . insert
begin
Scope (\_SB)\n
{\n
Device (PNLF)\n
{\n
Name (_HID, EisaId ("APP0002"))\n
Name (_CID, "backlight")\n
Name (_UID, 0x0A)\n
Name (_STA, 0x0B)\n
}\n
}\n
end;
顺便问一下Scope (\_SB)和Scope (_SB)有什么区别?
472950043 发表于 2014-9-6 11:01 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
你在Scope (_SB)的Device (PCI0)的底部加了一个Device (PNLF)函数吧,我觉得PNLF加哪里都是一样的,甚至加 ...
http://smilies.oss-cn-hangzhou.aliyuncs.com/ac/22.png
亮度调节我是没有折腾的
因为我这破机器就那样至于位置的话
Apple规范就在那(也可以其它地)
我就照zhe规范的 xiao201261 发表于 2014-9-6 11:39 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
亮度调节我是没有折腾的
因为我这破机器就那样至于位置的话
Apple规范就在那(也可以其它地) ...
ACPI的信息包括:
配置信息,这些信息从legacyPNP设备的配置,到多处理器,到NUMA,比如现在的MultipleCore的信息就只能从ACPI得到。Linux启动很多代码就是处理这些配置信息,比如APIC,IOAPIC设置等。
ACPI相关设备,主要是笔记本电脑相关的设备,包括电源按钮,电池,外接电源,风扇,热键等。
底层硬件,比如PCI中断路由,chipset(主要是南桥PCI-to-LPCbridge)操作等。
电源管理,ACPI定义的电源管理包括CPU的电源管理(调频率P-state,idleC-state,throtting T-state),设备电源管理(D-state),系统电源管理(Suspend-to-Ram,Suspend-to-Disk, power off)等。
设备热插拔,ACPI用一种统一的方式来描述设备的热插拔,这样的设备从单一的PCI设备,到笔记本电脑的DockingStation,到整个PCI hierarchy,CPU,Memory,甚至整个NUMA节点。
可以说要理解现代PC平台必须了解ACPI。ACPI主要是由很多表(Table)组成,而DSDT(Differentiated System Description Table)是其中一个最主要的ACPI表之一这些都是从哪儿看的? 472950043 发表于 2014-9-6 12:37 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
这些都是从哪儿看的?
威廉第三的教程里好像 xiao201261 发表于 2014-9-6 13:26 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
威廉第三的教程里好像
你应该是在坛里混了挺久的了,我只弄了几天,而且大多只是猜测,未经证实。。威廉第三的我找了一下,关于DSDT的是不是就那一个教程啊? 472950043 发表于 2014-9-6 14:23 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
你应该是在坛里混了挺久的了,我只弄了几天,而且大多只是猜测,未经证实。。威廉第三的我找了一下,关于 ...
http://smilies.oss-cn-hangzhou.aliyuncs.com/ac/18.png
你可以看看顶置贴关于dsdt修改那段啊
页:
[1]