Mein Sound hat heute aufgehört zu funktionieren. Wie kann ich ihn beheben?

19

Dies scheint ein Problem mit pulseaudio zu sein. Ich war über VNC auf meinem Handy angemeldet und habe angefangen, ein Video abzuspielen. Dies führte zum Absturz von X (wie es manchmal vorkommt). Ich habe neu gestartet und plötzlich funktioniert der Ton nicht mehr.

  • Ich habe einen Intel HDA / Realtek ALC889

    00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
    
  • alsamixer erkennt dies ganz gut.
  • PulseAudio erkennt dieses alsa Gerät nicht und verwendet es daher auto_nullals Standardsenke (Protokolle unten).
  • Wenn ich PulseAudio ordnungsgemäß beendet habe (sage, dass es nicht automatisch gestartet werden soll), funktioniert die direkte ALSA-Kommunikation mit der Soundkarte einwandfrei. speaker-testfunktioniert zum Beispiel. Also die Hardware- und ALSA-Schichten sind in Ordnung, IMO.
  • In den Protokollen scheint es, dass die Karte "beschäftigt" ist, aber ich weiß wirklich nicht, wie oder warum sie jetzt (und nie zuvor) sein würde. Gibt es irgendwo eine ALSA-Sperrdatei, die es wegen meines Absturzes noch gibt?
  • Ich bin gerade gelaufen sudo fuser /dev/snd/*und habe folgendes gesehen:

    oli@bert:~$ sudo fuser /dev/snd/*
    /dev/snd/controlC0:   1884
    /dev/snd/pcmC0D0c:    1884m
    /dev/snd/timer:       1884
    

    Ein Blick auf die Prozessliste ( ps aux | grep 1884) sagt mir, dass Prozess 1884 ist arecord -c 1 -f S16_LE -r 8000 -t raw. Keine Ahnung was das ist oder warum es läuft.

  • Wenn ich versuche arecord(als root) zu töten , wird die Hardware neu gestartet und neu gebunden.

Ich bin in einer sehr ärgerlichen Situation, in der ich nicht weiß, was los ist und nicht weiß, wie ich es herausfinden soll. Ich bin offen für alle Vorschläge, um dies wieder zum Laufen zu bringen. Feuer weg.

Und hier ist, was ich bekomme, wenn ich das automatische Laden von PA stoppe, töte und dann damit beginne -vvvv.

oli@bert:~$ pulseaudio -vvvvv
I: main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
I: main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
D: core-rtclock.c: Timer slack is set to 50 us.
D: core-util.c: RealtimeKit worked.
I: core-util.c: Successfully gained nice level -11.
I: main.c: This is PulseAudio 0.9.21-63-gd3efa-dirty
D: main.c: Compilation host: x86_64-pc-linux-gnu
D: main.c: Compilation CFLAGS: -g -O2 -g -Wall -O3 -Wall -W -Wextra -pipe -Wno-long-long -Winline -Wvla -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing=2 -Wwrite-strings -Wno-unused-parameter -ffast-math -Wp,-D_FORTIFY_SOURCE=2 -fno-common -fdiagnostics-show-option
D: main.c: Running on host: Linux x86_64 2.6.38-rc3 #1 SMP Tue Feb 1 10:53:04 GMT 2011
D: main.c: Found 8 CPUs.
I: main.c: Page size is 4096 bytes
D: main.c: Compiled with Valgrind support: no
D: main.c: Running in valgrind mode: no
D: main.c: Running in VM: no
D: main.c: Optimised build: yes
D: main.c: All asserts enabled.
I: main.c: Machine ID is 8310740c4729ef474fe5ecec4bbf5a6b.
I: main.c: Session ID is 8310740c4729ef474fe5ecec4bbf5a6b-1297338553.571075-1050119523.
I: main.c: Using runtime directory /home/oli/.pulse/8310740c4729ef474fe5ecec4bbf5a6b-runtime.
I: main.c: Using state directory /home/oli/.pulse.
I: main.c: Using modules directory /usr/lib/pulse-0.9.21/modules.
I: main.c: Running in system mode: no
I: main.c: Fresh high-resolution timers available! Enjoy ol' chap!
I: cpu-x86.c: CPU flags: CMOV MMX SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 
I: svolume_mmx.c: Initialising MMX optimized functions.
I: remap_mmx.c: Initialising MMX optimized remappers.
I: svolume_sse.c: Initialising SSE2 optimized functions.
I: remap_sse.c: Initialising SSE2 optimized remappers.
I: sconv_sse.c: Initialising SSE2 optimized conversions.
D: memblock.c: Using shared memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
D: database-tdb.c: Opened TDB database '/home/oli/.pulse/8310740c4729ef474fe5ecec4bbf5a6b-device-volumes.tdb'
I: module-device-restore.c: Sucessfully opened database file '/home/oli/.pulse/8310740c4729ef474fe5ecec4bbf5a6b-device-volumes'.
I: module.c: Loaded "module-device-restore" (index: #0; argument: "").
D: database-tdb.c: Opened TDB database '/home/oli/.pulse/8310740c4729ef474fe5ecec4bbf5a6b-stream-volumes.tdb'
I: module-stream-restore.c: Sucessfully opened database file '/home/oli/.pulse/8310740c4729ef474fe5ecec4bbf5a6b-stream-volumes'.
I: module.c: Loaded "module-stream-restore" (index: #1; argument: "").
D: database-tdb.c: Opened TDB database '/home/oli/.pulse/8310740c4729ef474fe5ecec4bbf5a6b-card-database.tdb'
I: module-card-restore.c: Sucessfully opened database file '/home/oli/.pulse/8310740c4729ef474fe5ecec4bbf5a6b-card-database'.
I: module.c: Loaded "module-card-restore" (index: #2; argument: "").
I: module.c: Loaded "module-augment-properties" (index: #3; argument: "").
D: cli-command.c: Checking for existance of '/usr/lib/pulse-0.9.21/modules/module-udev-detect.so': success
D: module-udev-detect.c: /dev/snd/controlC0 is accessible: yes
D: module-udev-detect.c: /devices/pci0000:00/0000:00:1b.0/sound/card0 is busy: yes
I: module-udev-detect.c: Found 1 cards.
I: module.c: Loaded "module-udev-detect" (index: #4; argument: "").
D: cli-command.c: Checking for existance of '/usr/lib/pulse-0.9.21/modules/module-bluetooth-discover.so': success
D: dbus-util.c: Successfully connected to D-Bus system bus ba7c9a1f90b3d49d930bca2100000015 as :1.62
D: bluetooth-util.c: dbus: interface=org.freedesktop.DBus, path=/org/freedesktop/DBus, member=NameAcquired
D: bluetooth-util.c: Bluetooth daemon is apparently not available.
I: module.c: Loaded "module-bluetooth-discover" (index: #5; argument: "").
D: cli-command.c: Checking for existance of '/usr/lib/pulse-0.9.21/modules/module-esound-protocol-unix.so': success
I: module.c: Loaded "module-esound-protocol-unix" (index: #6; argument: "").
I: module.c: Loaded "module-native-protocol-unix" (index: #7; argument: "").
D: cli-command.c: Checking for existance of '/usr/lib/pulse-0.9.21/modules/module-gconf.so': success
I: module.c: Loaded "module-gconf" (index: #8; argument: "").
I: module-default-device-restore.c: Saved default sink 'auto_null' not existant, not restoring default sink setting.
I: module-default-device-restore.c: Saved default source 'auto_null.monitor' not existant, not restoring default source setting.
I: module.c: Loaded "module-default-device-restore" (index: #9; argument: "").
I: module.c: Loaded "module-rescue-streams" (index: #10; argument: "").
D: module-always-sink.c: Autoloading null-sink as no other sinks detected.
I: sink.c: Created sink 0 "auto_null" with sample spec s16le 6ch 44100Hz and channel map front-left,front-left-of-center,front-center,front-right,front-right-of-center,rear-center
I: sink.c:     device.description = "Dummy Output"
I: sink.c:     device.class = "abstract"
I: sink.c:     device.icon_name = "audio-card"
D: core-subscribe.c: Dropped redundant event due to change event.
I: source.c: Created source 0 "auto_null.monitor" with sample spec s16le 6ch 44100Hz and channel map front-left,front-left-of-center,front-center,front-right,front-right-of-center,rear-center
I: source.c:     device.description = "Monitor of Dummy Output"
I: source.c:     device.class = "monitor"
I: source.c:     device.icon_name = "audio-input-microphone"
D: module-null-sink.c: Thread starting up
I: module.c: Loaded "module-null-sink" (index: #11; argument: "sink_name=auto_null sink_properties='device.description="Dummy Output"'").
I: module.c: Loaded "module-always-sink" (index: #12; argument: "").
I: module.c: Loaded "module-intended-roles" (index: #13; argument: "").
D: module-suspend-on-idle.c: Sink auto_null becomes idle, timeout in 5 seconds.
I: module.c: Loaded "module-suspend-on-idle" (index: #14; argument: "").
I: client.c: Created 0 "ConsoleKit Session /org/freedesktop/ConsoleKit/Session1"
D: module-console-kit.c: Added new session /org/freedesktop/ConsoleKit/Session1
I: module.c: Loaded "module-console-kit" (index: #15; argument: "").
I: module.c: Loaded "module-position-event-sounds" (index: #16; argument: "").
D: dbus-util.c: Successfully connected to D-Bus session bus efbffc6788fad56cfd64d40c00000018 as :1.182
D: main.c: Got org.pulseaudio.Server!
I: main.c: Daemon startup complete.
I: client.c: Created 1 "Native client (UNIX socket client)"
I: client.c: Created 2 "Native client (UNIX socket client)"
D: protocol-native.c: Protocol version: remote 16, local 16
I: protocol-native.c: Got credentials: uid=1000 gid=1000 success=1
D: protocol-native.c: SHM possible: yes
D: protocol-native.c: Negotiated SHM: yes
D: protocol-native.c: Protocol version: remote 16, local 16
I: protocol-native.c: Got credentials: uid=1000 gid=1000 success=1
D: protocol-native.c: SHM possible: yes
D: protocol-native.c: Negotiated SHM: yes
D: module-augment-properties.c: Looking for .desktop file for gnome-volume-control-applet
D: module-augment-properties.c: Looking for .desktop file for gnome-settings-daemon
D: core-subscribe.c: Dropped redundant event due to change event.
I: module-suspend-on-idle.c: Sink auto_null idle for too long, suspending ...
D: sink.c: Suspend cause of sink auto_null is 0x0004, suspending

Beachten Sie den einen Abschnitt, der die Hardware zu finden scheint, aber angibt, dass sie ausgelastet ist (keine Ahnung, ob dies relevant ist).

D: cli-command.c: Checking for existance of '/usr/lib/pulse-0.9.21/modules/module-udev-detect.so': success
D: module-udev-detect.c: /dev/snd/controlC0 is accessible: yes
D: module-udev-detect.c: /devices/pci0000:00/0000:00:1b.0/sound/card0 is busy: yes
I: module-udev-detect.c: Found 1 cards.
Oli
quelle
versucht mv ~ / .pulse?
Takkat
@Takkat Ja, ich wollte rm -rfes und startete zum Glück neu. Es stellte sich heraus, dass ich heute kein Glück habe :(
Oli

Antworten:

10

HUZZAH

Recht. arecordwar das zwielichtig aussehende Element hier, das ich schließlich durch fuserdie Sounddateien fand (siehe meine Frage für meinen Prozess). Aber ich konnte nicht finden, was dazu führte, dass ich arecordbeim Booten als root gestartet wurde. So habe ich das gemacht:

  1. Lauf pstree | less
  2. Geben Sie darin ein /arecordund drücken Sie die Eingabetaste, um den arecordProzess zu finden .
  3. Drücken Sie einmal nach oben und Sie sehen das übergeordnete Element. In meinem Fall war dies randomsound.

Ich habe vor randomsoundein paar Tagen installiert , um /dev/randommithilfe meiner Soundkarte zusätzliche Entropie (zur Regeneration ) zu erzeugen . Ich hatte völlig vergessen, dass es installiert wurde und ich denke, dies war das erste Mal, dass ich seit der Installation neu gestartet habe.

Kurz gesagt, es wurde sudo apt-get remove randomsoundbehoben. PulseAudio kann jetzt meine Soundkarte greifen und ich kann mir während der Arbeit trashiges Europop anhören.

Oli
quelle
Was zum Teufel ... Hat den Befehl ausgeführt und dröhnt, der Ton funktioniert sofort. Vielen Dank, ich hätte das nie herausgefunden!
Rob
6

Es passiert mir oft beim Experimentieren, dass pulseaudio aus obskuren Gründen zu Bananen wird. Ich behalte einen zweiten Benutzer auf meinem Host, mit dem ich überprüfe, ob das Problem system- oder benutzerbezogen ist: Im ersten Fall zeigen beide Benutzer Probleme, im letzteren nur den einen oder anderen. Wenn das Problem benutzerabhängig ist, liegt ein Fehler im Basisordner vor. Mit Puls Audio ist dann ~/.pulseoder ~/.config/pulse. Wenn Sie diese umbenennen, z. B. _broken, kann pulseaudio sie ordnungsgemäß neu generieren, wenn Sie sich abmelden und wieder anmelden. Dies funktioniert die meiste Zeit bei mir.

Andrea Borga
quelle
Dies funktionierte für mich und ohne dass ich mich ausloggen / einloggen musste. Ich habe den Ordner ~ / .config / pulse umbenannt und sofort einen neuen erstellt. Ich konnte mein Ausgabegerät auswählen und jetzt funktioniert es zu 100%.
Robm
0

Während ich stundenlang online nach einer Antwort suchte, versuchte ich ect neu zu starten. Nichts funktionierte, bis ich diesen Befehl eingab:

sudo arecord killall

Mein Sound wurde repariert. Ich habe überall nach Lösungen für dieses Problem gesucht, also dachte ich, ich würde meine Lösung posten. Viel Glück!

Linuxxer28
quelle
3
Recording WAVE 'killall', schön
Nearoo