Tomato搭配Android手機或其他USB網卡上網

事情是這樣的,幾個小時前呆呆翰房東提供的威達網路掛了,第一個想法當然是把手機接上去用,但是呆呆翰的N16刷的是Tomato韌體,遇到了一些問題所以在這裡紀錄。

一開始,呆呆翰有找到「USB Android Tethering Modules」這篇文章,不過卻輕忽了Android有一個麻煩的機制,於是浪費了三個多小時。

這個機制是這樣的,如果你的Android手機用WiFi分享網路,筆電連線時你用的閘道是192.168.42.1沒錯。但是如果你用USB分享網路,你的閘道「肯定」不是192.168.42.1,呆呆翰一開始以為USB分享網路的閘道也是192.168.42.1,ping了老半天以為是驅動壞掉,過了許久才發現閘道根本不是192.168.42.1。

所以,如果要讓Android手機放在Tomato的韌體後面,完整的步驟如下:

1.先把手機透過USB線接上電腦,並且開啟USB網路分享的功能,注意千萬別偷懶用WiFi網路分享的功能,你會抄到錯誤的資料!
Enable Android USB tether 啟用USB網路分享功能

2.進入網際網路和共用中心,點選旁邊的「管理網路介面卡」後,點開Android手機虛擬的那張網卡:
Manage Network Interface 進入管理網路介面卡的地方

3.抄下「閘道」與「DNS」的IP:
Writedown DNS and Gateway IP 抄下閘道與DNS的IP

4.請從extras-mips2.tar.gz或是extras-mips1.tar.gz取得以下檔案,呆呆翰的N16是MIPS2的CPU,所以是extras-mips2.tar.gz。在Shibby提供韌體下載的地方可以找到這些檔案!

  • mii.ko
  • usbnet.ko
  • cdc_ether.ko
  • rndis_host.ko

取得後,可以用FTP、或是隨身碟想辦法把檔案送進IP分享器裡面。

5.把手機接上IP分享器,開啟USB網路分享功能後,輸入以下指令(前面有#號的是說明,可以不用輸入):
## 首先,要讓IP分享器支援USB網路卡才行!
insmod mii.ko
insmod usbnet.ko
insmod cdc_ether.ko
insmod rndis_host.ko
##
## 接著,我們得啟用這張網卡
ifconfig usb0 up
udhcpc -i usb0
##
## 這時候,手機會透過DHCP發一個IP給你
## 注意Lease of 192.168.42.11 obtained當中的192.168.42.11
## 這個就是你手機發給IP分享器的IP,dhcpc無法自動設定
## 所以我們要來手動設定IP、閘道了,以下用192.168.42.11示範
## 請依照你拿到的IP修改以下指令:
ifconfig usb0 192.168.42.11
##
## 接著要設定閘道,就是剛剛在Windows抄下來的閘道IP
## 依樣請記得把192.168.42.129換成你的狀況:
route add default gw 192.168.42.129 usb0
##
## 再來是DNS,通常會跟閘道一樣:
echo "nameserver 192.168.42.129" > /etc/resolv.dnsmasq
##
## 如果你的手機網路DNS常常有問題,不坊加入Google提供的DNS:
echo "nameserver 8.8.8.8" >> /etc/resolv.dnsmasq
echo "nameserver 8.8.4.4" >> /etc/resolv.dnsmasq
##
## 最後,要設定NAT:
iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE

現在,試試看你的電腦,應該可以透過你插在IP分享器上的手機上網了!

這個方法除了適用於Android手機外,也可以適用於全球一動提供的「大力玩」隨身分享器、華為的「多工網卡」,只要是用USB接上電腦,在「管理網路連線」那邊有看到「Remote NDIS」網路介面卡的,通通都可以用喔!

而另一種行動網卡,插上電腦會顯示成數據裝置,而不是「Remote NDIS」在shibby的Tomato韌體中已經直接支援了,到Basic把WAN的Type改成3G Modem後,基本上就可以用囉(除非你的網卡不被支援)。

4 thoughts on “Tomato搭配Android手機或其他USB網卡上網”

  1. 雖然您的做法是可以運作 但是不夠完美 是可以用修改NVRAM改寫WAN口到usb0 機器就會自己抓IP 這樣就不用每次開機都要執行指令連線

    nvram set wan_hwaddr=AB:CD:EF:GH:IJ:KL
    (每個手機的RNDIS模式 電腦端看到的MAC碼不同 請填入自己的MAC碼)

    nvram set wan_iface=usb0
    nvram set wan_ifname=usb0
    nvram set wan_ifnameX=usb0
    nvram set wan_ifnames=usb0
    nvram set vlan1hwname=usb0
    nvram commit

    然後打開jffs 用來放驅動
    insmod /jffs/mii.ko
    insmod /jffs/usbnet.ko
    insmod /jffs/cdc_ether.ko
    insmod /jffs/rndis_host.ko
    寫入開機執行

    1. 請問,
      這樣修改會不會造成之後WAN就只能透過USB,
      或者USB只能當成WAN,不能做檔案分享。
      (假設只有一個USB Port)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *