Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 12187|回复: 113

[交流] GTX970M---原生亮度调节 [复制链接]

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-19 20:16:59 |显示全部楼层
本帖最后由 zjfg0228 于 2016-1-13 15:50 编辑

本来已经放弃了的,但是前天逛论坛的时候看到这个帖子
  1. http://bbs.pcbeta.com/viewthread-1648662-1-5.html
复制代码

,想修复一下独显引导第二阶段载入条在屏幕左下方的问题,但是照了了帖子里做之后,重启发现我的屏幕亮度变暗了,按了一下亮度调节的键发现亮度有变化。当时并没有用GenericBrightness.kext和APCIBacklight.kext,于是我知道原生亮度被开启了。

闲话说多了,说说我怎么做的吧,不是教程,只是经验分享,有不足的地方欢迎指正。


1、我的电脑是6代CPU,核显是HD530,爬了很多帖子发现没戏,于是BIOS关了核显。然后装了webDriver,驱动了独显。这里怎么装的我就不多废话了,论坛里多得是。
2、独显驱动了之后系统信息里显示显卡的显存还是0M,而且用IORegistryExplorer看到显卡下面加载的是AppleDisplay,不是AppleBacklightDisplay,而且显示器也没有内建。loppol在一个帖子里说开启亮度调节的必须条件就是显示器内建+AppleBacklightDisplay被加载。
于是各种爬帖,找到的办法是DSDT注入显卡信息。于是照提取了显卡ROM,用iDSDT注入了显卡信息。显存终于不是0M、终于加载AppleBacklightDisplay了。
这里要说一下,built-in一定要选对
  1.                  Method (_DSM, 4, NotSerialized)
  2.                         {
  3.                                 Store (Package ()
  4.                                 {
  5.                                         "@0,compatible",
  6.                                 Buffer (){
  7.                                                 "NVDA,NVMac"
  8.                                         },
  9.                                         "@0,device_type",
  10.                                         Buffer (){
  11.                                                 "display"
  12.                                         },
  13.                                         "@0,name",
  14.                                         Buffer ()
  15.                                         {
  16.                                                 "NVDA,Display-A"
  17.                                         },
  18.                          "@1,AAPL,boot-display",
  19.                           Buffer (One)
  20.                           {
  21.                               0x01
  22.                           },
  23.                          "@1,backlight-control",
  24.                          Buffer (0x04)
  25.                          {
  26.                              0x01, 0x00, 0x00, 0x00
  27.                          },
  28.                                         "@1,compatible",
  29.                                         Buffer ()
  30.                                         {
  31.                                                 "NVDA,NVMac"
  32.                                         },
  33.                                         "@1,device_type",
  34.                                         Buffer ()
  35.                                         {
  36.                                                 "display"
  37.                                         },
  38.                                         "@1,name",
  39.                                         Buffer ()
  40.                                         {
  41.                                                 "NVDA,Display-B"
  42.                                         },
  43.                                         "@1,built-in",
  44.                           Buffer (One)
  45.                           {
  46.                               0x01
  47.                           },
  48.                                         "@1,pwm-info",
  49.                           Buffer (0x14)
  50.                           {
  51.                             /* 0000 */    0x01, 0x14, 0x00, 0x64, 0xA8, 0x61, 0x00, 0x00,
  52.                             /* 0008 */    0x1E, 0x02, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
  53.                             /* 0010 */    0x00, 0x04, 0x00, 0x00
  54.                           },
  55.                          "@1,use-backlight-blanking",
  56.                          Buffer (One)
  57.                          {
  58.                               0x01
  59.                          },
  60.                                         "device_type",
  61.                                         Buffer ()
  62.                                         {
  63.                                                 "NVDA,Parent"
  64.                                         },
  65.                                         "hda-gfx",
  66.                                         Buffer ()
  67.                                         {
  68.                                                 "onboard-1"
  69.                                         }
  70.                                 }, Local0)
  71.                                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  72.                                 Return (Local0)
  73.                         }
复制代码
上面是我的显卡信息(可能里面有很多没有的参数,懒得删了)。可以看到很多参数是有两个的,要在IORegistryExplorer看一下自己的AppleDisplay是在哪个NVDA,DIsplay下,比如我的在NVDA,DIsplay-B@1下,所以注入的显卡信息里@1下的必要参数一定要有,比如"@1,pwm-info", "@1,use-backlight-blanking",。

3、至此我的亮度调节还没有解决。有按照《理论上完美解决N卡亮度调节问题》里说的做,没成功。后来仔细读这个帖子时发现自己看漏了一句话——“有些可能也需要插入 NVMT和 EDID才能成功”,于是参照http://bbs.pcbeta.com/viewthread-1473634-1-1.html注入了EDID。还是亮度调节还是不行,但是显示器有名字了‘。【这一步是不是必须我也不清楚】

4、上班无聊的适合看了开始说的哪个帖子,本来也没想弄,但是帖子里的这一个
  1. <key>@1,AAPL,boot-display</key>
  2. <string>0x00000001</string>
复制代码
让我眼前一亮,因为我一直觉得我的先前搞出来的亮度调节在调的是核显的亮度,所以怎么调都没用。下班回家照着帖子里做,就出现现在的惊喜。PS:又把这个帖子给loppol看,他说这个帖子最有含金量的就是上面那段,因为这可能解决3K屛启动黑屏。有兴趣的可以试试。
5、先前也有在这个帖子下面说过,当时的情况是可以调亮度但是两秒之后亮度就变回来了。百思不得其解。看到这个帖子http://bbs.pcbeta.com/viewthread-1439193-1-1.html,忽然想到自己动过AppleBacklight.kext,于是找virjay要了原版,果然解决了,可以正常进行亮度调节,但是最后一档黑屏,重启不能保存亮度。
6、今天早上在床上挣扎时来的灵感:因为先前AppleBacklight.kext-》Info.plist-》IOKitPersonalities-》AppleIntelPanelA-》ApplePanels-》Default的值,就是可以调亮度但是两秒之后亮度就变回来的情况,当时最后一档不是黑屏,而且最高亮度也很暗。于是我把ApplePanels的子项里几乎所有的值都换到Default下面试了试(其实就换了6次),结果和我想的一样,有的值可以让最后一档不黑屛。分享两个我觉得有用的:
  1. 00110018 0037005F 008A00B3 00EB0124 016701A9 01D40209 025402A2 02F8034D 039603FF 0400
复制代码

这个最高档不够亮,
  1. 0045004E 00CE00FF
复制代码
这个是我现在在用的,最高档就是最亮,但是最低档不够暗。也懒得再试了,各种奇葩结果都有。
7、重启亮度保存:可以看看这个帖子http://bbs.pcbeta.com/viewthread-1182812-1-1.html,建议结合这个帖子http://bbs.pcbeta.com/viewthread-1538926-1-1.html。但是注意要Clover要装RC。

就这么多了,DSDT文件我就不分享了,免得机型不同出什么差错。
还有一点废话等会二楼补上。

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-20 10:42:00 来自手机 |显示全部楼层
本帖最后由 zjfg0228 于 2016-1-14 12:39 编辑

上面的DSDT文件是以前留下来的,忘删了。
--------------------------------------------------------------------------------------------------------------------------
补充一下我实现亮度调节过程的发现,希望对不能开启亮度调节的朋友有帮助。

上面有提到,刚还原到原版AppleBacklight.jext的时候,最后一档是黑屏。于是我尝试修改SSDT中的_BCL函数的亮度比表。
1、改的时候我发现不对劲的地方:虽然亮度表里的最低档是Zero,但是这里的亮度表只有10档,我用快捷键调节的时候却是有17档的,而且接电源开机的亮度是最高档,也不是亮度表里给的亮度等级。所以我觉得这个亮度表应该没有被使用,证明原生的亮度调节被开启了。
2、在ioreg里看到brightness的最大值是400,最小值是0。记得有一个帖子里说brightness的最大值、最小值是存在另一个文件里(不知道是不是记错了),但是爬了很多帖都没有见到有说怎么改brightness值的。
后来改DSDT的时候发现:pwn-info的值是这样的
  1. /* 0000 */    0x01, 0x14, 0x00, 0x64, 0xA8, 0x61, 0x00, 0x00,
  2. /* 0008 */    0x1E, 0x02, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
  3. /* 0010 */    0x00, 0x04, 0x00, 0x00
复制代码
最后1行是00000400,和ioreg里看到的brightness的Max值是一样的,总觉得的这不是一个巧合。把我找的的几个pwn-info都比较了一下,发现于是都是这个样的。于是我把 0x00, 0x04, 0x00, 0x00改成了 0x00, 0x03, 0x00, 0x00,重启之后发现ioreg里的Max值变成了300,正是我修改的值。Min值一直没有搞定,我把pwn-info里的连续两个0x00都缓过来,Min还是0.


==========================================================================

说一下webDriver驱动怎么打的:
1、装webDriver前把S/L/E下的GeForce开头和NV开头的kext删掉
2、装完webDriver后,修改AppleGraphicsControl.kext,这个要根据自己设的机型来,参考这个帖子

  1. http://bbs.pcbeta.com/viewthread-1611506-1-1.html
复制代码

记得重建缓存,修复权限。
3、取消nv_disable=1,加上nvda_drv=1,重启






Rank: 5Rank: 5Rank: 5

UID
2008254
帖子
474
PB币
602
贡献
0
技术
22
活跃
415
发表于 2015-12-20 15:41:52 |显示全部楼层
我顶,太高深了,楼主,有没有高手出来说句话

Rank: 2Rank: 2

UID
859248
帖子
156
PB币
3
贡献
0
技术
0
活跃
187
发表于 2015-12-20 15:44:29 |显示全部楼层
赚点金币,下载附件
头像被屏蔽

麦骨

Rank: 5Rank: 5Rank: 5

UID
19012
帖子
573
PB币
0
贡献
0
技术
1
活跃
153
发表于 2015-12-20 15:57:18 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-20 16:03:29 |显示全部楼层
moonmetal 发表于 2015-12-20 15:57
楼主强大!我也发现mic是没有的……,不过我现在最头疼的是alc888声音是卡卡带破音的……不知怎么破啊

试试自己做仿冒声卡吧,可以看看这个帖子http://bbs.pcbeta.com/viewthread-1387094-1-1.html

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-20 16:06:07 |显示全部楼层
virjay 发表于 2015-12-20 15:41
我顶,太高深了,楼主,有没有高手出来说句话

一个大神都没召唤到……

Rank: 5Rank: 5Rank: 5

UID
2063847
帖子
702
PB币
0
贡献
0
技术
1
活跃
977
发表于 2015-12-20 16:13:40 |显示全部楼层
看看!!!!!

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-20 16:19:56 |显示全部楼层
补充一下ioreg部分的图,希望有高手帮忙,又搞了一上午,爬了各种贴……
按亮度调节的两个快捷键,brightness的value会变,但是屏幕亮度并没有变。
亮度调节的相关代码_BCL、_BCM等方法在SSDT的GFX0里,但是AppleBacklight是在PEG0下的PEGP里。有试过把显卡信息backlight-control等字段从DSDT里的PEGP下移动到GFX0下,但是重启之后出现禁止符,无法开机。


求个大神帮忙
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-20 20:49:37 |显示全部楼层
来个大神吧

Rank: 5Rank: 5Rank: 5

UID
2008254
帖子
474
PB币
602
贡献
0
技术
22
活跃
415
发表于 2015-12-20 21:01:14 |显示全部楼层
z7外放太垃圾,想改善一下,今天装了BOOM2,boom2反复卸载安装了几次,现在找不到输出设备,找不到输入设备了,我擦。。咋办啊

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-20 21:06:59 |显示全部楼层
virjay 发表于 2015-12-20 21:01
z7外放太垃圾,想改善一下,今天装了BOOM2,boom2反复卸载安装了几次,现在找不到输出设备,找不到输入设备 ...

用原版的AppleHDA重新打驱动把……或者用我上面给的试试。
另外,我发现realtekALC.kext是可以删掉的

Rank: 5Rank: 5Rank: 5

UID
2008254
帖子
474
PB币
602
贡献
0
技术
22
活跃
415
发表于 2015-12-20 22:45:43 |显示全部楼层
zjfg0228 发表于 2015-12-20 21:06
用原版的AppleHDA重新打驱动把……或者用我上面给的试试。
另外,我发现realtekALC.kext是可以删掉的

原来是忘记打补丁了。。

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-21 21:52:30 |显示全部楼层
怎么就沉了呢……

Rank: 2Rank: 2

UID
3312902
帖子
291
PB币
34
贡献
0
技术
0
活跃
1093
发表于 2015-12-21 23:54:11 |显示全部楼层
楼主内建显示器怎么弄的?能请教一下吗?我是gtx980m

Rank: 7Rank: 7Rank: 7

UID
3195259
帖子
1152
PB币
249
贡献
0
技术
27
活跃
684
发表于 2015-12-22 07:35:29 |显示全部楼层
这个我之前也是同样的阶段 问了Rehabman 也没得出实质进展。。。
另外问一下lz的hdmi音频是原声的能用吗w

Rank: 7Rank: 7Rank: 7

UID
3195259
帖子
1152
PB币
249
贡献
0
技术
27
活跃
684
发表于 2015-12-22 07:40:12 |显示全部楼层
zjfg0228 发表于 2015-12-20 16:19
补充一下ioreg部分的图,希望有高手帮忙,又搞了一上午,爬了各种贴……
按亮度调节的两个快捷键,brightn ...

bcm那些函数直接复制好像不妥吧?
你查查怎么从ssdt移植到dsdt

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-22 10:43:23 |显示全部楼层
loppol 发表于 2015-12-22 07:40
bcm那些函数直接复制好像不妥吧?
你查查怎么从ssdt移植到dsdt

HDMI没测过,应该不行。我的bcm函数没有动过的

Rank: 2Rank: 2

UID
3590418
帖子
288
PB币
0
贡献
0
技术
3
活跃
200
发表于 2015-12-22 10:45:04 |显示全部楼层
loppol 发表于 2015-12-22 07:40
bcm那些函数直接复制好像不妥吧?
你查查怎么从ssdt移植到dsdt

你的现在可以调亮度么?

Rank: 7Rank: 7Rank: 7

UID
3195259
帖子
1152
PB币
249
贡献
0
技术
27
活跃
684
发表于 2015-12-22 11:16:06 |显示全部楼层
zjfg0228 发表于 2015-12-22 10:43
HDMI没测过,应该不行。我的bcm函数没有动过的

我之前跟你一样 看了那个n卡小太阳的帖子
他说bcm bcl函数如果在dsdt是个前提
所以有过想把那些函数移植的念头
之前有个讨论移植的帖子 我看了一下没多关注
我之前问了rehabman 他给我的反馈是即使移植过去 能成功的概率不大
不过r神说对n卡研究不多
lz想多讨论的话可以接受我的qq请求w
回顶部
Copyright (C) 2005-2019 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件