一种通用的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.
WebHorizon是一家去年成立的国外VPS主机商,印度注册,提供虚拟主机和VPS产品,其中VPS包括OpenVZ和KVM架构,有独立IP也有共享IP,数据中心包括美国、波兰、日本、新加坡等(共享IP主机可选机房更多)。目前商家对日本VPS提供一个8折优惠码,优惠后最低款OpenVZ套餐年付10.56美元起。OpenVZCPU:1core内存:256MB硬盘:5G NVMe流量:200GB/1G...
10gbiz怎么样?10gbiz 美国万兆带宽供应商,主打美国直连大带宽,真实硬防。除美国外还提供线路非常优质的香港、日本等数据中心可供选择,全部机房均支持增加独立硬防。洛杉矶特色线路去程三网直连(电信、联通、移动)回程CN2 GIA优化,全天低延迟。中国大陆访问质量优秀,最多可增加至600G硬防。香港七星级网络,去程回程均为电信CN2 GIA+联通+移动,大陆访问相较其他香港GIA线路平均速度更...
spinservers怎么样?spinservers大硬盘服务器。Spinservers刚刚在美国圣何塞机房补货120台独立服务器,CPU都是双E5系列,64-512GB DDR4内存,超大SSD或NVMe存储,数量有限,机器都是预部署好的,下单即可上架,无需人工干预,有需要的朋友抓紧下单哦。Spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立...
测速网站为你推荐
支持ipad支持ipad支持ipadipad连不上wifiiPad 连不上Wifi,显示无互联网连接x-routerX-Router这个软件有什么用google图片搜索谁能教我怎么在手机用google的图片搜索啊!!!firefoxflash插件安装火狐浏览器后,老是提示安装flash player?电信版iphone4s电信版iphone4s是买16gb的好还是32gb的好?苹果5.1完美越狱ios5.1能不能完美越狱?chrome172017款领航员四驱长轴3.5T车身长宽高马力油耗多大17款领航员报价
vps交流 域名主机管理系统 photonvps 韩国电信 鲜果阅读 火车票抢票攻略 云鼎网络 华为网络硬盘 全站静态化 微信收钱 vip购优汇 web服务器的架设 1美金 个人免费主页 华为云盘 移动服务器托管 测速电信 买空间网 卡巴斯基官网下载 windowsserver2008 更多