ppp拨号上网总结

【原创】ppp拨号上网总结 【原创】ppp拨号上网总结 Author: chad Mail: linczone@163.com 本文可以自由转载,但转载请务必注明出处以及本声明信息。一、开发环境简述GPRS模块 MC52I SIM卡 移动 嵌入式开发板 AT91SAM9260EK linux版本 2.6.30 主机环境 阅读详情

ppp拨号上网总结

Author: chad
Mail: linczone@163.com

本文可以自由转载,但转载请务必注明出处以及本声明信息。

一、开发环境简述

  • GPRS模块 MC52I
  • SIM卡 移动
  • 嵌入式开发板 AT91SAM9260EK
  • linux版本 2.6.30
  • 主机环境 ubuntu
  • ppp-2.4.4 拨号程序源码包见本笔记附件。
  • 附件内为运行正常的ppp-on与ppp-on-dialer脚本,使用时放在/sbin目录下即可。

二、主要步骤

  1. 内核添加PPP支持。
  2. 下载ppp-2.4.4源码进行编译。
  3. 移植到开发板进行测试。

三、配置详细说明

1、内核添加PPP支持,make menuconfig,按如下步骤配置:
ppp协议支持的添加(下面所示的几个选项必选)。

Device Drivers--→
Network device support---→
<*> PPP (point-to-point protocol) support   
              [*]   PPP multilink support (EXPERIMENTAL)     
              <*>   PPP support for async serial ports      
              <*>   PPP support for sync tty ports          
              <*>   PPP Deflate compression                 
               <*>   PPP BSD-Compress compression 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

完成这些步骤之后,可以进行内核的交叉编译,退出make menuconfig,输入:

make zImage ARCH=arm CROSS_COMPILE=arm-linux-

编译生成的内核映像文件位于当前内核源代码文件的/arch/arm/boot目录下,将生成的内核映像文件下载到板子上。
内核启动后,会在/dev目录下生成ppp设备节点。如:

ls /dev/ppp -l
crw-rw----  1 root   root  108, 0 Jan  1 00:00 /dev/ppp
  • 1
  • 2

2、交叉编译好工作源代码ppp-2.4.4,得到pppd和chat。

解压源代码包,进入目录,进行交叉编译,这里所用的板子的交叉编译器是:

#cd /home/ppp-2.4.4
#./configure
#make CC= arm-linux-gcc
  • 1
  • 2
  • 3

拨号所用到的程序就是ppp-2.4.4/pppd下的pppd和ppp-2.4.4/chat下的chat可执行程序,将交叉编译出来的这两个应用程序拷贝到开发板 /sbin目录下,更改其属性为可执行文件。

3、配置拨号用脚本文件

拨号上网需要的配置文件有3个:ppp-on 、ppp-off 、ppp-dial-on,这三个文件可以在 ppp-2.4.4/script 文件夹内找到。

(1)修改ppp-on:

#vi ppp-on

内容如下,修改一下里面的内容

TELEPHONE=555-1212 改为 TELEPHONE=*99***1#


exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS0 38400 asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
改为
exec /sbin/pppd debug lock modem nocrtscts 你的串口设备 你的波特率 asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

ppp-on 修改完成后执行 ESC 和 :wq ! 强制保存。
我的ppp-on 内容如下图:
这里写图片描述

(2) 修改ppp-on-dialer

#vi ppp-on-dialer

删除最后两行关于 拨号帐户密码的。
到此修改结束

(3)相关文件拷贝到开发板上

需要复制的文件有pppd、chat、pppdump、pppstats,这四个文件复制到开发板/sbin目录下,pppdump用来对ppp连接打印日志进行格式化处理,一般用不到。pppstats用来查看ppp连接的状态信息如网络速度等。pppd与chat是ppp连接的主程序。

ppp-on/ppp-on-dialer/ppp-off三个文件复制到/sbin目录下,保证有可执行权限。三个文件的内容如下:

ppp-on文件:
#!/bin/sh
#
# Script to initiate a ppp connection. This is the first part of the
# pair of scripts. This is not a secure pair of scripts as the codes
# are visible with the 'ps' command.  However, it is simple.
#
# These are the parameters. Change as needed.
#TELEPHONE=555-1212     # The telephone number for the connection
TELEPHONE=*99***1#      # The telephone number for the connection
#ACCOUNT=george         # The account name for logon (as in 'George Burns')
#PASSWORD=gracie                # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0        # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0       # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0   # The proper netmask if needed
#
# Export them so that they will be available at 'ppp-on-dialer' time.
export TELEPHONE ACCOUNT PASSWORD
#
# This is the location of the script which dials the phone and logs
# in.  Please use the absolute file name as the $PATH variable is not
# used on the connect option.  (To do so on a 'root' account would be
# a security hole so don't ask.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Initiate the connection
#
# I put most of the common options on this command. Please, don't
# forget the 'lock' option or some programs such as mgetty will not
# work. The asyncmap and escape will permit the PPP link to work with
# a telnet or rlogin connection. You are welcome to make any changes
# as desired. Don't use the 'defaultroute' option if you currently
# have a default route to an ethernet gateway.
#
exec /sbin/pppd debug lock modem nocrtscts /dev/ttyS1 115200 \
        asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \
        noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT

ppp-on-dialer文件:
#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#测试中发现该脚本总是不能正常执行,明明设计的是什么也不期望直接发送at,但实际测试发现
#程序实际运行的是首先期望at,如果收不到就出错退出!但是将exec去掉后运行正常,证明:exec
#运行时,参数中at之前的“”空被删除了,导致程序运行一直出错!!!
#exec chat -v                   
chat -v  \
        ABORT           BUSY                                            \
        ABORT           'NO ANSWER'                                     \
        ABORT           RING                                        \
        ''                      AT                          \
        OK                      AT+CGDCONT=1,"\"IP\"","\"CMNET\""       \
        OK                      AT+CGACT=1,1                            \
        OK                      ATDT$TELEPHONE              \
        CONNECT
#       ogin:--ogin:    $ACCOUNT                    \
#       assword:        $PASSWORD

ppp-off文件:
#!/bin/sh
######################################################################
#
# Determine the device to be terminated.
#
if [ "$1" = "" ]; then
        DEVICE=ppp0
else
        DEVICE=$1
fi

######################################################################
#
# If the ppp0 pid file is present then the program is running. Stop it.
if [ -r /var/run/$DEVICE.pid ]; then
        kill -INT `cat /var/run/$DEVICE.pid`
#
# If the kill did not work then there is no process running for this
# pid. It may also mean that the lock file will be left. You may wish
# to delete the lock file at the same time.
        if [ ! "$?" = "0" ]; then
                rm -f /var/run/$DEVICE.pid
                echo "ERROR: Removed stale pid file"
                exit 1
        fi
#
# Success. Let pppd clean up its own junk.
        echo "PPP link to $DEVICE terminated."
        exit 0
fi
#
# The ppp process is not running for ppp0
echo "ERROR: PPP link is not active on $DEVICE"
exit 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95

四、应用测试

1)连接好GPRS模块,保证GPRS模块已经正确复位。
2)开启syslogd服务
保证能够查看调试日志,开启方法可以执行:
#syslogd
并建立/var/log 、/var/run 两个目录,否则会看不到日志,pppd程序也会报错。
3)执行ppp-on进行拨号测试。

注意:

错误往往就在此时发生了,配置好内核中的ppp选项,编译好ppp-2.4.4并将生成的程序与脚本拷贝到目标板,配置好环境变量,基本上ppp拨号上网的基础准备就ok了,但是,由于各种各样因为脚本配置的问题都会导致ppp测试失败,有时候你废了很长时间一直找不到问题的原因,而其实原因很有可能就是脚本的配置原因。

以上脚本表面看着没问题,并且网上也有很多人安照上面的执行成功了,但是我进行测试时却废了一天多的时间一直没有调试成功,总是报出脚本连接错误之类的问题。最后实在没办法,只好在pppd与chat的源码中中添加了很多自定义的调试信息,一行行的跟踪ppp程序的运行。同时,监控GPRS串口才发现执行ppp-on后pppd程序根本没有向gprs串口发送任何AT指令,只在最后出错退出前打印了一条:exitcode 3!

在我最后实在找不到原因而从网上无意看到一句,然后灵光一闪,在命令行输入下面的指令:

$pppd connect 'chat -v "" "AT" "OK" "AT+CGDCONT=1,\"IP\",\"CMNET\"" "OK" "AT+CGACT=1,1" "OK" "ATDT*99***1#" "CONNECT"' user CARD password CARD /dev/ttyS1 115200 nodetach nocrtscts
  • 1

奇迹出现了,pppd程序正常运行了,最后pppd程序留下了下面的调试信息(我自己修改pppd源码打印出的信息,非标准):

initializer = (null)
connector = chat -v "" "AT" "OK" "AT+CGDCONT=1,\"IP\",\"CMNET\"" "OK" "AT+CGACT=1,1" "OK" "ATDT*99***1#" "CONNECT"
device_script chat -v "" "AT" "OK" "AT+CGDCONT=1,\"IP\",\"CMNET\"" "OK" "AT+CGACT=1,1" "OK" "ATDT*99***1#" "CONNECT",7
Serial connection established.
serial connection ok!
local = 0 modem = 1 ctrscts=-1
numbuf = 115200
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS1
local  IP address 10.124.161.52     ---------拨号成功,获取到的IP
remote IP address 10.124.161.52
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

程序执行到此后永不退出,除非断线!!!!!!

在另一个控制台中执行ifconfig,结果如下:

# ifconfig
    eth0      Link encap:Ethernet  HWaddr 08:00:3E:26:1A:5B 
    inet addr:192.168.0.252  Bcast:192.168.0.255  Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    RX packets:986 errors:0 dropped:0 overruns:0 frame:0
    TX packets:758 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:65629 (64.0 KiB)  TX bytes:58426 (57.0 KiB)
    Interrupt:21 Base address:0x4000

    ppp0      Link encap:Point-to-Point Protocol 
    inet addr:10.124.161.52  P-t-P:10.124.161.52  Mask:255.255.255.255
    UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
    RX packets:6 errors:0 dropped:0 overruns:0 frame:0
    TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:3
    RX bytes:60 (60.0 B)  TX bytes:87 (87.0 B)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

4)ping外网测试

输入命令:

ping –I ppp0 180.173.182.193

这里写图片描述

这个时候你只可以使用ip地址进行ping,如果执行ping www.baidu.com 会出现错误,原因是没有设置DNS服务器地址。为了设置DNS服务器地址,可以将主机上的/etc/resolv.conf文件直接拷贝到目标机上,如下所示:
这里写图片描述

注意:有的文章上说建立/etc/ppp/resolv.conf文件,在此文件中指明dns服务器地址,但是实际测试发现不行,必需是/etc/resolv.conf才可以。
设置好DNS后,直接ping域名进行测试,输入命令:

Ping –I ppp0 www.sina.com

这里写图片描述

5)telnet测试
登录水木社区,输入命令:

telnet bbs.newsmth.net

这里写图片描述

注意:在做的时候将ARM板子上的网线拔掉!

至此,测试成功。但是前面使用脚本进行测试时为什么出错呢??

五、错误问题及原因分析

使用配置脚本的方法,为什么总是出错?为什么使用单命令行的方式却执行正确呢?

要弄明白原因,先分析下chat程序的工作原理。

1、chat 程序工作原理

chat 程序是一个自动聊天程序,程序非常简单,chat根据配置的信息主动向stderr 输出信息,同时,从stdin获得期望输入。chat程序输入端口为stdin,输入端口为stderr。所以,如果使用本程序进行拨号上网时,必需将stdin与stderr映射到对应的串口。

chat的配置信息来自两个地方:
1. 命令行参数;
2. chat配置脚本,使用参数-f 时指定。

chat的使用方法:

chat的参数遵循这样的模式:expect-send(期望-发送)
例如:

ogin:-BREAK-ogin: ppp ssword: hello2u2

chat 首先会等待接收“ogin:”,如果超过一段时间没有收到,则发送 BREAK信号,然后再次等待“ogin: ”,如果收到则发送ppp。但是,如果一开始就收到了“orgin: ”则直接发送“ppp”,而不是BREAK信号。

BREAK信号是一个组合键,一般为同时按下控制键(Ctl)和Break键的组合值。chat程序会将-BREAK-替换为\K\c。

收到“ogin: ”后发送“ppp”,然后等待“ssword: ”收到后发送密码“hello2u2”,如果超过时间没有收到,则chat会打印相应的日志,然后退出程序。

需要注意的是,如果期望“ogin:”而实际收到的是“login: ”,那么chat会认为没有收到期望字符而失败!但是,如果期望“login”而收到“login:”这在不影响程序的正确执行。

#字符会被当做注释而忽略掉,如果确实需要使用#字符,可是使用'#'模式,如'#'  logout,则是期望收到#然后输出logout。
  • 1

ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT

这就话的意思是,chat什么也不期望(” 表示什么也不期望),直接发送ATZ,然后期望OK,收到OK后发送ATDT5551212,然后再期望CONNECT,但是如果收到BUSY/NO CARRIER 这一些字符则发生ABORT,即chat程序退出。

chat具体用法可以使用man chat 查看。

2、结论

根据上文chat原理进行综合分析,最终确认原因已经记录在配着脚本ppp-on-dialer中,如下:

# vim ppp-on-dialer

  1 #!/bin/sh
  2 #
  3 # This is part 2 of the ppp-on script. It will perform the connection
  4 # protocol for the desired connection.
  5 #
  6 #
  7 #测试中发现该脚本总是不能正常执行,明明设计的是什么也不期望直接发送at,但实际测试发现
  8 #程序实际运行的是首先期望at,如果收不到就出错退出!但是将exec去掉后运行正常,证明:exec
  9 #运行时,参数中at之前的“”空被删除了,导致程序运行后直接期望的是at而不是什么不期望发送at,进而导致一直出错!!!
10 #修改为如下指令后就可正常运行:
 11 #exec chat -v                               \
 12 chat -v                             \      
 13     ABORT       BUSY                        \
 14     ABORT       'NO ANSWER'                 \
 15     ABORT       RING                        \
 16     ''          AT                          \
 17     OK          AT+CGDCONT=1,"\"IP\"","\"CMNET\""   \
 18     OK          AT+CGACT=1,1                \
 19     OK          ATDT$TELEPHONE              \
 20     CONNECT
 21 #   ogin:--ogin:    $ACCOUNT                    \
 22 #   assword:    $PASSWORD
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
[学习笔记]Esp32 + 4G模块,随身wifi,ppp拨号上网 Esp32S3 + 4G模块制作随身WIFI教程 阅读详情

相关推荐

linux下 ppp 4G模块拨号上网与解析

linux下通过ppp协议完成EC20 4G模块上网拨号的过程与详解

pjwshuai的博客 1万+

PPP拨号

介绍PPP拨号的相关内容。PPP(Point-to-Point Protocol)协议是一种点到点链路层协议,主要用于在全双工的同异步链路上进行点到点的数据传输。

啊唯的博客 3583

Raspberrypi —— 实现 EC20 4G模块PPP拨号上网

文章目录一 . PPP协议1.1 什么是PPP1.2 PPP认证方式二. Linux中的PPP实现2.1 Linux中的PPP架构2.2 PPP协议族三. 拨号上网流程3.1 硬件准备3.2 软件准备3.3 拨号脚本四. 开始拨号五. 补充 一 . PPP协议 1.1 什么是PPP PPP协议(Point-to-Point Protocol)是一种网络协议中最为基础的协议,工作于数据链路层,它是为在同等单元之间传输数据包这样的简单链路而设计的,这种链路提供了全双工操作,并按照顺序传递数据包。PPP为基于各种

weixin_45121946的博客 7028

PPP拨号流程

1、PPP概述 1.1 PPP(点对点协议)概述 PPP(点到点协议)在拨号过程中用于MS和PC间数据交互、协商。在拨号流程的初期首先开启的就是PC和MS直接的PPP过程,在拨号成功后,还需要依靠PPP协议对IP包进行封装传输数据。 PPP是数据链路层的协议,提供了一种在点对点的链路上封装多协议数据报(IP、IPX和AppleTalk)的标准方法。它不仅能支持IP地址的动态分配和管理;同步(

wwwtovvv的专栏 1万+

实现4G模块EC20在树莓派系统下的PPP拨号上网

PPP协议 什么是PPP协议 PPP协议(Point-to-Point Protocol)是一种网络协议中最为基础的协议,工作于数据链路层,它是为在同等单元之间传输数据包这样的简单链路而设计的,这种链路提供了全双工操作,并按照顺序传递数据包。PPP为基于各种主机,网桥和路由器的简单连接提供一种共通的解决方法。 PPP协议包括以下三个部分: 数据帧封装方法 链路控制协议LCP,(Link, Control Protocol):它用于对封装格式选项的自动协商,建立和终止连接。探测链路错误和..

Tian Jincheng's Blog 4592

linux gprs模块 sim900芯片 ppp拨号上网

开发板:FL2440      内核版本:linux-3.0     芯片:sim900 一,GPRS介绍  GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块根据其提供的数据传输速率又可以分为GPRS模块、EDGE模块和纯短信模块。短信模块只支持语音和短信服务。GPRS,可说

Xiongzhizhu的博客 5445

实现 EC20 4G模块PPP拨号上网

目录前言一、ppp/pppd/chat关系及数据收发1、协议相关介绍1.1 什么是PPPPPP认证1.2 什么是PPPD1.3 什么是chat1.4 他们之间的联系应用关系数据收发流程发送数据流程接收数据流程二、拨号上网流程2.1 硬件准备2.2 软件准备3.3拨号脚本开始拨号 前言 在学习4G拨号前,我们要先把ppp/pppd/chat关系及数据收发给捋清楚了。为了加深映像,特此写下这篇博客 提示:以下是本篇文章正文内容,下面案例可供参考 一、ppp/pppd/chat关系及数据收发 1、协议相关介

persist_with的博客 6319

sim900芯片—GPRS模块ppp拨号上网

sim900芯片—GPRS模块ppp拨号上网 ——————————————————————————————————————— 主机操作系统:Centos 6.5 交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台: FL2440 Linux内核版本: linux-3.0 开发模块: SIM900 GPRS 邮箱:leiyuxing@674116231.com

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 5376

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

转帖如何用 Linux 拨号上网一、Linux 上的 PPPLinux 中已经包括了点对点协议PPP,其主体是 pppd ,如果你已经使用过 Windows95 或 NT 的拨号网络,那么你已经具备了 PPP 的基本经验了。在 Windows95 的 PPP 在同 ISP 连接后,视 ISP 情况不同,会自动为 Windows 客户机提供 IP 地址和 DNS 服务器地址,而 Linux 的 PP...

weixin_36403106的博客 894

在ARM Linux上实现4G模块PPP拨号上网 ARM开发

PPP(Point-to-Point Protocol)是一种常用的网络协议,它可以在串行链路上建立点对点的连接。在ARM Linux平台上,我们可以利用PPP协议与4G模块进行通信,实现拨号上网功能。本文将详细介绍如何在ARM Linux上配置和使用PPP协议,以及提供相应的源代码示例。首先,我们需要准备一个支持PPP协议的4G模块。通过配置PPP参数和使用相应的脚本,我们可以与4G模块建立连接并进行互联网访问。在ARM Linux设备上,我们需要安装PPP软件包以支持PPP协议。替换为您的APN名称。

KwmGroovy的博客 1189

PPP拨号协议和原理详解

1、试用用PPP拨号协议和原理详细解释; 2、试用于2G/3G/4G模块PPP连接window和linux系统;

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

转帖如何用 Linux 拨号上网一、Linux 上的 PPPLinux 中已经包括了点对点协议PPP,其主体是 pppd ,如果你已经使用过 Windows95 或 NT 的拨号网络,那么你已经具备了 PPP 的基本经验了。在 Windows95 的 PPP 在同 ISP 连接后,视 ISP 情况不同,会自动为 Windows 客户机提供 IP 地址和 DNS 服务器地址,而 Linux 的 PP...

weixin_34343610的博客 991

ESP32通过4G模块PPP拨号上网[项目代码]

本文详细介绍了如何基于ESP-IDF框架,通过ESP32的串口连接4G模块(如移远EC800K-CN),实现PPP拨号上网并连接TCP服务器的完整流程。文章首先阐述了PPP协议在串行链路上传输IP数据包的核心原理,以及AT命令配置4G模块的关键步骤。随后通过代码解析展示了ESP32如何创建PPP虚拟网卡、绑定UART驱动、处理PPP事件,并利用FreeRTOS的事件组实现任务间同步。重点讲解了TCP客户端的实现细节,包括DNS解析、Socket连接、KeepAlive机制以及自定义应用层协议(0x2A/0x2C/0x2B帧)的握手流程。最后提出了分级重连策略:当TCP连接异常时优先快速重连,若PPP链路中断则触发完整重拨流程。整个方案在无WiFi环境下为物联网设备提供了稳定的蜂窝网络接入能力。

ppp拨号上网

1:编译工具:arm-elf-gcc -v gcc version 2.95.3       开发版 : 杭州立宇泰公司的 armsys44b0 2: 编译内核使支持ppp make menuconfig network device support ppp support ppp multilink support ppp support for async seri

linux 应用开发 4270

深度学习笔记(3)——kernel(内核)与filter(滤波器)

本文仅仅简单介绍了kernel和filter的概念,介绍了确定filter和kernel个数的方法。

cs111211的博客 7137

linux下C语言新建ppp网卡,linux下ppp拨号上网

转帖如何用 Linux 拨号上网一、Linux 上的 PPPLinux 中已经包括了点对点协议PPP,其主体是 pppd ,如果你已经使用过 Windows95 或 NT 的拨号网络,那么你已经具备了 PPP 的基本经验了。在 Windows95 的 PPP 在同 ISP 连接后,视 ISP 情况不同,会自动为 Windows 客户机提供 IP 地址和 DNS 服务器地址,而 Linux 的 PP...

weixin_28769141的博客 903

LangGraph实战训练营-打造 WhatsApp 全自动消息收发AI智能助手

本文系统梳理了项目架构(WhatsApp Bridge + Talon Host + LangGraph Agent Harness三层设计)、完整环境搭建流程(Docker/本地双模式部署)、核心原理(WhatsApp桥接机制、NVIDIA Parakeet语音转录管线、Cron定时调度、Agent图状状态机),并提供了基础对话、文件操作、语音处理、定时任务等六大实战示例。同时涵盖安全策略、性能优化、数据备份等生产级运维实践,以及十个高频问题的排查方案。

program哲学 191

SIM7600CE TCP/IP连接与PPP拨号上网

SIM7600CE联网测试分为两部分: 1、TCP/IP连接 2、PPP拨号上网 实验环境:ubuntu-meta 16.04 硬件:树莓派3B,SIM7600CE 上网卡:移动的NB-IOT物联网卡 微雪官方教程:http://www.waveshare.net/wiki/SIM7600CE_4G_HAT 把模块插入到树莓派,并USB接口连到树莓派USB口上,开机,如下图所示: ...

weixin_30799995的博客 1867

【2026最新版】python点云处理算法汇总(长期更新版)

python点云处理算法整理。博客长期更新,最近一次更新时间为:2026年10月4日。

点云侠的博客 42万+

Calibre:LVS 快速debug short/open技巧

用Fix Suggestion和Short Isolate两种方法debug LVS问题

m0_61544122的博客 7460

linux PPP拨号上网

浅析基于ppp的linux下脚本拨号上网2009年05月27日 星期三 下午 11:56既然是拨号上网,就不能不提到ppp(point-to-point protocol)协议.ppp协议提供了一种通过串行点对点联接传输数据报的方式.它由三部份组成:一种在串行封装数据报的方式,扩展联接控制协议LCP,和用来建立和配置不同网络层协议的家族网络控制协议NCP.封装方案由内核驱动

heiniaoyuyouling的专栏 3784

ARM Linux工控板+C# .NET Core:倍福ADS协议轻量化工业控制(附跨平台部署代码)

某自动化设备厂的倍福PLC控制系统曾依赖传统x86工控机:单台设备需配备1台Intel i5工控机(成本约8000元),功耗30W+,且Windows系统稳定性受工业环境干扰(如电磁辐射导致蓝屏)。更棘手的是,设备需部署在产线边缘(空间狭小),x86工控机的体积(4U机架)和散热需求(风扇噪音)难以适配;而多设备部署时,高硬件成本和高功耗导致年运维成本超20万元。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 954
上一篇: VS2010 + QT5.2+ QT-VS-Addin1.2.2开发环境配置
下一篇: DM368开发 -- 华为3G/4G模块移植
Summer_Chun
博客等级 码龄7年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值