星期六, 11月 27, 2010

如何讓手機透過 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 拍下來就可以直接執行, 執行後可以長按指令, 選擇保存該指令以便重複執行

48 則留言:

匿名 提到...

大大我在第一步中1. [Menu]=>[設定]=>[無線與網路]=>[數據連線] 中勾選 USB 數據連線

找不到數據連線這項選項0.0
目前是用剛上手的milestion 才買沒幾天
對android不是很熟

小狼的BLog 提到...

這個官方的韌體沒辦法用歐,
這個要刷民間的自製韌體 Cyanogenmod 才能用歐,
建議新手還是先玩官方版本比較好,
自製韌體雖然有許多新的功能但是也比較不穩定,
而且刷手機會喪失保固且有刷掛的風險,
所以不熟悉前還是不要隨便玩比較好

匿名 提到...

可以請問如何使用scripter直接進行指令碼嗎?
不管是用ASE或是Scripter好像都只能用保存指令碼後複製貼上到TerminalEmulator的方式才能連上網路呢

小狼的BLog 提到...

scripter 應該可以直接執行才對阿
他保存好後點他就可以執行並且顯示結果

Jack 提到...

請問 reverse tethering 要Root?

小狼的BLog 提到...

To Jack:
需要 Root 歐,
因為要設定網路環境,
沒有 root 的話在第五步就會出錯了

匿名 提到...

MOTO XT3可用嗎?

小狼的BLog 提到...

MOTO XT3 要刷民間的自製韌體 Cyanogenmod 才能用歐

jesph 提到...

這樣確實可以透過USB上網
但是有些需要透過WIFI的應用程式在沒有連到WIFI的狀況下還是不能使用的
一定要連上WIFI才能透過USB傳輸封包
有沒有辦法讓他以為WIFI已經連接了或是其他解決方法?

柏君 提到...

狼大您好^^"
想請教XPERIA NEO要如何做?
打從Terminal Emulator輸入指令開始就都會回應我permission denied (權限被拒絕??)
因為有點深奧
所以不知道到底哪邊錯了 冏

小狼的BLog 提到...

To jesph:
這我也不知道說,
可能是先天的限制吧

To 柏君:
那是因為你手機沒有 Root,
所以才會出現這個錯誤,
合理懷疑你的手機韌體應該不是裝 Cyanogenmod 系列的韌體,
所以根本沒有取得 Root 的管理者權限所以會提示權限不足

匿名 提到...

請問一下 MOTOI XT701可以用嗎?

小狼的BLog 提到...

MOTOI XT701 可以用阿,
只要先 Root 然後裝了 Cyanogenmod 的ROM 就可以用了

匿名 提到...

您好!!!
如果是透過藍芽的話呢??
使否可達成一樣的目的?

小狼的BLog 提到...

藍芽應該也可以用,
不過我沒試過,
不過傳輸速率 2.0 EDR 似乎也才 3mbps,
可能會有點慢...

vvv421 提到...

Dear 狼大

針對A688 IMEI還原
請問您指的舊版的recovery mode是哪個檔案方便貼連接給我嗎,感謝

以下為您的解說
PS. 注意若是 A688 420 的 Rom 可能不會出現這兩個裝置, 請使用 fastboot 模式刷舊版的 recovery mode

小狼的BLog 提到...

To vvv421:
是這個
http://www.megaupload.com/?d=ONX7CZSQ
不過這是給 1.6 刷的,
如果是 2.1 刷的話很大機率是會沒辦法開機...,

匿名 提到...

請教
busybox route add default gw 192.168.0.254

出現busybox: not found

該怎麼解決呢?

小狼的BLog 提到...

這表示你的手機內沒有 busybox 這個程式,
很明顯你手機的韌體應該不是 Cyanogenmod 的韌體,
請改刷 Cyanogenmod 系列的韌體

另外如果你的韌體非Cyanogenmod 系列的韌體,
但是你很確定 kernel 有支援 Netfilter的話則,
(一般韌體預設應該是不支援才對)
可以透過在 market 上面搜尋 busybox 來安裝 busybox 這個程式

匿名 提到...

請問
2. 如果是 Windows XP 會提示安裝驅動程式,

XP竟然沒有主動提示
該怎麼強迫XP提示我呢?

小狼的BLog 提到...

沒有可能是已經安裝過了,
不然也可以到控制台內的裝置管理員內察看是否有裝置的圖示旁邊有驚嘆號,
如果有表示驅動程式可以按右鍵選擇更新驅動程式他就會要你提供驅動程式的位置了

匿名 提到...

請教~
設定完成後
電腦出現"以有限的或沒有連線能力連到網路"
手機仍然不能上網

附圖依序是
1虛擬網卡 2有限的連線 3實際網卡 4桌面右下角右鍵內容

http://www.hotimg.com/direct/j7UvsjE

小狼的BLog 提到...

有可能運氣太差跟電腦的網卡或是IP分享器的 IP 衝到了,
可以試試虛擬網卡(區域連線3)的 IP 由
192.168.0.254 => 192.168.5.254
同時手機的 IP 也由
192.168.0.1 => 192.168.5.1
改成不同網段試試,

另外也請檢查是否連線共用勾反了,
應該是你電腦網卡的網路(區域連線)要勾選分享給手機網卡(區域連線3)使用才對

嗨嗨 提到...

請問實體網卡ip/子網路/預設閘道 要設成多少呢
和手機噓你網卡一樣嗎?

小狼的BLog 提到...

實體網卡的設定就是你正常上網的設定即可,
所以每個人都不一樣,
只要你的實體網卡能夠正確連上網路即可

匿名 提到...

hi~
已經確實輸入setprop net.nds1 8.8.8.8

不過還是
ping: unknow host www.google.com

區域連線3是顯示有收到封包
http://www.hotimg.com/direct/TdfZdV6

Thanks!

小狼的BLog 提到...

我注意到你的網路連線有一個寬頻連線,
看起來應該是透過 PPPOE 撥接後上網,
所以應該是"寬頻網路"中將網路分享給"區域連線3"(手機),
而不是"區域網路"將網路分享給"區域連線3"(手機),
另外你下 "ping 8.8.8.8" 有任何訊息嗎?

匿名 提到...

ping 8.8.8.8 =>
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

另外ping www.google.com 都要等很久才會出現文字,不曉得有沒有關係?

目前已經改成寬頻連線開共用 區域連線與區域連線3不開共用

圖又來了~
http://www.hotimg.com/direct/C2YxUvU

小狼的BLog 提到...

看起來設定應該沒有錯,
ping 8.8.8.8 會只有一行表示網路設定有問題,
你下這三行命令時有出現任何錯誤訊息嗎?
su
=============
ifconfig usb0 192.168.0.1 netmask 255.255.255.0
=============
busybox route add default gw 192.168.0.254
如果輸入都沒有任何訊息跑出來設定應該也沒錯,
另外你設定完後有先斷掉寬頻連線在重新連線嗎?
還有你的韌體 kernel 有支援 Netfilter 或者是 Cyanogenmod 的韌體嗎?

匿名 提到...

hi~
經過千辛萬苦我成功了~
不過還是有些疑問

用這個方法吃網路仍有些功能會受到限制,
例如手機上android market無法下載app
這個有法可解嗎^^?

另外scripter這個軟體
執行之後出現 Running script
Please wait..
然後就不動了,
wait老半天還在wait..
根本就沒有在跑嘛Orz

小狼的BLog 提到...

嗯可以問下之前是什麼問題卡關嗎?
嗯 market 好像無解,
那個只能用 wifi 或 3G 下載,
然後 scripter 我執行正常歐,
他第一次執行命令時會要求 Root 權限,
(因為設定網路需要 Root 權限)
要按同意,
這樣才能夠正常執行

匿名 提到...

hi
我是官方韌體,因為目前沒有CM系列可以刷~
至於我的韌體有沒有支援那些功能我就不是很清楚囉。

卡關也沒找出原因
依照時間順序
用自己的XP電腦->卡關 (像您求救)
用室友的W7電腦->過關 (神奇)
用回自己的XP電腦->過關(從此過關)
再用室友的WP電腦->卡關(從此又卡住)

不過我看ANDROID疑似有內建這樣的功能0.0? 我是測不出來啦,因為xp都不提示我要安裝東西
相關說明在http://www.android.com/tether#usb

授權軟體會自動給scripter權限
所以我想應該與root無關(當然我已經root才能連線電腦)
目前是把scripter當記事本用,編輯然後全選複製到BTE貼上。

Market類軟體不能用幾乎武功全廢了,
畢竟上網上b收信這些事情直接使用電腦就好啦。
不知道有沒有電腦網路偽裝wifi的軟體= =+

另外HTC手機也有內建吃電腦網路的功能,我想他們應該是可以上Market的吧?

匿名 提到...

請問huawei u8650可以用嗎?

小狼的BLog 提到...

huawei u8650 似乎不行的樣子,
CM 韌體沒有支援 huawei u8650,
除非有辦法自行編譯 huawei u8650 的 kernel 才有可能

edwin 提到...

sony mini pro可以嗎?
步驟5要去哪裡執行??

小狼的BLog 提到...

To edwin:
mini pro 可以歐,
請先參考
http://www.mobile01.com/topicdetail.php?f=569&t=2022493&p=1
將韌體刷成 CM7 的版本,
步驟五是在 "Terminal Emulator" 這個程式內操作歐

匿名 提到...

不好意思,我是Samsung s5660的請問有適合我這手機的RNDIS驅動嘛.. 我找了好久都找不到阿..麻煩一下..

Kazzak 提到...

您好!
我的手機是 Arc + CM7
在步驟五的 busybox route add default gw 192.168.0.254
出現了 route: Applet not found
請問該怎麼辦 >< 謝謝!

小狼的BLog 提到...

To Kazzak:
這個應該是你的 busybox 版本過舊或是不正確導致,
你可以在 android market 中下載新版的 busybox 應該就能夠解決

Samsung s5660 的 RNDIS 驅動應該也能夠用上面的驅動程式(A688Tools中附的驅動是 ActiveSync中抓出來的,並非是 a688 內附的驅動)

匿名 提到...

我是用GingerXperiaV13
勾選 USB 數據連線 這選項找不到

小狼的BLog 提到...

沒有該選項就是韌體沒有支援了,
請改刷有支援的韌體再試試吧~~

匿名 提到...

usb勾選後電腦的網路介面卡多出一個但有驚嘆號無法使用怎們半驅動都安裝了

小狼的BLog 提到...

可能是你的網卡跟別張網卡衝到了,
或者是你 IP 設定的不正確導致
(顯示的連線狀態是"有限的或沒有連線能力")

匿名 提到...

我手機IP無法設定
還有我說的驚嘆號是
電腦
右鍵
裝置管理員
網路介面卡
原本有一個電腦的網路介面卡
但USB一起動後會自動安裝驅動程式但有黃色驚嘆號
而且就算我把RNDIS的資料夾刪除
他一樣會自動安裝無法使用的USB驅動
我試過按更新選擇RNDIS資料夾出現
目前找不到有更好的驅動程式
我目前無解卡好久了 = =

匿名 提到...

我手機有刷gdx 所以本身就有Cyanogenmod
可是都找不到數據連線阿??? 只有網路共用

匿名 提到...

沒有NAT/DHCP Server 的話則要打下面的指令,那去哪裡打指令阿??

Sean Ho 提到...

我的手機已經root,也是裝CM7了,
用scripter也是出現
Running script
Please wait..
然後就卡住不動了。

有没有其他方法可以用呢?
能不能存成像是windows的bat檔那樣?
謝謝~

匿名 提到...

您好,我的手機已經成功連上線了
但是,似乎無法從MARKET下載程式
請問這是正常的嗎?