Bluetooth キーボード
この記事では Arch Linux で bluez バージョン5を使って Bluetooth HID キーボードを設定する方法を解説します。
目次
ペアリング
有線キーボードあるいは SSH を使ってコンピュータにログインしてください。
まず、ローカルの BT コントローラ (例: BT ドングル) が認識されていることを確認します:
# lsusb
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
上記は Keysonic の BT ドングルを使用している場合の出力です。
systemctl を使って bluetooth
サービスを起動・有効化してください。詳しくは systemd を見てください。
ペアリングをする必要があるのは一度だけです。BT ドングルが同梱されている BT キーボードは大抵既にペアリングがされていますが、必ずしもそうとは限りません。bluez に含まれている bluetoothctl
コマンドを使ってドングルとキーボードをペアリングします。
まずは bluetoothctl
を起動してください:
# bluetoothctl -a
[bluetooth]#
[bluetooth]#
プロンプトが表示されます。コントローラやデバイスが認識されると "bluetooth" という文字は青色になります。
まずはコントローラの電源をオンにします:
[bluetooth]# power on
Changing power on succeeded [CHG] Controller 06:05:04:03:02:01 Powered: yes
次にキーボードだけを検索するようにデフォルトエージェントを設定します:
[bluetooth]# agent KeyboardOnly
Agent registered
[bluetooth]# default-agent
Default agent request successful
それからコントローラを pairable モードに切り替えます:
[bluetooth]# pairable on
Changing pairable on succeeded
そうしたらキーボードをペアリングできる状態にしてください。キーボードによっては裏側にペアリング用の特殊なボタンがあったり、あるいは特定のキーを同時に押す必要があります。使用しているキーボードのドキュメントを見てください。ペアリング状態には時間制限があり、デバイスによって30秒だったり2分だったりとまちまちです。
コントローラからデバイスをスキャンします:
[bluetooth]# scan on
Discovery started [CHG] Controller 06:05:04:03:02:01 Discovering: yes
数秒後にキーボードのアドレスが表示されます。何度も表示されますが、コマンドの入力は問題なくできます。
キーボードの BT-MAC アドレスを使用してペアリングを実行:
[bluetooth]# pair 01:02:03:04:05:06
Pairing successful
ペアリングができたら、信頼するデバイスとして設定してください (デバイスから接続できるようになります)。同じ BT-MAC アドレスを使用してください:
[bluetooth]# trust 01:02:03:04:05:06
Trusted
最後にキーボードに接続します:
[bluetooth]# connect 01:02:03:04:05:06
Connection successful
接続できたら bluetoothctl
ユーティリティを終了してください:
[bluetooth]# quit
意図的にペアリングを解除しないかぎり、永続的にペアリングされ続けます。ただし自動的に BT デバイスに接続されるわけではありません。コンピュータを起動するたびに毎回コントローラの電源をオンにしてデバイスとコントローラを接続する必要があります。
Bluetooth キーボードを手動で有効化
まず hciconfig
ユーティリティを使って BT コントローラの電源を入れます。BT デバイスがひとつしかない場合、デバイスの名前は hci0
になります:
# hciconfig hci0 up
それから hcitool
ユーティリティを使って接続します。キーボードが接続可能な状態であることを確認して以下のコマンドを実行:
# hcitool cc 01:02:03:04:05:06
これで BT キーボードが使えるようになるはずです。
Bluetooth キーボードを自動で有効化
自動で接続するには bluetoothctl でデバイスを信頼するように設定してください。自動でアダプタの電源を入れる方法は複数あります:
systemd のサービスファイルを使う
/etc/btkbd.conf
設定ファイルを作成してください:
# Config file for btkbd.service # change when required (e.g. keyboard hardware changes, more hci devices are connected) BTKBDMAC = ''mac_address_of_your_device'' HCIDEVICE = ''hci_device_identifier''
mac_address_of_your_device
は bluetoothctl ユーティリティの scan on
コマンドで確認できます。
hci_device_identifier
は以下のコマンドで確認できます:
# hcitool dev
Devices: hci0 06:05:04:03:02:01
上記の場合は hci0
になります。出力されている MAC アドレスはコントローラの MAC アドレスです。キーボードの MAC アドレスではありません。
それから /etc/systemd/system/btkbd.service
ファイルを作成してください:
[Unit] Description=systemd Unit to automatically start a Bluetooth keyboard Documentation=https://wiki.archlinux.org/index.php/Bluetooth_Keyboard Requires=dbus-org.bluez.service After=dbus-bluez.org.service ConditionPathExists=/etc/btkbd.conf ConditionPathExists=/usr/bin/hcitool ConditionPathExists=/usr/bin/hciconfig [Service] Type=oneshot EnvironmentFile=/etc/btkbd.conf ExecStart= ExecStart=/usr/bin/hciconfig ${HCIDEVICE} up # ignore errors on connect, spurious problems with bt? so start next command with - ExecStart=-/usr/bin/hcitool cc ${BTKBDMAC} [Install] WantedBy=multi-user.target
作成したら systemctl でサービスを有効化してください。
udev ルールを使う
新しいファイル /etc/udev/rules.d/10-local.rules
を作成してください:
# Set bluetooth power up ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up"
Xorg
デバイスは /dev/input/event*
として追加され自動的に Xorg によって認識されます。