summaryrefslogtreecommitdiffstats
path: root/core/modules/alsa
diff options
context:
space:
mode:
authorSimon Rettberg2018-09-28 12:07:11 +0200
committerSimon Rettberg2018-09-28 12:07:11 +0200
commit27ba1cffa11bb0704b4e6587b11f741a4b2dc7b7 (patch)
tree645693fd00f6b3fd2a0171d06f87a73ad3c83b67 /core/modules/alsa
parent[alsa] Source config file (diff)
downloadmltk-27ba1cffa11bb0704b4e6587b11f741a4b2dc7b7.tar.gz
mltk-27ba1cffa11bb0704b4e6587b11f741a4b2dc7b7.tar.xz
mltk-27ba1cffa11bb0704b4e6587b11f741a4b2dc7b7.zip
[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.
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