A9G上通过AT命令的HTTPS请求在7次请求后失败;HTTP 工作正常

Mar*_*her 5 gprs at-command esp8266

我使用 AT 命令与 ESP8266 的 Ai-Thinker A9G 芯片进行通信,作为 GPS 跟踪器单元的一部分。一开始工作正常,然后在成功发送 7 或 8 后 HTTPS 请求开始失败。然而,发出 HTTP 请求仍然没问题。

当 HTTP 请求工作正常时,什么可能导致 HTTPS 请求在前 7 个或 8 个之后失败?


细节...

当设备启动时,我使用以下方法建立 GPRS 连接:

AT+CGREG=1
> OK

AT+CGATT=1
> +CGATT:1
> OK

AT+CGDCONT=1,"IP","data.uk" // APN for 1pmobile
> OK

AT+CGACT=1,1
> OK

AT+CGACT?
> +CGACT: 1, 1
> OK
Run Code Online (Sandbox Code Playgroud)

然后每 N 分钟发布一次位置,如下:

AT+HTTPPOST="https://<URL>","application/x-www-form-urlencoded","arg1=val1&arg2=val2&..."
Run Code Online (Sandbox Code Playgroud)

前 7 或 8 次有效,之后所有 HTTPS 请求都会失败,并显示以下消息(完全按照从 A9G 芯片发送的方式复制,包括固件的拼写错误):

+CME ERROR: parameters are invalid
failure, pelase check your network or certificate!
Run Code Online (Sandbox Code Playgroud)

命令开始失败后,HTTPPOST我尝试了以下状态检查,但一切都表明芯片处于良好状态并且仍然在线:

AT+CIPSTATUS
> +CIPSTATUS:
> STATE:IP INITIAL

AT+CGACT?
> +CGACT: 1, 1
> OK

AT+CGREG?
> +CGREG: 1, 1
> OK

AT+CGDCONT?
> +CGDCONT:1,"IP","data.uk","<IP address>",0,0
> OK
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

  • 连续发送请求或间隔 5 分钟发送请求 - 行为没有变化,在 7 或 8 个请求后,无论经过多少时间,它仍然失败。
  • 更换到不同的 SIM 卡并更新指定的 APN CGDCONT- 没有变化。
  • 使用 、 停用网络连接AT+CGACT=0,1AT+CGATT=0然后AT+CGREG=0重新启用它 - 没有变化。
  • 提出AT+HTTPGET请求而不是HTTPPOST- 没有改变。
  • 重新启动 A9G 芯片 - 这又给了我 7 或 8 个请求,然后重复该模式。
  • 向 HTTP URL 而不是 HTTPS 发出请求 - 如前所述,这些工作得很好。

令人烦恼的是,A9/A9G 芯片的文档资料很少。其中大部分内容是中文 PDF 格式,无法很好地与谷歌翻译配合使用。这些是我发现的最有用的链接,可以将我上面的内容拼凑起来:

Mar*_*her 3

最后我联系了芯片制造商,解释了我遇到的问题,并建议固件中可能存在错误。他们回应并确认了情况确实如此,并表示该问题不太可能很快得到解决:

\n
\n

你好马克,

\n

是的,我们现在发现很多A9G模块的问题反馈,包括你所说的,但现在我们没有足够的工程师来支持这个问题。

\n

如果你有很大的数量要求,我只能尝试推。

\n

此致,

\n

- 海外团队

\n

\xe6\xb7\xb1\xe5\x9c\xb3\xe5\xb8\x82\xe5\xae\x89\xe4\xbf\xa1\xe5\x8f\xaf\xe7\xa7\x91\xe6\x8a\x80\xe6 \x9c\x89\xe9\x99\x90\xe5\x85\xac\xe5\x8f\xb8

\n

深圳市安信科科技有限公司

\n
\n

我将其发布为答案而不是评论,因为它直接回答了我原始帖子顶部的主要问题:“当 HTTP 请求工作正常时,什么可能导致 HTTPS 请求在前 7 个或 8 个之后失败? ”。答:固件损坏。我最好的猜测是在分配和取消分配内存以处理 TLS 交换时出现错误,但这可能还很遥远。

\n

对于遇到此问题的其他人,您有以下几种选择:

\n
    \n
  • 尽可能使用 WiFi。
  • \n
  • 坚持 HTTP 请求。
  • \n
  • 每执行 7 个命令后重新启动芯片。
  • \n
\n