FL2440 3G上网卡拨号上网,并实现mdev自动挂载

___________________________________

主机操作系统:Centos 6.5

交叉编译器环境:arm-linux-gcc-4.5.4

开发板平台: FL2440

Linux内核版本: 3.0

作者:songyong<[email protected]>

___________________________________

一、配置内核支持3G驱动以及PPP协议

打开ppp相关配置:

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

打开usb串口相关配置:

[*] USB support  --->

<*>   USB Serial Converter support  --->

[*]   USB Serial Console device support

[*]   USB Generic Serial Driver

<*>   USB driver for GSM and CDMA modems

自行在开发板上#lsusb 查看3G上网卡的厂商ID与设备ID,并将其添加到usb通用驱动option.c中(因为查看之后发现option.c中并没有我的3G上网卡信息,所以需要自行添加。如若能通过ID找到则可不添加)

以及在在option_ids数组中添加子项

二 、交叉编译拨号软件ppp-2.4.5和usb_modeswitch-1.2.4及其依赖的libusb-1.0.0和libusb-compat-0.1.4

usb_modeswitch;因为3G上网卡在linux下首次插入时是处于CD-ROM模式,我们如果要pppd拨号上网,则需要将默认被识别为存储设备的3g usb modem转换为可以通讯的多个串口设备。

usb_modeswitch-current_data.tar.bz2:这个包里包括提供给UDEV的驱动设备信息,和很多设备使用usb_mdoeswitch进行转换模式时需要配置的参数。下载它用于参考,usb_modeswitch.conf里面的参数就会参考到。

因为网上编译文档众多,在此不赘述。只是一开始我用的是usb_modeswitch-2.2.5,编译不通过。若只是想像我一样玩一下的话,可换此低版本通过。

下载地址:

ppp-2.4.5.tar.gz  ;usb-modeswitch-1.2.4.tar.bz2 ; usb-modeswitch-data-20150627.tar.bz2 ;libusb-1.0.0.tar.bz2

都通过之后,将ppp文件夹中的pppd和chat放入开发板/usr/sbin目录下;

三、配置usb_modeswitch.conf;并编写ppp拨号脚本

我们进入usb_modeswitch-data....../usb_modeswitch.d目录中打开对应ID的文件

一开始HuaweiMode=1不通过,然后我改为0后通过。至此,到这里我们发现12d1:1446其实并没有什么实际性的参考价值.....

网上的配置文件原本还有各种参数,但是又都不给出解释。我这样最简陋的基本配置,所幸能使用。有更具体需求的可以自行添加。

改好之后执行:

# mount -t usbfs usbfs /proc/bus/usb/       //挂载usb文件系统

#/apps/3G/usb_modeswitch -c /apps/3G/usb_modeswitch.conf    //-c是指指定配置文件

如若成功:# ls  /dev/ttyUSB*  可看到USB0-3等串口设备出现。

接下来重头------->串口下的AT指令集

首先我们执行microcom --help ,发现-s是serial串口调试

#microcom -s 115200 /dev/ttyUSB1

这时候屏幕可能就“卡”在这,也无任何回显。不要慌,我们敲at回车等待回应

如果回应 OK则可使用串口通讯,可能可以实现拨号。

ate1回车  可开启回显,这样就不会没有安全感了,不信就试试

以下是比较常用的AT命令。对于不同的厂商设备可能AT指令不完全相同,但是大多是一致的。所以可去网上随便找个datasheet看看。

ate0关闭

at+cgmm 可查看模块名

at+cgmr  可查看模块版本信息

at+cgmi 可查看模块制造商

at+csq 可查看信号强度

at+cpin? 查看SIM卡是否到位

at+creg? 查看SIM卡是否注册上,网络注册的情况。

at+cops? 查看SIM卡运营商

对于拨号脚本,其实大多都相同,稍加修改即可。

wcdma:

chat-wcdma-connect:

chat-wcdma-disconnect:

将这三个放到/etc/ppp/peers路径下。

当我们的microcom -s 115200 /ttyUSB1

在at+creg?回复1或者5之后表示可以拨号了。

执行pppd call wcdma拨号

至此,3G上网卡手动实现usb_modeswitch切换串口然后ppp拨号上网的基本需求就完成了。

下面使用mdev自动切换.

mdev是busybox自带的一个简化版的udev

作用是在系统启动和热拔插或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的。记得一开始学习驱动的时候,当时就知道了热拔插hotplug这个机制。简单地说内核里面的hotplug机智就是说当我们存在设备热拔插时,内核会调用用户空间层的一些脚本来进行处理。

==============================================================================================

busybox的mdev是一个精简了的udev管理程序,它可以间接的以hotplug方式被内核调用,进而在arm平台上/dev目录下动态创建设备节点,因为hotplug会被内核发送uevent之前调用,所以如果动态可插拔设备很多,很频繁,那么每次内核都会调用elf格式的用户空间的hotplug,生成一个独立的hotplug程序来处理,所以hotplug是一个非常笨重的实现方法,但是在我们的arm开发板上,可插拔设备并没有想象中的频繁

目前还没有必要移植完全版的udev,所以完全可以在不复杂的嵌入式设备上使用mdev来管理动态节点

==============================================================================================

以上引用网上一位前辈的说法:http://blog.csdn.net/lanmanck/article/details/4558500

首先我们在制作根文件系统的时候,需要在系统最先读取的自启文件inittab或者是rsc里面先挂载/sys和/proc文件系统。

因为mdev的另外一个很有用的地方是,他可以通过proc和sys文件系统来动态整理出注册的设备,进而到/dev/下生成他们对应的节点。但前提是使用该功能之前必须mount上proc和sys文件系统

然后我们还需要添加最关键的两句:

echo /sbin/mdev > /proc/sys/kernel/hotplug   //发现调用hotplug机制时就使用我们用户层的应用程序/sbin/mdev来处理

mdev -s   //会扫描并自动创建相应的节点.

现在当我们出现设备节点之后还有个配置文件mdev.conf ,里面包含了对相关设备节点的具体操作。

上面是我的配置,当检测到sg*这些设备节点时,就执行/apps/etc/modem_hotplug这个脚本。

因为手中就这一个3G上网卡,所以我就只是简单的只配置了它的脚本。如果是要普遍使用于大多数的话,还需要lsusb解析上网卡型号然后找对应的配置实现转串口。以后工作了做到这块了再深入研究花时间编写吧。至此,我们就已经可以实现板子上mdev自动挂载3G上网卡了。下一步如果想要拨号之后发出热点wifi的话也很简单,再配置一次nat表应该就行。我这里就不做了,开始看socket编程去咯

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 23:20:25

FL2440 3G上网卡拨号上网,并实现mdev自动挂载的相关文章

开发板 3G 网卡拨号上网

注意,其中的/dev/ttyACM0 是串口设备,后面描述. /etc/ppp/chat-wcdma #!/bin/sh # # This is part 2 of the ppp-on script. It will perform the connection # protocol for the desired connection. # exec /usr/sbin/chat -v \ ECHO ON \ ABORT 'BUSY' \ ABORT 'NO ANSWER' \ ABORT

Linux下3G脚本拨号上网(转)

Linux下3G脚本拨号上网 (2010-7-5 13:08) 既然是拨号上网,就不能不提到ppp(point-to-point protocol)协议.ppp协议提供了一种通过串行点对点联接传输数据报的方式.它由三部份组成:一种在串行封装数据报的方式,扩展联接控制协议LCP,和用来建立和配置不同网络层协议的家族网络控制协议NCP.封装方案由内核驱动代码来提供.pppd(ppp daemon)提供基本的LCP,认证支持,和建立和配置IP的网络控制协议NCP.一个ppp会话分为四个步骤:连接建立.

华为3G模块拨号上网

一 开发环境简介 内核版本 3.19.5.3.15(这2个我都试过) 编译环境  Ubuntu 12.04 3g模块      华为MU709s SIM卡        联通 二 主要步骤 向linux内核中添加3G模块驱动(USB转串口的option驱动)和ppp网络协议的支持 交叉编译ppp-2.4.2源代码 将拨号上网所需的两个应用程序pppd和chat拷贝到开发板/usr/sbin文件夹下, 编写ppp拨号脚本wcdma.wcdma-chat-connect.wcdma-chat-dis

关于实现udev/mdev自动挂载与卸载

在网上有很多关于讲mdev的自动挂载基本上都是一个版本,经过测试自动挂载确实可行,但是关于自动卸载mdev似乎不能很好的支持,经过修改已经可以做到与udev的效果相似.不能在挂载的目录中进行热插拔,否则会出现问题,不过此问题在下次插入U盘时不会造成影响,可能对U盘有损坏. 本文介绍了mdev与udev两种方法来实现自动挂载,读者可根据需要任选其一即可. 首先介绍一下mdev与udev之间的关系: mdev是busybox中的一个udev管理程序的一个精简版,他也可以实现设备节点的自动创建和设备的

ARM+llinux系统移植3G拨号上网收发短信(一)【转】

本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099737 一.      PPP移植 各项工作具体说明 向Linux内核添加3G模块的驱动(USB转串口驱动)和PPP协议的支持,然后编译内核并下载到开发板.当然如果之前已经移植好内核,那么只需要增加几个选项就可以,然后在编译内核就可以了,这个文档默认内核已经移植过,所以只讲与USB转串口驱动和PPP协议支持的几个选项. [[email protected] linux-3.

openwrt使用3G上网卡

尊敬的大大.感谢你抽空指导我 我的设备是db120 mu350 和广东无限卡 版本是OpenWrt Backfire 10.03.336 DIY full 一.        没有安装到kmod-usb-acm  为什么? 二.        我在终端入启路由,插上MU350,WinSCP连接到路由,打开终端输入命令查看是否MU350已被识别.显示如下  (与你所写的不一样,请问我的mu350识别了没有) /etc/modules.d$ dmesg | grep usb usbcore: reg

2G、3G无线路由器拨号连接过程

无线MODEM是为数据通信的数字信号在具有有限带宽的模拟信道上进行无线传输而设计的,它一般由基带处理.调制解调.信号放大和滤波.均衡等几部分组成.无线MODEM又名"无线调制解调器",区别于传统modem之处在于调制后的信号是通过无线传输的.无线modem有2G和3G各种网络的,如GPRS.CDMA.EDGE.WCDMA.CDMA2000(EVDO).TD-SCDMA等. 无线MODEM一般常见的接口有RS232串行口.USB口和PC卡式接口.RS232串行口和USB口一般都是外置式,

在ARM-linux上实现4G模块PPP拨号上网【转】

本文转载自:http://blog.csdn.net/zqixiao_09/article/details/52540887 在ARM平台上实现4G模块的PPP拨号上网,参考网上的资料和自己的理解,从一无所知到开发完成花了一周多.最后看到ARM板ping通www.baidu.com时甚是高兴,现将此过程整理如下.当然,除此之外要做的工作还有很多. 4G模块使用的SIMTECH 的SIM7100C,SIM7100C带有UART和USB接口,在考虑速度上我们使用USB接口和ARM进行通信.所以向Li

电信3G上网卡自动重拨

需要使用电信3G无线上网卡做一个测试,因为要长时间使用,在使用的过程中老掉线,所以做了一个自动重连的批处理,好了,闲话少叙,开工: 先建立一个拨号连接: 001.png 002.png 003.png 004.png 005.png 建立好了连接,测试一下命令效果,命令行连接上: 006.png 再用命令行断开连接: 007.png 这下脚本就可以写出来了: 脚本: redial.bat set interval1=5 set loop1=1 setlocal enabledelayedexpa