読者です 読者をやめる 読者になる 読者になる

数弱プログラマのいろいろ

数学が苦手なのにプログラムを書いている高専生のいろいろ

Raspberry Pi 3に電源を繋ぐだけでSSHとVNCができる環境を構築する via Bluetooth PAN

はじめに

授業でRaspberry Piを扱うことになって,できるだけ少ない配線で作業したいなと思って構築した環境です. どっちかっていうと実用ではなく学習向けの環境かも.インターネット共有はできません.

f:id:namedpython:20170415121820j:plain

環境

初期セットアップはやっぱり装備多めになりますよね〜.

これらを最終的に上から4つ(または5つ)ぐらいまでに絞ります.

やり方

普通にセットアップしていきます.

まずはRaspbianを公式からダウンロードします.割と長い.

ダウンロードできたら,イメージをmicroSDに焼いていきます.

macOSのターミナルにて

$ diskutil list
$ diskutil unmountDisk /dev/diskN
$ diskutil eraseDisk MS-DOS RASPI /dev/diskN
$ diskutil unmountDisk /dev/diskN
$ sudo dd if=~/Downloads/xxx-raspbian-jessie.img of=/dev/diskN bs=N

Nは,環境に合わせて適当にやってください.eraseDisk前のunmountは必要だったか覚えてませんが,まあ一応やっておきます.

焼き終わったらRasPiに各種I/Oと焼いたmicroSDを差して電源を投入します.

無事起動したら,左上のスタートボタンからPreference -> Raspberry Pi Configurationをクリック.

Interfaceタブから,SSHを探してEnableしておく.Localeタブから,ロケールとかタイムゾーンとか設定しとく.

設定の適用には再起動が必要なので,ダイアログに従って再起動する.

戻ってきたらコンソールを立ち上げて,update & upgradeしていきます.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

パスワードが初期パスのままなので変えておきましょう.初期パスはraspberryです.

$ passwd
  1. 初期パス
  2. 新パス
  3. 新パス確認

の順で打っていきます.このパスはSSHのログインにも使います.

次に,ネットワークの設定をやっていきます.コンソールエディタを使いますので,いろいろ好みはあると思いますがなければインストールしておきます.

$ sudo emacs /etc/dhcpcd.conf

こいつに追記していきます.

bnep0は,今回のメインであるBluetooth PANのインターフェースです.書いといてください.

#Bluetooth PAN with my MBP
interface bnep0
static ip_address=192.168.x.y/z
static routers=192.168.l.1

xyzは好みで変えてください.

static ip_addressに設定したアドレスは,静的に割り振られます.メモっときましょう.

次に,BluetoothMacとRasPiをペアリングします.

$ bluetoothctl
[bluetooth]# scan on

こうすると,周囲のBluetoothバイスが検知されていきます.

自分のMacが検知されたら(そのMacのの名前とアドレスが出ます),一緒に書かれているアドレスをメモっときます.以降,これをBT_Addrと呼びます.

ではペアリングです.

自分がやった時割とよくFailedとか出されたので,出た場合は後述の対処をしてください.

[bluetooth]# pair BT-Addr
[bluetooth]# connect BT-Addr
[bluetooth]# trust BT-Addr

とします. これらのいずれかでBluez.Failedとか出されたら,以下の対処を試してください.

$ pulseaudio --start
$ bluetoothctl
[bluetooth]# connect BT-Addr

これでできなかったら,もうわかりません.格闘してください.

自分はこれで成功したこともあったのですが,なぜこれで成功するのかわかりません.格闘してたら見つけました.

それでは,ペアリングが完了した前提で進めていきます.確認方法としては

  • Mac側のBluetooth設定でraspberrypiが太字になっている.

  • Raspbianの左上の方のBluetoothアイコンをクリックすると,自分のMacの名前の左にチェックマークがついている

って感じです.これらが揃っていればペアリングは成功しているでしょう.

次に,Bluetooth PANを構築します.

参考にした記事はこちら

必要なパッケージをインストールしておきます.

sudo apt-get install python-dbus

スクリプトを適当な場所にwgetし,実行権限とか与えて,BluetoothPANのリクエストをMacに送信します.

$ wget https://raw.githubusercontent.com/mk-fg/fgtk/master/bt-pan
$ chmod +x bt-pan
$ sudo chown root: bt-pan
$ sudo mv bt-pan /usr/bin/
$ sudo bt-pan client BT_Addr

Macにダイアログが出てくるので許可する.

ここで一旦Macの設定に戻ります.Macの設定からネットワーク設定を開きます.左側の窓の中にBluetooth PANが出ていると思いますが,自己割り当てアドレスとなって黄色くなっていると思います.

これを修正しなければなりません.Bluetooth PANの詳細を開き,TCP/IPタブで,IPv4の設定を手入力にします.もし他の設定とかぶったりする場合は新しくプロファイルを作ってくださいね.

そして,IPv4アドレスのところをstatic routersのアドレスにします.

サブネットマスクはおおかた255.255.255.0でしょうか.

ルーターはメインのネットワークのルーターアドレスを設定しておきましょう.

これで,黄色から緑になったと思います.

ではRasPiに戻って,コンソールでIPが振られているか確認しましょう.

$ ifconfig bnep0

これで,inetのアドレスが,static ip_addressのアドレスになっていればうまくBluetooth PANが構築できています.

それでは,電源投入後自動で構築するようにしましょう.

sudo emacs /etc/rc.local

一番下にexit 0が見えると思いますが,そこの上であればどこに書いても構いません.

先ほど実行したbt-panを,ここに記述しておきます.これにはsudoは不要です.

bt-pan BT_Addr

と記述します.

ここまできたら,とりあえずテストとしてMacからSSH叩いてみましょう.

ssh pi@192.168.x.y

これでパスワード入力まで行けば成功です.一旦sudo rebootして再起動しましょう.自動でMacとつながるかどうか試します.

RasPiが起動した10秒後くらいにもういっかいSSHを叩いてパスワード入力まで行くようであれば,rc.localに書いた自動接続もうまくいっているようです.

それでは最後にVNCもできるようにしましょう.

MacからのVNCなので,プリインストールのReal VNCではできません.別のパッケージを使います.

sudo apt-get install tightvncserver

これをインストールすると,$ vncserver$ tightvncserverエイリアスされます.

$ vncserver

と実行すると,初回は接続用のパスワード設定しろと出てくるので,設定しましょう.

設定が終わると,画面の配信が始まります.気をつけて欲しいのは,配信される画面はディスプレイに映っているものと同じではなく別ウィンドウだということです.

それでは接続してみましょう.

MacのFinderを開きます.メニューバーの移動から,一番下のサーバーに接続をクリックします.

ダイアログが出てくるので,アドレス欄にvnc://192.168.x.y:5901と打って接続します.:5901もちゃんとつけてくださいね.

パスワード入力を要求されるので,入力して接続します.すると,RasPiの画面がMacに映ります!やったね!

VNCは,あくまで第二の手段として用意しておくまでです.基本的には,必要になった時にSSHから叩いてからの接続です.もし起動時に配信したいのであれば,先ほど同様rc.localに記述しましょう.

もし配信を停止したければ

$ vncserver -kill :N

で配信を切れます.Nは,$ vncserverを叩いた時に出てくるウィンドウ番号です.

けっこう長くなりましたね.お疲れ様でした.

Bluetooth PANによる接続ですが,インターネット接続は提供できません.他のやり方でできるかもしれませんが,このやり方ではできません.

しかし,僕がなぜWi-Fi共有ではなくBluetooth PANを選んだかにはきちんと理由があって,Mac/RasPi側のWi-Fi等を食いつぶしたくなかったからです.

RasPi側に,Bluetooth PAN以外に外界へのネットワーク接続をすれば,パッケージ等のインストールもSSH越しでできます.

あ,注意してほしいのですが,Mac側がスリープしてペアリングとかBluetooth PANが途切れると,他のネットワークを経由するか再起動しか接続の方法がありませんので悪しからず.

おわりに

画像とかなくてすみません.後日スクショとかつけるかもしれません.

指摘等ありましたらコメントでお願いします.

長くなってすみませんでした.あなたのRasPiライフがスマートでありますように.

ではまた.