2017年2月1日水曜日

RaspberryPi で Nifmo を使ってインターネットに接続してみた

概要

RaspberryPi + Nifmo でインターネットに接続してみました
Nifmo の SIM カードを USB の 3G モデム FS01BU に挿して使っています
FS01BU ネタを調べると SORACOM さんの記事ばっかり出てくるので別の SIM でも試してみたくなったのやってみました

環境

  • RaspberryPi Model B
  • Raspbian Jessie 8.0 (Linux raspberrypi 4.4.13-v7+ #894)
  • 3G USB ドングル (FS01BU)
  • Nifmo
  • ppp 2.4.6-3.1
  • usb-modeswitch 2.2.0+repack0-2
  • wvdial 1.61-4.1

必要なパッケージのインストール

まずは FS01BU を USB のモデムとして認識させるために必要なパッケージをインストールします
apt を使ってインストールするので別途回線が必要になります

  • sudo apt-get install -y ppp usb-modeswitch wvdial

また、この段階で FS01BU は RaspberryPi に接続してしまって OK です
SIM カードも挿入してしまってください

  • sudo reboot

設定を反映させるために一旦リブートしましょう

FS01BU をモデムとして認識させる

いろいろと調べているとこれで再起動が完了するとちゃんと USB モデムとして認識してくれるようなのですが、自分の場合はそれだけではモデムとして認識してくれませんでした

なので、以下の設定を実施してモデムとして認識させます

sudo usb_modeswitch -t <<EOF
  DefaultVendor= 0x1c9e
  DefaultProduct= 0x98ff
  TargetVendor= 0x1c9e
  TargetProduct= 0x6801
  MessageEndpoint= not set
  MessageContent="55534243123456780000000080000606f50402527000000000000000000000"
  NeedResponse=0
  ResponseEndpoint= not set
  Interface=0x00
EOF

Product 0x98ff を強制的に 0x6801 として認識させます
これで USB モデムとして RaspberryPi が認識できるようになります
上記を実行したら lsusb コマンドなどでちゃんと Product が変更されていることを確認してみてください

ID 1c9e:6801 OMEGA TECHNOLOGY

ではモデムとして認識させます

  • modprobe usbserial vendor=0x1c9e product=0x6801

で OK です

確認としては ls -l /dev/ttyU* で USB 用のファイルがあることを確認してください
ファイルがない場合はまだ RaspberryPi が FS01BU をモデムとして認識していないので、Product がちゃんと 0x6801 になっていて、それから modprobe しているか確認してください

モデムとして問題なく動作すれば FS01BU のランプが緑で点灯します
緑だけど点滅状態だとまだ認識されていない状況になります

Nifmo の APN 設定をする

これで FS01BU をモデムとして使うことができるようになりました
あとは Nifmo に接続すれば 3G 回線を使えるようになります

RaspberryPi に wvdial という仕組みがあるのでこれを使って接続します

  • sudo cp /etc/wvdialconf{,.back}
  • sudo vim /etc/wvdialconf
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","mdb.nifty.com"
Dial Attempts = 3
Stupid Mode = 1
Modem Type = Analog Modem
Dial Command = ATD
Stupid Mode = yes
Baud = 460800
New PPPD = yes
Modem = /dev/ttyUSB2
ISDN = 0
APN = mdb.nifty.com
Phone = *99***1#
Username = mdb@nifty
Password = nifty
Carrier Check = no
Auto DNS = 1
Check Def Route = 1

そのまま丸々コピペすれば OK です
書き換えたら保存してください

あとは接続すれば OK です

  • sudo nohup wvdial &

で ppp0 というインタフェースに Nifmo 用の IP が振られれば OK です
ちゃんとインターネットに接続できるか curl www.google.co.jp などで HTML が取得できるか確認してみてください

  • ifconfig
ppp0      Link encap:Point-to-Point Protocol  
          inet addr:153.145.245.12  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:15734 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19246 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:828351 (808.9 KiB)  TX bytes:947385 (925.1 KiB)

wvdial 実行時の接続ログの一部

--> pppd: <B0>[11]<F1>v<F8><FA>[19]
--> remote IP address 10.64.64.64

最後に

FS01BU + Nifmo で RaspberryPi をインターネットに接続してみました
SORACOM で試したネタの記事が大量にヒットしてしまい中々答えにたどり着けませんでした

RaspberryPi ではよくある話なのですが、インターネットに接続するための設定をするために事前にインターネットに接続する必要があるというパターンはよくあります
今回もそのパターンなので、FS01BU + Nifmo で購入して「やったこれで RaspberryPi をネットにつなげる」と思ったら「それの設定をするためにネットが必要なのか orz」となる可能性があるので注意しましょう

また、FS01BU は 3G 回線しか使えないモデムになります
Nifmo も 3G 回線の設定で接続しています
なので、回線は単純にかなり重く感じると思います
実際インターネットに接続してみるとダウンロードやアップロードは 数百 KB/s ほどしか出ないと思います

参考サイト

0 件のコメント:

コメントを投稿