PPP設定の各ファイルについて記載します。
1. /etc/config/network
/etc/config/network - 下記のPPP設定をファイルの最後に追加します。device, speed, username, password, connectcmdは、hotplug in処理の際に該当するUSB modemの設定情報から書き換えられます。
config 'interface' 'ppp' |
config ‘interface’ ‘ppp’: PPP接続用のセクションです。
ifname: pppdに渡すparameterとなります。今回は’wan’固定となります。
proto: Protocol指定となります。今回は’ppp’固定となります。
mtu: 1500固定です。
linkname: pppdに渡すlink nameです。今回は’wan’固定となります。
ipparam: ‘wan’固定となります。
device: ppp通信用のdevice file nameとなります。D02HW, H12HWを接続すると制御用ポートの /dev/ttyUSB1 も作成されます。3GUMTSでは /dev/ttyUSB1も利用しますが、ppp dialup接続では /dev/ttyUSB0 のみの利用となります。
speed: 回線のinterface速度です。USB dialup modemのhotplug in処理中にttyusbから、コピーされます。
username: ppp接続アカウント名です。Emobileの場合には固定の’em’となります。Willcomの場合には、個別のアカウントとなります。USB dialup modemのhotplug in処理中にttyusbから、コピーされます。
password: ppp接続パスワードです。Emobileの場合には固定の’em’となります。Willcomの場合には、個別のアカウントとなります。USB dialup modemのhotplug in処理中にttyusbから、コピーされます。
connectcmd: chat scriptのコマンドラインとなります。USB dialup modemのhotplug in処理中にttyusbから、コピーされます。同じく /tmp/chat_dailerもhotplug in処理中に作成されます。
attached: D02HW, H12HWのような3GUMTS対応のmodemを利用した場合に、/dev/ttyUSB0と/dev/ttyUSB1の2回 hotplug in処理が起動されるためttyUSB0の処理中に設定しれた値がttyUSB1の処理で上書きされるのを防ぐためのflagです。この値が 1 であると、ttyUSB0のhotplug in 処理が完了したことを示します。
2. /etc/config/ttyusb
/etc/config/ttyusb - 新規ファイル追加のサンプル。WSIM接続のusername, passwordはdummyの’*’としています。
config 'ttyusb' '12D11003' config 'ttyusb' '12D11008' config 'ttyusb' '04BB0940' |
config ‘ttyusb’ VIDPID: VIDPIDによって識別されるUSB dialup modemの設定情報セクションです。
vendor: ベンダー名
product: 製品名
vidpid: dialup modemのvendor idとproduct idを連結した16進8桁の値となります。dailup modemの識別のためにセクション名とこちらの2重に保持しています。
driver: device driverの種類を設定します。IO Data WSIMの場合にはpl2303, Huawei (Emobile)についてはoptionです。他にusbserialも選択できます。この項目は、以前のimplementationにおいて利用していました。現在は利用していません。
modemtype: モデムタイプ。’dialup’ or ‘3gumts’。’dialup’のときには今回のdialup処理とし、3GUMTS処理が起動されないようにします。’3gumts’の場合には、その逆となります。
username: PPP接続のアカウント名です。USB dialup modemのhotplug in処理中、ttyusbの該当情報が/etc/config/networkの’interface’ ‘ppp’セクションのusernameにコピーされます。
password: PPP接続のパスワードです。USB dialup modemのhotplug in処理中、ttyusbの該当情報が/etc/config/networkの’interface’ ‘ppp’セクションのpasswordにコピーされます。
connectcmd: PPP接続のchat script起動用コマンドラインです。-T以降の電話番号のみ変更するようにしてください。Emobileの場合は、-T*99#になります。USB dialup modemのhotplug in処理中、ttyusbの該当情報が/etc/config/networkの’interface’ ‘ppp’セクションのconnectcmdにコピーされます。
speed: PPP接続のインターフェース速度(bps)です。IO Data WSIMの場合は 115200(bps)が上限のようです。Huawei (Emobile)のH12HWの場合には921600(bps)
atinit: USB dialup modemの初期化コマンドです。空でも差し支えはないでしょう。/tmp/chat_dialerの中で “ATZ” は発行しています。3GUMTSの場合は、ATZとATHを発行しているようです。(/App/umtsd.lua)
3. /etc/ppp/options
/etc/ppp/options - パラメーターの修正(bold部分)
#debug |
Hardware flow controlを有効にするために nocrtsctsをコメントにします。そしてctsctsを追加します。また、lcp-echo-intervalの値を3に変更します。オリジナルの1では、IO Data WSIM接続の場合に LCP Timeoutが発生することがありました。
4. /etc/hotplug.d/ttyusb/10-umts
/etc/hotplug.d/ttyusb/10-umts - 修正 (ファイルの先頭に追加)
modemtype=`uci get ttyusb.${VIDPID}.modemtype` |
modemtypeが”3gumts”ではないデバイスが装着されたときに3GUMTSが起動されるのを防ぎます。
5. /etc/hotplug.d/ttyusb/11-dialup
/etc/hotplug.d/ttyusb/11-dialup - 新規ファイルの追加
DIALER="/tmp/chat_dialer" modemtype=`uci get ttyusb.${VIDPID}.modemtype` if [ "${modemtype}" != "dialup" ] ; then [ "$ACTION" == "add" -a "$SUBSYSTEM" == "ttyusb" ] && { attached=`uci get network.ppp.attached` # Write to /etc/config/network ppp section echo "\ chmod +x ${DIALER} ifup ppp [ "$ACTION" == "remove" -a "$SUBSYSTEM" == "ttyusb" ] && { |
modemtypeが”dialup”ではないデバイスが装着されたときにdial up接続が起動されるのを防ぎます。
Hotplug in 処理(環境変数 ACTIONの値が”add”)のときには、
- ‘attached’ flagが1でない場合、すなわち WSIM接続時、Huawei (Emobile)接続で /dev/ttyUSB0の処理のときには、処理を進めます。 ‘attached’が1の場合には、Huawei(Emboile)接続で /dev/ttyUSB1(Control port)の処理でのすで、以下の処理はttyUSB0 (Data port)と重複するため行いません。
- VIDPIDが環境変数として引き渡されるので、対応する設定情報を /etc/config/ttyusbより取得し、/etc/config/networkの’interface’ ‘ppp’セクションにコピーします。そして、最後に ‘attached’ を1にします。
unplug処理(環境変数 ACTIONの値が”remove”)のときには、’attached’を0として、次回のhotplug in処理用に初期化します。
6. /etc/hotplug.d/usb/10-umts
/etc/hotplug.d/usb/10-umts - 追加(ファイルの先頭に追加します)
fillzero() { while [ ${len} -ge 1 ]; echo ${id} # ${PRODUCT} contains vendor and product information, like 04bb/0940/1. # check the modemtype to prevent this script working on 3G/UMTS. |
modemtypeが”3gumts”ではないデバイスが装着されたときに3GUMTSが起動されるのを防ぎます。
7. /etc/hotplug.d/usb/11-dialup
/etc/hotplug.d/usb/11-dialup - 新規ファイルの追加
DIALER="/tmp/chat_dialer" fillzero() { while [ ${len} -ge 1 ]; echo ${id} # ${PRODUCT} contains vendor and product information, like 04bb/0940/1. # check the modemtype to prevent this script working on 3G/UMTS. [ "$ACTION" == "add" -a "$HOTPLUG_TYPE" == "usb" ] && { [ "$ACTION" == "remove" -a "$HOTPLUG_TYPE" == "usb" ] && { |
modemtypeが”dialup”ではないデバイスが装着されたときにdialup接続が起動されるのを防ぎます。そして、unplug処理(環境変数ACTIONの値が”remove”のときにはppp の接続断、chat script (/tmp/chat_dialer)の削除、’attached’を0にします(重複していますが)。
8. /lib/network/ppp.sh
/lib/network/ppp.sh - 修正(太字部分)
start_pppd() { # make sure only one pppd process is started # Workaround: sometimes hotplug2 doesn't deliver the hotplug event for creating config_get device "$cfg" device config_get connect "$cfg" connect [ "$defaultroute" -eq 1 ] && defaultroute="defaultroute replacedefaultroute" || de interval="${keepalive##*[, ]}" config_get_bool peerdns "$cfg" peerdns 1 config_get demand "$cfg" demand config_get_bool ipv6 "$cfg" ipv6 0 # 2010/06/14 lock -u "/var/lock/ppp-${cfg}" setup_interface_ppp() { config_get device "$config" device config_get mtu "$cfg" mtu |
- connectcmd, linkname, ipparamの値を /etc/config/networkの’interface’ ‘ppp’より取得します。connectcmdはconnectを上書きします。
- linknameとipparamをpppdの引数として追加します。
- speedの値を取り出し、同じく引数として追加します。
9. /lib/uci/schema/defaults/network
/lib/uci/schema/defaults/network - 追加(ファイルの最後)
config variable config variable config variable config variable config variable |
/etc/config/networkに追加した値の定義をします。
10. /lib/uci/schema/defaults/ttyusb
/lib/uci/schema/defaults/ttyusb - 新規ファイル
package ttyusb config section config variable config variable config variable config variable config variable config variable config variable config variable |
/etc/config/ttyusbの値の定義をします。
更新履歴
- 2010/07/28: Initial release