OpenWRT做4G随身WiFi


突然生出了造一个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

TargetVendorTargetProduct分别是切换后的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是可以的。

QQ20160910-5.png

接下来是打开luci配置,首先先新建一个interface,类型选UTMS/GPRS/EV-DO

QQ20160910-6.png

然后设置接入点(APN)为3gnet(联通),拨号号码是*99#(联通),账号密码留空(联通),类型选UMTS/GPRS。接入点和号码以及账号密码,每个运营商都有自己的一套,电信与移动请自行搜索。

QQ20160910-7.png

最后去防火墙设置里,把上网的网卡加入wan区域。最后保存设置,就可以上网了。

QQ20160910-8.png

以上。

IMG_20160909_200015.jpg


协议: 本文根据 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License 进行授权。

标签: openwrt


  • 这篇文章一条评论也没有……

撰写新评论

account_circle
mail
insert_link
mode_comment