● pirate Audio DACを設定する
2023.07.25 更新:2023.12.22
pirate Audio DACには LCDと4つの Buttonがついています。
WiFiの無い環境やパソコンの無い環境でも音楽が聞ける様に
このLCDと4つの Buttonだけで音楽が聴ける様に設定します。
Pirate-audio DAC
Button 機能割付
必要となるSoftware一覧
・RaspbrryPi 32bit Lite (Micro SD 4GB)
Linux raspberryPi 6.1.21+ armv6l GNU/Linux
Version Raspbian GNU/Linux 11 (bullseye)
・mopidy-Audio
・Pirateplayer
Raspberry Pi Software install
1. SD Cardに Raspberry Pi Lite (32bit)を Downloadして install
2. 作成した SD Cardを Raspi zeroにsetして初期設定を行う。
3. /etc/dhcpcd.confを設定して IP Addressの固定をしておく。
4. Raspberry Pi Lite には、gitなどが入っていないので先ず install
$ sudo apt install git python3-rpi.gpio python3-spidev python3-pip
python3-pil python3-numpy
mopidy install
1. Pirate-Audio install
$ git clone https://github.com/pimoroni/pirate-audio
$ cd pirate-audio/mopidy
$ sudo ./install.sh
2. mopidy.configの設定
$ cd /etc/mopidy
$ sudo nano mopidy.conf
[raspberry-gpio]
enabled = true
bcm5 = play_pause,active_low,250
bcm6 = volume_down,active_low,250
bcm16 = next,active_low,250
bcm20 = volume_up,active_low,250
#bcm24 = volume_up,active_low,250
bcm20とbcm24が動作すると誤表示するので bcm24を
comment outする。
[local]
enabled = true ・・・追加
media_dir = /home/pi/Music ・・・追加
[http]
enabled = false → true ・・・変更
hostname = 0.0.0.0 → 192.168.1.11 ・・・変更
port = 6680 ・・・追加
[spotify]
enabled = false → true ・・・変更
以上を変更して ctl+oで保存、ctl+xで終了
3. /boot/config.txtの設定追加
$ cd /boot
$ sudo nano config.txt
dtoverlay=hifiberry-dac
gpio=25=op,dh
dtparam=spi=on
dtparam=audio=off
4. 電源起動で有効になる様に設定。
$ systemctl enable mopidy.service
$ systemctl start mopidy.service
$ systemctl status mopidy.service
active (running)が出れば正常動作しています。
mopidy Web Top画面表示
web browserを開いて 192.168.1.11:6680 を入力する。
iris に loginする。
iris 設定画面表示
この状態でも Web画面から irisに loginすると Web画面から選曲もできるし
pirate-Audioから音も出る。
Web画面から選曲している間は pirate-Audio側の Buttonで停止・再生は
動作する。
Pirateplayer install
1. まず installするもの
$ sudo apt install gobject-introspection libgirepository1.0-dev
libcairo2-dev
2. pipで pirateplayer install
この時必ず sudoを付けて installをおこなう。
pirateplayerをroot以外でinstallすると動作しない。
関連する numpyなども sudoをつけて installしないと Errorが出る。
$ sudo pip install pirateplayer
これで pirateplayerが /usr/local/binに installされる。
3. pirateplayer.serviceの設定
login時にnetwork Fileの終了を待たずにpirateplayerが起動してしまうと
Failed status=1/FAILUERが出て起動しない。
mopidyの[Unit]部分と同じ項目を書いたらErrorは出なくなった。
起動はmopidyより後になる様に pirateplayerを設定する。
systemdは .bashrcや.profileに書いたPATHは読み込みをしないので、
[Service]欄に Environment=piratePathを記述する。
ExecStart= の行の後半部分には --config PATHを書いておく。
sudoを付けてinstallするか PermissionStartOnly=trueを入れる。
4. PATHの作成
/etcに sysconfig Folderを作成して piratePath Fileを作成する。
PiratePathには /usr/loca/binの PATHを記述する。
$ cd /etc
$ sudo mkdir sysconfig
$ cd sysconfig
$ sudo nano piratePath
PATH="/usr/local/bin:$PATH"
5. pirateplayer.serviceの作成
pirateplayer.serviceを systemdに作成する。
pipで installしたらこれも作ってくれなかった。
作成した pirateplayer.serviceの設定 File
・pirateplayer.serviceの設定内容
$ cd /usr/lib/systemd/system
$ sudo nano pirateplayer.service
[Unit]
Description=PiratePlayer Service
After=avahi-daemon.service
After=dbus.service
After=network-online.target
Wants=network-online.target
After=nss-lookup.target
After=pulseaudio.service
After=remote-fs.target
After=sound.target
After=mopidy.service
[Service]
User=pi05
EnvironmentFile=/etc/sysconfig/piratePath
PermissionsStartOnly=true
ExecStart=/usr/local/bin/pirateplayer --config /usr/lib/systemd/system/pirateplayer.service
[Install]
#WantedBy=default.target
WantedBy=multi-user.target
・pirateplayer.serviceの場所
$ /usr/lib/systemd/system/pirateplayer.service
・ シンボリックリンクの設定
/etc/systemd/systemにシンボリックリンクを作成
$ ln -s /usr/lib/systemd/system/pirateplayer.service
/etc/systemd/system/multi-user.target.wants
再起動して statusを確認します。
$ systemctl --user enable pirateplayer.service
$ systemctl --user start pirateplayer.service
$ systemctl --user status pirateplayer.service
active (running)が出れば正常動作しています。
6. pirateplayerのconf.ini
pipで installしたら conf.iniを作ってくれなかった。
pirateplayerの programが読み取りに行く Folderに conf.iniを作る。
$ /home/pi/.config/pirateplayer/conf.ini
[PLAYER]
root = ~/Music
[BUTTON]
a = 5
b = 6
x = 16
y = 20
7. pirateplayer Programの場所
・binの場所
$ /usr/local/bin/pirateplyer
・python programの場所
$ /usr/local/lib/python3.9/dist-packages/pirateplayer
__main__.py
__init__.py
view.py
controller.py
library.pyなど
8. gstreamer install
mopidyを installすると gstreamerの programが installされるので
手作業で installする必要はなくなった。(2023.12.22)
9. Errorの対処
途中で libcblas.so.3と libopenblas.so.0 が無い Errorが発生する。
libcblas.so.3 は libatlas3-baseに含まれるのでこれを installする。
libopenblas.so.0 は libopenblas-devに含まれるのでこれを installする。
ValueError Namespace Gst not available ・・・Gst Errorがでたので
python3-gst-1.0を installする。
・install command
$ sudo apt-get install libatlas3-base
$ sudo apt-get install libopenblas-dev
$ sudo apt-get install python3-gst-1.0
pirateplayer起動画面
Pirateplayer LCD画面が1分で消える
LCDの画面が1分で消えた後は Button操作後の内容が表示されないので
選曲ができなくて不便
$ cd /usr/local/lib/python3.9/dist-packages/mopidy_pidi
$ sudo nano ext.conf
[pidi]
enabled=true
display=st7789
rotation=90
idle_timeout=60 ⇒ 36000に変更
#を付けて無効にすると Errorが出るので36000(10時間)にした。
pirateplayer起動後の LCD画面
電源投入後の Pirate-Audio mopidy の LCD表示。
この状態では「A」と「X」の Buttonは動作していない。
「B」と「Y」の Volume Controllは出来る。
Passwordを keyinして raspiに loginすると Pirateplayerが有効になる。
その後は 4つの Buttonで、曲選択・再生・停止が可能になる。
raspi zeroが自動 loginする様に raspi-configで修正する。
$ sudo nano raspi-config
簡易 GUI が表示されたら下記項目を変更する。
1. System Option ・・・Select
2. Boot/Auto Login ・・・Select
3. B2 Console Autologin ・・・OK
Finish 選択して終了・再起動。
mopidy.localを開いて ext.confに PATHを追加する。
$ cd /usr/local/lib/python3.9/dist-packages/mopidy_local
$ sudo nano ext.conf
[local]
#media_dir=$XDG_MUSIC_DIR comment outする
media_dir=$XDG_MUSIC_DIR/Music Music folderを追加
これは再起動しないと有効にならない → $ sudo reboot
Button操作でも選曲メニューが表示される様になった。
LCD画面の表示が更新されない
PCから mp3を転送しても LCD画面に反映されません。
これは iris Web画面から Local scanを行うか又は LXTerminalから scanを
行なわねば反映されません。
1. Web画面からの操作: irisに loginして下記操作
「設定」画面の「詳細」⇒「ローカルスキャン開始」を押して反映させる。
2. LXTerminalを開いて command入力により反映させる。
$ sudo mopidyctl local scan
曲を選択した後の LCD画面
Music folder に cover.pngという fileを追加して背景にする
Bluetooth headset 接続
raspberryPi zeroの bluetoothは pairingまでは出来るが
Errorが出てconnectが出来ない。
$ systemctl status bluetooth.service
Failed to set privacy:Rejected (0x0b)
これは bluealsa が installされていない事による。
$ sudo apt install bluealsa
install出来ない。・・・なぜ?
原因は、raspberryPi zeroのこの versionの bluealsaはまだ開発中だった。
Linux raspberryPi 6.1.21+ armv6l GNU/Linux
Version Raspbian GNU/Linux 11 (bullseye)
Raspbian version 12から提供される予定。
----------------------------------------------------------------------------------------------------------------------------