2015年10月11日日曜日

RaspberryPi で Bluetooth キーボードを接続する方法

概要

RaspberryPi に有線キーボードを接続しているといろいろと邪魔なので Bluetooth の無線キーボードに変更してみました

環境

必要なパッケージのインストール

この作業はまだ有線キーボードで実施する必要があります

  • sudo apt-get -y update
  • sudo apt-get install bluetooth bluez-utils blueman

apt-get でインストールされる BlueZ は 4.99 になるので注意してください
Bluetooth キーボードと接続するだけであれば 4.99 でも問題ないです

Bluetooth レシーバを接続する

この作業も有線キーボードで実施します

空いている USB ポートに Bluetooth レシーバを接続しましょう
RaspberryPi が起動中の状態でもOKです
うまく認識しない場合は停止してからお試しください

  • lsusb
    Cambrige Silicon Radio, Ltd Bluetooth Dongle (HCI mode) が認識されていることを確認しましょう
  • Bluetooth キーボードの Bluetooth を ON にする
    RaspberryPi がレシーバを認識したら Bluetooth キーボードを ON にしましょう
    今回使用した iBuffalo のキーボードであれば左側の側面に ON/OFF のスイッチがあります
    また充電式なので MicroUSB ポートを使って事前に充電しておきましょう
  • Bluetooth キーボードをペアリング待機状態にする
    今回のキーボードであれば、電源を ON にしてランプが青から消灯した段階で fn + delete を押すことでペアリングの待機状態にすることができます
    待機状態になるとランプが青色の点滅状態になります
  • sudo hcitool scan
    RaspberryPi 側から Bluetoothe キーボードを探索します
    おそらく簡単に見つかると思います
    見つかったらそこに表示されている Mac アドレスをメモしておきましょう
    見つからない場合はちゃんとペアリングの待機状態になっているかキーボード側を確認してください

スクリプト修正

bluez-simple-agent というスクリプトを修正しないと、うまくペアリングできなかったので修正します

  • sudo cp /usr/bin/bluez-simple-agent{,.back}
  • sudo vi /usr/bin/bluez-simple-agent

cabability=”DisplayYesNo”

92行目 を上記のように修正しましょう
修正できたらペアリングしていきます

ペアリング

  • sudo bluez-simple-agent hci0 [mac_address]
  • sudo bluez-test-device trusted [mac_address] yes
  • sudo bluez-test-input connect [mac_address]

でエラーがでなければペアリング完了です
実際に Bluetooth キーボードから入力ができるかと思います
入力が確認できたら有線キーボードは外してもらってOKです

英語キーボードとして認識させる

例えば有線の場合は日本語キーボードだったので raspi-config で日本語キーボードの設定をしていたため英語キーボードを接続したらうまく動かなくなったなど (自分はそのパターン)

以下のようにキーボードの設定ファイルを書き換えることで英語キーボードとして認識させることができました

  • sudo cp /etc/default/keyboard{,.back}
  • sudo vi /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="ctrl:swapcaps"

BACKSPACE="guess"

上記のように必要な箇所を書き換えましょう
( 自分は XKBLAYOUT, XKBVARIANT, XKBOPTIONS だけ書き換えれば OK でした)
その後

  • sudo reboot

で次回起動時に英語キーボードとして認識します
XKBOPTIONS の設定でついでに capslock と ctrl を入れ替えているので不要な場合は空白を設定してください

トラブルシュート

  • キーボードからの入力ができなくなった

おそらく RaspberryPi がキーボードを認識できなくなったんだと思います

sudo hcitool con

で何も表示されなくなります
USBドングルを RaspberryPi から外して再度接続すると RaspberryPi がリフレッシュし再度認識されると思います
それでもダメな場合は再起動してください
キーボード側の充電がなくなった可能性もあります
Bluetooth キーボードの種類によっては一定時間操作していない場合は休止状態になることがあるので、久しぶりに触る場合は何度かキーをストロークすることで再認識することもあります

  • 再度ペアリングする

上記の再起動方法はちょっと力づくなので、この方法がいいと思います
fn + delete で再度ペアリング状態にして別ターミナルで SSH ログインして

sudo bluez-test-input connect [mac_address]

を実行すると再度ペアリングしてキーボードが使えるようになります
RaspberryPi の bluetooth は一定期間通信していないとペアリングを解除してしまうのでしょうか、それともキーボード側が一定期間使われていないとペアリングを解除してしまうとか
ペアリングを解除しないために RaspberryPi 側から一定間隔で信号を送っておく必要がありそうです

  • RaspberryPi 再起動後の挙動

特に再度ペアリングのコマンドを実施しなくてもキーボードに接続することができました
もちろん再起動時にキーボード側の Bluetooth は ON にしておいてください

0 件のコメント:

コメントを投稿