8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Raspberry Pi ZeroにWindows10からBluetoothでログイン

概要

Raspberry Pi Zeroの開発をしていて、場所を移動してWifiが変わる度にディスプレイやキーボードが必要になるのが不便だったので、BLEからログインできるようにする。

手順

WindowsからRaspberry Pi Zeroを検出可能にする

sudo bluetoothctl
[bluetooth] power on
[bluetooth] discoverable on

上記で検出できない場合は以下まで実施。(筆者の環境では↓だと検出できず、↑であれば検出可能でした。)

sudo bluetoothctl
[bluetooth] power on
[bluetooth] discoverable on
[bluetooth] agent on
[bluetooth] default-agent

Windowsの設定からRaspberry Pi Zeroを見つけてペアリング

「Bluetoothとその他のデバイス」⇒「+Bluetoothまたはその他のデバイスを追加する」⇒「Bluetooth」で見つかるはず

RasPi側でペアリング状況を確認

以下のようになっていればOK

pi@raspberrypi:~ $ bluetoothctl
[NEW] Controller XX:XX:XX:XX:XX:XX raspberrypi [default]
[NEW] Device XX:XX:XX:XX:XX:XX WINPC

RasPiのbluetoothdの設定変更

/etc/systemd/system/dbus-org.bluez.serviceのExecStartを以下の通りに変更

/etc/systemd/system/dbus-org.bluez.service
ExecStart=/usr/lib/bluetooth/bluetoothd --compat

/var/run/sdpへの権限付与

sudo chmod 777 /var/run/sdp

Serial Port serviceを登録

pi@raspberrypi:~ $ sudo sdptool add --channel=22 SP

RasPiのbluetootdを再起動

pi@raspberrypi:~ $ sudo systemctl daemon-reload
pi@raspberrypi:~ $ sudo systemctl restart bluetooth

シリアル通信をlisten

pi@raspberrypi:~ $ sudo rfcomm listen /dev/rfcomm0 22

Windows側での仮想ポートの割り当て

コントロール パネル>ハードウェアとサウンド>デバイスとプリンターからRaspberry Piを選択してプロパティを開いて、
「サービス」タブの「シリアルポート (SPP) 'Serial Port'」のチェックボックスをONにする。
するとCOMXのポートが割り当てられる。

Windows側からの接続(TeraTerm)

TeraTermを起動し、「シリアル」を選択すると「ポート」のプルダウンで先ほどのCOMXのポートが選択可能になっている。
COMXのポートを選択して、接続を実行

起動時に自動でRasPiの設定を反映したい場合(デーモン化)

/etc/systemd/system/dbus-org.bluez.service
ExecStart=/usr/lib/bluetooth/bluetoothd --compat
ExecStartPost=/usr/bin/sdptool add SP
rfcomm.service
[Unit]
Description=RFCOMM service
After=bluetooth.service
Requires=bluetooth.service

[Service]
ExecStart=/usr/bin/rfcomm watch 0 1 /sbin/agetty rfcomm0 115200 linux

[Install]
WantedBy=multi-user.target

serviceファイルを登録

sudo systemctl daemon-reload
sudo systemctl restart bluetooth
sudo systemctl enable rfcomm.service

後は再起動すればOK

sudo reboot now

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
8
Help us understand the problem. What are the problem?