接手一嵌入式ARM9开发板,带以太网口、USB WiFi模块、3G模块,也即三种方式均可上网,平时用的较多的有两种方式,以太网和3G,以太网上网方式较为稳定,但3G拨号方式,有时甚至整天都不能成功,看过一些博客,有根据他们的经验主要建议以下几种方法:

1. 关闭eth0

ifconfig eth0 down

2. 拨号前删除默认route

route del default

3. 删除默认路由,设置ppp0为默认路由

route del default
route add default dev ppp0

以上方法均做过测试验证,最可靠的做法还是第一种,但最佳配方还是在脚本中写个无限循环定期检查,一旦检测到无法上网,则先关闭掉pppd进程,再重启3G模块,最后再次启动pppd进程。

下方是一种参考方案

while true
do# whatever eth or wlan or ppp ping -s 1 -c 1 $server > /dev/nullif [ "$?" != "0" ]then#echo "OFF TIME is `date +%Y-%m-%d,%H:%M:%S`" >> /path/offinfokillall pppd# function for restart 3g modulerestart_3gmodulesleep 15s# function for start pppd,shut eth0 down herepppd_callfisleep 300s
done  

根据当前追踪的现象,原因可能还是在于路由这块(内核版本linux-3.10.x, ppp2.4.7),有清楚的兄台麻烦评论区告知一二,在下不胜感激!

提供一份动态网络自动切换的脚本方案,这里面做了删除默认路由的一些操作,如下

#!/bin/sh#check the wired and wireless network reachable
wired=eth0
#wired=wlan0
wireless=ppp0
needRetryTimes=10
needRestartUdhcpc=0
flag=0while true; do
Gateway=`route|grep 'default'|grep $wired|awk '{print $2}'`
if [ "$Gateway" != "*" ] && [ -n "$Gateway" ]; thenping -s1 -w1 $Gateway > /dev/null
elsesleep 2scontinue
fiif [ "$?" != "0" ]; thenlet flag++if [ $flag -lt $needRetryTimes ]; thenecho "we will retry once.." > /dev/nullcontinuefiflag=0#if wired if default,delete itif [ -n "`route|grep 'default'|grep $wired`" ];thenecho "route del default $wired" > /dev/nullroute del default $wiredfiif [ $needRestartUdhcpc -eq 1 ]; thenecho "$wired not reachable,so only restart udhcpc once" > /dev/nullkill -9 `ps|grep 'udhcpc'|grep -v grep|awk '{print $1}'`sleep 1s/sbin/udhcpc -i $wired -F ZigbeeLinuxGateway -b > /dev/null &sleep 2sneedRestartUdhcpc=0fi#if wireless is not default,add itif [ -z "`route|grep 'default'|grep $wireless`" ];thenecho "route add default $wireless" > /dev/nullroute add default $wirelessfiecho "wait 2s and retry" > /dev/nullsleep 2s
elsesleep 2sneedRestartUdhcpc=1
fi
done

附带一些参考文章:

ppp的linux移植及ppp0的路由设置_tietao的专栏-CSDN博客_linux ppp0

linux pppd-GPRS和以太网同时在线,解决拨号默认网关_chenliang0224的专栏-CSDN博客

嵌入式Linux 3G pppd拨号上网问题相关推荐

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

    ___________________________________ 主机操作系统:Centos 6.5 交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台: FL2440     ...

  2. ME909S-821 4G-LTE模块在Linux系统下拨号上网测试

    转:https://blog.csdn.net/csdnhuaong/article/details/74910569 实验平台 大前提 图形化界面配置拨号上网操作 利用wvdial工具软件拨号上网操 ...

  3. linux pppd ip up 脚本,Linux下pppd拨号脚本配置(转载)

    摘要 本文主要介绍了嵌入式Linux系统下使用pppd 2.4.4来进行PPP拨号需要使用的脚本是如何配置的,配置项的含义,同时也说明了如何来配置参数,实现ppp拨号上网. 一.问题提出 嵌入式Lin ...

  4. linux系统如何拨号上网连接,教你在Linux下如何使用ADSL拨号上网

    教你在Linux下如何使用ADSL拨号上网 发布时间:2007-10-29 10:22:09来源:红联作者:demon 一.如果是新手刚开始使用Linxu的话,可用图形界面: 办法:直接在网络里建立新 ...

  5. linux ppp拨号 USB,linux下ppp拨号上网

    转帖 如何用 Linux 拨号上网 一.Linux 上的 PPP Linux 中已经包括了点对点协议PPP,其主体是 pppd ,如果你已经使用过 Windows95 或 NT 的拨号网络,那么你已经 ...

  6. linux ppp用户管理,linux下ppp拨号上网

    转帖 如何用 Linux 拨号上网 一.Linux 上的 PPP Linux 中已经包括了点对点协议PPP,其主体是 pppd ,如果你已经使用过 Windows95 或 NT 的拨号网络,那么你已经 ...

  7. linux GPRS模块拨号上网

    使用GPRS模块拨号上网之前需要一直pppd和chat 首先配置内核中的ppp选项, Make menuconfig Device dirver --->Network device │ │   ...

  8. 阿雪的学习记录|解决Linux下PPPoE拨号上网不稳定的问题

    上次拨号上网成功之后,新的问题又出现了,那就是网络秒掉线且网速及其慢,归纳为网速不稳定,然后去网上找了很多方法,什么检查防火墙配置啊--这了那了的,都不太行呢,最后参考了这篇就解决啦- Ubuntu1 ...

  9. linux怎么配置拨号上网,linux拨号上网怎么设置

    匿名用户 1级 2017-06-20 回答 ADSL上网,Ubuntu下是可以的,虽然以前没用过拨号上网,不过查了查也不是很麻烦. 打开终端配置上网: zhancang@ubuntu:~$ sudo ...

最新文章

  1. MyEclipse对Struts2配置文件较检异常 Invalid result location value/parameter
  2. 智源研究院多位学者入选“三大奖”!2020年度国家科学技术奖初评结果公布
  3. autofs一个神奇的服务
  4. 牛客华为机试第5题python
  5. zend framework mysql_Zend Framework连接Mysql数据库实例分析
  6. linux远程用户登陆监控
  7. 转载:CSS垂直居中总结
  8. ssh excel 导入 mysql_ssh poi解析excel并将数据存入数据库
  9. 院士:青年科学家5年内拿不出成果就面临淘汰,想坐‘冷板凳’都坐不了!
  10. 面试官:聊一下你对MySQL索引的理解?
  11. PSPNet-tensorflow实现并训练数据
  12. 磁盘位置_Win10创建和附加虚拟硬盘|Win10怎么创建VHD虚拟磁盘
  13. 爬虫里的多线程基本使用
  14. 手把手教你在eclipse 中 配置maven
  15. 编译原理完整学习笔记(八):目标代码生成
  16. 数美黑产研究院|揭秘黑产非法盗爬访问与非法占座“抢票”行径
  17. No buffer space available 和windows 2003复制文件时:配额不足,无法处理该命令
  18. 2021年中国消费金融行业贷款情况及发展趋势分析:互联网消费金融放款规模达到20.2万亿[图]
  19. 一键上传文档至Google文档
  20. 仿京东左侧菜单弹出html代码,一个类似京东网页左侧菜单扩展的特效代码

热门文章

  1. 【LeetCode】460 and 1132(LFU缓存机制)
  2. 图 邻接矩阵幂的含义 离散数学定理14.11
  3. Python爬取天天基金网历史数据
  4. CSS---足球场的实现,纪念2022世界杯(:root的使用)
  5. matlab 有一函数 _写一程序_输入自变量的值_输出函数值.,第2讲 MATLAB入门1_数学建模_ppt_大学课件预览_高等教育资讯网...
  6. python 简历处理_利用python处理简历和名单——处理excel os、shutil处理文件
  7. Linux搭建泰拉瑞亚(原版/模组/插件)服务器之1.4模组服务器
  8. [Design]国粹京剧 脸谱表情 值得收藏
  9. Android Studio打造一个小说阅读App
  10. 一、Synchronized详解与锁升级