一种通用的3G-USB上网卡用户态驱动方法及实现曾庆峰陈援非刘向前朱珍民中国科学院计算技术研究所,北京市100190摘要:本文通过对Windows环境下3G-USB上网卡设备初始化过程的研究分析,提出了一种通用的USB移动上网设备在Linux平台下的用户态驱动方法,并用多种3G-USB上网卡在龙芯上网本Yeeloong8089上进行实验验证,实验结果表明该方法有效且性能优良,理论上该方法可以解决此类设备对多种标准(包括TD-SCDMA、WCDMA、CDMA2000、GPRS、CDMA等)及其多个品牌的模块在Linux平台上的兼容性问题.
关键词:TD-SCDMA;3G;用户态驱动;龙芯1引言目前,第三代移动通信(3G)技术正在我国全面推广应用.
上网本(Netbook)由于其低价格、超便携的特点,已经成为3G的主流应用平台之一,市场上主流Netbook都采用了Linux作为其操作系统,但绝大部分3G上网卡仅支持Windows操作系统,因此在上网本上实现Linux下的通用3G上网卡用户态驱动成为必需.
为了在最新款Loongson2F芯片的龙芯上网本Yeeloong8089上使用3G-USB上网卡进行拨号上网,使龙芯支持国产TD-SCDMA标准,体现龙芯上网本的移动性和多模网络连接能力,我们对三款TD-SCDMAUSB上网卡、一款CDMA1x无线网卡和一款CDMA2000无线网卡进行了研究.
研究的主要内容包括驱动方法设计、初始化分析和拨号上网三个部分,通过编程开发、各种调试工具和开源软件[1][2][3],实现了五款(参数可参见表1)USB上网卡拨号移动上网的功能.
通过对Windows环境下此类设备初始化过程的研究分析,本文提出了一种通用的USB移动上网设备在Linux平台下的用户态驱动和联网方法,对解决此类问题提供了方法保证.
同时开发了一套相应的用户态驱动程序,并对多种标准的USB移动上网设备进行实验验证,结果表明该方法有效且性能优良.
本文结构安排如下:第二部分详细介绍3G上网卡及用户态驱动的原理;第三部分详细介绍了模式转换、初始化和拨号的实现方法;第四部分是对该3G上网技术的性能进行测试;第五部分对全文进行总结.
2基本原理2.
13G上网卡原理3G上网卡可视为Modem加USBtoSerial转换芯片[4],Modem传输的是串口数据,与资助项目:国家科技重大专项项目"新一代宽带无线移动通信网"(2009ZX03001-019-02-07)联系作者:曾庆峰,E-mail:zengqingfeng@ict.
ac.
cn计算机通过USB通信,可以通过在Linux内核中的Usb-Serial转换模块实现上网功能.
主流3G上网卡(CDMA,TD-SCDMS等)均为双模式(U盘模式,Modem模式),插入计算机时系统首先将其识别为USBStorage设备,在Windows平台下安装驱动后,驱动程序向上网卡发出模式转换指令,上网卡转换为Modem设备工作.
但在Linux平台下没有类似驱动,就需要仿照Windows的流程进行模式转换.
此外,3G上网卡没有类似Windows系统的应用软件以实现Modem初始化,通过分析Windows平台下的上网卡工作的初始化过程,在Linux系统下使用pppd[5]、wvdial[6]等应用软件按照类似Windows下的流程实现Modem的初始化.
2.
2用户态驱动原理在用户态[7](UserSpace)实现驱动程序是把驱动程序的一部分放在用户空间,但不能将驱动程序任意的部分放在用户态,也不是所有的设备驱动程序都放到用户态实现,对于大部分的设备驱动程序是在内核态实现的.
只有在设备种类多、驱动程序较复杂、能够分层时,为了使用的方便,其中上层或增加的驱动程序部分可在用户态实现,见图1.
图1用户态驱动和内核空间驱动程序的结构图33G-USB用户态驱动方法3G-USB上网卡的驱动和使用流程可参见图2.
图23G-USB上网卡使用流程图3.
1模式转换方法通过监听Windows下的USB通信,截取转换指令来完成Linux系统下的强制模式转换.
Sniffusb软件是抓取USB口数据的应用软件,可以抓取Windows下3G-USB上网卡的模式转换指令,以便编写强制模式转换程序.
具体步骤如下(仍以3G上网卡DTM5731为例):第一步,使用Sniffusb软件在Windows系统下抓取USB口通讯数据,获取模式转换指令.
打开C:\WINDOWS\USBSnoop.
log文件,找到类似下段文字的地方:--URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:……00000000:5553424308a0d685000000000000061b00000010:000000030000000000000000000000确定切换Message为"5553424308a0d685000000000000061b000000030000000000000000000000",Endpoint为0x00000004.
第二步,根据以上所得数据,编写强制模式转换程序,软件流程图如图3所示.
利用了开源的Libusb用户态USB工具库,调用内核的底层接口实现模式转换.
图3强制模式转换流程图3.
2设备初始化方法(1)Windows下Modem初始化指令序列捕获通过使用Window平台上的Ser232软件截取Modem初始化指令.
第一步,在Windows平台上安装上网卡驱动.
第二步,使用Ser232软件在Windows系统下抓取串口,获取Modem初始化指令,提取的串口通信log,下面是log文件中获取指令的一部分(仍以DTM5731为例):Portopened41542B43474D490D0A-AT+CGMI41542B4346554E3F0D0A-AT+CFUN41545E4450424E3D310D0A-AT^DPBN=1……(2)Linux下Modem初始化指令序列建立通过分析Windows下串口通信log,记录下所有的AT质量,作为Linux下Modem初始化指令序列,填入wvdial的配置文件.
3.
3拨号方法第一步:加载驱动模块#modprobeusbserialvendor=0x1ab7product=0x5731第二步,通过分析在Windows上截取的初始化指令,配置3G上网卡DTM5731的wvidial.
conf文件如下:[Modem0]Modem=/dev/ttyUSB0Baud=230400SetVolume=0DialCommand=ATDTInit1=AT+CGMIInit2=AT+CFUNInit3=AT^DSTMInit4=AT^DSQ=0Init5=AT^DCINFO=1Init6=AT+HSIND=1Init7=AT^DPBN=1Init8=AT^DSMN=1Init9=AT+CFUN=1,0ISDN=0FlowControl=Hardware(CRTSCTS)[Dialerdtm5731]Username=''Password=''Phone=*99***1#StupidMode=1Inherits=Modem0第三步:拨号上网#wvdialdtm5731当出现DNS的时候就说明拨号成功.
4实验验证与性能测试4.
1用户态驱动程序的验证试验根据上述驱动方法,我们编写了相应的驱动文件和程序,并使用多个厂家生产的模块(见表1)在龙芯Yeeloong8089平台上进行了实验验证,证明了我们的方法解决了上网卡在Linux平台下的兼容性问题.
表1五款上网卡的具体参数型号厂家网络类型最高传输速率接口类型DTM5731大唐移动TD-SCDMA2200KbpsUSBDTM5731E大唐移动TD-SCDMA2200KbpsUSBAirCard901AirCardTD-SCDMA2800KbpsUSBEC121华为CDMA1X230KbpsUSBAC8710中兴CDMA20003100KbpsUSB4.
2性能测试本文利用测速网站www.
wangsu123.
cn和wangsuceshi.
xuduo.
com对上网卡的网络连接速度进行了测试,在Linux下使用iftop软件,Windows下使用onlineeye软件,对比了Linux和Windows系统下的上网卡下载速度,测试一:wangsu123网速测试表2wangsu网站3G上网速度峰值(单位kbps)峰值1峰值2峰值3峰值4峰值5峰值6峰值7平均Linux14812915070.
317418099.
6153.
84Windows1231541341758896124127.
7结果分析:一个图片的下载有多个峰值,Linux下没法显示整个图片下载最后一个峰值,采用了在整个图片下载过程中截取出现的比较大的峰值;而Windows下自动显示了下载图片过程中最后一个峰值,因此Linux比Windows获取的网速要快点是正常的,而峰值相差不大说明Linux下驱动已经与商用Windows驱动达到了相近的性能.
测试二:wangsuceshi网速测试表3wangsuceshi网站Linux3G上网速度峰值(单位kbps)峰值1峰值2峰值3峰值4峰值5峰值6峰值7平均Linux965.
1967.
95904.
13967.
95266.
69768.
93220.
72723.
07Windows954.
48596.
2924.
44973.
67967.
95262.
86236.
08702.
24结果分析:从测试二平均值可以看出Linux下上网速度已经达到了Windows下的商用正常上网速度,实验证明我们提出的方法具有实际意义和价值.
Kbps0100200300400500600700800wangsu123Linuxwangsu123WindowswangsuceshiLinuxwangsuceshiWindows图5上网卡在Windows和Linux下的网络速度比较5结论针对目前主流的3G上网卡大都没有提供统一通用的Linux驱动和拨号软件的问题,本文通过对Windows环境下3G-USB上网卡设备初始化过程的研究分析,提出了一种通用的USB移动上网设备在Linux平台下的用户态驱动方法,并用多种3G-USB上网卡进行实验验证,实验结果表明该方法有效且性能优良,理论上可以解决此类设备,包括TD-SCDMA、WCDMA、CDMA2000、GPRS、CDMA等多种标准、多个品牌的模块在Linux平台上的兼容性问题,经过测试,其性能达到了Windows下3G上网卡的商用正常网速,说明了用户态驱动方法的可行性与实用价值,下一步我们将对该方法进行进一步的改进,优化驱动使得Linux下各种3G上网卡的速度接近甚至超过Window平台.
参考文献[1]HaiYan,ShengliZhou,ZhijieJerryShi,andBaoshengLi.
ADSPImplementationofOFDMAcousticModem,WUWNet'07,September14,2007[2]AlessandroRubiniandJonathanCorbet.
LinuxDeviceDrivers.
Reilly&Assocoates[R].
Inc.
2002.
[3]ProgrammingGuideforLinuxUSBDeviceDrivers,http://USB.
cs.
tum.
edu[4]TheUSBSerialDriverLayer,http://www.
Linuxjournal.
com/node/6573/print[5]HEFu-gui,HOUYi-bin,LIHui.
Driverresearchinginuserspace.
ApplicationResearchofComputers,CNKI:SUN:JSYJ.
0.
2008-12-034[6]ConfiguringpppdinLinux,PartII,http://www.
Linuxjournal.
com/article/5467[7]Wvdial,http://en.
wikipedia.
org/wiki/WvdialAGenericUserSpaceDriverDesignMethodfor3G-USBModuleanditsImplementationZengQingfeng,ChenYuanfei,LiuXiangqian,ZhuZhenminInstituteofComputingTechnology,ChineseAcademyofSciences,Beijing100190,ChinaKeywords:TD-SCDMA,3G,Userspacedriver,LoongsonAbstract:Throughtheresearchandanalysisonthe3G-USBmoduleinitializationprocessinWindowsenvironment,thispaperproposesagenericuserspacedriverdesignmethodinLinux-basedNetbookplatformsforUSBMobileNetworkDevice.
Wehavedoneexperimentstotestthemethodwithkindsof3G-USBcardsonLoongsonNotebookYeeloong8089,theresultsshowthatthismethodiseffectiveandgoodperformance.
Intheory,ourmethodcanresolvethecompatibilityissuesinLinux-basedplatformforsuchkindfacility'smoduleswithdifferentstandarssuchasTD-SCDMA,WCDMA,CDMA2000,GPRS,CDMAandsoonandbrands.
Pia云商家在前面有介绍过一次,根据市面上的信息是2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台。这个云服务商家主要销售云服务器VPS主机业务和服务,云服务器采用KVM虚拟架构 。目前涉及的机房有美国洛杉矶、中国香港和深圳地区。洛杉矶为crea机房,三网回程CN2 GIA,自带20G防御。中国香港机房的线路也是CN2直连大陆,比较适合建站或者有游戏业务需求的用户群。在这篇文章中,简...
2021年9月中秋特惠优惠促销来源:数脉科技 编辑:数脉科技编辑部 发布时间:2021-09-11 03:31尊敬的新老客户:9月优惠促销信息如下,10Mbps、 30Mbps、 50Mbps、100Mbps香港优质或BGPN2、阿里云线路、华为云线路,满足多种项目需求!支持测试。全部线路首月五折起。数脉官网 https://my.shuhost.com/香港特价数脉阿里云华为云 10MbpsCN...
Advinservers,国外商家,公司位于新泽西州,似乎刚刚新成立不久,主要提供美国和欧洲地区VPS和独立服务器业务等。现在有几款产品优惠,高达7.5TB的存储VPS和高达3.5TBDDoS保护的美国纽约高防服务器,性价比非常不错,有兴趣的可以关注一下,并且支持Paypal付款。官方网站点击直达官方网站促销产品第一款VPS为预购,预计8月1日交付。CPU为英特尔至强 CPU(X 或 E5)。官方...
测速网站为你推荐
ionizationios10设置xp深圳做网站-确认收货手太快网店发来空箱子lowercasecss2011年停止接单产品请仔细阅读在本报告尾部的重要法律声明重庆网通重庆联通现在有哪些资费???css3圆角如何用CSS实现圆角矩形?ipad上网为什么我的ipad 显示无法连接到网络win7telnet怎样开启Windows7系统中的Telnet服务
北京域名空间 vps推荐 怎么申请域名 国外永久服务器 百度云100as 天猫双十一抢红包 云图标 panel1 亚洲小于500m 阿里云浏览器 网站cdn加速 vip购优惠 中国电信宽带测速网 卡巴斯基免费试用版 帽子云排名 永久免费空间 登陆qq空间 江苏徐州移动 新疆服务器 脚本大全 更多