4. 连接器(Connector)信息解析:Connector类型、状态、物理尺寸、EDID解析
连接器(Connector)是 DRM 子系统中连接 GPU 与显示设备的物理或逻辑接口。在 drm_info 输出中,Connector 信息是判断显示链路是否建立、分辨率是否匹配、物理连接是否正常的关键入口。本节将深入解析 Connector 的核心属性:类型、状态、物理尺寸以及 EDID 数据。
4.1 Connector 类型与枚举
DRM 框架定义了多种 Connector 类型,用于标识不同的物理接口标准。常见类型如下表所示:
| 枚举值 | 类型名称 | 物理接口 | 典型应用 |
|---|---|---|---|
| 1 | VGA | DB-15 | 老式显示器、投影仪 |
| 2 | DVI-I | DVI 集成模拟/数字 | 桌面显示器 |
| 3 | DVI-D | DVI 纯数字 | 数字显示器 |
| 4 | DVI-A | DVI 纯模拟 | 极少见 |
| 5 | Composite | RCA 复合视频 | 老式电视 |
| 6 | S-Video | 分离视频 | 老式电视 |
| 7 | LVDS | 低压差分信号 | 笔记本内置屏 |
| 8 | Component | 色差分量 | 老式高清设备 |
| 9 | DIN | 9 针 DIN | 专业设备 |
| 10 | DisplayPort | DP 标准接口 | 现代显示器、笔记本 |
| 11 | HDMI-A | HDMI Type A | 电视、显示器 |
| 12 | HDMI-B | HDMI Type B | 双链路 HDMI |
| 13 | TV | 电视调谐器 | 电视卡 |
| 14 | eDP | 嵌入式 DisplayPort | 笔记本内置屏 |
| 15 | Virtual | 虚拟连接器 | 虚拟机、远程桌面 |
| 16 | DSI | MIPI DSI | 手机、平板 |
调试提示:在
drm_info 输出中,Connector 类型通常以数字枚举值显示。例如 Connector 10 (DP-1) 表示 DisplayPort 接口。如果看到 Connector 0 (Unknown),说明驱动未正确初始化连接器类型,需要检查硬件或驱动兼容性。
4.2 Connector 状态机
每个 Connector 在 DRM 内部维护一个状态机,决定当前是否可用于显示输出。状态转换关系如下图所示:
状态含义:
- unknown:初始状态,驱动尚未检测到连接器上的设备。
- connected:检测到显示器已连接,EDID 可读取,可进行模式设置。
- disconnected:未检测到显示器,或 HPD 信号为低电平。
- status unknown:检测过程出错,可能是 I2C 通信失败或 EDID 损坏。
4.3 物理尺寸与 DPI 计算
Connector 的物理尺寸(Physical Size)以毫米为单位,表示显示器的实际可视区域。该信息来自 EDID 中的 Display Descriptor。通过物理尺寸和当前分辨率,可以计算 DPI(每英寸像素数):
DPI_X = (horiz_resolution * 25.4) / physical_width_mm
DPI_Y = (vert_resolution * 25.4) / physical_height_mm
性能优化要点:DPI 值影响字体渲染和 UI 缩放策略。在
drm_info 中,如果物理尺寸显示为 0x0,说明 EDID 未提供尺寸信息,系统将使用默认 DPI(通常为 96),可能导致 HiDPI 屏幕显示模糊或过小。
物理尺寸的典型值参考:
| 屏幕尺寸(英寸) | 物理宽度(mm) | 物理高度(mm) | 典型分辨率 | DPI |
|---|---|---|---|---|
| 13.3" | 293 | 165 | 1920x1080 | 166 |
| 15.6" | 344 | 194 | 1920x1080 | 141 |
| 24" | 531 | 299 | 1920x1080 | 92 |
| 27" | 597 | 336 | 2560x1440 | 109 |
4.4 EDID 解析:显示器的身份证
EDID(Extended Display Identification Data)是显示器通过 I2C 总线(DDC 通道)向显卡发送的 128 字节(或扩展 256 字节)数据块。它包含了显示器的所有能力信息。
EDID 数据结构主要块:
- Header(8 字节):固定标识
00 FF FF FF FF FF FF 00,用于校验是否为有效 EDID。 - Vendor/Product ID(10 字节):制造商 ID、产品代码、序列号。
- EDID Version(2 字节):版本号,常见为 1.3 或 1.4。
- Basic Display Parameters(5 字节):模拟/数字接口、色深、支持的标准。
- Chromaticity(10 字节):色度坐标,用于色彩管理。
- Established Timings(3 字节):标准分辨率列表。
- Standard Timings(16 字节):8 组标准时序。
- Detailed Timings(72 字节):4 组详细时序描述符,包含分辨率、刷新率、物理尺寸等。
- Extension Flag(1 字节):是否有扩展块(如 CEA-861 用于 HDMI 音频)。
- Checksum(1 字节):校验和,确保数据完整性。
EDID 解析流程如下图所示:
4.5 使用 drm_info 查看 Connector 信息
执行 drm_info 命令后,Connector 部分的典型输出如下:
Connector 10 (DP-1)
Type: DisplayPort (10)
Status: connected
Physical size: 597 x 336 mm
Subpixel: unknown
EDID:
EDID version: 1.4
Manufacturer: DEL
Product: DELL U2719D
Serial: ABC123
Manufacture week: 12
Manufacture year: 2022
EDID blocks: 2
Modes:
Mode 0: 2560x1440@60.00 (preferred)
Mode 1: 1920x1080@60.00
Mode 2: 1280x720@60.00
Mode 3: 1024x768@60.00
Props:
DPMS: On
link-status: Good
non-desktop: 0
TILE: 0 0 0 0 0 0 0
常见问题:如果
1. 线缆是否松动或损坏。
2. 显示器电源是否开启。
3. 内核是否加载了对应的 DRM 驱动模块(如 i915、amdgpu、nouveau)。
4. 使用
Status: disconnected 但显示器已物理连接,请检查:1. 线缆是否松动或损坏。
2. 显示器电源是否开启。
3. 内核是否加载了对应的 DRM 驱动模块(如 i915、amdgpu、nouveau)。
4. 使用
cat /sys/kernel/debug/dri/0/connector_list 查看内核级连接器状态。
4.6 性能计数器与 Connector 关联
Connector 层面的性能计数器可以帮助定位显示链路瓶颈:
| 计数器名称 | 来源 | 说明 |
|---|---|---|
| HPD IRQ 计数 | /sys/kernel/debug/dri/*/connector_stats | 热插拔中断次数,异常频繁可能表示接触不良 |
| EDID 读取失败次数 | dmesg | grep EDID | EDID 读取失败会导致无法设置最佳分辨率 |
| Link Training 失败次数 | DP 专用调试接口 | DP 链路训练失败会导致闪屏或黑屏 |
| Mode Set 计数 | drm_state 跟踪点 | 频繁 Mode Set 可能表示应用程序或窗口管理器异常 |
调试技巧:使用
watch -n 1 'cat /sys/kernel/debug/dri/0/connector_stats' 实时监控 Connector 状态变化。如果 HPD 计数在短时间内快速增长,应优先检查物理连接和线缆屏蔽。
4.7 本章小结
Connector 信息是显示调试的第一道关卡。通过 drm_info 可以快速获取:
- 接口类型(DP、HDMI、eDP 等)
- 连接状态(connected/disconnected)
- 物理尺寸(用于 DPI 计算)
- EDID 数据(显示器能力、支持的模式)
掌握这些信息后,开发者可以迅速定位显示输出异常的根本原因,为后续的 CRTC 和 Plane 调试打下基础。