Page 1 of 1

esp32 softap模式兼容性问题

Posted: Mon Feb 11, 2019 2:25 am
by jiangteng
使用esp32模块开发一个传感安防产品,基于esp-idf-3.0.1-rc sdk。
经过大量测试,目前稳定复现一个问题,问题比较复杂,描述如下,烦请仔细阅读:

在程序主函数app_main中,读取nvs区保存的标记,判断应工作在softap还是sta模式,伪代码如下:
app_main()
{
..... //初始化

mode = get_mode_from_flash();
if(mode)
{
wifi_init_softap();
}
else
{
wifi_init_sta();
...... //应用线程//
}
}
若为softap模式,启动softap后,等待移动设备(手机)连接wifi。
若为sta模式,启动sta连接路由器wifi,然后执行一系列创建任务线程的代码。

现在的情况是:
1. sta模式工作正常;

2. softap模式,启动后,部分手机可以搜索到esp32热点但连接不成功,连接过程中没有任何日志打印。
如果将sta模式启动后的代码注释掉或封装成一个函数,则这些手机可以正常连接并获取到ip。
但这些代码在softap模式下其实根本不会运行(已经过日志验证,只执行if分支,不执行else分支),理论上不可能影响到softap模式的稳定性,况且只影响部分手机,例:华为荣耀畅玩5X

以上现象100%复现,超出我能理解的范畴,希望得到一些帮助。

Re: esp32 softap模式兼容性问题

Posted: Mon Feb 11, 2019 3:09 am
by ESP_Gargamel
当前 v3.0 最新的 bugfix 版本为 v3.0.7,https://github.com/espressif/esp-idf/re ... tag/v3.0.7,请用最新版本做下测试,看问题是否还存在。如果仍旧存在,请提供复现问题的最精简工程,包含 sdkconfig 文件;也同时提供你测试时的 log。

谢谢

Re: esp32 softap模式兼容性问题

Posted: Tue Feb 12, 2019 1:35 am
by jiangteng
Hi,
感谢回复,在测试之前我想有几个关于版本的疑问。
v3.1.x和v3.0.x有个区别是esp_ping,这个是指tcp/ip中的ping命令吗?我没有调用该模块是否可以直接迁移到v3.1.x上?
目前的最新发布版本是什么,github 上好像是v3.1.2, 版本后面有rc和没有rc分别代表什么?
再次感谢。

Re: esp32 softap模式兼容性问题

Posted: Tue Feb 12, 2019 1:58 am
by ESP_Gargamel
esp_ping 是实现 ping 功能的模块,3.1 相较于 3.0 有些许变动,如果你未用到,是可以直接迁移。
当前最新版本为 3.1.2,rc 是 release candidate,是在正式 release 前发布的版本,不属于正式版本,如果是用作正式产品开发,建议使用 release 版本。

Re: esp32 softap模式兼容性问题

Posted: Tue Feb 12, 2019 5:49 am
by jiangteng
你好,
我直接迁移到最新的v3.1.2版本上,这个问题似乎得以解决了,无论我在else分支中添加什么代码,不会影响到if分支中softap模式的兼容性,之前不能正常连接的手机现在可以连接了,接下来将进一步测试。
如果可以麻烦告知是哪一项bug fix解决了这个问题。
再次表示感谢。

Re: esp32 softap模式兼容性问题

Posted: Tue Feb 19, 2019 9:11 am
by jiangteng
这个问题似乎依然存在,只是换了一种表现形式。
现在修改main函数里的代码并不会影响到softap的兼容性,但如果在menuconfig中配置编译优化为release,则会再次出现部分手机无法连接的现象,而配置为debug则工作正常,同样100%复现。
有充分的理由怀疑编译器有问题。
我们的代码量不小,使用debug编译固件太大,需要自己重写flash分区表,而且也比较浪费,希望能得以解决。

Re: esp32 softap模式兼容性问题

Posted: Thu Feb 28, 2019 2:50 am
by littlesky
请问连接不上的手机型号是什么?用 example/wifi/getting_started/softAP/ 可以复现该问题吗?

Re: esp32 softap模式兼容性问题

Posted: Thu Feb 28, 2019 3:13 am
by ESP_Jack
这个问题比较奇怪,可以做以下排查
1. 是否使用SPIRAM?是否使用双核?
2. 最好有稳定复现的小代码,如果没有,可以先提供 bin 文件和 log,进行排查。
3. 提供出问题的设备型号。
4. 实在没有办法就只能现场排查了。