嵌入式linux下3G上网卡移植

传统3G上网卡几乎都采用modem形式,支持usb插口。通过usb指令转串口指令发给modem实现modem初始化并实现上网.
 由此可以考虑在linux下实现usb指令到串口指令转换的驱动以驱动modem实现上网,各个平台的linux内核中都有usbserial
 模块,该模块是可以驱动modem上网的,因此可以考虑使用usbserial模块驱动3G网卡上网。

 Usb_modeswitch是对USB设备的工作模式进行转换一种万能工具,当然这种宝贝,只有在linux下才能体现其巨大的作用。
 随着移动通信,无线通信的发展,越来越多的设备被制作成USB接口,像一些无线网卡,3G数据卡等等。
 这些设备的厂家一般都会提供windows 下驱动,这些设备在第一次插上机子的时候,它们处于CDROM+闪存模式,
 可以从中提供驱动程序安装驱动,在驱动程序安装完成后,驱动会转换成3G模式,此时就会出现usb modem设备,
 目前的3G卡片全都是这样,这就是所谓的“ZeroCD”。

 而在linux下我们可没有那么好的待遇,厂家一般不会给我们提供linux下面的驱动,而目前的内核还不能自动识别并驱动。
 所以我们需要用usb_modeswitch这个工具来进行模式转换,设备模式依赖usb-storage和usbserial模式,
 所以,在开发板上需要有这两种模块的支持,设备并能够正常工作于这两种模式下。

 usb_modeswitch的正常工作依赖于Libusb所以我们还需要在内核中添加这个库。
 如果内核中不包括上述工具可以到一下地址下载:
 libusb源码下载: http://sourceforge.net/projects/libusb/files/libusb-1.0/
 usb_modeswitcch下载: http://www.draisberghof.de/usb_modeswitch/
 usb-modeswitch-data: http://www.draisberghof.de/usb_modeswitch/

 以中兴AC2726为例进行移植过程如下:

-----------------------------------------------------------------------------------------------------------------------------------------------------

 首先进行内核的配置:
 Device Drivers
 Network device support --->
 <*> PPP (point-to-point protocol) support
 [*] PPP multilink support (EXPERIMENTAL)
 [*] PPP filtering
 <*> PPP support for async serial ports
 <*> PPP support for sync tty ports
 <*> PPP Deflate compression
 <*> PPP BSD-Compress compression
 < > PPP MPPE compression (encryption) (EXPERIMENTAL)
 <*> PPP over Ethernet (EXPERIMENTAL)
 < > PPP over L2TP (EXPERIMENTAL)
 < > PPTP (Point-to-Point Tunneling Protocol) (EXPERIMENTAL)
 (ppp用于拨号)

 Device Drivers
 USB support --->
 [*] USB device filesystem
 <*> USB Modem (CDC ACM) support
 USB Serial Converter support --->
 [*] USB Generic Serial Driver
 <*> USB driver for GSM and CDMA modems
 (用于支持usb转串口)

 Library Configuration --->
 [*] Build libusb-0.1.12
 (添加libusb库)

 Miscellaneous Applications --->
 [*] usb_modeswitch

 (添加usb_modeswitch模块)

-----------------------------------------------------------------------------------------------------------------------------------------------------


 内核配置到这里就已经完成,然后需要修改option.c , Pl2303.c , Pl2303.h手动添加所要移植的3g设备信息;

(windows下使用usbviewer查看网卡的信息,主要是VENDOR_ID,PRODUCT_ID,MessageEndpoint)


 Pl2303.h:
 #define ZTE_VENDOR_ID 0x19d2
 #define ZTE_PRODUCT_ID 0xfff5
 这里两个数值可以通过在linux环境下用lsusb查询到

 Pl2303.c:
 在static struct usb_device_id id_table []最后加入
 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_ID) },

 option.c :
 首先加入
 #define ZTE_PRODUCT_CDMA_TECH6 0xfff1
 其中0xfff1为运行过usb_modeswitch之后设备被转换成的编号,可以在pc机上试验取得
 然后在static struct usb_device_id option_ids[]最后加入
 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH6) },

-----------------------------------------------------------------------------------------------------------------------------------------------------

 代码修改完成,最后还需要在etc_ro/usb下面添加usb_modeswitch_ZTE.conf文件

 其内容为:
DefaultVendor= 0x19d2
DefaultProduct= 0xfff5

TargetVendor= 0x19d2
TargetProduct= 0xfff1

MessageContent="5553424312345678c00000008000069f030000000000000000000000000000"
MessageEndpoint=0x0a
-----------------------------------------------------------------------------------------------------------------------------------------------------
 到这里上网卡移植就结束了,然后进行拨号:
 pppd connect 'chat -v "" "AT" "OK" "ATZ" "OK" "ATDT#777 CONNECT"' user card password card /dev/ttyUSB0 115200 nodetach noauth nocrtscts modem noipdefault debug usepeerdns defaultroute ipcp-accept-local noccp
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值