- 鏂板 collect_windows_audio_topology.ps1 (C1b) - 鏂板 collect_chromeos_audio_topology.sh (C1c) - README 鏍囪 C1/C1a/C1b 瀹屾垚锛岃ˉ鍏?C1c 璇存槑涓庨獙璇佹楠?- audio_topology/README 琛ュ厖 Windows/ChromeOS 鐢ㄦ硶涓庤剼鏈獙璇佽鏄?- 鍚竴浠?Windows 鎷撴墤鏀堕泦绀轰緥杈撳嚭 Co-authored-by: Cursor <cursoragent@cursor.com>
118 lines
4.0 KiB
Bash
118 lines
4.0 KiB
Bash
#!/bin/bash
|
||
#
|
||
# Chromebox 10 代 - 原生 ChromeOS 音频硬件拓扑收集脚本
|
||
# 用于 C1c 任务:在原生 ChromeOS 下收集硬件拓扑,供与 Coreboot+Linux/Windows 对比
|
||
#
|
||
# 用法(在 ChromeOS 上):
|
||
# 1. 打开 crosh:浏览器按 Ctrl+Alt+T
|
||
# 2. 输入 shell 进入 bash
|
||
# 3. 将本脚本传到设备后运行,或把下面整段复制粘贴到 shell 中执行
|
||
#
|
||
# 输出:默认写入 /tmp/audio_topology_chromeos_$(hostname)_$(date).txt
|
||
# 请用 文件 应用打开 /tmp 复制到下载目录,或 cat 该文件复制内容到电脑
|
||
#
|
||
# 注意:ChromeOS 使用 CRAS,无 PulseAudio;部分信息需在浏览器打开 chrome://system
|
||
# 在「audio」一节可复制粘贴到本输出文件末尾作为补充
|
||
|
||
set -e
|
||
|
||
OUTPUT_DIR="${OUTPUT_DIR:-/tmp}"
|
||
OUTPUT="${1:-${OUTPUT_DIR}/audio_topology_chromeos_$(hostname)_$(date +%Y%m%d_%H%M%S).txt}"
|
||
|
||
log() { echo "[$(date +%H:%M:%S)] $*"; }
|
||
section() {
|
||
echo "" >> "$OUTPUT"
|
||
echo "========================================" >> "$OUTPUT"
|
||
echo "### $1" >> "$OUTPUT"
|
||
echo "========================================" >> "$OUTPUT"
|
||
echo "" >> "$OUTPUT"
|
||
}
|
||
run_cmd() {
|
||
local desc="$1"
|
||
shift
|
||
echo "# $desc" >> "$OUTPUT"
|
||
echo '```' >> "$OUTPUT"
|
||
"$@" >> "$OUTPUT" 2>&1 || echo "(command failed or not available)" >> "$OUTPUT"
|
||
echo '```' >> "$OUTPUT"
|
||
echo "" >> "$OUTPUT"
|
||
}
|
||
|
||
log "Collecting ChromeOS audio topology..."
|
||
log "Output: $OUTPUT"
|
||
|
||
: > "$OUTPUT"
|
||
echo "# Chromebox 10 - ChromeOS (native) audio topology" >> "$OUTPUT"
|
||
echo "# Collected: $(date -Iseconds 2>/dev/null || date)" >> "$OUTPUT"
|
||
echo "# Host: $(hostname)" >> "$OUTPUT"
|
||
echo "# Note: Add content from chrome://system -> audio section manually if needed." >> "$OUTPUT"
|
||
echo "" >> "$OUTPUT"
|
||
|
||
# --- System ---
|
||
section "System"
|
||
run_cmd "uname -a" uname -a
|
||
run_cmd "Release (if exists)" cat /etc/lsb-release 2>/dev/null || true
|
||
|
||
# --- ALSA (kernel layer, CRAS sits on top) ---
|
||
section "ALSA /proc/asound"
|
||
run_cmd "cat /proc/asound/cards" cat /proc/asound/cards 2>/dev/null || echo "(no /proc/asound/cards)" >> "$OUTPUT"
|
||
run_cmd "cat /proc/asound/pcm" cat /proc/asound/pcm 2>/dev/null || true
|
||
run_cmd "ls -la /proc/asound" ls -la /proc/asound 2>/dev/null || true
|
||
|
||
for card_dir in /proc/asound/card[0-9]*; do
|
||
[ -d "$card_dir" ] || continue
|
||
card=$(basename "$card_dir")
|
||
echo "# $card dir:" >> "$OUTPUT"
|
||
echo '```' >> "$OUTPUT"
|
||
ls -la "$card_dir" 2>/dev/null >> "$OUTPUT" || true
|
||
echo '```' >> "$OUTPUT"
|
||
done
|
||
|
||
# --- Codec (HDA) ---
|
||
section "HDA Codec"
|
||
for codec in /proc/asound/card*/codec*; do
|
||
[ -f "$codec" ] || continue
|
||
echo "# $codec" >> "$OUTPUT"
|
||
echo '```' >> "$OUTPUT"
|
||
cat "$codec" 2>/dev/null >> "$OUTPUT" || true
|
||
echo '```' >> "$OUTPUT"
|
||
done
|
||
|
||
# --- HDMI ELD ---
|
||
section "HDMI ELD"
|
||
for eld in /proc/asound/card*/eld*; do
|
||
[ -f "$eld" ] || continue
|
||
echo "# $eld" >> "$OUTPUT"
|
||
echo '```' >> "$OUTPUT"
|
||
cat "$eld" 2>/dev/null >> "$OUTPUT" || true
|
||
echo '```' >> "$OUTPUT"
|
||
done
|
||
|
||
# --- sysfs sound ---
|
||
section "/sys/class/sound"
|
||
run_cmd "ls -la /sys/class/sound" ls -la /sys/class/sound 2>/dev/null || true
|
||
|
||
# --- PCI (if available) ---
|
||
section "PCI audio (if lspci exists)"
|
||
if command -v lspci &>/dev/null; then
|
||
run_cmd "lspci -nn | grep -i audio" bash -c "lspci -nn | grep -i audio || echo '(none)'"
|
||
else
|
||
echo "# lspci not available on this ChromeOS image" >> "$OUTPUT"
|
||
echo "" >> "$OUTPUT"
|
||
fi
|
||
|
||
# --- CRAS / ALSA utils (if present) ---
|
||
section "Audio tools (optional)"
|
||
run_cmd "which cras_test aplay amixer" bash -c "which cras_test aplay amixer 2>/dev/null || true"
|
||
if command -v cras_test &>/dev/null; then
|
||
run_cmd "cras_test --help 2>&1 | head -5" bash -c "cras_test --help 2>&1 | head -5" || true
|
||
fi
|
||
|
||
# --- DMI / board (if readable) ---
|
||
section "Board (DMI-like)"
|
||
for f in /sys/class/dmi/id/board_name /sys/class/dmi/id/product_name /sys/class/dmi/id/sys_vendor; do
|
||
[ -f "$f" ] && echo "$f: $(cat "$f" 2>/dev/null)" >> "$OUTPUT"
|
||
done
|
||
|
||
log "Done. Output: $OUTPUT"
|
||
log "Copy this file to your PC and save under audio_topology/collected/"
|