Linux modetest
命令是一个用于测试和设置Direct Rendering Manager (DRM)设备的工具。通过该命令,用户可以查询DRM内核子系统的信息,包括显示设备、帧缓冲、编码器等,并能够测试不同的显示模式。modetest
是图形和显示开发人员常用的命令,用于调试和验证硬件的显示功能。
Linux modetest命令适用的Linux版本
modetest
命令包含在libdrm库中,几乎所有使用DRM的Linux发行版都应该支持该命令。如果发行版中没有预装,可以通过包管理器进行安装。不同的发行版可能需要不同的包名和安装方法。
对于基于Debian的系统(如Ubuntu),可以使用以下命令安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install libdrm-tools
对于CentOS 7和CentOS 8,安装方法略有不同:
CentOS 7使用yum
:
[linux@bashcommandnotfound.cn ~]$ sudo yum install libdrm
CentOS 8使用dnf
:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install libdrm
如果在尝试运行modetest
时遇到bash: modetest: command not found
错误,请按照上述方法进行安装。
Linux modetest命令的基本语法
modetest [options]
Linux modetest命令的常用选项或参数说明
选项 | 描述 |
---|---|
-d <num> | 指定DRM设备的标识符。 |
-h | 显示帮助信息。 |
-M <name> | 选择DRM驱动名称。 |
-s <conn>:<mode> | 设置指定连接器的模式。 |
-p | 列出可用的属性(properties)。 |
-f | 列出帧缓冲信息。 |
-c | 列出CRTCs(显示控制器)信息。 |
-e | 执行测试模式而不是列出信息。 |
-v | 输出更详细的信息。 |
注意:表格中仅列出了部分常用选项。modetest
支持的选项可能会随版本更新而变化。
Linux modetest命令的实例
实例1:列出所有可用的DRM设备信息
[linux@bashcommandnotfound.cn ~]$ modetest -c -p -f
这个命令将列出所有连接的显示设备和相关信息,包括属性和帧缓冲信息。
实例2:获取特定DRM设备的信息
[linux@bashcommandnotfound.cn ~]$ modetest -d 1 -c -p -f
这个命令将列出编号为1的DRM设备的信息。
实例3:设置特定连接器的显示模式
[linux@bashcommandnotfound.cn ~]$ modetest -s 32:1920x1080@60
这个命令将尝试设置连接器ID为32的设备为1920x1080分辨率,刷新率为60Hz的显示模式。
实例4:执行测试模式
[linux@bashcommandnotfound.cn ~]$ modetest -e
这个命令将执行测试模式,通常用于测试不同的显示模式是否工作正常。
实例5:列出所有连接器的信息
[linux@bashcommandnotfound.cn ~]$ modetest -c
这个命令将列出系统中所有可用的连接器(connectors),包括它们的ID、状态、类型和可用的显示模式。
实例6:列出特定连接器的详细信息
假设您要查看连接器ID为32的详细信息:
[linux@bashcommandnotfound.cn ~]$ modetest -c | grep -A 12 "id: 32"
这个命令使用grep
来过滤输出,只显示ID为32的连接器的详细信息。选项-A 12
用于显示匹配行之后的12行,以便获取完整的信息。
实例7:更改特定显示控制器(CRTC)的模式
如果要更改CRTC ID为33的显示模式:
[linux@bashcommandnotfound.cn ~]$ modetest -s 33@32:1920x1080
这个命令尝试将CRTC ID为33的设备设置为连接器ID为32的1920x1080显示模式。
实例8:打印所有可用的平面(planes)信息
[linux@bashcommandnotfound.cn ~]$ modetest -p
这个命令将列出所有可用的平面,包括平面的ID、可能的CRTC、当前FB、CRTC x,y和FB x,y等信息。
实例9:查看帧缓冲信息
[linux@bashcommandnotfound.cn ~]$ modetest -f
这个命令将列出所有帧缓冲区的大小、深度、比特率等详细信息。
实例10:使用自定义模式字符串设置显示模式
如果要将连接器ID为32的设备设置为自定义显示模式,可以使用如下命令:
[linux@bashcommandnotfound.cn ~]$ modetest -s 32:800x600-24@60
这个命令尝试设置连接器ID为32的设备为800x600分辨率,24位色深,刷新率为60Hz的显示模式。
实例11:在详细模式下运行modetest
[linux@bashcommandnotfound.cn ~]$ modetest -v
使用-v
选项将输出更详细的调试信息,这对于开发者和高级用户来说可以提供更多的内部信息,以便于调试。
实例12:选定特定的DRM驱动
如果你想要测试特定的DRM驱动,可以使用-M
选项:
[linux@bashcommandnotfound.cn ~]$ modetest -M i915
这个命令仅列出使用Intel i915驱动的DRM设备上的信息。
实例13:执行自定义脚本测试
有时,为了执行复杂的测试,你可能需要编写一个脚本来运行一系列的modetest
命令。例如,使用shell脚本自动遍历所有连接器并尝试不同的分辨率:
#!/bin/bash
# 获取所有连接器的ID
connector_ids=$(modetest -c | grep "^id:" | awk '{print $2}')
# 遍历每个连接器并尝试设置分辨率
for id in $connector_ids; do
modetest -s ${id}:1024x768@60
sleep 5 # 等待5秒
done
保存上面的脚本并执行,它将尝试将所有检测到的连接器设置为1024x768分辨率和60Hz的刷新率。
Linux modetest命令的注意事项
- 确保在运行
modetest
之前,你具有足够的权限,通常需要root权限。 - 在设置新的显示模式之前,了解当前连接的显示设备的能力是很重要的,以防止设置不支持的模式导致屏幕不工作。
- 使用
modetest
进行模式设置可能会影响当前会话,建议在测试环境中使用。 - 如果遇到
bash: modetest: command not found
错误,请根据上面的指导安装modetest
。
评论区