Howto

SoftBankのC01SWを使用してインターネットに接続する

SoftBankの C01SW (USB接続モバイル端末)を使用して、インターネットに接続する方法を紹介します。C01SW は、マスストレージ(microSD)とシリアルモデムの2種類のデバイスを利用できます。ここでシリアルモデムを使いSoftBankのサーバと ppp 接続をおこないます。

おおまかな手順は下記のようになります。

  1. シリアルモデムのドライバを用意する。
  2. ppp 機能を組み込む。
  3. ppp 関連の設定をおこなう。
  4. フラッシュイメージを作成する。
  5. ppp 接続をおこなう。

なお、本 Howto では、以下の環境を想定しています。
ご利用の環境に合わせて適宜読みかえてください。

  • 対象製品: Armadillo-500 FX
  • Atmark Distバージョン: 20090318
  • Linuxカーネルバージョン: 2.6.26-at4

1. シリアルモデムのドライバを用意する。

シリアルモデムのドライバには、Linuxカーネルに含まれているドライバまたは C01SW のメーカーが提供しているドライバを利用できます。

Linux標準ドライバを利用する場合

Linuxカーネルに含まれているsierraドライバを利用できますが、2.6.26までのカーネルではドライバに C01SW のデバイス情報(VENDOR IDとPRODUCT ID)が登録されていないため追加する必要があります。

具体的に、カーネルソースのdrivers/usb/serial/sierra.cを修正してデバイステーブル配列(id_table)に以下の定義を登録します。

  • VENDOR ID: 0x1199
  • PRODUCT ID: 0x6890

以下のような定義になります。

    { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6890, 0xFF, 0xFF, 0xFF)},

メーカー提供ドライバを利用する場合

2.6.26の標準ドライバでは C01SW の初期化に問題があって通常より時間がかかります。メーカーのサイトからダウンロードできる最新ドライバ(現在バージョン1.6.0)ではこの問題が修正されているので、最新版を利用することをおすすめします。バージョン1.6.0のドライバでは C01SW のデバイス情報が既に登録されているので、追加する必要はありません。

ダウンロードしたアーカイブからsierra.cを取り出して、カーネルソースに含まれているドライバ(drivers/usb/serial/sierra.c)を上書きします。

カーネル設定

ドライバのソースを準備できたら、以下のようにAtmark Distのmake menuconfigを実行してカーネルのフラッシュイメージにドライバを含むように設定します。

[PC ~/atmark-dist]$ make menuconfig
Main Menu

Vendor/Product Selection  ---> 
--- Select the Vendor you wish to target
(AtmarkTechno) Vendor
--- Select the Product you wish to target
(Armadillo-500-FX.dev) AtmarkTechno Products 

Kernel/Library/Defaults Selection  --->
--- Kernel is linux-2.6.x
(default) Cross-dev
(None) Libc Version
[*] Customize Kernel Settings (NEW)
Linux Kernel Configuration

Device Drivers  --->
  [*] USB support  --->
    <*>   USB Serial Converter support  --->
      <*>   USB Sierra Wireless Driver (NEW)

デバイスノードについて

デバイスが認識されるとttyUSBデバイスノードが沢山生成されますが、利用可能なノードは以下の3つだけになります。

ノード名 (linux-2.6.26まで) ノード名 (linux-2.6.27以降) 用途
/dev/ttyUSB9 /dev/ttyUSB3 ATコマンド制御
/dev/ttyUSB12 /dev/ttyUSB4 データ通信
/dev/ttyUSB18 /dev/ttyUSB6 データ通信
  • 他のUSBシリアルデバイスが接続されていない状態で、C01SW のノードがttyUSB0から始まる前提になっています。
  • データ通信のノードはどちらでも利用できます。
  • 接続開始に必要なATコマンドにはデータ通信のノードでも利用できます。

2. ppp 機能を組み込む。

pppdを含んだユーザランドを利用します。Atmark Distのmake menuconfigで以下のようにpppdを選択できます。

Main Menu

Vendor/Product Selection  ---> 
--- Select the Vendor you wish to target
(AtmarkTechno) Vendor
--- Select the Product you wish to target
(Armadillo-500-FX.dev) AtmarkTechno Products 

Kernel/Library/Defaults Selection  --->
--- Kernel is linux-2.6.x
(default) Cross-dev
(None) Libc Version
[*] Customize Vendor/User Settings (NEW)
Userland Configuration

Network Applications  --->
[*] pppd

pppdを選択してから make します。

[PC ~/atmark-dist]$ make

3. ppp 関連の設定をおこなう。

まず、pppd が使用する /var/lock ディレクトリを作成します。

[PC ~/atmark-dist]$ mkdir romfs/var/lock

次に、pppd が使用する設定ファイルを作成します。

romfs/etc/ppp/peers/softbank

lcp-echo-failure 0
/dev/ttyUSB12
115200
debug
defaultroute
usepeerdns
ipparam softbank

ipcp-max-failure 4
ipcp-accept-local
ipcp-accept-remote

noauth
user "ai@softbank"

crtscts
lock
connect 'chat -v -f /etc/chatscripts/softbank'

romfs/etc/ppp/chap-secrets

"ai@softbank" * "softbank"

romfs/etc/chatscripts/softbank

ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT 'NO CARRIER' ABORT DELAYED

''      AT
OK      ATZ

OK     'AT+CGDCONT=1,"IP","softbank"'

OK-AT-OK "ATD*99#"
CONNECT \d\c

4. フラッシュイメージを作成する。

イメージを作成し、Armadillo に書き込みます。 カーネルも書き換えるのを忘れないようにしてください。

[PC ~/atmark-dist]$ make image
[PC ~/atmark-dist]$ hermit download -i images/linux.bin.gz -r kernel
[PC ~/atmark-dist]$ hermit download -i images/romfs.img.gz -r userland

5. ppp 接続をおこなう。

C01SW をArmadilloに接続してから、以下のコマンドを実行して接続します。

[armadillo /etc/ppp]# pppd call softbank

接続にはしばらく時間がかかります。
正常に接続できると、「ppp0」というネットワークインターフェースが作成されます。
ネットワークインターフェースの状態はifconfigコマンドで確認できます。

[armadillo /etc/ppp]# ifconfig ppp0

最後にDNSサーバのIPアドレスをシステムログ(/var/log/messages)で調べて設定します。

[armadillo /etc/ppp]# grep nameserver /var/log/messages
[armadillo /etc/ppp]# vi /etc/resolv.conf
nameserver IPアドレス

カーネルとユーザランドイメージ

動作確認に利用したフラッシュイメージ (Armadillo-500 FX用)