Raspberry Pi ZERO PulseAudioサーバーにする

当サイトのRaspberry Pi3ディスクトップはスピーカーが非常にプアです。なんとかこの状況を改善したくPulseAudioを利用してみたいと思います。

と思って検索したのですが新しい情報があまり見つかりませんね。

参考サイト
freedesktop.org PulseAudio
archlinux PulseAudio
archlinux PulseAudio/サンプル


現状の100均スピーカーは音が出るか出ないかの確認程度でとても聴くに耐えません。
目標はyoutubeを快適に視聴したいと思います。

サーバーのOSは安定稼働を狙ってjessie-liteを使いました。X環境のjessieでは長時間使っていると動作が不安定になるようです。またLanアダプタも多少普通のものが必要そうです。
USB-DACはOSが正常に認識してあればpulseaudioは自動で見つけ出してくれます。

環境

pulseaudio server(実際に音を出す方)
Pi ZERO jessie-lite-2017-04-10
UAC3552A(USB-DAC)
Lan adapter ASIX AX88772A
AMP PAM8403
SP Victor(SETものジャンク)

pulseaudio client
Raspberry Pi3 jessie-2017-04-10

PulseAudioについて
開発元のfreedesktop.orgではデーモンの起動はユーザーとして起動するよう推奨しています。
systemオプションでシステムデーモンとして起動もできるようですがやはり設定など簡単にはいかないようです。
現在のjessieもシステムデーモンとして起動する設定もなく、検索するとこのあたりの解説が異なるように感じます。
ユーザー起動の設定は簡単ですがその挙動をつかむまで少々慣れが必要かもしれません。
当サイトとしては基本通りユーザー単位で起動して最低限の設定で出来るだけ再現性の高い方向でいってみたいと思います。

pulseaudio serverの設定
jessie-liteではpulseaudioのインストールが必要です。

# apt install pulseaudio

ディレクトリを作成

$ mkdir -p ~/.config/pulse

~/.config/pulse/client.confの編集
archの解説では/etc/pulse/の設定ファイルを編集しないよう推奨しています。

$ cp /etc/pulse/client.conf ~/.config/pulse

下記の内容で編集します。新たに作成してもOKです。

autospawn = no
daemon-binary = /bin/true

~/.config/pulse/default.paの編集
/etc/pulseからdefault.paをコピー

$ cp /etc/pulse/default.pa ~/.config/pulse

ネットワークモジュールを追記します。(下記を1行で)
ネットワークの値は自ネットワークの値を書き入れます。
~/.config/pulse/default.pa

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.11.0/24 auth-anonymous=1

以上でサーバー(Pi ZERO)の設定は完了しました。
pulseaudioの起動、停止は以下のコマンドで実行します。
エラーを表示しないでプロンプトが帰ってくればOK

$ pulseaudio -D or pulseaudio --start
$ pulseaudio -k or pulseaudio --kill

pulseaudio clientの設定
クライアントのPi3には音量コントロールのpavucontrolをインストール

# apt install pavucontrol

~/.config/pulse/client.confの編集
クライアント側にはサーバーのアドレスを記述します。
LAN内に複数のPulseAudioサーバーがあればこのファイルを編集して接続先を切り替えることができます。

autospawn = no
daemon-binary = /bin/true
# default-server = 192.168.11.111
default-server = 192.168.11.13

設定は以上で完了です。

PulseAudioサーバーに接続してみる
Pi3からインストールしたPulseAudio音量調節を起動します。

サーバー(Pi ZERO)のデーモン(pulseaudio)が起動していない時はこのようになにも表示しません。

sshでPi ZEROにログインしてpulseaudioを起動します。

Pi ZEROから
$ pulseaudio -D を実行するとコントロールが表示します。
当サイトのUSB=DACはSpeakers アナログステレオとして表示されています。
出力装置タブはマスターボリュームに相当します。
ここで少しボリュームを絞っておきます。


アプリケーションからなにか再生してみます。
最初は音が出ないかもしれません。
再生タブを選択するとアプリケーションの出力が(pulseaudio入力)bcm2835に入っています。
Speakers アナログステレオに切り替えると無事音が出ました。


youtubeを再生してみましょう。
youtubeのサイトを開く前に予めサーバーのpulseaudioが起動してないと自マシンのスピーカー出力にいってしまいます。
pulseaudioに接続するとパネルの音量コントロールは効かなくなるので最初はpavucontrolから確認しながら操作することになります。

なかなか快適に使えますね〜

次回はもう少しいろいろ触ってみたいと思います。・・・・・続く