6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

au HWD12と Raspberry piで、お外で使えるモバイルWifiルーターを作る

Last updated at Posted at 2019-11-04

概要

自分、Macに auのHWD12をUSBでつないでモバイル通信していたのですが、macOS Catalinaになってから、この機種がUSB接続で使用できなくなりました。

どうやらこの子は、Catalinaで死んでしまう、32bitアプリケーションを使って接続する仕様だったようです。
テザリングで凌ごうにも、いままで一ヶ月で20GBも通信に使っていた手前、下手するとパケ死しかねません。

仕方ないので、Raspberry piを調達し、au HWD12に接続されたモバイルWifiルーターとして動かすことで、間接的に macOS Catalinaからでも使えるようにしました。


変更履歴

  • 19/11/05火 IPマスカレードの -o usb0 が -o eth0 になっていたので修正

必要なもの

  • au HWD12 データ通信カード
    • これはもともとあった
  • Raspberry pi 3 B
    • B+を買ったつもりが、Bでした。でもなんとかなりました
  • ラズパイケース
    • 持ち歩き用。なんでもよい
  • マイクロSDカード
    • 4GBでよいはず。もう見かけないので8GBを買いました
  • マイクロUSBケーブル
    • 電源用
  • バッテリー (オプション)
    • なくてもいいけどあるとPCと一緒に移動できて便利
  • SDカードに焼くことができるPC

今回の環境

機種 OS SDカード
Raspberry Pi Model 3 B Raspbian Buster Lite(2019-9-26) 8GB

段取り

1. 起動用のSDカードを作成する

OSイメージのZIPファイルを公式サイトからダウンロードし、Etcherで空のSDカードに書き込みます。

Raspbian公式ダウンロードページ
いくつかDLリンクがあるが、「with desktop」とかがないやつを選ぶと良い
https://www.raspberrypi.org/downloads/raspbian/

Etcher
Mac版もWindows版もあります
https://etcher.io/

2. ラズパイ起動・初期設定

Raspberry piに、上記のSDカードをさします。
その後、USBキーボードとHDMIケーブルを挿入して、電源を入れましょう。
なお自分はUSBマウスは使いませんでした。これだと初期設定画面がGUIにならず、コマンドコンソールになるようです。

初期設定画面が出たら、下記の設定をしましょう。

  • SSHを有効にする
    • メニューの5 Interface Options
    • P2 SSHを選択
    • Would you like the SSH sever to be enabledYesを選択
    • ESCキー連打で終了

ここで、ログイン画面が出た場合は、ユーザー名pi、パスワードraspberryでログインした後、sudo raspi-configコマンドで設定画面を出せます。

3. ラズパイにログイン

ユーザー名pi、パスワードraspberryでログインします。
パスワードは手順の最後で任意のものに変更します。

4. 既存ネットワークに接続

この時点で、有線LANに接続するか、無線LAN設定を行い既存のWifiに接続します。
無線LAN設定をする場合はこのようにします。
なお、ラズパイの内蔵Wifiは2.4GHz帯のみ使用できます。(SSIDに g, Gがついている事が多いです)

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
を押下した後、oを押下し、下記を設定します。
SSID_OF_YOUR_ENVと、PASSWD_OF_YOUR_ENVは、好きな前適宜既存環境の値を設定してください。

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="SSID_OF_YOUR_ENV"
    psk="PASSWD_OF_YOUR_ENV"
}

終わったら、ESCキーを押して:xを押下し保存終了します。保存したくない場合は:q!です。

なお、PCで直接マイクロSDカードを編集できる場合は、あらかじめPC上でマイクロSDカードのルートにwpa_supplicant.confファイルを配置してもよいです。
この場合は、ラズパイ起動時に自動的に /etc/wpa_supplicant/wpa_supplicant.conf を上書きするようになっています。
読み込まれたあと、マイクロSDのルートディレクトリに作成したファイルは削除されます。

5. ソフトウェアのインストール

まずはシステムを最新にして、その後 dnsmasqhostapdをインストールします。
以下の順にコマンドを実行してください。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install dnsmasq hostapd

インストールが終わったら、dnsmasqと、hostapd のサービスを一旦終了します。
設定ファイルをこれからいじるので、悪影響を防ぐためです。

$ sudo systemctl stop dnsmasq
$ sudo systemctl stop hostapd

ちなみにこれらのサービスが動作しているかどうかは、下記のコマンドでわかります。

$ systemctl status dnsmasq
$ systemctl status hostapd

6. USBデータ通信カード HWD12の設定

今回は、USBデータ通信カード「HWD12」で通信するモバイルWifiルータを作りますので、それに必要な関連ソフトをここで導入します。

まず、HWD12をラズパイに挿入してください。
この時点では、USBストレージとして認識されてしまうので、通信はできないと思います。

下記のコマンドを入力します。
bridge-utilsは、USBデータ通信カードをブリッジにするために導入しています。

$ sudo apt-get install bridge-utils -y --no-install-recommends
$ sudo apt-get install usb-modeswitch
$ sudo cp /etc/usb_modeswitch.conf{,.back}
$ sudo vi /etc/usb_modeswitch.conf

編集画面が起動しますので、Shiftキー + Gで、最後の行まで飛びます。
その後、oを押すと編集モードに入れるので、下記を入力します。

DefaultVendor=0x12d1
DefaultProduct=0x1f03

TargetVendor=0x12d1
TargetProduct=0x14db

MessageContent="55534243123456780000000000000a11062000000000000100000000000000"

編集が終わったら、ESCキーを押して、:xを押して終了します。
その後は下記コマンドを入力してください。

$ sudo modprobe usbserial vendor=0x12d1 product=0x14db
$ sudo usb_modeswitch -c /etc/usb_modeswitch.conf

ここまで来たら、HWD12 のランプが紫になり、インターネットにつながるようになります。
この時点で、LANは切り離してしまってよいです。

7. ネットワーク・インタフェースのブリッジ作成

ラズパイに搭載されている無線LANと、HWD12をつなぐブリッジを作成します。
これによって 無線LAN を アクセス・ポイント化した際に、そのまま HWD12側ののネットワークに接続することができます。

ネットワーク・インターフェースの設定に、ブリッジ・インターフェースを追加して usb0 と wlan0 を ブリッジさせる設定をします。
設定は /etc/network/interfaces ファイルに、下記の3行を追加します.

$ sudo vi /etc/network/interfaces

と押下した後、Shiftキー+Gを押して末尾に飛びます。
その後、oを押して、下記の行を追加します。

auto br0
iface br0 inet dhcp
     bridge_ports usb0 wlan0

設定後に、ブリッジのインタフェースをupすると状態を確認できます。このとき既存のネットワークが一旦切断されます。

$ sudo ifup br0

再起動後、$ brctl showコマンドを押下すると、内容が確認できます。

$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.021e101f0000       no              usb0
                                                        wlan0

8. dhcpの設定

次に設定ファイルを編集します。
まずはdhcpの設定です。

$ sudo vi /etc/dhcpcd.conf
viが開きまする
Shiftキー + Gで、最後の行まで飛びます。
その後、oを押すと編集モードに入れるので、以下2行を追加します。
これは、「無線LANのネットワークカードのゼロ番(wlan0)に、静的IPアドレスとして 192.168.200.1/24を設定する」という意味になります。
このIPアドレス自体は、好きなものでよいです。

interface wlan0
static ip_address-192.168.200.1/24

ESCキーを押して:xと押すと保存終了できます。保存しない時は:q!です。

ここまでやったら、dhcpを再起動させます。

$ sudo service dhcpcd restart

9. dnsmasqの設定

dnsmasqは、インストール時点で設定ファイルが配置されますが、今回やりたいことは単純なので、既存のファイルをリネームして待避し、設定ファイルをいちから作ります。

$ sudo mv /etc/dnsmasq.conf /etc/dsnmasq.conf.old
$ sudo nano /etc/dnsmasq.conf

viが開いたら、oを押して、下記の2行を入力します。
これは、「無線LAN wlan0のIPアドレス貸出範囲は192.168.200.2~192.168.200.40、ネットワークマスクは255.255.255.0、IPアドレス貸出期間は24時間」という意味になります。
独自のIPアドレスにした場合はこちらも変更してください。

interface=wlan0
dhcp-range=192.168.200.2,192.168.200.40,255.255.255.0,24h

入力したら、ESCキーを押して:xで終了します。

10. hostapdの設定

いよいよhostapdです。これを設定するとアクセス・ポイントが作成されます。
ここでは、自作ルーターのSSIDやパスワードを設定することになります。
まずは、hostapdの設定ファイルを編集します。

$ sudo vi /etc/hostapd/hostapd.conf

このファイル、ない場合は新規作成されます。
開いたら、下記を追記してください。

このとき、YOUR_SSIDYOUR_PASSWORDは適宜書き換えてください。
YOUR_PASSWORDは、8-64文字にすることをおすすめします。

interface=wlan0
bridge=br0
driver=nl80211
ssid=YOUR_SSID
country_code=JP
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=YOUR_PASSWORD

終わったら、ESCキーを押して、:xで終了します。
この時、もし、このファイルが新規作成されている場合、権限が 644などになっていることがあります。
その場合、このファイルは読まれないので、権限を600にしてやります。

確認方法
$ ls -al /etc/hostapd/hostapd.conf

pi@raspberrypi:~ $ ls -al /etc/hostapd/hostapd.conf
-rw-r--r-- root root 220 Oct 30 04:00 /etc/hostapd/hostapd.conf

ここで、左はしが-rw-------以外になっていたら、600ではないので、下記のコマンドを打ってください。

$ sudo chmod 600 /etc/hostapd/hostapd.conf

その後、600になったことを確認します。

pi@raspberrypi:~ $ ls -al /etc/hostapd/hostapd.conf
-rw------- root root 220 Oct 30 04:00 /etc/hostapd/hostapd.conf

この後は、この設定ファイルを読み込むように、hostapdの設定ファイルを書き換えます。

$ sudo vi /etc/default/hostapd

開くと以下のように表示されると思います。

# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
#DAEMON_CONF=""

# Additional daemon options to be appended to hostapd command:-
#       -d   show more debug messages (-dd for even more)
#       -K   include key data in debug messages
#       -t   include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""

真ん中あたりに
#DAEMON_CONF=""
という行があります。
ここの行をDAEMON_CONF="/etc/hostapd/hostapd.conf"と書き換えます。

  • 先頭の#を削除
  • 右の""にパス名を入れる

という編集となります。

ここまで来たら、dnsmasqとhostapdを起動してみます。

$ sudo systemctl start hostapd
$ sudo systemctl start dnsmasq

エラー表示なく起動したらOKです。

11. IP転送の設定

ここまでで無線LANのアクセスポイントが設定されました。
この後は、無線LANに接続したPCなどから、HWD12につながるよう設定します。

システム設定ファイルを編集し、ポートフォワード機能を有効化します。

$ sudo vi /etc/sysctl.conf

28行目くらいに、下記の行があります。(net.ipv6.conf.all.forwardingや、net.ipv4.confなど、紛らわしい行が多いので気をつけてください)

#net.ipv4.ip_forward=1

これを下記のように書き換えます。
先頭の#にカーソルをあわせてxを押すと#が消えます。

net.ipv4.ip_forward=1

設定後、ESCキーを押して:xで終了してください。
再起動後、ポートフォワードが有効になります。

12. IPマスカレード設定

最後に、IPマスカレードの設定です。
しかし、2019年11月時点では、iptablesの最新1.8以上になると、このコマンドが使えません。
ほっとくと勝手に1.8になるので、まずは、iptablesをレガシーモードで動くようにしてやります。

$ sudo update-alternatives --config iptables

と打つと、下記のように出ます。

pi@raspberrypi:~ $ sudo update-alternatives --config iptables
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).

 Selection    Path                      Priority Status
----------------------------------------------------
  0            /usr/sbin/iptables-nft    20       auto mode
* 1            /usr/sbin/iptables-legacy 10       manual mode
  2            /usr/sbin/iptables-nft    20       manual mode

Press <enter> to keep the current choice[*:, or type selection number:

ここでは、1を押してやります。

この後、$ iptables --versionと押すと、

iptables v1.8.2 (legacy)

等とでるので、切り替わったことがわかります。

この後は、下記のコマンドを実行してください。

$ sudo iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE

その後は、下記のコマンドを実行します。

$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat
$ cat /etc/iptables.ipv4.nat

ファイルに内容が書かれていることを確認したら、次に下記のコマンドで、以下のファイルを開いてください。

$ sudo vi /etc/rc.local

一番下に exit 0という行があります。この行が実行されると、シェルは止まります。
この行の下ではなく、上に、以下の行を追加します。

iptables-restore < /etc/iptables.ipv4.nat
dhclient -4 -v usb0
ifdown br0
ifup br0

追加したら、ESCキーを押した後、:xを押して終了です。

これで、ルーターの設定は終了です。
ラズパイを再起動します。

$sudo reboot

しばらくすると、先ほど hostapd で設定したSSIDが見えるようになっていると思います。
設定したパスワードを入れると接続できるようになります。

問題なければ、ラズパイにログインし、OSパスワードを変更してください。

$ passwd

これで終了です。お疲れ様でした。


使用感

  • 起動までに2〜3分かかります。
  • たまに、起動後にインターネット接続に失敗することがあります。そのときはルーターを再起動してください。
  • 通常の使用では問題ないのですが、たまにビデオ会議で切れたりすることがあります。
  • wifiの電波は、15mくらいはゆうに届くようです。
  • 普通のUSB電源だと、バッテリーの電力不足エラー(Under-voltage detected)が出ることがあります。ラズパイ用の電源/バッテリーを使うと解消するかもしれません。

参考にしたサイト

こちらの記事を参考にしました。ありがとうございます!

Raspberry Pi 3 Model B+の無線LANでルータを構成する
http://mekiku.com/view.php?a=51

RaspberryPiでルーターを自作し無線AP化
https://qiita.com/wannabe/items/a66c4549e4a11491f9d5

Raspberry Pi 3 を WiFi アクセス・ポイント化する
https://azriton.github.io/2017/03/22/Raspberry-Pi-3-%E3%82%92-WiFi-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%BB%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E5%8C%96%E3%81%99%E3%82%8B/

RaspberryPi で Huawei の HWD12 を使う方法
https://blog.kakakikikeke.com/2015/12/raspberrypi-with-huawei-hwd12.html

6
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?