FreeBSD 7.1へようこそ

第3回 FreeBSDで安心・快適通信【II】携帯でデータ通信を楽しもう

この記事を読むのに必要な時間:およそ 5 分

b-mobile 3Gの接続サービスをFreeBSDで使う

われらが日本での3Gサービスとしては,たとえば日本通信株式会社の「b-mobile」がある。同僚の先生が持っていたので「わしも族」よろしく,また(親戚でもなんでもないのだが)社長の苗字が筆者かぶっているよしみで,これまた衝動買いをしてきてしまった。

モデム自体はZTE社から出ているMF626という種類のもののようである。これにデータ通信専用の「FOMAカード」が挿さっている。携帯電話で「開通処理」をすると数分後に使えるようになり,電波を受けているときは写真のように緑色のLEDが点灯する。

図3 b-mobile ZTE MF626

図3 b-mobile ZTE MF626

このモデム用のドライバはまだ見あたらない※8⁠。システムは先ほどのiCON 225とまったく同じで,最初はCD-ROMとして認識され,CD-ROMをejectするとモデムになるという仕組みである。

※8
8-CURRENTではu3gという名前で開発中であるが。

したがって,手作業でUSBデバイスにファンクション切り替えのコマンドを送ってやって,プロダクトコード0x2000を0x0031に切り替えてやればよい。そのためにはusb_modeswitchプログラムを使う…

…のだが,筆者が試したところ,切り替えコマンドをwrite()するところでタイムアウトエラーが出てしまい,どうしても書き変えることができなかった。睡眠を犠牲にして頑張ってみたのだが,ソースのどこを見ても特殊な作業はしていないように見えるだけに,たかだか一晩徹夜したくらいでは解決できなかった(残念⁠⁠。

敗けそうになりながら何とか解決法はないかと頑張った結果,先月末たまたま購入したばかりのFOMA端末「Panasonic P-01A」に,b-mobileのFOMAカードを差し込むことで,接続に成功したので紹介する。

実はFreeBSDは7.0からすでにFOMA携帯と相性が良くなっており,

/boot/loader.confに

ufoma_load="YES"

と記入して再起動するか,rootで

# kldload ufoma

として手動でモジュールを読みこむことで,FOMA端末を認識してくれるようになる。

接続に使ったケーブルは秋葉原で1,000円ほどで売っていた「充電もできるFOMA用USBケーブル」である。ufomaモジュールのおかげで難なくモデムとして認識してくれた。P-01Aは都合3台のモデム構成となっていることがわかる(下記参照⁠⁠。

FOMA の「設定/サービス→その他→USBモード設定」「通信モード」としておく。これを「microSDモード」とすると,内蔵していればmicroSDカードが/dev/da0s1として認識されるので,rootで

# mount -t msdosfs /dev/da0s1 /mnt

とすることで,/mnt以下にマウントすることで読み書きできるようになる。もちろん使った後,引き抜く前にumount /mntを忘れてはならない。

この状態で,cuコマンドなどで直接モデムを簡単に制御できる。ATDTコマンドで普通のFOMAカードでも,⁠64kデータ通信」が簡単にできてしまう。

ucom0:  on uhub4
ucom0: iclass 2/136 ifno:0
ucom0:Supported Mode:modem,vendor1
ucom0: data interface 1, has CM over data, has break
ucom1:  on uhub4
ucom1: iclass 2/136 ifno:2
ucom1:Supported Mode:obex,vendor1
ucom1: data interface 3, has CM over data, has break
ucom2:  on uhub4
ucom2: iclass 2/136 ifno:4
ucom2:Supported Mode:handsfree

たとえば「so-net」をプロバイダに,⁠64kデータ通信」を行うためのサンプルの/etc/ppp/ppp.confファイルを示す。モデムデバイスを「/dev/cuaU0」と指定することにのみ注意すれば,あとはごく普通の「ppp」接続である。

リスト1 /etc/ppp/ppp.confの例

default:
 set log Phase Chat LCP IPCP CCP tun command
 ident user-ppp VERSION (built COMPILATIONDATE)
 set device /dev/cuaU0
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
           \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
sonet:
	enable force-scripts
	set login
	set timeout 300
	set phone "057000XXXX(sonetのデータ通信専用番号)"
	set authname "自分のログイン名.so-net.ne.jp"
	set authkey "パスワード"
	set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
	add default HISADDR
	enable dns

著者プロフィール

三田吉郎(みたよしお)

東京大学 大学院工学系研究科 電気系工学専攻准教授。講義「電気磁気学」「わかる電子回路」やマイクロマシン研究の傍ら,FreeBSDの普及,開発に尽力する。FreeBSD ports committer。国際派を自任し,2007~8年9月までフランス国立情報学研究所(INRIA)招聘教授。共著書に「FreeBSD徹底入門」(翔泳社),「FreeBSD Expert」など。