筆者の SL-C700 を REX-CFU1 経由で何かとつなぐ話。 まずは REX-CFU1 ドライバとモジュールを ZaurusCfu1_distから入手しないと話が始まりませんよ。
au A1402S と U-Cable type A3 (AS64LX)
履歴
- 2004-04-26 「usbmgr を使う方法」をご紹介
- 2004-04-25 初公開
はじめに
諸般の事情により au の携帯電話、 Sony Ericsson A1402S (PacketOne 高速パケット通信可能)を購入しました。 SL-C700 と au の端末をつないでインターネット接続する方法としては、 CF 接続型の通信ケーブル サン電子 AS-10Cがあるようですが、 先日某所で探したときは見つからず、その代わりに面白いモノを発見しました。 同じ サン電子の U-Cable type A3 (AS64LX)は、 au の PacketOne と DDI ポケットの Air H" の2種類に対応した USB ケーブル。 しかも MacOS X にも正式に対応しています。 これはいろいろな場面で役立ちそうです。
つなぎ方(暫定版)
筆者の環境は、下記の通り special kernelのちょっと古いバージョン v13e です。 ここに REX-CFU1 ドライバ cfu1-driver_0.0.2-3_arm.ipk と、 モジュール集 usb-modules_0.0.3_arm.ipk をインストールしました。 ただし今回使うモジュールは acm.o です。
% cat /proc/version Linux version 2.4.18-rmk7-pxa3-embedix-021129 (v13e@tetsu.homelinux.org) (gcc version 2.95.2 19991024 (release)) #7 Sun, 08 Feb 2004 22:48:54 +0900
次に USB modem 用のデバイスファイル /dev/ttyACM0 を作ります。 ただ作っても再起動すると消えてしまうので、ひと工夫が必要です。 インターネット接続時にいちいち mknod する手もありますが、 ここでは Linux の起動時に mknod するように仕込んでみました。
# mount -o remount,rw / ← ルートファイルシステムを書き込み可に # cd /root/etc/rc.d # cp -p rc.rofilesys rc.rofilesys.orig ←念のためバックアップ # vi rc.rofilesys ← こいつが起動時にいろいろする
rc.rofilesys には下記の 1 行目が 2 カ所あるので探して、 それぞれ下 2 行を追加します。
tar xf /root/.dev_default.tar # for usb modem mknod /dev/ttyACM0 c 166 0(ちなみにこの rc.rofilesys で /tmp の容量の設定しています。 3 カ所の "1m" を "3m" に文字列置換すると 3Mbytes にできます。)
で、再起動すると、 /dev/ttyACM0 ができているハズです。 おもむろに U-Cable がつながった REX-CFU1 を SL-C700 に挿してみます。 そして root にて、モジュール acm をロードします。
# insmod acm Using /lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/usb/acm.o
ちなみに REX-CFU1 を CF スロットから抜くときは、 (CF アイコンでの「カード取り出し」は失敗するので) いったん電源を OFF してからカードを抜くようにします。 電源 ON のままカードを抜くと OS ごとフリーズしてしまうことがあります。
ちなみにモジュール一覧はこんな感じ。
# lsmod Module Size Used by acm 5744 0 (unused) pxa_bi 21328 0 (unused) net_fd 25024 0 (unused) usbdcore 34544 0 [pxa_bi net_fd] usbdmonitor 5248 0 sl811_cs 3088 0 (unused) hc_sl811 13056 0 [sl811_cs] usbcore 50976 0 [acm hc_sl811] sharp_mmcsd_m 26208 3
ちなみに dmesg にはこんな記録が残ります。
# dmesg (省略) cf_usb0: index 0x04: Vcc 3.3, irq 39, io 0xf6000000-0xf6000007 usb.c: new USB bus registered, assigned bus number 1 hc_sl811.c: USB SL811 at f6000000,f6000001, IRQ 39 hub.c: USB hub found hub.c: 1 port detected hub.c: USB new device connect on bus1/1, assigned device number 2 ttyACM0: USB ACM device
次はダイアルアップ接続の設定です。赤外線の設定をダマして使います。
設定メニューの「ネットワーク設定」をクリックします。 「ダイアルアップ接続」を「新規作成」し、 「PPPダイアルアップ接続[赤外線]」を選択します。 編集ダイアログで下記の設定をします。
接続先タブ 名前 au-usb ← 任意の名前 ユーザー名 (ダイアルアップ用ユーザ名) パスワード ******** 電話番号 9999#05 ← U-Cable による高速パケット通信の場合 モデムタブ 初期化コマンド ATZ ← とりあえずこれだけに
上記の設定はディレクトリ /etc/ppp/peers/ に ファイル名 IRDAnnnnnnnnnn で保存されます( n は数字)。 root になって、こいつを探してエディタで開き、 デバイスファイル名 /dev/ttyACM0 を 2 行目として挿入します。 ちなみに「ネットワーク設定」で設定を再編集すると、 ここでの変更が上書きされてしまい消えてしまいますので、 デバイスファイル名の挿入をやり直してください。
# cd /etc/ppp/peers # vi IRDAnnnnnnnnnn noipdefault /dev/ttyACM0 ←これを追加!! 115200 connect '/usr/sbin/chat -s -v -t 60 ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "BUSY" "" "ATZ" OK "ATDT9999#05" CONNECT "¥¥d¥¥d"' crtscts (以下省略)
これで、いわゆる地球アイコンのクリックにより、 この接続先を選んで「接続」することができるようになります。 パチパチパチ!!
接続を切ってからの再接続に失敗するようですが、 接続を切ったあと、電源 OFF、電源 ON をするだけで、 再接続ができるようになります。 当面の回避策ということで。
ちなみに、 下記のように直接 pppd を叩いて PPP 接続することもできるようです。 私は接続の切り方までは知りません (^^;
# pppd call IRDAnnnnnnnnnn
もっと楽な方法を募集中
モジュールの自動ロード&デバイスファイル自動生成とか、 ダイアルアップ接続設定の自動書き換えとか、 電源 OFF/ON しなくても再接続できる方法とか、 間違いとか勘違いとか、なんでも教えてください。
usbmgr を使う方法
(2004-04-26 追記)
REX-CFU1 ドライバの総本山、 humorum さんのページに動作報告をしたところ、 moro さんより、 LinuxZaurus 向け usbmgr を使った、 よりスマートな方法が公開されました。 ここに引用させていただきます。
私はA5404Sを使っていますが、 高速パケット通信はどこでも使えて高速なのですが、思ったよりパケット代がかかります。 その後は usbmgrを利用してときどき使っています。 /etc/usbmgr/usbmgr.confに追加 # SUNTAC U-Cable Type A3 PS64LX vendor 0x5db product 0xb script ttyACM.sh module acm /etc/usbmgr/ttyACM.shを作成 # /dev/ttyACM0 mknod case $ACTION in add) if [ ! -f /dev/ttyACM0 ]; then mknod /dev/ttyACM0 c 166 0 fi ;; remove) ;; esac
参考文献
- ありがたや、REX-CFU1 ドライバの総本山、 ZaurusCfu1_dist ……ドライバとモジュール集と動作報告
- 同サイトの過去ログ ZaurusLog4に成功報告あり
- Zaurus SL-C700 とモデム内蔵H"の接続 ……赤外線接続ファイルを流用する方法
- Linux USB Modem Support ……デバイスファイルの作り方(英語)