- 新增 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
52 lines
2.1 KiB
Bash
Executable File
52 lines
2.1 KiB
Bash
Executable File
#!/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
|