modetest -c 指令详解:看懂显示接口、连接状态与分辨率

一、modetest -c 到底有什么作用?

(一)先认识 modetest

modetest 是 libdrm 中的显示调试工具。DRM 可以理解为 Linux 内核管理显卡和显示设备的框架;KMS 负责显示模式设置,例如分辨率、刷新率和输出通路。

如果把显示系统比作一条送货路线,连接器(Connector)就是画面送往屏幕的"出口"。HDMI、DP、eDP、DSI 等都可能对应连接器;它既可能是外接插口,也可能是设备内部连接屏幕的接口。

(二)-c 表示列出连接器

复制代码
modetest -c

-c 的含义是 list connectors。它主要输出三类信息:连接器概况、可用显示模式(modes)、连接器属性(props)。这些内容来自所选 DRM 设备的驱动报告,而不是桌面设置界面的汇总。1

单独执行 -c 是查询操作,不会主动设置分辨率,也不会自动显示测试图案。若要执行模式设置测试,需要另用 -s 等参数。

二、怎样执行这条指令?

(一)先查询,再按需要处理权限

复制代码
# 查看连接器
modetest -c

# 如果提示权限不足,并且你有管理权限
sudo modetest -c

不必一开始就加 sudo。是否需要提权取决于设备节点权限和运行环境。如果提示找不到命令,先确认系统是否安装或构建了包含 modetest 的 libdrm 工具;不同发行版的包名可能不同。

(二)多显卡或开发板上,明确查询对象

复制代码
# 查看 DRM 设备节点
ls -l /dev/dri/

# 指定设备;card0 只是示例,请按实际节点修改
modetest -D /dev/dri/card0 -c

# 指定 DRM 驱动;rockchip 只是示例
modetest -M rockchip -c

-D 选择设备,-M 选择驱动。如果机器上有多个 DRM 设备,默认打开的设备未必连接着目标屏幕。查询显示输出应选对应的 card* 节点;renderD* 节点不用于这类 KMS 连接器查询。参数支持情况以本机 modetest 的帮助输出为准。

三、如何看懂 Connectors 输出?

(一)先看一段简化示例

下面的数据是教学示例,不是实际设备日志;为便于阅读,省略了详细时序和属性。不同版本的排版也可能有差异。

复制代码
Connectors:
id  encoder  status        name      size (mm)  modes  encoders
32  31       connected     HDMI-A-1  520x290    2      31
45  0        disconnected  DP-1      0x0        0      44

 modes:
   #0 1920x1080 60.00 ... flags: phsync, pvsync; type: preferred, driver
   #1 1280x720  60.00 ... flags: phsync, pvsync; type: driver

(二)各列分别代表什么?

字段 通俗解释
id 连接器的 DRM 对象 ID。后续测试可能使用这个编号;不要把它当作固定的硬件端口号。
encoder 当前关联的编码器 ID。为 0 表示当前没有关联编码器,不能单凭它认定接口损坏。
status 驱动报告的连接状态:connected、disconnected 或 unknown。
name 连接器名称,如 HDMI-A-1、DP-1、eDP-1、DSI-1。
size (mm) 报告的物理宽高,单位是毫米,不是分辨率。0x0 可能只是没有有效尺寸信息。
modes 列出的显示模式数量,不是显示器数量。
encoders 该连接器可使用的编码器 ID 列表,与前面的当前 encoder 含义不同。

(三)connected 是否等于屏幕已经亮了?

不能画等号。 connected 表示驱动报告连接器已连接,并不保证整条显示通路已经启用、画面已经送出或背光已经打开。固定连接的内置屏,其状态也可能由驱动直接确定。

disconnected 表示当前未检测到连接;unknown 表示驱动无法确定连接状态。它们都需要结合接口类型和现场情况判断,不能只凭一个状态词下结论。

四、如何理解 modes 和 props?

(一)modes 是可选模式,不是当前模式

1920x1080 是模式名称,通常对应宽高;60.00 是刷新率,单位 Hz。带有 preferred 的模式表示首选模式,常用作默认选择的参考,但不代表当前一定正在使用它。

后面的 hdisp、hss、hse、htot 和对应的纵向字段描述有效像素、同步位置及总时序。有些版本还打印像素时钟数值,单位为 kHz。初学者先关注分辨率、刷新率和 preferred 即可;排查屏幕时序问题时,再逐项核对。

可用模式可能来自 EDID、固定面板配置或驱动提供的其他信息,并经过驱动检查。列表中有某个模式,不保证后续设置一定成功,还可能受显示通路组合等条件限制。要了解当前显示配置,可进一步查看 modetest -p 中的 CRTC 信息及相关属性。2

(二)props 是接口的附加信息

props 可以理解为连接器的"属性清单"。常见属性包括 EDID、DPMS、link-status 和 CRTC_ID;具体有哪些,取决于驱动及查询方式。

EDID 类似显示器的"说明书",保存设备身份及显示能力信息。modetest 通常以十六进制数据展示 EDID blob,并不会直接把它整理成完整的中文说明。内置面板可能没有 EDID;因此,缺少 EDID 不能直接判定屏幕异常。

属性里的 enums 是枚举值对照,value 才是报告的值。例如看到 Good=0 Bad=1 时,应再看 value 是多少。即使 link-status 为 Good,也不能单独证明画面已正常显示。

五、实际排查时应该怎样使用?

(一)按照"设备 → 接口 → 状态 → 模式"检查

  1. **确认 DRM 设备:**先确保查询的是目标显卡或显示控制器。
  2. **找到目标接口:**对照 HDMI-A-1、DP-1 或 DSI-1 等名称。
  3. **查看连接状态:**外接屏可比较插拔前后的输出。
  4. **查看模式列表:**确认是否包含所需分辨率和刷新率。
  5. **继续检查显示通路:**若已连接但黑屏,再查看 CRTC、Plane、驱动日志及屏幕供电、背光等情况。

(二)常见现象与下一步

现象 建议检查方向
找不到目标连接器 先检查是否选错 DRM 设备,再检查驱动是否已加载并注册该输出。
外接屏显示 disconnected 检查线缆、显示器电源、输入源和转接器;结合热插拔及驱动日志判断。
connected,但 modes 为 0 检查模式获取与验证过程;外接屏关注 EDID/DDC,固定面板关注配置时序和驱动。
列表缺少目标分辨率 检查显示器能力、转接链路及驱动筛选条件,不要只看显示器宣传参数。
connected 且有模式,仍然黑屏 继续检查通路是否启用、帧缓冲是否有效,以及链路、供电和背光状态。

这些是排查方向,不是仅凭 -c 输出就能确定的故障原因。

(三)保存日志,方便对比

复制代码
# 保存查询结果和错误信息
modetest -D /dev/dri/card0 -c > modetest-connectors.txt 2>&1

# 同时查看连接器、编码器、CRTC 和 Plane
modetest -D /dev/dri/card0 -c -e -p

建议分别保存插屏前、插屏后和异常发生时的结果。对比状态、模式数量和属性变化,比只看一次输出更容易找到线索。

六、记住这几个要点

(一)最常见的三个误区

  • **误区一:-c 会点亮屏幕。**它用于查询,设置模式另有参数。
  • **误区二:connected 就说明显示正常。**连接检测与实际出图是不同环节。
  • **误区三:modes 就是当前分辨率。**它列出可选模式,当前状态需要进一步查看。

(二)一句话记忆

modetest -c 就像查看显示出口的登记表:先看有哪些出口,再看是否连接,最后看驱动给出了哪些可选显示模式。

七、参考资料

(一)源码与内核文档

1 libdrm modetest 源码(Android 源码树):参见 usage、dump_connectors、dump_mode。

2 Linux 内核 DRM/KMS 文档:参见连接器、模式与标准连接器属性。

相关推荐
cuijiecheng20181 小时前
GStreamer playbin 详解:从“一条命令播放视频”到播放器开发
音视频
Evanfu02161 小时前
短剧硬字幕如何批量 OCR:从字幕区到整剧校对
aigc·音视频·视频·机器翻译·自动翻译
Evanfu02162 小时前
AI 短剧出海前要检查哪些版权、肖像和声音权利?
自然语言处理·aigc·音视频·视频·机器翻译·自动翻译
quweiie2 小时前
阿里云视频点播+thinkphp8上传视频(一)
阿里云·音视频·视频点播·tp8
常州晟凯电子科技2 小时前
多对一无线视频传输系统评测
音视频·视频编解码
开发笔记-阿牛2 小时前
AM收音机蓝牙二合一设计复盘
人工智能·单片机·嵌入式硬件·音视频·音频
EasyCVR3 小时前
值班脱岗=事故前兆?视频汇聚/视频融合/视频分析平台EasyCVR岗位AI监测平台,7×24小时守住安全底线
安全·音视频·easycvr
做萤石二次开发的哈哈11 小时前
连锁门店、园区、交通枢纽的视频如何统一汇集?应用模板的接入与分权管理详解
人工智能·物联网·音视频·二次开发·视频监控·蓝海aiot一站式工作台·萤石云开放平台
david_tym12 小时前
语音降噪模型GTCRN学习笔记(一)
音视频