Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@h_shiba

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
8
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What is going on with this article?