90
99

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Pi 3にBluetoothでログインする

Last updated at Posted at 2017-07-21

Bluetoothを使う目的

Raspberry Piはとても手軽なデバイスで、WifiもあるのでSSHなどでログインすると普通のLinuxとしても利用でき、HTTPでもいろんなサービスにアクセスでき、重宝します。
私も今週買って試しているのですが、とてもよい!
せっかくなので起動しっぱなしにして必要に応じてHTTPでアクセスしていろんなIoT的な使い方をしたくなりますね。
でも、リブートしたり、またはお家のWifi環境を変えてしまったときにでIPアドレスが変わってしまいSSHでアクセスできなくなります。
Raspberry Pi自体に画面がつけていればip addrコマンドで調べられますが、画面がついていない状態からわざわざセットアップするのが面倒です。

そこで今回は、Bluetoothというペアリング機能を使ってPCと接続状態をいつでも構築できるようにしておき、その接続を使ってTTYでログインできるようにしておきたいと思います。
(これで少なくともSSHがつながらないときに、Bluetoothで一度ログインし、IPだけでも調べることができるようになります)

ペアリング

(2017/12追記)
接続元はWindows 10を使います。設定→デバイスでBluetoothをみたときに、下記のような状況にしなければなりません。

手順は下記に書いてありますが、raspberry piをbluetoothで検出可能にします。

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

次に、Windows 10から「+Bluetoothまたはその他のデバイスを追加する」→「Bluetooth」を選択するとRaspberry Piが見つかるはずと思います(だめであれば、一回Raspberry Pi側でquitしてから何回か上のコマンドをやり直してみる。)

ペアリングできたらこうなります。

Bluetoothをシリアル接続で使う設定方法

殆どは上記記載の通りでうまくいきました。説明も細かくとても良い記事です。

一部だけ変更(watch コマンド)

設定が終わったら、あとは接続先のRaspberry Piでの接続待ち方法を変更し、下記コマンドを打ちます。

sudo rfcomm -r watch 0 22 /sbin/agetty -L rfcomm0 115200 &

(必要ならこのあとdisown %1か何かで、ログアウト後も動き続けるようにデーモン化しておきましょう)

これでCOMポートにシリアル通信してみましょう。Tera Termを使うならこんな感じ。
(私の場合COM5になっていますが、そこは環境によって変えましょう)

2017-07-22.png

2017-07-22 (1).png

少し待ちますが、このようにログイン待機になります。

これでわざわざ画面を触る必要がなくなり、少しハッピーになりました。

再起動後も自動起動するようにデーモン化

あと少しです。

デーモン化はこちらが詳しいです。
http://mattintosh.hatenablog.com/entry/20170702/1498985041

かんたんに言うと
sudo vi /etc/systemd/system/dbus-org.bluez.service でExecStart=/usr/lib/bluetooth/bluetoothd --compatのあとに下記を追加します。

ExecStartPost=/usr/bin/sdptool add SP

次に、rfcomm.serviceという、先程のWatchのデーモンを作ります。

[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

最後にそれをロード。

sudo systemctl daemon-reload
sudo systemctl restart bluetooth
sudo systemctl start rfcomm

最後にこうなればいいですね。

2017-07-22 (2).png

お疲れ様でした。結構ハッピーです。

90
99
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
90
99

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?