Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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で検出可能にします。

https://www.raspberrypi.org/forums/viewtopic.php?t=151112

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

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

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

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

http://totech.hateblo.jp/entry/2017/03/15/093608

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

一部だけ変更(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

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

Hiroyuki_OSAKI
Certified engineer (CKA/CKAD), Sr. researcher(@Hitachi / Hitachi America) K8s/Helm/OPA/GraphQL/Python/Rails/Node.js/golang/Android/Scratch ここに記載の内容はあくまで個人的見解であり会社を代表するものではありません。
hitachi-services-computing
様々なサービスやOSSを活用して新しいサービスを創生・開発・運用するための技術を研究開発しています
https://www.hitachi.co.jp/rd/index.html
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした