更新源码

This commit is contained in:
2026-04-04 18:13:40 +08:00
parent 2e20b8e2c5
commit beed35ec13
31 changed files with 1632 additions and 209 deletions

View File

@@ -2,61 +2,70 @@
修复 Chromebox 刷写 Coreboot 后,安装 Windows/Linux 时的声音问题。
## 文档入口(请先读)
**全仓库仅本文件为 README**`docs/` 下详细目录见 [docs/INDEX.md](docs/INDEX.md)(非 README避免双层入口
| 你想… | 打开 |
| ----- | ---- |
| **解决 Linux HDMI 无声**(分阶段步骤、已排除项、成功标准) | [docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) |
| **按主题浏览全部文档** | [docs/INDEX.md](docs/INDEX.md) |
| Linux / Windows 分平台思路与文档索引 | [audio_topology/REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md) |
| 三平台技术分析与对比 | [audio_topology/ANALYSIS_Audio.md](audio_topology/ANALYSIS_Audio.md) |
| 换机交接、源码克隆、实验结论 | [docs/meta/WORK_PROGRESS.md](docs/meta/WORK_PROGRESS.md) |
---
## 当前问题概况
| 平台 | HDMI 声音 | 3.5mm 耳机声音 | 插入/拔出提示 |
| ------- | ------- | ---------- | ------- |
| Linux | 无 | 有 | 有 |
| Windows | 有 | 无 | 无 |
| Linux | 无 | 有 | 有 |
| Windows | 有 | 无 | 无 |
**目标平台**Chromebox10 代 IntelGoogle **Kaisa**Coreboot 刷机后。
---
## 任务列表
## 任务列表(与路线图对齐)
> **建议执行顺序**先完成共通文档(尤其是硬件拓扑),再分别处理 Linux / Windows 平台问题
> **建议顺序**共通拓扑与文档 → Linux HDMI 按 [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) 分阶段推进 → Windows 3.5mm
### 一、共通与文档(优先)
### 共通与文档
- [✓] **C1**: 整理 Chromebox 10 代音频硬件拓扑HDMI、3.5mm、codec 型号)
- [✓] C1a: 在 Linux 下收集硬件拓扑信息(运行 `audio_topology/collect_linux_audio_topology.sh`,输出到 `audio_topology/collected/`
- [✓] C1b: 在 Windows 下收集硬件拓扑信息(运行 `audio_topology/collect_windows_audio_topology.ps1`,输出到 `audio_topology/collected/`
- C1c: 在原生 ChromeOS 下收集硬件拓扑信息(运行 `audio_topology/collect_chromeos_audio_topology.sh`,并在 chrome://system 的 audio 节复制补充;结果放入 `audio_topology/collected/`
- **C2**: 记录 Coreboot 下与原生 ChromeOS 固件的音频差异
- [✓] **C3**: 编写分平台操作步骤文档Linux / Windows— 见 [REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md) 与各 OPERATION 文档
- **C4**: 补充已验证的 Chromebox 型号与固件版本
| 任务 | 说明 |
| ---- | ---- |
| C1 | 硬件拓扑HDMI、3.5mm、codecC1a Linux / C1b Windows 采集已完成C1c 原生 ChromeOS 待补 |
| C2 | Coreboot 与原生 ChromeOS 固件音频差异(记录) |
| C3 | 分平台文档: [REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md) 与各 OPERATION |
| C4 | 已验证机型与固件版本(待补充) |
### 二、Linux 相关
### LinuxL1L4 对应 HDMI 路线图阶段)
- **L1**: 调研 Chromebox 10 代在 Linux 下的 HDMI 音频方案ALSA / PulseAudio / PipeWire
- **L2**: 确认 HDMI 音频芯片型号和驱动兼容性
- **L3**: 尝试/验证 HDMI 音频所需固件或内核参数
- **L4**: 编写 Linux 下 HDMI 音频修复说明或脚本(如有需要)
| 任务 | 对应路线图 | 说明 |
| ---- | ---------- | ---- |
| L1 | [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | ALSA / PipeWire 用户态基线:`aplay``speaker-test`、采集脚本 |
| L2 | [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | HDMI 走 SOF + iDisp与内核/固件兼容性结论见 [ANALYSIS_Audio.md](audio_topology/ANALYSIS_Audio.md) |
| L3 | [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | 固件实验低期望、HWE 6.17、0001 补丁与自编内核 |
| L4 | [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) + [docs/INDEX.md](docs/INDEX.md) | 脚本、补丁目录、深度 diff、上游复现 |
### 三、Windows 相关
### Windows
- **W1**: 调研 Chromebox 10 代 3.5mm 音频在 Windows 下的驱动需求
- **W2**: 确认 3.5mm 接口对应芯片及 Windows 驱动支持情况
- **W3**: 解决 3.5mm 无声音问题(驱动安装 / 驱动修改 / 注册表等)
- **W4**: 解决耳机插入/拔出无提示问题(通常与 HDA 驱动 / 插孔检测相关)
| 任务 | 说明 |
| ---- | ---- |
| W1W4 | 3.5mm / CoolStar / ALC5682、插拔提示等 [docs/windows/OPERATION_Windows_Audio.md](docs/windows/OPERATION_Windows_Audio.md) |
---
## 参考信息
## 参考速链
- 目标平台Chromebox10 代 IntelCoreboot 刷机后)
- 目标系统Linux / Windows
- **Linux / Windows 声音修复总方案**[audio_topology/REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md)
- Windows 3.5mm / CoolStar[audio_topology/OPERATION_Windows_Audio.md](audio_topology/OPERATION_Windows_Audio.md)
- Linux SOF / intel-signed 固件:[audio_topology/OPERATION_Force_Intel_Signed_Firmware.md](audio_topology/OPERATION_Force_Intel_Signed_Firmware.md)
- 三平台对比分析:[audio_topology/ANALYSIS_Audio.md](audio_topology/ANALYSIS_Audio.md)
- Ubuntu HWE 6.17 内核:源码目录 **`kernel-src/linux-hwe-6.17-6.17.0/`**(大文件不提交,见 [kernel-src/README.md](kernel-src/README.md));自定义补丁目录 [patches/ubuntu-hwe-6.17/](patches/ubuntu-hwe-6.17/)(应用时 **`PATCH=/path/to.patch`**)、脚本 [scripts/ubuntu-hwe-617-build.sh](scripts/ubuntu-hwe-617-build.sh)、依赖 [scripts/ubuntu-hwe-617-deps-packages.txt](scripts/ubuntu-hwe-617-deps-packages.txt)、摘要 [patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt](patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)
- **换机交接 / 进度与两处内核源码下载**[docs/WORK_PROGRESS.md](docs/WORK_PROGRESS.md)
- ChromeOS 5.15 与 Ubuntu HWE 6.17 的 iDisp/HDMI API 对照:[docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md)
- Linux HDMI 重新分析与补丁重设流程:[docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md](docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)
- ChromeOS 5.15 与 Ubuntu 6.17 音频子树自动对照摘要:`./scripts/diff-chromeos-ubuntu-sound.sh` → [docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md](docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)
- ChromeOS 内核深度 diffunshallow、`git log`、导出 `ipc3`/`pcm`/`hda-dai`[docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md](docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md)
- Ubuntu 24.04 + Windows 双系统:[docs/OPERATION_DualBoot_Ubuntu24_Windows.md](docs/OPERATION_DualBoot_Ubuntu24_Windows.md)
- 自编译 HWE 6.17 内核 deb 安装步骤(`linux-base` / DKMS / Secure Boot[docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)
- Ubuntu HWE 6.17 源码与补丁:[kernel-src/README.md](kernel-src/README.md)、[patches/ubuntu-hwe-6.17/](patches/ubuntu-hwe-6.17/)
- 自编内核安装:[docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)
- Linux SOF 固件实验与回退:[audio_topology/OPERATION_Force_Intel_Signed_Firmware.md](audio_topology/OPERATION_Force_Intel_Signed_Firmware.md)
- 双系统:[docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md](docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md)
**脚本一览**`ubuntu-hwe-617-build.sh`、采集、diff、trace 等): [docs/INDEX.md](docs/INDEX.md) 文末「脚本」表。
**拓扑采集脚本说明**[audio_topology/COLLECT.md](audio_topology/COLLECT.md)

View File

@@ -163,7 +163,7 @@ Ubuntu 22.04 LTS 默认使用 5.15 内核,与 ChromeOS 一致。可借助 Live
- <https://old-releases.ubuntu.com/releases/22.04.1/>(如 `ubuntu-22.04.1-desktop-amd64.iso`
- <https://old-releases.ubuntu.com/releases/22.04.2/>(如 `ubuntu-22.04.2-desktop-amd64.iso`
- 索引:<https://old-releases.ubuntu.com/releases/22.04/>
- **不必执着 Live**:也可在已安装系统上通过 **Ubuntu Mainline** 安装 **5.15.x** deb 做对比,步骤与风险提示见 [REANALYSIS 附录](../docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md#appendix-ubuntu-515)。
- **不必执着 Live**:也可在已安装系统上通过 **Ubuntu Mainline** 安装 **5.15.x** deb 做对比,步骤与风险提示见 [REANALYSIS 附录](../docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md#appendix-ubuntu-515)。
2. **制作 Live USB**:用 Ventoy、Rufus 或 `dd` 写入 U 盘,从 U 盘启动。
@@ -177,7 +177,7 @@ Ubuntu 22.04 LTS 默认使用 5.15 内核,与 ChromeOS 一致。可借助 Live
5. **说明**22.04.3、22.04.4、22.04.5 等较新 ISO 可能已带 HWE6.x内核为稳妥起见优先用 old-releases 的 22.04.1 或 22.04.2 镜像;若本地只有 22.04.5,可在启动菜单中尝试选择带 `generic` 的内核,或在安装后禁用 HWE 再切回 5.15。
6. **勿与 Mainline 5.15 deb 混淆**:在已安装的 Ubuntu 24.04 上安装 **kernel.ubuntu.com Mainline** 的 5.15(如 `v5.15.201`**不是**「Ubuntu 22.04 自带的 5.15.0-xx 栈」,真机曾出现 **HDMI 仍无声且 3.5mm/WiFi 也异常**;对照 ChromeOS 或验证「是否 6.x 独有」时,**不要用 Mainline 代替** 22.04 早期 Live 或上游 issue详见 [REANALYSIS 文档](../docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)。
6. **勿与 Mainline 5.15 deb 混淆**:在已安装的 Ubuntu 24.04 上安装 **kernel.ubuntu.com Mainline** 的 5.15(如 `v5.15.201`**不是**「Ubuntu 22.04 自带的 5.15.0-xx 栈」,真机曾出现 **HDMI 仍无声且 3.5mm/WiFi 也异常**;对照 ChromeOS 或验证「是否 6.x 独有」时,**不要用 Mainline 代替** 22.04 早期 Live 或上游 issue详见 [REANALYSIS 文档](../docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)。
### 2. 向 SOF 社区反馈
@@ -199,7 +199,7 @@ Ubuntu 22.04 LTS 默认使用 5.15 内核,与 ChromeOS 一致。可借助 Live
| 硬件一致 | sof-rt5682, 同左 | sof-rt5682, 同左 | Realtek ALC5682 + Intel 显示器音频,同硬件 |
| 采集条件 | HDMI1 已插入 | HDMI1 已插入 | HDMI 已连接 |
| 问题表现 | HDMIpcm3/4 -5 错误3.5mm 正常 | 均正常 | HDMI 正常3.5mm 无声、无插入提示 |
| 下一步 | 确认 pcm 与物理端口对应,复测 HDMI若「原来有声现在无声」见第八节 | — | [OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md)README W1W4 |
| 下一步 | 确认 pcm 与物理端口对应,复测 HDMI若「原来有声现在无声」见第八节 | — | [OPERATION_Windows_Audio.md](../docs/windows/OPERATION_Windows_Audio.md)README W1W4 |
---

View File

@@ -51,6 +51,8 @@ cd audio_topology
## 修复方案与专项文档
- 总览:[REPAIR_Plan_Audio.md](REPAIR_Plan_Audio.md)Linux HDMI / Windows 3.5mm
- 其它见该文件内「文档索引」表。
- **Linux HDMI 路线图(未来步骤主文档)**[../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md](../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md)
- 全文档索引:[../docs/INDEX.md](../docs/INDEX.md)
- 分平台总览:[REPAIR_Plan_Audio.md](REPAIR_Plan_Audio.md)Linux HDMI / Windows 3.5mm
- 其它见 [REPAIR_Plan_Audio.md](REPAIR_Plan_Audio.md) 内「文档索引」表。

View File

@@ -15,6 +15,9 @@ Coreboot 刷机后Linux 与 Windows 的音频问题**表现相反**,需**
| Linux当前典型 | 无 | 有 | 有 |
| Windows当前典型 | 有 | 无 | 无 |
**Linux HDMI分阶段路线图与未来步骤主文档**[../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md](../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md)
**全仓库文档索引**[../docs/INDEX.md](../docs/INDEX.md)
下文第一节保留具体操作顺序;与路线图冲突时以路线图为准并更新互链。
---
@@ -34,11 +37,11 @@ Coreboot 刷机后Linux 与 Windows 的音频问题**表现相反**,需**
1. **确认物理口与 ALSA 设备**
`aplay -L`,用 `speaker-test -D plughw:卡号,设备号` 逐个试 HDMIpcm2/3/4 与物理 HDMI1/2/3 对应关系以实测为准)。
2. **以 ChromeOS 5.15 为「有声」参照(优先)**
同机 **ChromeOS 上 HDMI 已验证正常**,对照意义大于通用发行版 Live。开发上用仓库中的 **ChromiumOS 5.15 内核源码**`chromiumos_kernel/v5.15`,克隆说明见 [WORK_PROGRESS.md](../docs/WORK_PROGRESS.md))与当前 **Ubuntu HWE 6.17** 源码(如 `kernel-src/linux-hwe-6.17-6.17.0/`,见 [kernel-src/README.md](../kernel-src/README.md))对 `sound/soc/sof/``sound/soc/intel/boards/` 等做 diff定位 iDisp/HDMI 与 SOF IPC 差异;必要时再 **git bisect** 或向 SOF 上游反馈。详见 [ANALYSIS_Audio.md](ANALYSIS_Audio.md) 第六节。
同机 **ChromeOS 上 HDMI 已验证正常**,对照意义大于通用发行版 Live。开发上用仓库中的 **ChromiumOS 5.15 内核源码**`chromiumos_kernel/v5.15`,克隆说明见 [WORK_PROGRESS.md](../docs/meta/WORK_PROGRESS.md))与当前 **Ubuntu HWE 6.17** 源码(如 `kernel-src/linux-hwe-6.17-6.17.0/`,见 [kernel-src/README.md](../kernel-src/README.md))对 `sound/soc/sof/``sound/soc/intel/boards/` 等做 diff定位 iDisp/HDMI 与 SOF IPC 差异;必要时再 **git bisect** 或向 SOF 上游反馈。详见 [ANALYSIS_Audio.md](ANALYSIS_Audio.md) 第六节。
3. **固件实验(预期有限)**
用 intel-signed 覆盖 community 的 `sof-cnl.ri.zst` **在本项目已实测不能单独恢复 HDMI**;若仍要试参数/路径,见 [OPERATION_Force_Intel_Signed_Firmware.md](OPERATION_Force_Intel_Signed_Firmware.md),并注意回退清单。
4. **自行维护内核(进阶 / 新补丁设计)**
对照 ChromeOS 5.15 与 Ubuntu HWE 6.17`set_idisp_hdmi_link()` 在 ChromeOS 使用 `dpcm_playback`,在 6.17 使用 **`playback_only`**——这是上游对 `struct snd_soc_dai_link` 的重命名,**不能**把 `dpcm_playback` 写回 6.17。历史上曾试 **0001/0002**已自仓库移除0002 真机未恢复 HDMI。新补丁应基于 **`ipc3.c` / `pcm.c` / `hda-dai.c`** 等与 `STREAM_PCM_PARAMS` 链路的差异再写,见 [patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)、[ChromeOS 深度 diff 流程](../docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md)、[Linux HDMI 重新分析](../docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)。
对照 ChromeOS 5.15 与 Ubuntu HWE 6.17`set_idisp_hdmi_link()` 在 ChromeOS 使用 `dpcm_playback`,在 6.17 使用 **`playback_only`**——这是上游对 `struct snd_soc_dai_link` 的重命名,**不能**把 `dpcm_playback` 写回 6.17。历史上曾试 **0001/0002**已自仓库移除0002 真机未恢复 HDMI。新补丁应基于 **`ipc3.c` / `pcm.c` / `hda-dai.c`** 等与 `STREAM_PCM_PARAMS` 链路的差异再写,见 [patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)、[ChromeOS 深度 diff 流程](../docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)、[Linux HDMI 重新分析](../docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)。
应用补丁与编译(**必须**显式指定 `PATCH`;无预置补丁时跳过 `apply`
@@ -85,7 +88,7 @@ export PATCH="/path/to/your/0001-new.patch" # 有补丁时
### 2.3 专项文档
全流程步骤:[OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md)
全流程步骤:[OPERATION_Windows_Audio.md](../docs/windows/OPERATION_Windows_Audio.md)
---
@@ -104,9 +107,15 @@ export PATCH="/path/to/your/0001-new.patch" # 有补丁时
| ------------------------------------------------------------------------------------ | -------------------------- |
| [ANALYSIS_Audio.md](ANALYSIS_Audio.md) | 三平台对比、原因分析、ChromeOS 对照与第六节排查、第八节无声排查 |
| [OPERATION_Force_Intel_Signed_Firmware.md](OPERATION_Force_Intel_Signed_Firmware.md) | Linux SOF 固件路径与回退 |
| [OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md) | Windows CoolStar / ALC5682 |
| [OPERATION_Windows_Audio.md](../docs/windows/OPERATION_Windows_Audio.md) | Windows CoolStar / ALC5682 |
| [README.md](../README.md) | 仓库任务列表 |
| [OPERATION_ChromeOS_Kernel_Deep_Diff.md](../docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md) | ChromeOS 与 6.17 音频关键文件 diff / unshallow / git log |
| [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](../docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md) | Linux HDMI 重新分析与补丁重设流程 |
| [OPERATION_ChromeOS_Kernel_Deep_Diff.md](../docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md) | ChromeOS 与 6.17 音频关键文件 diff / unshallow / git log |
| [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](../docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md) | Linux HDMI 重新分析与补丁重设流程 |
| [Linux_HDMI_Audio_Roadmap.md](../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | **Linux HDMI 路线图**(分阶段、已排除项) |
| [../docs/INDEX.md](../docs/INDEX.md) | `docs/` 全索引 |
| [collect_linux_audio_topology.sh](collect_linux_audio_topology.sh) | Linux 拓扑采集;含 SOF/HDMI IPC 基线 dmesg 与 `speaker-test` 提示 |
| [../scripts/verify-ubuntu-hwe617-0001-patch.sh](../scripts/verify-ubuntu-hwe617-0001-patch.sh) | 校验 HWE 6.17 上 0001 补丁dry-run / 已应用检测) |
| [../scripts/linux-hdmi-followup-workflow.sh](../scripts/linux-hdmi-followup-workflow.sh) | 仍无声时:深度 diff / 上游复现文档入口 |
| [../docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md](../docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md) | 提交 SOF/ALSA 上游所需材料与邮件模板 |

View File

@@ -58,6 +58,7 @@ echo "" >> "$OUTPUT"
section "系统信息"
run_cmd "uname -a" uname -a
run_cmd "内核版本" uname -r
run_cmd "/proc/version" cat /proc/version
if command -v alsactl &>/dev/null; then
run_cmd "ALSA 版本" alsactl --version 2>/dev/null || echo "alsactl 无版本信息"
fi
@@ -150,6 +151,23 @@ dmesg 2>/dev/null | grep -iE 'snd|hda|audio|codec|hdmi' >> "$OUTPUT" || echo "(
echo "\`\`\`" >> "$OUTPUT"
echo "" >> "$OUTPUT"
# --- Kaisa HDMI / SOF IPC 基线REPAIR_Plan_Audio.md / REANALYSIS_Linux_HDMI_Audio_Kaisa.md---
section "SOF / HDMI / IPC 基线 (dmesg)"
echo "# dmesg | grep -iE 'sof|STREAM_PCM|ipc failed|ipc tx|pcm[0-9]|ASoC|iDisp|hdmi' | tail -120" >> "$OUTPUT"
echo "# 用于对照 STREAM_PCM_PARAMS / ipc tx error 等;建议 sudo 运行本脚本以读全量 dmesg" >> "$OUTPUT"
echo "\`\`\`" >> "$OUTPUT"
dmesg 2>/dev/null | grep -iE 'sof|STREAM_PCM|ipc failed|ipc tx|pcm[0-9]|ASoC|iDisp|hdmi' | tail -120 >> "$OUTPUT" || echo "(需要 root 或 dmesg 不可用)" >> "$OUTPUT"
echo "\`\`\`" >> "$OUTPUT"
echo "" >> "$OUTPUT"
section "HDMI 试听命令提示(人工执行)"
{
echo "# 在 aplay -L 中查找 HDMI / DisplayPort 设备后,对每个候选 plughw 试播Ctrl+C 结束):"
echo "# speaker-test -D plughw:卡号,设备号 -c 2 -l 1"
echo "# 若 dmesg 已出现 STREAM_PCM_PARAMS / ipc tx error用户态换 sink 通常无法单独修复。"
} >> "$OUTPUT"
echo "" >> "$OUTPUT"
# --- 可选: journalctl 内核日志 (补充 dmesg含启动后日志) ---
section "journalctl 内核日志 (SOF/音频,可选补充)"
if command -v journalctl &>/dev/null; then

View File

@@ -17,4 +17,4 @@ dmesg_sof_TRACE_STREAM_PCM_PARAMS_jack-Kaisa_<uname -r>_<YYYYMMDD_HHMMSS>.txt
## 操作步骤
见仓库 **`docs/OPERATION_Kaisa_SOF_HDMI_Trace.md`**;一键辅助脚本:**`scripts/collect-kaisa-sof-trace.sh`**(需 root
见仓库 **`docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md`**;一键辅助脚本:**`scripts/collect-kaisa-sof-trace.sh`**(需 root

View File

File diff suppressed because it is too large Load Diff

66
docs/INDEX.md Normal file
View File

@@ -0,0 +1,66 @@
# 文档索引
本仓库 **仅根目录 [README.md](../README.md) 为 README**;本文件为 `docs/` 下按主题分类的**详细索引**(非 README
**优先阅读Linux HDMI 无声)**[linux-hdmi/Linux_HDMI_Audio_Roadmap.md](linux-hdmi/Linux_HDMI_Audio_Roadmap.md)
---
## Linux HDMI核心
| 文档 | 说明 |
| ---- | ---- |
| [linux-hdmi/Linux_HDMI_Audio_Roadmap.md](linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | **主路线图**:分阶段行动、已排除项、成功标准 |
| [linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md](linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md) | 现象、已排除方向、Mainline 5.15 误区、推荐路径 |
| [linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md) | ChromeOS 与 Ubuntu 6.17 的 iDisp/HDMI API 对照 |
| [linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md](linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md) | 提交 SOF/ALSA 上游所需材料与邮件模板 |
| [linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md](linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md) | 深度 trace`sof_debug`、带 IPC 载荷的 dmesg |
| [meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md](meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md) | `sound/soc` 自动对照摘要(由脚本生成) |
## 内核构建、补丁与安装
| 文档 | 说明 |
| ---- | ---- |
| [kernel-src/README.md](../kernel-src/README.md) | 拉取 HWE 6.17 源码、`apt source`、与 `debian/rules` 注意 |
| [kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md) | 安装自编 deb、`linux-image-unsigned`、模块包、Secure Boot |
| [kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md](kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md) | ChromiumOS 5.15 树 unshallow、`git log`、导出关键文件 diff |
| [../patches/ubuntu-hwe-6.17/README.md](../patches/ubuntu-hwe-6.17/README.md) | 预置 0001 补丁、如何 `PATCH=...` 应用 |
| [../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt) | 补丁设计备忘与 smoke 对象文件 |
| [../patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md](../patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md) | `STREAM_PCM_PARAMS` 链路的 Chrome 与 6.17 对照 |
## 固件、拓扑与采集
| 文档 | 说明 |
| ---- | ---- |
| [linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md](linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md) | 固件与拓扑快照清单 |
| [../audio_topology/OPERATION_Force_Intel_Signed_Firmware.md](../audio_topology/OPERATION_Force_Intel_Signed_Firmware.md) | intel-signed 固件路径与回退 |
| [../audio_topology/COLLECT.md](../audio_topology/COLLECT.md) | 拓扑采集脚本用法Linux / Windows / ChromeOS |
| [../audio_topology/collected/README_TRACE_KAISA.md](../audio_topology/collected/README_TRACE_KAISA.md) | trace 采集输出说明 |
## 双系统、进度与总方案
| 文档 | 说明 |
| ---- | ---- |
| [meta/WORK_PROGRESS.md](meta/WORK_PROGRESS.md) | 换机交接、源码克隆、当前结论、**Linux HDMI 阶段**互链 |
| [meta/OPERATION_DualBoot_Ubuntu24_Windows.md](meta/OPERATION_DualBoot_Ubuntu24_Windows.md) | Ubuntu 24.04 与 Windows 双系统 |
| [../audio_topology/REPAIR_Plan_Audio.md](../audio_topology/REPAIR_Plan_Audio.md) | Linux / Windows 分平台修复思路与文档索引 |
| [../audio_topology/ANALYSIS_Audio.md](../audio_topology/ANALYSIS_Audio.md) | 三平台对比与技术分析 |
## Windows 专项
| 文档 | 说明 |
| ---- | ---- |
| [windows/OPERATION_Windows_Audio.md](windows/OPERATION_Windows_Audio.md) | CoolStar / ALC5682 全流程 |
| [windows/HARDWARE_ID_DRIVER_MAP_Windows.md](windows/HARDWARE_ID_DRIVER_MAP_Windows.md) | 硬件 ID 与驱动映射(若有) |
## 脚本(仓库根 `scripts/`
| 脚本 | 说明 |
| ---- | ---- |
| [../scripts/ubuntu-hwe-617-build.sh](../scripts/ubuntu-hwe-617-build.sh) | `apply` / `deps` / `build` / `install` |
| [../scripts/verify-ubuntu-hwe617-0001-patch.sh](../scripts/verify-ubuntu-hwe617-0001-patch.sh) | 0001 补丁 dry-run |
| [../scripts/linux-hdmi-followup-workflow.sh](../scripts/linux-hdmi-followup-workflow.sh) | 深度 diff / 上游文档入口 |
| [../scripts/diff-chromeos-ubuntu-sound.sh](../scripts/diff-chromeos-ubuntu-sound.sh) | ChromeOS 与 6.17 `sound/soc` 统计 |
| [../scripts/preflight-chromeos-ubuntu-diff.sh](../scripts/preflight-chromeos-ubuntu-diff.sh) | 预检双树并运行上述 diff + export |
| [../scripts/export-chromeos-ubuntu-sound-file-diffs.sh](../scripts/export-chromeos-ubuntu-sound-file-diffs.sh) | 导出 ipc3/pcm/hda-dai unified diff |
| [../scripts/collect-kaisa-sof-trace.sh](../scripts/collect-kaisa-sof-trace.sh) | SOF trace 采集 |

View File

@@ -0,0 +1,3 @@
# 文档已迁移
Linux HDMI 路线图现位于:[linux-hdmi/Linux_HDMI_Audio_Roadmap.md](linux-hdmi/Linux_HDMI_Audio_Roadmap.md)。

View File

@@ -1,115 +1,3 @@
# 工作进度与源码获取说明(换机交接)
# 文档已迁移
面向机型:**Google KaisaChromebox 10 代)**;核心问题:**Linux HDMI 无声(`STREAM_PCM_PARAMS` IPC 约 -5**、**Windows 3.5mm 无声**;对照:**ChromeOS 上 HDMI / 3.5mm 正常**。
---
## 一、当前结论与状态
| 方向 | 状态 |
|------|------|
| 固件intel-signed vs community | 已实验:**单独换固件不能恢复 HDMI**;可能影响插拔检测,需按 OPERATION 文档回退 |
| 拓扑 | 与 ChromeOS **等效**(采集结论见 `audio_topology/ANALYSIS_Audio.md` |
| Ubuntu HWE 6.17 补丁 | **0001**`patches/ubuntu-hwe-6.17/`FREE/trigger 路径;**不解决** `STREAM_PCM_PARAMS`)。**STREAM_PCM_PARAMS** 对照见 `patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`;真机 IPC 载荷观测见 **`docs/OPERATION_Kaisa_SOF_HDMI_Trace.md`**、`audio_topology/collected/README_TRACE_KAISA.md`。上游复现包清单见 **`docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md`**。另见 `DIFF_SUMMARY.txt``docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md``docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` |
| Mainline 5.15kernel.ubuntu.com如 v5.15.201 | 真机:**HDMI 仍无声****3.5mm、WiFi 也异常**(相对 6.17)。**不等于** ChromeOS 5.15**不建议**作修复主线,应 **GRUB 回 6.17** 并装全 HWE 模块包 | 见 `docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` |
| 全量内核编译 `fakeroot debian/rules binary-generic` | **已在具备足够磁盘的环境完成**`kernel-src/` 下产出 `linux-image-unsigned-*``linux-modules-*` 等 deb常见遇阻**磁盘空间不足**(建议 **≥3550GB**);勿在同一源码树混用裸 `make``debian/rules`(需 `make ARCH=x86 mrproper` 清根目录后再打包) |
| Windows 侧 | 以 **CoolStar / Chrultrabook 成套驱动** 与设备管理器排错为主;见 `audio_topology/OPERATION_Windows_Audio.md` |
---
## 二、源码一ChromiumOS / ChromeOS 内核对照「HDMI 正常」)
**用途**:对照 **SOF / Intel boards / ACPI match** 等与 HDMI 相关的驱动差异(分支示例:`release-R144-16503.B-chromeos-5.15`)。
**官方仓库HTTPS**
- `https://chromium.googlesource.com/chromiumos/third_party/kernel`
**克隆示例(浅克隆 + 指定分支)**
```bash
mkdir -p /path/to/chromiumos_kernel && cd /path/to/chromiumos_kernel
git clone --depth 1 -b release-R144-16503.B-chromeos-5.15 \
https://chromium.googlesource.com/chromiumos/third_party/kernel.git v5.15
```
**可选:只检出音频相关目录(减小体积)**(在 `v5.15` 内执行):
```bash
cd v5.15
git sparse-checkout init --cone
git sparse-checkout set sound/soc/intel sound/soc/sof include/sound
```
**本仓库内路径(若已存在)**`chromiumos_kernel/v5.15/`(以你机器实际为准)。
---
## 三、源码二Ubuntu HWE 6.17 内核(与当前运行内核一致)
**用途**:与 ChromeOS 5.15 做 diff / 打补丁 / 编译验证(与当前 Ubuntu 包版本一致)。
**注意**:二进制包名可能是 `linux-image-*`,但**源码包名**为 `linux-hwe-6.17`**不是** `linux``apt source linux=6.17...` 会失败)。
**启用源码仓库**Noble 示例):
```bash
sudo sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
sudo apt update
```
**查本机内核对应的源码包与版本**
```bash
dpkg -s "linux-image-$(uname -r)" | grep -E '^Source:|^Version:'
apt-cache showsrc linux-hwe-6.17 | grep -E '^Package:|^Version:' | head
```
**下载源码(把 `Version:` 换成 `apt-cache showsrc` 里与当前内核一致的那一行)**
```bash
mkdir -p /path/to/chromebox_10th_audio_driver/kernel-src && cd /path/to/chromebox_10th_audio_driver/kernel-src
apt source linux-hwe-6.17=6.17.0-19.19~24.04.2
```
解压得到目录类似:`linux-hwe-6.17-6.17.0/`,以及 `.dsc` / `.orig.tar.gz` / `.diff.gz`(大文件已被 `.gitignore` 忽略,不提交仓库;见 `kernel-src/README.md`)。
**编译 generic 包(需足够磁盘与依赖)**
```bash
sudo apt build-dep linux-hwe-6.17
cd /path/to/chromebox_10th_audio_driver/kernel-src/linux-hwe-6.17-6.17.0
export CONCURRENCY_LEVEL="$(nproc)"
fakeroot debian/rules clean
fakeroot debian/rules binary-generic
```
**仓库内辅助脚本**`scripts/ubuntu-hwe-617-build.sh``scripts/ubuntu-hwe-617-deps-packages.txt`**README** 中有入口。
---
## 四、换机后建议最短路径
1. 克隆本仓库 `chromebox_10th_audio_driver`
2. 按需在本仓库 **`kernel-src/`** 下重新拉取 **Ubuntu 源码**(用新机器上的 `uname -r` / `dpkg -s` / `apt-cache showsrc` 核对版本号;**24.04** 上可直接 `apt build-dep linux-hwe-6.17`)。
3. 按需重新克隆 **ChromiumOS kernel** 分支(或从旧机拷贝 `chromiumos_kernel/` 目录)。
4. 阅读:`audio_topology/REPAIR_Plan_Audio.md``audio_topology/ANALYSIS_Audio.md`
---
## 五、文档索引
| 文档 | 说明 |
|------|------|
| `audio_topology/REPAIR_Plan_Audio.md` | Linux / Windows 修复总览 |
| `audio_topology/ANALYSIS_Audio.md` | 三平台对比与 dmesg 要点 |
| `audio_topology/OPERATION_Force_Intel_Signed_Firmware.md` | Linux SOF 固件与回退 |
| `audio_topology/OPERATION_Windows_Audio.md` | Windows CoolStar / ALC5682 |
| `README.md` | 任务列表与参考链接 |
| `docs/OPERATION_Kaisa_SOF_HDMI_Trace.md` | Kaisa`dynamic_debug` + `sof_debug=0x800`、采集 dmesg |
| `docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md` | 固件/tplg 与基线核对 |
| `docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md` | 上游 issue/邮件复现包与模板 |
---
*本文档随工作机迁移更新;不修改 `.cursor/plans/` 下的计划文件。*
换机交接与进度说明现位于:[meta/WORK_PROGRESS.md](meta/WORK_PROGRESS.md)。

View File

@@ -2,7 +2,7 @@
面向:在仓库 [`chromiumos_kernel/v5.15/`](../chromiumos_kernel/v5.15) 对照 **ChromeOS****`kernel-src/linux-hwe-6.17-6.17.0/`**Noble 源码树),为 **Kaisa HDMI / `STREAM_PCM_PARAMS`** 相关的新内核补丁做设计输入。
克隆说明与分支名见 [`docs/WORK_PROGRESS.md`](WORK_PROGRESS.md) 第二节。
克隆说明与分支名见 [`../meta/WORK_PROGRESS.md`](../meta/WORK_PROGRESS.md) 第二节。
---
@@ -107,6 +107,6 @@ OUT=/tmp/kaisa-sound-diff \
## 6. 相关文档与脚本
- 差异规模统计:[`docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)[`scripts/diff-chromeos-ubuntu-sound.sh`](../scripts/diff-chromeos-ubuntu-sound.sh)
- 差异规模统计:[`../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)[`scripts/diff-chromeos-ubuntu-sound.sh`](../scripts/diff-chromeos-ubuntu-sound.sh)
- 补丁目录说明:[`patches/ubuntu-hwe-6.17/README.md`](../patches/ubuntu-hwe-6.17/README.md)
- 摘要:[`patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt`](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)

View File

@@ -379,7 +379,7 @@ uname -r
应显示 `6.17.0-19-generic`(或你实际安装的 flavor 名称)。
HDMI 音频验证可结合项目内 [CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](CHROMEOS_VS_UBUNTU_HDMI_NOTES.md) 与 [WORK_PROGRESS.md](WORK_PROGRESS.md) 中的排错思路。
HDMI 音频验证可结合项目内 [CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](../linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md) 与 [WORK_PROGRESS.md](../meta/WORK_PROGRESS.md) 中的排错思路。
---

View File

@@ -22,7 +22,7 @@
### Ubuntu HWE 6.17(上游已改名)
- 使用 **`link->playback_only = 1;`**(对应 `include/sound/soc.h` 中的 DPCM 语义)。
- **勿**在 6.17 上把 `playback_only` 改回 `dpcm_playback`(字段已移除,无法编译)。历史说明见 [`DIFF_SUMMARY.txt`](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)。
- **勿**在 6.17 上把 `playback_only` 改回 `dpcm_playback`(字段已移除,无法编译)。历史说明见 [`DIFF_SUMMARY.txt`](../../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)。
---
@@ -30,7 +30,7 @@
曾尝试在 `set_idisp_hdmi_link` 中增加 **`SND_SOC_DPCM_TRIGGER_POST`**(旧称 0002**Kaisa 真机 HDMI 仍无声**;该补丁已从仓库删除。
新补丁应在细读 **ChromeOS 5.15 与 6.17****`sound/soc/sof/ipc3.c``pcm.c``sound/soc/sof/intel/hda-dai.c`** 等上的差异后再设计,流程见 [`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md)、[`docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)、[`patches/ubuntu-hwe-6.17/README.md`](../patches/ubuntu-hwe-6.17/README.md)。
新补丁应在细读 **ChromeOS 5.15 与 6.17****`sound/soc/sof/ipc3.c``pcm.c``sound/soc/sof/intel/hda-dai.c`** 等上的差异后再设计,流程见 [`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)、[`../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)、[`patches/ubuntu-hwe-6.17/README.md`](../../patches/ubuntu-hwe-6.17/README.md)。
---
@@ -52,6 +52,6 @@ diff -u \
## 五、与项目其它文档的关系
- 三平台现象与 dmesg 要点:`audio_topology/ANALYSIS_Audio.md`
- Ubuntu 打包与磁盘、勿混用 `make`/`debian/rules``docs/WORK_PROGRESS.md`
- Ubuntu 打包与磁盘、勿混用 `make`/`debian/rules``../meta/WORK_PROGRESS.md`
- HWE 6.17 构建脚本:`scripts/ubuntu-hwe-617-build.sh`(应用补丁需 **`PATCH=...`**
- ChromeOS 深度 diff 与导出三文件 diff`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`
- ChromeOS 深度 diff 与导出三文件 diff`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`

View File

@@ -0,0 +1,105 @@
# Linux HDMI 无声:路线图与未来步骤
本文是 **Google KaisaChromebox 10 代)+ Coreboot** 下 Linux **HDMI 无声音**问题的 **主路线图**。技术细节与论证见各专项文档;本文只固定 **顺序、产出物与维护方式**
**全文档索引**[INDEX.md](../INDEX.md)
**项目总览与问题表**[../../README.md](../../README.md)
---
## 一、问题与范围
- **硬件**Google KaisaCorebootHDMI 走 **SOF + iDisp / DisplayPort 音频** 链路。
- **典型现象**Linux 下 **HDMI 无输出或无法稳定打开 PCM****3.5mm 通常正常**。同机 **ChromeOS / Windows HDMI 正常** 时,问题集中在 **Linux 内核 / SOF / 用户态路由**,而非线缆或显示器本身。
- **dmesg 常见线索**`STREAM_PCM_PARAMS` IPC 失败、约 **-5EIO**,常与 **pcm2/3/4HDMI1/2/3** 某条相关(物理口与编号需实测对照)。
- **非本仓库机型**:其它机器 HDMI 无声原因可能完全不同(独显、默认 sink、PipeWire 等),**勿直接套用**本仓库内核补丁;可借用 [阶段 1](#阶段-1用户态基线) 的排查套路,根因结论见各文档。
---
## 二、已排除或低期望方向
下列方向在仓库内**已有结论或真机反馈**;重复投入前请先读链接,避免走弯路。
| 方向 | 结论摘要 | 详见 |
| ---- | -------- | ---- |
| 仅替换拓扑tplg | 与 ChromeOS 等效,**单独换 tplg 不能恢复 HDMI** | [ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md) |
| 仅换 intel-signed / community SOF 固件 | **不能单独恢复 HDMI**;可能影响插拔检测 | [OPERATION_Force_Intel_Signed_Firmware.md](../../audio_topology/OPERATION_Force_Intel_Signed_Firmware.md)、[WORK_PROGRESS.md](../meta/WORK_PROGRESS.md) |
| 旧 **0002**iDisp `TRIGGER_POST` | 真机无效;已从仓库删除 | [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](REANALYSIS_Linux_HDMI_Audio_Kaisa.md)、[DIFF_SUMMARY.txt](../../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt) |
| Ubuntu **Mainline 5.15** deb如 kernel.ubuntu.com | 真机 **HDMI 仍无声****3.5mm / WiFi 异常****不等于** ChromeOS 5.15 | [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](REANALYSIS_Linux_HDMI_Audio_Kaisa.md) |
| NHLT 缺失 | **不是**根因ChromeOS 也无 NHLT 仍正常) | [ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md) 第六节 |
---
## 三、分阶段路线图
```mermaid
flowchart LR
phase1[phase1_baseline_user]
phase2[phase2_kernel_0001]
phase3[phase3_deep_diff_bisect]
phase4[phase4_upstream_issue]
phase1 --> phase2 --> phase3 --> phase4
```
### 阶段 1用户态基线
**目的**:确认设备枚举、默认输出、以及 dmesg 是否已出现 IPC 错误(避免「选错 sink」假阳性
1. `aplay -L` / `aplay -l`,对 **每个 HDMI 类** `plughw:卡号,设备号` 执行 `speaker-test`(见 [REPAIR_Plan_Audio.md](../../audio_topology/REPAIR_Plan_Audio.md) 1.2 节)。
2. 运行 [collect_linux_audio_topology.sh](../../audio_topology/collect_linux_audio_topology.sh)(建议 `sudo`),输出到 `audio_topology/collected/`;其中含 **SOF / HDMI / IPC 基线** dmesg 过滤。
3. 图形环境下确认默认播放设备未锁死在打不开的 HDMI 上。
**产出**:带时间戳的采集文件,便于前后对比。
### 阶段 2HWE 6.17 与 0001 补丁
**目的**:在发行版栈上验证仓库内 **0001**`ipc3-pcm.c`FREE / trigger 使用 `sof_ipc_tx_message` + 回复),并正确安装自编内核与模块包。
1. 源码与版本:见 [kernel-src/README.md](../../kernel-src/README.md);在 **Ubuntu Noble** 上与运行内核一致的 `apt source linux-hwe-6.17=...`
2. 补丁校验: [scripts/verify-ubuntu-hwe617-0001-patch.sh](../../scripts/verify-ubuntu-hwe617-0001-patch.sh)`patch --dry-run`;若树中已含补丁内容会提示跳过)。
3. 构建与安装:`PATCH=...` [scripts/ubuntu-hwe-617-build.sh](../../scripts/ubuntu-hwe-617-build.sh) `apply``deps``build`;安装见 [OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)**linux-image-unsigned**、`linux-modules` + **modules-extra**、必要时 **iwlwifi** 等)。
4. **0001 与 `STREAM_PCM_PARAMS`**0001 对齐 ChromeOS 的 FREE/trigger 路径;**不改变** `hw_params` / `STREAM_PCM_PARAMS` 发送逻辑。若 HDMI 仍失败且 dmesg 仍报 **PARAMS**,见 [STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md](../../patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md)、[DIFF_SUMMARY.txt](../../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)。
**产出**:可启动的自编内核;复测后新的 `collected/` 与 dmesg 片段。
### 阶段 3深度对照与可选 trace
**目的**:在 6.x 上定位 **iDisp / SOF IPC** 与 ChromeOS 5.15 的差异,为**新补丁**或 **bisect** 提供依据。
1. 克隆 ChromiumOS 5.15 内核树: [WORK_PROGRESS.md](../meta/WORK_PROGRESS.md) 第二节。
2. 流程与导出:`git` unshallow、按文件 diff [OPERATION_ChromeOS_Kernel_Deep_Diff.md](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md);脚本 [diff-chromeos-ubuntu-sound.sh](../../scripts/diff-chromeos-ubuntu-sound.sh)、[export-chromeos-ubuntu-sound-file-diffs.sh](../../scripts/export-chromeos-ubuntu-sound-file-diffs.sh)。
3. 仍无声时一键列文档与条件运行对照: [linux-hdmi-followup-workflow.sh](../../scripts/linux-hdmi-followup-workflow.sh)。
4. **可选**:按 [OPERATION_Kaisa_SOF_HDMI_Trace.md](OPERATION_Kaisa_SOF_HDMI_Trace.md)、[README_TRACE_KAISA.md](../../audio_topology/collected/README_TRACE_KAISA.md) 抓取带 IPC 载荷的日志。
**产出**`reference/` 下 unified diff若已配置双树、或明确的「缺哪棵树」记录。
### 阶段 4上游协同
**目的**:将 **最小复现包** 交给 SOF / ALSA 社区,避免闭门造车。
- 清单与邮件模板: [UPSTREAM_SOF_Kaisa_HDMI_REPRO.md](UPSTREAM_SOF_Kaisa_HDMI_REPRO.md)。
---
## 四、成功标准(建议)
- **客观**:对目标 HDMI 口播放时,**dmesg 中无**与本次播放相关的 **`STREAM_PCM_PARAMS` / `ipc tx error`**(或已确认为无害/已修复)。
- **主观**:显示器扬声器或耳机有稳定输出。
- **回归**3.5mm、WiFi 等与本次改动无关的子系统无意外损坏(自编内核时注意装全模块包)。
---
## 五、维护与「当前阶段」
- **路线图正文**为本文件;**换机与源码 URL、实验结论**以 [WORK_PROGRESS.md](../meta/WORK_PROGRESS.md) 为准两者应同步WORK_PROGRESS 内「Linux HDMI 当前阶段」见该文件顶部)。
- **任务编号 L1L4** 与阶段对应关系见根 [README.md](../../README.md) 任务列表。
---
## 六、相关文档速链
| 用途 | 链接 |
| ---- | ---- |
| Linux 分步操作与索引 | [REPAIR_Plan_Audio.md](../../audio_topology/REPAIR_Plan_Audio.md) |
| 长文分析Mainline 误区、自定义内核注意) | [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](REANALYSIS_Linux_HDMI_Audio_Kaisa.md) |
| API 对照(`playback_only` 等) | [CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](CHROMEOS_VS_UBUNTU_HDMI_NOTES.md) |

View File

@@ -73,7 +73,7 @@ KR=$(uname -r)
sudo dmesg -T > "/tmp/dmesg_sof_TRACE_STREAM_PCM_PARAMS_jack-Kaisa_${KR}_${TS}.txt"
```
5. 将文件复制到本仓库 **`audio_topology/collected/`**(可 scp并在 `docs/WORK_PROGRESS.md``docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 中加一行文件名索引。
5. 将文件复制到本仓库 **`audio_topology/collected/`**(可 scp并在 `../meta/WORK_PROGRESS.md``REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 中加一行文件名索引。
## 5. 日志中应关注的内容

View File

@@ -6,9 +6,9 @@
- 三平台对比与 dmesg`audio_topology/ANALYSIS_Audio.md`
- 总修复顺序与文档索引:`audio_topology/REPAIR_Plan_Audio.md`
- ChromeOS 5.15 与 6.17 API 对照:`docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md`
- ChromeOS 树深度 diff / 新补丁设计入口:`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`
- 自编内核安装(含 signed 冲突、modules-extra / iwlwifi`docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`
- ChromeOS 5.15 与 6.17 API 对照:`CHROMEOS_VS_UBUNTU_HDMI_NOTES.md`(本目录)
- ChromeOS 树深度 diff / 新补丁设计入口:`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`
- 自编内核安装(含 signed 冲突、modules-extra / iwlwifi`../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`
---
@@ -26,7 +26,7 @@
| 方向 | 结论 | 依据(仓库内) |
|------|------|----------------|
| **拓扑 tplg** | 与 ChromeOS **等效**(解压后规模一致、端点一致) | `ANALYSIS_Audio.md` 第四节、第五节 |
| **仅换 SOF 固件intel-signed ↔ community** | **不能单独恢复 HDMI**;还可能影响 3.5mm 插拔检测 | `WORK_PROGRESS.md``ANALYSIS_Audio.md` 第五节、`OPERATION_Force_Intel_Signed_Firmware.md` |
| **仅换 SOF 固件intel-signed ↔ community** | **不能单独恢复 HDMI**;还可能影响 3.5mm 插拔检测 | `../meta/WORK_PROGRESS.md``../../audio_topology/ANALYSIS_Audio.md` 第五节、`../../audio_topology/OPERATION_Force_Intel_Signed_Firmware.md` |
| **NHLT 缺失** | **不是根因**ChromeOS 也无 NHLT 仍正常) | `ANALYSIS_Audio.md` 第六节 |
| **旧 0002 补丁(`set_idisp_hdmi_link` 里 `SND_SOC_DPCM_TRIGGER_POST`** | **真机验证仍无 HDMI 声**;补丁**已从仓库删除**,不再维护 | 见 `CHROMEOS_VS_UBUNTU_HDMI_NOTES.md``patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt` |
| **Ubuntu Mainline 5.15(例:`v5.15.201` deb 装在 Noble 上)** | **HDMI 仍无声**;且相对 6.17 **3.5mm 也无声**、**WiFi 也无**(整体音频/无线栈退化) | 真机反馈jack-Kaisa见下文 **「Mainline 5.15 ≠ ChromeOS 5.15」** |
@@ -42,7 +42,7 @@
在继续改内核前,建议先确认实验条件可靠(否则会出现「补丁无效」误判):
1. **确已启动自编镜像**`dpkg -l | grep linux-image | grep 6.17.0-19` 应为 **`linux-image-unsigned-...`**,而非仍占位的官方 **`linux-image-6.17.0-19-generic`**(二者互斥,易只装上 modules。见安装文档第 2.1 节。
2. **模块包装全**:至少 **`linux-modules` + `linux-modules-extra`**Intel 无线常见还需 **`linux-modules-iwlwifi-*`**;否则会出现 **WiFi 消失** 等与 HDMI 无关的干扰。见 `OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`
2. **模块包装全**:至少 **`linux-modules` + `linux-modules-extra`**Intel 无线常见还需 **`linux-modules-iwlwifi-*`**;否则会出现 **WiFi 消失** 等与 HDMI 无关的干扰。见 `../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`
3. **用户态与物理口**`aplay -L` 列出所有 HDMI 类设备后,对 **每个候选 `plughw:卡,设备`**`speaker-test`;系统设置里默认输出勿锁死在错误 sink。
---
@@ -57,7 +57,7 @@
- `aplay -L`(保留 HDMI 相关行)
- `sudo dmesg | grep -iE 'sof|STREAM_PCM|ipc failed|pcm[0-9]|ASoC|iDisp|hdmi'`(尾部 80120 行即可)
- 可选:`alsa-info` 导出一份文本
- 可选(`STREAM_PCM_PARAMS` 深度):按 **`docs/OPERATION_Kaisa_SOF_HDMI_Trace.md`** 开启 **`sof_debug=0x800`** 与 **dynamic_debug**,将带 IPC 载荷的 dmesg 放入 `audio_topology/collected/`(见同目录 **`README_TRACE_KAISA.md`**)。
- 可选(`STREAM_PCM_PARAMS` 深度):按 **`OPERATION_Kaisa_SOF_HDMI_Trace.md`** 开启 **`sof_debug=0x800`** 与 **dynamic_debug**,将带 IPC 载荷的 dmesg 放入 `audio_topology/collected/`(见同目录 **`README_TRACE_KAISA.md`**)。
输出放入 `audio_topology/collected/`,文件名带日期与内核版本,便于 diff。
@@ -111,7 +111,7 @@ flowchart LR
```
- **HDMI 问题性质**:更可能是 **Linux尤其 6.x 发行版栈)里 SOF/Intel/iDisp 路径与 Kaisa + Coreboot 的组合问题**;拓扑与「只换一份 SOF 固件」已反复证明**不够**。
- **旧 0001/0002**:已自仓库移除;**新补丁**按 [`OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md) 流程重做。
- **旧 0001/0002**:已自仓库移除;**新补丁**按 [`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md) 流程重做。
- **Mainline 5.15 deb**:在 Kaisa 上 **阴性且引入 3.5mm/WiFi 回归****不推荐**继续折腾 Mainline 5.15。**若已安装**:用 GRUB **回到 6.17**,日常以 **完整 HWE 模块包** 为准。
- **仍值得做的对照**(可选、工作量更大):**Ubuntu 22.04 早期 Live 的 5.15.0-xx-generic**(非 Mainline或直接把材料交给 **SOF/ALSA 上游****bisect** 建议在 **linux.git 或 Ubuntu 同源** 上进行,而非混用 Noble + Mainline 老内核。
- **自编 6.17**:务必 **unsigned若用+ modules + extra+ iwlwifi** 装全,并保留可启动旧内核。
@@ -120,7 +120,7 @@ flowchart LR
## 六、文档维护建议
若你完成 **5.15 Live****上游 issue** 链接,可把结果摘要回写到 `audio_topology/ANALYSIS_Audio.md`(新增一小节)与 `docs/WORK_PROGRESS.md` 状态表,避免后人重复踩旧实验补丁/仅装两 deb/unsigned 冲突等坑。
若你完成 **5.15 Live****上游 issue** 链接,可把结果摘要回写到 `../../audio_topology/ANALYSIS_Audio.md`(新增一小节)与 `../meta/WORK_PROGRESS.md` 状态表,避免后人重复踩旧实验补丁/仅装两 deb/unsigned 冲突等坑。
---
@@ -191,7 +191,7 @@ uname -r
**说明**
- Mainline **通常没有** Ubuntu HWE 那种 `linux-modules-extra` / `linux-modules-iwlwifi` 分包;多数驱动在 **`linux-modules-…` 一体包**里。
- **`linux-image-unsigned`**:开启 **Secure Boot** 时可能无法启动,需关闭或参考 `docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`
- **`linux-image-unsigned`**:开启 **Secure Boot** 时可能无法启动,需关闭或参考 `../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`
- 务必留好旧内核,以便 GRUB 切回 6.x。
### C. 其它带 5.15 的 Live备选
@@ -219,10 +219,10 @@ uname -r
ChromeOS 内核通常是 **v5.15 + 大量提交**;不要指望「一个补丁文件」解决问题,应 **缩小目录 + 看提交说明**
1. **拿到树**(见 `docs/WORK_PROGRESS.md` 第二节),例如本仓库 `chromiumos_kernel/v5.15/`,分支如 `release-R144-16503.B-chromeos-5.15`
1. **拿到树**(见 `../meta/WORK_PROGRESS.md` 第二节),例如本仓库 `chromiumos_kernel/v5.15/`,分支如 `release-R144-16503.B-chromeos-5.15`
2. **操作清单与三文件 diff 导出**[`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md)`git fetch --unshallow``git log``diff` / `export-chromeos-ubuntu-sound-file-diffs.sh`)。
3. **自动对照摘要**(本机可跑):[`docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)。随时重跑:
2. **操作清单与三文件 diff 导出**[`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)`git fetch --unshallow``git log``diff` / `export-chromeos-ubuntu-sound-file-diffs.sh`)。
3. **自动对照摘要**(本机可跑):[`../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)。随时重跑:
```bash
./scripts/diff-chromeos-ubuntu-sound.sh

View File

@@ -22,9 +22,9 @@ sha256sum /lib/firmware/intel/sof-tplg/sof-cml-rt5682.tplg.zst 2>/dev/null
| 拓扑文件 | `sof-cml-rt5682.tplg`Chrome 解压约 35KBLinux 常为 `.tplg.zst` | 解压后规模与端点应与 ChromeOS 采集一致 |
| 固件 | CML 平台常见 `sof-cml.ri`Chrome 倾向 **intel-signed**Ubuntu 常选 **community** | 已实验证明 **仅换 signed/community 不能单独恢复 HDMI**;仍应记录本机实际路径 |
| dmesg | 无「topology load failed」或明显 ABI 不匹配 | 若有加载错误,优先修复路径/文件再谈 IPC -5 |
| 与 IPC 观测结合 | `docs/OPERATION_Kaisa_SOF_HDMI_Trace.md` | 载荷中 **comp_id** 须与 tplg 中对应 PCM 节点一致;若一致仍 -5偏向 **固件策略或 DSP bug** |
| 与 IPC 观测结合 | `OPERATION_Kaisa_SOF_HDMI_Trace.md` | 载荷中 **comp_id** 须与 tplg 中对应 PCM 节点一致;若一致仍 -5偏向 **固件策略或 DSP bug** |
## 结论引用(已有)
- 拓扑 **等效**、仅换固件 **非主因**:见 `ANALYSIS_Audio.md` 第四节、第五节及 `docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md`
- 拓扑 **等效**、仅换固件 **非主因**:见 `../../audio_topology/ANALYSIS_Audio.md` 第四节、第五节及 `REANALYSIS_Linux_HDMI_Audio_Kaisa.md`
- 本清单用于 **回归与上游报障时的环境快照**,不替代内核/驱动根因分析。

View File

@@ -5,7 +5,7 @@
## 1. 硬件与引导
- 机型:**Google Kaisa**Chromebox 10 代Coreboot。
- 对照:**同机 ChromeOS HDMI 正常****Windows HDMI 正常**(见仓库 `audio_topology/``docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md`)。
- 对照:**同机 ChromeOS HDMI 正常****Windows HDMI 正常**(见仓库 `audio_topology/``REANALYSIS_Linux_HDMI_Audio_Kaisa.md`)。
## 2. 软件版本(请填真机实测)
@@ -20,11 +20,11 @@
仓库已有示例:
`audio_topology/collected/dmesg_sof_STREAM_PCM_PARAMS_HDMI3_jack-Kaisa_6.17.0-19-generic_20260404.txt`
- **`alsa-info` 导出**(或 `aplay -L``/proc/asound` 相关片段)。
- **可选(强烈建议)**:按 **`docs/OPERATION_Kaisa_SOF_HDMI_Trace.md`** 采集带 **IPC 载荷十六进制** 的 dmesg放入 `audio_topology/collected/` 并附文件名。
- **可选(强烈建议)**:按 **`OPERATION_Kaisa_SOF_HDMI_Trace.md`** 采集带 **IPC 载荷十六进制** 的 dmesg放入 `audio_topology/collected/` 并附文件名。
## 4. 固件与拓扑快照
**`docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md`** 附:`dmesg` 中固件/tplg 路径、`sha256sum` 结果。
**`SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md`** 附:`dmesg` 中固件/tplg 路径、`sha256sum` 结果。
## 5. 已尝试且不足以单独修复的方向(避免重复提问)

View File

@@ -2,7 +2,7 @@
本文档由仓库内脚本/命令**自动生成摘要**(非手工逐行审查结论)。用于回答:**ChromeOS 树与 6.17 在 SOF/Intel 音频上差多大、该先看哪些文件**。
**操作清单**`git fetch --unshallow``git log`、导出 `ipc3`/`pcm`/`hda-dai` 全文 diff[`OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md)。
**操作清单**`git fetch --unshallow``git log`、导出 `ipc3`/`pcm`/`hda-dai` 全文 diff[`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)。
**路径约定**(本仓库):
@@ -22,7 +22,7 @@ git fetch --unshallow origin
# 或重新克隆时不加 --depth 1
```
若提示 **`--unshallow on a complete repository does not make sense`**,表示已是完整仓库,跳过本步即可(详见 [`OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md))。
若提示 **`--unshallow on a complete repository does not make sense`**,表示已是完整仓库,跳过本步即可(详见 [`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md))。
然后再执行:
@@ -87,7 +87,7 @@ UB=/path/to/linux-hwe-6.17-6.17.0 \
---
## 5. 与 `docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 的关系
## 5. 与 `docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 的关系
- 本文档给出 **「从哪里下刀 diff」** 的**量化清单**。
- **ChromeOS 定制补丁的语义**(哪些提交该 port仍需 **`git log`(非浅克隆)** 或 **人工读 diff** 后结论。

View File

@@ -30,7 +30,7 @@
- (可选)`/home`ext4按需
- 可选swap832GB看内存与休眠需求
> 若你计划在 Ubuntu 上编译 `linux-hwe-6.17` deb建议 Ubuntu 分区额外留出 **≥3550GB 空闲**(见本仓库 `docs/WORK_PROGRESS.md` 的经验)。
> 若你计划在 Ubuntu 上编译 `linux-hwe-6.17` deb建议 Ubuntu 分区额外留出 **≥3550GB 空闲**(见本仓库 `docs/meta/WORK_PROGRESS.md` 的经验)。
---
@@ -46,8 +46,8 @@
**Windows 侧(本项目相关)**
- 先不要急着装“通用 Realtek 声卡包”。本机 3.5mm 往往依赖 **CoolStar SOF + ALC5682 I2S** 栈。
- 先按本仓库 Windows 指南处理:
- `audio_topology/OPERATION_Windows_Audio.md`
- `audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md`
- `docs/windows/OPERATION_Windows_Audio.md`
- `docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md`
### 2) 再安装 Ubuntu 24.04
@@ -148,15 +148,15 @@ timedatectl set-local-rtc 0 --adjust-system-clock
- **Realtek ALC5682 I2S Audio**:硬件 ID 常见 `ACPI\\10EC5682\\...`
按本仓库文档走:
- `audio_topology/OPERATION_Windows_Audio.md`
- `audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md`
- `docs/windows/OPERATION_Windows_Audio.md`
- `docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md`
### 2) Linux 内核HWE 6.17 编译/安装)
若你要在 Ubuntu 24.04 上编译本仓库的 HWE 6.17 内核包:
- 源码放置:`kernel-src/linux-hwe-6.17-6.17.0/`
- 脚本入口:`scripts/ubuntu-hwe-617-build.sh`
- 经验提醒:不要在同一源码树混用裸 `make``debian/rules`;如做过 smoke-test打包前可 `make ARCH=x86 mrproper` 清洁树(详见 `docs/WORK_PROGRESS.md`)。
- 经验提醒:不要在同一源码树混用裸 `make``debian/rules`;如做过 smoke-test打包前可 `make ARCH=x86 mrproper` 清洁树(详见 `docs/meta/WORK_PROGRESS.md`)。
---

139
docs/meta/WORK_PROGRESS.md Normal file
View File

@@ -0,0 +1,139 @@
# 工作进度与源码获取说明(换机交接)
面向机型:**Google KaisaChromebox 10 代)**;核心问题:**Linux HDMI 无声(`STREAM_PCM_PARAMS` IPC 约 -5**、**Windows 3.5mm 无声**;对照:**ChromeOS 上 HDMI / 3.5mm 正常**。
---
## 文档导航与 Linux HDMI 阶段
| 资源 | 路径 |
| ---- | ---- |
| 全文档索引(按主题) | [INDEX.md](../INDEX.md) |
| **Linux HDMI 路线图**(分阶段行动、已排除项、成功标准) | [../linux-hdmi/Linux_HDMI_Audio_Roadmap.md](../linux-hdmi/Linux_HDMI_Audio_Roadmap.md) |
| 项目根 README任务与 L1L4 映射) | [../../README.md](../../README.md) |
**协作时**:在本文或路线图「五、维护」中注明当前卡在哪一阶段(例如:阶段 2 已装自编内核、阶段 3 待克隆 `chromiumos_kernel/v5.15`)。
---
## 一、当前结论与状态
| 方向 | 状态 |
|------|------|
| 固件intel-signed vs community | 已实验:**单独换固件不能恢复 HDMI**;可能影响插拔检测,需按 OPERATION 文档回退 |
| 拓扑 | 与 ChromeOS **等效**(采集结论见 `audio_topology/ANALYSIS_Audio.md` |
| Ubuntu HWE 6.17 补丁 | **0001**`patches/ubuntu-hwe-6.17/`FREE/trigger 路径;**不解决** `STREAM_PCM_PARAMS`)。**STREAM_PCM_PARAMS** 对照见 `patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`;真机 IPC 载荷观测见 **`docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md`**、`audio_topology/collected/README_TRACE_KAISA.md`。上游复现包清单见 **`docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md`**。另见 `DIFF_SUMMARY.txt``docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md``docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` |
| Mainline 5.15kernel.ubuntu.com如 v5.15.201 | 真机:**HDMI 仍无声****3.5mm、WiFi 也异常**(相对 6.17)。**不等于** ChromeOS 5.15**不建议**作修复主线,应 **GRUB 回 6.17** 并装全 HWE 模块包 | 见 `docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` |
| 全量内核编译 `fakeroot debian/rules binary-generic` | **已在具备足够磁盘的环境完成**`kernel-src/` 下产出 `linux-image-unsigned-*``linux-modules-*` 等 deb常见遇阻**磁盘空间不足**(建议 **≥3550GB**);勿在同一源码树混用裸 `make``debian/rules`(需 `make ARCH=x86 mrproper` 清根目录后再打包) |
| Windows 侧 | 以 **CoolStar / Chrultrabook 成套驱动** 与设备管理器排错为主;见 `docs/windows/OPERATION_Windows_Audio.md` |
---
## 二、源码一ChromiumOS / ChromeOS 内核对照「HDMI 正常」)
**用途**:对照 **SOF / Intel boards / ACPI match** 等与 HDMI 相关的驱动差异(分支示例:`release-R144-16503.B-chromeos-5.15`)。
**官方仓库HTTPS**
- `https://chromium.googlesource.com/chromiumos/third_party/kernel`
**克隆示例(浅克隆 + 指定分支)**
```bash
mkdir -p /path/to/chromiumos_kernel && cd /path/to/chromiumos_kernel
git clone --depth 1 -b release-R144-16503.B-chromeos-5.15 \
https://chromium.googlesource.com/chromiumos/third_party/kernel.git v5.15
```
**可选:只检出音频相关目录(减小体积)**(在 `v5.15` 内执行):
```bash
cd v5.15
git sparse-checkout init --cone
git sparse-checkout set sound/soc/intel sound/soc/sof include/sound
```
**本仓库内路径(若已存在)**`chromiumos_kernel/v5.15/`(以你机器实际为准)。
---
## 三、源码二Ubuntu HWE 6.17 内核(与当前运行内核一致)
**用途**:与 ChromeOS 5.15 做 diff / 打补丁 / 编译验证(与当前 Ubuntu 包版本一致)。
**注意**:二进制包名可能是 `linux-image-*`,但**源码包名**为 `linux-hwe-6.17`**不是** `linux``apt source linux=6.17...` 会失败)。
**启用源码仓库**Noble 示例):
```bash
sudo sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
sudo apt update
```
**查本机内核对应的源码包与版本**
```bash
dpkg -s "linux-image-$(uname -r)" | grep -E '^Source:|^Version:'
apt-cache showsrc linux-hwe-6.17 | grep -E '^Package:|^Version:' | head
```
**下载源码(把 `Version:` 换成 `apt-cache showsrc` 里与当前内核一致的那一行)**
```bash
mkdir -p /path/to/chromebox_10th_audio_driver/kernel-src && cd /path/to/chromebox_10th_audio_driver/kernel-src
apt source linux-hwe-6.17=6.17.0-19.19~24.04.2
```
解压得到目录类似:`linux-hwe-6.17-6.17.0/`,以及 `.dsc` / `.orig.tar.gz` / `.diff.gz`(大文件已被 `.gitignore` 忽略,不提交仓库;见 `kernel-src/README.md`)。
**编译 generic 包(需足够磁盘与依赖)**
```bash
sudo apt build-dep linux-hwe-6.17
cd /path/to/chromebox_10th_audio_driver/kernel-src/linux-hwe-6.17-6.17.0
export CONCURRENCY_LEVEL="$(nproc)"
fakeroot debian/rules clean
fakeroot debian/rules binary-generic
```
**仓库内辅助脚本**`scripts/ubuntu-hwe-617-build.sh``scripts/ubuntu-hwe-617-deps-packages.txt`**README** 中有入口。
---
## 四、换机后建议最短路径
1. 克隆本仓库 `chromebox_10th_audio_driver`
2. 按需在本仓库 **`kernel-src/`** 下重新拉取 **Ubuntu 源码**(用新机器上的 `uname -r` / `dpkg -s` / `apt-cache showsrc` 核对版本号;**24.04** 上可直接 `apt build-dep linux-hwe-6.17`)。
3. 按需重新克隆 **ChromiumOS kernel** 分支(或从旧机拷贝 `chromiumos_kernel/` 目录)。
4. 阅读:`docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md``docs/INDEX.md``audio_topology/REPAIR_Plan_Audio.md``audio_topology/ANALYSIS_Audio.md`
---
## 五、文档索引
| 文档 | 说明 |
|------|------|
| `docs/INDEX.md` | 全文档索引 |
| `docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md` | Linux HDMI 分阶段路线图 |
| `audio_topology/REPAIR_Plan_Audio.md` | Linux / Windows 修复总览 |
| `audio_topology/ANALYSIS_Audio.md` | 三平台对比与 dmesg 要点 |
| `audio_topology/OPERATION_Force_Intel_Signed_Firmware.md` | Linux SOF 固件与回退 |
| `docs/windows/OPERATION_Windows_Audio.md` | Windows CoolStar / ALC5682 |
| `README.md`(仓库根) | 任务列表与参考链接 |
| `docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md` | Kaisa`dynamic_debug` + `sof_debug=0x800`、采集 dmesg |
| `docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md` | 固件/tplg 与基线核对 |
| `docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md` | 上游 issue/邮件复现包与模板 |
---
---
## 六、ChromeOS 对照计划执行状态(本仓库快照)
- **预检脚本**(两棵树齐全后自动跑 diff + export[`scripts/preflight-chromeos-ubuntu-diff.sh`](../../scripts/preflight-chromeos-ubuntu-diff.sh)。
- **常见阻塞**:未克隆 `chromiumos_kernel/v5.15/`;或仅有部分 `kernel-src/linux-hwe-6.17-6.17.0/`(缺 `debian/` 则无法 `binary-generic`,需在本机 `apt source linux-hwe-6.17=…` 拉完整源码包)。
- **新补丁0002**`STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md` 已说明 `ipc3-pcm` hw_params 与 Chrome 语义一致,**不宜**无依据新增大块补丁;优先 **trace / 上游复现** 后再写最小 hunk。
---
*本文档随工作机迁移更新;不修改 `.cursor/plans/` 下的计划文件。*

View File

@@ -103,5 +103,5 @@ pnputil /enum-drivers | findstr /i "coolstar realtek intel sof"
## 六、参考
- 操作步骤安装顺序、Error 处理):[OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md)
- 三平台对比:[ANALYSIS_Audio.md](ANALYSIS_Audio.md)
- 三平台对比:[ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md)
- Chrultrabook 安装后音频:<https://docs.chrultrabook.com/docs/installing/post-install.html>

View File

@@ -2,7 +2,7 @@
针对 **Coreboot 刷机后**HDMI英特尔显示器音频正常**3.5mm / Realtek ALC5682 I2S 无声、无插拔提示** 的情况。与 Linux 问题相反,修法依赖 **CoolStar / Chrultrabook 驱动栈**,不是桌面机通用 Realtek 安装包。
分析背景见 [ANALYSIS_Audio.md](ANALYSIS_Audio.md);采集样例见 `collected/audio_topology_windows_*.txt`
分析背景见 [ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md);采集样例见 `audio_topology/collected/audio_topology_windows_*.txt`
**Hardware ID → 驱动包类型映射**(按设备管理器里的 `CSAUDIO\...` / `ACPI\10EC5682\...` / `HDAUDIO\...VEN_8086&DEV_280B...` 等对号入座):见 [HARDWARE_ID_DRIVER_MAP_Windows.md](HARDWARE_ID_DRIVER_MAP_Windows.md)。
@@ -90,4 +90,4 @@
- <https://docs.chrultrabook.com/docs/installing/post-install.html>
- <https://forum.chrultrabook.com/>
- <https://coolstar.org/chromebook/windows-install.html>
- 对比分析:[ANALYSIS_Audio.md](ANALYSIS_Audio.md)
- 对比分析:[ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md)

View File

@@ -12,7 +12,7 @@ mv ~/kernel-src/linux-hwe-6.17-6.17.0 kernel-src/
`linux-hwe-6.17-6.17.0/`
**Ubuntu 24.04 (Noble)** 上推荐在本目录下拉源码(与 `docs/WORK_PROGRESS.md` 一致):
**Ubuntu 24.04 (Noble)** 上推荐在本目录下拉源码(与 `docs/meta/WORK_PROGRESS.md` 一致):
```bash
cd /path/to/chromebox_10th_audio_driver/kernel-src
@@ -36,8 +36,8 @@ export SRC="$PWD/linux-hwe-6.17-6.17.0"
../scripts/ubuntu-hwe-617-build.sh build
```
补丁设计与 ChromeOS 深度 diff 流程见 `../docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md``../patches/ubuntu-hwe-6.17/README.md`
补丁设计与 ChromeOS 深度 diff 流程见 `../docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md``../patches/ubuntu-hwe-6.17/README.md`
编译成功后deb 通常在本目录(`kernel-src/`)。**在目标机上安装与重启**的完整说明见:[docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](../docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)(含 `linux-base` 依赖、`linux-image-unsigned` 与 Secure Boot、可选 headers/DKMS
编译成功后deb 通常在本目录(`kernel-src/`)。**在目标机上安装与重启**的完整说明见:[docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](../docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)(含 `linux-base` 依赖、`linux-image-unsigned` 与 Secure Boot、可选 headers/DKMS
根目录 `.gitignore` 已忽略 `linux-hwe-6.17-*``*.orig.tar.*` 等,换机后请在本目录重新 `apt source`

View File

@@ -16,13 +16,14 @@ API 备忘(阅读 ChromeOS 树时仍有用)
新补丁设计策略
==============
1. 拉长 ChromeOS 内核历史chromiumos_kernel/v5.15 若曾为浅克隆,需 git fetch --unshallow见 docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md
1. 拉长 ChromeOS 内核历史chromiumos_kernel/v5.15 若曾为浅克隆,需 git fetch --unshallow见 docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md
2. 优先对照与 STREAM_PCM_PARAMS / hw_params 相关的文件(相对 6.17 源码树):
- sound/soc/sof/ipc3.c
- sound/soc/sof/pcm.c
- sound/soc/sof/intel/hda-dai.c
3. 全目录差异规模与优先文件列表docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md一键统计scripts/diff-chromeos-ubuntu-sound.sh
3. 全目录差异规模与优先文件列表docs/meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md一键统计scripts/diff-chromeos-ubuntu-sound.sh
4. 导出三文件 unified diffscripts/export-chromeos-ubuntu-sound-file-diffs.sh输出默认在 reference/,已 gitignore
5. 两棵树预检并一键跑 3+4scripts/preflight-chromeos-ubuntu-diff.sh
Smoke-test对象文件级待新补丁目标文件确定后把路径换成实际改动文件
====================================================================
@@ -52,4 +53,4 @@ STREAM_PCM_PARAMS 专项Chrome 5.15 vs 6.17
- 详细对照与可移植假设:同目录 STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md
- 摘要ipc3-pcm.c 的 hw_params 载荷填充与 5.15 语义一致hda-pcm.c 有 dspless/format_val 分支差异;
hda-dai.c 整文件架构差异大,不宜无依据移植。
- 本阶段未新增 0002见 docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md。
- 本阶段未新增 0002见 docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md。

View File

@@ -15,4 +15,4 @@
4. 编译见 [`kernel-src/README.md`](../../kernel-src/README.md) 与 [`scripts/ubuntu-hwe-617-build.sh`](../../scripts/ubuntu-hwe-617-build.sh)。
设计补丁前请先完成 ChromeOS 5.15 与 6.17 的对照流程,见 [`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../../docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md) 与 [`DIFF_SUMMARY.txt`](DIFF_SUMMARY.txt)。**`STREAM_PCM_PARAMS` / HDMI** 专项结论见 [`STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`](STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md)。
设计补丁前请先完成 ChromeOS 5.15 与 6.17 的对照流程,见 [`docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../../docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md) 与 [`DIFF_SUMMARY.txt`](DIFF_SUMMARY.txt)。**`STREAM_PCM_PARAMS` / HDMI** 专项结论见 [`STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`](STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md)。

View File

@@ -42,4 +42,4 @@
## 4. 与仓库补丁的关系
- **0001**`ipc3-pcm.c` FREE/trigger 等):**不改变** `STREAM_PCM_PARAMS` 发送路径;与本文第 1 节一致。
- **0002**:本阶段 **未新增** 内核补丁;理由见 `docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md`(无单一明确 hunk优先观测与上游复现
- **0002**:本阶段 **未新增** 内核补丁;理由见 `docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md`(无单一明确 hunk优先观测与上游复现

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Kaisa辅助开启 SOF IPC 观测并采集 dmesg需在真机以 root 运行)
# 详见 docs/OPERATION_Kaisa_SOF_HDMI_Trace.md
# 详见 docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md
set -euo pipefail

View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
# 0001 或用户态基线之后仍无声时:深度 diff / 上游复现 的入口(对应计划 todo「if-still-broken」
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
CH="${CH:-$REPO_ROOT/chromiumos_kernel/v5.15}"
echo "=== 文档(按顺序)==="
echo " $REPO_ROOT/docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md"
echo " $REPO_ROOT/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md"
echo " $REPO_ROOT/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt"
echo " $REPO_ROOT/docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md"
echo ""
echo "=== 导出 ChromeOS vs 6.17 关键文件 diff需两棵完整树==="
if [[ -d "$CH/sound/soc" ]]; then
"$REPO_ROOT/scripts/export-chromeos-ubuntu-sound-file-diffs.sh" || true
else
echo "跳过: 未找到 ChromiumOS 5.15 树 CH=$CH"
echo "克隆说明见: $REPO_ROOT/docs/meta/WORK_PROGRESS.md"
fi
echo ""
UB="$REPO_ROOT/kernel-src/linux-hwe-6.17-6.17.0"
echo "=== 音频子树差异统计(需 CH + $UB/sound/soc==="
if [[ ! -d "$UB/sound/soc" ]]; then
echo "跳过: Ubuntu 树无 sound/soc请准备 kernel-src"
elif [[ ! -d "$CH/sound/soc" ]]; then
echo "跳过: 无 ChromiumOS 树 $CH/sound/soc见 WORK_PROGRESS.md"
else
CH="$CH" UB="$UB" "$REPO_ROOT/scripts/diff-chromeos-ubuntu-sound.sh"
fi

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# 预检 ChromiumOS 5.15 与 Ubuntu HWE 6.17 两棵树是否存在,存在则运行 diff + export。
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
CH="${CH:-$REPO_ROOT/chromiumos_kernel/v5.15}"
UB="${UB:-$REPO_ROOT/kernel-src/linux-hwe-6.17-6.17.0}"
ok=1
if [[ ! -d "$CH/sound/soc" ]]; then
echo "缺少 ChromiumOS 树: $CH/sound/soc — 见 docs/meta/WORK_PROGRESS.md 第二节"
ok=0
fi
if [[ ! -d "$UB/sound/soc" ]]; then
echo "缺少 Ubuntu 源码树: $UB/sound/soc — 见 kernel-src/README.md"
ok=0
fi
if [[ "$ok" -ne 1 ]]; then
echo "预检失败。补全后重跑: $0"
exit 1
fi
CH="$CH" UB="$UB" "$REPO_ROOT/scripts/diff-chromeos-ubuntu-sound.sh"
CH="$CH" UB="$UB" "$REPO_ROOT/scripts/export-chromeos-ubuntu-sound-file-diffs.sh"
echo "OK."

View File

@@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Dry-run 验证 patches/ubuntu-hwe-6.17/0001 能否打在 HWE 6.17 源码树上(无需完整 debian/)。
# 完整 deb 构建仍须按 kernel-src/README.md apt source 后使用 ubuntu-hwe-617-build.sh。
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
SRC="${SRC:-$REPO_ROOT/kernel-src/linux-hwe-6.17-6.17.0}"
PATCH="${PATCH:-$REPO_ROOT/patches/ubuntu-hwe-6.17/0001-ASoC-SOF-ipc3-pcm-await-DSP-reply-for-FREE-and-trigger.patch}"
if [[ ! -f "$SRC/sound/soc/sof/ipc3-pcm.c" ]]; then
echo "ERROR: 未找到 $SRC/sound/soc/sof/ipc3-pcm.c请设置 SRC= 或按 kernel-src/README.md 准备源码树)" >&2
exit 1
fi
if [[ ! -f "$PATCH" ]]; then
echo "ERROR: 补丁不存在: $PATCH" >&2
exit 1
fi
echo "SRC=$SRC"
echo "PATCH=$PATCH"
if [[ -f "$SRC/debian/rules" ]]; then
echo "OK: 检测到 debian/rules可进行 fakeroot debian/rules binary-generic"
else
echo "注意: 当前树无 debian/(常见于仅检出部分内核目录);补丁校验仍可进行,完整包需 apt source linux-hwe-6.17"
fi
cd "$SRC"
set +e
out="$(patch -p1 --dry-run --forward < "$PATCH" 2>&1)"
st=$?
set -e
if [[ "$st" -eq 0 ]]; then
echo "OK: patch --dry-run 通过(干净树可执行 ubuntu-hwe-617-build.sh apply"
elif echo "$out" | grep -qiE 'previously applied|Reversed \(or previously applied\) patch detected'; then
echo "OK: 当前 ipc3-pcm.c 已包含该补丁内容(无需重复 apply"
else
echo "$out" >&2
echo "ERROR: dry-run 失败,请核对内核版本是否与补丁目标一致" >&2
exit 1
fi