修正笔记本内建显示器连接类型


  英特尔在新一代 Haswell 处理器平台中,放弃传统的低电压差动讯号接口(LVDS),全面转向支持嵌入式数码音视讯传输接口( Embedded DisplayPort,eDP ),从 Haswell 起,大部分笔记本内建显示器的连接类型( connector type )已经采用 eDP ,但是 AppleIntelFramebufferAzul 中ig-platform-id 所在 port 0000 上面的 connector type 全是 LVDS( 02000000 ),实际上 LVDS 和 eDP 都可以驱动笔记本的内建显示器, 不过两个接口之间有较大的区别,所以还是有必要对连接类型做修正,此外该方法还可用于解决 HDMI/DP 外接屏幕无音频输出问题。

1、eDP 与 LVDS 比较

名称 eDP LVDS
数据&时钟线 1-4对数据线,没有单独时钟线 较多的数据线,单独的时钟线
比特率/每对线 1.6,2.7,5.4Gbps 945Mbps
总容量 1.6-21.6Gbps 7.56Gbps
时钟线 嵌入式 每个通道有单独的时钟线
传输类型 封包的音视频和其他传输数据,可扩展格式 仅限未压缩视频信号
双向数据通道 1Mbps or 720Mbps 100kbps
信道编码 ANSI 8B/10B Serialized ad 7x pixel clock ratae
内容保护 HDCP None
  • eDP 接口优点:
    • 封包结构,能够实现多数据的同时传输
    • 较大的传输速率,4lanes 高达 21.6Gbps
    • 较小的尺寸,利于产品的轻薄化
    • 较小的EMI(电磁干扰)
    • 强大的版权保护功能

2、eDP 架构

  • 用来传输各类型视频数据和音频数据;
  • 由 1-4 对 lanes 组成,每条 lane 都是一对差分线;
  • 采用交流耦合技术,发送端和接收端有不同的共模电压,因此可以把接口做的更小;
  • 每条线路现在的传输速率为:1.62/2.7/5.4Gbps;
  • 每条数据都是数据线,没有时钟线,减小了 EMI;
  • 采用 ANXI 8B/10B 编码,提高数据传输正确性

2.2、AUX CH:辅助通道

  • 用于传输小带宽需求的数据,链路管理和设备控制;
  • 采用交流耦合差分传输方式,是一条双向半双工传输通道 ;
  • 采用 ManchesterII 编码 ;
  • 提供 1Mbps 的传输速率和 15m 的传输距离 ;
  • 低延时,每个传输任务都有时间要求小于500us

2.3、HPD:热插拔检测通道

  • 一条单向通道,用于检测上层设备和下层设备是否连接,进而实现线路的连接和中断

2.4、EDID:扩展显示表示数据

  • 用来存储显示器参数

2.5、DPCD:eDP 配置数据

  • 与链路管理层相连用于链路的配置

3、查看内屏接口类型

3.1、硬件接口类型

ubuntu下终端输入 xrandr ,得到如下结果,connected primaryeDP 即为笔记本内屏连接类型

Screen 0: minimum 320 x 200, current 2560 x 1440, maximum 3200 x 2000
eDP-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis)
2560x1440 59.98*+ 47.99
2048x1536 60.00
1920x1440 60.00
...
400x300 60.32 56.34
320x240 60.05
DP-1 disconnected (normal right inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)

3.2、在 macOS 下的接口类型

查看在 macOS 下内屏接口类型

  • 通过 IORegistryExplorer 软件查看显卡( IGPU )下 AppleIntelFramebuffer@0connector-type

  • 接口类型及数值参考,如果与 ubuntu 下显示类型相同则无须更改,如有差异可通过如下方法修正。
连接类型( connetor type ) 数值( Data )
LVDS 02 00 00 00
eDP 00 04 00 00
DP 00 04 00 00
HDMI 00 08 00 00
DVI 00 02 00 00

4、确认加载的显卡驱动

4.1、查看显卡驱动

打开系统信息->功能扩展查看自己笔记本加载的显 AppleIntelFramebuffer 驱动,如图记住 AppleIntelFramebufferAzul

4.2、查看显卡驱动 id

通过 IORegistryExplorer 软件查看显卡( IGPU )下 IGPU@ig-platform-id ,记录 08 00 2e 0a

5、修正接口类型 connector type

5.1、查看驱动源码

在 mac 终端,通过以下命令查看 AppleIntelFramebufferAzul 二进制代码,命令路径根据实际更改

hexdump -C /System/Library/Extensions/AppleIntelFramebufferAzul.kext/Contents/MacOS/AppleIntelFramebufferAzul

5.2、获取驱动 id

得到如下二进制表,Command+F 查找前面找到的 ig-platform-id08 00 2e 0a

5.3、驱动 id 解释

08 00 2e 0a 01 03 03 03  00 00 00 04 00 00 20 02
00 00 50 01 00 00 00 60 6c 05 00 00 6c 05 00 00
00 00 00 00 00 00 00 00 00 00 08 00
02 00 00 00 //lvds
30 00 00 00 01 05 09 00
00 04 00 00 //dp
07 01 00 00 02 04 0a 00
00 04 00 00 //dp
07 01 00 00 ff 00 00 00
08 00 2e 0a ig-platform-id
01 03 03 03 unkown pipes ports framebufferNumber
00 00 00 04 固定显存大小
00 00 20 02 Framebuffer显存大小
00 00 50 01 硬件指针显存大小
00 00 00 60 最大动态显存大小
6c 05 00 00 fBacklightFrequency
6c 05 00 00 fBacklightMax
00 00 00 00 00 00 00 00
00 00 08 00
02 00 00 00 接口类型
30 00 00 00 01 05 09 00 04 00 00 00

5.4、修改接口类型

通过在 config.plist 文件中加入 KextsToPatch 项,Find 为查找字段,Replace 为更正字段,Name 值为对应的驱动名字。

Comment:eDP port  fix
Find:00000800 02000000 30000000 01050900 00040000
Replace:00000800 00040000 30000000 01050900 00040000
Name:AppleIntelFramebufferAzul

6、转换表

附上十六进制(Hex*)与字符(ASCII)转换表

十六进制(Hex*) ASCII(字符) 含义
0 NUL(null) 空字符
1 SOH(start of headling) 标题开始
2 STX (start of text) 正文开始
3 ETX (end of text) 正文结束
4 EOT (end of transmission) 传输结束
5 ENQ (enquiry) 请求
6 ACK (acknowledge) 收到通知
7 BEL (bell) 响铃
8 BS (backspace) 退格
9 HT (horizontal tab) 水平制表符
0A LF (NL line feed, new line) 换行键
0B VT (vertical tab) 垂直制表符
0C FF (NP form feed, new page) 换页键
0D CR (carriage return) 回车键
0E SO (shift out) 不用切换
0F SI (shift in) 启用切换
10 DLE (data link escape) 数据链路转义
11 DC1 (device control 1) 设备控制1
12 DC2 (device control 2) 设备控制2
13 DC3 (device control 3) 设备控制3
14 DC4 (device control 4) 设备控制4
15 NAK (negative acknowledge) 拒绝接收
16 SYN (synchronous idle) 同步空闲
17 ETB (end of trans. block) 传输块结束
18 CAN (cancel) 取消
19 EM (end of medium) 介质中断
1A SUB (substitute) 替补
1B ESC (escape) 溢出
1C FS (file separator) 文件分割符
1D GS (group separator) 分组符
1E RS (record separator) 记录分离符
1F US (unit separator) 单元分隔符
20 (space) 空格
21 !
22
23 #
24 $
25 %
26 &
27
28 (
29 )
2A *
2B +
2C ,
2D -
2E .
2F /
30 0
31 1
32 2
33 3
34 4
35 5
36 6
37 7
38 8
39 9
3A :
3B ;
3C <
3D =
3E >
3F ?
40 @
41 A
42 B
43 C
44 D
45 E
46 F
47 G
48 H
49 I
4A J
4B K
4C L
4D M
4E N
4F O
50 P
51 Q
52 R
53 S
54 T
55 U
56 V
57 W
58 X
59 Y
5A Z
5B [
5C \
5D
5E ^
5F _
60 `
61 a
62 b
63 c
64 d
65 e
66 f
67 g
68 h
69 i
6A j
6B k
6C l
6D m
6E n
6F o
70 p
71 q
72 r
73 s
74 t
75 u
76 v
77 w
78 x
79 y
7A z
7B {
7C \
7D }
7E ~
7F DEL (delete) 删除


下一篇 PSR PHP 标准规范
上一篇 Git 笔记
查看评论