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/16 06:40] – [PulseAudio] 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> +... 
-  - Eseguire **alsamixer** e **impostare i livelli** per i device di playback, accertarsi che i canali non siano muti (tasto **M**). +</code>
-  - 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>+
  
 +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 ===== ===== PulseAudio =====
  
-Come verificare che il sistema PulseAudio funzioni.+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.
  
-FIXME Documentare kill start+L'utente può autonomamente fermare riavviare il demone, ad esempio per rileggere la configurazione oppure per annullare tutte le modifiche temporanee fatte dalla console **pacmd**:
  
 <code> <code>
Line 49: Line 77:
 </code> </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**.+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 invece risulta //No output devices available//, si può provare a caricare qualche **modulo PulseAudio**. Ecco alcuni comandi da provare nella console **pacmd**:+Se risulta **No output devices available** ovviamente l'audio non può funzionareDalla console testuale **pacmd** è possibile indagare lo stato attuale del sistema PulseAudio. Ecco alcuni comandi utili:
  
 <code> <code>
Line 60: Line 88:
 </code> </code>
  
-Controllare i device di tipo **sink** (cioè che possono ricevere audio digitale). Se esiste solo **auto_null** vuol dire che la scheda audio ALSA non è stata presa in considerazione e quindi non è utilizzabile. Deve piuttosto risultare un sink che usa il driver **module-alsa-card.c**. Nel nostro caso risultava disponibile solo il sink fittizio con driver **module-null-sink.c**, infatti i programmi che utilizzano PulseAudio non producevano alcun suono.+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** manualmenteEcco alcuni comandi da provare sempre nella console **pacmd**:
  
 <code> <code>
Line 67: Line 97:
 </code> </code>
  
-Compare un sink con driver **module-alsa-sink.c** e nome **alsa_output.default**. Grazie a questo l'audio ha cominciato a funzionare. In **pavucontrol**, //Output Devices//, risulta infatti disponibile un device hardware **Built-in Audio**.+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> <code>
Line 82: Line 112:
 list-cards list-cards
 </code> </code>
- 
- 
-Verificare che il demone **/usr/bin/pulseaudio** sia in esecuzione. Viene avviato a nome dell'utente che ha effettuato il login nell'ambiente grafico. 
  
 Verificare se qualche processo ha in uso i device audio, eseguite come **utente root**: Verificare se qualche processo ha in uso i device audio, eseguite come **utente root**:
Line 92: Line 119:
 lsof /dev/snd/* lsof /dev/snd/*
 </code> </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 ===== ===== Web References =====
doc/appunti/linux/sa/pulseaudio.txt · Last modified: 2020/12/25 11:36 by niccolo