通讯模块 linux m2m ip地址,Air720模块Linux USB驱动以及PPP拨号说明

本文章介绍了在linux系统下,如何修改usb驱动支持合宙 Air720模块,以及使用Air720进行ppp拨号上网流程     Air720正常启动后,通过USB连接到linux设备上,驱动正常加载后会在/dev/下产...

本文章介绍了在linux系统下,如何修改usb驱动支持合宙 Air720模块,以及使用Air720进行ppp拨号上网流程

Air720正常启动后,通过USB连接到linux设备上,驱动正常加载后会产生如下设备:

33cd314752136060dca7f0874f283473.png

一、修改驱动

首先需要对Linux内核驱动做一定的修改,使操作系统能够支持Air720。

1.Add VID add PID

File: [KERNEL]/drivers/usb/serial/option.cstatic const struct usb_device_id option_ids[] = {

//+add by airm2m for Air72x

{ USB_DEVICE(0x1286, 0x4e3d) },

//-add by airm2m for Air72x

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD_LIGHT) },

2. Add the Zero Packet Mechanism

⦁For linux Kernel Version newer than 2.6.34:

File: [KERNEL]/drivers/usb/serial/usb_wwan.cstatic struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,

int endpoint,

int dir, void *ctx, char *buf, int len,

void (*callback) (struct urb *))

{

struct usb_serial *serial = port->serial;

struct urb *urb;

urb = usb_alloc_urb(0, GFP_KERNEL); /* No ISO */

if (!urb)

return NULL;

usb_fill_bulk_urb(urb, serial->dev,

usb_sndbulkpipe(serial->dev, endpoint) | dir,

buf, len, callback, ctx);

//+add by airm2m for Air72x

if(dir == USB_DIR_OUT){

struct usb_device_descriptor *desc = &serial->dev->descriptor;

if(desc->idVendor == cpu_to_le16(0x1286) && desc->idProduct == cpu_to_le16(0x4e3d))

{

urb->transfer_flags |= URB_ZERO_PACKET;

}

}

//-add by airm2m for Air72x

return urb;

}

⦁For linux Kernel Version older than 2.6.35:

File: [KERNEL]/drivers/usb/serial/option.cstatic struct urb *option_setup_urb(struct usb_serial *serial, int endpoint,

int dir, void *ctx, char *buf, int len,

void (*callback)(struct urb *))

{

......

/* Fill URB using supplied data. */

usb_fill_bulk_urb(urb, serial->dev,

usb_sndbulkpipe(serial->dev, endpoint) | dir,

buf, len, callback, ctx);

//+add by airm2m for Air72x

if(dir == USB_DIR_OUT)

{

struct usb_device_descriptor *desc = &serial->dev->descriptor;

if(desc->idVendor == cpu_to_le16(0x1286) && desc->idProduct == cpu_to_le16(0x4e3d))

{

urb->transfer_flags |= URB_ZERO_PACKET;

}

}

//-add by airm2m for Air72x

return urb;

}

3. Add Reset Resume

⦁For linux Kernel Version newer than 3.4:

File: [KERNEL]/drivers/usb/serial/option.cstatic struct usb_serial_driver option_1port_device = {

.driver = {

.owner =    THIS_MODULE,

.name =     "option1",

},

....

#ifdef CONFIG_PM

.suspend           = usb_wwan_suspend,

.resume            = usb_wwan_resume,//+add by airm2m for Air726

.reset_resume      = usb_wwan_resume,

//-add by airm2m for Air726

#endif};

⦁For linux Kernel Version older than 3.5:

File: [kernel]/drivers/usb/serial/usb-serial.c/* Driver structure we register with the USB core */

static struct usb_driver usb_serial_driver = {

.name ="usbserial",

.probe =usb_serial_probe,

.disconnect =usb_serial_disconnect,

.suspend =usb_serial_suspend,

.resume =usb_serial_resume,

//+add by airm2m for Air72x

.reset_resume      = usb_serial_resume,

//-add by airm2m for Air72x

.no_dynamic_id = 1,

};

4. Modify Kernel Configuration

Step 1:cd 

Step 2:make menuconfig

Step 3:Enable CONFIG_USB_SERIAL_OPTION[*] Device Drivers →

[*] USB Support →

[*] USB Serial Converter support →

[*] USB driver for GSM and CDMA modems

36802fdec42dca07eab95312e274c2a0.png

Step 4:Configure Kernel to Support PPP[*] Device Drivers →

[*] Network device support →

[*] PPP (point-to-point protocol) support

a5fa9288d08a783e082b689f2d73e099.png

5.编译内核make

将编译好的内核下载到开发板。

二、模块测试

将重新编译好的内核下载到开发板之后,待系统重新启动,如果是带RNDIS网卡的驱动,在/dev/目录下会出现如下设备节点:

0c7099c656c6202f8a773e801af5a447.png

Air726的AT端口是/dev/ttyUSB2,现在你可以使用UART端口工具如“minicom”或“busybox microcom”测试AT功能,结果如下:

e68e2d7e4ad731acb3ee6cd3b2fb68ce.png

三、PPP拨号

通过几个不同的配置文件,在拨号的时候选择相应的配置文件,现将配置文件列举如下:

/etc/ppp/peers/air720-ppp# /etc/ppp/peers/air720-pppd                                                                      # Usage:root>pppd call air720-pppd

#Modem path, like /dev/ttyUSB3,/dev/ttyACM0, depend on your module, default path is /dev/ttyUSB3

/dev/ttyUSB3 115200

#Insert the username and password for authentication, default user and password are test

user "" password ""

# The chat script, customize your APN in this file

connect 'chat -s -v -f /etc/ppp/peers/air720-chat-connect'

# The close script

disconnect 'chat -s -v -f /etc/ppp/peers/air720-chat-disconnect'

# Hide password in debug messages

hide-password

# The phone is not required to authenticate

noauth

# Debug info from pppd

debug

# If you want to use the HSDPA link as your gateway

defaultroute

# pppd must not propose any IP address to the peer

noipdefault

# No ppp compression

novj

novjccomp

noccp

ipcp-accept-local

ipcp-accept-remote

local

# For sanity, keep a lock on the serial line

lock

modem

dump

nodetach

# Hardware flow control

nocrtscts

remotename 3gppp

ipparam 3gppp

ipcp-max-failure 10

# Ask the peer for up to 2 DNS server addresses

usepeerdns

/etc/ppp/peers/air720-chat-connect#/etc/ppp/peers/air720-chat-connect

ABORT "BUSY"

ABORT "NO CARRIER"

ABORT "ERROR"

#ABORT "NO ANSWER"

TIMEOUT 10

"" AT

"OK-+++\c-OK" ATH0

OK ATE0

OK ATI;+CESQ;+CPIN?;+COPS?;+CEREG?;+CGREG?;&D2

#china unicom's apn is 3gnet

#OK AT+CGDCONT=1,"IP","3gnet",,0,0

#OK ATD*99#

#China mobile APN

OK AT+CGDCONT=1,"IP","cmnet"

#OK ATDT*99***1#

OK ATD*99#

CONNECT ""

/etc/ppp/peers/air720-chat-disconnect#/etc/ppp/peers/air720-chat-disconnect

TIMEOUT 5

ABORT "ERROR"

ABORT "NO DIALTONE"

ABORT "NO CARRIER"

#SAY "\nSending break to the modem\n"

"" "+++\c"

OK "ATH0"

SAY "\nGoodbay\n"

编辑好这几个文件之后,便可以通过pppd进行拨号:# pppd call air720-ppp &

如果拨号成功会有以下信息打印出来:

10a24c3cec3c6ecf103a1b24bf397a38.png

54f4ac8b07897c4a657390b7b8b31c0a.png

此时通过ifconfig命令查看网卡就有一个ppp0网卡出现,这时可以禁用其他网卡,就可以用Air720模块连接到互联网了。

981894f59b4f8071777fb4f4b472071d.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值