[Eisfair_dev] [E1] Problem mit alsa

Thomas Bork tom at eisfair.org
Sa Apr 22 20:50:10 CEST 2017


Am 22.04.2017 um 00:02 schrieb Sascha Pohl:

> Mit dem alten Kernel war nach jedem Neustart lediglich die Lautstärke
> auf den Wert 0 gesetzt.

Das war auch schon falsch. Dann hattest Du wohl doch schon eine halbwegs 
aktuelle base mit udev und damit einen Kernel mit devfs.

Ich hab mir mal den Spass gemacht und eine VM mit einem alten Installer 
hochgezogen. alsa installiert und konfiguriert und dann beobachtet, wann 
es nicht mehr funktioniert, die alten Mixereinstellungen zu speichern 
und zurück zu holen.

Das passiert genau dann, wenn eine base mit udev installiert ist, die 
einen Kernel mit devfs voraussetzt.

In dem Fall existiert das Verzeichnis /proc/asound schon vor dem Start 
von alsa und damit werden bestimmte Teile der Skripte nicht mehr 
durchlaufen - start wird z.B. nur durchlaufen, wenn /proc/asound nicht 
existiert:

case "$1" in
start)
     # Start driver if it isn't already up
     if [ ! -d /proc/asound ]; then
       start
     else
       boot_mesg "   alsa sound driver is already running."
       echo_warning
     fi
     ;;

Kann so also nicht mehr funktionieren.
Wie wärs mit

# See how we were called
case "$1" in
start)
     # Start driver if it isn't already up
     if [ ! -f /var/lock/subsys/alsasound ]; then
       start
     else
       boot_mesg "   alsa sound driver is already running."
       echo_warning
     fi
     ;;
stop)
     # Stop daemons
     boot_mesg " * Stopping alsa ..."
     if [ -f /var/lock/subsys/alsasound ]; then
       terminate
       stop
     fi
     evaluate_retval
     ;;
restart|reload)
     $0 stop
     $0 start
     ;;
status)
     if [ -f /var/lock/subsys/alsasound ]; then
       echo "alsa sound driver loaded."
     else
       echo "alsa sound driver not loaded."
     fi
     ;;
*)
     echo "Usage: alsa {start|stop|restart|status}"
     exit 1
esac

? Hier wird lediglich auf das Lockfile /var/lock/subsys/alsasound 
getestet, welches die Funktion start anlegt.

Getestet auf einem System mit

base     : 2.7.11
eiskernel: 2.32.1 (3.2.87-eisfair-1-PAE)

, was aber keine Rolle spielen dürfte - sollte genau so mit 3.16 laufen. 
Dann kannst Du Deine eigene Routine zur Sicherung und Rücksicherung der 
state-Datei wieder rausnehmen.

> server # /etc/init.d/alsa stop
>   * Stopping alsa ...
> rmmod: ERROR: Module snd_hda_codec_realtek is in use
> rmmod: ERROR: Module snd_hda_codec_generic is in use by:
> snd_hda_codec_realtek
> rmmod: ERROR: Module snd_hda_codec_hdmi is in use
> rmmod: ERROR: Module snd_hda_codec is in use by: snd_hda_codec_realtek
> snd_hda_codec_hdmi snd_hda_codec_generic
> rmmod: ERROR: Module snd_pcm is in use by: snd_hda_codec_hdmi snd_hda_codec
> rmmod: ERROR: Module snd_timer is in use by: snd_pcm
> rmmod: ERROR: Module snd is in use by: snd_hda_codec_realtek snd_timer
> snd_hda_codec_hdmi snd_pcm snd_hda_codec_generic snd_hda_codec
>   [  OK  ]
> server # /etc/init.d/alsa start
>     alsa sound driver is already running.
> 
> [ WARN ]

Zeig mal

cat /etc/modprobe.d/50-sound.conf

-- 
der tom
[eisfair-team]


Mehr Informationen über die Mailingliste Eisfair_dev