Linux下3G网卡在开发板上使用(模式转换)

一直在弄3G的驱动,其实驱动是内核自带的,编译进去就OK了,关键是把默认的存储模式转换成3G模式,今天终于可以转换成功了,把这个过程记录下来。

参考,在此基础上根据自己的情况修改,感谢博主!

一.环境

1.linux kernel:2.6.30.4

2.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提供一套系统API

4.libusb-compat-0.1.3.tar :兼容1.0与0.1两个版本

三.交叉编译usb_modeswitch

1.交叉编译libusb

A.解压并进入libusb-1.0.8目录,建立子目录install用于存放最后生存的库文件与头文件。

# mkdir install

B. 配置并生成Makefile文件

#./configure --build=i686-linux --host=arm-linux --prefix=/opt/libusb-1.0.6/install

C. #make

D. # make install

2. 设置PKG_CONFIG_PATH环境变量,以使我们后面的编译能够顺利找到libusb

A.设置环境变量

# export PKG_CONFIG_PATH=/opt/libusb-1.0.6/install/lib/pkgconfig:$PKG_CONFIG_PATH

B.查看是否设置正确

#echo $PKG_CONFIG_PATH

3. 交叉编译lib_compat

与上面编译libusb的方法类似:

A#mkdir install

B. #./configure --build=i686-linux --host=arm-linux --prefix=/opt/libusb-compat-0.1.3/install

C. #make

D. #make install

4. 交叉编译usb_modeswitch

A.修改Makefile文件

添加STRIP和CC选项为:

STRIP = arm-xxx-linux-strip

CC = arm-xxx-linux-gcc

B. 可以将上面的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.make

5. 编辑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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxsgs.html