MVNOの格安SIMを使ってRaspberry PiでLTE3Gモバイルルータを作ってみよう!
モバイルルータを作ろう!
最近よく耳にするようになってきた格安SIMは
月額1000円以下という低価格で定額パケット通信を利用することができます。
中には月額500円を切るものもあります。
日本全国ほとんどどこでも通信可能なdocomoネットワークが
こんなに安い値段で使えてしまっていいのでしょうか?
格安SIMを使うためにはSIMを挿して使う
携帯端末かモバイルルータが必要です。
この端末がそれなりに高いわけで・・・
今回は5000円以下で入手可能な激安端末RaspberryPiを
格安SIMを挿入可能なモバイルルータにしてみます。
要求仕様は下記の通りとします。
- 予算1万円以内(SIM代は除く)
- 複数無線端末から同時接続可能
- docomoネットワークのLTE接続可能
- モバイルバッテリーで駆動可能
- 有線LANのネットワークにも対応
- カバンの中に納まるサイズ
普通に上記スペックのモバイルルータは2万円以上はします。
かなりお得に作れますよ!!
システム構成
下記にシステム構成図を示します。
LTE3G外部ネットワークへはdocomoのUSBデータ通信端末
「L-02C」を使って接続します。
内部ネットワークの各無線端末との通信は
USB無線アダプタ「WLI-UC-GNM」を使います。
その他、100均のケースやケーブルを加工し使いました。
モバイルバッテリーは2Aクラスの出力が可能なものを。
準備するもの
- Raspberry Pi本体(3800円)
- 出版社/メーカー: raspberrypi.org
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
- L-02C(ヤフオク!で2000円程度)
docomo Xi ( クロッシー ) 対応 データ通信端末 L-02C 標準セット品 (SIMロック未解除) シルバー
- 出版社/メーカー: LG Electronics Inc.
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
- 無線LANアダプタ(WLI-UC-GNM)(700円)
BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM
- 出版社/メーカー: バッファロー
- 発売日: 2010/06/25
- メディア: Personal Computers
- 購入: 44人 クリック: 226回
- この商品を含むブログ (27件) を見る
- SDカード(4GB以上のもの)(800円)
【Amazon.co.jp限定】Transcend microSDHCカード 8GB Class10 (無期限保証) TS8GUSDHC10E (FFP)
- 出版社/メーカー: トランセンド・ジャパン
- メディア: Personal Computers
- この商品を含むブログを見る
- モバイルバッテリー(1350円)
- 格安SIMカード(OCNモバイル前提)
OCN モバイル ONE【SMS対応】マイクロSIM 月額1,020円(税抜)~
- 出版社/メーカー: NTTコミュニケーションズ
- 発売日: 2013/12/17
- メディア: エレクトロニクス
- この商品を含むブログ (6件) を見る
総額 8650円ナリ
最新のRaspberryPi+モデルはSDカードではなく
microSDカード対応になってますのでご注意ください。
各種設定
以下の設定はRaspberryPiを有線LANに接続し、
同一ネットワークにつながるデスクトップPC等から行います。
一から導入を知りたい方は下記サイトなどを参考にしてください。
RaspberryPiでドライブレコーダ 【RaspberryPiセットアップ】 - My Linux Diary
1.アクセスポイント機能(hostapd)導入
まずは手持ちの各携帯端末とRaspberryPiを無線で接続できるように
アクセスポイント機能を導入し、DHCPサーバーを立ち上げます。
有線LAN側eth0はDHCPでIPアドレスを自動割り当て、
無線LAN側wlan0は固定IPアドレスを割り当てます。
$ sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
address 192.168.100.1
network 192.168.100.0
netmask 255.255.255.0
gateway 192.168.11.1
次にhostapdをインストールします。
$ sudo apt-get install hostapd
WLI-UC-GNMはhostapdのバージョンが古く対応していません。
新しく本家のサイトから最新版をダウンロードします。
http://w1.fi/hostapd/ からソースファイル
(hostad-2.0.tar.gz)をダウンロードし展開します。
関連ライブラリもインストールしましょう。
$ wget http://w1.fi/releases/hostapd-2.0.tar.gz
$ tar xvf hostapd-2.0.tar.gz
$ sudo apt-get libnl-genl-3-dev libssl-dev
コンパイルを行います。
$ cd hostapd-2.0/hostapd
$ cp defconfig .config
$ echo CONFIG_LIBNL32=y >> .config
$ make
コンパイルしたhostapdを置き換えます。
$ sudo mv /usr/sbin/hostapd{,.orig}
$ sudo mv hostapd /usr/sbin/
設定ファイル(hostapd.conf)を書き換えます。
SSIDとパスワードは適宜書き換えてください。
$ vi /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=myraspberrypi
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=mypasswords
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
hostapdの起動設定をします。
$ vi /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
WPASupplicantを無効にしておきます。
$ sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/
下記コマンドでデーモンとして起動します。
$ sudo service hostapd start
これで固定IPでの各端末からの接続は可能となりました。
DHCP機能がないため、まだ自動的にIPアドレスが割り振られません。
起動毎にhostapdが立ち上がるようにします。
$ sudo update-rc.d hostapd enable
2.DHCPサーバー(isc-dhcp-server)導入
まずはインストールします。
$ sudo apt-get update
$ sudo apt-get install isc-dhcp-server
設定ファイル(dhcp.conf)を編集します。
$ vi /etc/dhcp/dhcpd.conf
#コメントアウト
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
authoritative;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.50;
option broadcast-address 192.168.100.255;
default-lease-time 600;
max-lease-time 7200;
option routers 192.168.100.1;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
DHCPサーバーの起動設定をします。
$ vi /etc/default/isc-dhcp-server
INTERFACES="wlan0"
DHCPサーバーを起動します。
$ sudo service isc-dhcp-server start
これで各携帯端末から自動的に接続可能となりました。
起動毎にDHCPサーバーが立ち上がるよう下記を設定します。
$ sudo update-rc.d isc-dhcp-server enable
3.IPマスカレードの設定
この状態で各携帯端末から有線LAN経由で
外部ネットワークに接続できるようにします。
パケットを転送できるようにシステム設定します。
$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1$ sudo reboot
iptablesの設定によりIPマスカレードを有効にします。
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
これで有線モバイルルータとして機能するようになりました!
4.LTE/3G無線ネットワーク接続
いよいよRaspberry PiをLTEネットワークに接続します。
なぜかL-02CをRaspberryに接続するとCD-ROMと認識されます。
$ dmesg
[ 718.387690] usb 1-1.2: new high-speed USB device number 5 using dwc_otg
[ 718.490575] usb 1-1.2: New USB device found, idVendor=1004, idProduct=61dd
[ 718.490610] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 718.490626] usb 1-1.2: Product: docomo L02C
[ 718.490640] usb 1-1.2: Manufacturer: NTT DOCOMO, INC.
[ 718.490654] usb 1-1.2: SerialNumber: 353168043428010
[ 718.500367] usb-storage 1-1.2:1.0: USB Mass Storage device detected
[ 718.506959] scsi host0: usb-storage 1-1.2:1.0
[ 718.533685] usbcore: registered new interface driver uas
[ 719.509159] scsi 0:0:0:0: CD-ROM LG Autorun 2.00 PQ: 0 ANSI: 0
[ 719.557418] sr 0:0:0:0: [sr0] scsi-1 drive
[ 719.557457] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 719.562875] sr 0:0:0:0: Attached scsi CD-ROM sr0
[ 719.592345] sr 0:0:0:0: Attached scsi generic sg0 type 5
CD-ROMをejectするためのコマンドをインストールします。
$ sudo apt-get install eject
CD-ROMをejectすると・・・
$ eject sr0
今度は正しく認識されます。
$ dmesg
[ 839.523291] usb 1-1.2: USB disconnect, device number 5
[ 839.525094] scsi 0:0:0:0: rejecting I/O to offline device
[ 839.525131] scsi 0:0:0:0: killing request
[ 839.932198] usb 1-1.2: new high-speed USB device number 6 using dwc_otg
[ 840.034681] usb 1-1.2: New USB device found, idVendor=1004, idProduct=618f
[ 840.034716] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 840.034733] usb 1-1.2: Product: docomo L02C
[ 840.034748] usb 1-1.2: Manufacturer: NTT DOCOMO, INC.
[ 840.140872] usbcore: registered new interface driver usbserial
[ 840.144246] usbcore: registered new interface driver usbserial_generic
[ 840.144999] usbserial: USB Serial support registered for generic
[ 840.186171] usbcore: registered new interface driver option
[ 840.188284] usbserial: USB Serial support registered for GSM modem (1-port)
[ 840.189350] option 1-1.2:1.0: GSM modem (1-port) converter detected
[ 840.194371] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB0
[ 840.195086] option 1-1.2:1.1: GSM modem (1-port) converter detected
[ 840.196391] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB1
[ 840.197081] option 1-1.2:1.2: GSM modem (1-port) converter detected
[ 840.200921] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB2
[ 840.201625] option 1-1.2:1.3: GSM modem (1-port) converter detected
[ 840.204714] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB3
wvdialというパッケージをインストールします。
$ sudo apt-get install wvdial
wvdialの設定ファイルを作成します。
下記はOCNモバイルの場合を想定しています。
自身のMVNOに合わせて書き換えてください。
$ sudo vi /etc/wvdial.conf
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Dial Attempts = 3
Stupid Mode = 1
Modem Type = Analog Modem
Dial Command = ATD
Stupid Mode = yes
Baud = 460800
New PPPD = yes
APN = lte-d.ocn.ne.jp
Modem = /dev/ttyUSB2
ISDN = 0
Phone = *99***1#
Password = mobile
Username = mobileid@ocn
Carrier Check = no
下記のコマンドで接続します。
$ sudo wvdial
-> WvDial: Internet dialer version 1.61
-> Initializing modem.
-> Sending: ATZ
ATZ
OK
-> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
-> Modem initialized.
-> Sending: ATD*99***1#
-> Waiting for carrier.
ATD*99***1#
CONNECT
-> Carrier detected. Starting PPP immediately.
-> Starting pppd at **
-> Pid of pppd: 2954
-> Using interface ppp0
-> local IP address **.**.**.**
-> remote IP address **.**.**.**
-> primary DNS address **.**.**.**
-> secondary DNS address **.**.**.**
PPP接続が確立されていることが確認できます。
$ ifconfig ppp0
- ppp0 Link encap:Point-to-Point Protocol
inet addr:153.157.141.198 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:151 errors:0 dropped:0 overruns:0 frame:0
TX packets:175 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:47872 (46.7 KiB) TX bytes:28680 (28.0 KiB)
iptablesの設定によりIPマスカレードを有効にします。
$ sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
これでLTEモバイルルータとして機能するようになりました!
起動毎にPPP接続が確立されるようにします。
$ sudo vi /etc/init.d/wvdialloop.sh
#!/bin/bashLOG='/var/log/wvdial'
eject /dev/sr0
(
while : ; do
wvdial 2>&1
sleep 15
done
) 2>&1 > ${LOG} < /dev/null &
$ sudo chmod +x /etc/init.d/wvdialloop.sh
$ update-rc.d wvdialloop.sh defaults
rc.localにIPマスカレードの設定を追加します。
$ sudo vi /etc/rc.local
# exit 0 の前に追加
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
これで電源投入時に自動的にPPP接続が確立され、
モバイルルータとして機能するようになります。
LTE通信中の総消費電流は0.9A弱。
結構発熱しますが・・・
モバイルバッテリーでもしっかり駆動します。
RaspberryPiで学ぶ ARMデバイスドライバープログラミング
- 作者: 米田聡
- 出版社/メーカー: ソシム
- 発売日: 2014/09/24
- メディア: 単行本
- この商品を含むブログ (1件) を見る
まとめ
激安PCの先駆けとなるRaspberryPiを使って安価に
LTEモバイルルータを構築する仕組みを紹介しました。
今回使った技術は色々な応用が考えられます。
特にLTEネットワークに接続できる点は大きいですね。
GPSと連携してグーグルマップを表示させたり
カメラと連携させて見守りシステムを構築したり
可能性は無限大です。
グローバルIPを取得できれば遠隔操作等の応用も可能です。
とにかく「モノのインターネット(IoT)」の時代は
すぐそこまで来てるって感じです。
さああなたも無限の可能性にチャレンジしてみては?