Raspberry Pi Zero W + RaspiAP
HOME BACK

はじめに

Raspberry Pi Zero WとDAC基板を組み合わせて、ミュージック・サーバーを作ってきたが、これをコントロールするために、 WiFi経由でMPDクライアントから 行っている。
しかし、この方法は自宅内WiFiルーターでの使用を前提としているため、自宅外へ持ち出した場合、ミュージック・サーバーをコントロールする術がない。
Raspberry Pi Zero W 自体がAP(アクセス・ポイント)の機能を有していれば、自宅外でもスマホやタブレットから、直接、コントロールできる。
実は数年前、この方法をあるMPDディストリビューションを利用して試したことがあるが、今回は別の方法でトライしてみる。
それはRaspAPである。
ベースとなるミュージック・サーバーであるが、PCM5102A DAC基板とRaspberry Pi Zero Wを組み合わせたものである。

セット・アップ

使用したPCM5102A DAC基板は以下の写真のようなものである。
左端のモード・スイッチは 1:Nomal latency 2:I2S にセットした。

ジャンクのパネルにPCM5102A DACとRaspberry Pi Zero Wを仮配置し、ジャーパー線で両者を接続した。
DACの電源は5Vであるが、Raspberry Pi Zero W経由で供給することにした。

OSのインストール、DAC・MPD関連の設定

RaspAPであるが、Raspberry Pi OSを通常どおりインストールし、mpd等の各種設定を施した後にインストールすることになる。
Raspberry Pi OS Liteのイストールについては 「Raspberry Pi OS Lite のインストール備忘録(改訂版)」を参照してもらいたい。
当初、最新版のRaspberry Pi OS Liteをインストールしたが、どういう訳かmpd関連の設定がうまくできず、Raspberry Pi OS Lite(Legacy)に変更した。

PCM5102A DACとRaspberry Pi Zero WはI2Sで接続されているので、音響関係の現況を確認してみる。
$ aplay -l
aplay: device_list:272: no soundcards found...

音響関係は認識されていないので、以下の設定を施す。
$ sudo vi /etc/asound.conf
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

/boot/config.txtに以下を追記する。
$ sudo vi /boot/config.txt
dtoverlay=hifiberry-dac

これでリブートしてaplay -lで確認すると、デバイスが認識されドライバーが組み込まれたことが判る。
$ aplay -l
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [HifiBerry DAC HiFi pcm5102a-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

次はMPD関連の設定を行う。
$sudo apt-get install mpd mpc
$sudo apt-get install alsa-utils

MPDの設定ファイルである /etc/mpd.conf を編集する。
$sudo vi /etc/mpd.conf
最初に bind_to_address という行を探し#でコメントアウトする。
#bind_to_address "localhost"

次の箇所を以下のように編集する。
audio_output {
type "alsa"
name "My ALSA Device"
# device "hw:0,0" # optional
# mixer_type "hardware" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional
}

次に、楽曲ファイル格納用ディレクトリー musicを作り、マウントし、リンクを張る。
$sudo mkdir /music
$sudo mount -a
$sudo ln -s /music /var/lib/mpd/music

次にUSBメモリーの自動マウントの設定を行う。
$sudo apt-get install usbmount
$sudo ln -s /media /var/lib/mpd/music
次に以下のファイルを作り、コメントする。
$sudo mkdir /etc/systemd/system/systemd-udevd.service.d
$sudo vi /etc/systemd/system/systemd-udevd.service.d/00-my-custom-mountflags.conf
[Service]
PrivateMounts=no

設定が終わったら、MPDを下記のコマンドで再起動する。
sudo /etc/init.d/mpd restart
[ ok ] Restarting mpd (via systemctl): mpd.service

次にsamba関連の2つのソフトをインストールする。
$sudo apt-get install samba
$sudo apt-get install samba-common-bin

sambaの設定ファイルを編集し下記を追記する。
$sudo vi /etc/samba/smb.conf
[music]
comment = music
read only = no
locking = no
path = /music
guest ok = yes
force user = root

[media]
comment = media
read only = no
locking = no
path = /media
guest ok = yes
force user = root

次にpasswdを設定する。
今回はsambaとした。
$sudo smbpasswd -a root
New SMB password:samba
Retype new SMB password:samba

sambaを再起動して完了である。
$sudo service samba restart
Failed to restart samba.service: Unit samba.service not found.
再起動出来なかったが、それでもWindowsPCから\\192.168.0.90へでアクセスすると問題なく/media、/musicに到達し、楽曲ファイルも格納できた。

OSとMPDのバージョンは以下のとおりである。
$ uname -a
Linux raspberrypi 5.10.103+ #1529 Tue Mar 8 12:19:18 GMT 2022 armv6l GNU/Linux
$ mpd -V
Music Player Daemon 0.21.5 (0.21.5)

特性

PCにインストールしたefu氏のテスト信号発生ソフト WaveGeneでいろいろな周波数、いろいろなレベルの192kHz24BITの サイン波を発生させ、waveファイルとして/musicに格納した。
それを再生しDACのアナログ出力電圧を計測してみた。
1kHz0dBFSを再生すると出力電圧は2.0Vとなり、残留ノイズは0.045mVとかなり低めであった。
周波数特性は、低域の5Hzが若干持ち上がっあり、高域は20kHzから低下が見られれ、-20dBでも同じ傾向であった。

歪率特性は、同じDAC-IC TI PCM5102Aを使用した他のDACと比べると同じ傾向である。

RaspAPのインストール

ここまでは、AP(アクセス・ポイント)の機能を有していない通常のMPDサーバーであるが、いよいよRaspAPをインストールしてみる。

RaspAPへアクセスすると左図のような画面となるので、"QUICK START"をクリックすると インストールの説明文が現れるので、それに沿ってインストールする。

Raspberry Pi Zero Wにアクセスして以下のコマンドを実施する。
pi@raspberrypi:~ $sudo apt-get update

次は
pi@raspberrypi:~ $sudo apt-get full-upgrade

最後にリブートする。
pi@raspberrypi:~ $sudo reboot

その後、sudo raspi-configとし、WiFi countryを設定するが、筆者の場合、Raspberry Pi OSのインストール時に設定済みなので省略した。

いよいよ、RaspAPのインストールであり、以下のコマンドを実施する。
数回、オプションの是非を問われたが、全て"yes"とした。
pi@raspberrypi:~ $curl -sL https://install.raspap.com | bash

RaspAP Install: Installation completed
Join RaspAP Insiders for early access to exclusive features!

上記のメッセージが出れば、完了である。

AP(アクセス・ポイント)への接続

RaspAPをインストールしたRaspberry Pi Zero Wの電源を投入し、Windows10の設定画面から "ネットワークとインターネット"→"利用できるネットワークの表示"とすると左図のように "rasp-webgui"が現れるはすである。

"rasp-webgui"に接続すれば、Raspberry Pi Zero WはAP(アクセス・ポイント)として動作している。
"rasp-webgui"接続時にパスワードは要求されなかった。

今回の目的は、Raspberry Pi Zero W のMPDサーバーが、AP(アクセス・ポイント)の機能を有し、 WiFi経由でMPDクライアントからアクセスできることである。
MPDクライアントのGMPCから"rasp-webgui(IP 10.3.141.1)"にアクセスすると左図のように無事、接続することができた。
今回は自宅外での使用を想定しているので、音楽データはUSB端子に接続したUSBメモリーに格納する方法とした。
もちろん、本体のSDカードにも格納できる。

sambaを設定してあるので、"\\10.3.141.1"で検索すると、左図のようにアクセスでき、データも取り扱える。


当然、SSHでコマンド・ラインに接続できる。
ユーザ名、パスワードはRaspberry Pi OS Liteのイストール時に設定したものを使用する。

ホスト 10.3.141.1
ユーザ名  pi
パスワード ********

ifconfigでwlan0をチェックしたら、以下のようになった。
pi@raspberrypi:~ $ifconfig
wlan0: flags=4163 mtu 1500
inet 10.3.141.1 netmask 255.255.255.0 broadcast 10.3.141.255
inet6 fe80::bb9e:f00:5397:c305 prefixlen 64 scopeid 0x20
ether b8:27:eb:f8:21:6f txqueuelen 1000 (Ethernet)
RX packets 680 bytes 64707 (63.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 600 bytes 91551 (89.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

まとめ

当初の目的であるRaspberry Pi Zero W をAP(アクセス・ポイント)化し、MPDクライアントから問題なくコントロールすることかできた。

HOME BACK

Last Update 30/Apr/2022 by mac