AndroidでEMOBILEデータカードを使ってみる

システム3部鈴木です。

アットマークテクノ社製パネルコンピュータ、Armadillo-500 FXにEMOBILEデータカード(D02HW)をつないでインターネットに接続します。
Androidからデータカードを直接利用することは今のところできないので、Linux側でpppdを使ってIPアドレスを取得してから、Androidを起動します。

@テクノさんの「EMOBILE の データ通信カードを使用してインターネットに接続する」に詳しい解説が載っているので、こちらの内容をベースに説明します。
はやく独自のネタも公開したいと思う昨今です。

今回の確認環境

USB Serial Converter のデバイスドライバを修正・・・しなくていいです

上記@テクノさんのサイトには、ドライバのソースとKconfigにパッチを当てるように指示がありますが、カーネルの2.6.20以降では、デフォルトでHUAWEIのデバイスに対応しているそうなので、修正の必要はありません。

ppp 機能及び USB Serial Converter のデバイスドライバを組み込む

カーネルに、以下のデバイスドライバを組み込みます。

  • PPP (point-to-point protocol) support
  • PPP support for async serial ports
  • USB driver for GSM and CDMA modems

また、ユーザランドのアプリケーションとして、pppd を組み込みます。

make menuconfig を使用した場合の設定は下記のようになります。
atmark-distのpwdはインストールディレクトリ直下とします。

[PC ~/atmark-dist]$ make menuconfig

カーネルの設定、atmark-distユーザーランドの設定の出し方は、「LinuxカーネルとArmadilloユーザーランドをビルドする」を参照してください。

カーネルの設定…
pppについてはandloid-2.6.27のカーネルには既に設定されていました。
USB Serial Converterの名前が参考サイトと異なっています。

Linux Kernel Configuration

Device Drivers  --->
Network device support  --->
<*> PPP (point-to-point protocol) support
<*>   PPP support for async serial ports

USB support  --->
<*> USB Serial Converter support  --->
<*>   USB driver for GSM and CDMA modems

ユーザランドの設定…

Userland Configuration

Network Applications  --->
[*] pppd

設定を保存して、makeします。

[PC ~/atmark-dist]$ make dep all

ppp 関連の設定をおこなう

@テクノさんのサイト通りに設定ファイルを設定していきますが、若干の補足を。

ネットワークの設定がDHCPになっていると、resolv.conf の中身がArmadilloが起動するたびに空になったり違う内容になったりするので、当方では起動スクリプト(rc.local)に、下記のように書き込んでいます。とりあえず。

echo "search ns11.iij4u.or.jp" > /etc/config/resolv.conf
echo "nameserver 210.130.1.1" >> /etc/config/resolv.conf
・・・

それから、G-Callなど、EMOBILE以外が提供している通信サービスを利用する場合、ID・パスワード・DNSなどが異なるので注意です。

ppp 接続をおこなう

デバイスドライバを組み込んだ Armadillo-500 FX に D02HW を接続すると、おそらく下記のように表示されます。

usb 3-1: new full speed USB device using fsl-ehci and address 2
usb 3-1: configuration #1 chosen from 1 choice
scsi1 : SCSI emulation for USB Mass Storage devices
usb 3-1: USB disconnect, address 2
usb 3-1: new full speed USB device using fsl-ehci and address 3
usb 3-1: configuration #1 chosen from 1 choice
usb-storage: probe of 3-1:1.0 failed with error -5
option 3-1:1.0: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0
usb-storage: probe of 3-1:1.1 failed with error -5
option 3-1:1.1: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1
scsi4 : SCSI emulation for USB Mass Storage devices
scsi 4:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
scsi 4:0:0:0: Attached scsi generic sg1 type 5

D02HWは複数のデバイスとして認識されるらしく、USB Serial converter は、ttyUSB0 と ttyUSB1 にアタッチされますが、最初の tty がシリアルモデムになります。
そのため、ttyUSB0 を使用して ppp 接続を行います。

[armadillo ~]# pppd /dev/ttyUSB0 230400 connect /etc/ppp/ppp-on-dialer

コマンドはすぐに終了しますが、接続にはしばらく時間がかかります。
データカードの青いLEDが点灯しっぱなしになったらOKです。
正常に接続できると、「ppp0」というネットワークインターフェースが作成されます。

[armadillo /etc/ppp]# ifconfig ppp0
ppp0      Link encap:Point-Point Protocol
          inet addr:xxx.xxx.xxx.xxx  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:178 (178.0 B)  TX bytes:130 (130.0 B)

以上で、EMOBILE の D02HW を使用して、インターネットに接続することができます。

・・・ところで、DO2HWは既に市場には出回っていません。たとえばD12LCで接続する場合は、下記のようにもう一手間かける必要があるようです。
参考:EMOBILE D12LCでネット接続するには?

どうも、末尾がLCのデータカードより、HWのデータカードのほうが構造がシンプルで手間が掛からないようです。

AndroidからEMOBILEを利用する

Android用にもDNSの設定を追加すれば、後は起動するとネットワークが使用可能になっています。

Androidユーザーランドの /init.rdにdnsの設定をしている箇所があるので、適宜変更します。
既にあるdns1の記述を残したい場合は、dns2として行を追加してください。

    setprop net.dns1 xxx.xxx.xxx.xxx

また、電源を投入したら自動でAndroidを立ち上げてEMOBILEで通信したい場合、Armadilloの /etc/config/rc.local を修正します。
sleepしているのはドライバのロードやpppdに時間が掛かるためです。もう少し多くても良いかもしれません。

[armadillo /etc/config]# vi rc.local

PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

jp2=`cat /sys/devices/platform/armadillo5x0_gpio.0/ports/gpio1_8_data`
if [ "$jp2" = "1" ]; then
        echo PPP...
        echo "search ns11.iij4u.or.jp" > /etc/config/resolv.conf
        echo "nameserver 210.130.1.1" >> /etc/config/resolv.conf
        sleep 3s

        pppd /dev/ttyUSB0 230400 connect /etc/ppp/ppp-on-dialer
        sleep 3s
        echo Booting Android...
        mount /dev/sda1 /mnt
        chroot /mnt/cupcake /init
fi

修正したらフラッシュメモリに書き込むのを忘れずに。

[armadillo /etc/config]# flatfsd -s

resolv.conf へのDNSの設定は、Androidを使用する際には不要かもしれません。

タグ:

コメントをどうぞ