一、环境

1、  开发板内核:linux kernel 2.6.10

2、  3G卡片:华为E1750

二、相关工具

1、  usb-modeswitch-1.1.2.tar.bz2

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

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

2、  libusb-0.1.12.tar.gz

libusb提供给usb_modeswitch一套系统API

三、交叉编译usb_modeswitch

1、交叉编译libusb

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

[root@libusb-0.1.12]# mkdir install

配置并生成Makefile文件

[root@libusb-0.1.12]# ./configure --build=i686-linux --host=arm-linux --prefix=/home/libusb-0.1.12/install

 [root@libusb-0.1.12]# make

[root@libusb-0.1.12]# make install

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

[root@libusb-0.1.12]# export

PKG_CONFIG_PATH=/home/Anson/libusb-0.1.12/install/lib/pkgconfig:$PKG_CONFIG_PATH

    查看是否设置正确

[root@libusb-0.1.12]# echo $PKG_CONFIG_PATH

3、 交叉编译usb_modeswitch

1)、修改Makefile文件

      CC = arm_v5t_le-gcc

2)、将libusb里的库头文件拷到交叉编译器的includelib目录下,或者直接在Makefile文件里直接加上编译选项指令库的路径即可如下:

$(PROG):&(OBJS)

      &(CC) –o $(PROG) &(OBJS) &(CFLAGS) –I /home/libusb-0.1.12/install/include –L /home/libusb-0.1.12/install/lib

3)、make

4编辑usb_modeswitch-1.1.2目录下的usb_modeswitch.setup文件

 

# Huawei E1750

#

# Contributor: Anders Blomdell, Ahmed Soliman

DefaultVendor= 0x12d1

DefaultProduct= 0x1446

 

TargetVendor= 0x12d1

TargetProduct= 0x1001

 

# only for reference and 0.x versions

MessageEndpoint=0x01

MessageContent="55534243123456780000000000000011060000000000000000000000000000"

HuaweiMode=0

5将上面生成的libusb动态库拷贝到开发板的库目录下,将上面生成的usb_modeswitch可执行程序和usb_modeswitch.setup拷贝到文件系统目录下。

四、交叉编译3G卡片驱动

2.6.10内核源码中没有专门的3G驱动文件,我们在/driver/usb/serial/pl2303.c中加入3G卡片的ID信息:

{USB_DEVICE(HUAWEI_VENDOR_ID),HUAWEI_PRODUCT_ID)}

/driver/usb/serial/pl2303.h中加入:

#define HUAWEI_VENDOR_ID 0x12d1

#define HUAWEI_PRODUCT_ID 0x1001

Make menuconfig 选中相关选项,make uImage 即可。

五、利用usb_modeswitch进行模式转换

/dev目录下建立字符节点

mknod /dev/ttyUSB0 c 188 0

mknod /dev/ttyUSB1 c 188 1

mknod /dev/ttyUSB2 c 188 2

运行 ./usb_modeswitch 切换3G卡片的模式。此时会出现一些信息,你会看到转换成3G模式后的几个串口信息,ttyUSB0, ttyUSB1, ttyUSB2,如下:

pl2303 1-1:1.0: PL-2303 converter detected

usb 1-1: PL-2303 converter now attached to ttyUSB0

pl2303 1-1:1.1: PL-2303 converter detected

usb 1-1: PL-2303 converter now attached to ttyUSB1

pl2303 1-1:1.2: PL-2303 converter detected

usb 1-1: PL-2303 converter now attached to ttyUSB2

六、交叉编译pppd拨号工具,并编写拨号脚本

    由于板卡上已移植了pppd拨号工具,在内核里将相关的选项选上即可。下面介绍拨号脚本的编写:

wcdma

nodetach

lock

/dev/ttyUSB0

115200

user "card"

password "card"

crtscts

show-password

usepeerdns

noauth

noipdefault

novj

novjccomp

noccp

defaultroute

ipcp-accept-local

ipcp-accept-remote

connect '/usr/sbin/chat -s -v -f chat-wcdma-connect'

disconnect '/usr/sbin/chat -s -v -f chat-wcdma-disconnect'

chat-wcdma-connect:

ABORT 'NO CARRIER'

ABORT 'ERROR'

ABORT 'NO DIALTONE'

ABORT 'BUSY'

ABORT 'NO ANSWER'

'' /rAT

OK /rATZ

OK /rAT+CGDCONT=1,"IP","3gnet",,0,0

OK-AT-OK ATDT*99#

CONNECT /d/c

chat-wcdma-disconnect:

ABORT "ERROR"

ABORT "NO DIALTONE"

SAY "/nSending break to the modem/n"

'' "/K"

'' "+++ATH"

SAY "/nGoodbay/n"

 

wcdmachat-wcdma-connectchat-wcdma-disconnect三个文件拷贝到

/home/filesys/etc/ppp/peers 目录下,在/etc/resolv.conf中添加DNS

Nameserver 202.106.46.151

由于所用的DM6446开发板,文件系统挂载在一个服务器上,其所用的网关,被当做了默认的网关,故拨号后会ping不通网络。 

root@192.168.1.2:/# route

Kernel IP routing table

Destination  Gateway       Genmask     Flags  Metric Ref   Use  Iface

192.168.1.0     *        255.255.255.0   U     0      0      0   eth0

default    192.168.1.3      0.0.0.0        UG    0      0      0   eth0

修改/etc/network/interfacds文件,设置网卡的工作模式如下:

Auto eeth0

  iface eth0 inet static

  address 192.168.1.42

  network 192.168.1.0

  netmask 255.255.255.0

  broadcast 192.168.1.255

  gateway  192.168.1.1

修改默认网关

root@192.168.1.2:/# route del default

拨号后可查看

root@192.168.1.2:/opt/3g# route

Kernel IP routing table

Destination   Gateway     Genmask     Flags  Metric  Ref  Use  Iface

localhost       *       255.255.255.255 UH      0      0    0    ppp0

192.168.1.0    *        255.255.255.0   U      0      0    0    eth0

default        localhost      0.0.0.0      UG     0      0    0    ppp0

 

开始拨号

root@192.168.1.2:/opt/3g# pppd call wcdma&

拨号成功后会获得自动分配的IP地址

Serial connection established.

usb 1-1: pppd timed out on ep0out

Using interface ppp0

Connect: ppp0 <--> /dev/ttyUSB0

PAP authentication succeeded

Could not determine remote IP address: defaulting to 10.64.64.64

Cannot determine ethernet address for proxy ARP

local  IP address 172.25.125.70

remote IP address 10.64.64.64

ping www.sina.com 如能ping通,则说明移植成功。

root@192.168.1.2:/opt/3g# ping www.sina.com

PING libra.sina.com.cn (202.108.33.73) 56(84) bytes of data.

64 bytes from 202.108.33.73: icmp_seq=1 ttl=54 time=367 ms

64 bytes from 202.108.33.73: icmp_seq=2 ttl=54 time=320 ms

64 bytes from 202.108.33.73: icmp_seq=3 ttl=54 time=300 ms

64 bytes from 202.108.33.73: icmp_seq=4 ttl=54 time=310 ms

64 bytes from 202.108.33.73: icmp_seq=5 ttl=54 time=330 ms

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐