Win10论坛

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

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

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

搜索
查看: 22832|回复: 84

[分享] 新发现 10.9.2 AMD/ATI显卡7系列FB原始值变了,附上原始FB值生成脚本(Framebuffer) [复制链接]

Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2195
PB币
586
贡献
0
技术
69
活跃
1568
发表于 2014-3-10 13:54:31 |显示全部楼层
本帖最后由 lanyi1318 于 2015-4-20 11:25 编辑

10.9.2 AMD/ATI显卡7系列FB原始值变了,6系列的好像没有变,附上全部系列 AMD/ATI 和 Intel 的原始FB值生成脚本,原始FB值生成的前提是系统中的显卡驱动文件必须是原版的没有改动过,改过的请先替换回原版的!

对于有些AMD/ATI显卡要改FB值才能完美多屏输出或驱动,
所以要用到原始的FB值,
刚刚学改FB值的时候发现 10.9.2 AMD/ATI显卡7系列的原始值变了.

使用方法如下,
先下载脚本然后在终端输入
php空格,再把 php脚本文件拖入终端,回车

这样终端下就生成了原版 FB 值了。这个脚本只能在10.9以上的系统上用,10.9之前的要下php编译相关的文件

注意有些ID找出来的FB值会有两个 比如 6798 这个ID可以找到 两个FB值 Futomaki 和 Aji ,有的显卡更多 我们不知道系统用的是那个FB,所以要指定系统用那个FB或用系统使用的那个FB来改,然后改了才有效果.

A卡原始FB值的确定
方法一
有人说是看显卡rom信息上提供的显卡接口数,然后如果你的是7系列就在7系列中随便找到一个接口数一样的来改就OK了。
接口数的确定有些人说不是看物理接口数,比如他的显卡看实体数接口只有3个,但是用的FB值却是4个的,用3个的没成功过。
我就给网上三个人改用去变色龙或Clover源代码网址中输入显卡ID找FB名的方法来改FB都没成功过,他自已随便找到一个接口数一样的来改就OK了。
教程上也是说原则上是找接口数一样的来改,但这个接口数怎么确定我还不能完全体会.


方法二
Win下用GPU-Z 确定显卡ID。
然后打开下面的网址,这是变色龙和Clover的源代码文件,http://forge.voodooprojects.org/p/chameleon/source/tree/HEAD/trunk/i386/libsaio/ati.c
http://sourceforge.net/p/cloverefiboot/code/HEAD/tree/rEFIt_UEFI/Platform/ati.c

Mac 下按快捷键 command + F
Win 下按快捷键 Ctrl + F

搜索你的 显卡ID 比如我的是 1002-6810 我就输入 6810 就可以,就可以找到类似这样的内容,
{ 0x6810,        0x00000000, CHIP_FAMILY_TAHITI,        "AMD Radeon R9 270X", kFutomaki        },
把 kFutomaki 中的 k去掉就是我的用到的 原始FB值名称 Futomaki 。
如果我找到的是 kNull 那就是没有就得另找方法确定你用的是那个原始FB值.

方法三
使用 IORegistryExplorer 软件在搜索栏输入 ATY 就可以看到
ATY,Futomaki(FB值名称)@0  里的 Futomaki 就是我用到的FB值。


上面的三个方法只是确定我们改的原始FB是那个,但我们系统用的是不是这个就要用另外确定了,反正我是用方法二和方法三确定我想改的FB值都是 Futomaki 我用这个改的,正在学习阶段有不对的地方请指点。

听说好像改FB还要配合 DSDT 或 ATY_init.kext 或 引导参数中设置FB , 也可以直接用系统正在用的FB值来改,四选一,目的就是指定显卡驱动使用我们要改的FB值,这样我们修改FB值后才有效.

确定我想改的FB后我就用了上面说的四选一的方法设定系统用 Futomaki 用这个ID.


怎么确定系统正在用的那个FB呢 ? 可以用方法三来看,就知道了,如果你用了DSDT或ATY的方法三来指定FB 那如果你用的FB不一样,那用前用后就可以通过 IORegistryExplorer 软件来看FB是不是变了.

附上显卡加ID的文章

[交流] 有关AMD\ATI系列非“免驱”显卡驱动方法及 Intell老平台主板的安装驱动补丁分享
http://bbs.pcbeta.com/viewthread-1485484-1-1.html

给DSDT加显卡代码教程

[教程] A卡桌面版DSDT完美驱动教程~~
http://bbs.pcbeta.com/viewthread-1475669-1-1.html

FB修改教程

[交流] 发图庆祝ATI Mobility HD 4330 终于开QE/CI 及ATIFramebuffer修改解说
http://bbs.pcbeta.com/viewthread-848362-1-1.html

从零开始完美玩转苹果ATI驱动+QE/CI+多屏,理论上所有A卡可行,以4860(RV790GT)为例
http://bbs.pcbeta.com/viewthread-991835-1-1.html

[交流] ATI 5系和6系显卡驱动&修改FB探讨
http://bbs.pcbeta.com/viewthread-1060313-1-1.html

[教程] 修改FB完美驱动HD7850,不再显示HD 7xxx
http://bbs.pcbeta.com/viewthread-1487383-1-1.html

从零开始完美玩转苹果ATI驱动+QE/CI+多屏,理论上所有A卡可行,以4860(RV790GT)为例

http://bbs.pcbeta.com/viewthread-1487383-1-1.html



| 接口的类型 | 接口的标志位 | 显示特性 | 对齐字符位 | txmt | encd | hotplugin | senseID |

02 00 00 00 40 00 00 00 09 01 00 00 00 01 00 03
aa aa aa aa bb bb bb bb cc dd ee ee ff gh ii jj

aa aa aa aa:屏幕接口种类,如LVDS、CRT、DVI等。
bb bb bb bb:显卡专属控制码,如02 00 00 00一定得配40 00 00 00。
cc:屏幕专属控制码,如LVDS就得使用09。
dd:内置为01,外置为00。
ee ee:不明,应为保留扩充用途。
ff:crtc控制器的编号。
g:transmitter发射器的编号。
h:encoder编码器的编号。
ii:hot-plug id热插拔顺序的编号,通常不用动它照原样即可。
jj:sense id屏幕感应id。这个是由显卡上各接口的i2c id算出来的,i2c是“内部电子回路”这几个字的英文缩写,通常被写死在显卡bios里。计算公式是:(i2cid and 0xf) + 1 = sense id

其中上面提到的 ee ee:不明,应为保留扩充用途。中  ee ee 的第一组ee也就是蓝色部分 有人认为是接口顺序可以看这里 http://bbs.pcbeta.com/viewthread-1591050-1-3.html  中的 6楼 有提到

下面是用到的一些命令 :在终端执行 CD radeon_bios_decode 和 redsock_bios_decoder 所在文件夹, 然输入以下命令.
红色的 1002_6810.rom 改成 你的 显卡文件 rom 的名字.


./radeon_bios_decode < 1002_6810.rom > connector.txt
./redsock_bios_decoder < 1002_6810.rom > redsock.txt

对于台式机常出现

FB(Frambuffer)修改部分出现的不同是两个接口senseid相同,通常情况下是DVI-I接口

可以同时输出模拟信号和数字信号

这种情况下可以直接忽略其中模拟信号的部分(通常是下面的那个接口),只保留上面的数字信号部分即可

毕竟现在大多数显示器都是数字输出




Intel HD 5000.zip (807 Bytes, 下载次数: 48)
Intel HD 4000.zip (752 Bytes, 下载次数: 35)
Intel HD 3000.zip (773 Bytes, 下载次数: 32)
AMD:ATI.zip (933 Bytes, 下载次数: 651)
redsock_bios_decoder.zip (5.57 KB, 下载次数: 70)
radeon_bios_decode.0.2.zip (7.59 KB, 下载次数: 82)
FB值脚本原文地址http://www.tonymacx86.com/graphics/112299-apple-intel-amd-ati-framebuffers.html
最后编辑时间 02-26-2014 at 12:54 PM.
他上面的FB值还没有更新,但我们可以用他提供的脚本生成新的







4

查看全部评分

Rank: 9

UID
3322572
帖子
6999
PB币
34743
贡献
0
技术
4724
活跃
906

远景技术达人 热心会员

发表于 2014-3-10 13:59:25 |显示全部楼层
前排支持分享。
另外问一下,这个脚本也可以生成Intel集成显卡的FB值吗?用生成Intel集成显卡的FB值具体又会有什么效果呢?

Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2195
PB币
586
贡献
0
技术
69
活跃
1568
发表于 2014-3-10 14:02:56 |显示全部楼层
daxuexinsheng 发表于 2014-3-10 13:59
前排支持分享。
另外问一下,这个脚本也可以生成Intel集成显卡的FB值吗?用生成Intel集成显卡的FB值具体又 ...

可以吧,我没有试试过intel的,我只用过AMD/ATI的
1

查看全部评分

Rank: 9

UID
3322572
帖子
6999
PB币
34743
贡献
0
技术
4724
活跃
906

远景技术达人 热心会员

发表于 2014-3-10 14:05:11 |显示全部楼层
lanyi1318 发表于 2014-3-10 14:02
可以吧,我没有试试过intel的,我只用过AMD/ATI的

嗯,因为看到楼主提供了Intel集显驱动的下载,才这么问的。

Rank: 7Rank: 7Rank: 7

UID
2238696
帖子
3504
PB币
2829
贡献
0
技术
238
活跃
783
发表于 2014-3-10 14:10:48 |显示全部楼层
本帖最后由 kenwu98 于 2014-3-10 14:32 编辑

只有空白输出。

是否自动更新了驱动程序?

<?php

$ctype=array('02000000'=>'LVDS','04000000'=>'DDVI','08000000'=>'SVIDEO','10000000'=>'VGA','00020000'=>'SDVI','00040000'=>'DP','00080000'=>'HDMI','000c0000'=>'4k?');

$entry=array('01051','02041','00001','03061');

function padHex($d,$l) {return str_pad(dechex($d),$l,'0',STR_PAD_LEFT);}

function toHex($s){$i=0;$t='';while(isset($s[$i])){$t.=padHex(ord($s[$i++]),2);}return $t;}

function toStr($h){$s='';$i=4;while($i-->0){$s.=chr($h>>(8*$i)&0xFF);}return $s;}

$f='/System/Library/Extensions/AppleIntelFramebufferAzul.kext/Contents/MacOS/AppleIntelFramebufferAzul';

$a=fopen($f,'r');

$s=array();

exec("nm $f",$s);

fseek($a,hexdec(array_shift(explode(' ',array_shift(preg_grep('/gPlat/',$s))))));

while(true) {

        $p=array();

        $t=array_map('toHex',str_split(fread($a,108),12));

        fseek($a,-108,SEEK_CUR);

        $f=strtoupper(toHex(fread($a,4)));

        if ($f=='FFFFFFFF') break;

        fseek($a,7,SEEK_CUR);

        echo "0x$f (".(ord(fread($a,1))*16)."MiB)\n";

        fseek($a,28,SEEK_CUR);

        foreach(str_split(fread($a,68),12) as $f) {

                $f=toHex($f);

                if (in_array(substr($f,0,5),$entry,true)) $p[]=$ctype[substr($f,8,8)];

        }

        echo implode(', ',$p)."\n".implode("\n",$t)."\n\n";

        while (in_array(toHex(fread($a,4)),array('00000000','32000000')));

        fseek($a,-4,SEEK_CUR);

}

fclose($a);


终端运行后只有空白

是否 ?> 结尾?


Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2195
PB币
586
贡献
0
技术
69
活跃
1568
发表于 2014-3-10 14:15:56 |显示全部楼层
kenwu98 发表于 2014-3-10 14:10
只有空白输出。

是否自动更新了驱动程序?

只有空白输出? 什么意思?

Rank: 7Rank: 7Rank: 7

UID
4309589
帖子
780
PB币
22
贡献
0
技术
196
活跃
863
发表于 2014-3-10 14:24:55 来自手机 |显示全部楼层
技术帖支持!

Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2195
PB币
586
贡献
0
技术
69
活跃
1568
发表于 2014-3-10 14:31:32 |显示全部楼层
kenwu98 发表于 2014-3-10 14:10
只有空白输出。

是否自动更新了驱动程序?

使用方法不对呀!!! 不是拷贝 php 脚本里的内容到终端,而是把 AMD/ATI.php 这个文件拖到终端!!!

Rank: 7Rank: 7Rank: 7

UID
2238696
帖子
3504
PB币
2829
贡献
0
技术
238
活跃
783
发表于 2014-3-10 14:33:43 |显示全部楼层
lanyi1318 发表于 2014-3-10 14:31
使用方法不对呀!!! 不是拷贝 php 脚本里的内容到终端,而是把 AMD/ATI.php 这个文件拖到终端!!!

这我知道

php  /download/xx.php

UID
2409498
帖子
27335
PB币
915
贡献
4
技术
1350
活跃
709
发表于 2014-3-10 14:38:52 |显示全部楼层
0=0
表示震惊啊。 从10.7到10.9,我的5000的应该都没有改动过!
我还想应该不会再有变化了,结果突然变了0-0

Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2195
PB币
586
贡献
0
技术
69
活跃
1568
发表于 2014-3-10 15:03:48 |显示全部楼层
kenwu98 发表于 2014-3-10 14:33
这我知道

php  /download/xx.php

我重新编辑了一下,你再看!

Rank: 5Rank: 5Rank: 5

UID
209729
帖子
462
PB币
2759
贡献
0
技术
3
活跃
987
发表于 2014-3-10 15:07:50 |显示全部楼层
我的显卡是迪兰恒进6850 2G,显示器是DELL P2314H,接的是DP接口。10.9时进系统会黑屏,得彻底切断显示器电源再开启才能显示桌面,而前几天升级后发现,能直接进去了!不知和这个有没有关系呢?

Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2195
PB币
586
贡献
0
技术
69
活跃
1568
发表于 2014-3-10 15:18:29 |显示全部楼层
old_cat 发表于 2014-3-10 15:07
我的显卡是迪兰恒进6850 2G,显示器是DELL P2314H,接的是DP接口。10.9时进系统会黑屏,得彻底切断显示器电 ...

也许有吧,我也不了解,FB值中有显卡用什么接口输出,是否可传输声音等信息,我的 R9 270x 必须改FB 否则HDMI不能用黑屏,DP就可以直接用。

Rank: 5Rank: 5Rank: 5

UID
209729
帖子
462
PB币
2759
贡献
0
技术
3
活跃
987
发表于 2014-3-10 15:24:10 |显示全部楼层
lanyi1318 发表于 2014-3-10 15:18
也许有吧,我也不了解,FB值中有显卡用什么接口输出,是否可传输声音等信息,我的 R9 270x 必须改FB 否则 ...

嗯,我的HDMI倒是可以直接接电视的,不过没有声音选项。还有最重要的就是,安装时接的DP接口,过后接DVI硬是没信号

Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2195
PB币
586
贡献
0
技术
69
活跃
1568
发表于 2014-3-10 15:32:02 |显示全部楼层
old_cat 发表于 2014-3-10 15:24
嗯,我的HDMI倒是可以直接接电视的,不过没有声音选项。还有最重要的就是,安装时接的DP接口,过后接DVI硬 ...

改DSDT就可以实现 HDMI和DP 传输声音了,DVI没有输出可改 FB 值实现

Rank: 5Rank: 5Rank: 5

UID
209729
帖子
462
PB币
2759
贡献
0
技术
3
活跃
987
发表于 2014-3-10 15:47:34 |显示全部楼层
lanyi1318 发表于 2014-3-10 15:32
改DSDT就可以实现 HDMI和DP 传输声音了,DVI没有输出可改 FB 值实现

折腾过DSDT,没成功,看看驱动都差不多搞好了,就没敢再瞎折腾。要不,请您高抬贵手,空闲时帮帮我?

黑苹果专用车

Rank: 7Rank: 7Rank: 7

UID
523723
帖子
2005
PB币
642
贡献
0
技术
202
活跃
650
发表于 2014-3-10 17:28:32 |显示全部楼层
学习一下,这个会用到的。

Rank: 7Rank: 7Rank: 7

UID
212687
帖子
1530
PB币
2752
贡献
0
技术
47
活跃
574
发表于 2014-3-11 11:53:37 |显示全部楼层
有没有HD4600的 ???台机的i3 4330的HD4600

现在DVI和VGA同时接显示器,VGA花屏。

Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2195
PB币
586
贡献
0
技术
69
活跃
1568
发表于 2014-3-11 13:39:16 |显示全部楼层
无限 发表于 2014-3-11 11:53
有没有HD4600的 ???台机的i3 4330的HD4600

现在DVI和VGA同时接显示器,VGA花屏。

加入EDID 了???

有inetl的但我不知道那个是 HD4600 的,为了搞FB找到的是英文的我还是用 Google 翻译的才看懂!!!
具体还得看原文 面有提到地址
1

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
212687
帖子
1530
PB币
2752
贡献
0
技术
47
活跃
574
发表于 2014-3-11 13:42:47 |显示全部楼层
lanyi1318 发表于 2014-3-11 13:39
加入EDID 了???

有inetl的但我不知道那个是 HD4600 的,为了搞FB找到的是英文的我还是用 Google 翻 ...

clover 2636  有注入
<key>ig-platform-id</key>
<string>0x0C160000</string>

0x0C160000  0x0C260000都试过,没加EDID

http://bbs.pcbeta.com/viewthread-1486203-1-1.html
回顶部
Copyright (C) 2005-2021 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛