使用3G上网卡(或称为3G modem) 1.选型:选择linux上支持的3G上网卡 更多型号可参考: usb_modeswitch的device_reference.txt 2 使用步骤(以windows为例)a. 接上发现移动硬盘,ZTEMODEM里面有安装程序AutoRun.exe和驱动程序
b. 安装完后,移动硬盘消失; c. 发现新硬件,自动安装好驱动程序后,发现2个串口(一个用于发AT命令,可通过COM 8发短信,另一个是诊断端口,通过COM6诊断3G上网卡)和一个modem
(资料图片仅供参考)
d. 运行程序即可拨号上网 zeroCD: 3G上网卡自带程序,接到PC后先作为移动硬盘使用,安装程序后切换为modem 对于Linux使用过程:a. 接上后切换mode: usb_modeswitch b. 安装驱动程序: linux内核自带, 会出现3个ttyUSB0,1,2(其中一个用于mode,另外两个其中一个用于收发AT命令,另外一个用于诊断) c. 拨号上网:pppd 3 交叉编译应用程序并测试 (1)配置内核(内核目录下键入make menuconfig)-> Device Drivers(把PPP相关驱动选上编译进内核) -> Network device support <*> PPP (point-to-point protocol) support <*> PPP BSD-Compress compression <*> PPP Deflate compression [*] PPP filtering <*> PPP MPPE compression (encryption) (EXPERIMENTAL) [*] PPP multilink support (EXPERIMENTAL) <*> PPP over Ethernet (EXPERIMENTAL) <*> PPP support for async serial ports <*> PPP support for sync tty ports -> Device Drivers(由于我们出现的是ttyUSB0,1,2,所以要配置USB,输入M配置称模块) -> USB supportUSB Serial Converter supportUSB driver for GSM and CDMA modems(在网上搜索3G上网卡要用到的文件是option.c,对应的配置项是CONFIG_USB_SERIAL_OPTION,需要在内核中搜索并配置编译成模块,看提示信息prompt部分)
如果比较难看出来的话,可以先去看源代码
打开Makefile,搜索里面的usbserial,需要配置项CONFIG_USB_SERIAL
如果知道某个文件,如usb-serial.c,需要使用它,可以把同目录下的Makefile打开,查看usb-serial.o对应哪一个配置项。在make menuconfig搜索这个配置项
make uImage && make modules//编译内核并编译所有的模块驱动 应用程序源码:(usb_modeswitch) http://www.draisberghof.de/usb_modeswitch/ http://www.libusb.org/ ftp://ftp.samba.org/pub/ppp/ (2)交叉编译:libusb: usb_modeswitch:(依赖于libusb库) ./configure --host=arm-linux --prefix=$PWD/tmp//--host=arm-linux 运行环境 --prefix=$(pwd)/_install 安装目录,$PWD表示当前目录
make make install 把头文件和库复制进交叉工具链里(在temp目录下) sudo cp libusb.h /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib(*表示所有文件,d表示原来是链接文件吧它作为链接文件拷贝进去)
...-f:为强制 (force) 的意思,若有重复或其它疑问...-r:递归持续复制,用于目录的复制行为 把库复制到根文件系统的lib目录下 sudo cp *so* -d /work/nfs_root/fs_mini_mdev_new/lib/ usb_modeswitch:(依赖于libusb库) 修改Makefile CC = arm-linux-gcc //修改编译器 LIBS = -lusb-1.0 //-l用于指定依赖的库,这里是usb-1.0 make DESTDIR=$PWD/tmp //指定安装路径 make DESTDIR=$PWD/tmp install ./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。 make是用来编译的,它从Makefile中读取指令,然后编译。 make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。 cd tmp sudo cp * -rfd /work/nfs_root/fs_mini_mdev_new usb-modeswitch-data-20131113:(3G上网相关的配置文件 usr/share/usb_modeswitch) make DESTDIR=$PWD/tmp install cd tmp sudo cp * -rfd /work/nfs_root/fs_mini_mdev_new pppd:(ppp-2.4.5.tar.gz) 修改这6个文件, "$(INSTALL) -s"改为"$(INSTALL) "(也就是去掉-s) chat/Makefile.linux pppd/plugins/radius/Makefile.linux pppd/plugins/rp-pppoe/Makefile.linux pppd/Makefile.linux pppdump/Makefile.linux pppstats/Makefile.linux ./configure --host=arm-linux --prefix=$PWD/tmp //配置运行环境和当前安装目录 make CC=arm-linux-gcc //指定编译器(默认使用是PC机里面的编译器) make CC=arm-linux-gcc install cd tmp sudo cp * -rfd /work/nfs_root/fs_mini_mdev_new 使用: A. 以mf637为例 参考 HI3515海思开发板移植3G模块笔记 - 倔强的晓奇 - 博客频道 - CSDN.NET.htm http://blog.csdn.net/alangdangjia/article/details/9413009 a. 用新内核启动开发板复制驱动: sudo cp drivers/usb/serial/*.ko /work/nfs_root/fs_mini_mdev_new//*.ko代表全部的驱动程序 b. 接上3G上网卡,用lsusb查看VID/PID
(VID(Vendor ID,供应商识别码)和PID(Product ID,产品识别码)) lsusb Bus 001 Device 002: ID 19d2:2000 c. 使用usb_modeswitch切换工作模式 它需要一个配置文件,使用上面得到的VIP/PID在device_reference.txt里找到一段配置值, 写入一个文件mf637.cfg(这里cfg是配置文件后缀) 把它放到开发板的/etc目录 usb_modeswitch -c /etc/mf637.cfg
执行后查看,发现PID发生变化,因为之前那个是默认的PID, 而现在切换后的PID d. 安装驱动程序insmod usbserial.ko // insmod usb_wwan.ko insmod option.ko
查看设备节点 e. 用pppd拨号对于mf637: 修改/etc/ppp/peers/wcdma-dailer配置文件(拷贝到文件系统), 使用/dev/ttyUSB2(如果第0个串口不行,改成第1或第2个串口,共3个串口) pppd call wcdma-dailer & //调用联通3G的模块的命令,&表示在后台运行
cp /etc/ppp/resolv.conf /etc/resolv.conf //DNS写在/etc/ppp/resolv.conf里面 ping news.qq.com //ping网址 B. 以EW65为例在device_refeence.txt里选取一段存为ew65.cfg
板上接入EW65后执行:usb_modeswitch -c /etc/ew65.cfg 修改/etc/ppp/peers/wcdma-dailer, 使用/dev/ttyUSB0 pppd call wcdma-dailer & cp /etc/ppp/resolv.conf /etc/resolv.conf ping news.qq.com 注意:
#pppd call wcdma-dailer 这个是调用联通3G的模块的命令 #pppd call evdo-dailer 这个是调用电信3G的模块的命令 #pppd call td-dailer 这个是调用移动3G的模块的命令 /etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。 resolv.conf的关键字主要有四个,分别是: nameserver //定义DNS服务器的IP地址 domain //定义本地域名 search //定义域名的搜索列表 sortlist //对返回的域名进行排序 下面我们给出一个/etc/resolv.conf的示例: domain 51osos.com search www.51osos.com 51osos.com nameserver 202.102.192.68 nameserver 202.102.192.69 最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。 nameserver表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。 domain
声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。 search
它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。 domain和search不能共存;如果同时存在,后面出现的将会被使用。 sortlist
允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。
、dns 代理原理:如以下网络拓扑图:
2.1 给PC输入域名,如给PC浏览器输入域名,产生DNS请求。
2.2 如果PC的DNS 服务器IP是ROUTER 的IP,并且ROUTER支持DNS 代理并开启,那么PC产生的DNS请求会发送给ROUTER.ROUTER的处理进程会该请求。
2.3 ROUTER的处理进程首先查询自身的缓存/etc/hosts文件是否有该域名的IP,如果有则回复DNS。如果没有根据/etc/resolv.conf的配置把该DNS请求转发到上一级DNS SERVER ,由上一级DNS SERVER 处理。
DNS:是做域名解析的。我们平时所输入的网址,都是某台服务器的主机名,比如www.BAIDU.COM,主机之间通讯是通过IP地址访问的,这个是有需要某个机制,把地址解析成名字,因为IP地址是一串数字,难以记忆,而名字却很好记,这个就是DNS所要完成的,就好像,身份证上面的号码是IP,而名字就是主机名一样。比如,你要访问www.BAIDU.COM,从你输入网址开始,到网页打开,整个的过程如下:(一切所需的IP地址都是正确的)1. 你的请求通过你设置的网关地址(网关地址就是路由器内网IP地址)发到公网的DNS服务器(这个DNS服务器是在你网卡设置中设置的)。2. DNS服务器收到请求之后,查找自己的数据库,寻找你所输入的www.BAIDU.COM这台服务器的地址是什么,找到之后,再把找到的IP地址告诉你这个客户端。3. 客户端收到了DNS服务器的回应,获得了www.BAIDU.COM这台主机的IP地址,然后再向这个IP地址发出请求,当然,也是通过网关出去,最终,你将打开www.BAIDU.COM这个网页。这所以出现你的这个提示,应该是你的网卡设置上没有设置DNS造成的,或者DNS设置失败。你最好先电话咨询一下你们当地的运营商,问问DNS的IP地址是多少,然后再在网卡里设置一下。在你的主机上,右键点击网上邻居--属性,再右键点击他的网卡(一般都是一个叫本地连接的图标),再选属性,出现一个窗口,在“此连接使用下列项目”的下面选择“internet协议(TCP/IP),双击这个选项,你会看到一个设置IP地址的对话框。里面有“使用下列DNS服务器”,在这里填写你被告知的DNS地址就可以了