环境:raspbian-stretch(2018-06-27)

树莓派:3代B型

  SIM868模块具有GPRS数据传输功能(2G网络),但是模块是通过AT指令控制的,在树莓派上用AT指令控制会非常不方便,如果可以像wifi一样操作就很方便了。通过ppp拨号上网就可以实现这个功能。

  这样就可以实现树莓派通过socket或者http协议直接与服务器访问。

1、安装ppp

sudo apt-get install ppp

2、进入/etc/ppp/peers目录,复制一份provider文件并命名为gprs

sudo su
sudo cd /etc/ppp/peers
cp provider gprs

3、打开并编辑gprs脚本,编写gprs脚本为PPP连接指定了连接使用的设备、使用的控制字符传输速率、指定了硬件加速、溢出控制等。

vim /etc/ppp/peers/gprs

内容修改如下:

注:加上参数-v 告诉 chat命令将其所有的输出/入拷贝到系统记录里(通常是 #/var/log/messages),chat脚本的位置可以位于/etc/目录下,也可以位于/var下,这个可以根据需要灵活设置

4、打开并编辑gprs的chat脚本

从上图中可以看到gprs的chat脚本放置在/etc/chatscripts/文件夹下的gprs文件

cd /etc/chatscripts
cp gprs gprs_copy
vim gprs

配置文件修改如下:

通过查看AT命令手册,CGDCONT是有很多参数的

三大运营商拨号设置表:

5、测试ppp拨号上网

注意:需要将eth0、wlan0即网口给禁用掉,这样ping命令才会通过ppp0端口寻找路由连接外网,但是eth0、wlan0网口禁用掉之后就不能联网了,所以下面分两种情况进行操作!

(1)、树莓派与显示器通过hdmi线直连,可按照如下进行操作

需要将eth0、wlan0即网口给禁用掉

sudo ifconfig eth0 down
sudo ifconfig wlan0 down

启动ppp拨号

pppd call gprs &

拨号成功如图所示:

ping 一下度娘看下是否可以上网,如ping通就是可以上网了。

(2)、树莓派与电脑通过 ssh 或者 远程桌面 方式连接,可按照如下进行操作

新建一个linux shell脚本,命名为:bat.sh,内容如下:

PS:使用shell脚本的目的就是为了在禁用 eth0、wlan0 网口后,让树莓派自动启动ppp拨号,并启动完成之后将 eth0、wlan0 网口开启,方便继续远程连接!!!

#!/bin/bash

echo -e "start!"

#将eth0、wlan0网口给禁用掉
sudo ifconfig eth0 down
sudo ifconfig waln0 down
#启动ppp拨号
pppd call gprs &
#将eth0、wlan0网口开启
sudo ifconfig eth0 up
sudo ifconfig waln0 up echo -e "end!"

打开Terminal终端,cd 到 bat.sh 目录下

#开启root模式
su #执行bat.sh脚本
chmod 755 bat.sh
./bat.sh

拨号成功如图所示:

指定ppp0网口ping百度,可以看到ping通了,也就说树莓派可以使用ppp拨号上网了。

PS:指定ppp0网口ping百度操作可参考指定网卡进行ping操作

6、 对于第5步操作的思考

我们注意到,如果是单独执行 pppd call gprs & 也是会产生ppp0网口 并且运营商也会分配公网ip,但是我们指定源ip去ping,却无法ping通百度,经过摸索,发现无法通过sim868上网和linux 的路由配置有关

执行完 pppd call gprs & 之后,ifconfig 查看网口配置情况

sudo pppd call gprs & 
ifconfig

可以看到,虽然无法ping通百度,但是有公网ip 10.25.98.151,查看当前路由配置

route -n

发现对于ppp0网口来说,只有一条路由记录为:

192.168.254.254     0.0.0.0    255.255.255.255    VH    0    0    0    ppp0

注:这是条主机路由,目的ip地址为192.168.254.254,所以当然无法ping通百度。

我们增加一条路由规则,

sudo route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0

可以看到多出一条目的ip地址为0.0.0.0,网关为默认网关 0.0.0.0,子网掩码为 0.0.0.0 的默认路由规则为:

0.0.0.0  0.0.0.0  0.0.0.0  V  0  0  0  ppp0

可以看到通过ppp0网口可以ping通百度了,也就是说可以通过sim868上网了。

7、 对于第5步操作的进一步思考

我们注意到5步中,有个操作为先将eth0、wlan0即网口给禁用掉,再启动ppp拨号,最后再up开启eth0、wlan0网口

先将eth0、wlan0即网口给禁用掉之前,路由配置如下:

启动ppp拨号

sudo ./bat.sh

查看路由配置如下:

发现多处一条ppp0网口的默认路由!!!

指定源ip为10.9.169.76也可ping通百度!!

8、 结语

经过第6、7步的思考,我们知道了如果单纯的执行 pppd call gprs & 启动ppp拨号的话,虽然能获得ip,但是缺少对于ppp0网口的路由配置,才导致无法通过sim868模块拨号上网。这时就需要我们增加一条如下的默认路由即可:

sudo route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0

参考资料:   http://www.waveshare.net/study/article-790-1.html

      https://blog.csdn.net/allen19881119/article/details/72457541

树莓派实现SIM868 ppp拨号上网的更多相关文章

  1. SIM7600CE TCP/IP连接与PPP拨号上网 4G上网

    SIM7600CE联网测试分为两部分: 1.TCP/IP连接 2.PPP拨号上网 实验环境:ubuntu-meta 16.04 硬件:树莓派3B,SIM7600CE 上网卡:移动的NB-IOT物联网卡 ...

  2. GPRS模块在Linux平台上ppp拨号上网总结与心得

    linux平台的ppp拨号上网,(注明:这里只谈命令行拨号,用linux就要习惯和熟练使用命令行) 在网上常见的有三种方式:1.使用智能的ppp拨号软件wvdial:参考案例:本博客的<使用wv ...

  3. sim900GPRS模块ppp拨号上网

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

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

    本文转载自:http://blog.csdn.net/zqixiao_09/article/details/52540887 在ARM平台上实现4G模块的PPP拨号上网,参考网上的资料和自己的理解,从 ...

  5. linux下GPRS模块ppp拨号上网

    ---------------------------------------------------------------------------------------------------- ...

  6. 树莓派 4G模块 PPP 拨号 NDIS 拨号

    资料参考:树莓派使用4G模块(华为ME909s-821)亲身尝试的可行方法(上)

  7. 嵌入式Linux系统---ppp拨号,4G模块上网【转】

    本文转载自:http://blog.csdn.net/qq562029186/article/details/65438553 4G模块PPP拨号上网 方法1 所需文件: xxx-chat-conne ...

  8. 0710 mux协议的作用(ppp拨号时如何和gprs进行at指令交互)

    ppp拨号使gprs上网的同时如何和gprs模块进行at指令的交互,这是一个问题. 在linux中,ppp拨号上网是内核中支持的,只需要在内核配置中选上. ppp拨号的方式使gprs进行上网与at指令 ...

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

    本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099737 一.      PPP移植 各项工作具体说明 向Linux内核添加3 ...

随机推荐

  1. Oracle客户端安装及下载地址

    一.下载 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461 ...

  2. php对数组排序 关联数组功能比较

    用php在国家统计局中抓取 省市区县 代码.名称.排序order id,处理方式是通过curl请求网址,正则匹配 获取信息,并保存为json文件,以便后期读取文件. 过程中或遇到对json文件转化为数 ...

  3. 己亥清爽恢复系列之数据文件4篇:DROP表后如何恢复(非闪回技术)

    己亥清爽系列说明:清爽系列是作为恢复系列的基础篇,基于FS(File System)文件系统的手工还原恢复,也叫基于用户管理的还原恢复,来自于博客园AskScuti. 实验说明:你不小心Drop掉了一 ...

  4. 2-第一个Django程序

    第一个Django程序 从本章节开始将通过实现一个投票应用程序,来让用户逐步的了解Django.这个程序由两步分组成: 公共站点,允许用户访问进行投票,和查看投票. 站点管理,允许添加,删除,修改投票 ...

  5. OmniGraffle原型案例 | 某APP产品原型PDF文件分享之二

    1.从 App 首页进入商城 App底部 Tab有社区.商城,我们点击「商城」进入「乐宠商城」,下面简称商城.商城采用的是经典的宫格式导航设计(还有普通列表式.和瀑布流列表式.或两者皆有等),主要有搜 ...

  6. numpy特性

    numpy特性 待办 可获取最小值最大值或者排序等操作的索引,然后通过索引取得对应值或者对应值的序列 按行按列求和.按行按列求积 方差等等统计函数使用 enter description here e ...

  7. [Netcat] 断线重连 自动重连

    今天想做些操作,所以想到了nc 但是nc太过于轻量级 所以 导致我没有找到他的断线重连功能 然后我就想到了windows的神器之一 vbs脚本 vbs代码如下 Dim a,b set a= WScri ...

  8. CentOS安装docker,及其基本操作

    CentOS安装docker,及其基本操作 一.安装docker Docker要求运行在Centos 7上,要求系统为64位,系统内核版本3.10以上 1.uname -an 查看当前系统版本 2.y ...

  9. 每天进步一点点------ORCAD Capture CIS

    ORCAD Capture CIS 一.建工程及设置 1.选主菜单 file->new->project ;弹出 project wizard 对话框,取名Myproject : Mypr ...

  10. redis 解决秒杀

    # import redis pool = redis.ConnectionPool(host = '127.0.0.1', port=6379, db=0)#创建连接池 r = redis.Redi ...