Gentoo Alsa Pulseaudio - Alsa-Mixer funktioniert; Aplay direkt auf hw:1,0 funktioniert; Aplay auf einem der konfigurierten PCM funktioniert nicht.

Gentoo Alsa Pulseaudio - Alsa-Mixer funktioniert; Aplay direkt auf hw:1,0 funktioniert; Aplay auf einem der konfigurierten PCM funktioniert nicht.

Wenn der Pulseaudio-Daemonnichtläuft, kann ich mit aplay Ton an die Lautsprecher senden mit

aplay -Dhw:1,0 sample.wav

alsamixer scheint das zu tun, was ich erwarte, indem es die Lautstärke auf der Karte steuert, wenn ich wie oben spiele; insbesondere beeinflussen die Master- und Frontkanäle die Lautstärke des oben abgespielten Samples.

Wenn ich aplay -L ausführe, werden eine Reihe von PCMs aufgelistet. Wenn ich eines dieser PCMs für aplay auswähle, ist überhaupt kein Ton zu hören. Wenn pulseaudio ausgeführt wird, schlägt aplay stillschweigend fehl. Wenn pulseaudio nicht ausgeführt wird, schlägt es mit einem Fehler 2 fehl, Datei kann nicht geöffnet werden.

Die meisten Sound-Apps scheinen keine Low-Level-Spezifikationen der Sound-Hardware zuzulassen, daher bekomme ich außer über Aplay überhaupt keinen Ton. Ich glaube, das Problem liegt darin, dass die PCM-Namen auf höherer Ebene den Hardwaregeräten nicht richtig zugeordnet werden.

Ich möchte darauf hinweisen, dass ein älterer Kernel ohne Pulseaudio auf dieser Maschine keine Soundprobleme hatte.

Diese erzeugen keinen Ton:

aplay -Dfront sample.wav
aplay -Dpulse sample.wav

aplay -L Ausgabe:

null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
hdmi:CARD=HDMI,DEV=0
    HDA Intel HDMI, HDMI 0
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=1
    HDA Intel HDMI, HDMI 1
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=2
    HDA Intel HDMI, HDMI 2
    HDMI Audio Output
default:CARD=PCH
    HDA Intel PCH, ALC892 Analog
    Default Audio Device
sysdefault:CARD=PCH
    HDA Intel PCH, ALC892 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    Front speakers
surround21:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Digital
    IEC958 (S/PDIF) Digital Audio Output

aplay -l Ausgabe

card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Antwort1

Die Antwort für mich war, dass Pulseaudio entweder udev falsch interpretierte oder udev ihm die falsche Konfiguration übergab – ich weiß über beides nicht genug, um die Frage zu entscheiden. Wenn ich die Datei default.pa von Pulse audio ändere, um die Hardwarekonfiguration explizit festzulegen, anstatt sie von udev zu erhalten, funktioniert es.

In default.pa musste ich diese beiden Zeilen auskommentieren:

load-module module-alsa-sink device=hw:1,0
load-module module-alsa-source device=hw:1,0

und kommentieren Sie diese Zeilen:

### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
#.else
### Use the static hardware detection module (for systems that lack udev support)
#load-module module-detect
#.endif

Antwort2

Um die richtige Karte auszuwählen, müssen Sie den vollständigen Gerätenamen eingeben:

aplay -D front:CARD=PCH,DEV=0 sample.wav

Um die Standardkarte zu ändern, fügen Sie der globalen Karte /etc/asound.confoder Ihrer Karte etwas wie Folgendes hinzu ~/.asoundrc:

defaults.ctl.card "PCH"
defaults.pcm.card "PCH"

Damit PulseAudio die richtige Karte verwendet, müssen Sie sie konfigurieren (versuchen Sie es pavucontrol).

verwandte Informationen