emobile H12HWをDebianで使う方法

1830時〜0830時までてきとーに時間を潰しつつ,時々電話とるだけで一晩¥10kという,おいしいのかどうか微妙なラインのバイトを始めたのだが,ここで以前からやっている在宅作業可のプログラミング・バイトを並列処理すれば,間違いなくおいしいだろう!ということで,やおらemobileを買ってみた.

通話が出来て3.6Mbps以上で通信出来る機種の中でパッと見一番コンパクトということで,H12HWで即決.

Windows環境では,USBで接続すると自動でマウントされるストレージ内のインストーラをてきとーに実行していけばあっという間にネット接続できて大変便利だったのだが,Debian環境ではちょっとしたハックが必要だったため,その方法を説明する.

調査.

Using Huawei E220 with Debian/Linux

In this kernel the Huawei E200 modem is correctly identified as a composite USB device, ...

らしい.E220はベンダーが同じで,パッと見,USB接続の仕様も同じ模様.
しかし,デバイスドライバで,ベンダーID・プロダクトIDが決め打ちされているため,そのままでは"/dev/ttyUSB0"などのデバイスは認識されない.

カーネルデバイスドライバをH12HWに対応させる.

まずは2.6.24以降のLinux Kernel Sourceを入手
apt-get install linux-source-2.6.xx

合わせて,カーネルコンパイルに必要なツールもインストールしておく.

apt-get install gconfig kernel-package

ソースを展開

cd /usr/src
tar xjvf kernel-source-2.6.xx.tar.bz2


usr/src/linuxが現在のカーネルソースを指すようにしておく.

ln -s kernel-soucrce-2.6.xx linux
cd linux 


現在のカーネルの設定をインポート.

cp /boot/config-hoge .config 
/usr/src/linux/drivers/usb/storage/unusual_devs.h を変更

HUAWEIのベンダーIDは"0x12d1",H12HWのプロダクトIDが"0x1008"なので,以下の記述を追加

UNUSUAL_DEV( 0x12d1, 0x1008, 0x0000, 0x0000,
                "HUAWEI MOBILE",
                "Mass Storage",
                US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
                0),
/usr/src/linux/drivers/usb/serial/option.cを変更

冒頭に各ベンダーのプロダクトIDのマクロを定義している部分があるので,その辺りに以下を追加.

#define HUAWEI_PRODUCT_H12HW                    0x1008

同ファイル,さらに下の"static struct usb_device_id option_ids[]"の定義に以下の要素を追加.

{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_H12HW, 0xff, 0xff, 0xff) },
OHCI HCD supportを有効にしてカーネルを再コンパイル&インストール.
make gconfig

GUIによるカーネルコンパイル設定が起動.

DeviceDrivers->USB Support->Support for Host-side USB->OHCI HCD support
を有効にして,

make-kpkg --append-to-version [好きな名前] kernel-image

これで,カーネルコンパイルが開始.時間かかる.

終わったら,

dpkg -i /usr/src/kernel-image-2.6.xx[つけた名前].deb 
cd boot
mkinitrd -o initrd.img-2.6.xx[つけた名前] /lib/modules/2.6.xx[つけた名前]

で,GRUBのブートメニューにコンパイルしたカーネルが追加される.

新しくコンパイルしたカーネルで起動後,H12HWを接続すると,晴れて"/dev/ttyUSB0","/dev/ttyUSB1"というデバイスが出現する.

pppの設定.

続いてPPPの設定.
対話方式でPPPの設定が出来るように,

apt-get install pppconfig
pppconfig
Main Menu
create
Provider Name
好きな英数字
Configure Nameservers(DNS)
Dynamic
Authentication Method for provider
PAP
User Name
em
Password
em
Speed
4608000(てきとーです)
Pulse or Tone
Tone
Phone Number
*99***1#
Choose Modem Config Method
No
Manually Select Modem Port
/dev/ttyUSB0

で設定する.

pon [Provider Name]

emobileネットワークに接続される.

問題.

インターネット接続状態が"接続"にならない

このせいで,ブラウザが"オフライン作業"になったりして何かと不便.


予備知識ゼロ・カーネルの再構築も初めてなので,ベターな方法・突っ込み等貰えると大変助かります><;