Le istruzioni ufficiali per creare una "connessione diretta" su una rete si spera funzionino solo per la maggior parte delle persone, ma sembra pulseaudio e non vado molto d'accordo: mi ci sono volute ore . [Oltre alla "connessione diretta", puoi anche usare un metodo "tunnel" descritto più avanti, ma ti consiglio di leggere prima questo.]
Ora ho un suono di streaming desktop (fedora 17) sul pi. Ho minimizzato i /etc/pulse
file di configurazione su entrambi i lati. Sul lato desktop:
/etc/pulse/client.conf
# See man pulse-client.conf
default-server = tcp:192.168.2.13:4713
L'indirizzo LAN di mio pi con la porta pulseaudio predefinita. Ma ecco qualcosa che poi mi ha confuso per un po '- con un server specificato, pulseaudio non si avviava nemmeno:
> pulseaudio --start
N: [pulseaudio] main.c: User-configured server at tcp:192.168.2.13:4713, refusing to start/autospawn.
Funzionerà in primo piano (probabilmente perché non legge pulse-client.conf?). Tuttavia , a quanto pare, non è necessario eseguirlo affatto sul lato desktop (invio) , qualcosa che non è spiegato nei documenti di pulseaudio. Usandolo lsof -i -P
sembra che plugin di livello inferiore per vari lettori multimediali facciano il lavoro.
Quindi, quella riga "client.conf" è in realtà tutto ciò che serve sul lato desktop / client, se tutto ciò che farai è utilizzare la rete (ma vedi "Ancora più complicazioni", di seguito).
Sebbene il demone pulseaudio (sul lato ricevente / server) possa essere eseguito come un servizio di sistema, gli sviluppatori di pulse raccomandano contro di esso , e infatti sul pi lo script init provoca solo un avviso: devi ancora iniziare da soli. Fedora non include nemmeno una voce del servizio di avvio di systemd.
Quindi, sul lato pi, dovresti esplicitamente avviare e arrestare il processo del server pulseaudio, configurato in questo modo:
/etc/pulse/daemon.conf
# See man pulse-daemon.conf
log-level = info
exit-idle-time = 10800 # 3 hours
Puoi usare -1 per exit-idle-time
mantenere il demone in esecuzione indefinitamente. Attenzione, questo è secondi e il valore predefinito è 20 (il che significa che continuerà a morire "misteriosamente" se non lo imposti).
/etc/pulse/default.pa
# See man default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.2.0/24
load-module module-alsa-sink device=hw:0,0
Poiché si tratta di un'app di rete, non è una buona idea eseguirla come root. Tuttavia, come accennato in man pulseaudio
, è anche una buona idea "renice" il processo per dargli una priorità più alta. Puoi farlo manualmente con nice
, ma pulseaudio lo farà automaticamente per root, o membri del pulse-rt
gruppo, se l'eseguibile è "setuid", il che significa che può fare uso di alcuni privilegi di root e poi passare al corretto uid non privilegiato ( ping
e passwd
anche bisogno di farlo). Quindi (come root o sudo):
chmod u+s /usr/bin/pulseaudio
Non è stato pulse-rt
creato alcun gruppo quando pulseaudio è installato su raspbian, quindi quindi:
groupadd pulse-rt
Questo ti darà un gid come 1003. Aggiungi (ad esempio) l'utente pi a quel gruppo:
usermod -aG pulse-rt pi
Ma su raspbian, non sarai ancora in grado di renice come pi. Per questo, aggiungi a /etc/security/limits.conf
:
@pulse-rt hard nice -20
@pulse-rt soft nice -20
Devi effettivamente eseguire un login prima che avvengano queste modifiche; se usi ssh con il pi, usa solo login
. Ora puoi avviare pulseaudio e si rinominerà -11, che è probabilmente una priorità più alta rispetto alla maggior parte degli altri processi (guarda il valore NICE in top
).
Durante la riproduzione del suono in streaming dalla rete, pulseaudio sul pi utilizza circa il 10% della CPU e una quantità banale di memoria. :) It e il mio desktop sono su una LAN cablata; impulso trasmette dati pcm grezzi (credo), quindi l'utilizzo della larghezza di banda corrisponde alla frequenza di campionamento della sorgente, 1 kB / se superiore. Sfortunatamente, c'è un notevole ritardo nel suono se guardi un video.
Ancora più complicazioni ...
Sfortunatamente, nessuna delle varie applicazioni audio del mio PC ha funzionato subito; mpg123
non funzionerebbe affatto. Per questo, su fedora, hai bisogno del mpg123-plugins-pulseaudio
pacchetto. Per le cose flash nel browser (ad esempio, youtude) è necessario alsa-plugins-pulseaudio
(questi sono ciò che effettivamente si connette al server remoto). Altre distribuzioni dovrebbero avere pacchetti simili. Se hai usato pulseaudio prima (non lo ero), potresti averli già installati.
Anche le campane e i fischi da scrivania di KDE non funzionavano. Questo è un problema più difficile da risolvere, perché cerca un server pulseaudio locale e, come descritto, l'uso di una connessione diretta significa che nessun server può essere eseguito localmente. Il modo per aggirare questo è usare il metodo "tunnel".
Modulo-tunnel-sink
Questo è l'altro modo menzionato nei documenti pulseaudio. In questo caso, hai un server in esecuzione su entrambi i lati e uno a due mani all'altro. Per fare questo, commenta il "server predefinito" /etc/client.conf
e aggiungi un locale /etc/default.pa
contenente:
load-module module-tunnel-sink sink_name=rpi_tunnel server=tcp:192.168.2.13:4713 sink=bcm1
Se non si inserisce un sink_name
ingresso, pulseaudio non si avvierà. Il si sink
riferisce al nome del lavandino sul lato pi, che quindi ha anche bisogno di un nome; aggiungi un corrispondente sink_name
alla module-alsa-sink
linea default.pa
lì dentro :
load-module module-alsa-sink device=hw:0,0 sink_name=bcm1
Avviare il server su entrambi i lati e presto ... in un certo senso. Mentre ora venivano trasportati tutti i segnali acustici di KDE, la riproduzione flash del browser ballava male. Tuttavia, in un altro ambiente desktop (in realtà, solo un gestore di finestre, fvwm) andava bene.
Mi piace KDE ma posso vivere senza i bip, quindi per ora continuerò con una connessione diretta.
Risoluzione dei problemi
In caso di problemi, l'utilizzo di pulseaudio -vvvv --log-level=debug
pi fornisce molti messaggi di debug. Inizialmente quando non riuscivo a ottenere l'audio sul pi questo segnalava un problema "correlato a un bug nel driver ALSA bcm2835" che mi sembrava strano dato che il suono andava bene solo con alsa, e sono sicuro che ci sia un software pi che dipende da su pulseaudio - apt-get remove pulseaudio
e una reinstallazione apt-get install pulseaudio
sembrava risolvere questo ... Non una soluzione che mi piace vedere, ma ehi, almeno ora posso ascoltare Tish senza dover collegare gli altoparlanti in ogni scatola. Soprattutto.