User Tools

Site Tools


doc:appunti:linux:sa:pulseaudio

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:linux:sa:pulseaudio [2019/10/15 16:36] – [ALSA] niccolodoc:appunti:linux:sa:pulseaudio [2020/12/25 11:16] – [Audacious] niccolo
Line 3: Line 3:
 Il sistema predefinito per la gestione dell'audio in Debian GNU/Linux si avvale di **ALSA** e di **PulseAdio**. Vedere le pagine del Debian Wiki: **[[https://wiki.debian.org/ALSA|ALSA]]** e **[[https://wiki.debian.org/PulseAudio|PulseAudio]]**. Il sistema predefinito per la gestione dell'audio in Debian GNU/Linux si avvale di **ALSA** e di **PulseAdio**. Vedere le pagine del Debian Wiki: **[[https://wiki.debian.org/ALSA|ALSA]]** e **[[https://wiki.debian.org/PulseAudio|PulseAudio]]**.
  
-**ALSA** fornisce i **driver** e una libreria (API) basso livello, **PulseAudio** invece implementa una architettura client-server per collegare tra loro **sources** (processi, hardware di cattura audio, ecc.) e **sinks** (schede audio, processi locali o remoti, ecc.).+**ALSA** fornisce i **driver** e una libreria (API) di basso livello, **PulseAudio** invece implementa una architettura client-server per collegare tra loro **sources** (processi, hardware di cattura audio, ecc.) e **sinks** (schede audio, processi locali o remoti, ecc.).
  
 ===== ALSA ===== ===== ALSA =====
Line 9: Line 9:
 ALSA fornisce alcuni **moduli kernel** per pilotare l'hardware (schede audio), inoltre fornisce di una **libreria** (pacchetto Debian **libasound2**) che consente ai programmi di accedere a particolari funzioni, quali canali audio multipli, Dolby AC3, ecc. Vengono forniti anche alcuni tool (nel pacchetto Debian **alsa-utils**) generalmente utilizzabili da riga di comando, quali **aplay**, **alsamixer**, ecc. ALSA fornisce alcuni **moduli kernel** per pilotare l'hardware (schede audio), inoltre fornisce di una **libreria** (pacchetto Debian **libasound2**) che consente ai programmi di accedere a particolari funzioni, quali canali audio multipli, Dolby AC3, ecc. Vengono forniti anche alcuni tool (nel pacchetto Debian **alsa-utils**) generalmente utilizzabili da riga di comando, quali **aplay**, **alsamixer**, ecc.
  
-Per verificare se il sistema ALSA funziona correttamente:+Ecco alcuni consigli per verificare se il sistema ALSA funziona correttamente.
  
-  - Verificare se sono stati caricati i **moduli kernel** **%%snd_*%%**, in particolar modo **snd_pcm**. Se si deve utilizzare un programma che richiede l'obsoleto sistema OSS (Open Sound System), si dovrà caricare il modulo di compatibilità **%%snd-*-oss%%**, ma in tal caso non è possibile utilizzare il sistema ALSA nativo. +Verificare che siano stati caricati i **moduli kernel** **%%snd_*%%**, in particolar modo **snd_pcm**. Se si deve utilizzare un programma che richiede l'obsoleto sistema OSS (Open Sound System), si dovrà caricare il modulo di compatibilità **%%snd-*-oss%%**, ma in tal caso non è possibile utilizzare il sistema ALSA nativo. In una situazione normale e aggiornata il sistema OSS è deprecato, al punto tale che può essere consigliato mettere in blacklist il modulo kernel relativo
-  Verificare che ALSA abbia identificato l'**hardware di playback** disponibile:\\ <code>aplay -l+ 
 +Verificare che ALSA abbia identificato l'**hardware di playback** disponibile: 
 +<code>aplay -l
 **** List of PLAYBACK Hardware Devices **** **** List of PLAYBACK Hardware Devices ****
 card 0: PCH [HDA Intel PCH], device 0: ALC255 Analog [ALC255 Analog] card 0: PCH [HDA Intel PCH], device 0: ALC255 Analog [ALC255 Analog]
 Subdevices: 0/1 Subdevices: 0/1
-Subdevice #0: subdevice #0</code> +Subdevice #0: subdevice #0 
-  Verificare quali **dispositivi PCM** (Pulse-code modulation, cioè dispositivi di suono digitale, sia di input che di output) sono disponibili:\\ <code>aplay -L+</code> 
 + 
 +Verificare quali **dispositivi PCM** (Pulse-code modulation, cioè dispositivi di suono digitale, sia di input che di output) sono disponibili: 
 +<code> 
 +aplay -L
 null null
     Discard all samples (playback) or generate zero samples (capture)     Discard all samples (playback) or generate zero samples (capture)
Line 33: Line 39:
     HDA Intel PCH, ALC255 Analog     HDA Intel PCH, ALC255 Analog
     Front speakers     Front speakers
-...</code> +... 
-  Provare da **utente root** ad inviare un **audio digitale** direttamente al **dispositivo hardware** predefinito. Provare eventualmente anche gli altri device elencati da **aplay -L**: <code>aplay --device=default /usr/share/sounds/alsa/Noise.wav</code>+</code> 
 + 
 +Eseguire **alsamixer** e **impostare i livelli** per i device di playback, accertarsi che i canali non siano muti (tasto **M**). 
 + 
 +Provare sia da **utente root** che da utente normale ad inviare un **audio digitale** direttamente al **dispositivo hardware** predefinito. Provare eventualmente anche gli altri device elencati da **aplay -L**: 
 +<code> 
 +aplay --device=default /usr/share/sounds/alsa/Noise.wav 
 +</code> 
 + 
 +===== PulseAudio ===== 
 + 
 +Per verificare che il sistema PulseAudio funzioni è necessario anzitutto avere l'**elenco dei device** riconosciuti: 
 + 
 +<code> 
 +pacmd list-sinks 
 +3 sink(s) available. 
 +  * index: 1 
 +        name: <alsa_output.default> 
 +        driver: <module-alsa-sink.c> 
 +        ... 
 +</code> 
 +         
 +quindi si prova ad inviare dell'audio ad uno di essi: 
 + 
 +<code> 
 +paplay --device=alsa_output.default -p /usr/share/sounds/alsa/Front_Center.wav 
 +</code> 
 + 
 +Verificare che il demone **/usr/bin/pulseaudio** sia in esecuzione. Nei normali ambienti grafici viene avviato a nome dell'utente che ha effettuato il login. 
 + 
 +L'utente può autonomamente fermare e riavviare il demone, ad esempio per rileggere la configurazione oppure per annullare tutte le modifiche temporanee fatte dalla console **pacmd**: 
 + 
 +<code> 
 +pulseaudio --kill 
 +pulseaudio --start 
 +</code> 
 + 
 +Eseguire il mixer grafico **pavucontrol**. Nella sezione //Output Devices//, //Hardware Output Devices// deve risultare la scheda audio pilotata da ALSA, ad esempio **Built-in Audio Analog Stereo**. 
 + 
 +Se risulta **No output devices available** ovviamente l'audio non può funzionare. Dalla console testuale **pacmd** è possibile indagare lo stato attuale del sistema PulseAudio. Ecco alcuni comandi utili: 
 + 
 +<code> 
 +help 
 +list-cards 
 +list-sinks 
 +list-modules 
 +</code> 
 + 
 +In condizioni normali deve risultare almeno una **scheda audio** e un **sink** (cioè un dispositivo che può ricevere audio digitale) entrambi pilotati dal driver **module-alsa-card.c**, Se esiste solo il sink **auto_null** (driver **module-null-sink.c**) vuol dire che la scheda audio ALSA non è stata presa in considerazione e quindi non è utilizzabile. 
 + 
 +In generale, se non funziona tutto in automatico, è il sintomo di qualche problema; tuttavia si può provare a caricare qualche **modulo PulseAudio** manualmente. Ecco alcuni comandi da provare sempre nella console **pacmd**: 
 + 
 +<code> 
 +load-module module-alsa-sink 
 +list-sinks 
 +</code> 
 + 
 +Ad esempio il bug [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901148|#901148]] di Debian 10 impedisce il funzionamento dell'audio se è attivo il demone Timidity, infatti risulta disponibile solo il **sink null**. Caricando manualmente il modulo //module-alsa-sink// compare un sink con driver **module-alsa-sink.c** e nome **alsa_output.default**; grazie a questo l'audio funziona nuovamente. In **pavucontrol**, //Output Devices// è infatti apparso un device hardware **Built-in Audio**. 
 + 
 +<code> 
 +load-module module-detect 
 +list-sinks 
 +</code> 
 + 
 +Caricando il modulo **module-detect** viene rilevato un nuovo sink, sempre associato al driver **module-alsa-sink.c**, ma con il nome **alsa_output.0.hdmi-stereo**. Si tratta dell'uscita audio su porta HDMI presente sulla scheda madre. In **pavucontrol**, //Output Devices//, compare anche il device hardware **Built-in Audio Digital Stereo (HDMI)**. L'elenco prodotto da **list-modules** si è allungato di un elemento. 
 + 
 +Se si caricano nuovamente gli stessi moduli, si ottiene una duplicazione inutile dei sink disponibili. 
 + 
 +<code> 
 +load-module module-alsa-card 
 +list-cards 
 +</code> 
 + 
 +Verificare se qualche processo ha in uso i device audio, eseguite come **utente root**: 
 + 
 +<code> 
 +fuser -v /dev/snd/
 +lsof /dev/snd/
 +</code> 
 + 
 +Nel caso del bug [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901148|#901148]] pare che il demone timidity prende possesso della scheda audio prima che lo faccia pulse PulseAudio, infatti alcuni dei device risultavano utilizzati dal processo timidity. 
 + 
 +===== Configurazione programmi ===== 
 + 
 +In generale i programmi GNU/Linux possono utilizzare **vari sottosistemi audio**, ad esempio l'obsoleto **OSS**, oppure direttamente il sistema **ALSA**. L'utilizzo di **PulseAudio** (quando installato e supportato dal programma) è ovviamente preferibile perché consente l'accesso concorrente e non bloccante al device audio. 
 + 
 +==== Mplayer ==== 
 + 
 +Per una configurazione system-wide su un sistema Debian è sufficiiente aggiungere una riga in **/etc/mplayer/mplayer.conf.local** (che viene incluso dal file principale mplayer.conf): 
 + 
 +<file> 
 +# Use Pulseaudio for output, instead of ALSA directly. 
 +ao=pulse 
 +</file> 
 + 
 +==== Audacious ==== 
 + 
 +Dal menu **File** => Settings... => Audio => Output plugin => **PulseAudio Output**. 
 + 
 +==== Avidemux ==== 
 + 
 +Dal menu **Edit** => Preferences => Audio => AudioDevice => **PulseAudioS**. 
 + 
 + 
 +===== Web References ===== 
 + 
 +  * **[[https://unix.stackexchange.com/questions/473694/pulseaudio-not-recognizing-intel-hda-after-upgrading-to-debian-testing-buster|PulseAudio not recognizing Intel HDA after upgrading to Debian testing (Buster)]]** 
 +  * **[[https://wiki.archlinux.org/index.php/PulseAudio_(Italiano)|PulseAudio Arch Linux Wiki]]** 
 +  * **[[https://askubuntu.com/questions/294512/setting-the-default-alsa-device-for-pulseaudio|Setting the default ALSA device for Pulseaudio]]** 
doc/appunti/linux/sa/pulseaudio.txt · Last modified: 2020/12/25 11:36 by niccolo