システム3部鈴木です。
アットマークテクノ社製パネルコンピュータ、Armadillo-500 FXにEMOBILEデータカード(D02HW)をつないでインターネットに接続します。
Androidからデータカードを直接利用することは今のところできないので、Linux側でpppdを使ってIPアドレスを取得してから、Androidを起動します。
@テクノさんの「EMOBILE の データ通信カードを使用してインターネットに接続する」に詳しい解説が載っているので、こちらの内容をベースに説明します。
はやく独自のネタも公開したいと思う昨今です。
今回の確認環境
- Armadilloユーザーランド: Atmark dist v20090318
- Linuxカーネル : android-2.6.27 + patch (過去エントリー「LinuxカーネルとArmadilloユーザーランドをビルドする」を参照)
- Androidユーザーランド:1.5(cupcake)
- データ通信カード:EMOBILE D02HW
- 開発環境 : atde2 v20090403
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を使用する際には不要かもしれません。