Raspberry PiとAndroidでUSBテザリング

USBケーブル1本あればRaspberry PiとAndroid端末を接続することにより簡単にテザリングをすることができます。
Raspberry Piを触ってみたいが固定のネット環境がないという場合でもテザリング契約のあるAndroid端末さえあればPiで遊ぶことができます。(但しインストール済のSDカードは必要ですが)

環境

raspberry pi 3 ディスクトップ raspbian jessie

$ uname -a
Linux pi3 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux

Android端末 EP171AC Android 7.0
大手キャリアのテザリングは基本有料のようですね。当サイトではDMMのSIMを使っているので特に制限はありません。
データプランは1GBですが普段はDMMのアプリで低速にしているので月初はいつも2GBになっています。当サイトの感覚では大きな画像のないホームページやメールでは特に問題ないと感じています。


それではディスクトップのPi3とスマホをUSBケーブルで接続してみましょう。
設定 — もっと見る — テザリングとポータブルアクセスポイント
USBテザリングをON
通知欄にUSBマークが現れます。

Pi3からifconfigを実行してみます。

$ ifconfig
-----snip------
usb0      Link encap:イーサネット  ハードウェアアドレス e6:b7:52:e8:56:06 
          inetアドレス:192.168.42.122 ブロードキャスト:192.168.42.255  マスク:255.255.255.0
-----snip------

usb0が生えていますね。
以前はPi側にも設定が必要のようでしたが現バージョンでは特に設定の必要は無いようです。
Pi3はまだWi-Fiが有効になっているので一旦解除します。(root)

# ifconfig wlan0 down


Wi-Fiアイコンから有線アイコンに変わりました。

スマホもWi-FiをOFFにしておきます。

ブラウザから確認くん、スマホからアクセスしていますね。

Piのアドレスは192.168.42.XXになっています。テザリングを入り切りするごとにXXは変わります。
これはandroid端末から払いだされているものと思います。

android端末のアドレスを調べてみました。
nmapのインストール

# apt install nmap

$ nmap -sP 192.168.42.0/24

Starting Nmap 6.47 ( http://nmap.org ) at 2017-08-04 19:06 JST
Nmap scan report for 192.168.42.28
Host is up (0.00078s latency).
Nmap scan report for 192.168.42.129
Host is up (0.0013s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 3.24 seconds

android端末のアドレスは192.168.42.129ですね。 これは端末を再起動しても変わりませんでした。

Pi3のWi-Fiを戻すには# ifconfig wlan0 up でWi-Fiは有効になるのですが環境によっては再起動する必要があります。

Pi Zeroで実験

ディスプレー、キーボードの無い環境でUSBテザリングを実行、操作可能かテストしてみました。
Zeroにはraspbian jessie-liteをインストールしています。
Wi-Fiドングルを挿し込みます。
テザリングはPi3同様可能としても操作はandroid端末からするしかありません。

Pi Zeroに固定アドレスを設定する。
/etc/dhcpcd.confに追記
アドレスは192.168.42.XX/24をゲートウェイにはandroid端末のアドレスを設定

interface wlan0
static ip_address=192.168.42.1/24
static routers=192.168.42.129
static domain_name_servers=192.168.42.129

android端末にはターミナルソフトをインストールします。
アプリはTerminusをインストール、HostにZeroを登録します。

android端末のWi-FiはOFFにします。
USBテザリングをON
Terminusから接続
うまく接続出来ました。

コマンドラインからグローバルIPを確認するには
$ curl ifconfig.io を実行すると良いようです。
スマホのグローバルIPが返ってきました。

dhcpcd.confに設定しておけば普段ネットに接続していない環境でもWi-Fiドングルを挿し込みUSBテザリングから接続できるのでメンテナンス等に応用できると思います。

また今回はjessie-liteをインストールしていますがjessieをインストールしてアプリ(VNCなど)からXにもアクセスできそうです。(スマホからなので実用性は厳しいと思いますが)

USBテザリングは接続先のPiとandroid端末の1対1の関係になりますがPi ZeroにさらにWi-Fiドングルを追加、hostapdをインストール、設定すればローカルのアクセスポイントや臨時のルーターとして応用できると思います。(当サイトとしては面倒なのでやめときますが)


Zero-Wに2017-07-05-raspbian-jessie-liteをインストールしました。
PI Zero-Wの内蔵Wi-Fiでも全く同じ設定で試してみましたが同様に接続できますね。

但しTerminusからの接続は新たにZero-WのHostを登録する必要があります。