Raspberry Pi Zero WでBluetoothキーボード・マウスを使う

Raspberry Pi Zero W

Raspberry Pi Zero W (以下RPi0W)では無線LANだけでなくBluetoothも利用できるらしいのでマウスとキーボードはUSBではなくBluetoothで接続することにした。
そうすると、初期状態では無線LAN未設定未接続でキーボードもマウスも繋がっていないのでRaspberry Pi Zeroを操作する術がない。
そこで、RaspbianのOSイメージを書き込んだmicroSDカードをPCに繋いでマウントし、無線LAN設定を書き込んでからRPi0Wに挿して起動し、SSHでログインしてBluetoothの機器のペアリングを行うことにした。

SSHを利用可能にする

Raspbianは初期値がSSHアクセスを受け付けない設定になっているので受付可に変更する。
RaspbianのOSイメージを書き込んだmicroSDカードをPCに挿すとbootパーティションとファイルシステムのパーティションの2つが認識される筈。
ファイルシステム側ではなくbootパーティション側をマウントしてそこにsshというファイル名で空ファイルを作成する。
ファイルシステムのbootディレクトリと勘違いなく。
これで次回RPi0WでRaspbianを起動するとSSHでログインすることができる。

無線LANを利用可能にする

USBのキーボード・マウスをRPi0Wに繋ぐ場合はこの時点でRaspbianのOSイメージを書き込んだmicroSDカードをRPi0Wに挿して起動すればモニターを見ながら無線LANの設定を行うことができる。しかし、今回はキーボード・マウスをBluetoothで繋ぐと決めたのでRaspbianを起動してもまだ操作を行うことができない。
RaspbianのOSイメージを書き込んだmicroSDカードをPCに挿すとbootパーティションとファイルシステムのパーティションの2つが認識される筈。(上のSSHの部分と同じ)
今回はファイルシステムのパーティションをマウントしてそのパーティション内の/etc/network/intergacesと/etc/wpa_supplicant/wpa_supplicant.confの2つのファイルに追記する。おそらくLinuxなどでは一般ユーザーだとファイルの書き込みができないので管理者権限で編集保存する方が良さげ。

マウントしたファイルシステムの /etc/network/interfaces (追記)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
auto lo
iface lo inet loopback

auto wlan0
allow-hotplug wlan0
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

##DHCPでIPアドレスを貰う場合 (Raspbian Jessieのみ)
iface wlan0 inet dhcp

##固定IPで設定する場合
#iface wlan0 inet static             #Raspbian Jessieではこれ
#iface wlan0 inet manual             #Raspbian Stretchではこれ
#address 192.168.0.186           #IPアドレス
#netmask 255.255.255.0           #サブネットマスク 
#gateway 192.168.0.1                #ゲートウェイとなるルーターアドレス
#dns-nameservers 8.8.8.8 8.8.4.4    #DNSサーバ

2017年12月14日変更&追記:
12月中旬現在Stretchでは固定IPの設定でstaticにするとダメみたい。manualにすると成功する。
StretchにてDHCPでアドレスを取得する場合はこのファイルを触らない。(重要)

マウントしたファイルシステムの /etc/wpa_supplicant/wpa_supplicant.conf (追記)
1
2
3
4
5
6
network={
  ssid="wifi-ap"               #接続したいWi-FiルーターやAPのSSIDを指定
  scan_ssid=1
  psk="01234567890abcedf"      #接続したいWi-FiルーターやAPの鍵(PSK)を指定
  key_mgmt=WPA-PSK             #WPAの公開鍵方式を指定
}

2017年12月14日追記:
Stretchでは?このwpa_supplicant.conf をファイルシステムの /etc/wpa_supplicant/ 下に置くのではなく、上の手順のbootパーティションの直下に置くのもアリらしい。

これでPC側でのmicroSDカードへの書き込みは完了。microSDカードをアンマウントしてPCから外し、RPi0Wに挿す。RPi0Wに電源投入。
固定IPアドレスを指定している場合ならそのIPアドレスを指定してSSHで接続。
DHCPの場合はどのIPアドレスがRPi0Wに与えられているかわからないのでルーターでクライアント情報(家庭用ルーターの場合?)を見るか、arp -a で確認するかなど。

初期アカウント: pi
初期バスワード: raspberry
コマンド: ssh pi@192.168.0.186 (など)

ログイン後
sudo raspi-config で設定
[5 Interfacing Options Configure connections to peripherals] を選択。
[P2 SSH Enable/Disable remote command line access to your Pi using SSH] を選択。
SSHを有効化。

これで次回以降もSSHを利用することが可能になる。

Bluetooth機器接続

Bluetoothはペアリングをしてやらないと使えない。そこでbluetoothctlでペアリングしてやる。ちょっと面倒だけど。 基本はRPi0W側でscan onを実行しスキャンしている間に接続したいBluetooth機器のペアリング用ボタンを押すこと。スキャン時間は長いので急ぐ必要はない。
解りにくいのは承認コードの入力。ちょっと待ったらペアリング成功してたみたいなことが多い気がする。もちろん、Pairing successfulのメッセージを確認すること。
最後にconnect yy:yy:yy:yy:yy:yy (yy:・・・はBluetooth機器のID)で接続するのを忘れずに。

$ sudo bluetoothctl[Enter]
[NEW] Controller xx:xx:xx:xx:xx:xx raspberrypi [default]
[bluetooth]# agent on[Enter]
Agent registered
[bluetooth]# default-agent[Enter]
Default agent request successful
[bluetooth]# scan on[Enter]
Discovery started
[CHG] Controller xx:xx:xx:xx:xx:xx Discovering: yes
[NEW] Device yy:yy:yy:yy:yy:yy ELECOM Bluetooth BlueLED Mousepair yy:yy:yy:yy:yy:yy
Attempting to pair with yy:yy:yy:yy:yy:yy
[CHG] Device yy:yy:yy:yy:yy:yy Connected: yes
[ELECOM Bluetooth BlueLED Mouse]# pair yy:yy:yy:yy:yy:yy
[CHG] Device yy:yy:yy:yy:yy:yy Modalias: usb:v056Ep9994d1633
[CHG] Device yy:yy:yy:yy:yy:yy UUIDs: 00001124-0000-1000-8000-008000000000
[CHG] Device yy:yy:yy:yy:yy:yy UUIDs: 00001200-0000-1000-8000-008000000000
[CHG] Device yy:yy:yy:yy:yy:yy ServicesResolved: yes
[CHG] Device yy:yy:yy:yy:yy:yy Paired: yes
Pairing successful
[CHG] Device yy:yy:yy:yy:yy:yy ServicesResolved: no
[CHG] Device yy:yy:yy:yy:yy:yy Connected: no
[bluetooth]# connect yy:yy:yy:yy:yy:yy
Attempting to connect to yy:yy:yy:yy:yy:yy
[CHG] Device yy:yy:yy:yy:yy:yy Connected: yes
Connection successful
[CHG] Device yy:yy:yy:yy:yy:yy ServicesResolved: yes
[ELECOM Bluetooth BlueLED Mouse]# quit[Enter]
[DEL] Controller xx:xx:xx:xx:xx:xx raspberrypi [default]
pi@raspberrypi:~ $

xx:xx:xx:xx:xx:xxはRPi0WのBluetoothアドレス。yy:yy:yy:yy:yy:yyは上の例ではELECOMのマウスのBluetoothアドレス。

周りでBluetoothの機器が大量に利用されてると対象機器が判りづらくなるので、できれば周りにBluetooth機器が動いていないところで1つずつ電源を入れて接続した方が良い。

Bluetooth機器の接続設定
RPi0Wの場合はとりあえずマウスなどのポインティングデバイスだけbluetoothctlで登録しておいて、他は画面操作で他のBluetooth機器を登録する方が楽だと思われる。

上のX画面でBluetooth機器を何かの理由でremove後、その機器がリストに出てこなくて再接続できない場合は上のbluetoothctlコマンドで機器をリストアップしてペアリング、接続すると良さそう。上では使ってないdiscoverable on, pairable onなども使うかも。
[bluetooth]#が表示されているときにhelp[Enter]でヘルプ表示。

Bluetoothの機器は一度ペアリングして使えてしまえば、次回以降はRPi0W側とBluetooth機器側の両方で特に気にしないで電源オンですぐ使えるので苦労するのは最初だけの筈。だけど、上手く接続できない、調子が悪い、が一旦発生すると苦労することになるんだよね。

関連記事:

コメント: Raspberry Pi Zero WでBluetoothキーボード・マウスを使う

  1. ここを見てUSBキーボード・マウスの接続無しに青歯接続できました。

コメントは締め切られています。