YOPEN常见问题
本文档列出了在使用过程中可能遇到的问题
socket断连
信号不稳定
信号不稳定是导致 socket 频繁断连的常见原因之一。当设备所处环境信号不佳时,会出现频繁断连的情况。
- 排查方法:检查设备端日志中的csq变化。可以通过调用
yopen_nw_get_csq
函数获取信号强度,以此了解设备当前接收到的信号状况。
示例:
ret = yopen_nw_get_csq(0, &csq);
yopen_trace("yopen_nw_get_csq ret=0x%x, csq:%d", ret, csq);
csq=24
CSQ 值 | 信号状态 |
---|---|
0~10 | 极弱 / 无信号 |
11~16 | 弱 |
17~24 | 良好 |
25~31 | 极强 |
99 | 无效 |
- 解决办法:测试网络环境,尝试将设备移动到开阔区域,例如室外空旷地带或窗户旁边等信号较强的地方,观察断连情况是否减少。
心跳包配置错误
若未配置心跳包,或心跳间隔过大都会导致socket断连
- 排查方法:当遇到不明原因断连,通过抓包查看交互流程,若为服务器主动断连且正常流程断连,建议检查心跳包配置。
- 解决方法:通过命令:AT^HEARTCONFIG设置心跳包参数
tls连接失败
TLS连接失败通常是由于协议版本、加密套件、服务器配置或 SNI等方面的问题引起的。以下为您具体分析:
SNI问题
访问 HTTPS 网站时,客户端需告知服务器访问的域名,服务器用对应域名的证书加密,如果客户端没说这个 “域名信息”(没发 SNI),但服务器同时托管了多个 HTTPS 网站,服务器无法选择的对应的证书
- 排查方法:根据抓包可以看到错误码为80的错误
- 解决方法:在wsclient.c文件中修改以下代码启用SNI
TLS版本不兼容
由于版本不兼容也会导致的连接失败
- 排查方法:根据抓包可以看到Protocol的错误
- 解决方法:在wsclient.c文件中修改以下代码选择正确的版本
加密套件不匹配
加密套件不匹配也可能导致 TLS 连接失败。
- 排查方法:根据抓包可以看到Handshake Failure的错误
- 解决方法:在wsclient.c文件中修改以下代码选择正确的版本
端口错误
端口设置错误同样会影响 TLS 连接,在wsclient.c文件中ws默认的端口为80,wss默认的端口为443
- 排查方法:根据抓包可以看到TCP连续重传的错误,即为端口错误
- 解决方法:在wsclient.c文件中修改以下代码选择正确的版本
无法注册网络
工作频段不兼容
不同的运营商和地区可能使用不同的频段,若模组工作频段与当前网络环境不匹配,会导致无法注册网络。
- 排查方法:使用
yopen_nw_get_band
函数获取模组当前的工作频段。
示例:
ret = yopen_nw_get_band(&get_band_num,get_band);
yopen_trace("ret=0x%x,yopen_nw_get_band(), gets the set band num:%d",ret,get_band_num)
- 解决办法:根据所在地区和运营商的要求,通过
yopen_nw_set_band
接口调整模组的工作频段,使其与网络环境相匹配。
运营商 | 频段 |
---|---|
中国移动 | Band8,3,34,39,40,41 |
中国联通 | Band8,3,1,40 |
中国联通 | Band5 ,3,1 |
中国广电 | Band28 |
SIM卡状态错误
- 排查方法:调用
yopen_sim_get_card_status
,根据返回值确认SIM卡状态
ret = yopen_sim_get_card_status(0, &card_status);
DEMO_SIM_TRACE("========== yopen_sim_get_card_status (sim%d) %d ret %d ==========", i, card_status, ret);
- 解决办法:根据返回值判断SIM卡当前状态,返回值参考yopen_sim.h文件
确认IMEI号是否合法
- 排查方法:有些客户会改写IMEI号导致无法注网,调用
yopen_dev_get_imei
函数获取 IMEI 号,并验证其合法性
char devinfo[64] = {0};
yopen_dev_get_imei(devinfo, 64, 0);
DEMO_DEV_TRACE("IMEI: %s", devinfo);
- 解决办法:若IMEI号非法可通过
yopen_dev_set_imei
设置IMEI号
掉网问题
硬件问题
当出现天线故障,SIM卡卡槽接触不良等状况时,可根据注网信息返回结果排查
- 排查方法:调用
yopen_sim_get_card_status
,根据返回值确认SIM卡状态
示例:
ret = yopen_sim_get_card_status(0, &card_status);//查询SIM卡状态
DEMO_SIM_TRACE("========== yopen_sim_get_card_status (sim%d) %d ret %d ==========", i, card_status, ret);
返回:
========== yopen_sim_get_card_status 17 ret 0 ========== //返回状态码17,SIM卡未插入
- 解决办法:检查SIM卡槽是否松动,更换天线再次尝试联网
网络环境
当出现连续掉网又重连的情况时,而且设备没有重启现象,建议查看是否因为信号弱导致
- 排查方法:检查设备端日志中的csq变化。可以通过调用
yopen_nw_get_csq
函数获取信号强度,以此了解设备当前接收到的信号状况。
示例:
ret = yopen_nw_get_csq(0, &csq);
yopen_trace("yopen_nw_get_csq ret=0x%x, csq:%d", ret, csq);
- 解决办法:测试网络环境,尝试将设备移动到开阔区域,例如室外空旷地带或窗户旁边等信号较强的地方,观察断连情况是否减少。
供电问题
当设备长时间未联网且一直处于正在联网状态时,可以通过抓log看设备是否一直重启
-
排查方法:若设备一直处于重启状况,检查电源问题
-
解决办法:连接外部电源4v供电再次尝试是否正常联网
软件异常
软件异常死机,参考软件异常分析工具Trace32使用指南导出死机现场,并参考死机问题分析
固件下载失败
固件不匹配
- 排查方法:查看日志信息窗口是否存在 Downloading process Runtime config failed, Runtime control para verify error错误
- 解决办法:检查固件版本,更换正确版本
AT口打开失败
- 排查方法:通过AT口烧录时,若烧录失败,查看日志信息窗口是否存在 At com reset process, resetdldboot assist com open fail错误
- 解决办法:端口选择错误,更换AT口重新烧录,端口被占用,检查是否有抓log工具或串口工具占用端口