如何讓手機透過 USB 上網 (Reverse USB Tethering)

理論上只要手機的 kernel 有支援 Netfilter 都可以透過USB上網,

A688 之前有放出 kernel 的 source 所以許多之前沒辦法做的功能都被一一開啟,

其中一個就是讓手機透過 USB 使用電腦的網路,

這樣就不需要使用 3G 上網或是無線 AP 了,

只需要一條 USB 線連結可以上網的電腦即可,

我只有在 windows XP 和 windows 7 X64 的環境下試過,

不過其他 windows 環境應該都可以用才對,

這篇是教如何在 Windows 上使用的,

cwhuang 大大有寫了一篇

Reverse USB tethering 這篇是給 linux 使用的,

如果是使用 linux 的可以參考上面那篇

需求:

1. Android 手機 (Kernel 支援 Netfilter, Cyanogenmod ROM)

注意需要 Root 權限, 且 Kernel 需要支援 Netfilter 一般官方版的 Rom 都不支援,
所以需要自己重新編譯 kernel (不推薦難度比較高) 或是安裝 Cyanogenmod ROM,
安裝方法可以參考
http://snowwolf725.blogspot.com/2011/02/a688.html
雖然是針對 A688 但是其他 android 的手機大部分都相同

2. USB 連接線

3. 手機安裝 Scripter 程式(非必要, android market 可下載)

4. 有支援 NAT,DHCP 的 無線 AP/Switch/Router/小烏龜 (非必要)

觀念解說:

Eth0 「區域連線」, RNDIS 「區域連線3」, USB0

Eth0 是電腦原本的網卡, 而 RNDI 是手機偽裝出來的網卡,

透過在 Eth0 中將網路分享給 RNDIS 達到讓手機上網的目的,

所以封包會經由 USB0 送給 RNDIS 再送給 Eth0

images1

設定:

1. [Menu]=>[設定]=>[無線與網路]=>[數據連線] 中勾選 USB 數據連線

device

2. 如果是 Windows XP 會提示安裝驅動程式, 選擇 C:\A688_Tools\RNDIS\ 就可以安裝好驅動程式,此時電腦的網路連線中會看到多出個網路連線, 其中」區域連線」是電腦原本的連線, 」區域連線3」 則是手機的虛擬連線

A688 Tools 下載: A688/A60/A88 資源收集

Revers_USB_Tether

3. 右鍵點選」區域連線」選內容, 然後在跳出的對話視窗中選擇 進階(XP)/共用(Win7)標籤頁, 然後勾選 「網際網路連線共用」, Win7 還要選擇要共用的連線」區域連線3」 (手機的連線)

PS. 「網際網路連線共用」需要電腦中至少要有兩張以上的網卡才會出現這個選項,
一張是你電腦上的網卡,一張是你手機模擬出來的網卡,
如果沒有的話, 問題應該是出在你沒有在手機中開啟 “USB 數據連線” 這個功能,
或是沒有正確安裝好手機網卡的驅動程式(也就是那個 RNDIS),

Revers_USB_Tether2

Revers_USB_Tether3

4. 如果沒有 NAT/DHCP Server 的網路裝置的話,還要設定手機連線的 IP

(1)選擇 TCP/IP4 選內容

Revers_USB_Tether4

(2)將 IP 設定成 192.168.0.254, 網路遮罩設成 255.255.255.0 , DNS,閘道 不用設定, 這邊的 IP 是隨意設定, 只要不要和電腦或是其他裝置衝到即可

Revers_USB_Tether5

5. 在手機端設定網路

如果有 NAT/DHCP Server 的話只要打:

su

netcfg usb0 dhcp

這樣手機就可以使用網路了, 在手機端要輸入指令可以安裝 「Terminal Emulator」 (Android market 有/ Cyanogenmod ROM 有內建)

cmd

如果沒有 NAT/DHCP Server 的話則要打下面的指令, 這邊的 162.168.0.1 是手機端的 IP 不能跟其他裝置衝到, 且必須與上面的」區域連線3」 中的 IP 相同網段

su

ifconfig usb0 192.168.0.1 netmask 255.255.255.0

busybox route add default gw 192.168.0.254

6. 透過下面的指令測試網路

ping 8.8.8.8

ping www.google.com

如果第一個測試都失敗的話應該是上面的設定沒設定好,

如果第一個可以過, 但是第二個可以過的話代表 DNS 沒設定好,

需要多下下面這個指令 8.8.8.8 是 Google 的 DNS IP

setprop net.dns1 8.8.8.8

7. 基本上做完上面六個步驟就能用手機上網了,但是每次都要打指令會很累, 如果有裝 scripter 這套軟體的話, 就可以把指令存起來, 這樣每次要用網路只要點一下就可以使用了, 只要先到

http://keremerkan.net/qr-code-and-2d-code-generator/

Select a Code Action: 選擇 Free Formatted Text

把上面的指令貼上去就可以做出 QR code ,

下面是我預先做好的 QR code (無 NAT/DHCP 版本)

code

透過 scripter 拍下來就可以直接執行, 執行後可以長按指令, 選擇保存該指令以便重複執行