BLE例程下载到黄山派之后手机搜索不到蓝牙

BLE下载了两个例程,example\ble\hid和example\ble\peripheral,下载完成之后手机搜索不到蓝牙
BT下载了一个例程,example\bt\test_example,可以搜索到蓝牙
下面是BLE的HID例程串口输出的信息,选的是HID_CONSUMER

SFBL
Serial:c2,Chip:4,Package:3,Rev:3  Reason:00000000

 \ | /
- SiFli Corporation
 / | \     build on Jun 17 2025, 2.4.0 build 8167000f
 2020 - 2022 Copyright by SiFli team
mount /dev sucess
e[32;22m[I/FAL] Flash Abstraction Layer (V0.5.99) initialize success.e[0m
e[32;22m[I/FAL] The FAL MTD NOR device (dfu) created successfullye[0m
e[32;22m[I/FAL] The FAL MTD NOR device (ble) created successfullye[0m
e[32m[1837] I/drv.rtc main: PSCLR=0x80000100 DivAI=128 DivAF=0 B=256
e[0me[32m[1866] I/drv.rtc main: RTC use LXT RTC_CR=00000001

e[0me[32m[1889] I/drv.rtc main: Init RTC, wake = 0

e[0me[32m[2055] I/drv.audprc main: init 00 ADC_PATH_CFG0 0x606

e[0me[32m[2080] I/drv.audprc main: HAL_AUDPRC_Init res 0

e[0me[32m[2104] I/drv.audcodec main: HAL_AUDCODEC_Init res 0

e[0mcall par CFG1(3313)
fc 9, xtal 2000, pll 2103
call par CFG1(3313)
fc 7, xtal 2000, pll 1685
e[32m[2251] I/TOUCH main: Regist touch screen driver, probe=120498b1 
e[0me[32m[2299] I/sibles main: enable BLE Core. Lib ver: bt.2.0.98103cfc
e[0m[2385] D/nvds mbox: NVDS Update Addr res 6, addr 42-06-80-52-fd-5c
e[32m[2413] I/nvds mbox: read sleep time 3500
e[0m[35814] D/sibles_utils mbox: delay
msh />e[32m[68710] I/ble_cm mbox: read_bond_infor_from_flash: 1
e[0mle p256 nvds get 0
le p256 nvds get 0
app addr nvds get 1
e[32m[69033] I/sibles KE_EVT2: 
BLE ready!

e[0me[32m[69053] I/btcomm KE_EVT2: Clear mask 1
e[0mact num:0
set cmd 0x91, stop_status:0, msg_status:2
act num:0
set cmd 0x91, stop_status:0, msg_status:2
e[32m[69136] I/sibles KE_EVT2: status=0, start_handle=0xe
e[0me[32m[69160] I/ble_app main: Register HID service handle

e[0me[32m[69192] I/ble_app main: receive BLE power on!

e[0mact num:0
set cmd 0x91, stop_status:0, msg_status:1
[69245] D/BLE_GAP KE_EVT2: evt 5, ret 0

[69283] D/BLE_GAP KE_EVT2: evt 145, ret 0

[69304] D/BLE_GAP KE_EVT2: evt 160, ret 0

e[32m[69323] I/NO_TAG KE_EVT2: Sibles ADV start 0!

e[0m[69387] D/BLE_GAP KE_EVT2: evt 169, ret 0

[69413] D/BLE_GAP KE_EVT2: evt 170, ret 0

[69440] D/BLE_GAP KE_EVT2: evt 164, ret 0

e[32m[69461] I/ble_app KE_EVT2: ADV start resutl 0, mode 0

e[0m[69575] D/BLE_GAP KE_EVT2: evt 160, ret 0

e[32m[69595] I/NO_TAG KE_EVT2: Sibles ADV start 1!

e[0m[69655] D/BLE_GAP KE_EVT2: evt 169, ret 0

[69685] D/BLE_GAP KE_EVT2: evt 164, ret 0

e[32m[69704] I/ble_app KE_EVT2: Broadcast ADV start resutl 0, mode 2

e[0m

跪求大佬解答

是在手机设置里面搜索的吗? 一般来说手机设置里面无条件能搜到的只有经典蓝牙,如果想BLE进行搜索和连接,需要借助第三方APP(nrf, lightblue等)。如果想要手机设置里面也能搜到BLE设备,可以尝试在调用sibles_advertising_init()之前,调用para.adv_data.disc_mode = GAPM_ADV_MODE_GEN_DISC; 有些安卓在adv flag设置general disc后能够搜到。

感谢大佬,马上去尝试

成功了吗?我按照这个方法,修改了一下ble hid的example,电脑和手机还是无法正经搜索到

这个看起来ADV是启用了的,先在手机上用nrf connect等APP确认能否搜索到。不是所有手机的系统蓝牙页面都支持直接显示BLE设备。

我下载了个BLE调试宝APP,是可以搜索到并连接上的,但是,如果是想做蓝牙小键盘,不能被电脑正确的搜索到的话,那这蓝牙小键盘不就泡汤了。

这个示例本身是演示手机通过第三方BLE应用连接上后HID的一些功能,所以能通过第三方应用搜到是代表该示例正常工作。如何让非手机第三方应用,比如手机设置,电脑等能够搜索并连接上,其实是要对广播内容做特别的处理,来满足他们搜索到条件。比如前面提到的,要让安卓手机设置搜索到,需要把adv的flag加上general disc,这样一些安卓手机就可以搜到,但是苹果手机和部分安卓这套是行不通的;而电脑就要看电脑的行为,有可能加了flag就可以,也有可能还需要把BLE HID的UUID放进广播

哪里可以有个示例呀?我尝试加了para.adv_data.disc_mode = GAPM_ADV_MODE_GEN_DISC; 电脑和手机还是搜索不到,我只想能让电脑识别出这是个键盘来,然后我基于这部分代码开发自定义小键盘的功能

可以再确认下这个修改安卓手机是否能搜到,就如前面提到,安卓手机和电脑是不一样的。你可以在修改flag的基础上,再广播内容里面加上HID的UUID,看电脑能不能搜到

可以参考这笔修改, [bug][ble] add adv data for ble hid search · OpenSiFli/SiFli-SDK@f2db17a

他实现了不依赖于第三方APP,电脑和手机都能看到HID设备并连接上。

ble/hid也加入了物理按键的支持,参考这笔修改, [opt][example][ble_hid] Add button support · OpenSiFli/SiFli-SDK@70b23e4