2010年7月21日水曜日

Fonera 2202でWillcom/Emobile PPP接続  その1

1. はじめに

Fonera 2202にて、USB接続modemを利用したdialup PPP接続と設定編集のGUI(Lua/Luci)を作成してみました。現在テスト中ですが、なんとか動いているようです。USB接続のdialup modemの情報とdialup PPPの設定(account, 電話番号等)を登録しておくと、該当のUSB dialup modemが接続された際にhotplug inのキックからPPPで接続できるようになります。IO Data WSIM(W-SIM)とemobile H12HWにて接続テストをしています。emobileは当初D02HWにて行っていましたが、突然赤LEDの点灯状態(圏外表示)のままとなり、壊れてしまいました。そのため、H12HWにてテストを実施しています。D02HWでも問題なく動作するものと思われます。

2. 各設定の概要

2-1. Kernel/Firmwareの構築

WSIMとH12HWの認識ために、USB serial driverのpl2303/optionのソースに設定を追加してkernel/firmwareをbuildします。


(1) pl2303 driverにIO Data WSIMの設定を追加し、kernel/firmwareに組込ます。

(2) H12HW用のoption driverはkernel/firmwareに組込済みであるため、H12HWの設定のみをoption driverに追加します。

(3) build完了したfirmwareをtftpserver経由でFonera 2202に流し込みます。このときRedbootに入り込むためにFonera 2202にSerial port接続します。

folder file descriptions
drivers/usb/serial pl2303.h WSIMのproduct idを追加
  pl2303.c WSIMのvendor id, product idをid_tableに追加
  option.c H12HWのproduct id
を追加し、vendor id/product idの組をoption_idsに追加。D02HW(E220)は登録されている。
 

 

2-2. PPP接続

USBのhotplug in処理からPPP(pppd)を起動する処理については、日経Linux 2009/09月号「新FONルーターを改造する」の記事を参考にしました。記事と異なる点は以下の通りです。
3GUMTSのdaemon方式と異なり、hotplug in / unplug をベースにしたPPP接続・切断となります。

(1) 複数のUSBモデムを利用できるようにするため、/etc/config/ttyusbにUSB dialup modemの設定ファイルを用意し、USB hostplug in処理 (/etc/hotplug.d/ttyusb/11-dialup)にて、VIDPID (USBモデムのVendor IDとProduct IDを合わせた 16進8桁の値)をキーに /etc/config/ttyusbから/etc/config/networkのppp sectionに接続に必要な値をコピーするようにしました。


(2) pppdを起動する場合に、speed parameterによるInterface speedの指定がないと9600bpsでの接続になってしまうことがあるようです。ttyおよびpppdの初期化処理のソースを見てみましたが、原因の確定ができないためにspeed parameterを指定するようにしました。ちなみにWSIMは115200としました。これ以上のInerface sppedの設定では、WSIMがchat scriptに反応しないようです。/lib/network/ppp.shの修正となります。


(3) pppd接続後のfirewall設定をする必要があります。日経Linuxの記事では /etc/config/firewallにpppの設定を追加していますが、ここでは既存のWAN設定を利用します。そのためpppのlinknameとipparmを”wan”とします。


(4) Fonera 2202では 3GUMTSがimplementされています。emobile D02HWは3GUMTSの設定画面にてカスタム設定を選択し、必要なparamterを 個別設定することで接続できるようになります。ですが、今回hotplug inからPPPの接続を有効してしまうと、dialupと3GUMTS間での /dev/ttyUSB0のportの取り合いとなってしまうため、dialup接続の場合には、3GUMTSの起動を押さえるように/etc/config/ttyusbのmodemtypeを設定しました。この値を’dialup’としたUSB modemについては/etc/hotplug.d/ttyusb/10-umtsを修正して、3GUMTSの処理がキックされないようにしました。modemtypeの値を ‘3gumts’としたものについては、今回のdialup PPPではなく3GUMTSが起動するはずです。/etc/hotplug.d/ttyusb/11-dialupおよび/etc/hotplug.d/usb/11-dialupでは、modemtypeが’dialup’であるものについてのみ処理を行います。


(5) pppのdialup chat script (/tmp/chat_dialup)は、hotplug処理の中で作成します。USB modem のunplugでchat scriptも削除します。


(6) PPPのoption parameter (/etc/ppp/options)のうち hardware flow controlの設定とlcp-echo-intervalの調整が必要なようです。nocrtsctsをコメントにして、crtsctsを追加します。lcp-echo-interval はdefaultの1のままですと、WSIMの場合、頻繁にlcp timeoutが発生します。こちらの値は3程度にしておくと、だいぶLCP timeoutの発生頻度が減ります。

Folder file descriptions
/etc/config network ppp接続情報の追加
  ttyusb 各USB dialup modemの設定情報
/lib/network ppp.sh ppp接続コマンド
/etc/ppp options PPPオプション設定ファイル。crtsctsとlcp-echo-intervalを修正
/etc/hotplug.d ttyusb/10-umts VIDPIDに対応したttyusbのmodemtypeが”3gumts”のときに実行されるようにする。
  ttyusb/11-dialup VIDPIDに対応したttyusbのmodemtypeが”dialup”のときに実行されるようにする。
  usb/10-umts 何もしない。
  usb/11-dialup VIDPIDに対応したttyusbのmodemtypeが”dialup”のときに実行されるようにする。
/tmp/ chat_dialup pppdからchat scriptとして起動される。/etc/hotplug.d/ttyusb/11-dialupで作成される。
/lib/uci/schema/defaults network /etc/config/networkに追加した項目定義
  ttyusb /etc/cnfig/ttyusbに追加した項目の定義
 
2-3. USB dialup modem設定のGUI

今回、もっとも苦労した点です。基本はFoneraのWeb GUIから/etc/config/ttyusbのentry追加・編集・削除です。ですが、luciのMVC modelに不慣れなため、entryの追加・編集の画面がmodelの記述で簡単にできるであろう所をviewで記述してしまうような格好のよろしくないGUIとなっています。画面のスタイルを合わせるためにcssの設定などもmodelが生成した画面のhtmlソースを参考にview内に埋め込んでいます。
他にも 「入力した値のチェックがない」、「削除ボタン押下げ後の確認dialogがない」、「設定内容の表示がない」、「PPP接続状態の表示がない」などの手抜きがあります。


category File descriptions
Controller diaup.lua dialup GUIのメイン。各画面の記載。
View dialup/dialup.htm dialup設定のメイン画面。各設定の編集・削除と新規追加。
  dialup/addentry.htm 設定の新規追加の入力画面。「保存」を押すとmodelのttyregist.luaに処理が移る。
  dialup/edit.htm 設定の編集画面。「保存」を押すと、modelのttyregist.luaに処理が移る。
model cbi/dialup/remove.lua 指定の設定を削除する。
  cbi/dialup/ttyregist.lua 設定を登録する。VIDPIDが変更されたときは、削除・新規登録となる。
i18n dialup.en.lua 英語のメッセージファイル
  dialup.ja.lua 日本語のメッセージファイル

3. 参考資料

 

4. 更新履歴

  • 2010/07/28: 2-2. PPP 接続の表に/lib/uci/schema/defaultsの行を追加

0 件のコメント:

コメントを投稿