13 March 2014
GraphicsInjector功能源于變色龍,不過比變色龍更加靈活,定制性更加強(qiáng)大。Intel的顯卡 GMA950, X3100, HD300, HD4000被證實可以很好的工作。你僅僅只要在config.plist打開顯卡偵測功能,特別是對于N卡。 在新版中顯卡參數(shù)分開:intel、ati、nv區(qū)分開來。 <key>Inject</key>
<dict>
<key>ATI</key>
<false/>
<key>Intel</key>
<false/>
<key>NVidia</key>
<true/>
</dict>
但是要注意一點,有些筆記本(比如我的(Ermac) Dell Inspiron 1525)進(jìn)入就是黑屏。這時你可以用睡眠的小竅門(意思是說睡以后重新喚醒就不會黑屏??)或者在dsdt中刪除Device(CRT) 裝置。在現(xiàn)在的clover版本中,你可以使用
其中VideoPort為你的顯卡接口數(shù),nvcap值是你自己顯卡的nvcap值,display-cfg無關(guān)緊要,默認(rèn)就是這個值。 一般N卡只需打開顯卡注入功能即可即: <key>NVidia</key>
<true/>
其他接口數(shù),顯卡內(nèi)存什么的全部不需要. 其會自動偵測,并采用默認(rèn)的nvcap和其他值,clover現(xiàn)在用的默認(rèn)nvcap值就是上面這組:
這個你可以在clover源碼中找到:rEFI_UEFI—》》Platform—》NVIDIA.C中。 遇到黑屏或自動重啟才啟用定制nvcap值,nvcap值可由idsdt+顯卡rom,勾選生成顯卡驅(qū)動點擊開始生成,在運行信息中可以看到。Nvmaker這個軟件有些機(jī)子無法運行。當(dāng)然并不是非要自己獲取自己顯卡的nvcap值。在下表的值大家都可以試試。 要多屏輸出可能要修改nvcap值,關(guān)于nvcap值的定義不再此累述,因為我也不清楚。更多的認(rèn)為03(十六進(jìn)制數(shù)0x03)和0C這兩個位置的所在的數(shù)字在取作用,03是主屏,0c是擴(kuò)展屏,0x03=0011,1就是打開接口的意思.為了不重復(fù)在主屏和擴(kuò)展屏中同時打開某接口,可以使03所在位數(shù)值和0c數(shù)字所在位置數(shù)值加起來剛好等于F(十六進(jìn)制)。 以下常用的nvcap值組合: 找到正確的nvcap值后可以把其值寫入源碼,自己編譯自己的clover:N卡信息在:rEFI_UEFI—》》Platform—》》NVIDIA.C中。 當(dāng)然不要那么費事,直接clover config中注入nvcap值即可。 關(guān)于ATI/AMD顯卡這里要做個特別的討論。對以原生支持的5xxx and 6xxxA卡,在不開啟顯卡注入功能的情況下用共同的ATIRadeonFramebuffer可進(jìn)入桌面并且opengl可用但并不理想,如打開DVDPlayer它會崩潰。 如果你開啟顯卡注入功能: GI = Yes,進(jìn)入mac可能遇到黑屏或者白屏因為所有的信息已經(jīng)在第二屏顯示 所以你需要修改接口參數(shù),即FB使得其正確對應(yīng)接口輸出。 國外帖:http://www./forum/topic/249642-editing-custom-personalities-for-ati-radeon-hd45xxx/ 以我的ATI HD6670為例,config配置如下:
接口數(shù)為三,使用的ati config值為Ipomoea,并修正原始的接口參數(shù): <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為原始的接口參數(shù),下文會介紹如何獲取。 ATIConnectorsPatch為修正的接口參數(shù),同樣下文會敘述如何修改。 對于移動版顯卡,還得設(shè)置一個值:
具體在config中的設(shè)置請看config-sample.plist文件 關(guān)于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
臺式:
一個個試,找到自己合適的。筆記本常用的4,a。 同時為避免因AppleIntelSNBGraphicsFB.kext使得 AppleIntelFramebufferCapri.kext加載出錯(五國),要注入IMEI: 0x1e3a8086
即在fixes dsdt的new way勾選addIMEI。同時FAKEI的IMEI值填入0x1e3a8086。 同時fixes dsdt中勾選FIX INTEL GFX 和FIX DISPlay,當(dāng)然addDTGP是必須的。同時注入EDID開啟。 如黑屏 、重影、雙分屏、花屏換 EDID注入在某些情況下你需要注入EDID,如某些sony本本senseid為07,和筆記本內(nèi)屏黑屏的情況。你也可以自己定制EDID.
用這種方法通過bios獲取EDID是可用的。Osx獲取的不是總是對的。如果你的顯示器沒有描述DDC的信息什么是DDC?顯示器和主機(jī)的通信協(xié)議:http://wenku.baidu.com/view/1f635435a32d7375a4178043.html 你可以注入顯示器官方的edid <key>CustomEDID</key>
<data>AP///////wAyDADfAAAAAAASAQOAIRV4CunVmVlTjigmUFQAAAABAQEBAQEBAQEBAQEBAQEB3iGgcFCEHzAgIFYAS88QAAAY3iGgcFCEHzAgIFYAS88QAAAAAAAA/gBXNjU3RwAxNTRXUDEKAAAA/gAjMz1IZYSq/wIBCiAgAJo=</data>
更具體簡單的看這邊:http://bbs./viewthread-1473634-1-1.htmlAAPL,DualLink參數(shù)設(shè)置 DualLink參數(shù)可解決高分辨率顯示器黑邊,花屏等問題。 其值只有0和1,0不啟用,1開啟。
有些卡必須設(shè)置為0,如ATI HD1600,否則你將看到四個桌面。 ATI 顯卡接口參數(shù)修正首先,感謝bcc9提供方法,pcj實現(xiàn)這個path,dmazar使之工作。 開始正題: 1. 下載radeon_bios_decoder和ati_personality.pl 傳送門:http://pan.baidu.com/s/1o62SAk6 MD5: 對于10.8.3這個可能無法獲取信息,試試新版: 傳送門:http://pan.baidu.com/s/1qWDDT1M MD5: 感謝bcc9的維護(hù),xhcnb提供附件 radeon_bios_decode+redsock_bios_decoder傳送門:http://pan.baidu.com/s/1c0gSv3i MD5: 新版的:ati-personality.0.12傳送門:http://pan.baidu.com/s/1gd1fczD MD5: 2.在win下查看你的顯卡id(設(shè)備管理,屬性)或用system info查看。 我的DeviceID= 0x6758,這是6000系列的卡, 你的是什么系列的?皮卡丘的帖子有收集請看這: http://bbs./viewthread-1060313-1-1.html 找到你的顯卡id或找到接近的。 例如,你的顯卡的設(shè)備id:DeviceID= <key>IOPCIMatch</key>
<string>0x68981002 0x68991002 0x68E01002 0x68E11002 0x68D81002 0x68C010020x68C11002 0x68D910020x68B21002 0x68B810020x68B01002 0x68B11002 0x68A01002 0x68A11002 </string>
3.用ati_personality.pl或取原生支持顯卡接口的參數(shù)信息(此步可省去直接附上:ATIFramebuffer原版參數(shù) 傳送門:http://pan.baidu.com/s/18aLT8 MD5: 10.8.3下的FB參數(shù)由xhcnb提供:10.8.3 FrameBuffer 傳送門:http://pan.baidu.com/s/1gdsX4zT MD5: 具體用法如下: 假設(shè)你把a(bǔ)ti-personality.pl放在桌面,確定終端已經(jīng)用cd命令切換工作目錄到桌面,則運行如下命令:
這個命令獲取原生支持的5系列的顯卡接口參數(shù),請確定S/L/E下有ATI5000Controller.kext這個kext 這邊已經(jīng)搜集好啦5系列和6系列的接口參數(shù)(ATIFramebuffer原版參數(shù)上文已給)以上命令可免:
打開可以看到形如上面的信息。 那么如何選擇ATI config值(Framebuffers,就是原版參數(shù)中的Personality值)呢? 其實我認(rèn)為任意一個都是可以的(個人認(rèn)為,也許我是錯的) 對于5系列:Baboon常用于桌面版 , Galago 用于移動版 對于6系列: Ipomoea用于桌面版, Osmunda 用于移動版 注意這只是推薦使用…… 你也可以在變色龍的源碼中發(fā)現(xiàn)各個型號顯卡變色龍采用的 ati config值:http://forge./p/chameleon/source/tree/HEAD/trunk/i386/libsaio/ati.c同樣ctrf+f搜索頁面,直接輸入你的顯卡型號或顯卡id如上文提到的0x68B1,直接搜索得到(不一定搜索得到,類似的也是可以的): {0x68B1,0x00000000,CHIP_FAMILY_JUNIPER,'ATI Radeon HD 5770Series',kHoolock}
那么其ati config值就是Hoolock(注意去掉前面的字母k) so,你也可以采用變色龍推薦的ati config值,但,凡是沒有絕對…… 現(xiàn)在我已 HD6670為例,其DevID=0x6758,采用aticonfig值為Ipomoea 其原始接口信息(搜索上文所給的ATIFramebuffer原版參數(shù).rtf文件):
其中 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
這一系列數(shù)子就是我們要更改的數(shù)據(jù),即:
的值 那么如何修正這組數(shù)據(jù)呢? 4.運行radeon_bios_decoder獲取自己的顯卡信息 首先你得獲取自己的顯卡bios(顯卡rom),在win下你可以用像GPU-Z,everest等如果你已經(jīng)安裝啦clover,clover也可提取 啟動clover后在引導(dǎo)界面(選擇啟動分區(qū)界面)按F6后進(jìn)入mac后你將在/EFI/misc/c0000.bin找到你的顯卡rom文件,前提是你的EFI分區(qū)得是fat32格式。 現(xiàn)在假設(shè)你獲取到顯卡rom(命名為c0000.bin)并和radeon_bios_decoder都放在同一個文件夾,終端已經(jīng)用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值:
以上我們知道有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
這組數(shù)據(jù)中,綠色的就是描述接口類型的,紅色部分就是senseid值. 其中我們已經(jīng)了解到不同接口對應(yīng)的值:
筆記本內(nèi)屏也有寫成LVDS的 而由上可知該顯卡只有三個接口DVI-D,VGA,HDMI,分別對應(yīng)的描述接口類型的值為:0400,1000,0008;對應(yīng)的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
我也可以交換第三和第二行:
現(xiàn)在可以把修正的Fb參數(shù)寫入config啦: <key>KernelAndKextPatches</key>
<dict>
<key>ATIConnectorsController</key>
<string>6000</string>
<key>ATIConnectorsData</key>
<string>000400000403000000010000120401050008000004020000000100001102040310000000100000000001000000000002</string>
<key>ATIConnectorsPatch</key>
<string>040000000403000000010000100001061000000010000000000100000000000100080000040200000001000012040403</string>
6.這個補(bǔ)丁工作在兩種情況下;KernelCache開啟(默認(rèn)開啟),或boot-args 包含”WithKexts”值。 要注意你所選擇的修改framebuffer要和寫入config.plist對應(yīng)。
測試在我的 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 值為 任意kext打補(bǔ)?。↘extsToPatch)你可以給很多kext打補(bǔ)丁,用這種方法,可免以直接用二進(jìn)制修改工具像hexedit,oxED修改kext的二進(jìn)制字典,info同樣也是可以修改。真的很方便。 給一個非常有趣的例子: 我研究voodoohda這個kext,發(fā)現(xiàn)字符串
其中后面一排數(shù)字是其各個字母對應(yīng)的ASCII碼(十六進(jìn)制) 我想把他重命名為”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中二進(jìn)制文件patch,也可以給info.plist:
如上是給AirPortAtheros40.kext的info.plist增加id。要特別注意的是patch info.plist是,注意你要path的值是string(字符型),還是data(數(shù)據(jù)),對應(yīng)string,find值和repalce值如上可不轉(zhuǎn)換為hex(十六進(jìn)制)data則要轉(zhuǎn)換而且還是64進(jìn)制。如fakesmc的patch: AWgPAACW就是01680f00 0096 轉(zhuǎn)換后的結(jié)果。這個直接用plist edit pro編輯fakesmc的info.plist信息是在下方同步的結(jié)果就是轉(zhuǎn)換后的情況。 再來一個: <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>
現(xiàn)在來幾個有實用的價值的補(bǔ)丁方法。 其中一個就是ATIConnectors patch為5系列和6系列的A卡。例如對以os 10.6,ATI RadeonX1650的顯卡DeviceID=0x71cd不是通用的(不是公版?),所以你不僅必須在ATIRadeonX1000.kext的info.plist中寫入顯卡id,還得修改其二進(jìn)制文件。以前你可能要用oxed或hexeditor來編輯替換二級制文件中的內(nèi)容,現(xiàn)在你只要這么做:
這邊羅列幾個已經(jīng)定義好的path: 1. Patch for AppleIntelCPUPowerManagement because of ASUS BIOSbreak MSR register 0xE2 <key>AsusAICPUPM</key>
<string>Yes</string>
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接口修正 <dict>
<key>Name</key>
<string>AppleIntelSNBGraphicsFB</string>
<key>Find</key> <data>AQIEABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAEAAAHAAAAAwQAAAAEAAAJAAAABAYAAAAEAAAJAAAA</data>
<key>Replace</key> <data>AQIDABAHAAAQBwAAAwQAAAAEAAAJAAAAAgUAAAAEAAAHAAAABAYAAAAEAAAJAAAAAAAAAAAAAAAAAAAA</data>
</dict>
hd3000接口的修改教程:前往 6.磁盤內(nèi)建,可解決橙色磁盤等問題。
<key>Name</key>
<string>AppleTyMCEDriver</string>
<key>Find</key>
<data>cgoATWFjUHJvNCwxAE1hY1BybzUsMQBY</data>
key>Replace</key>
<data>cgoAAAAAAAAAAAAAAAAAAAAAAAAAAABY</data>
定制EDID在兩種情況下你可能需要這個功能 1.顯示器不是DDC monitor 2.顯示器是DDC monitor但是mac無法獲取edid。 注入Edid有助于解決筆記本內(nèi)屏黑屏的問題。 你僅僅需要設(shè)置 InjectEDID = yes。而對于第一種情況我們必須從其他地方獲取edid并下入config.plist. 如何獲取EDID呢,論壇常用提到的工具是這個: EDID Manager 我以前的帖子有提供下載和方法:http://bbs./viewthread-1031060-1-1.html 還有這個更簡單:http://bbs./viewthread-1473634-1-1.html 本作品由 maoshu 創(chuàng)作,采用 CC BY-NC-SA 3.0 許可協(xié)議 進(jìn)行許可。 |
|