diff --git a/README.md b/README.md index 4bef681979..8088c901f7 100644 --- a/README.md +++ b/README.md @@ -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 | 有 | 无 | 无 | +**目标平台**:Chromebox(10 代 Intel,Google **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、codec):C1a Linux / C1b Windows 采集已完成;C1c 原生 ChromeOS 待补 | +| C2 | Coreboot 与原生 ChromeOS 固件音频差异(记录) | +| C3 | 分平台文档: [REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md) 与各 OPERATION | +| C4 | 已验证机型与固件版本(待补充) | -### 二、Linux 相关 +### Linux(L1–L4 对应 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 驱动 / 插孔检测相关) +| 任务 | 说明 | +| ---- | ---- | +| W1–W4 | 3.5mm / CoolStar / ALC5682、插拔提示等: [docs/windows/OPERATION_Windows_Audio.md](docs/windows/OPERATION_Windows_Audio.md) | --- -## 参考信息 +## 参考速链 -- 目标平台:Chromebox(10 代 Intel,Coreboot 刷机后) -- 目标系统: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 内核深度 diff(unshallow、`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) diff --git a/audio_topology/ANALYSIS_Audio.md b/audio_topology/ANALYSIS_Audio.md index 1d8ff6b57e..f571f6a4d9 100644 --- a/audio_topology/ANALYSIS_Audio.md +++ b/audio_topology/ANALYSIS_Audio.md @@ -163,7 +163,7 @@ Ubuntu 22.04 LTS 默认使用 5.15 内核,与 ChromeOS 一致。可借助 Live - (如 `ubuntu-22.04.1-desktop-amd64.iso`) - (如 `ubuntu-22.04.2-desktop-amd64.iso`) - 索引: - - **不必执着 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 可能已带 HWE(6.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 已连接 | | 问题表现 | HDMI:pcm3/4 -5 错误;3.5mm 正常 | 均正常 | HDMI 正常;3.5mm 无声、无插入提示 | -| 下一步 | 确认 pcm 与物理端口对应,复测 HDMI;若「原来有声现在无声」见第八节 | — | [OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md);README W1–W4 | +| 下一步 | 确认 pcm 与物理端口对应,复测 HDMI;若「原来有声现在无声」见第八节 | — | [OPERATION_Windows_Audio.md](../docs/windows/OPERATION_Windows_Audio.md);README W1–W4 | --- diff --git a/audio_topology/README.md b/audio_topology/COLLECT.md similarity index 84% rename from audio_topology/README.md rename to audio_topology/COLLECT.md index 4f110a2064..8028ca1f6c 100644 --- a/audio_topology/README.md +++ b/audio_topology/COLLECT.md @@ -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) 内「文档索引」表。 diff --git a/audio_topology/REPAIR_Plan_Audio.md b/audio_topology/REPAIR_Plan_Audio.md index 7f64d7ac07..53819fe59c 100644 --- a/audio_topology/REPAIR_Plan_Audio.md +++ b/audio_topology/REPAIR_Plan_Audio.md @@ -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:卡号,设备号` 逐个试 HDMI(pcm2/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 上游所需材料与邮件模板 | diff --git a/audio_topology/collect_linux_audio_topology.sh b/audio_topology/collect_linux_audio_topology.sh index b2f78b3c20..e8cb67d6ca 100755 --- a/audio_topology/collect_linux_audio_topology.sh +++ b/audio_topology/collect_linux_audio_topology.sh @@ -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 diff --git a/audio_topology/collected/README_TRACE_KAISA.md b/audio_topology/collected/README_TRACE_KAISA.md index 17a85ca433..36f6038e7e 100644 --- a/audio_topology/collected/README_TRACE_KAISA.md +++ b/audio_topology/collected/README_TRACE_KAISA.md @@ -17,4 +17,4 @@ dmesg_sof_TRACE_STREAM_PCM_PARAMS_jack-Kaisa__.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)。 diff --git a/audio_topology/collected/audio_topology_linux_jack-Kaisa_20260404_174115.txt b/audio_topology/collected/audio_topology_linux_jack-Kaisa_20260404_174115.txt new file mode 100644 index 0000000000..dde529673f --- /dev/null +++ b/audio_topology/collected/audio_topology_linux_jack-Kaisa_20260404_174115.txt @@ -0,0 +1,1090 @@ +# Chromebox 10 代 - Linux 音频硬件拓扑 +# 收集时间: 2026-04-04T17:41:15+08:00 +# 主机: jack-Kaisa + + +======================================== +### 系统信息 +======================================== + +# uname -a +``` +Linux jack-Kaisa 6.14.0-27-generic #27~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 17:38:49 UTC 2 x86_64 x86_64 x86_64 GNU/Linux +``` + +# 内核版本 +``` +6.14.0-27-generic +``` + +# /proc/version +``` +Linux version 6.14.0-27-generic (buildd@lcy02-amd64-120) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #27~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 17:38:49 UTC 2 +``` + +# ALSA 版本 +``` +alsactl version 1.2.9 +``` + + +======================================== +### PCI 音频相关设备 +======================================== + +# lspci -nn | grep -i audio (含设备 ID,便于查驱动/quirks) +``` +00:1f.3 Multimedia audio controller [0401]: Intel Corporation Comet Lake PCH-LP cAVS [8086:02c8] +``` + +# lspci | grep -i audio +``` +00:1f.3 Multimedia audio controller: Intel Corporation Comet Lake PCH-LP cAVS +``` + +# lspci -v | grep -A 15 -i audio +``` +00:1f.3 Multimedia audio controller: Intel Corporation Comet Lake PCH-LP cAVS + DeviceName: Multimedia audio controller + Subsystem: Intel Corporation Comet Lake PCH-LP cAVS + Flags: bus master, fast devsel, latency 64, IRQ 156, IOMMU group 13 + Memory at cece0000 (64-bit, non-prefetchable) [size=16K] + Memory at ced00000 (64-bit, non-prefetchable) [size=1M] + Capabilities: + Kernel driver in use: sof-audio-pci-intel-cnl + Kernel modules: snd_hda_intel, snd_soc_avs, snd_sof_pci_intel_cnl + +00:1f.4 SMBus: Intel Corporation Comet Lake PCH-LP SMBus Host Controller + Subsystem: Intel Corporation Comet Lake PCH-LP SMBus Host Controller + Flags: medium devsel, IRQ 22, IOMMU group 13 + Memory at cecd2000 (64-bit, non-prefetchable) [size=256] + I/O ports at efa0 [size=32] + Kernel driver in use: i801_smbus + Kernel modules: i2c_i801 + +00:1f.5 Serial bus controller: Intel Corporation Comet Lake SPI (flash) Controller + Subsystem: Intel Corporation Comet Lake SPI (flash) Controller + Flags: bus master, fast devsel, latency 0, IOMMU group 13 + Memory at fe010000 (32-bit, non-prefetchable) [size=4K] + Kernel driver in use: intel-spi +``` + + +======================================== +### ALSA 设备列表 +======================================== + +# aplay -l (播放设备) +``` +**** PLAYBACK 硬體裝置清單 **** +card 0: sofrt5682 [sof-rt5682], device 0: Port1 (*) [] + 子设备: 1/1 + 子设备 #0: subdevice #0 +card 0: sofrt5682 [sof-rt5682], device 2: HDMI1 (*) [] + 子设备: 1/1 + 子设备 #0: subdevice #0 +card 0: sofrt5682 [sof-rt5682], device 3: HDMI2 (*) [] + 子设备: 1/1 + 子设备 #0: subdevice #0 +card 0: sofrt5682 [sof-rt5682], device 4: HDMI3 (*) [] + 子设备: 1/1 + 子设备 #0: subdevice #0 +``` + +# aplay -L (ALSA 设备描述) +``` +null + Discard all samples (playback) or generate zero samples (capture) +pipewire + PipeWire Sound Server +default + Default ALSA Output (currently PipeWire Media Server) +hw:CARD=sofrt5682,DEV=0 + sof-rt5682, + Direct hardware device without any conversions +hw:CARD=sofrt5682,DEV=2 + sof-rt5682, + Direct hardware device without any conversions +hw:CARD=sofrt5682,DEV=3 + sof-rt5682, + Direct hardware device without any conversions +hw:CARD=sofrt5682,DEV=4 + sof-rt5682, + Direct hardware device without any conversions +plughw:CARD=sofrt5682,DEV=0 + sof-rt5682, + Hardware device with all software conversions +plughw:CARD=sofrt5682,DEV=2 + sof-rt5682, + Hardware device with all software conversions +plughw:CARD=sofrt5682,DEV=3 + sof-rt5682, + Hardware device with all software conversions +plughw:CARD=sofrt5682,DEV=4 + sof-rt5682, + Hardware device with all software conversions +sysdefault:CARD=sofrt5682 + sof-rt5682, + Default Audio Device +dmix:CARD=sofrt5682,DEV=0 + sof-rt5682, + Direct sample mixing device +dmix:CARD=sofrt5682,DEV=2 + sof-rt5682, + Direct sample mixing device +dmix:CARD=sofrt5682,DEV=3 + sof-rt5682, + Direct sample mixing device +dmix:CARD=sofrt5682,DEV=4 + sof-rt5682, + Direct sample mixing device +``` + +# arecord -l (录音设备) +``` +**** CAPTURE 硬體裝置清單 **** +card 0: sofrt5682 [sof-rt5682], device 0: Port1 (*) [] + 子设备: 1/1 + 子设备 #0: subdevice #0 +card 0: sofrt5682 [sof-rt5682], device 1: DMIC (*) [] + 子设备: 1/1 + 子设备 #0: subdevice #0 +card 0: sofrt5682 [sof-rt5682], device 8: DMIC16kHz (*) [] + 子设备: 1/1 + 子设备 #0: subdevice #0 +``` + +# cat /proc/asound/cards +``` + 0 [sofrt5682 ]: sof-rt5682 - sof-rt5682 + Google-Kaisa-rev4 +``` + +# cat /proc/asound/pcm (PCM 设备明细) +``` +00-00: Port1 (*) : : playback 1 : capture 1 +00-01: DMIC (*) : : capture 1 +00-02: HDMI1 (*) : : playback 1 +00-03: HDMI2 (*) : : playback 1 +00-04: HDMI3 (*) : : playback 1 +00-08: DMIC16kHz (*) : : capture 1 +``` + + +======================================== +### /proc/asound 目录结构 +======================================== + +# ls -la /proc/asound +``` +总计 0 +dr-xr-xr-x 13 root root 0 2月 13 09:00 . +dr-xr-xr-x 400 root root 0 2月 13 09:00 .. +dr-xr-xr-x 20 root root 0 2月 13 09:00 card0 +-r--r--r-- 1 root root 0 4月 4 17:34 cards +-r--r--r-- 1 root root 0 4月 4 17:41 devices +-r--r--r-- 1 root root 0 4月 4 17:41 hwdep +-r--r--r-- 1 root root 0 4月 4 17:41 modules +dr-xr-xr-x 4 root root 0 4月 4 17:41 oss +-r--r--r-- 1 root root 0 4月 4 17:41 pcm +dr-xr-xr-x 6 root root 0 4月 4 17:41 seq +lrwxrwxrwx 1 root root 5 4月 4 17:41 sofrt5682 -> card0 +-r--r--r-- 1 root root 0 4月 4 17:41 timers +-r--r--r-- 1 root root 0 4月 4 17:41 version +``` + +# card0 目录内容: +``` +总计 0 +dr-xr-xr-x 20 root root 0 2月 13 09:00 . +dr-xr-xr-x 13 root root 0 2月 13 09:00 .. +-r--r--r-- 1 root root 0 4月 4 17:41 codec#2 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.0 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.1 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.2 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.3 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.4 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.5 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.6 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.7 +-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.8 +-r--r--r-- 1 root root 0 4月 4 17:41 id +dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm0c +dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm0p +dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm1c +dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm2p +dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm3p +dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm4p +dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm8c +``` + +======================================== +### HDA Codec 信息 +======================================== + +# /proc/asound/card0/codec#2 +``` +Codec: Intel Kabylake HDMI +Address: 2 +AFG Function Id: 0x1 (unsol 0) +Vendor Id: 0x8086280b +Subsystem Id: 0x80860101 +Revision Id: 0x100000 +No Modem Function Group found +Default PCM: + rates [0x0]: + bits [0x0]: + formats [0x0]: +Default Amp-In caps: N/A +Default Amp-Out caps: N/A +State of AFG node 0x01: + Power states: D0 D3 CLKSTOP EPSS + Power: setting=D0, actual=D0, Clock-stop-OK +GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 +Node 0x02 [Audio Output] wcaps 0x6611: 8-Channels Digital + Converter: stream=1, channel=0 + Digital: Enabled KAE + Digital category: 0x0 + IEC Coding Type: 0x0 + PCM: + rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 + bits [0x1a]: 16 24 32 + formats [0x5]: PCM AC3 + Power states: D0 D3 EPSS + Power: setting=D0, actual=D0 +Node 0x03 [Audio Output] wcaps 0x6611: 8-Channels Digital + Converter: stream=0, channel=0 + Digital: Enabled KAE + Digital category: 0x0 + IEC Coding Type: 0x0 + PCM: + rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 + bits [0x1a]: 16 24 32 + formats [0x5]: PCM AC3 + Power states: D0 D3 EPSS + Power: setting=D3, actual=D3 +Node 0x04 [Audio Output] wcaps 0x6611: 8-Channels Digital + Converter: stream=0, channel=0 + Digital: Enabled KAE + Digital category: 0x0 + IEC Coding Type: 0x0 + PCM: + rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 + bits [0x1a]: 16 24 32 + formats [0x5]: PCM AC3 + Power states: D0 D3 EPSS + Power: setting=D3, actual=D3 +Node 0x05 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP + Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 + Amp-Out vals: [0x00 0x00] + Pincap 0x0b000094: OUT Detect HBR HDMI DP + Pin Default 0x18560010: [Jack] Digital Out at Int HDMI + Conn = Digital, Color = Unknown + DefAssociation = 0x1, Sequence = 0x0 + Pin-ctls: 0x00: + Unsolicited: tag=00, enabled=0 + Power states: D0 D3 EPSS + Power: setting=D0, actual=D0 + Devices: 0 + Connection: 0 +Node 0x06 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP + Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 + Amp-Out vals: [0x00 0x00] + Pincap 0x0b000094: OUT Detect HBR HDMI DP + Pin Default 0x18560010: [Jack] Digital Out at Int HDMI + Conn = Digital, Color = Unknown + DefAssociation = 0x1, Sequence = 0x0 + Pin-ctls: 0x40: OUT + Unsolicited: tag=00, enabled=0 + Power states: D0 D3 EPSS + Power: setting=D0, actual=D0 + Devices: 3 + *Dev 00: PD = 1, ELDV = 0, IA = 0, Connections [ 0x02* 0x03 0x04 ] + Dev 01: PD = 0, ELDV = 0, IA = 0, Connections [ 0x02* 0x03 0x04 ] + Dev 02: PD = 0, ELDV = 0, IA = 0, Connections [ 0x02* 0x03 0x04 ] + Connection: 3 + 0x02* 0x03 0x04 +Node 0x07 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP + Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 + Amp-Out vals: [0x00 0x00] + Pincap 0x0b000094: OUT Detect HBR HDMI DP + Pin Default 0x18560010: [Jack] Digital Out at Int HDMI + Conn = Digital, Color = Unknown + DefAssociation = 0x1, Sequence = 0x0 + Pin-ctls: 0x00: + Unsolicited: tag=00, enabled=0 + Power states: D0 D3 EPSS + Power: setting=D0, actual=D0 + Devices: 0 + Connection: 0 +Node 0x08 [Vendor Defined Widget] wcaps 0xf00000: Mono +``` + +======================================== +### HDMI ELD 内容 +======================================== + +# /proc/asound/card0/eld#2.0 +``` +monitor_present 0 +eld_valid 0 +codec_pin_nid 0x5 +codec_dev_id 0x0 +codec_cvt_nid 0x0 +``` +# /proc/asound/card0/eld#2.1 +``` +monitor_present 0 +eld_valid 0 +codec_pin_nid 0x5 +codec_dev_id 0x1 +codec_cvt_nid 0x0 +``` +# /proc/asound/card0/eld#2.2 +``` +monitor_present 0 +eld_valid 0 +codec_pin_nid 0x5 +codec_dev_id 0x2 +codec_cvt_nid 0x0 +``` +# /proc/asound/card0/eld#2.3 +``` +monitor_present 1 +eld_valid 1 +codec_pin_nid 0x6 +codec_dev_id 0x0 +codec_cvt_nid 0x2 +monitor_name ASUS MG279 +connection_type DisplayPort +eld_version [0x2] CEA-861D or below +edid_version [0x3] CEA-861-B, C or D +manufacture_id 0x6904 +product_id 0x27a7 +port_id 0x0 +support_hdcp 0 +support_ai 0 +audio_sync_delay 0 +speakers [0x1] FL/FR +sad_count 1 +sad0_coding_type [0x1] LPCM +sad0_channels 2 +sad0_rates [0x4e0] 32000 44100 48000 96000 +sad0_bits [0xe0000] 16 20 24 +``` +# /proc/asound/card0/eld#2.4 +``` +monitor_present 0 +eld_valid 0 +codec_pin_nid 0x6 +codec_dev_id 0x1 +codec_cvt_nid 0x0 +``` +# /proc/asound/card0/eld#2.5 +``` +monitor_present 0 +eld_valid 0 +codec_pin_nid 0x6 +codec_dev_id 0x2 +codec_cvt_nid 0x0 +``` +# /proc/asound/card0/eld#2.6 +``` +monitor_present 0 +eld_valid 0 +codec_pin_nid 0x7 +codec_dev_id 0x0 +codec_cvt_nid 0x0 +``` +# /proc/asound/card0/eld#2.7 +``` +monitor_present 0 +eld_valid 0 +codec_pin_nid 0x7 +codec_dev_id 0x1 +codec_cvt_nid 0x0 +``` +# /proc/asound/card0/eld#2.8 +``` +monitor_present 0 +eld_valid 0 +codec_pin_nid 0x7 +codec_dev_id 0x2 +codec_cvt_nid 0x0 +``` + +======================================== +### /sys/class/sound 设备 +======================================== + +# ls -la /sys/class/sound +``` +总计 0 +drwxr-xr-x 2 root root 0 4月 4 17:41 . +drwxr-xr-x 87 root root 0 2月 13 09:00 .. +lrwxrwxrwx 1 root root 0 2月 13 09:00 card0 -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0 +lrwxrwxrwx 1 root root 0 2月 13 09:00 controlC0 -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/controlC0 +lrwxrwxrwx 1 root root 0 2月 13 09:00 ctl-led -> ../../devices/virtual/sound/ctl-led +lrwxrwxrwx 1 root root 0 2月 13 09:00 hwC0D2 -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/hwC0D2 +lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D0c -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D0c +lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D0p -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D0p +lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D1c -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D1c +lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D2p -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D2p +lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D3p -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D3p +lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D4p -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D4p +lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D8c -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D8c +lrwxrwxrwx 1 root root 0 2月 13 09:00 seq -> ../../devices/virtual/sound/seq +lrwxrwxrwx 1 root root 0 2月 13 09:00 timer -> ../../devices/virtual/sound/timer +``` + +# card0 设备属性: +``` +id: sofrt5682 +number: 0 +``` + +======================================== +### 内核日志 (dmesg) 音频相关 +======================================== + +# dmesg | grep -iE 'snd|hda|audio|codec|hdmi' +# 提示: 若此处显示「需要 root」,请用 sudo 重新运行本脚本以获取完整日志 +``` +(需要 root 或 dmesg 不可用) +``` + + +======================================== +### SOF / HDMI / IPC 基线 (dmesg) +======================================== + +# dmesg | grep -iE 'sof|STREAM_PCM|ipc failed|ipc tx|pcm[0-9]|ASoC|iDisp|hdmi' | tail -120 +# 用于对照 STREAM_PCM_PARAMS / ipc tx error 等;建议 sudo 运行本脚本以读全量 dmesg +``` +``` + + +======================================== +### HDMI 试听命令提示(人工执行) +======================================== + +# 在 aplay -L 中查找 HDMI / DisplayPort 设备后,对每个候选 plughw 试播(Ctrl+C 结束): +# speaker-test -D plughw:卡号,设备号 -c 2 -l 1 +# 若 dmesg 已出现 STREAM_PCM_PARAMS / ipc tx error,用户态换 sink 通常无法单独修复。 + + +======================================== +### journalctl 内核日志 (SOF/音频,可选补充) +======================================== + +# journalctl -b -k --no-pager | grep -iE 'sof|snd|hda|audio|hdmi' | tail -80 +``` +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1 +2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5 +2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5 +``` + +======================================== +### ACPI NHLT 表 +======================================== + +# ls /sys/firmware/acpi/tables/ | grep -i nhlt +``` +(未找到 NHLT 表,Coreboot 下常见) +``` + +======================================== +### sof-logger (可选) +======================================== + +(sof-logger 未安装,可从 thesofproject/sof-bin 或发行版 firmware-sof 相关包安装) + +======================================== +### 音频服务 (PulseAudio / PipeWire) +======================================== + +# 提示: sudo 下会以原用户身份调用 pactl/pw-cli,需设置 XDG_RUNTIME_DIR 以连接用户会话 +# pw-cli list-objects Device +``` + id 42, type PipeWire:Interface:Device/3 + object.serial = "42" + factory.id = "14" + client.id = "35" + device.api = "alsa" + device.description = "Comet Lake PCH-LP cAVS" + device.name = "alsa_card.pci-0000_00_1f.3-platform-cml_rt5682_def" + device.nick = "sof-rt5682" + media.class = "Audio/Device" +``` + +# wpctl status (WirePlumber) +``` +PipeWire 'pipewire-0' [1.0.5, jack@jack-Kaisa, cookie:294410970] + └─ Clients: + 32. pipewire [1.0.5, jack@jack-Kaisa, pid:1903] + 34. WirePlumber [1.0.5, jack@jack-Kaisa, pid:1902] + 35. WirePlumber [export] [1.0.5, jack@jack-Kaisa, pid:1902] + 50. gnome-shell [1.0.5, jack@jack-Kaisa, pid:2078] + 51. GNOME Shell Volume Control [1.0.5, jack@jack-Kaisa, pid:2078] + 52. GNOME Volume Control Media Keys [1.0.5, jack@jack-Kaisa, pid:2441] + 53. xdg-desktop-portal [1.0.5, jack@jack-Kaisa, pid:2829] + 54. Mutter [1.0.5, jack@jack-Kaisa, pid:2078] + 55. Firefox [1.0.5, jack@jack-Kaisa, pid:10124] + 57. cursor [1.0.5, jack@jack-Kaisa, pid:13578] + 58. wpctl [1.0.5, jack@jack-Kaisa, pid:19310] + 59. Firefox [1.0.5, jack@jack-Kaisa, pid:10124] + 61. speech-dispatcher-dummy [1.0.5, jack@jack-Kaisa, pid:5714] + +Audio + ├─ Devices: + │ 42. Comet Lake PCH-LP cAVS [alsa] + │ + ├─ Sinks: + │ * 47. Comet Lake PCH-LP cAVS Stereo [vol: 0.40] + │ + ├─ Sink endpoints: + │ + ├─ Sources: + │ 48. Comet Lake PCH-LP cAVS Stereo [vol: 1.00] + │ + ├─ Source endpoints: + │ + └─ Streams: + 62. speech-dispatcher-dummy + 65. output_FR > Stereo:playback_FR [init] + 66. output_FL > Stereo:playback_FL [init] + +Video + ├─ Devices: + │ + ├─ Sinks: + │ + ├─ Sink endpoints: + │ + ├─ Sources: + │ + ├─ Source endpoints: + │ + └─ Streams: + +Settings + └─ Default Configured Node Names: +``` + + +======================================== +### 音频相关内核模块 +======================================== + +# lsmod | grep -iE 'snd|hda|sound' +``` +snd_seq_dummy 12288 0 +snd_hrtimer 12288 1 +snd_ctl_led 24576 0 +snd_soc_sof_rt5682 24576 1 +snd_soc_rt5682s 102400 1 snd_soc_sof_rt5682 +snd_soc_intel_sof_realtek_common 28672 1 snd_soc_sof_rt5682 +snd_soc_intel_sof_board_helpers 28672 1 snd_soc_sof_rt5682 +snd_soc_intel_hda_dsp_common 16384 1 snd_soc_intel_sof_board_helpers +snd_soc_intel_sof_maxim_common 24576 1 snd_soc_sof_rt5682 +snd_soc_rt5645 184320 1 snd_soc_sof_rt5682 +snd_sof_probes 20480 0 +snd_soc_dmic 12288 1 +snd_sof_pci_intel_cnl 20480 0 +snd_sof_intel_hda_generic 36864 1 snd_sof_pci_intel_cnl +soundwire_intel 77824 1 snd_sof_intel_hda_generic +soundwire_cadence 45056 1 soundwire_intel +snd_sof_intel_hda_common 188416 2 snd_sof_intel_hda_generic,snd_sof_pci_intel_cnl +snd_soc_hdac_hda 24576 1 snd_sof_intel_hda_common +snd_sof_intel_hda_mlink 45056 3 soundwire_intel,snd_sof_intel_hda_common,snd_sof_intel_hda_generic +snd_sof_intel_hda 24576 2 snd_sof_intel_hda_common,snd_sof_intel_hda_generic +snd_hda_codec_hdmi 98304 1 +snd_sof_pci 24576 2 snd_sof_intel_hda_generic,snd_sof_pci_intel_cnl +snd_sof_xtensa_dsp 12288 1 snd_sof_intel_hda_generic +snd_sof 393216 9 snd_soc_sof_rt5682,snd_sof_pci,snd_sof_intel_hda_common,snd_soc_intel_sof_realtek_common,snd_sof_intel_hda_generic,snd_soc_intel_sof_maxim_common,snd_sof_probes,snd_sof_intel_hda,snd_sof_pci_intel_cnl +snd_sof_utils 16384 1 snd_sof +snd_soc_acpi_intel_match 131072 3 snd_soc_intel_sof_board_helpers,snd_sof_intel_hda_generic,snd_sof_pci_intel_cnl +snd_soc_acpi_intel_sdca_quirks 12288 1 snd_soc_acpi_intel_match +soundwire_generic_allocation 24576 1 soundwire_intel +snd_soc_acpi 16384 2 snd_soc_acpi_intel_match,snd_sof_intel_hda_generic +soundwire_bus 126976 3 soundwire_intel,soundwire_generic_allocation,soundwire_cadence +snd_soc_sdca 12288 2 snd_soc_acpi_intel_sdca_quirks,soundwire_bus +snd_soc_avs 200704 0 +snd_soc_hda_codec 24576 1 snd_soc_avs +snd_hda_ext_core 32768 6 snd_soc_avs,snd_soc_hda_codec,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda_mlink,snd_sof_intel_hda +snd_soc_rt5682_i2c 16384 1 +snd_hda_intel 61440 0 +snd_soc_rt5682 98304 2 snd_soc_sof_rt5682,snd_soc_rt5682_i2c +snd_intel_dspcfg 45056 5 snd_soc_avs,snd_hda_intel,snd_sof,snd_sof_intel_hda_common,snd_sof_intel_hda_generic +snd_soc_rl6231 16384 2 snd_soc_rt5682,snd_soc_rt5645 +snd_intel_sdw_acpi 16384 2 snd_intel_dspcfg,snd_sof_intel_hda_generic +snd_soc_core 425984 16 snd_soc_avs,snd_soc_hda_codec,snd_soc_sof_rt5682,snd_soc_rt5682,soundwire_intel,snd_sof,snd_soc_intel_sof_board_helpers,snd_sof_intel_hda_common,snd_soc_intel_sof_realtek_common,snd_soc_hdac_hda,snd_soc_intel_sof_maxim_common,snd_soc_rt5645,snd_sof_probes,snd_soc_dmic,snd_soc_rt5682s,snd_soc_rt5682_i2c +snd_hda_codec 204800 7 snd_soc_avs,snd_hda_codec_hdmi,snd_soc_hda_codec,snd_hda_intel,snd_soc_intel_hda_dsp_common,snd_soc_hdac_hda,snd_sof_intel_hda +snd_compress 36864 3 snd_soc_avs,snd_soc_core,snd_sof_probes +snd_hda_core 147456 10 snd_soc_avs,snd_hda_codec_hdmi,snd_soc_hda_codec,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_soc_intel_hda_dsp_common,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda +ac97_bus 12288 1 snd_soc_core +snd_hwdep 20480 1 snd_hda_codec +snd_pcm_dmaengine 16384 1 snd_soc_core +snd_pcm 192512 19 snd_soc_avs,snd_hda_codec_hdmi,snd_hda_intel,snd_soc_sof_rt5682,snd_soc_rt5682,snd_hda_codec,soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_compress,snd_soc_intel_sof_realtek_common,snd_sof_intel_hda_generic,snd_soc_core,snd_sof_utils,snd_soc_intel_sof_maxim_common,snd_soc_rt5645,snd_hda_core,snd_soc_rt5682s,snd_pcm_dmaengine +snd_seq_midi 24576 0 +snd_seq_midi_event 16384 1 snd_seq_midi +snd_rawmidi 57344 1 snd_seq_midi +snd_seq 122880 9 snd_seq_midi,snd_seq_midi_event,snd_seq_dummy +snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi +snd_timer 53248 3 snd_seq,snd_hrtimer,snd_pcm +snd 143360 18 snd_ctl_led,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_soc_sof_rt5682,snd_hda_codec,snd_sof,snd_timer,snd_compress,snd_soc_core,snd_pcm,snd_rawmidi +soundcore 16384 2 snd_ctl_led,snd +``` + + +======================================== +### ALSA 混音器状态 +======================================== + +# amixer -c 0 contents (或 -c default) +``` +numid=10,iface=CARD,name='HDMI/DP,pcm=2 Jack' + ; type=BOOLEAN,access=r-------,values=1 + : values=on +numid=16,iface=CARD,name='HDMI/DP,pcm=3 Jack' + ; type=BOOLEAN,access=r-------,values=1 + : values=off +numid=22,iface=CARD,name='HDMI/DP,pcm=4 Jack' + ; type=BOOLEAN,access=r-------,values=1 + : values=off +numid=6,iface=CARD,name='Headphone Jack' + ; type=BOOLEAN,access=r-------,values=1 + : values=on +numid=7,iface=CARD,name='Headset Mic Jack' + ; type=BOOLEAN,access=r-------,values=1 + : values=off +numid=8,iface=MIXER,name='Headphone Jack Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=on +numid=58,iface=MIXER,name='ADCDAT Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'ADCDAT1' + ; Item #1 'ADCDAT2' + : values=0 +numid=11,iface=MIXER,name='IEC958 Playback Con Mask' + ; type=IEC958,access=r-------,values=1 + : values=[AES0=0x0f AES1=0xff AES2=0x00 AES3=0x00] +numid=17,iface=MIXER,name='IEC958 Playback Con Mask',index=1 + ; type=IEC958,access=r-------,values=1 + : values=[AES0=0x0f AES1=0xff AES2=0x00 AES3=0x00] +numid=23,iface=MIXER,name='IEC958 Playback Con Mask',index=2 + ; type=IEC958,access=r-------,values=1 + : values=[AES0=0x0f AES1=0xff AES2=0x00 AES3=0x00] +numid=12,iface=MIXER,name='IEC958 Playback Pro Mask' + ; type=IEC958,access=r-------,values=1 + : values=[AES0=0x0f AES1=0x00 AES2=0x00 AES3=0x00] +numid=18,iface=MIXER,name='IEC958 Playback Pro Mask',index=1 + ; type=IEC958,access=r-------,values=1 + : values=[AES0=0x0f AES1=0x00 AES2=0x00 AES3=0x00] +numid=24,iface=MIXER,name='IEC958 Playback Pro Mask',index=2 + ; type=IEC958,access=r-------,values=1 + : values=[AES0=0x0f AES1=0x00 AES2=0x00 AES3=0x00] +numid=13,iface=MIXER,name='IEC958 Playback Default' + ; type=IEC958,access=rw------,values=1 + : values=[AES0=0x04 AES1=0x00 AES2=0x00 AES3=0x00] +numid=19,iface=MIXER,name='IEC958 Playback Default',index=1 + ; type=IEC958,access=rw------,values=1 + : values=[AES0=0x04 AES1=0x00 AES2=0x00 AES3=0x00] +numid=25,iface=MIXER,name='IEC958 Playback Default',index=2 + ; type=IEC958,access=rw------,values=1 + : values=[AES0=0x04 AES1=0x00 AES2=0x00 AES3=0x00] +numid=14,iface=MIXER,name='IEC958 Playback Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=20,iface=MIXER,name='IEC958 Playback Switch',index=1 + ; type=BOOLEAN,access=rw------,values=1 + : values=on +numid=26,iface=MIXER,name='IEC958 Playback Switch',index=2 + ; type=BOOLEAN,access=rw------,values=1 + : values=on +numid=2,iface=MIXER,name='CBJ Boost Volume' + ; type=INTEGER,access=rw---R--,values=1,min=0,max=8,step=0 + : values=0 + | dBrange- + rangemin=0,,rangemax=0 + | dBscale-min=0.00dB,step=0.00dB,mute=0 + rangemin=1,,rangemax=1 + | dBscale-min=20.00dB,step=0.00dB,mute=0 + rangemin=2,,rangemax=2 + | dBscale-min=24.00dB,step=0.00dB,mute=0 + rangemin=3,,rangemax=5 + | dBscale-min=30.00dB,step=5.00dB,mute=0 + rangemin=6,,rangemax=6 + | dBscale-min=44.00dB,step=0.00dB,mute=0 + rangemin=7,,rangemax=7 + | dBscale-min=50.00dB,step=0.00dB,mute=0 + rangemin=8,,rangemax=8 + | dBscale-min=52.00dB,step=0.00dB,mute=0 + +numid=59,iface=MIXER,name='DAC L Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'IF1' + ; Item #1 'SOUND' + : values=0 +numid=65,iface=MIXER,name='DAC L1 Source' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'Stereo1 DAC Mixer' + ; Item #1 'DAC1' + : values=1 +numid=60,iface=MIXER,name='DAC R Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'IF1' + ; Item #1 'SOUND' + : values=0 +numid=66,iface=MIXER,name='DAC R1 Source' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'Stereo1 DAC Mixer' + ; Item #1 'DAC1' + : values=1 +numid=62,iface=MIXER,name='DAC1 MIXL DAC1 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=on +numid=61,iface=MIXER,name='DAC1 MIXL Stereo ADC Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=64,iface=MIXER,name='DAC1 MIXR DAC1 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=on +numid=63,iface=MIXER,name='DAC1 MIXR Stereo ADC Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=1,iface=MIXER,name='DAC1 Playback Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=87,step=0 + : values=87,87 + | dBscale-min=-65.25dB,step=0.75dB,mute=0 +numid=34,iface=MIXER,name='Dmic0 Capture Switch' + ; type=BOOLEAN,access=rw------,values=2 + : values=off,on +numid=33,iface=MIXER,name='Dmic0 Capture Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=70,step=0 + : values=0,50 + | dBscale-min=-50.00dB,step=1.00dB,mute=1 +numid=39,iface=MIXER,name='Dmic1 2nd Capture Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=70,step=0 + : values=50,50 + | dBscale-min=-50.00dB,step=1.00dB,mute=1 +numid=35,iface=MIXER,name='EQIIR3.0 eqiir_coef_3' + ; type=BYTES,access=-----RW-,values=1024 + ; ASoC TLV Byte control, skipping bytes dump +numid=40,iface=MIXER,name='EQIIR8.0 eqiir_coef_8' + ; type=BYTES,access=-----RW-,values=1024 + ; ASoC TLV Byte control, skipping bytes dump +numid=73,iface=MIXER,name='HPO Signal Demux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'Legacy' + ; Item #1 'OneBit' + : values=1 +numid=71,iface=MIXER,name='HPOL Playback Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=72,iface=MIXER,name='HPOR Playback Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=9,iface=MIXER,name='Headset Mic Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=53,iface=MIXER,name='IF1 01 ADC Swap Mux' + ; type=ENUMERATED,access=rw------,values=1,items=4 + ; Item #0 'L/R' + ; Item #1 'R/L' + ; Item #2 'L/L' + ; Item #3 'R/R' + : values=0 +numid=54,iface=MIXER,name='IF1 23 ADC Swap Mux' + ; type=ENUMERATED,access=rw------,values=1,items=4 + ; Item #0 'L/R' + ; Item #1 'R/L' + ; Item #2 'L/L' + ; Item #3 'R/R' + : values=0 +numid=55,iface=MIXER,name='IF1 45 ADC Swap Mux' + ; type=ENUMERATED,access=rw------,values=1,items=4 + ; Item #0 'L/R' + ; Item #1 'R/L' + ; Item #2 'L/L' + ; Item #3 'R/R' + : values=0 +numid=56,iface=MIXER,name='IF1 67 ADC Swap Mux' + ; type=ENUMERATED,access=rw------,values=1,items=4 + ; Item #0 'L/R' + ; Item #1 'R/L' + ; Item #2 'L/L' + ; Item #3 'R/R' + : values=0 +numid=48,iface=MIXER,name='IF1_ADC Mux' + ; type=ENUMERATED,access=rw------,values=1,items=4 + ; Item #0 'Slot 0' + ; Item #1 'Slot 2' + ; Item #2 'Slot 4' + ; Item #3 'Slot 6' + : values=0 +numid=57,iface=MIXER,name='IF2 ADC Swap Mux' + ; type=ENUMERATED,access=rw------,values=1,items=4 + ; Item #0 'L/R' + ; Item #1 'R/L' + ; Item #2 'L/L' + ; Item #3 'R/R' + : values=0 +numid=31,iface=MIXER,name='PGA1.0 1 Master Playback Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=32,step=0 + : values=32,32 + | dBscale-min=-64.00dB,step=2.00dB,mute=1 +numid=32,iface=MIXER,name='PGA2.0 2 Master Capture Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=80,step=0 + : values=50,50 + | dBscale-min=-50.00dB,step=1.00dB,mute=1 +numid=36,iface=MIXER,name='PGA4.0 4 Master Playback Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=32,step=0 + : values=32,32 + | dBscale-min=-64.00dB,step=2.00dB,mute=1 +numid=37,iface=MIXER,name='PGA5.0 5 Master Playback Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=32,step=0 + : values=32,32 + | dBscale-min=-64.00dB,step=2.00dB,mute=1 +numid=38,iface=MIXER,name='PGA6.0 6 Master Playback Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=32,step=0 + : values=32,32 + | dBscale-min=-64.00dB,step=2.00dB,mute=1 +numid=41,iface=MIXER,name='RECMIX1L CBJ Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=5,iface=MIXER,name='STO1 ADC Boost Gain Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0 + : values=0,0 + | dBscale-min=0.00dB,step=12.00dB,mute=0 +numid=3,iface=MIXER,name='STO1 ADC Capture Switch' + ; type=BOOLEAN,access=rw------,values=2 + : values=off,off +numid=4,iface=MIXER,name='STO1 ADC Capture Volume' + ; type=INTEGER,access=rw---R--,values=2,min=0,max=63,step=0 + : values=23,23 + | dBscale-min=-17.25dB,step=0.75dB,mute=0 +numid=46,iface=MIXER,name='Stereo1 ADC L Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'ADC1 L' + ; Item #1 'ADC1 R' + : values=0 +numid=42,iface=MIXER,name='Stereo1 ADC L1 Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'DAC MIX' + ; Item #1 'ADC' + : values=0 +numid=44,iface=MIXER,name='Stereo1 ADC L2 Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'DAC MIX' + ; Item #1 'DMIC' + : values=0 +numid=49,iface=MIXER,name='Stereo1 ADC MIXL ADC1 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=50,iface=MIXER,name='Stereo1 ADC MIXL ADC2 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=51,iface=MIXER,name='Stereo1 ADC MIXR ADC1 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=52,iface=MIXER,name='Stereo1 ADC MIXR ADC2 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=47,iface=MIXER,name='Stereo1 ADC R Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'ADC1 L' + ; Item #1 'ADC1 R' + : values=1 +numid=43,iface=MIXER,name='Stereo1 ADC R1 Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'DAC MIX' + ; Item #1 'ADC' + : values=0 +numid=45,iface=MIXER,name='Stereo1 ADC R2 Mux' + ; type=ENUMERATED,access=rw------,values=1,items=2 + ; Item #0 'DAC MIX' + ; Item #1 'DMIC' + : values=0 +numid=67,iface=MIXER,name='Stereo1 DAC MIXL DAC L1 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=68,iface=MIXER,name='Stereo1 DAC MIXL DAC R1 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=69,iface=MIXER,name='Stereo1 DAC MIXR DAC L1 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=70,iface=MIXER,name='Stereo1 DAC MIXR DAC R1 Switch' + ; type=BOOLEAN,access=rw------,values=1 + : values=off +numid=15,iface=PCM,name='ELD',device=2 + ; type=BYTES,access=r--v----,values=36 + : values=0x10,0x00,0x08,0x00,0x6a,0x14,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x69,0xa7,0x27,0x41,0x53,0x55,0x53,0x20,0x4d,0x47,0x32,0x37,0x39,0x09,0x17,0x07,0x00,0x00,0x00 +numid=28,iface=PCM,name='Playback Channel Map',device=2 + ; type=INTEGER,access=rw-v-R--,values=8,min=0,max=36,step=0 + : values=0,0,0,0,0,0,0,0 + | container + | chmap-variable=FL,FR +numid=21,iface=PCM,name='ELD',device=3 + ; type=BYTES,access=r--v----,values=0 + : values= +numid=29,iface=PCM,name='Playback Channel Map',device=3 + ; type=INTEGER,access=rw-v-R--,values=8,min=0,max=36,step=0 + : values=0,0,0,0,0,0,0,0 + | container + | chmap-variable=FL,FR +numid=27,iface=PCM,name='ELD',device=4 + ; type=BYTES,access=r--v----,values=0 + : values= +numid=30,iface=PCM,name='Playback Channel Map',device=4 + ; type=INTEGER,access=rw-v-R--,values=8,min=0,max=36,step=0 + : values=0,0,0,0,0,0,0,0 + | container + | chmap-variable=FL,FR +``` + + +======================================== +### SOF 固件 (Intel Sound Open Firmware) +======================================== + +# ls -la /lib/firmware/intel/ (sof 相关) +``` +drwxr-xr-x 5 root root 4096 2月 13 09:05 avs +lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_bxtn.bin.zst -> avs/apl/dsp_basefw.bin.zst +lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_cnl.bin.zst -> avs/cnl/dsp_basefw.bin.zst +lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_glk.bin.zst -> avs/apl/dsp_basefw.bin.zst +lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_kbl.bin.zst -> avs/skl/dsp_basefw.bin.zst +lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_release.bin.zst -> avs/skl/dsp_basefw.bin.zst +drwxr-xr-x 4 root root 4096 2月 13 09:05 sof +lrwxrwxrwx 1 root root 13 7月 11 2025 sof-ace-tplg -> sof-ipc4-tplg +drwxr-xr-x 14 root root 4096 2月 13 09:05 sof-ipc4 +drwxr-xr-x 3 root root 4096 2月 13 09:05 sof-ipc4-lib +drwxr-xr-x 2 root root 12288 2月 13 09:05 sof-ipc4-tplg +drwxr-xr-x 2 root root 28672 2月 13 09:05 sof-tplg +``` +# SOF 拓扑: /lib/firmware/intel/sof +``` +``` +# SOF 拓扑: /lib/firmware/intel/sof-tplg +``` +/lib/firmware/intel/sof-tplg/sof-icl-dmic-4ch.tplg.zst +/lib/firmware/intel/sof-tplg/sof-adl-max98360a-rt5682-4ch.tplg.zst +/lib/firmware/intel/sof-tplg/sof-adl-es8336-ssp0.tplg.zst +/lib/firmware/intel/sof-tplg/sof-apl-es8336-dmic4ch-ssp2.tplg.zst +/lib/firmware/intel/sof-tplg/sof-imx8-nocodec-sai.tplg.zst +/lib/firmware/intel/sof-tplg/sof-tgl-es8336-dmic4ch-ssp2.tplg.zst +/lib/firmware/intel/sof-tplg/sof-cml-demux-rt5682.tplg.zst +/lib/firmware/intel/sof-tplg/sof-apl-da7219.tplg.zst +/lib/firmware/intel/sof-tplg/sof-icl-es8336-dmic4ch-ssp1.tplg.zst +/lib/firmware/intel/sof-tplg/sof-icl-es8336-ssp1.tplg.zst +/lib/firmware/intel/sof-tplg/sof-imx8-eq-iir-wm8960.tplg.zst +/lib/firmware/intel/sof-tplg/sof-adl-rt1316-l12-rt714-l0.tplg.zst +/lib/firmware/intel/sof-tplg/sof-tgl-rt711-l0-rt1316-l1-mono-rt714-l3.tplg.zst +/lib/firmware/intel/sof-tplg/sof-tgl-max98373-rt5682.tplg.zst +/lib/firmware/intel/sof-tplg/sof-apl-pcm512x-master-44100.tplg.zst +/lib/firmware/intel/sof-tplg/sof-adl-rt1015-nau8825.tplg.zst +/lib/firmware/intel/sof-tplg/sof-cml-rt711-rt1308-mono-rt715.tplg.zst +/lib/firmware/intel/sof-tplg/sof-adl-rt711-l0-rt1308-l12-rt715-l3.tplg.zst +/lib/firmware/intel/sof-tplg/sof-cml-es8336-dmic2ch-ssp0.tplg.zst +/lib/firmware/intel/sof-tplg/sof-adl-max98357a-rt5682-2way.tplg.zst +/lib/firmware/intel/sof-tplg/sof-tgl-es8336-dmic4ch-ssp0.tplg.zst +/lib/firmware/intel/sof-tplg/sof-apl-es8336-ssp5.tplg.zst +/lib/firmware/intel/sof-tplg/sof-cht-nocodec.tplg.zst +/lib/firmware/intel/sof-tplg/sof-adl-rt1019-rt5682.tplg.zst +/lib/firmware/intel/sof-tplg/sof-cml-da7219-max98357a.tplg.zst +/lib/firmware/intel/sof-tplg/sof-cml-demux-rt5682-max98357a.tplg.zst +/lib/firmware/intel/sof-tplg/sof-byt-cx2072x-ssp0.tplg.zst +/lib/firmware/intel/sof-tplg/sof-tgl-es8336-ssp2.tplg.zst +/lib/firmware/intel/sof-tplg/sof-byt-es8316.tplg.zst +/lib/firmware/intel/sof-tplg/sof-tgl-nocodec.tplg.zst +``` + +======================================== +### 机器识别 (主板/机型) +======================================== + +# DMI 主板信息: +``` +board_name: Kaisa +product_name: Kaisa +sys_vendor: Google +``` diff --git a/docs/INDEX.md b/docs/INDEX.md new file mode 100644 index 0000000000..21a8f0b66e --- /dev/null +++ b/docs/INDEX.md @@ -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 采集 | diff --git a/docs/Linux_HDMI_Audio_Roadmap.md b/docs/Linux_HDMI_Audio_Roadmap.md new file mode 100644 index 0000000000..7805d34e8c --- /dev/null +++ b/docs/Linux_HDMI_Audio_Roadmap.md @@ -0,0 +1,3 @@ +# 文档已迁移 + +Linux HDMI 路线图现位于:[linux-hdmi/Linux_HDMI_Audio_Roadmap.md](linux-hdmi/Linux_HDMI_Audio_Roadmap.md)。 diff --git a/docs/WORK_PROGRESS.md b/docs/WORK_PROGRESS.md index cf810d7866..e83ba2b3c2 100644 --- a/docs/WORK_PROGRESS.md +++ b/docs/WORK_PROGRESS.md @@ -1,115 +1,3 @@ -# 工作进度与源码获取说明(换机交接) +# 文档已迁移 -面向机型:**Google Kaisa(Chromebox 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.15(kernel.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);常见遇阻:**磁盘空间不足**(建议 **≥35~50GB**);勿在同一源码树混用裸 `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)。 diff --git a/docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md b/docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md similarity index 92% rename from docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md rename to docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md index a28e0998be..888552babd 100644 --- a/docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md +++ b/docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md @@ -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) diff --git a/docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md b/docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md similarity index 99% rename from docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md rename to docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md index 57a6880fdc..946215cfe3 100644 --- a/docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md +++ b/docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md @@ -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) 中的排错思路。 --- diff --git a/docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md b/docs/linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md similarity index 77% rename from docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md rename to docs/linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md index 706595e499..0f43590d30 100644 --- a/docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md +++ b/docs/linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md @@ -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` diff --git a/docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md b/docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md new file mode 100644 index 0000000000..6823006439 --- /dev/null +++ b/docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md @@ -0,0 +1,105 @@ +# Linux HDMI 无声:路线图与未来步骤 + +本文是 **Google Kaisa(Chromebox 10 代)+ Coreboot** 下 Linux **HDMI 无声音**问题的 **主路线图**。技术细节与论证见各专项文档;本文只固定 **顺序、产出物与维护方式**。 + +**全文档索引**:[INDEX.md](../INDEX.md) +**项目总览与问题表**:[../../README.md](../../README.md) + +--- + +## 一、问题与范围 + +- **硬件**:Google Kaisa;Coreboot;HDMI 走 **SOF + iDisp / DisplayPort 音频** 链路。 +- **典型现象**:Linux 下 **HDMI 无输出或无法稳定打开 PCM**;**3.5mm 通常正常**。同机 **ChromeOS / Windows HDMI 正常** 时,问题集中在 **Linux 内核 / SOF / 用户态路由**,而非线缆或显示器本身。 +- **dmesg 常见线索**:`STREAM_PCM_PARAMS` IPC 失败、约 **-5(EIO)**,常与 **pcm2/3/4(HDMI1/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 上。 + +**产出**:带时间戳的采集文件,便于前后对比。 + +### 阶段 2:HWE 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 当前阶段」见该文件顶部)。 +- **任务编号 L1–L4** 与阶段对应关系见根 [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) | diff --git a/docs/OPERATION_Kaisa_SOF_HDMI_Trace.md b/docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md similarity index 96% rename from docs/OPERATION_Kaisa_SOF_HDMI_Trace.md rename to docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md index abdd994115..732b523ea3 100644 --- a/docs/OPERATION_Kaisa_SOF_HDMI_Trace.md +++ b/docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md @@ -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. 日志中应关注的内容 diff --git a/docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md b/docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md similarity index 89% rename from docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md rename to docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md index ce8b47e1b9..749db66445 100644 --- a/docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md +++ b/docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md @@ -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'`(尾部 80~120 行即可) - 可选:`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 diff --git a/docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md b/docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md similarity index 81% rename from docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md rename to docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md index fcbd194bcd..2123e51295 100644 --- a/docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md +++ b/docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md @@ -22,9 +22,9 @@ sha256sum /lib/firmware/intel/sof-tplg/sof-cml-rt5682.tplg.zst 2>/dev/null | 拓扑文件 | `sof-cml-rt5682.tplg`(Chrome 解压约 35KB);Linux 常为 `.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`。 - 本清单用于 **回归与上游报障时的环境快照**,不替代内核/驱动根因分析。 diff --git a/docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md b/docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md similarity index 86% rename from docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md rename to docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md index 4e05425abe..b760062dba 100644 --- a/docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md +++ b/docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md @@ -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. 已尝试且不足以单独修复的方向(避免重复提问) diff --git a/docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md b/docs/meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md similarity index 91% rename from docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md rename to docs/meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md index 97e9a698c2..ba9c832ce9 100644 --- a/docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md +++ b/docs/meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md @@ -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** 后结论。 diff --git a/docs/OPERATION_DualBoot_Ubuntu24_Windows.md b/docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md similarity index 95% rename from docs/OPERATION_DualBoot_Ubuntu24_Windows.md rename to docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md index e257d9c161..196c36d930 100644 --- a/docs/OPERATION_DualBoot_Ubuntu24_Windows.md +++ b/docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md @@ -30,7 +30,7 @@ - (可选)`/home`(ext4)按需 - (可选)swap:8–32GB(看内存与休眠需求) -> 若你计划在 Ubuntu 上编译 `linux-hwe-6.17` deb:建议 Ubuntu 分区额外留出 **≥35–50GB 空闲**(见本仓库 `docs/WORK_PROGRESS.md` 的经验)。 +> 若你计划在 Ubuntu 上编译 `linux-hwe-6.17` deb:建议 Ubuntu 分区额外留出 **≥35–50GB 空闲**(见本仓库 `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`)。 --- diff --git a/docs/meta/WORK_PROGRESS.md b/docs/meta/WORK_PROGRESS.md new file mode 100644 index 0000000000..7fac798675 --- /dev/null +++ b/docs/meta/WORK_PROGRESS.md @@ -0,0 +1,139 @@ +# 工作进度与源码获取说明(换机交接) + +面向机型:**Google Kaisa(Chromebox 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(任务与 L1–L4 映射) | [../../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.15(kernel.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);常见遇阻:**磁盘空间不足**(建议 **≥35~50GB**);勿在同一源码树混用裸 `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/` 下的计划文件。* diff --git a/audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md b/docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md similarity index 98% rename from audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md rename to docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md index abfff9fea0..2993ab50b1 100644 --- a/audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md +++ b/docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md @@ -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 安装后音频: diff --git a/audio_topology/OPERATION_Windows_Audio.md b/docs/windows/OPERATION_Windows_Audio.md similarity index 95% rename from audio_topology/OPERATION_Windows_Audio.md rename to docs/windows/OPERATION_Windows_Audio.md index da4a272281..fd6c96431f 100644 --- a/audio_topology/OPERATION_Windows_Audio.md +++ b/docs/windows/OPERATION_Windows_Audio.md @@ -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 @@ - - - -- 对比分析:[ANALYSIS_Audio.md](ANALYSIS_Audio.md) +- 对比分析:[ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md) diff --git a/kernel-src/README.md b/kernel-src/README.md index b624368d5e..c382b3b76a 100644 --- a/kernel-src/README.md +++ b/kernel-src/README.md @@ -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`。 diff --git a/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt b/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt index 21e13660c6..9b06d4ca80 100644 --- a/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt +++ b/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt @@ -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 diff:scripts/export-chromeos-ubuntu-sound-file-diffs.sh(输出默认在 reference/,已 gitignore) +5. 两棵树预检并一键跑 3+4:scripts/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。 diff --git a/patches/ubuntu-hwe-6.17/README.md b/patches/ubuntu-hwe-6.17/README.md index e0d4ebab5a..9d63e1d26e 100644 --- a/patches/ubuntu-hwe-6.17/README.md +++ b/patches/ubuntu-hwe-6.17/README.md @@ -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)。 diff --git a/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md b/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md index a185a113ae..e34a1e6c5a 100644 --- a/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md +++ b/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md @@ -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,优先观测与上游复现)。 diff --git a/scripts/collect-kaisa-sof-trace.sh b/scripts/collect-kaisa-sof-trace.sh index 3646a3b335..ef30454168 100755 --- a/scripts/collect-kaisa-sof-trace.sh +++ b/scripts/collect-kaisa-sof-trace.sh @@ -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 diff --git a/scripts/linux-hdmi-followup-workflow.sh b/scripts/linux-hdmi-followup-workflow.sh new file mode 100755 index 0000000000..86a11a9605 --- /dev/null +++ b/scripts/linux-hdmi-followup-workflow.sh @@ -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 diff --git a/scripts/preflight-chromeos-ubuntu-diff.sh b/scripts/preflight-chromeos-ubuntu-diff.sh new file mode 100755 index 0000000000..7bf470c24e --- /dev/null +++ b/scripts/preflight-chromeos-ubuntu-diff.sh @@ -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." diff --git a/scripts/verify-ubuntu-hwe617-0001-patch.sh b/scripts/verify-ubuntu-hwe617-0001-patch.sh new file mode 100755 index 0000000000..d987bfa329 --- /dev/null +++ b/scripts/verify-ubuntu-hwe617-0001-patch.sh @@ -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