Files
chromebox_10th_audio_driver/scripts/kaisa-reapply-pro-audio-session.sh
jack 17f0a4521f docs(kaisa): ProAudio 主路线、WirePlumber default-profile 与一键脚本
- 新增 OPERATION_PipeWire_Kaisa_ProAudio / UCM_HiFi,核心问题复盘与恢复 Ubuntu 重测手顺;HDMI 旧文改为 stub。
- 脚本:apply / verify-pro-audio、strip default-profile、reapply-session、remove deb 与 UCM overlay、verify-audio-environment。
- systemd-user:kaisa-pro-audio-reapply.service 示例。
- README、docs 索引、REPO_INDEX、REPRO deb 存档说明;deb 标为未来计划;reference/ucm2 与采集脚本小改。
- debian 与 _bmad-output 规划文件随本次工作区一并更新。

Made-with: Cursor
2026-04-08 11:07:13 +08:00

52 lines
2.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 在用户会话里把 cml_rt5682 拉回 pro-audio + 默认 pro-output-2 + IEC958。
# 用于:开机/登录后 profile 变回 stereo-fallback导致 pro-output-*「出现又消失」。
# 根因常为 ~/.local/state/wireplumber/default-profile 里持久了 stereo-fallback见 strip-kaisa-default-profile-state.sh
# 可重复执行;建议由 systemd --user oneshot 在 pipewire-pulse 之后延迟调用(见 systemd-user/kaisa-pro-audio-reapply.service
set -euo pipefail
# 与 strip-kaisa-default-profile-state.sh 同逻辑(本脚本常被单独 symlink 到 ~/.local/bin勿依赖同目录 strip
_wp_state="${HOME}/.local/state/wireplumber/default-profile"
if [[ -f "$_wp_state" ]] && grep -q 'cml_rt5682' "$_wp_state" 2>/dev/null; then
_tmp="${_wp_state}.tmp.$$"
grep -v 'cml_rt5682' "$_wp_state" > "$_tmp"
mv -f -- "$_tmp" "$_wp_state"
echo "kaisa-reapply-pro-audio-session: 已清除 default-profile 中含 cml_rt5682 的持久行" >&2
fi
if ! command -v pactl &>/dev/null; then
echo "kaisa-reapply-pro-audio-session: 未找到 pactl" >&2
exit 1
fi
apply_once() {
local card sink
card="$(pactl list cards short 2>/dev/null | awk '/cml_rt5682/ {print $2; exit}')" || true
[[ -z "$card" ]] && return 1
pactl set-card-profile "$card" pro-audio 2>/dev/null || true
# 给 WirePlumber 一点时间生成 sink
sleep 0.4
sink="$(pactl list short sinks 2>/dev/null | awk '/cml_rt5682/ && /\.pro-output-2/ {print $2; exit}')" || true
[[ -n "$sink" ]] && pactl set-default-sink "$sink" 2>/dev/null || true
if command -v amixer &>/dev/null; then
amixer -c0 sset 'IEC958',0 on 2>/dev/null || true
amixer -c0 sset 'IEC958',1 on 2>/dev/null || true
amixer -c0 sset 'IEC958',2 on 2>/dev/null || true
fi
return 0
}
# 首次:栈可能尚未完全就绪
for _ in 1 2 3 4 5 6 7 8 9 10; do
if apply_once; then
# 再等一会GNOME 常在登录后数秒内改 profile第二次拉回去
sleep 6
apply_once || true
exit 0
fi
sleep 1
done
echo "kaisa-reapply-pro-audio-session: 超时未找到 cml_rt5682 卡pactl list cards short" >&2
exit 1