首页 / 操作系统 / Linux / Linux下3G网卡在开发板上使用(模式转换)
一直在弄3G的驱动,其实驱动是内核自带的,编译进去就OK了,关键是把默认的存储模式转换成3G模式,今天终于可以转换成功了,把这个过程记录下来。 参考http://www.linuxidc.com/Linux/2011-03/33428.htm,在此基础上根据自己的情况修改,感谢博主!一.环境1.linux kernel:2.6.30.42.3G card:HUAWEI EC1261(EC1260升级版)二.相关软件:1.usb-modeswitch-1.1.7.tar :USB设备工作模式转换工具2.usb-modeswitch-data-20110227.tar :配置usb_modeswitch.conf时使用3.libusb-1.0.8.tar :给usb_modeswitch提供一套系统API4.libusb-compat-0.1.3.tar :兼容1.0与0.1两个版本三.交叉编译usb_modeswitch1.交叉编译libusbA.解压并进入libusb-1.0.8目录,建立子目录install用于存放最后生存的库文件与头文件。 # mkdir installB. 配置并生成Makefile文件 #./configure --build=i686-linux --host=arm-linux --prefix=/opt/libusb-1.0.6/installC. #makeD. # make install2. 设置PKG_CONFIG_PATH环境变量,以使我们后面的编译能够顺利找到libusb库A.设置环境变量 # export PKG_CONFIG_PATH=/opt/libusb-1.0.6/install/lib/pkgconfig:$PKG_CONFIG_PATHB.查看是否设置正确 #echo $PKG_CONFIG_PATH3. 交叉编译lib_compat与上面编译libusb的方法类似:A.#mkdir installB. #./configure --build=i686-linux --host=arm-linux --prefix=/opt/libusb-compat-0.1.3/installC. #makeD. #make install4. 交叉编译usb_modeswitchA.修改Makefile文件添加STRIP和CC选项为:STRIP = arm-xxx-linux-stripCC = arm-xxx-linux-gccB. 可以将上面的libusb和libusb-compat的库和头文件拷贝到交叉编译器的目录下(目录分别为/opt/EmbedSky/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/和/opt/EmbedSky/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/include),并在Makefile中添加路径:LDFLAGS = -Wl,-rpath=/opt/EmbedSky/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/,其它不变注:用指定库和头文件路径的方法不成功,必须放在交叉编译器的目录下,原因不知。C.make5. 编辑usb_modeswitch目录下的usb_modeswitch.conf文件,加入以下内容: # Huawei, newer modems
DefaultVendor= 0x12d1
DefaultProduct=0x1446
TargetVendor= 0x12d1
TargetProduct= 1001
CheckSuccess=20
MessageContent="55534243123456780000000000000011062000000100000000000000000000"
注:在usb-modeswitch-data-20110227中可以找到对应的文件12d1:1446,粘贴即可。
6. 将上面生成的libusb动态库(lib下的)拷贝到开发板的库目录(/lib)下,将上面生成的usb_modeswitch可执行程序(无文件类型)和usb_modeswitch.conf配置文件下载到开发板某目录下。四. 交叉编译3G卡片驱动1. 编译内核:详见《基于嵌入式Linux的3G技术的应用和研究》2. 编译3G模块的驱动option.ko :配置内核时3G驱动对应的选项“USB driver for GSM and CDMA modems”需编译成模块,才能在后面转换时生成ttyUSB0、ttyUSB1、ttyUSB2。在内核源码包中找到usb的3G驱动文件 driver//usb/serial/option.c在其中加入3G卡片的 HUAWEI_VENDOR_ID 0x12D1和HUAWEI_PRODUCT_EC1260 0x1446。然后修改Kconfig将option编译成模块。将编译生成的option.ko下载到开发板中并使用insmod加载。五. 加载驱动1. 挂载usb虚拟文件系统:mount -t usbfs usbfs /proc/bus/usb/2. 现在就可以使用usb_modeswitch –c ~/usb_modeswitch.conf切换3G卡片的模式了。此时会出现一些信息,你会看到转换成3G模式后的几个串口信息,ttyUSB0, ttyUSB1, ttyUSB2注:不需使用 弹出3G卡片的指令: eject /dev/sr0 ,使用usb_modeswitch 指令就可以转换了。