以下はしばらくの間動作しますが、ブラウザのみです。
携帯電話を USB 経由で接続し、インターネット パススルーを選択すると、新しい RNDIS デバイス (usb0 または usb1) を取得する必要があります。ubuntu の場合は、/etc/network/interfaces を編集して次の行を追加します:
iface usb0 inet dhcp
iface usb1 inet dhcp
これにより、デバイスの追加時に IP が自動的に割り当てられます。ネットワーク アドレスが usb0 または usb1 に自動的に割り当てられない場合は、手動で行う必要があります。
次に、Linux コンピューターで NAT をセットアップする必要があります。次のようなもの:
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
DNS サーバーも必要です:
sudo apt-get install bind9
これは数分間機能しますが、しばらくすると電話は HTC Sync の検索をあきらめて切断します。
ルート化された電話の場合
ルート化された電話を持っている場合は、永続的に接続できます (fre3vo が機能しました)。adb で次のコマンドを実行します。
ネットワークと adb の USB モードを有効にします:
adb shell echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch
電話の usb0 デバイスに IP を割り当てます:
adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up
デフォルトルートを追加します。 IP は、Linux で usb0 に割り当てられた IP である必要があります:
adb shell route add default gw 192.168.99.1 dev usb0
DNS サーバーを設定します。これは Google のオープン DNS サーバーですが、DNS サーバーがある場合は Linux コンピューターの IP にすることができます:
adb shell setprop net.dns1 8.8.8.8
A は、すべてを自動化するためにこの小さな bash を作成しました。携帯電話を充電モードでコンピューターに接続し、この bash を実行するだけです。
#!/bin/bash
/opt/android-sdk-update-manager/platform-tools/adb shell 'echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch'
sleep 1
/opt/android-sdk-update-manager/platform-tools/adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up
sleep 1
/opt/android-sdk-update-manager/platform-tools/adb shell setprop net.dns1 8.8.8.8
get_ip ()
{
ifconfig usb0 | grep inet | awk '{print $2}' | sed 's/addr://' | grep .
}
echo "waiting for IP on computer usb0"
while [[ `get_ip` < 192 ]];do sleep 2; done
ip=`get_ip`
echo "IP adress is $ip "
/opt/android-sdk-update-manager/platform-tools/adb shell route add default gw $ip dev usb0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE