红联Linux门户
Linux帮助

修正绝大部分Skylake笔记本电脑内建显示器连接类型错误问题

发布时间:2016-11-21 11:18:20来源:pcbeta作者:syscl
问题表述
绝大部分笔记本内建显示器的连接类型(connector type)是eDP的, 但是, 仔细察看了AppleIntelSKLGraphicsFramebuffer里面ig-platform-id在port 0000上面全是LVDS(02000000)的, LVDS和eDP实际上都可以驱动我们笔记本的内建显示器, 但是, 两个接口之间有很大的区别. 因此, 有必要对连接类型做修正.
 
eDP和LVDS的区别
我不打算用长篇大论来介绍eDP和LVDS的区别, 因为我知道你们懒, 所以简单来说
eDP和LVDS采用不同的信号格式: 一个走aux通道, 一个走ddc通道
eDP是DP接口的扩展(extend), 意图在取代掉老旧的LVDS
eDP能够提供比LVDS更高的带宽和分辨率, 与此同时减少了占用的空间
查阅资料发现, eDP和DP差异更多体现在电压, 接口定义上面, 可以说是同宗的关系, 因此, 可以直接使用DP的接口类型来表示eDP.
 
上述的比较必然引发了我们对Framebuffer的修改, 一般来说SKL笔记本的显示屏接口类型是eDP, 因此直接应用我的补丁即可
Comment:   eDP, port 0000, 0x191e0000, 0x19160000, 0x19260000, 0x19270000, 0x191b0000, 0x19160002, 0x19260002, 0x191e0003, 0x19260004, 0x19270004, 0x193b0005 credit syscl
Find:     00000800 02000000 98000000 01050900 00040000
Replace: 00000800 00040000 98000000 01050900 00040000
Name:    AppleIntelSKLGraphicsFramebuffer
 
如果需要直接复制粘贴到Clover中的config.plist文件中则需要如下的形式
<dict>
<key>Comment</key>
<string>eDP, port 0000, 0x191e0000, 0x19160000, 0x19260000, 0x19270000, 0x191b0000, 0x19160002, 0x19260002, 0x191e0003, 0x19260004, 0x19270004, 0x193b0005 credit syscl</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
AAAIAAIAAACYAAAAAQUJAAAEAAA=
</data>
<key>Name</key>
<string>AppleIntelSKLGraphicsFramebuffer</string>
<key>Replace</key>
<data>
AAAIAAAEAACYAAAAAQUJAAAEAAA=
</data>
</dict>
 
不熟悉上面破解步骤的朋友请参阅一劳永逸!更新不再替换Kext(Kexts to patch)教程
修正绝大部分Skylake笔记本电脑内建显示器连接类型错误问题
 
重启后, 通过IORegistryExplorer-SLRID_v10.6.3 AppleIntelFramebuffer@0的connector-type, 如果
connector-type = <00 04 00 00>表明修改成功, 反之你需要下面的命令重建缓存
sudo rm -rf /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache
sudo rm -rf /System/Library/PrelinkedKernels/prelinkedkernel
sudo kextcache -u /
 
更多细节
实际上, 如果你的connector-type不是eDP, 亦或者是你使用的台式机, 需要修正连接类型, 这时候我们需要借助Ubuntu的xrand的命令来查看显示器的连接类型, 以XPS 13 9350为例, 在Ubuntu中打开终端, 输入
xrandr
会给出
Screen 0: minimum 320 x 200, current 3200 x 1800, maximum 8192 x 8192
eDP-1 connected primary 3200x1800+0+0 (normal left inverted right x axis y axis) 294mm x 165mm
3200x1800     59.98*+  47.99  
2048x1536     60.00  
1920x1440     60.00  
1856x1392     60.01  
1792x1344     60.01  
1920x1200     59.95  
1920x1080     59.93  
1600x1200     60.00  
1680x1050     59.95    59.88  
1600x1024     60.17  
1400x1050     59.98  
1280x1024     60.02  
1440x900      59.89  
1280x960      60.00  
1360x768      59.80    59.96  
1152x864      60.00  
1024x768      60.04    60.00  
960x720       60.00  
928x696       60.05  
896x672       60.01  
960x600       60.00  
960x540       59.99  
800x600       60.00    60.32    56.25  
840x525       60.01    59.88  
800x512       60.17  
700x525       59.98  
640x512       60.02  
720x450       59.89  
640x480       60.00    59.94  
680x384       59.80    59.96  
576x432       60.06  
512x384       60.00  
400x300       60.32    56.34  
320x240       60.05  
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
注意到
eDP-1 connected primary 3200x1800+0+0 (normal left inverted right x axis y axis) 294mm x 165mm
connected primary前面的内容便是我们要找的主要显示器连接类型, 改成你想要的类型即可, 附上参考表
连接类型(connetor type) 数值(Data)
HDMI 00 08 00 00
DVI 00 02 00 00
eDP 00 04 00 00
DP 00 04 00 00
LVDS 02 00 00 00
以修改成HDMI为例, 只需要将00000800 02000000 98000000 01050900 00040000 --> 00000800 00080000 98000000 01050900 00040000 即可.
 
祝你们成功!
 
本文永久更新地址:http://www.linuxdiyf.com/linux/26199.html