已经好久没有写关于技术的东东了,不是因为太懒,而是最近实在没做过什么有点技术含量的事,最近产品需要支持3g网卡,也就终于机会研究一下以前没有接触的东西了。其实如非工作需要,自己私底下去研究一些未接触技术的时间真的很少,因为还有其它太多太多生活的事情需要我们去处理,要做一名懂得享受生活程序员。
言归正传,开始干活!
本文主要涉及的是如何在openwrt的基础上添加3G和usb模块,并非像网上大部分文章提到的只是部分热门路由如703N、h618b、rg100a这些已有大神编译好的固件,然后再此基础上再修改脚本。简而言之,就是只要你的硬件平台可以跑openwrt,支持usb接口,就可以自己编译出支持3G网卡的Openwrt固件,对于网卡的要求还是有的,我这里使用的是MF190,可以直接识别为modem,如有需要usb_modeswitch,网上大把教程,也就不多提了。Openwrt源码的下载和编译这一part直接跳过(我想研究到这一块的也都知道如何下载和编译源码了吧),本文所用的openwrt版本是trunk,内核版本为3.6.8。
1、进入图形配置界面,选择支持usb模块所需要的库(kmod-usb2 kmod-usb-core kmod-usb-ohci kmod-usb-serial kmod-usb-serial-options libusb kmod-usb-acm usb-modeswitch usb-modeswitch-data ),具体位置为:
2、选择3G拨号软件(chat,comgt,pppd),这几个东西折腾了我一个下午才搞明白它们的关系。首先,comgt是拨号用的,我们可以用comgt -d /dev/ttyUSBx 来测试3G SIM卡的状态;chat是保存命令的脚本,在pppd的options配置文件中,需要把如图所示:
chat的位置(直接在network下,我这已经默认选了):
comgt位置(Utilities):
pppd位置(这个是用来拨号的进程,也是在network下的):
3、选取了以上所需要的库,我们就开始Make吧~~~
make完之后我们就会得到:内核和文件系统,和需要的各种软件(路径 trunk/bin/xx/packages)啦!!因为我是以M的方式编译各种库的,所以有些软件需要在烧写内核和文件系统后再安装(我需要安装的comgt、pppd)。
下图是需要安装的一些库和界面,反正我在研究阶段是手动都安装了一遍 T_T~~~~
4、安装上述东东之后,就会像网上各种教程所说的那样了~~~如:/etc/charscipt / /etc/ppp /etc/usb_modeswtich.d/ 等文件夹。
#########################################我是分割线###########################################################
固件编译完毕!进入应用阶段~~~~
1、插上3G网卡(MF190)后,系统如果打印出如下信息就可以识别到网卡啦!ttyUSBx就是我们的网卡设备接口啦~~~
2、打开/etc/ppp/options 文件,修改为如下(每个网卡情况不同,需根据自己的网卡配置,这里要说的是logfile和connect,logfile这个文件在我调试过程中帮助了我不少,大家可以通过这个log了解到整个拨号的过程,以便调试。connect是指定chat脚本的位置,我是在原有默认的脚本上修改的,所以是在/etc/chatscript/3g.chat 下,当然你可以根据你自己的喜好对它进行各种命名。),具体选项意思可参考: http://www.cnblogs.com/doctorqbw/archive/2012/06/19/2555063.html
3、打开/etc/chatscript/3g.chat,这里可能根据运营商的不同而需要做更改,移动的是”cmnet“,电信是”ctnet“,联通是”3gnet“,目前我只测试了联通的网卡,至于其它两家运营商嘛,移动的3g速度不行,估计不考虑,电信的应该会购入了(采购过程还需”领导“多多支持吖!比如帮忙填个表什么的^_^ !)。联通的设置如下:
4、打开 /etc/config/network添加3g网口,在调试过程中建议不要添加,可以手动命令pppd来进行拨号,修改network文件的同时还需要修改firewall才可以成功让系统重启后自动启动。
5、如果是在调试过程,利用pppd来拨号后,可以通过logfile 来查看拨号过程,下图是我成功拨号后的log,可以看到已经获取了IP地址和DNS了,网卡名字是由network配置文件中的interface来决定的:
6、至此,我们已经可以成功拨号,并且可以在重启时自动拨号了~~~这就够了么?不!!我们还需要让网卡插入后可以自动拨号!说起来好像很智能,其实很简单,只是需要在热拔插的配置文件中添加网口的启动即可!打开etc/hotplug.d/usb/10-usb,配置如下:
搞定!!!收工!!