ndis拨号软件 linux,嵌入式linux系统下NDIS拨号

一、USB端口信息

U8300C模块USB会枚举出6个逻辑端口,他们的枚举顺序、端口功能、端口名称如下表所示:

a36f11ea576298db6b90ae967e226258.png

二、驱动集成

1.内核配置:

make menuconfig 到内核时:

Device Drivers  --->

USB support  --->

USB Network Adapters  --->

Multi-purpose USB Networking Framework

USB Serial Converter support  --->

USB Serial Converter support

[*]   USB Generic Serial Driver

2.内核ndis驱动加入:

在linux-2.6.21.x/drivers/usb/目录下创建ndis_driver目录,

复制“U8300C/version2.13/ndis_driver/src”目录下所有源文件到新建的ndis_driver目录下。

修改ndis_driver/Makefile 文件,内容为:

obj-m +=  lc_ether.o

lc_ether-objs :=  qmi_oper.o qmi_util.o lc_cdc_ether.o

在linux-2.6.21.x/drivers/usb/Makefile 文件中添加内容:

obj-m += ndis_driver/

内核编译时会生成lc_ether.ko拷贝到开发板去。

三、拨号APP修改编译:

复制”U8300C\version2.13\ndis_app“(XP) 目录到 CB50A_SDK/source/user/目录下。

修改build.sh文件中的CROSS_COMPPILE=/opt/crosstool/mipsel-linux/bin/mipsel-linux-

注根据自己电脑上的编译路径改。

修改Makefile 中的install规则。到自己安装目录。

修改ndis_manager.c 文件中的udhcpc 支持:如下:

第一处:

194 if(current_status == NDIS_CONNECTING)//new connected to internet.

195     {

196          cprintf("connected to internet success, .\n");

197          system("/sbin/udhcpc -i wan0 -s /sbin/udhcpc.sh -p /var/run/udhcpc.pid&");//to get ip/dns/gatway

198          //system("dhclient wan0&");

199     }

第二处

278     }else

279     {

280          cprintf("ndis_get_status success.\n");

281          if(NDIS_CONNECTED==pipinfo.i32status){

282                cprintf("connected to internet success, .\n");

283           system("/sbin/udhcpc -i wan0 -s /sbin/udhcpc.sh -p /var/run/udhcpc.pid&");//to get ip/dns/gatway

284             break;

285          }

286     }

进入当前目录编译运行:sh build.sh ,生成ndis_manager、lib_ndis/libndis_dail.so、profile.ini拷贝到开发板。

关于EVDO和CDMA(电信3G)时查询信号强度时是不能用at+csq 命令,听说这个是电信3G的一个标准,需要用AT^HDRCSQ?命令查询。

四、USB串口驱动过滤NDIS接口

由于USB串口跟DNIS都属于非标准CDC设备,需要放置NDIS口被USB串口驱动加载而导致无法正常加载NDIS驱动,解决办法如下:

对于不用option直接用usb-serial.ko文件的用户需要在usb-serial.c中的

usb_serial_probe()中加入以下

/*************LONGSUNG **************************/

if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1c9e) &&

(le16_to_cpu(dev->descriptor.idProduct) == 0x9b05)) {

if(interface->cur_altsetting->desc.bInterfaceNumber == 4){

printk(KERN_INFO"Discover the 4th interface for U8300C NDIS.\n");

mutex_unlock(&table_lock);

return -ENODEV;

}

}

生成usbserial.ko,modprobe usbserial vendor=0x1c9e product=0x9b05,不要加载option.ko,否则/dev/ttyUSB*无响应。

8d81e38f337b5ccf5565c402788e43a1.png

跳过4口留给NDIS,否则NDIS驱动加载是错误。

五、加载NDIS驱动

d381438766fa1a43e1f68d4a1dec89ae.png

如果正常#ifconfig -a可以看到wan0这样一个网卡,#ifconfig wan0 up 起网卡

配置拨号文件 profile.ini

[profile]

apn=UNINET

usrname=

pwd=

auth=0

不同的运营商只修改apn;电信:CTNET,移动:CMNET,联通:UNINET。

六、AT命令测试

#cat /dev/ttyUSB1 &

#echo “AT+LCTSW” >/dev/ttyUSB1 //软件版本查询

SoftwareVersion: QA30002.1.3_MV11

InnerVersion: QA30002_4534_1.1.4_L0602_EFS2.0

AP: QA30002_4534_0.0.13_L0602_MV11

Ok

#echo “AT+CSQ” >/dev/ttyUSB1 //信号强度查询

+CSQ: 25,63

Ok

#echo “ATE0” >/dev/ttyUSB1

OK

#echo “AT+PSRAT” >/dev/ttyUSB1 //模块注册的网络

+PSRAT: LTE TDD

OK

#echo “AT+CREG?” >/dev/ttyUSB1  //注册信息

+CREG: 0,1

OK

#echo “AT+MODODREX?” >/dev/ttyUSB1 //网络优先级

+MODODREX: 11

OK

//AT+MODODREX=11 //网络优先级11表示(4G->3G->2G)

#echo “AT+COPS?” >/dev/ttyUSB1  //运营商查询

+COPS: 0,0,"CHINA  MOBILE",7

OK

#echo “AT+CPIN?” >/dev/ttyUSB1 //sim卡是否就绪

+CPIN: READY

OK

#echo “AT+CIMI=?” >/dev/ttyUSB1 //sim卡是否就绪

OK

七、运行程序测试

以管理员权限进行NDIS拨号,ndis_manager -c

14bda23ae4f4f6c3a15ae0e9b1e61427.png

#ifconfig  wan0

0733606b75539c409bb9d69573459f26.png

#ps -ef

a67ffade15a9d0d62f622f2db4bc781f.png

667012324493d0c1e4ed93d222725217.png

OK 到此NDIS拨号上网完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值