突然生出了造一个4G随身WiFi的冲动,于是搞了一个硬改过的WR702N,和一个USB联通4G网卡来玩。
首先先得有一个OpenWRT,装上需要的软件包。
opkg install chat comgt kmod-ppp kmod-usb-serial kmod-usb-core kmod-usb-2 libusb-1.0 luci-proto-3g luci-proto-ppp ppp pppd usbutils libpthread librt zlib
关于usb-modeswitch,我们得专门编译,虽然官方也有,但是那个包实在是太不靠谱了,亲测。这里专门推荐一个GitHub repo:https://github.com/gzhechu/openwrt-usb-modeswitch-official。这里就不讲OpenWRT及packages的编译了。
装好usb-modeswitch后用usb_modeswitch -h
调出帮助。看网卡的venid和proid用lsusb
。usb-modeswitch的库还是比较全的。我是适用Sierra模式,所以直接通过usb_modeswitch -S -v 0x05c6 -p 0x92fe
就转换成了Modem模式。
原来是
root@SohaMAP00:~# lsusb
Bus 001 Device 002: ID 05c6:92fe Qualcomm, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@SohaMAP00:~# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=, 480M
转换后
root@SohaMAP00:~# lsusb
Bus 001 Device 003: ID 05c6:9201 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@SohaMAP00:~# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 3, If 1, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 3, If 3, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 3, If 4, Class=Mass Storage, Driver=, 480M
既然这么成功,就在/etc/usb_modeswitch.d/
下添加一个venid:proid
的文件,这里的id是没切换模式之前的,比如我的05c6:92fe
文件内容:
# unknown band card
TargetVendor=0x05c6
TargetProduct=0x9201
SierraMode=1
TargetVendor
和TargetProduct
分别是切换后的venid和proid。SierraMode表示使用下面的SierraMode激活Modem。
这个配置文件就可以让你插上USB后自动切换模式了。
usb-modeswitch支持以下模式
-H, --huawei-mode
-J, --huawei-new-mode
-S, --sierra-mode
-O, --sony-mode
-G, --gct-mode
-N, --sequans-mode
-A, --mobileaction-mode
-T, --kobil-mode
-L, --cisco-mode
-B, --qisda-mode
-E, --quanta-mode
如果自带模式不能成功,建议你用venid和proid去Google看看,有没有解决方案。
然后去编辑/etc/modules.d/usb-serial
,第一行应该有个默认的usbserial
,你可以直接在后面补全代码:usbserial vendor={venid} product={proid}
。比如上面提到我的在更换模式以后是05c6:9201,那么我的usb-serial文件就是
usbserial vendor=0x05c6 product=0x9201
重启路由器以后切换模式,ls /dev | grep tty
就可以找到ttyUSBx了。
为了确定哪个tty是可以用的,你需要用comgt -d /dev/ttyUSBx
试过每个tty,如果可以成功注册网络的话,那么这个tty是可以用于拨号的,比如我只有1和2是可以的。
接下来是打开luci配置,首先先新建一个interface,类型选UTMS/GPRS/EV-DO
然后设置接入点(APN)为3gnet(联通),拨号号码是*99#(联通),账号密码留空(联通),类型选UMTS/GPRS。接入点和号码以及账号密码,每个运营商都有自己的一套,电信与移动请自行搜索。
最后去防火墙设置里,把上网的网卡加入wan区域。最后保存设置,就可以上网了。
以上。