テザリング非対応スマホでroot化せずにUSBテザリング
この記事は最終更新日から1年以上が経過しています。
芽萌丸IOT研究会@iot
投稿日 2020/7/20
更新日 2020/7/20 ✏

テザリング非対応スマホでroot化せずにUSBテザリング

非rootなスマホをUSBモデム化し、UbuntuからUSBテザリングを行う方法のメモです。 今回ご紹介する方法では、テザリング非対応な古いスマホやroot化が困難なモデルのスマホを再利用することができます。

前提

以下を利用します:

  • OS: Ubuntu 16.04LTS
  • AziLink
  • adb
  • openvpn

インストール

利用ツール群をインストールします。 まだインストールしていない場合は、以下の手順でインストールしておきましょう。※これは初回のみ必要な作業です。

adbをインストール

Ubuntu PC側にadbをインストールします:

$ sudo apt-get install android-tools-adb

Azilinkをインストール

スマホ側へAzilinkをインストールします: (参考:azilink/HOWTO)

  • スマホ側の設定でUSBデバッギングを有効化
  • Ubuntu PC側へスマホをUSB接続
  • Ubuntu PC側でAziLink.apkをダウンロード
  • Ubuntu PC側でadbコマンドを使って AziLink をスマホへインストール:
$ adb install ./azilink.apk

openvpnをインストール

Ubuntu PC側にopenvpnをインストールします:

$ sudo apt install openvpn
## ネットワークマネージャーを再起動:
$ sudo /etc/init.d/network-manager restart

AziLink用のopenvpn設定ファイルを新規作成し、どこか適当な場所に保存しておきます:

$ nano /path/to/azilink.ovpn

# azilink.ovpnファイルの中身:
dev tun
remote 127.0.0.1 41927 tcp-client
ifconfig 192.168.56.2 192.168.56.1
route 0.0.0.0 128.0.0.0
route 128.0.0.0 128.0.0.0
socket-flags TCP_NODELAY
keepalive 10 30
dhcp-option DNS 192.168.56.1

USBテザリングを開始

USBテザリングを開始するためには以下の手順を行います。 Ubuntu PCとスマホがUSB接続されている前提で、

    1. スマホ側で AziLink アプリを起動し、Service activeというチェックボックスにチェックを入れる
    1. Ubuntu PC側で/etc/resolv.confをバックアップ&書き換え:
    $ sudo cp /etc/resolv.conf /etc/resolv.conf.bk
    $ sudo nano /etc/resolv.conf
    
    # resolv.conf の中身:
    domain lan
    search lan
    nameserver 192.168.56.1
    
    1. Ubuntu PC側で以下のコマンドを実行し、USBテザリングを開始:
$ adb forward tcp:41927 tcp:41927
$ sudo openvpn /path/to/azilink.ovpn

openvpnが起動しUSBテザリングできるようになります。 Ubuntu PC側からスマホ経由でインターネットに接続できることを確認しましょう。

USBテザリングの終了

    1. Ubuntu PC側で先ほどのopenvpnのプロセスを終了させる (Ctrl+CでOK)
    1. Ubuntu PC側で/etc/resolv.confを元に戻す
$ sudo cp /etc/resolv.conf.bk /etc/resolv.conf
    1. スマホ側で AziLink アプリのService activeのチェックを外す

おまけ: USBテザリング開始処理をシェルスクリプト化

USBテザリング開始処理をコマンド一発で行えるようにシェルスクリプト化してみます。

resolv.confの雛形を作成:

$ nano azilink-resolv.conf

## azilink.resolv.confの中身:
domain lan
search lan
nameserver 192.168.56.1

USBテザリング開始処理シェルスクリプトを作成:

$ nano start-azilink.sh

## start-azilink.shの中身:
#!/bin/bash

adb forward tcp:41927 tcp:41927
sudo cp /etc/resolv.conf /etc/resolv.conf.bk
sudo cp azilink-resolv.conf /etc/resolv.conf
sudo openvpn azilink.ovpn

USBテザリングの終了させ方は前述の [USBテザリングの終了] と同じです。

ひとこと

今回実験に使ったスマホ機種は、テザリングがデフォルトで無効化されていて既にOSアップデートも止まってしまっている不人気モデルSoftBank AQUOS CRYSTAL 2 403SHです。こんなスマホでも少しは役に立ちそうです(笑)


芽萌丸IOT研究会
芽萌丸IOT研究会@iot
芽萌丸のIOT関連アカウント。ラズパイとか色々。記事は主に @TanakaSoftwareLab が担当。