From 27ba1cffa11bb0704b4e6587b11f741a4b2dc7b7 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 28 Sep 2018 12:07:11 +0200 Subject: [alsa] Detect usable device index for card, don't just assume 0 exists This still doesn't try to be smart and detect which device of a card to use, but at least we prevent using nonexistent index 0 with HDMI for example. --- .../data/opt/openslx/scripts/alsa-default_card | 27 ++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'core/modules/alsa') 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}" <