平衡点
2008/12/25
_ 帰省
毎度の事ながら, 飛行機(の安い切符)を取り損ねたので, 往復とも新幹線に.「はやて」の切符が取れそうな日ということで, ちょっと早いけれど 27 に帰省することに.
...しかし, 飛行機って高いなぁ. 出遅れると, 飛行機片道分 ≒ 鉄道往復 + 福沢さん一人分程度. 時間をお金で買ってるんだと思えば, まあそうなのかな.
というわけで, 新幹線ハックですね. はい.
_ bluetooth でじたばた
先日購入した
プラネックス
と, USB 経由の bluetooth アダプタ
プラネックス, ¥670
を使って, laptop で音を鳴らして bluetooth で飛ばして, リモートのイヤホンで聞くまで. 試しに Windows でやってみたらさっくりできたので debian でもやりたくてじたばた.
PIN(passkey) の登録までにちょっと手間取った.
必要なモノ
とりあえず以下を install した.
- bluez-utils
- bluez-audio
/etc/init.d/bluetooth が導入されて, daemon として hcid が起動する.
あと設定用に
- bluez-gnome
を入れておく. xfce4 を使っているので, 自動起動に入れておく.
設定とか
挿してみて動作しない場合には
- bluez-firmware
を入れてみると良いかもしれない. 挿してみると
usb 2-1: new full speed USB device using uhci_hcd and address 3 usb 2-1: configuration #1 chosen from 1 choice usb 2-1: New USB device found, idVendor=0a12, idProduct=0001 usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
と見えた. ついでにタスクバーに bluez-gnome のアイコンが出てきた.
ここでイヤホン受信側をボンディング状態にして一度スキャンする
$ hcitool scan
ここで見えた XX:XX:XX:XX:XX:XX は後で使うのでメモしておく.
サービスのアクティベーション
続いて PIN コード(passkey) によって認証してボンディングする.<URL:http://wiki.bluez.org/wiki/HOWTO/AudioDevices:title> にあるようにdbus を直接叩く(ここにある python スクリプトでも良いけど).
$dbus-send --system --print-reply --dest=org.bluez \ /org/bluez org.bluez.Manager.ActivateService string:audio ... string "org.bluez"
返ってくる string を次に使う. ここでは "org.bluez" が返ってきた.
デバイスの登録.
$dbus-send --system --type=method_call --print-reply \ --dest="org.bluez" /org/bluez/audio \ org.bluez.audio.Manager.CreateDevice string:XX:XX:XX:XX:XX:XX ... string "/org/bluez/audio/device0"
"--dest" はアクティベーションで返ってきた文字列を指定, string は接続したい機器のアドレス. 返ってきた string が作成されたデバイス.
接続
受信側をボンディング待受状態にしておく. でもって,
$ dbus-send --system --type=method_call --print-reply \ --dest="org.bluez" "/org/bluez/audio/device0" org.bluez.audio.Sink.Connect
"--dest" にアクティベーションで返ってきた文字列, 続いて作成したデバイスを設定して接続. そうすると bluez-gnome アプレットがPIN コードの入力を要求してくる. 入力すると無事接続できた.
実際に音を鳴らしてみる.
先ず dmix 経由で鳴らしてみる. ~/.asoundrc に
# for bluetooth pcm.bluetooth{ type plug slave { pcm "bluetooth_hw" } } pcm.bluetooth_hw { type bluetooth device XX:XX:XX:XX:XX:XX profile "auto" }
適当な mp3 でもって
$ mplayer -ao alsa:device=bluetooth test.mp3
で鳴った.
面倒なのは, 音を出すアプリケーション毎に出力を設定しないといけないこと. 設定が嫌なので, PulseAudio で出力することに.
# for default -> PulseAudio pcm.!default{ type pulse } ctl.!default{ type pulse } # for bluetooth pcm.bluetooth{ type plug slave { pcm "bluetooth_hw" } } pcm.bluetooth_hw { type bluetooth device 00:1B:DC:20:14:58 profile "auto" }
これはこれで. .xsession あたりに
pulseaudio -D 2>/dev/null
として pulseaudio が起動するようにしておく.