summaryrefslogtreecommitdiffstats
path: root/core/modules/alsa
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/alsa')
-rwxr-xr-xcore/modules/alsa/data/opt/openslx/scripts/alsa-default_card27
1 files changed, 15 insertions, 12 deletions
diff --git a/core/modules/alsa/data/opt/openslx/scripts/alsa-default_card b/core/modules/alsa/data/opt/openslx/scripts/alsa-default_card
index 0bc7d7dd..3d6141aa 100755
--- a/core/modules/alsa/data/opt/openslx/scripts/alsa-default_card
+++ b/core/modules/alsa/data/opt/openslx/scripts/alsa-default_card
@@ -1,6 +1,6 @@
#!/bin/ash
-PROC="/proc/asound/cards"
+PROC="/proc/asound/pcm"
if [ ! -r "$PROC" ]; then
echo "'${PROC}' not found or not readable."
@@ -26,22 +26,25 @@ GREPOPT="-v"
if [ "x$SLX_PREFERRED_SOUND_OUTPUT" = "xHDMI" ]; then
GREPOPT=
fi
-# Try to filter HDMI cards first
-CARD=$(grep $GREPOPT -i 'HDMI' "${PROC}" | grep -E -o '^[[:space:]]*[0-9]+[[:space:]]+' | head -n 1)
-# If empty, try again with all
-[ -z "${CARD}" ] && CARD=$(cat "${PROC}" | grep -E -o '^[[:space:]]*[0-9]+[[:space:]]+' | head -n 1)
+# Try to filter/prefer HDMI cards
+< <( sort -u "${PROC}" | grep $GREPOPT -i HDMI -m 1 | cut -c1-5 | tr -- '-' ' ' ) read card device _
-if [ -z "${CARD}" ]; then
- echo "No sound card found."
- exit 1
+# If empty, do nothing so defaults get used
+if [ -z "${card}" ]; then
+ echo "No suitable sound card found, defaults apply."
+ exit 0
fi
+# Remove leading zero if any (both values are two digit)
+card=${card#0}
+device=${device#0}
+
cat > "${FILE}" <<HEREDOC
-defaults.pcm.!card $CARD
-defaults.ctl.!card $CARD
+defaults.pcm.!card $card
+defaults.ctl.!card $card
-defaults.pcm.!device 0
-defaults.ctl.!device 0
+defaults.pcm.!device $device
+defaults.ctl.!device $device
HEREDOC