【ラズパイ】Raspberry PiとAndroidをつなぐ

スマホのテザリング機能を使ってRaspberryPiをスマホにつなげて、SSH接続とリモートデスクトップ接続を目指す。

前提としてすでに家のWifiなどに繋がっていて、今回新たにAndroidとの接続設定をする状況を想定する。

概要

テザリングでスマホとRaspberryPiがつながれば同じLANネットワークに繋がっているようなものなので、IP特定して、固定化して、後はPCと同じようにして繋げばいいだけ。SSH、RDP、VNC等のAndroid用アプリもそろっているのでそれを使えばPCと同じことができるよって話。

iPhoneは持っていないので知りません。大体同じ?

スマホのテザリングをONにし、RaspberryPiをつなぐ

スマホのテザリングON。やり方はスマホによって違うのでおググりください。

RaspberryPiの設定もデスクトップのタスクバーからWifi設定をONにしてスマホのテザリングに繋ぎに行くだけ。ヘッドレス(モニター無し)の場合はこの作業は不要(というかできない)。

Wifiの優先度設定

家のWifiとスマホのテザリングといったように複数のWifiに接続すると、何を優先するのかが不明になったりするので、ちゃんとコントロールできるようにする。スマホのテザリングに接続後、RaspberryPiのターミナルから

$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

と打ち、以下のようにpriorityを追加し保存する。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

(家のwifi)
network={
        ssid="XXXXXXXX"
        psk="xxxxxxx"
        key_mgmt=WPA-PSK
        priority=0
}

(スマホのテザリング)
network={
        ssid="YYYYYYYY"
        psk="yyyyyyyy"
        key_mgmt=WPA-PSK
        priority=1
}

ヘッドレスでやっている場合は「スマホのテザリング」が丸々抜けているはずなので、抜けている部分を全部手動で入力する。

ssidはその通りSSID、pskはパスワードになっている。priorityの項目を自分で追記。数字が大きい方が優先されるので、スマホのSSIDを優先度高にしておけば、普段は家のWifiにつなぐけど、スマホのテザリングをONにしているときはスマホに繋ぎに行く、というような挙動になる。

RaspberryPiのIP固定化

次に、スマホにつないだ時もIPを固定されるようにする。

テザリングで繋がっている今はスマホがルーター代わりになっており、スマホ自身のIPを確認する必要がある。GoogleストアからTermux(ターミナルエミュレーター)をインストールして

$ ifconfig wlan0

と打てば、どこかにinet 192.168.43.xxxと表示されていると思う。これがスマホの(無線LANデバイスが持つ)IPアドレス。43は別の数字になっているかもしれない。

次に、RaspberryPiのターミナルから

$ sudo nano /etc/dhcpcd.conf

と打ち、以下を追記する。ssid XXXXXXXXはPCのSSIDを想定していて、すでに記述されているものとする。

interface wlan0
ssid XXXXXXXX
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

(以下を追記)
ssid YYYYYYYY
static ip_address=192.168.43.yyy/24
static routers=192.168.43.xxx
static domain_name_servers=192.168.43.xxx

yyyは自分で決める。AndoroidテザリングのDHCPサーバー機能(簡単に言えば、IPの自動割り振り機能)のアドレス範囲は設定変更不可らしい。何か別の機器とIPが衝突したときは南無ということで。

dhcpcd.confが更新されたら自動的にネットワーク接続も更新するみたい。確認のためにRaspberryPiのターミナル上でifconfig wlan0と打って設定した通りの表示になったらOK。

SSH接続

AndroidのSSHクライアントをインストールして、PCの時と同じようにログインすればよい。自分はこれを使っている。

リモートデスクトップ:RDPで接続

前回の記事からの流れで、RaspberryPiにxrdpを入れている人は、スマホにRDPクライアントを入れるだけでOK。新しい接続先の設定時に「固定したRaspberryPiのIP」「ユーザー名(初期設定のままならpiユーザー)」「ログインパスワード」を入れればよい。Googleストアで「rdp」と検索すればRDPクライアントソフトが色々出てくるけど、ダウンロード数の多さと評価の高さでMicrosoftのやつでいいんじゃないですか?

リモートデスクトップ:RaspberryPiのVNC有効化して、VNC Viewerで接続

xrdpを入れればいいだけなんだけど、一応別の方法として紹介。

RaspberryPiの設定からVNCをEnableにしておく。SSHの有効/無効のすぐ下にある。

後はこれをインストールして、接続先を追加する。設定項目としては「固定したRaspberryPiのIP」「接続先を識別するための名前(ユーザー名とは別)」「ユーザー名(初期設定のままならpiユーザー)」「ログインパスワード」を然るべき場所に入れる。

接続

お疲れ様でした。

追記:wpa_supplicant.confに記述するパスワードの暗号化

記事中に示した書き方だと、パスワードが平文のままなので、暗号化しておく。

$ wpa_passphrase "XXXXXXXX"

XXXXXXXXはSSID名。ダブルクォーテーション必要。上のコマンドを打つと

# reading passphrase from stdin

と表示されるので、そのままWifiに接続するためのパスワードを打つ。stdinは標準入力のことで、ここではコンソール画面のことを指す。

パスワードを打つと

network={
        ssid="XXXXXXXX"
        #psk="xxxxxxxx"
        psk=(いかにも暗号化されたような文字列)
}

と表示されるが、これは表示されるだけで設定まではしてくれないので、psk=(いかにも暗号化されたような文字列)の部分を手動でwpa_supplicant.confにコピペする。

>>の意味が分かる人は、rootユーザーに昇格してから

# wpa_passphrase "testing" >> /etc/wpa_supplicant/wpa_supplicant.conf

と打てば、パスワードを入力したときに自動でwpa_supplicant.confに追記してくれるので、後は適当にwpa_supplicant.confを開いて中身を整形する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です