clover显卡注入功能详细讲解

clover显卡注⼊功能详细讲解
13 March 2014
GraphicsInjector功能源于变⾊龙,不过⽐变⾊龙更加灵活,定制性更加强⼤。Intel的显卡 GMA950, X3100, HD300, HD4000被证实可以很好的⼯作。你仅仅只要在config.plist打开显卡侦测功能,特别是对于N卡。在新版中显卡参数分开:intel、ati、nv区分开来。
<key>Inject</key>
<dict>
<key>ATI</key>
<false/>
<key>Intel</key>
<false/>
<key>NVidia</key>
<true/>
</dict>
但是要注意⼀点,有些笔记本(⽐如我的(Ermac) Dell Inspiron 1525)进⼊就是⿊屏。这时你可以⽤睡眠的⼩窍门(意思是说睡以后重新唤醒就不会⿊屏??)或者在dsdt中删除Device(CRT) 装置。在现在的clover版本中,你可以使⽤DsdtFixMask值修复,其值是0x0100即Display Fix, N卡:这是被⼴泛⽀持的显卡,其数据库由ErmaC不断更新。这是在config.plist中参数:
<key>Graphics</key>
<dict>
<key>GraphicsInjector</key>
<string>Yes</string>
<key>LoadVBios</key>
<string>No</string>
<key>VideoPorts</key>
<string>3</string>
<key>NVCAP</key>
<string>04000000000003000C0000000000000700000000</string>
<key>display-cfg</key>
<string>03010300FFFF0001</string>
</dict>
其中VideoPort为你的显卡接⼝数,nvcap值是你⾃⼰显卡的nvcap值,display-cfg⽆关紧要,默认就是这个值。⼀般N卡只需打开显卡注⼊功能即可即:
<key>NVidia</key>
<true/>
其他接⼝数,显卡内存什么的全部不需要. 其会⾃动侦测,并采⽤默认的nvcap和其他值,clover现在⽤的默认nvcap值就是上⾯这组:
04000000000003000C0000000000000700000000
这个你可以在clover源码中到:rEFI_UEFI—》》Platform—》NVIDIA.C中。遇到⿊屏或⾃动重启才启⽤定制nvcap值,nvcap值可由idsdt+显卡rom,勾选⽣成显卡驱动点击开始⽣成,在运⾏信息中可以看到。Nvmaker这个软件有些机⼦⽆法运⾏。当然并不是⾮要⾃⼰获取⾃⼰显卡的nvcap值。在下表的值⼤家都可以试试。
要多屏输出可能要修改nvcap值,关于nvcap值的定义不再此累述,因为我也不清楚。更多的认为03(⼗六进制数0x03)和0C这两个位置的所在的数字在取作⽤,03是主屏,0c 是扩展屏,0x03=0011,1就是打开接⼝的意思.为了不重复在主屏和扩展屏中同时打开某接⼝,可以使03所在位数值和0c数字所在位置数值加起来刚好等于F(⼗六进制)。以下常⽤的nvcap值组合:
到正确的nvcap值后可以把其值写⼊源码,⾃⼰编译⾃⼰的clover:N卡信息在:rEFI_UEFI—》》Platform—》》NVIDIA.C中。当然不要那么费事,直接clover config中注⼊nvcap值即可。
关于ATI/AMD显卡
这⾥要做个特别的讨论。对以原⽣⽀持的5xxx and 6xxxA卡,在不开启显卡注⼊功能的情况下⽤共同的ATIRadeonFramebuffer可进⼊桌⾯并且opengl可⽤但并不理想,如打开DVDPlayer它会崩溃。
<key>Graphics</key>
<dict>
<key>GraphicsInjector</key>
<string>Yes</string>
<key>FBName</key>
<string>Ipomoea</string>
韩绍功原型
<key>LoadVBios</key>
<string>No</string>
<key>VideoPorts</key>
<string>3</string>
</dict>
接⼝数为三,使⽤的ati config值为Ipomoea,并修正原始的接⼝参数:
<key>KernelAndKextPatches</key>
<dict>
<key>KernelCpu</key>
<string>No</string>
<key>ATIConnectorsController</key>
<string>6000</string>
<key>ATIConnectorsData</key>
<string>000400000403000000010000120401050008000004020000000100001102040310000000100000000001000000000002</string>安泽发热电缆
<key>ATIConnectorsPatch</key>
<string>040000000403000000010000100001061000000010000000000100000000000100080000040200000001000012040403</string></dict>
ATIConnectorsData为原始的接⼝参数,下⽂会介绍如何获取。 ATIConnectorsPatch为修正的接⼝参数,同样下⽂会叙述如何修改。对于移动版显卡,还得设置⼀个值:
<key>LoadVBios</key>
<string>Yes</string>
具体在config中的设置请看config-sample.plist⽂件
关于intel显卡
对于HD4000,显卡注⼊打开,然后注⼊合适的ig-platform-id以下是可选的值:对于笔记本
ig-platform-id: 01660000
ig-platform-id: 01660001
ig-platform-id: 01660002
ig-platform-id: 01660003
ig-platform-id: 01660004
g-platform-id: 01660008
ig-platform-id: 01660009
ig-platform-id: 0166000A
ig-platform-id: 0166000B
台式:
ig-platform-id: 01620005
ig-platform-id: 01620006
ig-platform-id: 01620007
⼀个个试,到⾃⼰合适的。笔记本常⽤的4,a。同时为避免因AppleIntelSNBGraphicsFB.kext使得 AppleIntelFramebufferCapri.kext加载出错(五国),要注⼊IMEI:
0x1e3a8086
即在fixes dsdt的new way勾选addIMEI。同时FAKEI的IMEI值填⼊0x1e3a8086。同时fixes dsdt中勾选FIX INTEL GFX 和FIX DISPlay,当然addDTGP是必须的。同时注⼊EDID
开启。如⿊屏、重影、双分屏、花屏换ig-platform-id. 在安装的时候可以填写FAKEID的intel GFX的值由g-platform-id替代,可以跳过intel 显卡。但要驱动intel 显卡此项只能填
HD4000: 0x01668086(笔记本)0x01628086(台式)。HD2500是0x015280860x01568086或不填,⽤系统⾃动侦测的。
EDID注⼊六氟异丙醇
在某些情况下你需要注⼊EDID,如某些sony本本senseid为07,和笔记本内屏⿊屏的情况。你也可以⾃⼰定制EDID.
<key>InjectEDID</key>
<string>Yes</string>
你可以注⼊显⽰器官⽅的edid
<key>CustomEDID</key>
<data>AP///////wAyDADfAAAAAAASAQOAIRV4CunVmVlTjigmUFQAAAABAQEBAQEBAQEBAQEBAQEB3iGgcFCEHzAgIFYAS88QAAAY3iGgcFCEHzAgIFYAS88QAAAAAAAA/gBXNjU3RwAxNTRXUDEKAAAA/gAjMz1IZYSq/wIBCiAgAJo=< <key>DualLink</key>
<string>1</string>
有些卡必须设置为0,如ATI HD1600,否则你将看到四个桌⾯。
ATI 显卡接⼝参数修正
⾸先,感谢bcc9提供⽅法,pcj实现这个path,dmazar使之⼯作。
MD5:3052fa7872f93a826f9e8c0867309816
对于10.8.3这个可能⽆法获取信息,试试新版:
MD5:c928fc9f01ce99c000ae54e130a2e5ad
MD5:973e0e185********a3c9457ff84fb0d
中国教育科学学报MD5:c70c2bcc48cee7f9198ba4a1f8421afe
2.在win下查看你的显卡id(设备管理,属性)或⽤system info查看。我的DeviceID= 0x6758,这是6000系列的卡,你的是什么系列的?⽪卡丘的帖⼦有收集请看这:
<key>IOPCIMatch</key>
<string>0x68981002 0x68991002 0x68E01002 0x68E11002 0x68D81002 0x68C010020x68C11002 0x68D910020x68B21002 0x68B810020x68B01002 0x68B11002 0x68A01002 0x68A11002 </string>
3.⽤ati_personality.pl或取原⽣⽀持显卡接⼝的参数信息(此步可省去直接附上:ATIFramebuffer原版参数
MD5:1e84c29b7d7723890083992dfd7dca63
10.8.3下的FB参数由xhcnb提供:10.8.3 FrameBuffer
MD5:3b8c075825d541a20f4104af5d3e5066
具体⽤法如下:假设你把ati-personality.pl放在桌⾯,确定终端已经⽤cd命令切换⼯作⽬录到桌⾯,则运⾏如下命令:
./ati-personality.pl ATI5000Controller.kext
这个命令获取原⽣⽀持的5系列的显卡接⼝参数,请确定S/L/E下有ATI5000Controller.kext这个kext 这边已经搜集好啦5系列和6系列的接⼝参数(ATIFramebuffer原版参数上⽂已烧结工艺
给)以上命令可免:
Kext /System/Library/Extensions//ATI5000Controller.kext/Contents/MacOS/AMD5000Controller
Personality: Douc
ConnectorInfo count in decimal: 2
Disk offset in decimal 165856
0000000 02 00 00 00 00 05 00 00 09 03 00 00 21 03 02 02
0000010 00 04 00 00 04 02 00 00 00 03 00 00 11 02 01 01
0000020
{0x68B1,0x00000000,CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770Series",kHoolock}
那么其ati config值就是Hoolock(注意去掉前⾯的字母k) so,你也可以采⽤变⾊龙推荐的ati config值,但,凡是没有绝对…… 现在我已 HD6670为例,其DevID=0x6758,采⽤
aticonfig值为Ipomoea 其原始接⼝信息(搜索上⽂所给的ATIFramebuffer原版参数.rtf⽂件):
Personality: Ipomoea
ConnectorInfo count in decimal: 3
Disk offset in decimal 180112
0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 01 05
0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03
0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 02
其中
0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 01 05
0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03
0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 02
这⼀系列数⼦就是我们要更改的数据,即:
<key>ATIConnectorsData</key>
<string>*****</string>
的值那么如何修正这组数据呢? 4.运⾏radeon_bios_decoder获取⾃⼰的显卡信息⾸先你得获取⾃⼰的显卡bios(显卡rom),在win下你可以⽤像GPU-Z,everest等如果你已
经安装啦clover,clover也可提取
启动clover后在引导界⾯(选择启动分区界⾯)按F6后进⼊mac后你将在/EFI/misc/c0000.bin到你的显卡rom⽂件,前提是你的EFI分区得是fat32格式。
现在假设你获取到显卡rom(命名为c0000.bin)并和radeon_bios_decoder都放在同⼀个⽂件夹,终端已经⽤cd 命令切换到该⽂件夹:
iMac:test slice$ ./radeon_bios_decode c0000.bin
ATOM BIOS Rom:
SubsystemVendorID: 0x1458 SubsystemID: 0x2557
IOBaseAddress: 0xe000
Filename: R667D32I.F1
BIOS Bootup Message:
GV-R667D3-2GI/F1
PCI ID: 1002:6758
Connector at index 0
Type [@offset 44282]: HDMI-A (11)
Encoder [@offset 44286]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44356]: 0x92, OSX senseid: 0x3
Connector at index 1
Type [@offset 44292]: DVI-D (3)
Encoder [@offset 44296]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 44383]: 0x95, OSX senseid: 0x6
Connector at index 2
Type [@offset 44302]: VGA (1)
Encoder [@offset 44306]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 44410]: 0x90, OSX senseid: 0x1
iMac:test slice$
以上信息我们只需要每个接⼝的senseid值:
DVI-D: 06
VGA: 01
HDMI: 03
以上我们知道有3个接⼝,DVI-D,VGA, HDMI,⽽Ipomoea原始接⼝信息如下:
0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 01 05
0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03
0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 02
这组数据中,绿⾊的就是描述接⼝类型的,红⾊部分就是senseid值. 其中我们已经了解到不同接⼝对应的值:
0004- DP
0008 - HDMI
1000 - VGA
0400 - DVI-D
0200 - LCD - for notebooks
笔记本内屏也有写成LVDS的⽽由上可知该显卡只有三个接⼝DVI-D,VGA,HDMI,分别对应的描述接⼝类型的值为:0400,1000,0008;对应的senseid值分别为:06,01,03
所以0004应改为0400,对应的senseid值也得修改。
修改后:
0000000 04 00 00 00 04 03 00 00 00 01 00 00 12 04 01 06 DVI-D
0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03 HDMI
0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 01 VGA
我也可以交换第三和第⼆⾏:
0000000 04  0000  00  04  03  00  00  00  01  00  00  12  04  010******** 10  00 00  00  10  00  00  00  00  01  00  00  00  00  00 010000020 00  08 00  00  04  02  00  00  00  01  00  00  11  02  04 03
现在可以把修正的Fb参数写⼊config啦:
<key>KernelAndKextPatches</key>
<dict>
<key>ATIConnectorsController</key>
<string>6000</string>
<key>ATIConnectorsData</key>
<string>000400000403000000010000120401050008000004020000000100001102040310000000100000000001000000000002</string>
<key>ATIConnectorsPatch</key>
<string>040000000403000000010000100001061000000010000000000100000000000100080000040200000001000012040403</string>
6.这个补丁⼯作在两种情况下;KernelCache开启(默认开启),或boot-args 包含”WithKexts”值。要注意你所选择的修改framebuffer要和写⼊config.plist对应。
<key>Graphics</key>
<dict>
<key>GraphicsInjector</key>
<string>Yes</string>
<key>FBName</key>
<string>Ipomoea</string>
测试在我的 HD6670、HD5570,dvd正常,可以播放4K分辨率的视频。其他信息:
0000000 04 00 00 00 04 03 00 00 00 01 00 00 12 04 01 06
0000010 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 01莱州地震
0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 05 03
如果遇到睡眠问题,改变vga输出的encoderid 值为00如果hdmi接⼝有问题改变HotPlugID值为05
任意kext打补丁(KextsToPatch)
你可以给很多kext打补丁,⽤这种⽅法,可免以直接⽤⼆进制修改⼯具像hexedit,oxED修改kext的⼆
进制字典,info同样也是可以修改。真的很⽅便。给⼀个⾮常有趣的例⼦:我研究voodoohda这个kext,发现字符串
"Headphones"= 48 65 61 64 70 68 6F 6E 65 73 00
其中后⾯⼀排数字是其各个字母对应的ASCII码(⼗六进制)我想把他重命名为”Telephones” =54 65 6C 65 70 68 6F 6E 65 73 00 写⼊config是这样⼦:
<key>KextsToPatch</key>
<array><key>0</key>
<dict>
<key>Name</key>
<string>VoodooHDA</string>
<key>Find</key>
<data>SGVhZHBob25lcwA=</data>
<key>Replace</key>
<data>VGVsZXBob25lcwA=</data>
</dict>
</array>
重启就可以看到效果。
这是给kext中⼆进制⽂件patch,也可以给info.plist:
<key>0</key>
<dict>
<key>Name</key>
<string>AirPortAtheros40</string>
<key>InfoPlistPatch</key>
<string>Yes</string>
<key>Find</key>
<string>pci168c,2a</string>
<key>Replace</key>
<string>pci168c,2b</string>
</dict>
如上是给AirPortAtheros40.kext的info.plist增加id。要特别注意的是patch info.plist是,注意你要path的值是string(字符型),还是data(数据),对应string,find值和repalce值如上可不转换为hex(⼗六进制)data则要转换⽽且还是64进制。如fakesmc的patch:
AWgPAACW就是01680f00 0096 转换后的结果。这个直接⽤plist edit pro编辑fakesmc的info.plist信息是在下⽅同步的结果就是转换后的情况。再来⼀个:
<dict>
<key>Name</key>
<string>AppleHDAController</string>
<key>Comment</key>
<string>Patch_to_not_load_this_driver</string>
<key>InfoPlistPatch</key>
<true/>
<key>Find</key>
<string>0x04020000</string>
<key>Replace</key>
<string>0x44220000</string>
</dict>
现在来⼏个有实⽤的价值的补丁⽅法。其中⼀个就是ATIConnectors patch为5系列和6系列的A卡。例如对以os 10.6,ATI RadeonX1650的显卡DeviceID=0x71cd不是通⽤的
(不是公版?),所以你不仅必须在ATIRadeonX1000.kext的info.plist中写⼊显卡id,还得修改其⼆进制⽂件。以前你可能要⽤oxed或hexeditor来编辑替换⼆级制⽂件中的内容,现在你只要这么做:
<key>0</key>
<dict>
<key>Name</key>
<string>ATIRadeonX1000</string>
<key>Find</key>
<string>81fa87710000</string>
<key>Replace</key>
<string>81facd710000</string>
</dict>
这边罗列⼏个已经定义好的path: 1. Patch for AppleIntelCPUPowerManagement because of ASUS BIOSbreak MSR register 0xE2
<key>AsusAICPUPM</key>
<string>Yes</string>
2.path for AppleRTC防cmos重置
<key>AppleRTC</key>
<string>Yes</string>
3.开启TRIM⽀持
4.timeouton AHCI by bcc9
5.hd3000接⼝修正
<dict>
<key>Name</key>
<string>AppleIntelSNBGraphicsFB</string>
<key>Find</key> <data>AQIEABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAEAAAHAAAAAwQAAAAEAAAJAAAABAYAAAAEAAAJAAAA</data>
<key>Replace</key> <data>AQIDABAHAAAQBwAAAwQAAAAEAAAJAAAAAgUAAAAEAAAHAAAABAYAAAAEAAAJAAAAAAAAAAAAAAAAAAAA</data>
</dict>
即去掉LCD接⼝,优先使⽤dvi接⼝:
hd3000接⼝的修改教程: 6.磁盘内建,可解决橙⾊磁盘等问题。
<key>3</key>
<dict>
<key>Find</key>
<data>
RXh0ZXJuYWw=
</data>
<key>Name</key>
<string>AppleAHCIPort</string>
<key>Replace</key>
<data>
SW50ZXJuYWw=
</data>
</dict>
1. AppleTyMCEDriver patch to use MacPro5,1 。这个patch后可设置机型为 MacPro5,1,⽽不需要删掉ecc校验驱动。
<key>Name</key>
<string>AppleTyMCEDriver</string>
<key>Find</key>
<data>cgoATWFjUHJvNCwxAE1hY1BybzUsMQBY</data>
key>Replace</key>
<data>cgoAAAAAAAAAAAAAAAAAAAAAAAAAAABY</data>
定制EDID
本作品由创作,采⽤进⾏许可。

本文发布于:2024-09-22 07:40:08,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/352247.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:显卡   参数   修改   功能   打开   数字   驱动
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议