2011/05/07

逆USBテザリングでメール待ち受けができるCyanogenModパッチ(2)

環境: Ubuntu 10.10 Desktop, HTC Desire, CyanogenMod 6.1.1

前回のパッチの欠点を改善したものを作った。一応patchと、jarを固めたzipをここに置いてある。

このパッチにできることは、次のとおり。

- 一度だけAndroidとPCに設定をしておけば、USBケーブルを刺したときに通信できるようになる。
- 逆USBテザリングと通常の正方向のUSBテザリングを切り替えられる。

これで晴れて快適な逆USBテザリング生活?ができるようになった。

必要な設定は
- PC
    USB RNDIS (Ubuntuだとusb0)のPC側IPアドレスを固定アドレスにする。
- Android
    システムプロパティを設定する。
    - usb.reverse.dns1 ... DNSアドレス
    - usb.reverse.gw ... PC側のusb0のアドレス
    これらのプロパティのいずれかが空のとき、通常のUSBテザリングになる。

RNDISドライバさえあれば他のOSでも動くはずだが、試していない。


以下、設定方法。

ここに記述してあることは当然上記パッチをAndroidに焼かないと動作しないので、あしからず。

AndroidをUSBで接続したときに現れるusb0インターフェースのIPアドレスを固定する。

Ubuntu Desktopに標準インストールされるNetwork Managerとethtoolではこれができなかった。なぜなら、usb0のMACアドレスは接続するたびに変化する。Network Managerが前回接続したことのあるインターフェースであると認識せず、usb0に施したはずの設定が反映されない。

ということで、Network Managerは消して、/etc/network/interfaces での運用に変更する。
# Network Managerと共存する方法があるかもしれないが、私は上手く行っていない。


# apt-get remove network-manager



これは私の環境のinterfaces。usb0 以外の設定は、環境に合わせて変更する必要がある。
usb0 のPC側アドレスは 192.168.42.100 とする。192.168.42.0/24 のうち、192.168.42.129 以外なら他のアドレスでも良い。

PC: /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto usb0
iface usb0 inet static
    address 192.168.42.100
    netmask 255.255.255.0 



Androidで次のファイルを作成する。system partitionなのでadb remountや、recovery modeで変更する。

android: /data/local.prop:

net.dns1=
usb.reverse.dns1=
usb.reverse.gw=



Androidを再起動する。
PCからadbでシステムプロパティの値を設定する。
192.168.3.254 はDNSのアドレスなので、環境に合わせて変更する。


adb shell setprop usb.reverse.dns1 192.168.3.254
adb shell setprop usb.reverse.gw 192.168.42.100



以上で設定完了。

この状態でAndroidをUSBケーブルでPCに接続し、USBテザリングを有効にしてWebブラウザ等が使用できるかを確認する。
なお、Android Marketでダウンロードできないときは、Google Talkに一度ログインするとダウンロードが開始するかもしれない。

通常の正方向のUSBテザリングに戻したいときは、usb.reverse.dns1かusb.reverse.gwを空にすれば良い。

adb shell setprop usb.reverse.gw ""



このパッチでも不便な点がある。
それは複数の異なるLAN上のPCに接続するとき、DNSとゲートウェイの設定を変更しなければならないことだ。

0 件のコメント:

コメントを投稿