Add work handoff doc, Ubuntu HWE build scripts, and repair plan
- docs/WORK_PROGRESS.md: progress, ChromeOS and Ubuntu kernel source URLs/commands - scripts: ubuntu-hwe-617-build.sh and deps list for kernel packaging - patches: experimental HDMI note (DO NOT apply on 6.17) - audio_topology: REPAIR_Plan_Audio.md; README links - README: links to handoff and build helpers Made-with: Cursor
This commit is contained in:
43
README.md
43
README.md
@@ -4,10 +4,12 @@
|
|||||||
|
|
||||||
## 当前问题概况
|
## 当前问题概况
|
||||||
|
|
||||||
| 平台 | HDMI 声音 | 3.5mm 耳机声音 | 插入/拔出提示 |
|
|
||||||
|------|-----------|----------------|---------------|
|
| 平台 | HDMI 声音 | 3.5mm 耳机声音 | 插入/拔出提示 |
|
||||||
| Linux | ❌ 无 | ✅ 有 | ✅ 有 |
|
| ------- | ------- | ---------- | ------- |
|
||||||
| Windows | ✅ 有 | ❌ 无 | ❌ 无 |
|
| Linux | ❌ 无 | ✅ 有 | ✅ 有 |
|
||||||
|
| Windows | ✅ 有 | ❌ 无 | ❌ 无 |
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -20,24 +22,24 @@
|
|||||||
- [✓] **C1**: 整理 Chromebox 10 代音频硬件拓扑(HDMI、3.5mm、codec 型号)
|
- [✓] **C1**: 整理 Chromebox 10 代音频硬件拓扑(HDMI、3.5mm、codec 型号)
|
||||||
- [✓] C1a: 在 Linux 下收集硬件拓扑信息(运行 `audio_topology/collect_linux_audio_topology.sh`,输出到 `audio_topology/collected/`)
|
- [✓] C1a: 在 Linux 下收集硬件拓扑信息(运行 `audio_topology/collect_linux_audio_topology.sh`,输出到 `audio_topology/collected/`)
|
||||||
- [✓] C1b: 在 Windows 下收集硬件拓扑信息(运行 `audio_topology/collect_windows_audio_topology.ps1`,输出到 `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/`)
|
- C1c: 在原生 ChromeOS 下收集硬件拓扑信息(运行 `audio_topology/collect_chromeos_audio_topology.sh`,并在 chrome://system 的 audio 节复制补充;结果放入 `audio_topology/collected/`)
|
||||||
- [ ] **C2**: 记录 Coreboot 下与原生 ChromeOS 固件的音频差异
|
- **C2**: 记录 Coreboot 下与原生 ChromeOS 固件的音频差异
|
||||||
- [ ] **C3**: 编写分平台操作步骤文档(Linux / Windows)
|
- [✓] **C3**: 编写分平台操作步骤文档(Linux / Windows)— 见 [REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md) 与各 OPERATION 文档
|
||||||
- [ ] **C4**: 补充已验证的 Chromebox 型号与固件版本
|
- **C4**: 补充已验证的 Chromebox 型号与固件版本
|
||||||
|
|
||||||
### 二、Linux 相关
|
### 二、Linux 相关
|
||||||
|
|
||||||
- [ ] **L1**: 调研 Chromebox 10 代在 Linux 下的 HDMI 音频方案(ALSA / PulseAudio / PipeWire)
|
- **L1**: 调研 Chromebox 10 代在 Linux 下的 HDMI 音频方案(ALSA / PulseAudio / PipeWire)
|
||||||
- [ ] **L2**: 确认 HDMI 音频芯片型号和驱动兼容性
|
- **L2**: 确认 HDMI 音频芯片型号和驱动兼容性
|
||||||
- [ ] **L3**: 尝试/验证 HDMI 音频所需固件或内核参数
|
- **L3**: 尝试/验证 HDMI 音频所需固件或内核参数
|
||||||
- [ ] **L4**: 编写 Linux 下 HDMI 音频修复说明或脚本(如有需要)
|
- **L4**: 编写 Linux 下 HDMI 音频修复说明或脚本(如有需要)
|
||||||
|
|
||||||
### 三、Windows 相关
|
### 三、Windows 相关
|
||||||
|
|
||||||
- [ ] **W1**: 调研 Chromebox 10 代 3.5mm 音频在 Windows 下的驱动需求
|
- **W1**: 调研 Chromebox 10 代 3.5mm 音频在 Windows 下的驱动需求
|
||||||
- [ ] **W2**: 确认 3.5mm 接口对应芯片及 Windows 驱动支持情况
|
- **W2**: 确认 3.5mm 接口对应芯片及 Windows 驱动支持情况
|
||||||
- [ ] **W3**: 解决 3.5mm 无声音问题(驱动安装 / 驱动修改 / 注册表等)
|
- **W3**: 解决 3.5mm 无声音问题(驱动安装 / 驱动修改 / 注册表等)
|
||||||
- [ ] **W4**: 解决耳机插入/拔出无提示问题(通常与 HDA 驱动 / 插孔检测相关)
|
- **W4**: 解决耳机插入/拔出无提示问题(通常与 HDA 驱动 / 插孔检测相关)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -45,5 +47,10 @@
|
|||||||
|
|
||||||
- 目标平台:Chromebox(10 代 Intel,Coreboot 刷机后)
|
- 目标平台:Chromebox(10 代 Intel,Coreboot 刷机后)
|
||||||
- 目标系统:Linux / Windows
|
- 目标系统:Linux / Windows
|
||||||
- Windows 3.5mm / CoolStar 驱动排查步骤:[audio_topology/OPERATION_Windows_Audio.md](audio_topology/OPERATION_Windows_Audio.md)
|
- **Linux / Windows 声音修复总方案**:[audio_topology/REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md)
|
||||||
- Linux SOF / intel-signed 固件尝试:[audio_topology/OPERATION_Force_Intel_Signed_Firmware.md](audio_topology/OPERATION_Force_Intel_Signed_Firmware.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 内核:打补丁与编译(需本机 `sudo apt` 一次)— [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)
|
||||||
|
- **换机交接 / 进度与两处内核源码下载**:[docs/WORK_PROGRESS.md](docs/WORK_PROGRESS.md)
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ sudo ./audio_topology/collect_linux_audio_topology.sh /path/to/output.txt
|
|||||||
|
|
||||||
## Windows 用法
|
## Windows 用法
|
||||||
|
|
||||||
|
`/home/jack/kernel-src/linux-hwe-6.17-6.17.0/sound/soc/intel/boards/sof_board_helpers.c`
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
# 在 PowerShell 中运行(建议以管理员身份运行以获取完整驱动信息)
|
# 在 PowerShell 中运行(建议以管理员身份运行以获取完整驱动信息)
|
||||||
cd audio_topology
|
cd audio_topology
|
||||||
@@ -40,15 +42,17 @@ cd audio_topology
|
|||||||
|
|
||||||
1. 浏览器按 **Ctrl+Alt+T** 打开 crosh,输入 `shell` 进入 bash。
|
1. 浏览器按 **Ctrl+Alt+T** 打开 crosh,输入 `shell` 进入 bash。
|
||||||
2. 将 `collect_chromeos_audio_topology.sh` 拷到设备(如 U 盘、或从本仓库下载),在 shell 中执行:
|
2. 将 `collect_chromeos_audio_topology.sh` 拷到设备(如 U 盘、或从本仓库下载),在 shell 中执行:
|
||||||
```bash
|
```bash
|
||||||
bash /path/to/collect_chromeos_audio_topology.sh
|
bash /path/to/collect_chromeos_audio_topology.sh
|
||||||
```
|
```
|
||||||
或把脚本内容复制粘贴到 shell 中执行。
|
或把脚本内容复制粘贴到 shell 中执行。
|
||||||
3. 脚本默认输出到 `/tmp/audio_topology_chromeos_<主机名>_<时间>.txt`。用「文件」应用打开 `/tmp` 将该文件复制到「下载」或 U 盘,再拷回电脑,放入 `audio_topology/collected/`。
|
3. 脚本默认输出到 `/tmp/audio_topology_chromeos_<主机名>_<时间>.txt`。用「文件」应用打开 `/tmp` 将该文件复制到「下载」或 U 盘,再拷回电脑,放入 `audio_topology/collected/`。
|
||||||
4. 建议同时在浏览器打开 **chrome://system**,在「audio」一节复制内容,粘贴到上述输出文件末尾作为补充。
|
4. 建议同时在浏览器打开 **chrome://system**,在「audio」一节复制内容,粘贴到上述输出文件末尾作为补充。
|
||||||
|
|
||||||
**脚本验证(无 ChromeOS 时)**:在任意 Linux 或 WSL 下可做语法检查与试跑,确认脚本不报错(输出内容会因环境不同而不同):
|
**脚本验证(无 ChromeOS 时)**:在任意 Linux 或 WSL 下可做语法检查与试跑,确认脚本不报错(输出内容会因环境不同而不同):
|
||||||
```bash
|
|
||||||
bash -n collect_chromeos_audio_topology.sh && echo "Syntax OK"
|
## 修复方案与专项文档
|
||||||
OUTPUT_DIR=. bash collect_chromeos_audio_topology.sh ./collected/audio_topology_chromeos_test.txt && echo "Run OK"
|
|
||||||
```
|
- 总览:[REPAIR_Plan_Audio.md](REPAIR_Plan_Audio.md)(Linux HDMI / Windows 3.5mm)
|
||||||
|
- 其它见该文件内「文档索引」表。
|
||||||
|
|
||||||
|
|||||||
118
audio_topology/REPAIR_Plan_Audio.md
Normal file
118
audio_topology/REPAIR_Plan_Audio.md
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
# Chromebox 10 代(Kaisa)声音驱动修复方案
|
||||||
|
|
||||||
|
Coreboot 刷机后,Linux 与 Windows 的音频问题**表现相反**,需**分平台**处理。本文给出目标、原因概要、推荐执行顺序;细节与命令见各专项文档。
|
||||||
|
|
||||||
|
**对比分析**:[ANALYSIS_Audio.md](ANALYSIS_Audio.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 目标状态
|
||||||
|
|
||||||
|
|
||||||
|
| 平台 | HDMI | 3.5mm | 插拔提示 |
|
||||||
|
| ------------- | ---- | ----- | ---- |
|
||||||
|
| **目标** | 有 | 有 | 有 |
|
||||||
|
| Linux(当前典型) | 无 | 有 | 有 |
|
||||||
|
| Windows(当前典型) | 有 | 无 | 无 |
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、Linux:修复思路
|
||||||
|
|
||||||
|
### 1.1 问题拆分
|
||||||
|
|
||||||
|
|
||||||
|
| 输出 | 现象 | 主要方向 |
|
||||||
|
| --------- | ----------------------------------------------------- | -------------------------------------------- |
|
||||||
|
| **3.5mm** | 一般已有声 | 保持默认输出为模拟/耳机;勿误用打不开的 HDMI 为默认 |
|
||||||
|
| **HDMI** | `STREAM_PCM_PARAMS` IPC 失败(约 -5),SOF + DisplayPort 路径 | **内核 / SOF 驱动** 与 6.x 行为;同机 ChromeOS 5.15 正常 |
|
||||||
|
|
||||||
|
|
||||||
|
### 1.2 推荐顺序(由易到难)
|
||||||
|
|
||||||
|
1. **确认物理口与 ALSA 设备**
|
||||||
|
`aplay -L`,用 `speaker-test -D plughw:卡号,设备号` 逐个试 HDMI(pcm2/3/4 与物理 HDMI1/2/3 对应关系以实测为准)。
|
||||||
|
2. **用 5.15 内核验证是否为 6.x 回归(优先)**
|
||||||
|
Ubuntu 22.04 **较早点版本** Live ISO(建议 [old-releases](https://old-releases.ubuntu.com/releases/22.04/) 的 22.04.1 / 22.04.2,避免 22.04.5 自带 HWE 6.x),「试用」后测 HDMI。
|
||||||
|
若 5.15 上 HDMI 正常 → 本机可考虑安装/长期运行 **5.15 LTS** 内核或等待上游修复。
|
||||||
|
详见 [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 源码时,发现 iDisp HDMI 的 BE link 配置存在一个很可疑差异:
|
||||||
|
Ubuntu 6.17 的 `sound/soc/intel/boards/sof_board_helpers.c` 中 iDisp HDMI link 使用 `playback_only`,而同文件中其他 BE link 使用 `dpcm_*`,ChromeOS 5.15 也使用 `dpcm_playback`。
|
||||||
|
仓库内提供了一个“最小实验补丁”用于验证该差异是否与 `STREAM_PCM_PARAMS ipc failed (-5)` 相关:
|
||||||
|
- `patches/ubuntu-hwe-6.17/0001-ASoC-intel-sof-fix-idisp-hdmi-dpcm-playback.patch`
|
||||||
|
|
||||||
|
应用与编译(在你已拉取的 `~/kernel-src/linux-hwe-6.17-6.17.0/` 下执行):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/kernel-src/linux-hwe-6.17-6.17.0
|
||||||
|
patch -p1 < /home/jack/chromebox_10th_audio_driver/patches/ubuntu-hwe-6.17/0001-ASoC-intel-sof-fix-idisp-hdmi-dpcm-playback.patch
|
||||||
|
|
||||||
|
# Ubuntu 源码的构建方式很多,这里只给“验证用”的最小提示:
|
||||||
|
# 1) 用你当前系统的配置作为起点:/boot/config-$(uname -r)
|
||||||
|
# 2) 保持 CONFIG_SND_SOC_SOF_* 与显卡音频相关选项一致
|
||||||
|
# 3) 编译并安装内核/模块后重启,再复测 HDMI
|
||||||
|
```
|
||||||
|
|
||||||
|
若此补丁能让 HDMI 打开(或错误码/日志明显变化),下一步就能进一步收敛为上游可接受的修复(或定位到更精确的回归提交)。
|
||||||
|
5. **自行维护内核(进阶 / 回归定位)**
|
||||||
|
在 v5.15 与当前内核之间对 `sound/soc/sof/` 与 `sound/soc/intel/boards/` 做 **git bisect**,定位回归后 revert 或打最小补丁;适合能自行编译内核的维护者。
|
||||||
|
5. **上游协同**
|
||||||
|
向 [thesofproject/sof](https://github.com/thesofproject/sof) / alsa-devel 反馈:机型(Google Kaisa)、内核版本、dmesg 中 IPC 错误、ChromeOS 对照正常。
|
||||||
|
|
||||||
|
### 1.3 若「原来有声现在无声」
|
||||||
|
|
||||||
|
见 [ANALYSIS_Audio.md](ANALYSIS_Audio.md) **第八节**;固件实验后务必按 [OPERATION_Force_Intel_Signed_Firmware.md](OPERATION_Force_Intel_Signed_Firmware.md) **回退检查清单** 恢复。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、Windows:修复思路
|
||||||
|
|
||||||
|
### 2.1 问题拆分
|
||||||
|
|
||||||
|
|
||||||
|
| 输出 | 现象 | 主要方向 |
|
||||||
|
| --------- | --------------------------------------------------- | --------------------------------------------------- |
|
||||||
|
| **HDMI** | 通常正常(英特尔显示器音频) | 一般无需改动 |
|
||||||
|
| **3.5mm** | Realtek ALC5682 I2S 显示 OK 但无声;CoolStar SOF 常为 Error | **CoolStar / Chrultrabook 成套驱动**,非桌面机通用 Realtek 安装包 |
|
||||||
|
|
||||||
|
|
||||||
|
### 2.2 推荐顺序
|
||||||
|
|
||||||
|
1. **先消除「CoolStar SOF Audio (WDM)」设备管理器中的 Error**
|
||||||
|
按 CoolStar 包内说明与机型(Kaisa/puff)重装或更新;记录错误码便于论坛检索。
|
||||||
|
2. **再安装/更新「Realtek ALC5682 I2S Audio」**
|
||||||
|
使用 CoolStar 提供的 INF,避免第三方「万能 Realtek」覆盖。
|
||||||
|
3. **系统声音**
|
||||||
|
默认播放设备选 **耳机/模拟**,不要只选显示器音频。
|
||||||
|
4. **仍无声**
|
||||||
|
Chrultrabook 论坛搜机型 + ALC5682 + headphone;插拔提示属进阶(README W4),见专项文档。
|
||||||
|
|
||||||
|
### 2.3 专项文档
|
||||||
|
|
||||||
|
全流程步骤:[OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、采集与回归对比
|
||||||
|
|
||||||
|
- **Linux**:`collect_linux_audio_topology.sh` → `collected/`
|
||||||
|
- **Windows**:`collect_windows_audio_topology.ps1` → `collected/`
|
||||||
|
- 修复前后各采一份,便于对比 dmesg、设备与驱动版本。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、文档索引
|
||||||
|
|
||||||
|
|
||||||
|
| 文档 | 内容 |
|
||||||
|
| ------------------------------------------------------------------------------------ | -------------------------- |
|
||||||
|
| [ANALYSIS_Audio.md](ANALYSIS_Audio.md) | 三平台对比、原因分析、Live CD、第八节无声排查 |
|
||||||
|
| [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 |
|
||||||
|
| [README.md](../README.md) | 仓库任务列表 |
|
||||||
|
|
||||||
|
|
||||||
111
docs/WORK_PROGRESS.md
Normal file
111
docs/WORK_PROGRESS.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# 工作进度与源码获取说明(换机交接)
|
||||||
|
|
||||||
|
面向机型:**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 实验补丁 `patches/ubuntu-hwe-6.17/0001-*.patch` | **勿在 6.17 上应用**:`struct snd_soc_dai_link` 已无 `dpcm_playback` 成员,会编译失败;保留作历史记录 |
|
||||||
|
| 全量内核编译 `fakeroot debian/rules binary-generic` | 进行中遇阻:**磁盘空间不足**(建议单独分区空闲 **≥35~50GB**);勿在同一源码树混用裸 `make` 与 `debian/rules`(需 `make 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 ~/kernel-src && cd ~/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`。
|
||||||
|
|
||||||
|
**编译 generic 包(需足够磁盘与依赖)**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt build-dep linux-hwe-6.17
|
||||||
|
cd ~/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. 按需重新拉取 **Ubuntu 源码**(用新机器上的 `uname -r` / `dpkg -s` / `apt-cache showsrc` 核对版本号)。
|
||||||
|
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` | 任务列表与参考链接 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*本文档随工作机迁移更新;不修改 `.cursor/plans/` 下的计划文件。*
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: jack <jack@local>
|
||||||
|
Date: Tue, 31 Mar 2026 00:00:00 +0000
|
||||||
|
Subject: [PATCH] DO NOT APPLY: dpcm_playback field removed in 6.17
|
||||||
|
|
||||||
|
On Chromebox 10th-gen (Google-Kaisa-rev4) HDMI playback fails on Ubuntu
|
||||||
|
HWE 6.17 with "STREAM_PCM_PARAMS ipc failed (-5)" while ChromeOS 5.15 works.
|
||||||
|
|
||||||
|
This patch was written from a ChromeOS 5.15 reference where `struct snd_soc_dai_link`
|
||||||
|
still had `dpcm_playback`. Ubuntu HWE 6.17's `struct snd_soc_dai_link` does not have
|
||||||
|
that field anymore (see `include/sound/soc.h`), so this patch does not compile on 6.17.
|
||||||
|
|
||||||
|
This is intended as a minimal, reversible experiment patch for regression
|
||||||
|
triage.
|
||||||
|
---
|
||||||
|
sound/soc/intel/boards/sof_board_helpers.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/sound/soc/intel/boards/sof_board_helpers.c b/sound/soc/intel/boards/sof_board_helpers.c
|
||||||
|
index 000000000000..000000000000 100644
|
||||||
|
--- a/sound/soc/intel/boards/sof_board_helpers.c
|
||||||
|
+++ b/sound/soc/intel/boards/sof_board_helpers.c
|
||||||
|
@@ -324,7 +324,7 @@ static int set_idisp_hdmi_link(struct device *dev, struct snd_soc_dai_link *link,
|
||||||
|
link->id = be_id;
|
||||||
|
link->init = (hdmi_id == 1) ? hdmi_init : NULL;
|
||||||
|
link->no_pcm = 1;
|
||||||
|
- link->playback_only = 1;
|
||||||
|
+ link->dpcm_playback = 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
78
scripts/ubuntu-hwe-617-build.sh
Executable file
78
scripts/ubuntu-hwe-617-build.sh
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Ubuntu HWE 6.17: apply SOF HDMI experiment patch, build generic kernel debs, optional install.
|
||||||
|
# Run from your machine (requires sudo for apt/dpkg). Do NOT edit the plan file.
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
PATCH="${PATCH:-/home/jack/chromebox_10th_audio_driver/patches/ubuntu-hwe-6.17/0001-ASoC-intel-sof-fix-idisp-hdmi-dpcm-playback.patch}"
|
||||||
|
SRC="${SRC:-$HOME/kernel-src/linux-hwe-6.17-6.17.0}"
|
||||||
|
JOBS="${CONCURRENCY_LEVEL:-$(nproc)}"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 [apply|deps|build|install|all]"
|
||||||
|
echo " apply - patch -p1 in SRC (default: $SRC)"
|
||||||
|
echo " deps - sudo apt build-dep linux-hwe-6.17 + build tools"
|
||||||
|
echo " build - fakeroot debian/rules clean && binary-generic"
|
||||||
|
echo " install- sudo dpkg -i newest linux-image-* and linux-modules-* in parent of SRC"
|
||||||
|
echo " all - apply deps build (install is manual: run install after reviewing debs)"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ ! -f "$SRC/debian/rules" ]]; then
|
||||||
|
echo "ERROR: kernel source not found at SRC=$SRC"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cmd_apply() {
|
||||||
|
cd "$SRC"
|
||||||
|
local f="sound/soc/intel/boards/sof_board_helpers.c"
|
||||||
|
if grep -q 'link->dpcm_playback = 1' "$f" 2>/dev/null; then
|
||||||
|
echo "Already patched: $f"
|
||||||
|
else
|
||||||
|
patch -p1 < "$PATCH"
|
||||||
|
fi
|
||||||
|
grep -n 'set_idisp_hdmi_link\|dpcm_playback\|playback_only' "$f" | head -20 || true
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_deps() {
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get build-dep -y linux-hwe-6.17
|
||||||
|
sudo apt-get install -y fakeroot build-essential libncurses-dev libssl-dev ccache \
|
||||||
|
gawk debhelper libelf-dev
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_build() {
|
||||||
|
cd "$SRC"
|
||||||
|
export CONCURRENCY_LEVEL="$JOBS"
|
||||||
|
fakeroot debian/rules clean
|
||||||
|
fakeroot debian/rules binary-generic
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_install() {
|
||||||
|
parent="$(dirname "$SRC")"
|
||||||
|
cd "$parent"
|
||||||
|
# Pick debs matching this source tree version (newest mtime)
|
||||||
|
mapfile -t imgs < <(ls -t linux-image-*.deb 2>/dev/null || true)
|
||||||
|
mapfile -t mods < <(ls -t linux-modules-*.deb 2>/dev/null || true)
|
||||||
|
if [[ ${#imgs[@]} -eq 0 || ${#mods[@]} -eq 0 ]]; then
|
||||||
|
echo "No linux-image-*.deb or linux-modules-*.deb in $parent — build first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Installing: ${imgs[0]} ${mods[0]}"
|
||||||
|
sudo dpkg -i "${imgs[0]}" "${mods[0]}"
|
||||||
|
echo "Optional: sudo dpkg -i linux-headers-*.deb from same directory"
|
||||||
|
echo "Then: sudo reboot"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "${1:-}" in
|
||||||
|
apply) cmd_apply ;;
|
||||||
|
deps) cmd_deps ;;
|
||||||
|
build) cmd_build ;;
|
||||||
|
install) cmd_install ;;
|
||||||
|
all)
|
||||||
|
cmd_apply
|
||||||
|
cmd_deps
|
||||||
|
cmd_build
|
||||||
|
echo "Build done. Debs should be in: $(dirname "$SRC")"
|
||||||
|
echo "Run: $0 install (after reviewing package names)"
|
||||||
|
;;
|
||||||
|
*) usage; exit 1 ;;
|
||||||
|
esac
|
||||||
7
scripts/ubuntu-hwe-617-deps-packages.txt
Normal file
7
scripts/ubuntu-hwe-617-deps-packages.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# One-shot install for Ubuntu HWE 6.17 kernel build (run with sudo after apt update).
|
||||||
|
# Observed failures without these: gawk (debian/rules), debhelper/dh_testdir,
|
||||||
|
# libelf-dev (gelf.h for tools/objtool during make modules_prepare).
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get build-dep -y linux-hwe-6.17
|
||||||
|
sudo apt-get install -y fakeroot build-essential libncurses-dev libssl-dev ccache \
|
||||||
|
gawk debhelper libelf-dev
|
||||||
Reference in New Issue
Block a user