Page 1 of 2

gatt_server_service_table例程失败

Posted: Wed Nov 28, 2018 2:25 am
by ChiShaoJun
一、问题:模组烧写gatt_server_service_table例程成功,日志打印也是看不出问题,但是蓝牙助手就是找不到对应名字的蓝牙。但是gatt_server例程的实验现象却是成功的。
二、实验环境
模组:ESP32-DevKitC(ESP32-WROOM-32U)
平台:VMware上搭建的Ubuntu-18.04.1
ESP-IDF更新时间:20181128
蓝牙调试助手:nrf connect和ble debugger
三、附件为make monitor日志与gatt_server成功现象截图

望有大佬给我提出解答 ;)

Re: gatt_server_service_table例程失败

Posted: Wed Nov 28, 2018 3:56 am
by Weijian-Espressif
我刚才更新了IDF, 运行 gatt_server_service_table demo 测试是可以被搜索到的, 蓝牙名字是 ESP_GATTS_DEMO, 从你的log看, service 已经创建成功, 广播也开始了, log 没有任何问题. 请问你有修改过什么代码吗?

Re: gatt_server_service_table例程失败

Posted: Wed Nov 28, 2018 8:50 am
by ChiShaoJun
我怕我修改了一些东西,重新搞了个虚拟机,配置了环境,还是看不到对应例程的蓝牙的名称。
我只是把gatt_server_service_table文件夹复制出来,make menuconfig并无更改。
我把相关操作跟git status的截图放在附件上了。

Re: gatt_server_service_table例程失败

Posted: Wed Nov 28, 2018 11:34 am
by Weijian-Espressif
我测试最新的IDF都是正常的, demo 是可以scan 和连接的. 请帮忙做以下测试:
1. 请帮忙确认你的这块 ESP32 之前是否和手机加密连接过 ? 请在手机蓝牙设置里查看是否有配对记录? 如果有请取消所有配对, 重新搜索试试
2. 你还可以找一台新的手机搜索试试 , 是否能搜索到设备广播.

Re: gatt_server_service_table例程失败

Posted: Thu Nov 29, 2018 2:07 am
by ChiShaoJun
1、手机为小米6:蓝牙设置清除,找不到。手机开分身蓝牙查找,找不到。
2、换了个手机:honor 7X,查询到了!换个另外一台小米6,查询不到。到底什么原因?ESP32 ble 还会有些机型寻找不到吗?

Re: gatt_server_service_table例程失败

Posted: Thu Nov 29, 2018 6:28 am
by Weijian-Espressif
ESP32 我们进行了兼容性测试, 并没有出现这个问题. 小米手机我们测试了 Xiaomi Max 2, Xiaomi 5X, Xiaomi Redmi Note 4, Xiaomi MI 5等 测试都是ok的, 我这边没有小米6手机,无法验证你的问题. BLE 的广播信道是 37, 38, 39 , 这个蓝牙官方定义的, 7X可以搜索到说明我们的BLE 广播是符合标准, 我不确定你的小米6出现了什么问题, 你的小米6 手机是否能够搜索到其他ble 广播? 重启蓝牙是否恢复正常 ? 网上报了很多小米6蓝牙的问题, 是否小米官方有系统升级 或者补丁之类的.我这边试试能不能找到小米6手机 .

Re: gatt_server_service_table例程失败

Posted: Thu Nov 29, 2018 6:35 am
by Weijian-Espressif
还有一个问题, 根据你的描述, 使用 gatt_server demo 是可以搜索到广播的, gatt_service_table 搜索不到广播, 请问题这两个demo 是使用同一块ESP32 测试的吗? 这两个demo只是创建service 的方式不一样, 广播的 api 都是一样的, 没有任何区别,

Re: gatt_server_service_table例程失败

Posted: Thu Nov 29, 2018 8:01 am
by ChiShaoJun
最神奇的是我gatt_server例程,我小米6搜的到广播设备名,换成gatt_server_service_table例程就不行,我也搞不懂。是同样的一个设备,即使我换了个ESP32-WROOM-32D现象也是一样。

Re: gatt_server_service_table例程失败

Posted: Thu Nov 29, 2018 12:23 pm
by Weijian-Espressif
我们有两种设置 adv 广播内容的API, esp_ble_gap_config_adv_data() 和 esp_ble_gap_config_adv_data_raw(), 在这个demo 中默认使用 esp_ble_gap_config_adv_data_raw(). 在 gatt server demo 中我们使用的是esp_ble_gap_config_adv_data().
请将 gatts_table_create_demo.c 中 63行 ''#define CONFIG_SET_RAW_ADV_DATA'' 注释掉, 重新测试.
如果还不行, 请测试 gatt_security_server demo 和 blufi demo , 测试广播是否正常, 谢谢.

Re: gatt_server_service_table例程失败

Posted: Fri Nov 30, 2018 1:53 am
by ChiShaoJun
#define CONFIG_SET_RAW_ADV_DATA注释掉是可用的。