Soundkarte – Probs mit Alsa

Symptom: Der Sound funktioniert nicht.

Die Anleitung zur Installation und Konfiguration gibt es hier

Dieser Beitrag beschäftigt sich mit Problemen im Soundbereich
Eine Überprüfung der Funktion der Soundkarte kann über den Speakertest durchgeführt werden.  Es erfolgt eine Fehlermeldung mit verschiedenen Infos. Hauptpunkt ist die Aussage „(parse_card) cannot find card ‚0‘“  – also die Karte wird vom Alsa nicht gefunden bzw. erkannt.

Speaker Test

Speaker-Test ist ein util des Paketes alsa-utils.

michi-kiste /home/michi # speaker-test

speaker-test 1.1.2

Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
Using 16 octaves of pink noise
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/conf.c:4371:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/conf.c:4371:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/conf.c:4371:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/conf.c:4850:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM default
Playback open error: -2,No such file or directory

 Die grafische Ansicht der Alsakonfiguration kann über den alsamixergui gestartet werden. Das Paket alsamixer muss installiert sein.  Leider wird auch hier keine Karte angezeigt.

 

Das häufigste Problem bei der Konfiguration der Hardware besteht in der Konfiguration / Aktivierung der Module. Unter Windows sind es die Treiber , unter Linux die Module …
Die Module werden entweder manuell über lsmod und Angabe des Modulnamens  oder durch im Kernel aktivierte Module konfiguriert.

Über lspci -v kann die Hardware detailliert aufgelistet werden. Es werden 2 Soundkarten erkannt:

Auszug lspci -v :

00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 01)
Subsystem: ASUSTeK Computer Inc. FCH Azalia Controller
Flags: bus master, slow devsel, latency 32, IRQ 5
Memory at feb40000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Kernel modules: snd_hda_intel

00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Trinity HDMI Audio Controller
Subsystem: ASUSTeK Computer Inc. Trinity HDMI Audio Controller
Flags: bus master, fast devsel, latency 0, IRQ 10
Memory at feb44000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Kernel modules: snd_hda_intel

In beiden Versionen wird das Kernel Modul snd_hda_intel angezeigt. Nun kann überprüft werden, ob die Module im Kernel aktiviert sind.  Bei der Angabe =m sind die Module eingestellt. Bei y wurden die Komponenten fest in den Kernel eingebunden. Eine Filterung der Kerneldatei nach SND_HDA erfolgt:

michi-kiste /home/michi # cat /usr/src/linux/.config | grep SND_HDA
CONFIG_SND_HDA=m
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
# CONFIG_SND_HDA_INPUT_BEEP is not set
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=m
CONFIG_SND_HDA_CODEC_ANALOG=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_CIRRUS=m
CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CA0110=m
CONFIG_SND_HDA_CODEC_CA0132=m
# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
CONFIG_SND_HDA_CODEC_CMEDIA=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_GENERIC=m
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
CONFIG_SND_HDA_CORE=m
CONFIG_SND_HDA_I915=y
CONFIG_SND_HDA_PREALLOC_SIZE=64

 

Ein Test unter Linux -Mint

Auf einer anderen Partition nutze ich Linux-Mint. Darunter wird die Karte erkannt und die Lautsprecher (extern) funktionieren.  Es brachte folgendes Gerät als korrekt heraus:

00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 01)
Subsystem: ASUSTeK Computer Inc. FCH Azalia Controller
Flags: bus master, slow devsel, latency 32, IRQ 16
Memory at feb40000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel

Hier wird auch das Kernel – Modul snd_hda_intel genutzt. Die Anzeige des Alsamixer Gui ist korrekt und funktioniert.

 

Somit versuche ich in Gentoo das Modul manuell zu laden. Dies ist erfolgreich.

michi-kiste /home/michi # modprobe -vv snd_hda_intel
modprobe: INFO: custom logging function 0x40a030 registered
modprobe: INFO: context 0x623260 released

Um das Modul standardmäßig zu aktivieren habe ich es in die Datei /etc/conf.d/modules hinzugefügt:

# You should consult your kernel documentation and configuration
# for a list of modules and their options.
modules="snd_hda_intel"
modules lines 1-28/28 (END)

In der Systemmeldung werden Informationen zum Abruf angezeigt:

Auszug dmesg:

[ 1085.374817] snd_hda_intel 0000:00:01.1: Force to non-snoop mode
[ 1085.384298] input: HDA ATI HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.1/sound/card1/input4
[ 1085.387403] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC887-VD: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:line
[ 1085.387405] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 1085.387407] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
[ 1085.387407] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0
[ 1085.387408] snd_hda_codec_realtek hdaudioC0D0: dig-out=0x11/0x0
[ 1085.387409] snd_hda_codec_realtek hdaudioC0D0: inputs:
[ 1085.387411] snd_hda_codec_realtek hdaudioC0D0: Front Mic=0x19
[ 1085.387412] snd_hda_codec_realtek hdaudioC0D0: Rear Mic=0x18
[ 1085.387413] snd_hda_codec_realtek hdaudioC0D0: Line=0x1a
[ 1085.400047] input: HD-Audio Generic Front Mic as /devices/pci0000:00/0000:00:14.2/sound/card0/input5
[ 1085.400099] input: HD-Audio Generic Rear Mic as /devices/pci0000:00/0000:00:14.2/sound/card0/input6
[ 1085.400147] input: HD-Audio Generic Line as /devices/pci0000:00/0000:00:14.2/sound/card0/input7
[ 1085.400203] input: HD-Audio Generic Line Out as /devices/pci0000:00/0000:00:14.2/sound/card0/input8
[ 1085.400247] input: HD-Audio Generic Front Headphone as /devices/pci0000:00/0000:00:14.2/sound/card0/input9

Nach der Aktivierung des snd Moduls in Gentoo werden Komponenten erfolgreich gestartet. Leider höre ich keinen Sound. Die Verkabelung und Lautstärke habe ich überprüft.

michi-kiste /etc/conf.d # speaker-test

speaker-test 1.1.2

Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 2048 to 8192
Period size range from 1024 to 1024
Using max buffer size 8192
Periods = 4
was set period_size = 1024
was set buffer_size = 8192
0 - Front Left
Time per period = 2.836984
0 - Front Left
Time per period = 2.986638
0 - Front Left

 
Es stellte sich heraus, dass der Masterkanal auf mute (stumm) geschaltet ist. Durch Drücken der Taste m kann man die soundausgabe aktivieren oder deaktivieren.

Nun ist eine Nutzung als root vollständig ok. Bei dem Versuch als User bekomme ich einen Fehler.

michi@michi-kiste ~/Downloads $ aplay audiocheck.net_hdsweep_1Hz_44000Hz_-3dBFS_30s.wav
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/conf.c:4371:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/conf.c:4371:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/conf.c:4371:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/conf.c:4850:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:786: audio open error: No such file or directory

 

Wichtig ist die Überprüfung, ob der User in der Gruppe audio ist. Durch id werden die zum User gehörenden Gruppen angezeigt:

michi@michi-kiste ~/Downloads $ id
uid=1000(michi) gid=18(audio) groups=18(audio),10(wheel),100(users),235(plugdev)

Die Festlegung erfolgt über die Datei /etc/groups

 

Michi gehört zur Gruppe audio. Sollte dies nicht der Fall sein, kann über den Befehl  gpasswd -a username audio der User der Gruppe hinzugefügt werden.

Ein Start des alsamixer ist als root erfolgreich. Als User kommt ein Fehler.

michi-kiste ~ # alsamixer
michi-kiste ~ # su michi
michi@michi-kiste /root $ alsamixer
cannot open mixer: No such file or directory

Ich bekam die Anregung die Rechte des Audio-Devices zu überprüfen. Dies erfolgt über den Abruf im Verzeichnis /dev/snd

michi-kiste /dev/snd # ls -all
total 0
drwxr-xr-x 3 root root 260 Nov 18 13:22 .
drwxr-xr-x 16 root root 3640 Nov 18 13:38 ..
drwxr-xr-x 2 root root 80 Nov 18 13:22 by-path
crw-rw---- 1 root root 116, 5 Nov 18 13:22 controlC0
crw-rw---- 1 root root 116, 2 Nov 18 13:22 controlC1
crw-rw---- 1 root root 116, 10 Nov 18 13:22 hwC0D0
crw-rw---- 1 root root 116, 4 Nov 18 13:22 hwC1D0
crw-rw---- 1 root root 116, 7 Nov 18 17:03 pcmC0D0c
crw-rw---- 1 root root 116, 6 Nov 18 17:03 pcmC0D0p
crw-rw---- 1 root root 116, 8 Nov 18 17:03 pcmC0D1p
crw-rw---- 1 root root 116, 9 Nov 18 13:22 pcmC0D2c
crw-rw---- 1 root root 116, 3 Nov 18 17:03 pcmC1D3p
crw-rw---- 1 root root 116, 33 Nov 18 13:22 timer

Hier wurden die Dateien nur mit Recht root root angezeigt. Nicht mit root audio. Durch Hinzufügen von udev in den Runlevel sysinit wurde dies Problem gelöst.

michi-kiste /dev/snd # rc-update add udev sysinit

michi-kiste /dev/snd # ls -all
total 0
drwxr-xr-x 3 root root 260 Nov 18 13:22 .
drwxr-xr-x 16 root root 3640 Nov 18 13:38 ..
drwxr-xr-x 2 root root 80 Nov 18 13:22 by-path
crw-rw---- 1 root audio 116, 5 Nov 18 13:22 controlC0
crw-rw---- 1 root audio 116, 2 Nov 18 13:22 controlC1
crw-rw---- 1 root audio 116, 10 Nov 18 13:22 hwC0D0
crw-rw---- 1 root audio 116, 4 Nov 18 13:22 hwC1D0
crw-rw---- 1 root audio 116, 7 Nov 18 17:03 pcmC0D0c
crw-rw---- 1 root audio 116, 6 Nov 18 17:03 pcmC0D0p
crw-rw---- 1 root audio 116, 8 Nov 18 17:03 pcmC0D1p
crw-rw---- 1 root audio 116, 9 Nov 18 13:22 pcmC0D2c
crw-rw---- 1 root audio 116, 3 Nov 18 17:03 pcmC1D3p
crw-rw---- 1 root audio 116, 33 Nov 18 13:22 timer


michi@michi-kiste /dev/snd $ speaker-test

speaker-test 1.1.2

Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 2048 to 8192
Period size range from 1024 to 1024
Using max buffer size 8192
Periods = 4
was set period_size = 1024
was set buffer_size = 8192
0 - Front Left
Time per period = 2.836924
0 - Front Left

Problem gelöst. Der Sound funktioniert jetzt auch als User

Sollte der Sound unter Firefox Probleme machen muss evtl. das passende Plugin installiert werden. Ausführliche Infos gibt es unter https://support.mozilla.org/de/kb/Video-oderAudiodateien-koennen-nicht-abgespielt-werden

 

Weitere Fehlermeldung aus dem Bereich:

localhost# speaker-test

speaker-test 1.1.2

Wiedergabe-Gerät ist default
Stream-Parameter sind 48000 Hz, S16_LE, 1 Kanäle
Verwende 16 Oktaven rosa Rauschen
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.2/work/alsa-lib-1.1.2/src/pcm/pcm_dmix.c:1041:(snd_pcm_dmix_open) unable to open slave
Fehler beim Öffnen des Gerätes: -2, Datei oder Verzeichnis nicht gefunden

Autostart Fluxbox

Ich hatte Probleme mit dem Autostart unter Fluxbox. Es wurden die Programme nicht gestartet.

Der Start von Fluxbox erfolgt über startx. Die Festlegung des windowmanager erfolgt über  die Datei ~./xinitrc  Beim Start kam die Fehlermeldung: Couldn’t connect to XServer passing null display
Um den Fehler genauer zu identifizieren ist es sinnvoll, eine LOG Datei anzulegen. Dazu fügt man folgende Zeile in die Datei .fluxbox/startup hinzu: exec fluxbox -log „/home/michi/.fluxbox/log“ Nach einem Neustart des Fluxbox sollte eine LOG-Datei erstellt werden.
Durch den Abruf der LOG-Datei wurde der Fehler angezeigt: 


Log Datei: /home/michi/.fluxbox/log
Fluxbox Version: 1.3.7-gentoo-r3
GIT Revision: unknown
Kompiliert am: Oct 13 2017 12:46:29
Compiler: GCC
Compilerversion: 5.4.0

Standardeinstellungen/-Dateien:
menu: /usr/share/fluxbox/menu
windowmenu: /usr/share/fluxbox/windowmenu
style: /usr/share/fluxbox/styles/Emerge
keys: /usr/share/fluxbox/keys
init: /usr/share/fluxbox/init
nls: /usr/share/fluxbox/nls

Einkompilierte Optionen (- => deaktiviert):
-BIDI
-DEBUG
EWMH
IMLIB2
NLS
REMEMBER
RENDER
SHAPE
SLIT
SYSTEMTRAY
TOOLBAR
RANDR
XFT
-XINERAMA
XMB
XPM

------------------------------------------
Fehler: Couldn't connect to XServer passing null display

 

 

Wenn in Fluxbox ein Autostart angelegt werden soll sind 2 Dateien wichitg: die .xinitrc im Heimatverzeichnis und die .fluxbox/startup
Wenn Sie X starten, entweder über ’startx‘ oder durch Ihren Anzeigemanager, wird startfluxbox ausgeführt, welches auf die Datei ~ / .fluxbox / startup zugreift. Sobald dieses Skript sein Ende erreicht, wird der X-Server heruntergefahren (oder Sie kehren zu Ihrem Login-Manager zurück). Aus diesem Grund müssen Sie standardmäßig exec fluxbox als letzte Zeile in Ihrem Skript oder im letzteren Fall die Zeile wait $ fbpid haben, die beide die Ausführung des Skripts anhalten wird, bis fluxbox beendet wird. Dadurch wird sichergestellt, dass der X-Server so lange weiterläuft, wie fluxbox selbst läuft, was normalerweise gewünscht wird – Ihre Sitzung wird sonst sehr kurz sein;

http://fluxbox-wiki.org/category/howtos/en/Editing_the_startup_file.html

Wenn

exec / usr / bin / fluxbox

im Autostart steht, müssen Sie in die .xinitrc

exec startfluxbox

schreiben

Beispieldateien:

localhost $ less .xinitrc
exec startfluxbox
nm-applet&
localhost $ less .fluxbox/startup
#!/bin/sh
#
# fluxbox startup-script:
#
# Lines starting with a '#' are ignored.

# Applications you want to run with fluxbox.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END.
## And last but not least we start fluxbox.
# Because it is the last app you have to run it with ''exec'' before it.

nm-applet &
thunderbird &