GraphicsInjector功能源于变色龙,不过比变色龙更加灵活,定制性更加强大。Intel的显卡 GMA950, X3100, HD300, HD4000被证实可以很好的工作。你仅仅只要在config.plist打开显卡侦测功能,特别是对于N卡。
在新版中显卡参数分开:intel、ati、nv区分开来。
|
|
但是要注意一点,有些笔记本(比如我的(Ermac) Dell Inspiron 1525)进入就是黑屏。这时你可以用睡眠的小窍门(意思是说睡以后重新唤醒就不会黑屏??)或者在dsdt中删除Device(CRT) 装置。在现在的clover版本中,你可以使用 DsdtFixMask
值修复,其值是 0x0100
即Display Fix
,
N卡:这是被广泛支持的显卡,其数据库由ErmaC不断更新。这是在config.plist
中参数:
|
|
其中VideoPort为你的显卡接口数,nvcap值是你自己显卡的nvcap值,display-cfg无关紧要,默认就是这个值。
一般N卡只需打开显卡注入功能即可即:
|
|
其他接口数,显卡内存什么的全部不需要.
其会自动侦测,并采用默认的nvcap和其他值,clover现在用的默认nvcap值就是上面这组:
040000000000
03
000C
0000000000000700000000
这个你可以在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它会崩溃。
如果你开启显卡注入功能: GI = Yes,进入mac可能遇到黑屏或者白屏因为所有的信息已经在第二屏显示 所以你需要修改接口参数,即FB使得其正确对应接口输出。
国外帖:http://www.insanelymac.com/forum/topic/249642-editing-custom-personalities-for-ati-radeon-hd45xxx/
以我的ATI HD6670为例,config配置如下:
|
|
接口数为三,使用的ati config值为Ipomoea,并修正原始的接口参数:
|
|
ATIConnectorsData为原始的接口参数,下文会介绍如何获取。
ATIConnectorsPatch为修正的接口参数,同样下文会叙述如何修改。
对于移动版显卡,还得设置一个值:
|
|
具体在config中的设置请看config-sample.plist文件
##关于intel显卡
对于HD4000,显卡注入打开,然后注入合适的ig-platform-id以下是可选的值:对于笔记本
|
|
台式:
|
|
一个个试,找到自己合适的。笔记本常用的4,a。
同时为避免因AppleIntelSNBGraphicsFB.kext使得 AppleIntelFramebufferCapri.kext加载出错(五国),要注入IMEI:
|
|
即在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
是0x01528086
0x01568086
或不填,用系统自动侦测的。
EDID注入
在某些情况下你需要注入EDID,如某些sony本本senseid为07,和笔记本内屏黑屏的情况。你也可以自己定制EDID.
|
|
用这种方法通过bios获取EDID是可用的。Osx获取的不是总是对的。如果你的显示器没有描述DDC的信息什么是DDC?显示器和主机的通信协议:http://wenku.baidu.com/view/1f635435a32d7375a4178043
你可以注入显示器官方的edid
|
|
更具体简单的看这边:http://bbs.pcbeta.com/viewthread-1473634-1-1
AAPL,DualLink参数设置 DualLink参数可解决高分辨率显示器黑边,花屏等问题。
其值只有0和1,0不启用,1开启。
|
|
有些卡必须设置为0,如ATI HD1600,否则你将看到四个桌面。
ATI 显卡接口参数修正
首先,感谢bcc9提供方法,pcj实现这个path,dmazar使之工作。
开始正题:
- 下载radeon_bios_decoder和ati_personality.pl
传送门:http://pan.baidu.com/s/1o62SAk6
MD5:3052fa7872f93a826f9e8c0867309816
对于10.8.3这个可能无法获取信息,试试新版:
传送门:http://pan.baidu.com/s/1qWDDT1M
MD5:c928fc9f01ce99c000ae54e130a2e5ad
感谢bcc9的维护,xhcnb提供附件
radeon_bios_decode+redsock_bios_decoder传送门:http://pan.baidu.com/s/1c0gSv3i
MD5:973e0e18584906989a3c9457ff84fb0d
新版的:ati-personality.0.12传送门:http://pan.baidu.com/s/1gd1fczD
MD5:c70c2bcc48cee7f9198ba4a1f8421afe
2.在win下查看你的显卡id(设备管理,属性)或用system info查看。
我的DeviceID= 0x6758,这是6000系列的卡,
你的是什么系列的?皮卡丘的帖子有收集请看这:
http://bbs.pcbeta.com/viewthread-1060313-1-1
找到你的显卡id或找到接近的。
例如,你的显卡的设备id:DeviceID=0x68B2
,并不在原生支持的显卡里头,只能找到相近的0x68B1,所以你可以确定你的显卡是5系列的,这时你必须在AMDRadeonAccelerator.kext/Contens/Info.plist
和ATI5000Controller.kext/Contents/Info.plist
中添加自己的显卡ID。id位置靠近和你相似的id。
例如:
|
|
3.用ati_personality.pl或取原生支持显卡接口的参数信息(此步可省去直接附上:ATIFramebuffer原版参数
传送门:http://pan.baidu.com/s/18aLT8
MD5:1e84c29b7d7723890083992dfd7dca63
10.8.3下的FB参数由xhcnb提供:10.8.3 FrameBuffer
传送门:http://pan.baidu.com/s/1gdsX4zT
MD5:3b8c075825d541a20f4104af5d3e5066
具体用法如下:
假设你把ati-personality.pl放在桌面,确定终端已经用cd命令切换工作目录到桌面,则运行如下命令:
./ati-personality.pl ATI5000Controller.kext
这个命令获取原生支持的5系列的显卡接口参数,请确定S/L/E下有ATI5000Controller.kext这个kext
这边已经搜集好啦5系列和6系列的接口参数(ATIFramebuffer原版参数上文已给)以上命令可免:
|
|
打开可以看到形如上面的信息。
那么如何选择ATI config值(Framebuffers,就是原版参数中的Personality值)呢?
其实我认为任意一个都是可以的(个人认为,也许我是错的)
对于5系列:Baboon常用于桌面版 , Galago 用于移动版
对于6系列: Ipomoea用于桌面版, Osmunda 用于移动版
注意这只是推荐使用……
你也可以在变色龙的源码中发现各个型号显卡变色龙采用的
ati config值:http://forge.voodooprojects.org/p/chameleon/source/tree/HEAD/trunk/i386/libsaio/ati.c
同样ctrf+f搜索页面,直接输入你的显卡型号或显卡id如上文提到的0x68B1,直接搜索得到(不一定搜索得到,类似的也是可以的):
|
|
那么其ati config值就是Hoolock(注意去掉前面的字母k)
so,你也可以采用变色龙推荐的ati config值,但,凡是没有绝对……
现在我已 HD6670为例,其DevID=0x6758,采用aticonfig值为Ipomoea
其原始接口信息(搜索上文所给的ATIFramebuffer原版参数.rtf文件):
|
|
其中
|
|
这一系列数子就是我们要更改的数据,即:
|
|
的值
那么如何修正这组数据呢?
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 命令切换到该文件夹:
|
|
以上信息我们只需要每个接口的senseid值:
|
|
以上我们知道有3个接口,DVI-D,VGA, HDMI,而Ipomoea原始接口信息如下:
|
|
这组数据中,绿色的就是描述接口类型的,红色部分就是senseid值.
其中我们已经了解到不同接口对应的值:
|
|
笔记本内屏也有写成LVDS的
而由上可知该显卡只有三个接口DVI-D,VGA,HDMI,分别对应的描述接口类型的值为:0400,1000,0008;对应的senseid值分别为:06
,01
,03
所以00
04
应改为0400,对应的senseid值也得修改。
修改后:
|
|
我也可以交换第三和第二行:
|
|
现在可以把修正的Fb参数写入config啦:
|
|
6.这个补丁工作在两种情况下;KernelCache开启(默认开启),或boot-args 包含”WithKexts”值。
要注意你所选择的修改framebuffer要和写入config.plist对应。
|
|
测试在我的 HD6670、HD5570,dvd正常,可以播放4K分辨率的视频。
其他信息:
|
|
如果遇到睡眠问题,改变vga输出的encoderid 值为00
如果hdmi接口有问题改变HotPlugID值为05
任意kext打补丁(KextsToPatch)
你可以给很多kext打补丁,用这种方法,可免以直接用二进制修改工具像hexedit,oxED修改kext的二进制字典,info同样也是可以修改。真的很方便。
给一个非常有趣的例子:
我研究voodoohda这个kext,发现字符串
|
|
其中后面一排数字是其各个字母对应的ASCII码(十六进制)
我想把他重命名为”Telephones” =54 65 6C 65 70 68 6F 6E 65 73 00
写入config是这样子:
|
|
重启就可以看到效果。
这是给kext中二进制文件patch,也可以给info.plist:
|
|
如上是给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信息是在下方同步的结果就是转换后的情况。
再来一个:
|
|
现在来几个有实用的价值的补丁方法。
其中一个就是ATIConnectors patch为5系列和6系列的A卡。例如对以os 10.6,ATI RadeonX1650的显卡DeviceID=0x71cd不是通用的(不是公版?),所以你不仅必须在ATIRadeonX1000.kext的info.plist中写入显卡id,还得修改其二进制文件。以前你可能要用oxed或hexeditor来编辑替换二级制文件中的内容,现在你只要这么做:
|
|
这边罗列几个已经定义好的path:
- Patch for AppleIntelCPUPowerManagement because of ASUS BIOSbreak MSR register 0xE2
|
|
2.path for AppleRTC防cmos重置
|
|
3.开启TRIM支持
4.timeouton AHCI by bcc9
Waitingfor root device when kernel cache used; only with some disks +FIX
5.hd3000接口修正
|
|
hd3000接口的修改教程:前往
6.磁盘内建,可解决橙色磁盘等问题。
|
|
- AppleTyMCEDriver patch to use MacPro5,1 。这个patch后可设置机型为 MacPro5,1,而不需要删掉ecc校验驱动。
|
|
定制EDID
在两种情况下你可能需要这个功能
1.显示器不是DDC monitor
2.显示器是DDC monitor但是mac无法获取edid。
注入Edid有助于解决笔记本内屏黑屏的问题。
你仅仅需要设置 InjectEDID = yes。而对于第一种情况我们必须从其他地方获取edid并下入config.plist.
如何获取EDID呢,论坛常用提到的工具是这个: EDID Manager
我以前的帖子有提供下载和方法:
http://bbs.pcbeta.com/viewthread-1031060-1-1
还有这个更简单:http://bbs.pcbeta.com/viewthread-1473634-1-1