Files
chromebox_10th_audio_driver/audio_topology/collect_chromeos_audio_topology.sh
jack e3aefd40fa 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>
2026-02-14 07:48:26 +08:00

118 lines
4.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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/"