移远官网

请问RM500U是否可以通过PPP进行连接通信,我尝试用stm32h7 lwip进行PPP连接,我完成LCD连接后,在ipcp遇到模组错误

我已经调试了大约2周-3周时间了,我想确认一下是不是rm500u,在单片机情况下进行PPP通信是有问题的,我的模组固件是RM500UCNAAR02A04M2G_01.001.01.001

现在情况是我通过取消掉PPP LCD Magicnumber建立LCD连接,没有使用pap用户认证,直接在IPCP的阶段获取IP地址情况下返回+CME ERROR: 4,所以我想确认RM500U是否可以建立PPPos通信,我在材料上看是支持PPP通信,以下是我的AT指令以及PPP记录

RDY

AT

OK

AT+CMEE=2

OK

AT+QCFG=“usbnet”,5

OK

AT+QCFG=“nat”,0

OK

A

T+CFUN=1

OK

AT+CIMI

460099035700874

OK

AT+CGDCONT?

+CGDCONT: 1,"IPV4V

6",“3gnet”,“0.0.0.0”,0,0,0,0,0,0,0,0,0,0

+CGDCONT: 2,“IP”,“zjbg”,“0.0.0.0”,0,0,0,0,0,0,0,0,0,0

+CGDCONT: 11,"I

PV4V6",“ims”,“0.0.0.0”,0,0,0,2,0,0,0,0,0,0

OK

AT+QNETDEVCTL=1,3,1

OK

AT+QNETDEVSTATUS=1

+CME ERROR:

3

AT+QNETDEVSTATUS=1

+QNETDEVSTATUS: 172.31.4.232,255.255.255.0,

172.31.4.1,10.99.200.121,210.21.4.130,

OK

AT+CGDATA=“PPP”,1

OK

ppp phase changed[0]: phase=0

ppp_connect[0]: holdof

f=0

ppp phase changed[0]: phase=3

pppos_connect: unit 0: connecting

ppp_start[0]

ppp phase changed[0]: phase=6

pppos_send_config

[0]: out_accm=FF FF FF FF

ppp_send_config[0]

pppos_recv_config[0]: in_accm=FF FF FF FF

ppp_recv_

config[0]

ppp: auth protocols: PAP=1 CHAP=0 CHAP_MD5=0

sent [LCP ConfReq id=0x1 <asyncmap 0x0> ]

pppos_write[0]: len=18

ppp_start[0]: finished

~}#}!}!} }.}"}&}pppos_input[0]: got 37 bytes

rc

vd [LCP ConfReq id=0x1 <asyncmap 0x0> ]

sent [LCP ConfAck id=0x1 <asyncmap 0x0>

]

pppos_write[0]: len=18

}#}"}!} }.}"}&} } } } }’}"}(}

"N穨pppos_input[0]: got 36 bytes

rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> ]

netif

_set_mtu[0]: mtu=1500

pppos_send_config[0]: out_accm=0 0 0 0

ppp_send_config[0]

pppos_recv_config[0]: in_accm=0 0 0 0

ppp_recv_c

onfig[0]

ppp phase changed[0]: phase=7

ppp phase changed[0]: phase=9

sent [IPCP ConfReq id=0x1 <

addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_input[0]: Dropping bad fcs 0x3518 pr

oto=0x8021

pppos_input_drop: pbuf len=22, addr 2404e170

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_inpu

t[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbuf len=22, addr 2404e170

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_input[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbu

f len=22, addr 2404e170

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_input[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbuf len=22, addr 2404e170

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_input[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbu

f len=22, addr 2404e170

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_i

nput[0]: got 25 bytes

pppos_input[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbuf len=22, addr 2404e170

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_input[0]: Dropping bad fcs 0x3518 pr

oto=0x8021

pppos_input_drop: pbuf len=22, addr 2404e170

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_inpu

t[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbuf len=22, addr 2404e170

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_input[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbu

f len=22, addr 2404e170

IPCP: timeout sending Config-Req

uests

ppp phase changed[0]: phase=11

ppp phase changed[0]: phase=6

pppos_send_config[0]: out_accm=FF FF FF FF

ppp_send_config[0]

pppos_recv_config[0]: in_accm=0

0 0 0

ppp_recv_config[0]

sent [LCP TermReq id=0x2 “No network protocols running”]

pppos_write[0]: len=36

~}#}%}"} No network protocols running}7}8~pppos_input[0]: got 46 bytes

pppos_input[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbuf len=22, a

ddr 2404e170

rcvd [LCP TermReq id=0x2 “No network protocols running”]

sent [LCP TermAck id=0x2]

pppos_write[0]: len=8

~}#}&}"} }$攠-~pppos_input[0]: got 18 bytes

rcvd [LCP TermAck id=0x2]

ppp phase changed[0]: phase=12

Connection terminated.

ppp_link_terminated[0]

ppp_link_e

nd[0]

ppp phase changed[0]: phase=0

status_cb: Connection lost

ppp_connect[0]: holdoff=30

ppp phase changed[0]: phase=2

ppp_link_terminated[0]: finished.

麻烦了

这是用串口还是用USB。
在进行ppp拨号后不应该去自己发送AT指令了。
在IPCP的时候串口应该已经要进入数传模式。

还有,可以不要去发AT+QNETDEVCTL拨号了。

谢谢回复,我这个例子是串口的,我晚上试试看,就是默认只要切到 AT+CGDATA=“PPP”,1 数传模式就可以了是么

好像还是不可以,AT+QNETDEVCTL去掉后情况差不多

RDY

AT

OK

AT+CMEE=2

OK

AT+QCFG=“usbnet”,5

OK

AT+QCFG=“nat”,0

OK

A

T+CFUN=1

OK

AT+CIMI

460099035700874

OK

AT+CGDCONT?

+CGDCONT: 1,“IPV4V6”,“3gnet”,“0.0.0.0”,0,0,0,0,

,0,0,0,0,0,0

+CGDCONT: 2,“IP”,“zjbg”,“0.0.0.0”,0,0,0,0,0,0,0,0,0,0

+CGDCONT: 11,“IPV4V6”,“ims”,“0.0.0.0”,0,0,0,2,

,0,0,0,0,0,0

OK

AT+CGDATA=“PPP”,1

OK

ppp phase changed[0]: phase=0

ppp_connect[0]:

holdoff=0

ppp phase changed[0]: phase=3

pppos_connect: unit 0: connecting

ppp_start[0]

ppp phase changed[0]: phase=6

pppos_send_

config[0]: out_accm=FF FF FF FF

ppp_send_config[0]

pppos_recv_config[0]: in_accm=FF FF FF FF

ppp

_recv_config[0]

sent [LCP ConfReq id=0x1 <asyncmap 0x0> ]

pppos_write[0]: len=18

ppp_start[0]: finished

~}#}!}!} }.}"}&} } } } }’}"}(

}"p4~pppos_input[0]: got 37 bytes

rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> ]

sent

[LCP ConfAck id=0x1 <asyncmap 0x0> ]

pppos_write[0]: len=18

~}#}"}!} }.}"}&} } } } }’}"}(}"N穨pppos_input[0]: got 37 bytes

rcvd [LCP ConfAck id=0x1 <asyn

cmap 0x0> ]

netif_set_mtu[0]: mtu=1500

pppos_send_config[0]: out_accm=0 0 0 0

ppp_send_config[0]

pppos_recv_conf

ig[0]: in_accm=0 0 0 0

ppp_recv_config[0]

ppp phase changed[0]: phase=9

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

~€!

+CME ERROR: 4

pppos_input[0]: got 25 bytes

pppos_inpu

t[0]: Dropping bad fcs 0x3518 proto=0x8021

pppos_input_drop: pbuf len=22, addr 2404e0f4

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

pppos_write[0]: len=14

在ATD*99#以后就不要再去发AT命令了

屏幕截图 2024-10-31 060958

用atd99**1#好像也不能进入数传模式,我感觉rm500u这块资料的确少

哦对了,我这里是私网5G网络,每张sim卡是固定ip地址的

屏幕截图 2024-10-31 060958

RM500U ATD*99# 这条命令不可以用的,+CME ERROR:error, 我用的是AT+CGDATA=“PPP”,1,我感觉我是不是一直没有打开数传模式

我建议你在Windows 或者Linux 上试下这个ppp。
专网卡一般只会给你准备一个ip地址,如果已经做了其他拨号,ppp 应该是没法拨号成功的。

ATD*99# 是公网卡做ppp 拨号的时候要使用

请问一下,windows上怎么测试ppp,我试了一下windows usbnet:RNDIS,倒是默认可以连接的上私网ip,而且分配地址也对

我主要是用rm500u,内置AT指令发送TCP数据包,感觉性能太差了,好像收到限制比较严重,一次数据包蔡1460,间隔限制,上行最多40k,所以才想用PPP外部连接通过外部协议栈跳过这些限制,工业上用linux不稳定的情况太多了,希望用单片机直接带起来,可惜我调了好2,3周了呵呵

单片机怎么用ppp,我们没有这个经验。
Windows 就是使用系统自带的拨号。可以参考文档

我按照文件《Quectel_LTE_Standard(A)系列_PPP_应用指导_V1.5》内容里面的windows配置试过了,应该擦欧总没有错

1我使用移动公网SIM卡5G

2建立调制解调器端口我用usb at com22
ANP设置AT+CGDCONT=1,“IP”,“CMNET”

3 调制解调器我设置115200
4 建立拨号选择新建调制解调器,然后拨号用*99#
2
3
5 最后连接还是失败 678

但是在usb串口里进行拨号是成功的

这个是不是证明RM500U,是不是默认不支持PPP通信,或者我用的固件版本不支持PPP,方便确认一下么
如果RM500U不行的话方便推荐一下固件或者其他模组么

你可以换个公网卡试试。怀疑和专网卡有关。
5G一般不会再使用ppp了,但是应该是支持的,在spec或者releasenote 里可以看到。

如果PPP不行的话,考虑单片机RNDIS驱动了,本来以为PPP是最简单的

不过传统工业上使用,特别是通信私网改造,一般不会用linux,因为如果linux相对于硬实时系统或者单片机来说,还是单片机稳定很多,而且linux工作环境要求也很高,希望这个可以调通比较有价值,还有除了PPP以外,你们有考虑过单片机连接5G么

我目前用的就是公网卡,不过板子是自己做的,按照你们指导文件,我猜想ppp应该和硬件无关吧

RM500U-CN PPPOS 是支持的,usb连接的话要用默认驱动创建的调制解调器,公网sim是可以的,其他端口不行
RM500U_PPP

移远在搞STM32,基于移远自己的TCP/MQTT/TCP使用AT指令. 但是应该是基于FreeRTOS的,并且只有AT指令,不包括usbnet还有ppp这类需求。
(https://github.com/Quectel-user-friendly-develop/STM32)
如果使用单片机接移远的5G模组,对模组性能也浪费。在网上搜,应该可以搜到一些但是都是基于4G模组。

这个项目看介绍好像只是封装AT指令的,如果可以使用外部协议栈提高性能的话蛮好,如果只是单独代替AT指令做个SDK封装好像意思不大