ホーム | カスタムPC | サポート | リナックス | ギャラリー | 会社概要 | お問合せ

au の W05K と IODATA の USB2-PCADJP (Debian 5.0)

1. 使用機器
 au の W05K を IODATA の USB2-PCADJP 経由で Debian 5.0 で使う方法です。


2. カードの認識
 USB2-PCADJP をさすと、/var/log/messages に、以下の様なシンプルなメッセージが出力されます。

Aug 13 05:42:39 debian5 kernel: [ 237.140098] usb 2-1: new full speed USB device using uhci_hcd and address 2
Aug 13 05:42:39 debian5 kernel: [ 237.335778] usb 2-1: configuration #1 chosen from 1 choice
Aug 13 05:42:39 debian5 kernel: [ 237.363551] usb 2-1: New USB device found, idVendor=04bb, idProduct=0942
Aug 13 05:42:39 debian5 kernel: [ 237.363582] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Aug 13 05:42:39 debian5 kernel: [ 237.363598] usb 2-1: Product: I-O DATA USB2-PCADPJ
Aug 13 05:42:39 debian5 kernel: [ 237.363609] usb 2-1: Manufacturer: I-O DATA DEVICE,INC.
Aug 13 05:42:39 debian5 kernel: [ 237.632223] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
Aug 13 05:42:39 debian5 kernel: [ 237.639989] usbcore: registered new interface driver cdc_acm
Aug 13 05:42:39 debian5 kernel: [ 237.640007] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters

 このメッセージから、作られるデバイスは /dev/ttyACM0 である事がわかります。W05K を PC に直接挿入した場合は、2つのシリアルポートが見えますが、この場合は、1つのシリアルポートになります。

3. pppd の設定
 pppconfig で、pppd の設定を行います。モデムのデバイスを /dev/ttyACM0 にすれば、普通に使えます。

4. 電波受信状態の変化に伴う振る舞い
4.1. 電波が受信できない状態の再現
 焼き芋みたいですが、アダプタ丸ごとアルミホイールでグルグル巻きにして、電波が受信できない状況を再現してみました。

 W05K の場合、この程度では電波が受信できない状況が再現できないので、これをさらに鉄製の本棚に入れて、やっと、電波が受信できない状態が再現できました。

4.2. 最初から電波が受信できない場合
 電波が受信できない状態で pppd を起動すると、当然、接続できません。ただ、モデムとしての応答は、2種類ある様です。

Aug 12 21:49:22 debian5 pppd[3252]: pppd 2.4.4 started by ymo, uid 1001
Aug 12 21:49:23 debian5 chat[3254]: abort on (BUSY)
Aug 12 21:49:23 debian5 chat[3254]: abort on (NO CARRIER)
Aug 12 21:49:23 debian5 chat[3254]: abort on (VOICE)
Aug 12 21:49:23 debian5 chat[3254]: abort on (NO DIALTONE)
Aug 12 21:49:23 debian5 chat[3254]: abort on (NO DIAL TONE)
Aug 12 21:49:23 debian5 chat[3254]: abort on (NO ANSWER)
Aug 12 21:49:23 debian5 chat[3254]: abort on (DELAYED)
Aug 12 21:49:23 debian5 chat[3254]: send (ATZ^M)
Aug 12 21:49:23 debian5 chat[3254]: expect (OK)
Aug 12 21:49:23 debian5 chat[3254]: ^M
Aug 12 21:49:23 debian5 chat[3254]: OK
Aug 12 21:49:23 debian5 chat[3254]: -- got it
Aug 12 21:49:23 debian5 chat[3254]: send (ATDT*99**24#^M)
Aug 12 21:49:23 debian5 chat[3254]: expect (CONNECT)
Aug 12 21:49:23 debian5 chat[3254]: ^M
Aug 12 21:50:08 debian5 chat[3254]: alarm
Aug 12 21:50:08 debian5 chat[3254]: Failed
Aug 12 21:50:09 debian5 pppd[3252]: Exit.

 これは、ATZ でモデムを初期化した後、ATDT で電話したものの、モデムから何も返事が来ずに、タイムアウトしたケースです。

Aug 12 21:44:32 debian5 pppd[3005]: pppd 2.4.4 started by ymo, uid 1001
Aug 12 21:44:33 debian5 chat[3007]: abort on (BUSY)
Aug 12 21:44:33 debian5 chat[3007]: abort on (NO CARRIER)
Aug 12 21:44:33 debian5 chat[3007]: abort on (VOICE)
Aug 12 21:44:33 debian5 chat[3007]: abort on (NO DIALTONE)
Aug 12 21:44:33 debian5 chat[3007]: abort on (NO DIAL TONE)
Aug 12 21:44:33 debian5 chat[3007]: abort on (NO ANSWER)
Aug 12 21:44:33 debian5 chat[3007]: abort on (DELAYED)
Aug 12 21:44:33 debian5 chat[3007]: send (ATZ^M)
Aug 12 21:44:33 debian5 chat[3007]: expect (OK)
Aug 12 21:44:33 debian5 chat[3007]: ^M
Aug 12 21:44:33 debian5 chat[3007]: OK
Aug 12 21:44:33 debian5 chat[3007]: -- got it
Aug 12 21:44:33 debian5 chat[3007]: send (ATDT*99**24#^M)
Aug 12 21:44:33 debian5 chat[3007]: expect (CONNECT)
Aug 12 21:44:33 debian5 chat[3007]: ^M
Aug 12 21:44:33 debian5 chat[3007]: ^M
Aug 12 21:44:33 debian5 chat[3007]: DELAYED
Aug 12 21:44:33 debian5 chat[3007]: -- failed
Aug 12 21:44:33 debian5 chat[3007]: Failed (DELAYED)
Aug 12 21:44:34 debian5 pppd[3005]: Exit.

 これは、ATDT で電話したものの、W05K から DELEYED が返されて、pppd が終了してしまったケースです。電波が受信できないのだから、NO CARRIER が返るかと期待していましたのですが、これを返す事はありませんでした。
 いずれのケースも、pppd は終了し、以降、電波受信状況を回復させれば、普通に使えるようになります。

4.3. 通信開始時は電波が受信できて、通信中に電波が受信できなくなる場合
 下がこの時のログです。

Aug 13 06:26:15 debian5 pppd[3109]: pppd 2.4.4 started by terra, uid 1000
Aug 13 06:26:15 debian5 chat[3112]: abort on (BUSY)
Aug 13 06:26:15 debian5 chat[3112]: abort on (NO CARRIER)
Aug 13 06:26:15 debian5 chat[3112]: abort on (VOICE)
Aug 13 06:26:15 debian5 chat[3112]: abort on (NO DIALTONE)
Aug 13 06:26:15 debian5 chat[3112]: abort on (NO DIAL TONE)
Aug 13 06:26:15 debian5 chat[3112]: abort on (NO ANSWER)
Aug 13 06:26:15 debian5 chat[3112]: abort on (DELAYED)
Aug 13 06:26:15 debian5 chat[3112]: send (ATZ^M)
Aug 13 06:26:15 debian5 chat[3112]: expect (OK)
Aug 13 06:26:15 debian5 chat[3112]: ^M
Aug 13 06:26:15 debian5 chat[3112]: OK
Aug 13 06:26:15 debian5 chat[3112]: -- got it
Aug 13 06:26:15 debian5 chat[3112]: send (ATDT*99**24#^M)
Aug 13 06:26:15 debian5 chat[3112]: expect (CONNECT)
Aug 13 06:26:15 debian5 chat[3112]: ^M
Aug 13 06:26:16 debian5 chat[3112]: ^M
Aug 13 06:26:16 debian5 chat[3112]: CONNECT
Aug 13 06:26:16 debian5 chat[3112]: -- got it
Aug 13 06:26:16 debian5 chat[3112]: send (\d)
Aug 13 06:26:17 debian5 pppd[3109]: Serial connection established.
Aug 13 06:26:17 debian5 pppd[3109]: Using interface ppp0
Aug 13 06:26:17 debian5 pppd[3109]: Connect: ppp0 <--> /dev/ttyACM0
Aug 13 06:26:19 debian5 pppd[3109]: PAP authentication succeeded
Aug 13 06:26:20 debian5 kernel: [ 133.878330] PPP BSD Compression module registered
Aug 13 06:26:20 debian5 kernel: [ 133.983953] PPP Deflate Compression module registered
Aug 13 06:26:20 debian5 pppd[3109]: local IP address 119.107.75.83
Aug 13 06:26:20 debian5 pppd[3109]: remote IP address 172.23.40.219
Aug 13 06:26:20 debian5 pppd[3109]: primary DNS address 210.196.3.183
Aug 13 06:26:20 debian5 pppd[3109]: secondary DNS address 210.141.112.163
Aug 13 06:31:49 debian5 pppd[3109]: No response to 4 echo-requests
Aug 13 06:31:49 debian5 pppd[3109]: Serial link appears to be disconnected.
Aug 13 06:31:49 debian5 pppd[3109]: Connect time 5.5 minutes.
Aug 13 06:31:49 debian5 pppd[3109]: Sent 27252 bytes, received 5393 bytes.
Aug 13 06:31:55 debian5 pppd[3109]: Connection terminated.

 pppd が自動的に通信断を検出して終了しようとしますが、Connection terminated 以降、Exit しません。つまり、pppd は、終了できない状態のままになります。電波受信状況を回復させても、pppd が終了する事はありません。

# kill -9 `pidof pppd`

で、pppd は殺せますが、以降、pppd を起動しても W05K は無反応です。つまり、W05K 自体がハングする様です。Connection Terminated の状態で USB を抜けば、

Aug 13 06:31:55 debian5 pppd[3109]: Connection terminated.
Aug 13 06:49:56 debian5 kernel: [ 1550.416174] usb 1-2: USB disconnect, address 3
Aug 13 06:49:56 debian5 pppd[3109]: Hangup (SIGHUP)
Aug 13 06:49:56 debian5 pppd[3109]: Modem hangup
Aug 13 06:49:56 debian5 pppd[3109]: Exit.

となり、pppd は回線が切断されたことを検出して終了します。USB を差せば、W05K は初期化され、再び使用できる様になります。つまり、通信中に電波が受信できなくなると、W05K を USB ごと抜き差ししなければなりません。

4.3. USB の再認識
 まず、下の写真の様にUSB ハブ経由でこのアダプターを接続します。

 この写真の USB ハブをこのプログラムでリセットすれば、USB の抜き差しはソフ的に実現できます。USB ハブのリセット後、/dev/ttyACM1 ができる場合もありますが、この時は、もう一度リセットすれば、/dev/ttyACM0 ができます。リセットする USB ハブの vendor:product は、lsusb でわかります。
 pppd が終了せず、W05K が無反応状態になった場合は、pppd を kill した後、USB ハブをリセットしてあげれば、再び W05K が使えるようになります。