| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #!/bin/bash
- # hdmi test
- # HDMI 功能测试脚本
- # 用途:检测 HDMI 视频 + 音频输出功能
- # 获取 HDMI 接口名称
- HDMI_PORT=$(xrandr | grep -oE '^DP[^ ]*|^HDMI[^ ]*' )
- if [ -z "$HDMI_PORT" ]; then
- echo "❌ 未检测到 HDMI 接口,请检查驱动和连接。"
- exit 1
- fi
- echo "✅ 检测到 HDMI 接口: $HDMI_PORT"
- # 检查 HDMI 是否连接
- CONNECTED=$(xrandr | grep "^$HDMI_PORT connected")
- if [ -z "$CONNECTED" ]; then
- echo "❌ HDMI 未连接,请插入 HDMI 显示器。"
- exit 1
- fi
- echo "✅ HDMI 已连接"
- echo $HDMI_PORT
- # 获取内屏接口(假设 eDP-1 或 LVDS)
- INTERNAL_PORT=$(xrandr | grep -E '^eDP|^LVDS' | awk '{print $1}' | head -n 1)
- if [ -z "$INTERNAL_PORT" ]; then
- echo "⚠ 未检测到内屏接口,可能是台式机。"
- else
- echo "✅ 内屏接口: $INTERNAL_PORT"
- fi
- echo $HDMI_PORT
- # 视频测试:设置镜像模式
- if [ -n "$INTERNAL_PORT" ]; then
- echo "▶ 设置镜像模式..."
- xrandr --output "$HDMI_PORT" --auto --same-as "$INTERNAL_PORT"
- else
- echo "▶ 开启 HDMI 输出..."
- xrandr --output "$HDMI_PORT" --auto
- fi
- sleep 2
- echo $HDMI_PORT
- # 分辨率切换测试
- echo "▶ 开始分辨率切换测试..."
- MODES=$(xrandr | sed -n "/^$HDMI_PORT/,/^[^ ]/p" | grep -Eo '^[ ]+[0-9]+x[0-9]+' | awk '{print $1}' | sort -u)
- for mode in $MODES; do
- echo "切换到分辨率 $mode"
- xrandr --output "$HDMI_PORT" --mode "$mode"
- sleep 2
- done
- # 音频测试
- echo "▶ 检查 HDMI 音频设备..."
- HDMI_CARD=$(aplay -l | grep HDMI | head -n 1 | awk -F'[: ,]+' '{print $2}')
- HDMI_DEVICE=$(aplay -l | grep HDMI | head -n 1 | awk -F'[: ,]+' '{print $6}')
- if [ -n "$HDMI_CARD" ] && [ -n "$HDMI_DEVICE" ]; then
- echo "✅ 检测到 HDMI 音频设备: card=$HDMI_CARD, device=$HDMI_DEVICE"
- echo "▶ 播放音频测试..."
- speaker-test -D hdmi:CARD=$HDMI_CARD,DEV=$HDMI_DEVICE -c 2 -t wav -l 1
- else
- echo "❌ 未检测到 HDMI 音频设备,请检查声卡驱动。"
- fi
- echo "✅ HDMI 功能测试完成"
|