DragonBoard 410c(Debian)でPechatを使用してみる
DragonBoardの唯一困った点は音声出力のpinがデフォルトではないことかなと思います。
できれば、このあたりもついていると良かったかなと。最近は音声認識や自動音声や音声による操作もあるので、こういう方向もアクセスできるといいなあと思ったり。
ただ、DragonBoardにはBluetoothがついているのでBluetooth用の音声機器は接続できます。以前のエントリでRaspberryPiでBluetoothスピーカーのPechatを使用してみました。
一応無事には接続し使用できたのですが、XからのGUI経由でしか設定できなかったので、微妙な感じでした。そのリベンジも兼ねてDrabgonBoardでも設定をチャレンジしてみます。
uepon.hatenadiary.com
ちなみに結論に急ぎたい方は回答編まですっ飛ばしてください。
一応、前提とする環境を確認します。OSのディストリビューションを確認します。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.0 (stretch)
Release: 9.0
Codename: stretch
もちろん、Debianですが、自分が使用したOSイメージはdragonboard410c_sdcard_install_debian-233.zip
です。最新ではなく一つ古いバージョンかなと思います。(特にこだわりがなければ最新イメージのほうがいいかなと思います。)
Documentation - 96Boards
音声デバイスとしての制御はPulseAudio
を使用するので、pulseaudio関係のパッケージのインストール状況も確認します。
$ dpkg -l | grep pulse
ii libpulse-mainloop-glib0:arm64 10.0-1 arm64 PulseAudio client libraries (glib support)
ii libpulse0:arm64 10.0-1 arm64 PulseAudio client libraries
ii libpulsedsp:arm64 10.0-1 arm64 PulseAudio OSS pre-load library
ii pulseaudio 10.0-1 arm64 PulseAudio sound server
ii pulseaudio-module-bluetooth 10.0-1 arm64 Bluetooth module for PulseAudio sound server
ii pulseaudio-utils 10.0-1 arm64 Command line tools for the PulseAudio sound server
ii xmms2-plugin-pulse 0.8+dfsg-18
デフォルトでインストールも完了しています。
あとはCLIからBluetoothの接続をおこなってみます。Bluetoothの確認用コマンドはbluetoothctl
です。
$ sudo bluetoothctl -a
[NEW] Controller 00:00:00:00:XX:XX linaro-alip [default]
Agent registered
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:00:00:00:XX:XX Discovering: yes
[NEW] Device CC:30:80:00:XX:XX Pechat-00F8A1
[NEW] Device AE:12:42:3B:XX:XX 36bde7-bt
[CHG] Device AE:12:42:3B:FF:12 RSSI: -86
[bluetooth]# pair CC:30:80:00:XX:XX
Attempting to pair with CC:30:80:00:XX:XX
[CHG] Device CC:30:80:00:XX:XX Connected: yes
[CHG] Device CC:30:80:00:XX:XX UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device CC:30:80:00:XX:XX UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device CC:30:80:00:XX:XX ServicesResolved: yes
[CHG] Device CC:30:80:00:XX:XX Paired: yes
Pairing successful
[CHG] Device CC:30:80:00:XX:XX ServicesResolved: no
[CHG] Device CC:30:80:00:XX:XX Connected: no
[bluetooth]# connect CC:30:80:00:XX:XX
Attempting to connect to CC:30:80:00:XX:XX
[CHG] Device CC:30:80:00:XX:XX Connected: yes
Connection successful
[CHG] Device CC:30:80:00:XX:XX ServicesResolved: yes
[CHG] Device AE:12:42:3B:XX:XX RSSI: -87
[CHG] Device AE:12:42:3B:XX:XX RSSI: -74
[Pechat-00F8A1]# quit
Agent unregistered
[DEL] Controller 00:00:00:00:XX:XX linaro-alip [default]
無事にペアリングもコネクトもできました。あとはServiceの設定などを行うのみです。以下はほとんどRaspberryPiのときのエントリーそのままになります。RaspberryPiでは失敗していたのでかなり不安ではありますが…
/etc/systemd/system/pulseaudio.service
ファイルを作成
$ sudo vim /etc/systemd/system/pulseaudio.service
【/etc/systemd/system/pulseaudio.service】
[Unit]
Description=Pulse Audio
[Service]
Type=simple
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm
[Install]
WantedBy=multi-user.target
/etc/dbus-1/system.d/pulseaudio-bluetooth.conf
ファイルを作成
$ sudo vim /etc/dbus-1/system.d/pulseaudio-bluetooth.conf
【/etc/dbus-1/system.d/pulseaudio-bluetooth.conf】
<busconfig>
<policy user="pulse">
<allow send_destination="org.bluez"/>
</policy>
</busconfig>
以上で設定ファイルの編集は終了となります。
pulseaudioサービスの設定
最後に起動時に自動的に設定をされるようにサービスの開始と有効化を行っておきます。
$ sudo systemctl start pulseaudio.service
$ sudo systemctl enable pulseaudio.service
これで完了です。 あとは先程と同じくBluetoothの状態の確認をしますが、基本無事にコネクトができているので一安心です。
後は音声が正常に再生されればいいのですが…
$ aplay /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
あれ?
エラーは出ないが、音がならない…RaspberryPiとは違う状況…
最初はmixserの設定で音量が下がっているのかなと思ったのですが、そんなこともなくさすがに微妙な感じになってしまいました。
仕方ないのでサービスはストップし、起動時は無効にすることにします。
$ sudo systemctl stop pulseaudio.service
$ sudo systemctl disable pulseaudio.service
回答編
結局、コマンドラインからの設定は成功しませんでした。(RaspberryPiでもうまく行っていなかったので、こちらがそのままの方法でうまくいくとは思いませんでしたが。)
最後にXを使用してBluetoothの設定を行ってみます。(事前にPechatの電源は入れておいてください。)
まずは、Xの下部のメニューバーをクリックし【設定】→【KDEシステム設定】を選択します。すると設定のダイアログウインドウが開きます。
その中から【ネットワーク】→【Bluetooth】を選択します。
するとBluetoothで接続されたデバイスの一覧が表示されます。
画面上にPechatが表示されているのがわかるかと思います。
一覧からPechatを選択してみます。
するとダイアログの右側にヘッドフォンの画像が表示されます。
その画面中のTrusted
の部分にマウスでチェックをしてみます。
その後、ダイアログ右側にある【Connect】をクリックします。
接続がうまくいくとボダンの文字はDisconnectという文字列に変更します。
一応この時点でもaplay
コマンドで音がなりませんでした。さすがに八方塞がりかと思ってしまうのですが、今度は下部のメニューバーをクリックし、【サウンドとビデオ】→【PluseAudio Volume Control】を選択します。
選択後に開いだダイアログの【Output Device】を確認すると本体側(B410c)の設定とPechat側の設定が存在することがわかります。問題はなさそうでもあったので、この時点でaplay
コマンドで再生させるのですが、問題はなさそうでしたが音声はなりませんでした。そのため、今度は本体側の外してみます。【Configure】タブを選択しD410cの【Profile】をOffに変更します。
特に問題はなさそうですが、以前音声デバイスの優先順位の設定をしていたときに、優先度が異なると音声がならないということがあったことをふと思い出しました。
ペアリングさせなおすのですが、これで問題はなく設定は完了になりそうです。
音声の再生
$ aplay /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
音声が再生されました。やっと正常に動作します。
再起動時などにはペアリングなどは解除されるので起動時に再度Pechatの電源ボタンをOnにしてペアリングさせてあげれば問題はないかなと思います。
おわりに
やっぱり、コマンドラインからの設定はうまく行かず…。Xからの設定でうまくいっているので事実上問題はないのですが…残念です。現在の自分の能力ではそこまでということか。トホホ。