Bluetoothデーモン
デフォルトのインストールでは、デーモン(bluetoothd)がバックグラウンドで実行されます(ファイルから実行されます/etc/init.d/bluetooth
)。このデーモンは、既知のbluetoothデバイスの認識と接続に注意を払い、の構成ファイルで構成できます/etc/bluetooth
。ヘッドセットを自動接続するには、次の行のaudio.conf
コメントを解除する必要があります(削除#
)。
AutoConnect=true
デーモンを再起動するには、と入力しsudo /etc/init.d/bluetooth restart
ます。
注:コマンドラインツールを使用してもsudo hcitool cc <MAC-Adress>
、デーモンの実行中に、テスト環境で既知のデバイスに安定した接続ができませんでした。
DBus
切断されているが物理的に存在しペアリングされたヘッドセットを接続するには、スクリプトからD-Busを使用できます。Pythonの例を次に示します。
#!/usr/bin/python
# Toggles headset connection
import dbus
from dbus.mainloop.glib import DBusGMainLoop
dbus_loop = DBusGMainLoop()
bus = dbus.SystemBus(mainloop=dbus_loop)
#Get dbus interface for headset
manager = bus.get_object('org.bluez', '/')
iface_m = dbus.Interface(manager, 'org.bluez.Manager')
adapterPath = iface_m.DefaultAdapter()
adapter = bus.get_object('org.bluez', adapterPath)
iface_a = dbus.Interface(adapter, 'org.bluez.Adapter')
devicePath = iface_a.ListDevices()[0] # assuming first device
device = bus.get_object('org.bluez', devicePath)
iface_h = dbus.Interface(device, 'org.bluez.Headset')
#Check state of connection
connected = iface_h.IsConnected()
print 'Toggling connection. Please wait'
# toggle connection
if not connected:
try:
iface_h.Connect()
print 'Connecting: ', devicePath
except:
print 'Device not found'
else:
iface_h.Disconnect()
print 'Disconnecting: ', devicePath
devicePath
もちろん、複数のBluetoothデバイスがある場合は、適切に適合させる必要があります。上記の例では、を接続しHeadset
ます。他のサービス(たとえばAudioSink
)のインターフェイスを別のプロトコルに変更します。
パルスオーディオ
BluetoothデバイスのMACアドレスがわかっている場合は、次の方法でpulseaudioの出力シンクとして接続できます。
pacmd set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx
ここで、xx_xx_xx_xx_xx_xxはMACアドレスです(pulseaudioで認識するには、「:」を「_」で置き換えます)。
詳細については、この回答も参照してください。