D21HW on FreeBSD 8.0-BETA1

D21HW を FreeBSD 8.0-BETA1 で動かしましたよという話。
こいつに限らず、この手の HUAWEI の USB モデムには特定の人を狙い撃ちにした恐ろしい罠が存在することが判明。それは後ほど。

初めに、 u3g(4) を突っ込んでやる。

halfrack@halfrack> kldstat
Id Refs Address            Size     Name
 1   22 0xffffffff80100000 ab6770   kernel
 2    1 0xffffffff80bb7000 23680    snd_hda.ko
 3    2 0xffffffff80bdb000 747a0    sound.ko
 4    1 0xffffffff80c50000 1d70     coretemp.ko
 5    1 0xffffffff80c52000 5508     acpi_ibm.ko
 6    1 0xffffffff80e22000 787a     i915.ko
 7    1 0xffffffff80e2a000 10918    drm.ko
 8    1 0xffffffff80e3b000 1752     u3g.ko
halfrack@halfrack> 

dmesg はこんな感じ。

u3g_huawei_init:268:
usb_alloc_device:1782: Found Huawei auto-install disk!
ugen4.2: <HUAWEI Technology> at usbus4
ugen4.2: <HUAWEI Technology> at usbus4 (disconnected)
uhub_reattach_port:435: could not allocate new device!
ugen4.2: <HUAWEI Technology> at usbus4
u3g0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 2> on usbus4
u3g0: Found 2 ports.
umass0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 2> on usbus4
umass0:  SCSI over Bulk-Only; quirks = 0x0000
umass0:1:0:-1: Attached to scbus1
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
(probe0:umass-sim0:0:0:0): CAM Status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI Status: Check Condition
(probe0:umass-sim0:0:0:0): NOT READY asc:3a,0
(probe0:umass-sim0:0:0:0): Medium not present
(probe0:umass-sim0:0:0:0): Unretryable error
cd0 at umass-sim0 bus 0 target 0 lun 0
cd0: <HUAWEI Mass Storage 2.31> Removable CD-ROM SCSI-2 device
cd0: 40.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present

この手の Windows ドライバが入っている umass(4) が初めに見える USB モデムを *nix で使う場合、抜いてからすぐ差し直すというイケてない方法を取ることが多いけど、 FreeBSD 8系の USB スタックだと勝手に reattach してくれるようだ。
FreeBSD 8系は USB スタックが書き直されたのでモダンな感じなんだろね。

以下は ppp.conf でございます。 emobile の PPP アカウントは例のアレです。

default:
 set log Phase Chat LCP IPCP CCP tun command
 ident user-ppp VERSION (built COMPILATIONDATE)
 set device /dev/cuaU0.0
 set speed 115200
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
           \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
 set timeout 180
 enable dns

em:
 set phone "*99***1#"
 set authname "em"
 set authkey "em"
 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 add default HISADDR

ぶっちゃけ、初めから転がっている /etc/ppp/ppp.conf とほぼ一緒です。

で、これで繋がるはずなんですが、色々と試行錯誤しても繋がらない。ぐぐっていたらこんな情報を発見。
http://www.mavetju.org/weblog/html/00278.html

その辺の余ってる PC に Windows を突っ込んで、 emobile 謹製ツールでダイヤルアップ接続した後、引っこ抜いて FreeBSD ホストに繋いで ppp してみたらほんとに繋がりやがる。俺の 4時間を返せ!

というわけで、この手の 3G USB モデムには、とりあえず標準ファームを消したり、とりあえず *BSD/Linux に繋いでみる人が引っかかる恐ろしい罠が存在するのであった。