fix(kiosk): track /etc/asound.conf in image-recipe and sync it on deploy
Routes ALSA's "default" device through PulseAudio/PipeWire. Was a manual, untracked fix living only on archy-x250-exp — a reprovision or fresh image would silently lose it, same failure mode that already bit the GPU-flags and CPUQuota fixes. Wired into deploy-to-target.sh (both the primary --live path and the .198/.253 secondary-copy path) and deploy-tailscale.sh, mirroring the existing 99-mesh-radio.rules udev sync pattern (diff-check, copy if changed). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
23e04b1859
commit
81f1c7ed24
7
image-recipe/configs/asound.conf
Normal file
7
image-recipe/configs/asound.conf
Normal file
@ -0,0 +1,7 @@
|
||||
pcm.!default {
|
||||
type pulse
|
||||
hint.description "Default ALSA Device (via PulseAudio)"
|
||||
}
|
||||
ctl.!default {
|
||||
type pulse
|
||||
}
|
||||
@ -425,6 +425,22 @@ deploy_node() {
|
||||
' 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# ── Deploy ALSA default-device config ────────────────────────────
|
||||
ASOUND_CONF="$PROJECT_DIR/image-recipe/configs/asound.conf"
|
||||
if [ -f "$ASOUND_CONF" ]; then
|
||||
step "Deploying ALSA default-device config"
|
||||
scp $SSH_OPTS "$ASOUND_CONF" "$TARGET:/tmp/asound.conf" 2>/dev/null || true
|
||||
ssh $SSH_OPTS "$TARGET" '
|
||||
if ! diff -q /tmp/asound.conf /etc/asound.conf >/dev/null 2>&1; then
|
||||
sudo cp /tmp/asound.conf /etc/asound.conf
|
||||
echo " Installed"
|
||||
else
|
||||
echo " Unchanged"
|
||||
fi
|
||||
rm -f /tmp/asound.conf
|
||||
' 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# ── Step 18: NTP + swap ──────────────────────────────────────────
|
||||
step "Ensuring NTP + swap"
|
||||
ssh $SSH_OPTS "$TARGET" '
|
||||
|
||||
@ -456,6 +456,22 @@ deploy_secondary() {
|
||||
' 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Deploy ALSA default-device config (routes ALSA "default" through PulseAudio/PipeWire)
|
||||
ASOUND_CONF="$PROJECT_DIR/image-recipe/configs/asound.conf"
|
||||
if [ -f "$ASOUND_CONF" ]; then
|
||||
echo " Syncing ALSA default-device config to .$SEC_LABEL..."
|
||||
scp $SSH_OPTS "$ASOUND_CONF" "$SEC_TARGET:/tmp/asound.conf" 2>/dev/null || true
|
||||
ssh $SSH_OPTS "$SEC_TARGET" '
|
||||
if ! diff -q /tmp/asound.conf /etc/asound.conf >/dev/null 2>&1; then
|
||||
sudo cp /tmp/asound.conf /etc/asound.conf
|
||||
echo " ALSA default-device config installed"
|
||||
else
|
||||
echo " ALSA default-device config unchanged"
|
||||
fi
|
||||
rm -f /tmp/asound.conf
|
||||
' 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Dev mode + FileBrowser
|
||||
ssh $SSH_OPTS "$SEC_TARGET" '
|
||||
# Dev mode
|
||||
@ -762,6 +778,23 @@ if [ "$LIVE" = true ]; then
|
||||
' 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Deploy ALSA default-device config (routes ALSA "default" through
|
||||
# PulseAudio/PipeWire — without it Chromium's raw ALSA fallback can't
|
||||
# reach the HDMI sink and kiosk HDMI audio is silent).
|
||||
ASOUND_CONF="$PROJECT_DIR/image-recipe/configs/asound.conf"
|
||||
if [ -f "$ASOUND_CONF" ]; then
|
||||
scp $SSH_OPTS "$ASOUND_CONF" "$TARGET_HOST:/tmp/asound.conf" 2>/dev/null || true
|
||||
ssh $SSH_OPTS "$TARGET_HOST" '
|
||||
if ! diff -q /tmp/asound.conf /etc/asound.conf >/dev/null 2>&1; then
|
||||
sudo cp /tmp/asound.conf /etc/asound.conf
|
||||
echo " ALSA default-device config installed"
|
||||
else
|
||||
echo " ALSA default-device config unchanged"
|
||||
fi
|
||||
rm -f /tmp/asound.conf
|
||||
' 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Deploy Claude API proxy (auto-install if missing)
|
||||
progress "Setting up Claude API proxy"
|
||||
ssh $SSH_OPTS "$TARGET_HOST" '
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user