- 积分
- 134
- 最后登录
- 2023-7-13
- 精华
- 0
- 阅读权限
- 20
- 主题
- 32
- UID
- 2999206
- 帖子
- 336
- PB币
- 56
- 威望
- 0
- 贡献
- 0
- 技术
- 44
- 活跃
- 712
- UID
- 2999206
- 帖子
- 336
- PB币
- 56
- 贡献
- 0
- 技术
- 44
- 活跃
- 712
|
发表于 2016-7-24 12:38:15
IP属地北京
|显示全部楼层
本帖最后由 applejunle 于 2016-7-24 14:25 编辑
神舟K580s电脑自从换了高清屏,修改HD4000显卡ig-platform-id为09 00 66 01之后,HDMI输出便失效了,因工作需要便搞了一下显示器HDMI输出,在远景论坛搜索到这片帖子[神舟K580s外接显示器mod来了,10.9,hdmi完美],发现在10.11.x系统上面失效了,修改了一下AppleIntelFramebufferCapri文件,终于成功。这篇帖子就基于上面的帖子进行修改。
首先将/System/Library/Extensions/目录下的AppleIntelFramebufferCapri.kext拷贝到桌面上,使用Hex Fiend软件打开AppleIntelFramebufferCapri.kext/Contents/MacOS/AppleIntelFramebufferCapri文件,搜索09 00 66 01,找到之后将一大串数字复制下来,整理成如下格式:
- 09 00 66 01 01 03 03 03 00 00 00 04
复制代码 同样分别搜索04 00 66 01和03 00 66 01,整理为如下格式:
- 04 00 66 01 01 03 01 01 00 00 00 02
复制代码- 03 00 66 01 01 02 04 02 00 00 00 04
复制代码 显卡驱动以及显卡接口输出都在上面的配置中,在使用低分屏的时候,我们使用ig-platform-id为03 00 66 01便能驱动内屏和外屏,换成高分屏的时候,经过测试使用ig-platform-id为04 00 66 01则可以驱动内屏,外屏没法输出。HD4000的ig-platform-id配置表如下:
- ig-platform-id: 01660000, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
- ig-platform-id: 01660001, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
- ig-platform-id: 01660002, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 1, FBMem: 1
- ig-platform-id: 01660003, Stolen RAM for FB: 64MB, Pipes: 2, Ports: 2, FBMem: 2
- ig-platform-id: 01660004, Stolen RAM for FB: 32MB, Pipes: 3, Ports: 1, FBMem: 1
- ig-platform-id: 01660008, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
- ig-platform-id: 01660009, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
- ig-platform-id: 0166000A, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
- ig-platform-id: 0166000B, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
- ig-platform-id: 01620005, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
- ig-platform-id: 01620006, Stolen RAM for FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0
- ig-platform-id: 01620007, Stolen RAM for FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0
复制代码 可以发现,当我们配置ig-platform-id为04 00 66 01的时候(01660004),输出Ports只有1个,也就是内置屏输出,所以我们需要修改ig-platform-id为其他值,这里我选择的是09 00 66 01,有3个输出口。
拿到上面的数据之后,补充一下知识。上面列出的数据中,开头数字前2组代表的是哪个输出接口:
- 0503 -- LVDS口(内置屏输出口)
- 0602 -- VGA口
- 0205/0406/0304 -- HDMI或DVI或DP口
复制代码
第5、6组数字代表接口类型:
- DVI/DP -- 0004
- DVI DUAL LINK -- 0400
- HDMI -- 0008或者0006
- VGA -- 1000或者0010或者0001
复制代码 下面我们参照0400 66 01和03 00 66 01对09 00 66 01进行修改,前四行我们保持默认,第五行我们发现03 00 66 01和04 00 66 01的数据不难发现,它们都配置成了内置显示器输出的数据,09 00 66 01没有配置,所以我们需要修改这行数据,将04 00 66 01的第五行数据直接覆盖09 00 66 01的第五行(为什么不用03 00 66 01的数据?因为04 00 66 01能驱动高清屏的内屏输出):
- 09 00 66 01 01 03 03 03 00 00 00 04
- 00 00 00 01 00 00 00 60 10 07 00 00
- 10 07 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 70 4F 03 00 00 00 00 00
- 05 03 00 00 02 00 00 00 30 02 00 00
- 02 05 00 00 00 04 00 00 07 01 00 00
- 03 04 00 00 00 04 00 00 07 01 00 00
复制代码 这样内置屏幕输出搞定,经过我的测试,我们使用上面这些数据可以完美使用HDMI输出,不过为了保险起见,建议将接口类型修改为0008,我们可以选取0205或者0304的数据,这里我选择0205的数据作为HDMI的输出,将0004修改为0008,这样就完成了HDMI接口类型的修改,最终如下:
- 09 00 66 01 01 03 03 03 00 00 00 04
- 00 00 00 01 00 00 00 60 10 07 00 00
- 10 07 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 70 4F 03 00 00 00 00 00
- 05 03 00 00 02 00 00 00 30 02 00 00
- 02 05 00 00 00 08 00 00 07 01 00 00
- 03 04 00 00 00 04 00 00 07 01 00 00
复制代码
修改完成之后,将DSDT文件中驱动显示的04 00 66 01修改为09 00 66 01。
使用上面的数据修改AppleIntelFramebufferCapri.kext就可以完美HDMI输出,声音也是可以输出的,完美!为了方便起见,使用Clover的Kernel and Kext Patches进行配置:
- AppleIntelFramebufferCapri 010000000200000030000000 050300000200000030020000
复制代码 这样就可以在不修改AppleIntelFramebufferCapri.kext的基础上面实现HDMI输出了,附DSDT以及配置文件:
有一个问题,我使用HDMI线直接输出到显示器上面的时候,完全没有问题,但当我使用HDMI转接VGA线连接到显示器上面的时候,外接屏没有信号,可能还需要修改HDMI的那行数据。如有修改成功的麻烦告知一声,谢谢。
上图:
|
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
|