ATI Radeon HD 7850修改FB完美驱动Mac OSX
ATI Radeon HD 7850修改FB完美驱动Mac OSX
修改FB完美驱动HD7850,不在显示HD 7xxx
主板:H77N-WIFI
CPU:I5 3450
显示卡:蓝宝石HD7850 2G版(四接口DP、HDMI、DVI-D、DVI-I)
DSDT内建显卡ID为6818或S/L/E下AMD7000Controller.kext和AMDRadeonX4000.kext的info加入0x68191002 HDMI可以正常输出,但系统信息显示HD 7xxx ,HDMI不能输出音频,而且不能多屏输出。肯定是FB不正确所至,故此决定修改FB。
第一步修改FB:
复制S/L/E下AMD7000Controller.kext到桌面。
在windows下用GPU-Z另存显卡的VBIOS,名称aaa.rom,
在MAC下将aaa.rom和redsock_bios_decoder复制到桌面,打开终端输入
- cd ~/desktop/
- ./redsock_bios_decoder < aaa.rom > redsock.txt
得到redsock.txt,接口数据如下:
21P0400.S03:
C40304 Pitcairn PRO A1 GDDR5 64Mx32 2GB
Subsystem Vendor ID: 174b
Subsystem ID: e221
Object Header Structure Size: 355
Connector Object Table Offset: 48
Router Object Table Offset: 0
Encoder Object Table Offset: fd
Display Path Table Offset: 12
Connector Object Id [19] which is[DISPLAY_PORT]
encoderobj id [0x21] which is [INTERNAL_UNIPHY2 (osx txmit 0x12[duallink 0x2] enc 0x4)] linkb: false
Connector Object Id [12] which is[HDMI_TYPE_A]
encoderobj id [0x21] which is [INTERNAL_UNIPHY2 (osx txmit 0x22[duallink 0x2] enc 0x5)] linkb: true
Connector Object Id [4] which is [DVI_D]
encoderobj id [0x20] which is [INTERNAL_UNIPHY1 (osx txmit 0x11[duallink 0x1] enc 0x2)] linkb: false
Connector Object Id [2] which is [DVI_I]
encoderobj id [0x1e] which is [INTERNAL_UNIPHY (osx txmit 0x10[duallink 0x0] enc 0x0)] linkb: false
Connector Object Id [2] which is [DVI_I]
encoderobj id [0x15] which is [INTERNAL_KLDSCP_DAC1 (osx txmit 0x00 enc 0x10?)]linkb: false
然后复制redsock_bios_decoder到桌面,终端输入
- ./radeon_bios_decode< aaa.rom > connector.txt
得到connector.txt,接口数据如下:
ATOM BIOS Rom:
SubsystemVendorID:0x174b SubsystemID: 0xe221
IOBaseAddress:0x0000
Filename:221P0400.S03
BIOSBootup Message:
C40304 Pitcairn PRO A1 GDDR5 64Mx32 2GB
PCI ID: 1002:6819
Connector at index 0
Type[@offset 45370]: DisplayPort (10)
Encoder[@offset 45374]: INTERNAL_UNIPHY2 (0x21)
i2cid[@offset 45480]: 0x90, OSX senseid: 0x1
Connector at index 1
Type[@offset 45380]: HDMI-A (11)
Encoder[@offset 45384]: INTERNAL_UNIPHY2 (0x21)
i2cid[@offset 45507]: 0x92, OSX senseid: 0x3
Connector at index 2
Type[@offset 45390]: DVI-D (3)
Encoder[@offset 45394]: INTERNAL_UNIPHY1 (0x20)
i2cid[@offset 45534]: 0x94, OSX senseid: 0x5
Connector at index 3
Type[@offset 45400]: DVI-I (2)
Encoder[@offset 45404]: INTERNAL_UNIPHY (0x1e)
i2cid[@offset 45571]: 0x95, OSX senseid: 0x6
Connector at index 4
Type[@offset45410]: DVI-I (2)
Encoder[@offset 45414]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid[@offset 45571]: 0x95, OSX senseid: 0x6
得出:
接口 txmit enc senseid
DP 12 04 01
HDMI 22 05 03
DVI-D 11 02 05
DVI-I 10 00 06
DVI-I 00 10 06
到http://forge.voodooprojects.org/p/chameleon/source/tree/HEAD/trunk/i386/libsaio/ati.c查到蓝宝显卡是Aji,为4个接口。
查到Aji的原始值:
00040000040300000001010112040501
00040000040300000001020122050402
04000000140200000001030000000306
00080000040200000001040011020104
接口类型 接口标志位 显示特性 对齐字符 txmt encd 显示顺序 senseID
|00 04 00 00 | 04 03 00 00 | 00 01 | 01 01 | 12 | 04 | 05 | 01
接口类型:
0200 LVDS
0400 DVI-I
1000 VGA
8000 S-Video
0002 DVI
0004 Displayport
0008 HDMI
于是得出
00040000040300000001010112040401 DP
00040000040300000001020112040301 DP
04000000140200000001030011020205 DVI-D
00080000040200000001040022050103 HDMI (01为优先显示)
显卡本身是DP、HDMI、DVI-D、DVI-I四个接口,为什么修改为两个相同的DP接口而不是两个DVI呢?解释是原始值前部分不能更改,只能修改后面对应部份,这个是试验过很多次又重启过很多次得出的结论,Aji原始值是两个DP接口,所以改为一样的数值就可以正常显示了,理论上HD7850虽然有四接口但只能三屏输出。
用HexEdit打开桌面的ATI7000Controller.kext/Contents/macOS/AMD7000Controller
查找原版排成一行:
00040000040300000001010112040501000400000403000000010201220504020400000014020000000103000000030600080000040200000001040011020104
替换成修改好的一行然后保存:
00040000040300000001010112040401000400000403000000010201120403010400000014020000000103001102020500080000040200000001040022050103
将桌面修改好的ATI7000Controller.kext替换到S/L/E关修复权限。
至此FB修改完成。
第二步DSDT加入代码并开启HDMI和DP音频:
查找PEG0,在下面加入:
- Method (_DSM, 4, NotSerialized)
-
- {
- Store (Package (0x0C)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x18, 0x68, 0x00, 0x00
- },
- "@0,name",
- Buffer (0x08)
- {
- "ATY,Aji"
- },
- "@1,name",
- Buffer (0x08)
- {
- "ATY,Aji"
- },
- "@2,name",
- Buffer (0x08)
- {
- "ATY,Aji"
- },
- "model",
- Buffer (0x13)
- {
- "AMD Radeon HD 7850"
- },
- "hda-gfx",
- Buffer (0x0A)
- {
- "onboard-1"
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
- }
- Device (HDAU)
- {
- Name (_ADR, One)
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x02)
- {
- "hda-gfx",
- Buffer (0x0A)
- {
- "onboard-1"
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
- }
- }
DSDT内建Aji三个显示输出接口,内建四接口会黑屏。
注意:如要重装系统请将DSDT的三个Aji接口数据删掉,否则黑屏,因新系统未改FB值。
至此显卡完美驱动,双屏显示成功(因未有设备,理论上三屏都可以),HDMI和DP音频输出, 系统信息显示HD7850
工具和参考信息附件奉上。
21/3/7 21:58 上传
点击文件名下载附件
ATI Radeon HD 7850修改FB完美驱动Mac OSX
附件下载:
游客,如果您要查看本帖隐藏内容请回复