本帖最后由 Redecor 于 2015-11-30 21:49 编辑
这几天都在瞎折腾如何驱动HD4000,翻完了论坛几乎所有的帖子,也学到很多东西,首先感谢大家的分享
简单说说中间遇到的问题吧
1. 基本大家都是用0x01660003驱动的,一开始我就尝试过11个ID,进系统后都只有可怜的7M显存,完全就是没法用,直到前天无意在网上找到一个HD4000+7系板子的Clover通用配置文件,放入U盘,我X,完美啊,各种特效都有了。但是.....自己不甘心啊,自己的clover配置和它有什么不同?为什么就不能驱动呢?于是就用排除法,将下载的这个配置文件开启的选项/添加的各种注入逐一剔除,然后重启200多次,终于发现自己有点傻....要驱动HD4000,只需要勾选inject intel同时在ig-platform-id填入ID就可以了...就可以了!!!之前要么勾选的inject intel,要么勾选的inject intel+injec EDID,并注入EDID字符串,要么就只填了ig-platform-id......太傻了.....
好了,说到这里,还没驱动HD4000的同学,在折腾DSDT前,先用clover测试出完美驱动的ID吧
2. 强迫症伤不起!!!既然clover能完美驱动,那dsdt应该也是可以的吧?那就动手!
翻翻翻帖子,终于找到一个比较完整的DSDT注入代码了,如下:
- Store (Package (0x14)
- {
- "AAPL,slot-name",
- Buffer (0x08)
- {
- "Slot -1"
- },
- "built-in",
- Buffer (One)
- {
- 0x01
- },
- "AAPL,HasPanel",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "AAPL,Haslid",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "AAPL,backlight-control",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "@0,backlight-control",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "@0,AAPL,boot-display",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "device-id",
- Buffer (0x04)
- {
- 0x66, 0x01, 0x00, 0x00
- },
- "AAPL,ig-platform-id",
- Buffer (0x04)
- {
- 0x03, 0x00, 0x66, 0x01
- },
- "hda-gfx",
- Buffer (0x0A)
- {
- "onboard-1"
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
复制代码 好,开始动手修理DSDT!查找Method (_DSM,整个DSDT中就只有2处,选择GFX0下面那个,可以看见其_DSM方法是:
Method (_DSM, 4, Serialized)和论坛其他帖子的有点区别(其提及的是Method (_DSM, 4, NotSerialized)),没关系,命名不同而已,直接在Method (_DSM, 4, Serialized)其下第一个花括号下添加上面的代码,并注入EDID,如下:
- Store (Package (0x18)
- {
- "AAPL,slot-name",
- Buffer (0x08)
- {
- "Slot -1"
- },
- "built-in",
- Buffer (One)
- {
- 0x01
- },
- "AAPL,HasPanel",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "AAPL,Haslid",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "AAPL,backlight-control",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "@0,backlight-control",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "@0,AAPL,boot-display",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- },
- "device-id",
- Buffer (0x04)
- {
- 0x66, 0x01, 0x00, 0x00
- },
- "AAPL,ig-platform-id",
- Buffer (0x04)
- {
- 0x03, 0x00, 0x66, 0x01
- },
- "AAPL00,override-no-edid",
- Buffer (0x80)
- {
- /* 0000 */ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
- /* 0008 */ 0x4C, 0xA3, 0x4C, 0x31, 0x00, 0x00, 0x00, 0x00,
- /* 0010 */ 0x00, 0x15, 0x01, 0x03, 0x80, 0x22, 0x13, 0x78,
- /* 0018 */ 0xEA, 0x2D, 0xE5, 0x9D, 0x5C, 0x4E, 0x9A, 0x27,
- /* 0020 */ 0x1A, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01,
- /* 0028 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- /* 0030 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x29, 0x36,
- /* 0038 */ 0x80, 0xA0, 0x70, 0x38, 0x1F, 0x40, 0x18, 0x10,
- /* 0040 */ 0x25, 0x00, 0x58, 0xC2, 0x10, 0x00, 0x00, 0x19,
- /* 0048 */ 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
- /* 0050 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5A, 0x0A,
- /* 0058 */ 0x3C, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x53,
- /* 0060 */ 0x41, 0x4D, 0x53, 0x55, 0x4E, 0x47, 0x0A, 0x20,
- /* 0068 */ 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xFE,
- /* 0070 */ 0x00, 0x31, 0x35, 0x36, 0x48, 0x54, 0x30, 0x31,
- /* 0078 */ 0x2D, 0x32, 0x30, 0x31, 0x0A, 0x20, 0x00, 0x4E
- },
- "hda-gfx",
- Buffer (0x0A)
- {
- "onboard-1"
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
复制代码 保存,重启前记得先移除clover的inject intel和ig-platform-id,不然怎么知道这段代码起作用了木有啊,对不对
OK,开机了,怎么一闪一闪的,哦,进系统后特效没了.....显存又变成可怜的7M了@_@
如图
这到底是怎么回事呢??注入的地方选错了?ID没选好?不可能啊,clover用这个ID完美驱动的啊!继续爬帖子,继续......
翻翻翻....等等....为什么显卡显示的是“display”而不是“Intel HD Graphics 4000”?记得很久前折腾仿冒声卡是要给声卡起个名字的啊,但上面这段代码完全没有一个字段是关于名字啊.....要不自己添加一个?说动手就动手,就添加在
- "AAPL,slot-name",
- Buffer (0x08)
- {
- "Slot -1"
- },
复制代码 这上面吧,所谓名不正言不顺,对不对,好吧,代码如下- "Model",
- Buffer (0x08)
- {
- "Intel HD Graphics 4000"
- },
复制代码
保存DSDT,重启,哈哈哈,这下完美了吧,如图所示
原来整段代码缺少一个关键字段!!!就像房子没有户主一样!!!
啰嗦了半天,希望能帮到还在折腾DSDT驱动显卡的同学,我想缺少的这段代码在HD4600及其以上也是有作用的
|