kyopages/scripts/tests/test_alsa

140 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# version=1.0
# 28.11.2017
exec 6>&1 # Lie le descripteur de fichier #6 avec stdout, sauvegarde stdout
exec > tempo # stdout dans tempo
echo " ### Advanced Linux Sound Architecture ( ALSA )"
echo
## CPU
echo "CPU ( le premier ) ------------------------------------------------------"
gawk -F': ' '
/model name/ {
gsub(/ /," ")
print " "$2
exit
}
' /proc/cpuinfo
echo
## Mémoire
echo "Mémoire -----------------------------------------------------------------"
gawk '
/MemTotal|SwapTotal/ {
gsub(/kB/,"ko")
gsub(/:/,"")
printf " %-9s %\047d %s\n",$1,$2,$3
}
' /proc/meminfo
echo
## Matériel
echo "Matériel ( vidéo, réseau, son ) -----------------------------------------"
gawk '
BEGIN { IGNORECASE=1 }
/VGA .* controller|Display controller|3D controller|Graphic|multimedia/ {
print " "$0
}
/Ethernet controller|Network controller/ {
print " "$0
}
/Audio device|Audio controller|Multimedia audio controller/ &&
$0 !~ /modem|usb|webcam/ {
print " "$0
}
' <<< $( lspci )
echo
## version ALSA
echo "Version kernel et driver ALSA -------------------------------------------"
gawk '
NR == 1 { print " kernel: " $0}
NR != 1 {
sub(/Advanced Linux Sound Architecture Driver /,"Driver ALSA : ")
sub(/Version /,"")
sub(/.$/,"")
print " "$0
}
' <<< "$( uname -r )"$'\n'"$( cat /proc/asound/version )"
echo
## ALSA devices
echo "ALSA devices ------------------------------------------------------------"
if [ ! -d /dev/snd ] ; then
echo "/dev/snd/ : erreur, répertoire inexistant"
critic="snd"
else
gawk '
!/^d|total/ { print " /dev/snd/"$NF}
' <<< $( ls -l /dev/snd )
fi
echo
## asound
echo "/proc/asound ------------------------------------------------------------"
if [ ! -d /proc/asound ] ; then
echo "/proc/asound : erreur, répertoire inexistant"
echo "ALSA n'est pas installé correctement"
critic="asound"
else
gawk ' BEGIN { print " > /proc/asound/cards" }
{ print " "$0 }' /proc/asound/cards
gawk ' BEGIN { print "\n > /proc/asound/devices" }
{ print " "$0 }' /proc/asound/devices
gawk ' BEGIN { print "\n > /proc/asound/hwdep" }
{ print " "$0 }' /proc/asound/hwdep
gawk ' BEGIN { print "\n > /proc/asound/pcm" }
{ print " "$0 }' /proc/asound/pcm
gawk ' BEGIN { print "\n > /proc/asound/seq/clients" }
{ print " "$0 }' /proc/asound/seq/clients
fi
echo
## modules
echo "Modules --------------------------------------------"
if [ "$critic" ]; then
echo "erreur critique"
exit 1
fi
lsmod | grep -Eq '(^usb-midi|^audio)'
if [ $? -eq 0 ]; then
echo "Warning: OSS modules 'audio' et/ou 'usb-midi' sont chargés"
echo "cela peut interférer avec le modules ALSA snd-usb-audio."
echo "créer un fichier .conf dans /etc/modprobe.d/ pour blacklister ces DEUX modules"
if [ ! -f /etc/hotplug/blacklist ]; then
echo "You should create a file '/etc/hotplug/blacklist' with"
echo "both names on it to avoid hotplug loading them."
else
grep -Eq '(^usb-midi|^audio)' /etc/hotplug/blacklist
if [ $? -eq 1 ]; then
echo "You should add both modules to '/etc/hotplug/blacklist'"
echo "to avoid hotplug loading them."
fi
fi
fi
gawk ' BEGIN { print "\n > /proc/asound/modules" }
{ print " "$2"\n" }' /proc/asound/modules
modules=$( gawk ' { print " "$2 }' /proc/asound/modules )
modules=${modules// /}
echo -"$modules"-
# /^snd/
gawk '
#-v modules="$modules"
# /modules/ { printf " %-25s %s %2s %s\n",$1, $2, $3, $4 }
/'$( echo $modules )'/ { printf " %-25s %s %2s %s\n",$1, $2, $3, $4 }
' <<<$( lsmod )
echo
exec 1>&6 6>&- # Restaure stdout et ferme le descripteur de fichier #6
pager tempo
rm tempo
exit 0