#!/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 功能测试完成"