FreeBSD i386/10.1RとDOCOMO L-02C/L-05Aでモバイルインターネット環境を作る

【前提条件】
・FreeBSD i386/10.1R
・DOCOMO L-02C & IIJmioデータSIM(SMS使用可能SIMでもいけたので音声SIMでもいけるか?)
・DOCOMO L-05A & IIJmioデータSIMでも接続可能だったがDNSサーバとその設定は今のところ自分で行わなければならない。
※L-02CとL-05AはどちらかひとつあればOKです。
・iij-pppが使用できること(FreeBSDでは/usr/sbin/ppp)

・以下の情報は調べておくこと(詳細はご自身で)
APN⇛ iijmio.jp
ログインユーザ⇛ mio@***
パスワード⇛ ***
IIJmioからお借りしているSIMのPINコード⇛ デフォルトは 0000
DNSサーバ⇛ L-02Cは拾ってきたのだが、L-05Aは拾ってこないらしい。確認したほうが良い。

【注意点】
・cuコマンド実行中はミスタイプするとterminalを終了させる他回復する手段がないに等しいが、ATと[Enterキー]の入力と~.(半角チルダと半角ドット)を繰り返し投入していれば、terminalが戻ってくるかもしれません。


【手順】
1. カーネルモジュールをロードしておく。(L-02C, L-05A)
# kldload u3g
# kldload umodem


2. DOCOMO L-02CをUSBを挿す(L-02C, L-05A)
特に操作されていなければ以下のコマンドの末尾にこれらの情報が出力される。出力されない場合は別のUSBポートに挿してみる。
# dmesg
ugen7.2: at usbus7 (disconnected)
u3g0: at uhub1, port 6, addr 2 (disconnected)
ugen7.2: at usbus7
umass0: on usbus7
umass0: SCSI over Bulk-Only; quirks = 0x0100
umass0:7:0:-1: Attached to scbus7
cd1 at umass-sim0 bus 0 scbus7 target 0 lun 0
cd1: Removable CD-ROM SCSI-0 device
cd1: 40.000MB/s transfers
cd1: Attempt to query device size failed: NOT READY, Medium not present
cd1: quirks=0x10<10_BYTE_ONLY>

DOCOMO L-02C/L-05Aはそれ自体にWindows用のドライバをインストールできる仕組みを備えているので、単純にFreeBSDに挿した場合、USBのマスストレージ(仮想ドライブ)が認識される。
これをUSBのモデムにするためにこのcd1デバイスをeject(CDドライブトレイオープン相当)する。
# cdcontrol -f /dev/cd1 eject

再び以下のコマンドを実行すると以下の情報が出力される。(L-02Cの場合。L-05Aはu3g0等ではなくumodem0等になる)
よく見たらcoredumpされていらっしゃる…
# dmesg
pid 1060 (hald-probe-volume), uid 0: exited on signal 6 (core dumped)
ugen7.2: at usbus7 (disconnected)
umass0: at uhub1, port 6, addr 2 (disconnected)
cd1 at umass-sim0 bus 0 scbus7 target 0 lun 0
cd1: detached
(cd1:umass-sim0:0:0:0): Periph destroyed
ugen7.2: at usbus7
u3g0: on usbus7
u3g0: Found 4 ports.

u3g0が認識されていればこれで問題なし。

3. /dev/cuaU*がどれほどあるか確認する。(L-02C, L-05A)
# ls /dev/cuaU*
/dev/cuaU0.0 /dev/cuaU0.1.init /dev/cuaU0.2.lock
/dev/cuaU0.0.init /dev/cuaU0.1.lock /dev/cuaU0.3
/dev/cuaU0.0.lock /dev/cuaU0.2 /dev/cuaU0.3.init
/dev/cuaU0.1 /dev/cuaU0.2.init /dev/cuaU0.3.lock

このシステムの場合、元々cuaUデバイスが存在しなかったため、cuaU0で良いらしい。
DOCOMO L-02Cの場合、/dev/cuaU0.2がモデムとして操作できるので、IIJmioの設定を行う。DOCOMO L-05Aの場合は/dev/cuaU0となる。
L-02Cの場合、他の/dev/cuaUデバイスが存在するようであれば、0のところが一番大きな数値になると思われる。L-05Aの場合はdmesgの出力をよく見て、認識されたumodemのデバイスナンバー(?)が一番若いものの可能性が高い。

4. ATコマンドでモデムの設定を調査するため、新しいターミナル(激しく推奨)で以下のコマンドを実行する。Connectedが出力されたらOK。(L-02C, L-05A)
※このコマンド実行中はDeleteキーもBackSpaceキーも効かない。Ctrl+HでBackSpaceキー相当になる。当然矢印キーも使えない。
※L-05AはcuaU0以外でもConnected.を返してくるので AT と打ち込んでも文字列が出ない場合は間違い。
# cu -l /dev/cuaU0.2
Connected

試しに AT と打ってみるとOKと返ってくる。
AT
OK

ATH を打つ。現在接続中(とされている)セッションを終了する。
ATH
OK

ATZ を打つ。L-02Cの初期化処理?
ATZ
OK

AT+CGDCONT? を打つ。現在L-02C/L-05Aが持つAPN情報。既に接続実績があるらしい。
AT+CGDCONT?
+CGDCONT: 1,"IP","iijmio.jp",,0,0,0
+CGDCONT: 11,"IP","iijmio.jp",,0,0,0

ここからはAPNの設定。SIMがちゃんと認識していないとERRORが返される。
AT+CGDCONT=1,"IP","iijmio.jp"
補足:AT+CGDCONT=1の1の部分は/etc/ppp/ppp.confで設定する*99***1#の1を示すものとのこと。


現在の設定値を保存するため ATZ0 を打つ。
ATZ0
OK

~.で終了する。~(チルダ)の後ろに.(ドット)は出力されないらしい。
~
[EOT]

プロンプトに戻ってきたことを確認。
#

5. /etc/ppp/ppp.confを設定する
# cat /etc/ppp/ppp.conf
#################################################################
# PPP Sample Configuration File
# Originally written by Toshiharu OHNO
# Simplified 5/14/1999 by wself@cdrom.com
#
# See /usr/share/examples/ppp/ for some examples
#
# $FreeBSD: releng/10.1/etc/ppp/ppp.conf 203943 2010-02-16 01:07:06Z jkim $
#################################################################

default:
set log Phase Chat Connect LCP IPCP CCP tun command
ident user-ppp VERSION
set device /dev/cuaU0.2 #L-02Cの場合。 L-05Aは/dev/cuaU0に書き換え
set speed 115200

iijmio:
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 60 \
\"\" \
ATH OK ATZ OK AT OK-AT-OK ATE1Q0 OK \
AT+CFUN=1 OK-AT-OK \ # L-02Cはこのまま。L-05Aはこの行は削除する。
AT+CMEE=2 OK-AT-OK \
AT+CPIN? READY-AT+CPIN=\"0000\"-OK \
AT+CGDCONT=1,\\\"IP\\\",\\\"iijmio.jp\\\" OK \

AT+CGACT? OK-AT-OK \
AT+CGATT? OK \
AT+CGCLASS? OK \
AT+COPS? OK \
ATD*99***1# CONNECT"
set phone "*99***1#"
set authname "mio@***"
set authkey "***"

set timeout 300
disable ipv6
enable dns # request DNS info (for resolv.conf)
set ifaddr 10.1.0.1/0 10.1.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR

やたら\記号が増えたが、これらはすべて誤りではない。また、行頭に半角空白があるがこれも必要。
特に気にしたいところだけ記述。他はよくわからない。

AT+CPIN? READY-AT+CPIN=\"0000\"-OK \
PINコード入力。たいてい無視設定になっていると思うが、必要であれば入力する必要はあると思う。

AT+CGDCONT=1,\\\"IP\\\",\\\"iijmio.jp\\\" OK \
iijmio.jpはAPN部分。IIJmio以外では違いがあるはず。

ATD*99***1# CONNECT"
set phone "*99***1#"

ATD*99***1#は 1以外の別の値に設定するなら set phone "*99***1#"も同じ値にしなければならない。(どうやら1-9まで設定できるらしい)

set authname "mio@***"
set authkey "***"

IIJmio用のユーザ名とパスワードを入力。


6. DOCOMO L-02C/L-05AをUSBで挿した時にUSBモデムとして認識させる(L-02C, L-05A)
多くのLinuxやBSDシステムではWindowsシステムのドライバは無用の長物なので、最初からUSBモデムとして認識するように変更する。
# cu -l /dev/cuaU0.2
ATZ
OK
AT%USBMODEM=0

OK
ATZ0
OK
~.

元に戻したい場合は AT%USBMODEM=0をAT%USBMODEM=1にする。


7. とりあえず動作確認(L-02C, L-05A)
その前にデフォルトルートを消しておく。
# route delete default
pppコマンドでチェック開始。
# ppp
Working in interactive mode
Warning: Add! route failed: ff02::: errno: Value too large to be stored in data type
Using interface: tun0
ppp ON HOSTNAME>
dial iijmio
※なんかいろいろ出る

別のターミナルでppp.logを見たり、ifconfig tun0でIPアドレスの割当状態を監視する。
・pppの接続状態を監視
# tail -f /var/log/ppp.log

・tun0デバイスの割当て状態を見る
# ifconfig tun0


終了時は以下のコマンドでpppを切る。(terminalそのものを終了しても切れるらしい)
ppp ON HOSTNAME> close
ppp ON HOSTNAME> quit

■補足
調子が悪い場合はうまくつながらないかもしれない。L-02Cだと接続状況によっては dial iijmio → close を繰り返せば繋がることがあるが、L-05Aは5回以上繰り返さなければならないかもしれない。

参照したURL
2014-04-22 Debian GNU/kFreeBSDでL-02Cを使ってpppする
2014-11-27 L-02Cを最初からUSBモデムで認識させる/手動でAPN登録する
2009年 10月 29日 E-MobileのUSBモデムでインターネット接続
取扱説明書[L-02C - L-02C_J_All.pdf
20 Jul, 2014 FreeBSD + PPP + GSM/3G/LTE Modem
1998年11月30日 ダイアルアップで ISP に接続(IIJ-PPP の設定)
[ ダイヤルアップ接続の設定 ]

変更履歴
・2015/08/01 終了方法の修正とATコマンドの説明、コマンド部分の色を若干変更した。
スポンサーサイト

コメントの投稿

非公開コメント