Ho parlato qualche giorno fa di PulseAudio e di come presto manderà in pensione esound su tutti i sistemi Gnome.

PulseAudio per ora è difficile da integrare nel proprio sistema o almeno è difficile se non si è un minimo smalizziati! Comunque il problema più grosso è a mio avviso la mancanza di guide per farlo! Ecco perché qui spiego come ho fatto sul mio sistema…

Questa guida è orientata a sistemi Debian/Ubuntu ma può essere riadattata a qualunque distribuzione Linux purché si installino i pacchetti pulseaudio corrispondenti a quelli che tratto qui.

La guida non è comunque semplicissima, se seguendola fate casini nel vostro sistema non sarà colpa mia :). In ogni caso se vi fate i backup dei file che modificate e ponete attenzione in quel che fate dovrebbe andare tutto liscio…

Vi ricordo che PulseAudio è un software in via di sviluppo: pertanto potrebbe essere instabile o avere delle mancanze/malfunzionamenti di vario tipo… Siete caldamente invitati quindi a non lamentarvi in caso di problemi! Aiutate invece gli sviluppatori segnalandoli e aiutandoli a risolverli… In fondo riporterò una lista dei problemi che IO ho rilevato e quelli che mi segnalerete.

La guida è scritta per PulseAudio versione 0.9.5 ma potrebbe funzionare anche per versioni precedenti/successive.

Installare PulseAudio

Su Ubuntu (testato con Feisty) potete farlo con questo comando

sudo apt-get install pulseaudio pulseaudio-esound-compat pulseaudio-utils paprefs pavumeter pavucontrol padevchooser paman libao-pulse pulseaudio-module-hal pulseaudio-module-x11 libasound2-plugins

Su debian… beh.. penso lo stesso comando ma il mio computer si è rotto e sto usandone uno che mi hanno prestato su cui c’è ubuntu feisty :) e tanto che c’ero faccio un regalo al proprietario e gli configuro pulseaudio.. più avanti testerò su debian (o se volete darmi le eventuali correzioni/conferme nei commenti siete i ben venuti)

NOTA: non vi dimenticate il pacchetto libasound2-plugins altrimenti le applicazioni alsa non riusciranno ad appoggiarsi a pulse

Configurare PulseAudio

Vi anticipo che se impostate alsa per agire di default utilizzando pulseaudio praticamente tutto sul vostro sistema funzionerà tramite pulse audio!

Talvolta alcuni programmi si possono configurare per utilizzare direttamente pulseaudio evitando un passaggio inutile :)

L’installazione che propongo è di tipo “system-wide”, cioè adatta anche se si hanno più utenti sul proprio computer ma funziona anche con un solo utente. Se volete abilitare pulseaudio per un solo utente o solo per alcuni invece non dovete seguire questa procedura alla lettera ma ragionare su quali opzioni sia il caso di abilitare e quali no :)

Abilitare il demone

Prima di tutto dobbiamo fare in modo che il PulseAudio server sia avviabile: modificate il file /etc/default/pulseaudio

# Start the PulseAudio sound server in system mode.
# (enables the pulseaudio init script)
# System mode is not the recommended way to run PulseAudio as it has some
# limitations (such as no shared memory access) and could potentially allow
# users to disconnect or redirect each others audio streams.
# 0 = don't start, 1 = start
PULSEAUDIO_SYSTEM_START=1

# Prevent users from dynamically loading modules into the PulseAudio sound
# server. Dynamic module loading enhances the flexibilty of the PulseAudio
# system, but may pose a security risk.
# 0 = no, 1 = yes
DISALLOW_MODULE_LOADING=0

in grassetto (PULSEAUDIO_SYSTEM_START=1) la parte più importante (di default è 0 ed impedisce allo script di avvio di attivare il server pulseaudio)

la seconda opzione sta a vostra discrezione, io ho messo “0″ come vedete qui sopra. Questa impostazione permette al server di caricare un modulo pulseaudio all’occorrenza.

Adesso impostiamo qualche opzione del demone: si trovano in /etc/pulse/daemon.conf. Rendiamo il demone “system-wide” cioè attivo per tutto il sistema:

## Run the daemon as system-wide instance, requires root priviliges
system-instance = 1

Assicurarsi che i moduli fondamentali vengano caricati

Le impostazioni di default del demone pulseaudio si trovano in /etc/pulse/default.pa. Assicuratevi che questi moduli vengano caricati (devono essere stati installati con il comando precedente):

Rileva automaticamente nuove sorgenti/uscite audio (source/sink)

### Automatically load driver modules depending on the hardware available
load-module module-hal-detect

Supporto al demone esound (esd)

### Load esound protocol
load-module module-esound-protocol-unix

Aggiungere i gruppi all’utente

Per poter utilizzare il demone pulse audio ogni utente deve appartenere ai gruppi pulse, pulse-access e pulse-rt. Da utente con privilegi di root date i seguenti comandi per ogni utente del vostro sistema a cui volete permettere l’utilizzo di pulse audio

adduser vostronomeutente pulse
adduser vostronomeutente pulse-access
adduser vostronomeutente pulse-rt

Quindi fate il log out e rientrate

Configurare alsa perché usi il server pulse

Da utente amministratore aprite il file /etc/asound.conf ed aggiungete in fondo quanto segue (o se è vuoto/non esiste scriveteci riempitelo con quanto segue)

pcm.pulse {
type pulse
}

ctl.pulse {
type pulse
}

Adesso se volete che alsa utilizzi pulse di default dovete aggiungere un altra cosa allo stesso file. Se invece volete che il comportamento di default esista solo per alcuni utenti potete aggiungere quanto segue nel file $HOME/.asoundrc nella home degli utenti a cui volete impostare pulse

pcm.!default {
type pulse
}

ctl.!default {
type pulse
}

Provare pulseaudio

Prima di tutto avviamo il server pulseaudio lanciando come utenti privilegiati il seguente comando

/etc/init.d/pulseaudio start

linkare il pulse-cookie

Date questo comando per ogni utente o rischierete di vedervi rispondere “accesso negato” se scaricate e ricaricate il server pulseaudio

ln -sf /var/run/pulse/.pulse-cookie ~/.pulse-cookie

il test

quindi per verificare il funzionamento di PulseAudio procuratevi un file .wav e date il seguente comando

paplay file.wav

verificate anche il funzionamento di alsa (il più importante)

aplay -Dpulse file.wav

Dovreste sentire il suono. Se non lo sentite verificate che il server pulseaudio sia in esecuzione (ps ax | grep pulse)

Configurare Gnome (esound) perché utilizzi pulseaudio

Esound è anche chiamato esd.

Dovete solo assicurarvi che il modulo module-protocol-esound-unix sia caricato. In genere questo è attivo di default e non occorre nulla… potete verificarlo nel file /etc/pulse/default.pa

### Load esound protocol
load-module module-esound-protocol-unix

Quindi per ogni utente date questo comando

ln -sf /var/run/pulse/.esd_auth ~/.esd_auth

Se ci fossero problemi pare siano risolvibili inserendo questo alla fine del file .bashrc di ogni utente che usa pulseaudio (a me non è servito)

if [ ! -e /tmp/.esd-${UID} ]; then
ln -s /tmp/.esd /tmp/.esd-${UID}
fi

Tutte le applicazioni che usano esound possono adesso appoggiarsi a pulseaudio (per testarlo potete installare il pacchetto esound-clients ed eseguire esdplay file.wav

Configurare KDE (arts) perché utilizzi pulseaudio (non testato, datemi conferme grazie)

Il demone per l’audio di KDE (arts) può essere configurato per utilizzare esound (e quindi pulseaudio se avete seguito il passo precedente). Per farlo aggiungete al file /etc/kde (oppure in /usr/share/config)

[Arts]
Arguments=\s-F 10 -S 4096 -a esd -n -s 1 -m artsmessage -c drkonqi -l 3 -f
NetworkTransparent=true
SuspendTime=1

O per cambiare comportamento solo per un utente aggiungete quanto sopra nel file $HOME/.kde/share/config

Flash Player 9

A questo punto quasi tutte le vostre applicazioni dovrebbero già funzionare… Flash NO! (Viva i software proprietari …)

Questa è forse la parte più complessa per un “newbie”.. ma ecco come farlo funzionare:

Aprite un terminale e scrivete i seguenti comandi

(solo utenti debian/ubuntu – comando da amministratore)

apt-get install build-essential libesd0-dev libpulse-dev libssl-dev checkinstall

checkinstall ve lo consiglio io se siete utenti debian/ubuntu. Se non lo siete installate i pacchetti corrispettivi (quelli per compilare e quelli di developing per esd, pulse e ssl) e lasciate perdere checkinstall

(da utenti normali)

mkdir libflashsupport_pulse-9
cd libflashsupport_pulse-9
wget https://svn.revolutionlinux.com/MILLE/XTERM/trunk/libflashsupport/src/Makefile
wget https://svn.revolutionlinux.com/MILLE/XTERM/trunk/libflashsupport/src/flashsupport.c
make

il seguente comando va dato da utente con privilegi di root.

Se siete utenti Debian/Ubuntu e avete deciso di utilizzare checkinstall date il seguente comando

checkinstall

Seguite le istruzioni: ad un certo punto vi verrà chiesto di scrivere una breve descrizione del pacchetto (vedrete due >> come ultimi caratteri): scriveteci qualcosa come “Flash Player 9 Library to support PulseAudio”; quindi andate a capo 2 volte per permettergli di proseguire. Per tutte le altre domande date semplicemente invio o seguite le istruzioni in inglese.

Se invece non volete/non potete usare checkinstall date semplicemente

make install

Ora per provare il funzionamento chiudete il vostro browser (firefox o chi per lui) e riapritelo… andate in un sito che utilizza flash e l’audio (es. youtube.com) e verificate che funzioni a dovere.

Se qualcosa non funzionasse (crash del browser o simili) potete disinstallare la libreria così:

per gli utenti che hanno usato checkinstall

apt-get remove libflashsupport-pulse

per tutti gli altri

rm /usr/lib/libflashsupport.so

entrambi questi comandi vanno dati con privilegi di root.

Nota per chi ha usato checkinstall: nella directory dove avete eseguito “checkinstall” vi troverete un pacchettino .deb che servirà a reinstallare la libreria di supporto a pulseaudio per flash se lo desiderate.

Configurare Mplayer per utilizzare pulse

Funziona con alsa ma se volete utilizzi direttamente pulse per ogni utente del sistema modificate il file /etc/mplayer/mplayer.conf dove trovate

# Specify default audio driver (see -ao help for a list).
ao=alsa,

in

# Specify default audio driver (see -ao help for a list).
ao=pulse,

se invece volete modificare il comportamento per i singoli utenti aggiungete al file $HOME/.mplayer/config la seguente riga

ao=pulse

e in $HOME/.mplayer/gui.conf modificate la voce ao_driver in

ao_driver = "pulse"

(NOTA: gmplayer non funziona se non fate questo qui sopra, comunque potete farlo anche da interfaccia grafica)
Per chi usa mplayer-plugin si mette sempre l’opzione ao=pulse ma nel file $HOME/.mplayer/mplayerplug-in.conf.

Applicazioni OSS

possono essere lanciate con il comando padsp, ad esempio:

padsp teamspeak

Non so quanto questa emulazione funzioni perché (come al solito) senza il mio pc non ho testato a dovere attendo le vostre prove per giochi come Quake 3 o programmi come TeamSpeak

NOTA: pare che proprio teamspeak con la versione da me testata ancora non funzioni… dovrebbe sistemarsi con le prossime versione, se siete impazienti potete compilare pulseaudio dai sorgenti.

Applicazioni libao

Utilizzano alsa e quindi se avete configurato alsa (primo punto) dovrebbero già funzionare. Se però volete utilizzino direttamente pulseaudio allora editate /etc/libao.conf e scriveteci

default_driver=pulse

io avevo “alsa09″ come default driver

Applicazioni GSStreamer (Totem, Rythmbox ecc..)

Come prima: dovrebbe funzionare usando alsa senza far nulla. Se volete che usi direttamente pulseaudio…

In gconf modificate le due voci (va fatto per ogni utente)

/system/gstreamer/0.10/default/audiosink autoaudiosink
/system/gstreamer/0.10/default/audiosrc alsasrc

in

/system/gstreamer/0.10/default/audiosink pulsesink
/system/gstreamer/0.10/default/audiosrc pulsesrc

Potete effettuare questa modifica lanciando questi due comandi

gconftool -t string --set /system/gstreamer/0.10/default/audiosink pulsesink
gconftool -t string --set /system/gstreamer/0.10/default/audiosrc pulsesrc

Se con questa modifica non dovesse funzionare ripristinate i valori precedenti oppure compilate ed installate questo plugin.

Applicazioni Xine (totem xine, amaroK ecc..)

Funzionano con alsa. Se volete potete chiedere a xine di usare direttamente pulse modificate il file $HOME/.xine/.config per ogni utente inserendovi:

audio.driver:pulse

Applicazioni SDL

Non supporta ancora pulse ma può essere utilizzato con alsa, libao e esd senza problemi. Consiglio di lasciare che utilizzi alsa :)

Timidity (x file midi)

Come al solito: funziona con alsa. Anche questo può funzionare con libao o esound se preferite… Basta che modifichiate la stringa di avvio del server perché utilizzi ciò che preferite

timidity -Os #(x alsa)
timidity -Oe #(x esound)
timidity -OO #(x libao)

Configurate PulseAudio per fare da server audio nella vostra rete LAN locale

Vi serve caricare qualche modulo in /etc/pulse/default.pa. Eviterò le impostazioni di default perché poco sicure!

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24
load-module module-zeroconf-publish

In grassetto c’è la parte che dovete adattare alla vostra LAN. Nell’esempio si supponche che i vostri computer siano in rete con indirizzi ip come 192.168.1.X dove X può essere un numero da 1 a 254. Se volete verificare il vostro indirizzo IP potete dare questo comando da terminale (assicurandovi di avere privilegi di root)

ifconfig

Nella lista dovreste trovare qualcosa di simile a questo:

eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1203535 errors:0 dropped:0 overruns:0 frame:0
TX packets:1583297 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:721501413 (688.0 MiB) TX bytes:1431342906 (1.3 GiB)
Base address:0xcc80 Memory:fe540000-fe560000

Dalla riga in grassetto potete evincere la vostra configurazione di rete.

La configurazione di rete non è finita.. per concluderla utilizzeremo il tool grafico di pulseaudio come spiegato qui di seguito.

Vediamo di giocarci un po’

Per prima cosa apriamo il programma/applet che ci permette di gestire tutto…. Premete ALT+F2 o usate il modo che preferite per avviare

padevchooser

Ora dovreste avere nella trayicon l’icona di uno spinotto audio!

Cliccateci su per vedere il menù

  • Default Server
    Imposta quale server audio utilizzare (dovrebbe essere pulseaudio stesso). Utile solo se sullo stesso pc avete più di un server pulseaudio in funzionamento
  • Default Sink
    Imposta quale uscita audio utilizzare: qui compariranno anche le uscite audio fornite da altri server di rete
  • Default Source
    Imposta l’entrata audio predefinita
  • Manager
    Tutte le informazioni sul server in esecuzione: moduli caricati, dispositivi disponibili, statistiche di vario genere, stream attivi e così via…
  • Volume Control
    Imposta il volume di tutti gli stream pulseaudio separatamente. Qui potete dare un volume diverso ad ogni applicazione che sta utilizzando l’audio o sentirne una sul canale sinistro e un altra sul canale destro. Se il modulo module-volume-restore è stato caricato verranno salvate le impostazioni di volume degli stream e recuperate alla riapertura del programma.

    PulseAudio VolumeControl

  • Volume Meter (playback/recording)
    Niente di spleciale: mostra delle barre che si muovono seguendo l’audio
  • Configure Local Sound Server
    Qui potete configurare l’applet, il mio consiglio è quello di farla eseguire in automatico al login. Il resto secondo vostro piacimento.

    PulseAudio Local Sound Server

  • Preferences
    Qui potete concludere l’impostazione di rete: abilitate le prime 3 opzioni e il vostro server pulseaudio sarà disponibile anche via rete

    PulseAudio Preferences

Sono ben accette le vostre impressioni…

Problemi riscontrati e mancanze

Se avete un problema con una qualche applicazione e google non è di aiuto spesso è sufficiente terminare il server pulseaudio e lanciare l’applicazione, quindi riabilitarlo successivamente per poterla eseguire normalmente! (perfavore segnalate eventuali fix per programmi particolari o altri problemi incontrati qui non listati)

Ecco i problemi che ho riscontrato per ora

  • il gioco openarena non parte utilizzando PulseAudio
    Esce con il seguente errore

    ------ Initializing Sound ------
    openarena.bin: pcm_params.c:2351: sndrv_pcm_hw_params: Assertion `err >= 0' failed.
    Received signal 6, exiting...

    Da quel che ho letto pare si tratti di un bug di alsa e non di pulseaudio che dovrebbe essere sistemato con le successive versioni, stiamo a vedere.

  • alcuni stream audio non vanno via rete (non ho ancora capito perché). Ad esempio esdplay non viene mandato via rete.

Questo invece quello che non sono riuscito a fare

Non ho ancora avuto occasione di informarmi sulle seguenti cose

  • Spostare via rete uno stream senza interromperlo, modificare il “default sink” e rifarlo partire.
  • Impostazioni di regolazione del volume automatiche (esempio: fare in modo che i programmi in background si sentano meno di quello in primo piano)
About these ads