Linux/Bluetooth

★Slackware14.2/Current

package

bluez-5.50-x86_64-2.txz
bluez-alsa-1.2.0-x86_64-1_slonly.txz

start

# /usr/bin/bluealsa &

Config

$ cat .asound
pcm.default bluealsa
ctl.default bluealsa

defaults.bluealsa.interface "hci0"
defaults.bluealsa.device "xx:xx:xx:xx:xx:xx"
defaults.bluealsa.profile "a2dp"
defaults.bluealsa.delay 10000

pcm.bt-receiver {
  type bluealsa
  device "xx:xx:xx:xx:xx:xx"
  profile "a2dp"
}

application

aplay -D bluealsa xxx.wav
mpg123 -a bluealsa xxx.mp3
mplaye -ao alsa:device=bt-receiver xxx.mp4

★Slackware12

Slackware12 に標準でインストールされているBlueZは audio.service が有効でなく,bluez-utils のバージョンも 3.9と少々古いため最新化を行う.

bluez のインストール

blueZから最新のパッケージ(2008.2.16時点で3.26)を入手、make し、既存のパッケージと入れ替える.

bluez-libs-3.26.tar.gz

> tar xvfz bluez-libs-3.26.tar.gz
> cd bluez-libs-3.26
> ./configure --prefix=/usr/local/bluez-3.26
> make
> sudo removepkg bluez-libs-3.9-i486-1
> sudo make install

bluez-utils-3.26.tar.gz

> tar xvfz bluez-utils-3.26.tar.gz
> cd bluez-utils-3.26
> ./configure --prefix=/usr/local/bluez-3.26
> make
> sudo removepkg bluez-utils-3.9-i486-1
> sudo make install
> sudo cp daemon/passkey-agent /usr/local/bluez-3.26/bin/

bluez-firmware-1.2.tar.gz
bluez-hcidump-1.41.tar.gz

これらは既存のパッケージをそのまま利用で大丈夫だろう.

インストール

# cd /usr/local/
# ln -s bluez-3.26 bluez
# cd /usr/local/bin; ln -s ../bluez/bin/* .
# cd /usr/local/sbin; ln -s ../bluez/sbin/* .
# cd /usr/local/lib; ln -s ../bluez/lib/* .
# cd /usr/local/libexec; ln -s ../bluez/libexec/* .
# cd /usr/local/include; ln -s ../bluez/include/* .
# cd /var/lib; ln -s /usr/local/bluez/var/lib/* .
# cd /usr/local/etc; ln -s ../bluez/etc/* .
# cd /etc; ln -s /usr/local/etc/bluetooth .
# cd /etc/dbus-1/system.d/; ln -s /usr/local/etc/dbus-1/system.d/bluetooth.conf .
# cd /etc/udev/rules.d; ln -s /usr/local/etc/udev/bluetooth.rules 60-bluetooth.rules
# cd /etc/rc.d/; ln -s /usr/local/etc/init.d/bluetooth rc.bluetooth
# cd /etc/default; ln -s /usr/local/etc/default/bluetooth .
# cd /usr/lib/alsa-lib; ln -s /usr/local/lib/alsa-lib/* .

MPX3000RPとの接続

bluez/AudioDevicesを参考にして,bluetoothデバイスとの接続を行う.

audioサービスの有効化

> dbus-send --system --print-reply --dest=org.bluez /org/bluez org.bluez.Manager.ActivateService string:audio
method return sender=:1.0 -> dest=:1.5
   string ":1.4"

audioデバイス作成

> dbus-send --system --print-reply --type=method_call --dest=":1.4" /org/bluez/audio org.bluez.audio.Manager.CreateDevice string:00:0D:3C:xx:xx:xx
method return sender=:1.4 -> dest=:1.7
   string "/org/bluez/audio/device0"

MPX3000RP をペアリングモードにした上で、hcitool で scan する.

> hcitool scan
Scanning ...
        00:0D:3C:xx:xx:xx

接続(平行してPINコードを設定する)

> passkey-agent <pin_code> 00:0D:3C:xx:xx:xx &
> dbus-send --system --print-reply --type=method_call --dest=":1.4" /org/bluez/audio/device0 org.bluez.audio.Sink.Connect
Passkey request for device 00:0D:3C:31:66:DB
Passkey service has been released
method return sender=:1.4 -> dest=:1.8

再生の準備

> cat > ~/.asoundrc
pcm.bluetooth {
        type    bluetooth
        device  00:0D:3C:31:66:DB
}

再生(play)

> play --device=bluetooth xx.mp3

再生(mplayer)

> mplayer -ao alsa:device=bluetooth xx.mp3

設定を一通り完了すると,次回からはbluetoothデバイスの電源を入れ,再生開始するだけで良くなるようだ.



---
update at 2019/09/29 21:17:42

※注:当サイトは特定環境において確認できた事象のみを記述しています。他の環境での動作は一切保証しません。