Bluetooth キーボード

提供: ArchWiki
移動先: 案内検索

この記事では 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_devicebluetoothctl ユーティリティの 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 によって認識されます。