0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Pi + JackでBluetoothレシーバー

Last updated at Posted at 2021-11-28

~~結論から言うとうまくいってません。~~結構いいところまでいきました。

  • Raspberry Pi Zero 2ではブツブツ切れてしまいまともに再生できない(同時に動かしているソフトシンセは問題なく鳴っているのでCPUパワーが足りないということではない)。Pi4ではこの問題は起きない。
  • iPhoneから再生した場合に音量のコントロールができない←できるようになった。

参考にしたサイト等

必要パッケージのインストール

既に入っているものもあるが念のため。

$ sudo apt-get install -y bluez pulseaudio-module-bluetooth python-gobject python-gobject-2 pulseaudio-module-jack

Pulse Audioの設定

$ sudo nano /etc/pulse/default.pa

末尾に下記を追加。最後の1行はJack経由で鳴らすための設定。

/etc/pulse/default.pa
load-module module-jack-sink
load-module module-jack-source
set-default-sink jack_out

Bluetoothの設定

$ bluetoothctl show
Controller XX:XX:XX:XX:XX:XX (public)
	Name: XXXXXXXX
	Alias: XXXXXXXX
	Class: 0x000c0000
	Powered: yes
	Discoverable: no
	Pairable: yes
	UUID: Headset AG                (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	UUID: Generic Attribute Profile (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	UUID: A/V Remote Control        (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	UUID: Generic Access Profile    (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	UUID: PnP Information           (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	UUID: A/V Remote Control Target (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	UUID: Audio Source              (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	UUID: Audio Sink                (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	UUID: Headset                   (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
	Modalias: usb:xxxxxxxxxxxxxxx
	Discovering: no

ペアリング

$ bluetoothctl
# power on
# agent on
# default-agent
# discoverable on

ここでiPhoneからBluetooth接続を行う。ペアリングの途中で許可するか聞かれるのでyesとタイプして、その後iPhone側でOKして再度聞かれるのでyesとタイプ。これで繋がった。繋がった後はiPhone側で何か再生したらラズパイ側で鳴る。

再生の安定性の問題

Pi4では正常に再生されたがPi Zero 2ではブチブチ切れてしまい実用にならなかった。何が原因かは良くわからない。Alsaに直結すると直るらしいが、Jackで鳴らしたいのでなんとも。バッファサイズの調整でかなり改善することがわかった。

$sudo nano /etc/pulse/daemon.conf

バッファは64サンプルで動かしているので

default-sample-rate = 44100
default-fragments = 256
default-fragment-size-msec = 371

とか設定するとかなり安定する。ただ、それでもPi Zero 2では厳しい。topで調べるとkworker/u8:5-events_unboundというのが2つCPUを使いまくっているのが気になるのでこれが原因かもしれない。

最新のBlueZをビルドしてインストール

下記を参考に最新版 (これを書いている時点では5.62) を入れてみたが状況は変わらず。

音量の変更

これを走らせておくと、再生側の機器で音量のコントロールするとそれが効くようになる。

音量コントロールの信号はちゃんときてて、それをPulseAudioのモジュールでは対応できてないのだけど、このプログラムではPulseAudioのMaster Volumeを動かすことで対処してる。Jackに直接流しているシンセの音量は影響を受けないところがいい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?