C1 音频拓扑: Windows/ChromeOS 收集脚本与 README 更新

- 新增 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>
This commit is contained in:
2026-02-14 07:48:26 +08:00
parent 1dde4e0af5
commit e3aefd40fa
5 changed files with 1077 additions and 6 deletions

View File

@@ -0,0 +1,117 @@
#!/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/"