4G上网卡一般为双对外通讯口,一个是串口、一个是USB。

  但是基于串口的常用波特率为115200,速度过于底下,所以大多使用USB。

  1)一般来说常用ppp拨号方式,ppp拨号方式分为应用层pppd与驱动层pppk。

    驱动层pppk通讯主要接口为ppp_async_send与tty->ldisc->receive_buf,并调用tty驱动,而tty驱动转为USB则需要针对GSM/CDMA的usb_wwan、option驱动,而usb_wwan驱动又依赖于usb-serial基础转换。此时驱动已经将通讯转换为USB。

    应用层pppd主要以option脚本、chat脚本、ppp应用,进行发送AT命令,拨号上网。

  2)当不使用ppp拨号方式,而是使用NDIS拨号,那么ppp软件没有了,就需要替代他的东西,这时候,需要三样东西:Rmnet驱动 + dhclient + minicom/echo命令。当然Rmnet驱动也是USB总线驱动。而由于发送AT命令是以串口发送,所以依旧需要usb-serial、usb_wwan、option驱动进行串口USB转换。

  值此特别声明:USB设备驱动架构:分为HID、CDC、mass storage,而Rmnet是非标准的Rmnet驱动。NDIS是windows提出的网络驱动接口规范,linux下并没有。

  以下就是USB总线方式的Rmnet驱动流程:

  • 注册驱动  :module_init(NDIS_Init);
  • 创建类   :Rmnet_class= class_create( THIS_MODULE, "Rmnet_class" );
  • 注册USB设备:usb_register(&usb_drv_Rmnet);
  • 定义    :static struct usb_driver usb_drv_Rmnet{...};
  • 探针函数

    int Rmnet_Probe( struct usb_interface * usb_interf, const struct usb_device_id * usb_devid)

    •   获取端点信息

      • cur_altsetting->desc.bInterfaceNumber
      • cur_altsetting->desc.bNumEndpoints
      • cur_altsetting->endpoint

  

未完待续....

4G上网卡NIDS拨号之Rmnet驱动的更多相关文章

  1. 在ARM-linux上实现4G模块PPP拨号上网【转】

    本文转载自:http://blog.csdn.net/zqixiao_09/article/details/52540887 在ARM平台上实现4G模块的PPP拨号上网,参考网上的资料和自己的理解,从 ...

  2. 4G模块*99#拨号上网

    操作系统:win10 模块型号:quectel EC20 CE FAG 4G模块拨号步骤如下: 1. 打开网络和internet设置 2. 选择“拨号” 3. 选择“设置新连接” 4. 选择“拨号调至 ...

  3. android下4G上网卡

    架构: APP Call Trachker/SMS Dispatch/Service Tracker/Data Tracker ------------------------------------ ...

  4. openwrt固件支持3G和4G上网卡

    http://wiki.openwrt.org/doc/howtobuild/wireless-router-with-a-3g-dongle Building image with support ...

  5. 树莓派 4G模块 PPP 拨号 NDIS 拨号

    资料参考:树莓派使用4G模块(华为ME909s-821)亲身尝试的可行方法(上)

  6. dhcp源码编译支持4G上网卡

    1. tar xvzf dhcp-4.2.5-P1.tar.gz 2. ./configure --host=arm-linux ac_cv_file__dev_random=yes 3. vi bi ...

  7. ROS-RouterOS hAP ac2+usb 4G上网卡+小米新推的无线上网卡是绝配

    月租9元.每日缴1元.上网不限量 Model Tested RouterOS version Format Passthrough support TechnologiesZTE MF823 v6.8 ...

  8. 嵌入式Linux系统---ppp拨号,4G模块上网【转】

    本文转载自:http://blog.csdn.net/qq562029186/article/details/65438553 4G模块PPP拨号上网 方法1 所需文件: xxx-chat-conne ...

  9. linux设备驱动归纳总结(一)内核的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...

随机推荐

  1. windows进程中的内存结构(好多API,而且VC最聪明)

    在阅读本文之前,如果你连堆栈是什么多不知道的话,请先阅读文章后面的基础知识.   接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据.那么这些变量在内存中是如何存放的呢?程序又是如何使用这 ...

  2. leetcode面试准备:Contains Duplicate I && II

    1 题目 Contains Duplicate I Given an array of integers, find if the array contains any duplicates. You ...

  3. Tomcat J2ee 发布步骤

    1.找到要发布的工程,并发布到本地tomcat下,测试完全没有问题,找到tomcat下webapps下 并找到该工程,进入该工程目录,全选添加到  drivingSchool.zip 或  drivi ...

  4. 使用vs自带的wcf配置工具

    服务和行为是并列的 对应到配置文件中  wcf的配置在system.serviceModel中 可以有多个服务 一个服务会有一个主机以及多个终结点 主机包含多个基址 baseAddress 终结点,由 ...

  5. constant

  6. ArcGIS_系列视频教程::精品大放送

    转自:http://www.cnblogs.com/gispeng/archive/2008/11/28/1342758.html     ArcGIS_系列视频教程::精品大放送 文件名: ArcG ...

  7. $(function(){})里面不能声明定义函数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Fiddler基本用法以及如何对手机抓包

    一.Fiddler是什么? ·一种Web调试工具. ·可以记录所有客户端和服务器的http和https请求. ·允许监视.设置断点.修改输入输出数据. 官方文档(英文):http://docs.tel ...

  9. UVA 4728 Squares(凸包+旋转卡壳)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17267 [思路] 凸包+旋转卡壳 求出凸包,用旋转卡壳算出凸包的直 ...

  10. cout internal

    cout internal */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Consola," ...