Sound

Dieser Artikel beschreibt die Recherche nach Informationen zum Setup einer Soundkarte mit ALSA (Advanced Linux Sound Architecture). Es sollten folgende Pakete installiert werden: alsa-utils und alsasound . Optional kann das Paket alsamixergui für eine Verwaltung über eine grafische Oberfläche installiert werden. Natürlich ist dies nicht erforderlich. Mit Hilfe der Befehle können alle Infos gefunden / geholt werden. Bitte beachten: Je nach System (systemd vs. openrc) unterscheiden sich Befehle.

Die Aktivierung vom Sound im Kernel ist erforderlich. In meinem Fall

Build Realtek HD-audio codec support
Device Drivers --->
    <*> Sound card support
        <*> Advanced Linux Sound Architecture --->
            [*] Dynamic device file minor numbers
            (32) Max number of sound cards

Fügen Sie alsa in die Datei /etc/portage/make.conf hinzu, damit evtl Neukompilierungen mit alsa-Unterstützung kompiliert werden. Um Alsa automatisch zu starten wird folgender Befehl ausgeführt:

localhost # rc-update add alsasound boot
* service alsasound added to runlevel boot

Über den Befehl aplay kann nach erkannten Hardwaregeräten gesucht werden.

fridolin@localhost ~ $ aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: HDMI [HDA ATI HDMI], Gerät 3: Generic Digital [Generic Digital]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: Generic [HD-Audio Generic], Gerät 0: ALC887-VD Analog [ALC887-VD Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: Generic [HD-Audio Generic], Gerät 1: ALC887-VD Digital [ALC887-VD Digital]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0

fridolin@localhost ~ $ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
hdmi:CARD=HDMI,DEV=0
HDA ATI HDMI, Generic Digital
HDMI Audio Output
default:CARD=Generic
HD-Audio Generic, ALC887-VD Analog
Default Audio Device
sysdefault:CARD=Generic
HD-Audio Generic, ALC887-VD Analog
Default Audio Device
front:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
Front speakers
surround21:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Digital
IEC958 (S/PDIF) Digital Audio Output
fridolin@localhost ~ $

Welche Soundkarten werden gefunden?

localhost # lspci | grep -i audio
00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Trinity HDMI Audio Controller
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 01)

Mit dem ermittelten Controllernamen finden Sie den benötigten Treiber in der ALSA SoundCard Matrix.

Es müssen folgende Einstellungen im Kernel aktiv sein:

Alsa im Kernel

Ist Alsa im Portage aktiv? (euse ist ein Teil des Paketes app-portage/gentoolkit)

localhost # euse -E alsa
WARNING: Use flag "alsa" is already enabled globally

Falls Nein: alsa in /etc/portage/make.conf hinzufügen und ein #etc-update durchführen.

Das Paket media-sound/alsa-utils enthält einige Tools zur Fehlerbehebung und zum Testen des Soundsystems. Es empfiehlt sich, das Paket zu kompilieren, falls es noch nicht installiert ist.

Ist der User in der Gruppe audio?

fridolin@localhost /home $ groups
wheel audio

localhost# grep audio /etc/group
audio:x:18:michi

#Falls Nein:
localhost # gpasswd -a michi audio 
Benutzer michi wird zur Gruppe audio hinzugefügt.

Wurden die Soundkarten beim Start erkannt? In der dmesg werden alle Systemaktivitäten aufgezeichnet. Durch die Filterung nach Sound wird die Ausgabe angepasst.

localhost /home/fridolin # dmesg | grep sound
[ 12.734463] input: HDA ATI HDMI HDMI as /devices/pci0000:00/0000:00:01.1/sound/card0/input8
[ 12.748216] input: HD-Audio Generic Front Mic as /devices/pci0000:00/0000:00:14.2/sound/card1/input9
[ 12.748273] input: HD-Audio Generic Rear Mic as /devices/pci0000:00/0000:00:14.2/sound/card1/input10
[ 12.748339] input: HD-Audio Generic Line as /devices/pci0000:00/0000:00:14.2/sound/card1/input11
[ 12.748392] input: HD-Audio Generic Line Out as /devices/pci0000:00/0000:00:14.2/sound/card1/input12
[ 12.748458] input: HD-Audio Generic Front Headphone as /devices/pci0000:00/0000:00:14.2/sound/card1/input13

Konfigurationsdateien:
/etc/asound.conf – Globale (systemweite) Konfigurationsdatei.

~ / .asoundrc – Lokale (pro Benutzer) Konfigurationsdatei. Dese Datei kann optional verwendet werden, sodass pro Benutzer ALSA-Standardwerte überschrieben werden können.

localhost  # nano -w /etc/modprobe.d/alsa.conf
# Alsa kernel modules' configuration file.

# ALSA portion
alias char-major-116 snd
# OSS/Free portion
alias char-major-14 soundcore

##
## IMPORTANT:
## You need to customise this section for your specific sound card(s)
## and then run `update-modules' command.
## Read alsa-driver's INSTALL file in /usr/share/doc for more info.
##
## ALSA portion
## alias snd-card-0 snd-interwave
## alias snd-card-1 snd-ens1371
## OSS/Free portion
## alias sound-slot-0 snd-card-0
## alias sound-slot-1 snd-card-1
##

# OSS/Free portion - card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
## OSS/Free portion - card #2
## alias sound-service-1-0 snd-mixer-oss
## alias sound-service-1-3 snd-pcm-oss
## alias sound-service-1-12 snd-pcm-oss

alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss

# Set this to the correct number of cards.
options snd cards_limit=2

Ist das erforderliche Modul geladen?

fridolin@localhost ~ $ lsmod | grep "snd"
snd_hda_codec_realtek 69632 1
snd_hda_codec_generic 53248 2 snd_hda_codec_realtek
snd_hda_intel 32768 0
snd_hda_codec 77824 3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_core 53248 4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_realtek
snd_hwdep 16384 1 snd_hda_codec
snd_pcm 69632 3 snd_hda_intel,snd_hda_codec,snd_hda_core
snd_timer 28672 1 snd_pcm
snd 57344 6 snd_hda_intel,snd_hwdep,snd_hda_codec,snd_timersnd_hda_codec_generic,snd_pcm

Status abfragen:

localhost /home/fridolin # /etc/init.d/alsasound status
* status: started

Einmaliger Start:

localhost # /etc/init.d/alsasound start
 * Restoring Mixer Levels ... [ ok ]

Hinzufügen in den Runlevel um Alsa beim Starten zu laden

 localhost # rc-update add alsasound boot *
service alsasound added to runlevel boot

 

Eine Beispielanzeige vom Alsamixer im grafischen Modus:
   

Über speaker-test kann die Soundausgabe überprüft werden.

michi@localhost ~ $ speaker-test -c 2 -D hw:0,3

speaker-test 1.1.2

Playback device is hw:0,3
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 64 to 16384
Period size range from 32 to 8192
Using max buffer size 16384
Periods = 4
was set period_size = 4096
was set buffer_size = 16384
0 - Front Left
1 - Front Right
Time per period = 5,739853
0 - Front Left
1 - Front Right
Time per period = 5,989964
0 - Front Left
1 - Front Right
Time per period = 5,870038
0 - Front Left
1 - Front Right
Time per period = 5,989912
0 - Front Left
1 - Front Right
Time per period = 6,020624
0 - Front Left
1 - Front Right

Beispielfehler:

localhost # /etc/init.d/alsasound stop
* WARNING: you are stopping a boot service
* Storing ALSA Mixer Levels ...
alsactl: save_state:1595: No soundcards found...
* Error saving levels. [ !! ]