#!/bin/bash # Bridges USB gadget host volume (Windows slider) -> ES8323 sink volume/mute. # Host speaker volume appears on UAC2Gadget control numid=7 (PCM Capture Volume); # f_uac2 exposes it but does not scale samples, so we apply it here. set -u export XDG_RUNTIME_DIR=/run/user/1000 CARD=UAC2Gadget SINK=alsa_output.platform-es8323-sound.stereo-fallback apply() { local v m v=$(amixer -c "$CARD" cget numid=7 2>/dev/null | awk -F= '/: values=/{print $2; exit}') m=$(amixer -c "$CARD" cget numid=6 2>/dev/null | awk -F= '/: values=/{print $2; exit}') [ -z "$v" ] && return 0 pactl set-sink-volume "$SINK" "${v}%" 2>/dev/null case "$m" in off|0) pactl set-sink-mute "$SINK" 1 2>/dev/null ;; *) pactl set-sink-mute "$SINK" 0 2>/dev/null ;; esac } apply stdbuf -oL alsactl monitor hw:"$CARD" 2>/dev/null | while IFS= read -r _l; do apply; done