diff --git a/.gitignore b/.gitignore index 03fbd20..81cf354 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ # 忽略根目录下的uniapp_code文件夹(这是APP端的业务) /uniapp_code - +/Linux驱动开发 # 忽略 macOS 系统文件 .DS_Store diff --git a/05-最新日志.txt b/05-最新日志.txt index debaae3..b980647 100644 --- a/05-最新日志.txt +++ b/05-最新日志.txt @@ -1,848 +1,592 @@ -I (42308) Application: .. assistant: 当前北京时间是2026年3月2日16:34 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=331 binary=1 free_heap=7925060 -I (42338) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (42338) Application: .. assistant: 当前北京时间是2026年3月2日16:34 -I (43408) Application: dialog对话空闲倒计时剩余: 39 秒 -I (43528) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64937 bps -I (43528) VolcRtcProtocol: 下行音频统计: PCM字节=8000, OPUS字节=0 -2026-03-02 16:34:12.530 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=15, out: pkt=21 t_diff=33 seq_diff=1 buffer_ms=0 target_ms=100 expand_npkt=80 expand_loss=0 start_seq 0 end_seq 0 -2026-03-02 16:34:12.731 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -I (45408) Application: dialog对话空闲倒计时剩余: 37 秒 -I (45538) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63678 bps -I (45538) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -2026-03-02 16:34:14.551 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=15, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -2026-03-02 16:34:14.750 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -2026-03-02 16:34:15.754 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 -2026-03-02 16:34:15.754 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 -2026-03-02 16:34:15.755 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 -2026-03-02 16:34:15.755 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 -I (47408) Application: dialog对话空闲倒计时剩余: 35 秒 -I (47548) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63703 bps -I (47548) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -2026-03-02 16:34:16.568 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=15, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -2026-03-02 16:34:16.730 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7924484 -I (47938) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (47938) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7925100 -I (47948) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (47948) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7923080 -I (47988) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (47988) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7925860 -I (48078) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48088) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7925244 -I (48188) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48188) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7925720 -I (48278) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48288) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7925728 -I (48388) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48388) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7923540 -I (48578) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48578) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7921244 -I (48618) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48618) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925692 -I (48678) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48678) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925100 -I (48778) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48778) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925496 -I (48878) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48878) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925496 -I (48988) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (48988) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7923488 -I (49188) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49188) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925464 -I (49228) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49228) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925560 -I (49288) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49288) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925460 -I (49388) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49388) Application: .. assistant: 今天的天气怎么样 -I (49408) Application: dialog对话空闲倒计时剩余: 33 秒 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925368 -I (49478) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49478) Application: .. assistant: 今天的天气怎么样 -I (49558) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63681 bps -I (49558) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925324 -I (49588) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49588) Application: .. assistant: 今天的天气怎么样 -2026-03-02 16:34:18.590 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=15, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7923352 -I (49778) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49778) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7923144 -I (49808) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49808) Application: .. assistant: 今天的天气怎么样 -2026-03-02 16:34:18.728 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=314 binary=1 free_heap=7921540 -I (49918) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49918) Application: .. assistant: 今天的天气怎么样? -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=312 binary=1 free_heap=7923072 -I (49928) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (49928) Application: >> assistant: 今天的天气怎么样? -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=198 binary=1 free_heap=7923692 -I (50398) VolcRtcProtocol: 接收下行消息: info -I (51408) Application: dialog对话空闲倒计时剩余: 31 秒 -I (51568) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64938 bps -I (51568) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=2042 binary=1 free_heap=7916448 -I (51618) VolcRtcProtocol: 接收下行消息: info -2026-03-02 16:34:20.604 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=15, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -2026-03-02 16:34:20.750 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -2026-03-02 16:34:20.767 [I] rx_net_audio_jitterbuffer.c:1797 the dia cnt update, last=1, seq=615, cur=3, seq=616 -2026-03-02 16:34:20.769 [I] rx_net_audio_jitterbuffer.c:1617 [a_jb]reset jb bsize=0, needr=1, rst_cur_round=0, rst_cnt=1 -2026-03-02 16:34:20.796 [I] rx_net_audio_jitterbuffer.c:1443 build_target_delay over need_extract_packet s=100 -2026-03-02 16:34:20.813 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 -2026-03-02 16:34:20.814 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 -2026-03-02 16:34:20.815 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 -2026-03-02 16:34:20.815 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 -I (52028) Airhub1: ADC: 2292, 原始电压: 2.29V, 计算电池电压: 9.95V, 电量: 100%, 满电电压: 4.20V -I (52028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=294 binary=1 free_heap=7882708 -I (52508) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (52508) Application: .. assistant: 正在上网查 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=306 binary=1 free_heap=7882896 -I (52708) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (52708) Application: .. assistant: 正在上网查询, -2026-03-02 16:34:21.989 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 58, e2e_avg: 32, e2e_max: 120 -I (53408) Application: dialog对话空闲倒计时剩余: 40 秒 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=312 binary=1 free_heap=7881220 -I (53428) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (53428) Application: .. assistant: 正在上网查询,请 -I (53578) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63676 bps -I (53578) VolcRtcProtocol: 下行音频统计: PCM字节=27200, OPUS字节=0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=318 binary=1 free_heap=7880684 -I (53608) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (53608) Application: .. assistant: 正在上网查询,请稍 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=324 binary=1 free_heap=7880264 -I (53808) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (53808) Application: .. assistant: 正在上网查询,请稍等 -2026-03-02 16:34:22.728 [E] EventTransport.c:292 connect to logserver timeout, need shutdown -2026-03-02 16:34:22.786 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 120:2:122,in: jitter nor=10304 reor=261, wj=15, out: pkt=100 t_diff=64 seq_diff=1 buffer_ms=420 target_ms=100 expand_npkt=0 expand_loss=0 start_seq 616 end_seq 735 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=330 binary=1 free_heap=7882984 -I (53908) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (53908) Application: .. assistant: 正在上网查询,请稍等一 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=347 binary=1 free_heap=7880384 -I (54008) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (54008) Application: >> assistant: 正在上网查询,请稍等一下哦。 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=270 binary=1 free_heap=7880328 -I (54908) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (54908) Application: .. assistant: 当 -2026-03-02 16:34:23.987 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 14, e2e_avg: 13, e2e_max: 22 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=276 binary=1 free_heap=7877712 -I (55208) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (55208) Application: .. assistant: 当前 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=282 binary=1 free_heap=7878960 -I (55508) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (55508) Application: .. assistant: 当前广 -I (55588) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63701 bps -I (55588) VolcRtcProtocol: 下行音频统计: PCM字节=32000, OPUS字节=0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=288 binary=1 free_heap=7878696 -I (55718) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (55718) Application: .. assistant: 当前广州 -2026-03-02 16:34:24.790 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 100:0:100,in: jitter nor=18 reor=0, wj=19, out: pkt=100 t_diff=35 seq_diff=1 buffer_ms=420 target_ms=100 expand_npkt=0 expand_loss=0 start_seq 736 end_seq 835 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=294 binary=1 free_heap=7882884 -I (56008) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56008) Application: .. assistant: 当前广州市 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=300 binary=1 free_heap=7881996 -I (56208) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56208) Application: .. assistant: 当前广州市天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7883084 -I (56478) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56478) Application: .. assistant: 安全 -2026-03-02 16:34:25.404 [I] rx_net_audio_jitterbuffer.c:1443 build_target_delay over need_extract_packet s=400 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7877828 -I (56508) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56508) Application: .. assistant: 安全 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7889932 -I (56568) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56568) Application: .. assistant: 安全 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7901964 -I (56678) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56678) Application: .. assistant: 安全 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7907876 -I (56768) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56768) Application: .. assistant: 安全 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7919492 -I (56878) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56878) Application: .. assistant: 安全 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=272 binary=1 free_heap=7924244 -I (56968) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (56968) Application: .. assistant: 安全 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=290 binary=1 free_heap=7924120 -I (57188) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57188) Application: .. assistant: 安全管这是 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=290 binary=1 free_heap=7917736 -I (57208) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57218) Application: .. assistant: 安全管这是 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=290 binary=1 free_heap=7924128 -I (57278) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57278) Application: .. assistant: 安全管这是 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=290 binary=1 free_heap=7922124 -I (57368) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57368) Application: .. assistant: 安全管这是 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=290 binary=1 free_heap=7921824 -I (57468) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57468) Application: .. assistant: 安全管这是 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=290 binary=1 free_heap=7923384 -I (57568) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57578) Application: .. assistant: 安全管这是 -I (57598) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63683 bps -I (57598) VolcRtcProtocol: 下行音频统计: PCM字节=20800, OPUS字节=0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7924040 -I (57778) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57778) Application: .. assistant: 安全管,这是天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7923872 -I (57808) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57808) Application: .. assistant: 安全管,这是天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7924004 -I (57868) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57878) Application: .. assistant: 安全管,这是天气 -2026-03-02 16:34:26.814 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 30:0:30,in: jitter nor=21 reor=0, wj=22, out: pkt=50 t_diff=47 seq_diff=1 buffer_ms=0 target_ms=100 expand_npkt=50 expand_loss=0 start_seq 836 end_seq 865 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7923588 -I (57978) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (57978) Application: .. assistant: 安全管,这是天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7923596 -I (58078) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (58078) Application: .. assistant: 安全管,这是天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925896 -I (58168) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (58168) Application: .. assistant: 安全管,这是天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=308 binary=1 free_heap=7925560 -I (58368) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (58368) Application: .. assistant: 安全管,这是天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=314 binary=1 free_heap=7923804 -I (58408) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (58408) Application: .. assistant: 安全管,这是天气。 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=312 binary=1 free_heap=7925164 -I (58408) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (58408) Application: >> assistant: 安全管,这是天气。 -2026-03-02 16:34:28.099 [I] rx_net_audio_jitterbuffer.c:1617 [a_jb]reset jb bsize=0, needr=1, rst_cur_round=1, rst_cnt=1 -2026-03-02 16:34:28.102 [I] rx_net_audio_jitterbuffer.c:1797 the dia cnt update, last=3, seq=866, cur=4, seq=867 -2026-03-02 16:34:28.103 [I] rx_net_audio_jitterbuffer.c:1617 [a_jb]reset jb bsize=0, needr=1, rst_cur_round=0, rst_cnt=3 -2026-03-02 16:34:28.103 [I] rx_net_audio_jitterbuffer.c:1554 [a_jb]jb flush all bsize=0 -2026-03-02 16:34:28.142 [I] rx_net_audio_jitterbuffer.c:1443 build_target_delay over need_extract_packet s=140 -2026-03-02 16:34:28.265 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 51, e2e_avg: 19, e2e_max: 33 -I (59608) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64929 bps -I (59608) VolcRtcProtocol: 下行音频统计: PCM字节=5760, OPUS字节=0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=312 binary=1 free_heap=7879060 -I (59808) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (59808) Application: .. assistant: 你是说“ -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=318 binary=1 free_heap=7880188 -I (60218) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (60218) Application: .. assistant: 你是说“安 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=324 binary=1 free_heap=7878384 -I (60308) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (60308) Application: .. assistant: 你是说“安全 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=336 binary=1 free_heap=7875388 -I (60708) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (60708) Application: .. assistant: 你是说“安全管” -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=342 binary=1 free_heap=7876680 -I (60908) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (60908) Application: .. assistant: 你是说“安全管”和 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=348 binary=1 free_heap=7876136 -I (61108) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (61108) Application: .. assistant: 你是说“安全管”和天 -2026-03-02 16:34:30.112 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 120:3:123,in: jitter nor=26 reor=206, wj=39, out: pkt=98 t_diff=60 seq_diff=1 buffer_ms=460 target_ms=100 expand_npkt=0 expand_loss=0 start_seq 867 end_seq 986 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=354 binary=1 free_heap=7876832 -I (61308) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (61308) Application: .. assistant: 你是说“安全管”和天气 -2026-03-02 16:34:30.237 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 61, e2e_avg: 16, e2e_max: 36 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=360 binary=1 free_heap=7881920 -I (61518) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (61518) Application: .. assistant: 你是说“安全管”和天气有 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163348000 src=bot_20260302163348000 size=377 binary=1 free_heap=7879620 -I (61618) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (61618) Application: 字幕情绪: 平静 → neutral -I (61618) Application: >> assistant: 你是说“安全管”和天气有关吗? -I (61618) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63683 bps -I (61618) VolcRtcProtocol: 下行音频统计: PCM字节=32000, OPUS字节=0 -I (62028) Airhub1: ADC: 2291, 原始电压: 2.29V, 计算电池电压: 9.94V, 电量: 100%, 满电电压: 4.20V -I (62028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 ---- Error: read failed: [Errno 6] Device not configured ---- Waiting for the device to reconnect.............................................................................................................................................................................................................................................................. -I (948) ES7210: Enable ES7210_INPUT_MIC1 -I (948) ES7210: Enable ES7210_INPUT_MIC2 -I (958) BoxAudioCodec: BoxAudioDevice initialized (duplex) -I (958) Airhub1: Audio codec initialized successfully -I (958) Application: 检测到WiFi板卡,将opus编码器复杂度设置为3 -I (958) OpusResampler: Resampler configured with input sample rate 16000, output sample rate 8000, and channels 1 -I (958) I2S_IF: channel mode 2 bits:16/16 channel:2 mask:1 -I (958) I2S_IF: TDM Mode 0 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (958) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 -I (958) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (958) ES7210: Bits 16 -I (968) ES7210: Enable ES7210_INPUT_MIC1 -I (968) ES7210: Enable ES7210_INPUT_MIC2 -I (978) ES7210: Unmuted -I (978) Adev_Codec: Open codec device OK -I (978) BoxAudioCodec: Input opened: sr=16000 ch=1 mask=0x1 ref=0 -I (978) AudioCodec: Set input enable to true -I (978) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 -I (978) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (988) Adev_Codec: Open codec device OK -I (998) AudioCodec: Set output enable to true -I (998) AudioCodec: Audio codec started -I (1098) Airhub1: ADC: 2299, 原始电压: 2.30V, 计算电池电压: 9.98V, 电量: 100%, 满电电压: 4.20V -I (1098) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1198) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1198) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1298) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1298) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1398) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1398) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1498) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1498) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1598) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1598) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1698) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1698) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1798) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1798) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1898) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1898) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (1998) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (1998) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2028) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2098) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2098) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2198) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2198) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2298) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2298) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2398) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2398) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2498) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2498) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2598) Airhub1: ADC: 2298, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2598) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2698) Airhub1: ADC: 2298, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2698) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2798) Airhub1: ADC: 2298, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2798) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2898) Airhub1: ADC: 2298, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2898) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2998) Airhub1: ADC: 2298, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (2998) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (2998) AudioCodec: 将运行时输出音量设置为:65 -I (2998) Application: 设备启动完成,播放开机播报语音 -I (2998) pp: pp rom version: e7ae62f -I (2998) net80211: net80211 rom version: e7ae62f -I (3008) wifi:wifi driver task: 3fce258c, prio:23, stack:6656, core=0 -I (3008) wifi:wifi firmware version: 3263cda -I (3008) wifi:wifi certification version: v7.0 -I (3008) wifi:config NVS flash: disabled -I (3008) wifi:config nano formatting: disabled -I (3008) wifi:Init data frame dynamic rx buffer num: 32 -I (3008) wifi:Init dynamic rx mgmt buffer num: 5 -I (3008) wifi:Init management short buffer num: 32 -I (3008) wifi:Init static tx buffer num: 8 -I (3008) wifi:Init tx cache buffer num: 32 -I (3008) wifi:Init static tx FG buffer num: 2 -I (3008) wifi:Init static rx buffer size: 1600 -I (3008) wifi:Init static rx buffer num: 10 -I (3008) wifi:Init dynamic rx buffer num: 32 -I (3008) wifi_init: rx ba win: 16 -I (3008) wifi_init: accept mbox: 6 -I (3008) wifi_init: tcpip mbox: 32 -I (3008) wifi_init: udp mbox: 6 -I (3008) wifi_init: tcp mbox: 6 -I (3008) wifi_init: tcp tx win: 5760 -I (3008) wifi_init: tcp rx win: 5760 -I (3008) wifi_init: tcp mss: 1440 -I (3008) wifi_init: WiFi/LWIP prefer SPIRAM -I (3008) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 -I (3048) wifi:mode : sta (d0:cf:13:03:bb:f0) -I (3048) wifi:enable tsf -I (3048) Application: 开始播放下行音频: 样本=960 采样率=16000 -I (5458) wifi: 发现可连接 AP: airhub, BSSID: 70:2a:d7:85:bc:eb, RSSI: -34, Channel: 1, Authmode: 3 -I (5458) WifiBoard: Starting WiFi connection, playing network connection sound -W (5458) wifi:Password length matches WPA2 standards, authmode threshold changes from OPEN to WPA2 -I (5548) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1, snd_ch_cfg:0x0 -I (5548) wifi:state: init -> auth (0xb0) -I (5568) wifi:state: auth -> assoc (0x0) -I (5588) wifi:state: assoc -> run (0x10) -I (5618) wifi:connected with airhub, aid = 2, channel 1, BW20, bssid = 70:2a:d7:85:bc:eb -I (5618) wifi:security: WPA2-PSK, phy: bgn, rssi: -29 -I (5618) wifi:pm start, type: 1 +I (47) WeatherApi: 初始化天气API配置 - 默认城市: 北京 +I (48) WeatherApi: WiFi位置缓存限制已设置为: 5 条 +I (48) coexist: coex firmware version: 7b9a184 +I (49) coexist: coexist rom version e7ae62f +I (49) main_task: Started on CPU0 +I (59) main_task: Calling app_main() +I (79) BackgroundTask: background_task started +I (79) BluetoothProvisioning: 蓝牙配网对象创建完成 +I (79) WifiBoard: force_ap is set to 1, will clear in StartNetwork() +I (79) button: IoT Button Version: 3.5.0 +I (79) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (79) button: IoT Button Version: 3.5.0 +I (79) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (79) Airhub1: Initializing I2C master bus for audio codec... +I (79) Airhub1: Scanning I2C bus for devices... +I (79) Airhub1: I2C设备在线: 0x18 +E (79) i2c.master: I2C transaction unexpected nack detected +E (79) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed +E (79) i2c.master: i2c_master_receive(1261): I2C transaction failed +E (79) i2c.master: I2C transaction unexpected nack detected +E (79) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed +E (79) i2c.master: i2c_master_receive(1261): I2C transaction failed +I (79) Airhub1: I2C设备在线: 0x40 +I (79) Airhub1: I2C scan completed. Found 2 devices +I (79) DZBJ: 开始初始化显示硬件... +I (79) gpio: GPIO[7]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (79) st77916: LCD panel create success, version: 1.0.1 +W (219) st77916: The 3Ah command has been used and will be overwritten by external initialization sequence +I (339) LCD: LCD GRAM cleared (black filled) +I (339) DZBJ: LCD 硬件初始化完成 +I (339) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:2 +I (339) gpio: GPIO[6]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (739) CST816S: IC id: 182 +I (739) LCD: Touch controller initialized successfully +I (739) LVGL: Starting LVGL task +I (739) LCD: LVGL buffer: 14400 bytes (W:360, Lines:20, DMA, single) +I (739) LCD: Touch controller added to LVGL +I (739) DZBJ: LVGL 初始化完成 +I (849) Airhub1: 🤖 AI对话模式启动 +I (849) Airhub1: 初始化按钮... +I (849) Airhub1: Boot button initialized on GPIO0 +I (849) Airhub1: Volume up button initialized on GPIO-1 +I (849) Airhub1: Volume down button initialized on GPIO-1 +I (849) Airhub1: 故事按键已初始化,GPIO引脚 =4 +I (849) Airhub1: 所有按键已成功初始化! +I (849) Airhub1: IMU传感器未初始化,跳过IoT注册 +I (849) Airhub1: 配网模式:跳过电池检测、IMU传感器、低功耗管理 +I (849) Airhub1: 电容触摸板按钮已禁用 (ENABLE_TOUCH_PAD_BUTTONS=0) +I (849) Application: 打印设置设备状态日志: starting +I (849) Application: 正常启动流程,将执行开机播报和网络连接播报 +I (849) Airhub1: Initializing audio codec (output only)... +I (849) Airhub1: Creating BoxAudioCodec (ES8311, without reference) ... +I (849) BoxAudioCodec: TX-only channel created (provisioning mode) +I (849) ES8311: Work in Slave mode +I (859) gpio: GPIO[48]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (859) BoxAudioCodec: BoxAudioDevice initialized (output only) +I (859) Airhub1: Audio codec initialized successfully +I (859) Application: 配网模式:跳过 Opus 编码器、输入重采样器、麦克风输入 +I (859) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 +I (859) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (869) Adev_Codec: Open codec device OK +I (879) AudioCodec: Set output enable to true +I (879) AudioCodec: Audio codec started (output only, provisioning mode) +I (879) AudioCodec: 将运行时输出音量设置为:75 +I (879) Application: 设备启动完成,播放开机播报语音 +I (889) WifiBoard: force_ap cleared to 0 +I (889) WifiBoard: 🔵 进入配网模式 - BLE蓝牙配网 +I (889) WifiBoard: 🔵 进入配网模式 - 使用BLE蓝牙配网 +I (889) WifiBoard: 🔵 正在启动BLE蓝牙配网服务... +I (889) Application: 🎵 测试模式:音频开始播放,等待播放完成 +I (889) Application: ✅ 测试模式:音频播放完成 +I (889) BluetoothProvisioning: 🔄 配网状态变化: IDLE -> INITIALIZING +I (889) BluetoothProvisioning: 初始化WiFi... +I (889) pp: pp rom version: e7ae62f +I (889) net80211: net80211 rom version: e7ae62f +I (899) wifi:wifi driver task: 3fcd91c4, prio:23, stack:6656, core=0 +I (899) wifi:wifi firmware version: bea31f3 +I (899) wifi:wifi certification version: v7.0 +I (899) wifi:config NVS flash: enabled +I (899) wifi:config nano formatting: disabled +I (899) wifi:Init data frame dynamic rx buffer num: 32 +I (899) wifi:Init dynamic rx mgmt buffer num: 5 +I (899) wifi:Init management short buffer num: 32 +I (899) wifi:Init static tx buffer num: 8 +I (899) wifi:Init tx cache buffer num: 32 +I (899) wifi:Init static tx FG buffer num: 2 +I (899) wifi:Init static rx buffer size: 1600 +I (899) wifi:Init static rx buffer num: 10 +I (899) wifi:Init dynamic rx buffer num: 32 +I (909) wifi_init: rx ba win: 16 +I (909) wifi_init: accept mbox: 6 +I (909) wifi_init: tcpip mbox: 32 +I (909) wifi_init: udp mbox: 6 +I (909) wifi_init: tcp mbox: 6 +I (909) wifi_init: tcp tx win: 5760 +I (909) wifi_init: tcp rx win: 5760 +I (909) wifi_init: tcp mss: 1440 +I (909) wifi_init: WiFi/LWIP prefer SPIRAM +I (909) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 +I (949) wifi:mode : sta (d0:cf:13:03:bb:f0) +I (949) wifi:enable tsf +I (949) BluetoothProvisioning: WiFi初始化完成 +I (949) BluetoothProvisioning: 初始化蓝牙控制器... +I (949) BLE_INIT: BT controller compile version [6cfabcd] +I (949) BLE_INIT: Feature Config, ADV:1, BLE_50:1, DTM:1, SCAN:1, CCA:0, SMP:1, CONNECT:1 +I (949) BLE_INIT: Bluetooth MAC: d0:cf:13:03:bb:f2 +I (949) BluetoothProvisioning: 初始化Bluedroid协议栈... +I (969) BluetoothProvisioning: 注册 BLE GAP/GATTS 回调... +I (969) BluetoothProvisioning: ✅ GATTS App 注册成功, gatts_if=3 +I (969) BluetoothProvisioning: Service 创建成功, handle=40 +I (969) BluetoothProvisioning: WRITE 特征添加成功, handle=42 +I (969) BluetoothProvisioning: NOTIFY 特征添加成功, handle=44 +I (969) BluetoothProvisioning: CCCD 添加成功, handle=45 +I (969) BluetoothProvisioning: ✅ GATT Service 启动成功 +I (969) BluetoothProvisioning: 注册WiFi事件处理器... +I (969) BluetoothProvisioning: 🔄 配网状态变化: INITIALIZING -> IDLE +I (969) BluetoothProvisioning: 蓝牙配网初始化完成 (GATT Server 模式) +I (969) BluetoothProvisioning: 蓝牙MAC地址: d0:cf:13:03:bb:f2 +I (969) WifiBoard: 🔍 BLE Initialize返回结果: true +I (969) BluetoothProvisioning: 🔵 开始启动蓝牙配网服务 (GATT Server)... +I (969) BluetoothProvisioning: 🔍 检查初始化状态: initialized_ = true +I (969) BluetoothProvisioning: MAC地址发送状态已重置 +I (969) BluetoothProvisioning: 🔄 MAC地址发送状态已重置 +I (969) BluetoothProvisioning: 🧹 清除之前的WiFi凭据... +I (969) BluetoothProvisioning: ✅ WiFi凭据清除完成,准备接收新的配网信息 +I (969) BluetoothProvisioning: 📡 蓝牙设备名称: Airhub_d0:cf:13:03:bb:f2 +I (969) BluetoothProvisioning: 📡 广播数据构建完成,长度: 29 字节 +I (969) BluetoothProvisioning: 📡 扫描响应数据构建完成,长度: 7 字节 +I (969) BluetoothProvisioning: 📡 广播数据设置完成,配置扫描响应数据 +I (969) BluetoothProvisioning: 📡 扫描响应数据设置完成,启动广播 +I (969) BluetoothProvisioning: ✅ 广播启动成功 +I (969) BluetoothProvisioning: 🔄 配网状态变化: IDLE -> ADVERTISING +I (969) BluetoothProvisioning: 蓝牙配网广播已启动,等待客户端连接... +I (969) WifiBoard: ✅ BLE蓝牙配网启动成功 +I (979) WifiBoard: 📱 请使用支持BLE的手机APP连接设备进行配网 +W (979) Application: Alert BLE配网模式: 请使用手机APP搜索Airhub_开头的蓝牙设备 [happy] +I (989) AI_CHAT_UI: GIF表情切换: happy +I (989) WifiBoard: Starting BLE provisioning monitor... +I (989) WifiBoard: 🔍 BLE配网启动结果: 成功 +I (989) WifiBoard: ✅ BLE配网启动成功,等待手机连接 +I (989) Application: 配网模式:跳过协议初始化、位置检测等网络业务 +I (989) Application: 打印设置设备状态日志: idle +I (999) Application: 开始播放下行音频: 样本=960 采样率=16000 +I (1009) AI_CHAT_UI: GIF表情切换: neutral +I (1009) main_task: Returned from app_main() +I (5339) BluetoothProvisioning: 📱 客户端已连接, conn_id=0, addr=73:8f:af:0d:36:7a +I (5339) BluetoothProvisioning: 🔍 [DEBUG] 设置client_connected_为true +I (5339) BluetoothProvisioning: MAC地址发送状态已重置 +I (5339) BluetoothProvisioning: 🔄 MAC地址发送状态已重置 +I (5339) BluetoothProvisioning: 🔄 配网状态变化: ADVERTISING -> CONNECTED +I (5339) WifiBoard: BLE client connected +I (5339) BluetoothProvisioning: 🔍 [DEBUG] BLE连接处理完成,client_connected_=true +I (5339) BluetoothProvisioning: 广播已停止 +I (5749) BluetoothProvisioning: 连接参数更新: status=0, conn_int=24, latency=0, timeout=400 +I (6079) BluetoothProvisioning: 连接参数更新: status=0, conn_int=6, latency=0, timeout=500 +I (6149) BluetoothProvisioning: MTU 更新: 512 +I (6229) BluetoothProvisioning: 连接参数更新: status=0, conn_int=24, latency=0, timeout=400 +I (6649) BluetoothProvisioning: NOTIFY 已启用 +I (6829) BluetoothProvisioning: 📱 手机请求获取WiFi列表,开始扫描 +W (6829) wifi:Error! Should use default active scan time parameter for WiFi scan when Bluetooth is enabled!!!!!! -I (5618) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us -I (5618) wifi:set rx beacon pti, rx_bcn_pti: 14, bcn_timeout: 25000, mt_pti: 14, mt_time: 10000 -I (5638) wifi:idx:0 (ifx:0, 70:2a:d7:85:bc:eb), tid:0, ssn:0, winSize:64 -I (5668) wifi:AP's beacon interval = 102400 us, DTIM period = 1 -I (5928) Airhub1: 📤 设备状态上报已启用,每30秒上报一次 -I (8188) wifi: Got IP: 192.168.124.22 -I (8188) esp_netif_handlers: sta ip: 192.168.124.22, mask: 255.255.255.0, gw: 192.168.124.1 -I (11878) Airhub1: BOOT button clicked -I (11878) Airhub1: 当前设备状态: 1 -I (11878) Airhub1: 唤醒设备 -I (12028) Airhub1: ADC: 2298, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (12028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (13188) VolcRtcProtocol: 设置Agent配置参数: {"Config":{"WebSearchAgentConfig":{"ParamsString":"{\"bot_id\":\"7585449675889608233\",\"stream\":true,\"location_info\":{\"city\":\"广州市\"}}"}}} -I (13188) VolcRtcProtocol: VolcRtcProtocol 开始启动... -I (13188) VolcRtcProtocol: 使用Wi-Fi MAC地址作为设备名称(已替换冒号为下划线): d0_cf_13_03_bb_f0 -I (13188) VolcRtcProtocol: NVS凭证已加载:secret=1 appid=1 device_name=d0_cf_13_03_bb_f0, free_heap=8278944 +I (6829) BluetoothProvisioning: 🔍 WiFi扫描已启动 +I (13489) AudioCodec: Set output enable to false +I (15599) BluetoothProvisioning: 📡 WiFi扫描完成,准备发送WiFi列表 +I (15599) BluetoothProvisioning: 📊 扫描到 41 个WiFi热点 +I (15599) BluetoothProvisioning: ✅ 成功获取WiFi扫描结果 +I (15609) BluetoothProvisioning: 📊 过滤后剩余 26 个2.4GHz热点 (原始: 41) +I (15609) BluetoothProvisioning: 向客户端发送WiFi列表,共26个AP +I (16129) BluetoothProvisioning: 📤 WiFi列表已发送给客户端,包含 26 个热点 +I (16129) BluetoothProvisioning: 📤 WiFi列表已发送,包含 26 个热点 +I (25099) BluetoothProvisioning: 📶 收到WiFi SSID: airhub +I (25249) BluetoothProvisioning: 🔐 收到WiFi密码 (长度: 9) +W (25249) wifi:Password length matches WPA2 standards, authmode threshold changes from OPEN to WPA2 +I (25299) BluetoothProvisioning: 📡 已发起WiFi连接请求,启动超时监控 +I (25299) WifiBoard: WiFi credentials received via BLE +I (25399) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1, snd_ch_cfg:0x0 +I (25399) wifi:state: init -> auth (0xb0) +I (25429) wifi:state: auth -> assoc (0x0) +I (25439) wifi:state: assoc -> run (0x10) +I (25499) wifi:connected with airhub, aid = 4, channel 1, BW20, bssid = 70:2a:d7:85:bc:eb +I (25499) wifi:security: WPA2-PSK, phy: bgn, rssi: -32 +I (25509) wifi:pm start, type: 1 + +I (25509) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us +I (25509) wifi:set rx beacon pti, rx_bcn_pti: 14, bcn_timeout: 25000, mt_pti: 14, mt_time: 10000 +I (25509) BluetoothProvisioning: ✅ WiFi连接成功,SSID: airhub,等待获取IP地址 +I (25529) wifi:AP's beacon interval = 102400 us, DTIM period = 1 +I (25529) wifi:idx:0 (ifx:0, 70:2a:d7:85:bc:eb), tid:0, ssn:0, winSize:64 +I (27229) esp_netif_handlers: sta ip: 192.168.124.22, mask: 255.255.255.0, gw: 192.168.124.1 +I (27229) BluetoothProvisioning: ✅ WiFi获取IP地址成功: 192.168.124.22 +I (27229) BluetoothProvisioning: 💾 启用WiFi配置自动保存到NVS存储... +I (27229) BluetoothProvisioning: ✅ WiFi配置将自动保存到NVS存储 +I (27229) BluetoothProvisioning: 📋 获取当前WiFi配置成功,SSID: airhub +I (27229) SsidManager: compare [airhub:6] [airhub:6] +W (27229) SsidManager: SSID airhub already exists, overwrite it +I (27229) BluetoothProvisioning: ✅ WiFi凭据已保存到NVS列表 +I (27229) BluetoothProvisioning: BluetoothProvisioning WIFI_CONNECTED skip_session=0 +I (27229) BluetoothProvisioning: 🔍 准备设置状态为SUCCESS并触发回调 +I (27229) BluetoothProvisioning: 🔄 配网状态变化: CONNECTED -> SUCCESS +I (27229) WifiBoard: 设备配网成功,已连接到WiFi网络! +I (27229) BluetoothProvisioning: 🔍 [DEBUG] ReportWiFiStatus调用: success=true, client_connected_=true +I (27229) BluetoothProvisioning: 向客户端报告设备连接WiFi成功! +I (27229) BluetoothProvisioning: 📋 配网流程完成,状态: SUCCESS, client_connected_: true +I (27229) BluetoothProvisioning: ⏰ 延迟2000ms后重启设备以确保配置生效... +I (27989) WifiBoard: BLE provisioning completed successfully +I (27989) BluetoothProvisioning: 停止蓝牙配网... +I (27989) BluetoothProvisioning: 广播已停止 +W (27989) BT_HCI: hci cmd send: disconnect: hdl 0x1, rsn:0x13 +I (27989) BluetoothProvisioning: 📱 客户端已断开连接, reason=0x16, 当前状态: SUCCESS +I (27989) BluetoothProvisioning: 🔍 [DEBUG] 设置client_connected_为false +I (27989) BluetoothProvisioning: 🔄 配网状态变化: SUCCESS -> ADVERTISING +I (27989) WifiBoard: BLE client disconnected +I (27989) BluetoothProvisioning: 📡 广播数据设置完成,配置扫描响应数据 +I (27989) BluetoothProvisioning: 📡 扫描响应数据设置完成,启动广播 +I (27989) BluetoothProvisioning: 🔄 配网状态变化: ADVERTISING -> IDLE +I (27989) BluetoothProvisioning: 蓝牙配网已停止 +E (27989) esp_netif_lwip: esp_netif_new_api: Failed to configure netif with config=0x3fcb5960 (config or if_key is NULL or duplicate key) + +assert failed: esp_netif_create_default_wifi_sta wifi_default.c:422 (netif) + + +Backtrace: 0x40379d89:0x3fcb5800 0x40386cfd:0x3fcb5820 0x4038e465:0x3fcb5840 0x4215e6d7:0x3fcb5960 0x421083c9:0x3fcb5990 0x420262d2:0x3fcb5a70 0x420263c1:0x3fcb5aa0 +--- 0x40379d89: panic_abort at /Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/components/esp_system/panic.c:469 +--- 0x40386cfd: esp_system_abort at /Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/components/esp_system/port/esp_system_chip.c:87 +--- 0x4038e465: __assert_func at /Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/components/newlib/assert.c:80 +--- 0x4215e6d7: esp_netif_create_default_wifi_sta at /Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/components/esp_wifi/src/wifi_default.c:422 +--- 0x421083c9: WifiStation::Start() at /Users/rdzleo/Desktop/Baji_Rtc_Toy/managed_components/78__esp-wifi-connect/wifi_station.cc:101 +--- 0x420262d2: WifiBoard::MonitorBleProvisioning() at /Users/rdzleo/Desktop/Baji_Rtc_Toy/main/boards/common/wifi_board.cc:504 +--- 0x420263c1: WifiBoard::StartBleProvisioning()::{lambda(void*)#1}::_FUN(void*) at /Users/rdzleo/Desktop/Baji_Rtc_Toy/main/boards/common/wifi_board.cc:426 +--- (inlined by) _FUN at /Users/rdzleo/Desktop/Baji_Rtc_Toy/main/boards/common/wifi_board.cc:428 + + + + +ELF file SHA256: bbf9adf60 + +Rebooting... +ESP-ROM:esp32s3-20210327 +Build:Mar 27 2021 +rst:0xc (RTC_SW_CPU_RST),boot:0x2b (SPI_FAST_FLASH_BOOT) +Saved PC:0x42065eba +--- 0x42065eba: rw_schedule at ??:? +SPIWP:0xee +mode:DIO, clock div:1 +load:0x3fce2820,len:0x56c +load:0x403c8700,len:0x4 +load:0x403c8704,len:0xb88 +load:0x403cb700,len:0x2df4 +entry 0x403c88f4 +I (47) WeatherApi: 初始化天气API配置 - 默认城市: 北京 +I (48) WeatherApi: WiFi位置缓存限制已设置为: 5 条 +I (48) coexist: coex firmware version: 7b9a184 +I (49) coexist: coexist rom version e7ae62f +I (49) main_task: Started on CPU0 +I (59) main_task: Calling app_main() +I (79) BackgroundTask: background_task started +I (79) BluetoothProvisioning: 蓝牙配网对象创建完成 +I (79) button: IoT Button Version: 3.5.0 +I (79) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (79) button: IoT Button Version: 3.5.0 +I (79) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (79) Airhub1: Initializing I2C master bus for audio codec... +I (79) Airhub1: Scanning I2C bus for devices... +I (79) Airhub1: I2C设备在线: 0x18 +E (79) i2c.master: I2C transaction unexpected nack detected +E (79) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed +E (79) i2c.master: i2c_master_receive(1261): I2C transaction failed +E (79) i2c.master: I2C transaction unexpected nack detected +E (79) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed +E (79) i2c.master: i2c_master_receive(1261): I2C transaction failed +I (79) Airhub1: I2C设备在线: 0x40 +I (79) Airhub1: I2C scan completed. Found 2 devices +I (79) DZBJ: 开始初始化显示硬件... +I (79) gpio: GPIO[7]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (79) st77916: LCD panel create success, version: 1.0.1 +W (209) st77916: The 3Ah command has been used and will be overwritten by external initialization sequence +I (329) LCD: LCD GRAM cleared (black filled) +I (329) DZBJ: LCD 硬件初始化完成 +I (329) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:2 +I (329) gpio: GPIO[6]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (729) CST816S: IC id: 182 +I (729) LCD: Touch controller initialized successfully +I (729) LVGL: Starting LVGL task +I (729) LCD: LVGL buffer: 14400 bytes (W:360, Lines:20, DMA, single) +I (729) LCD: Touch controller added to LVGL +I (729) DZBJ: LVGL 初始化完成 +I (839) Airhub1: 🤖 AI对话模式启动 +I (839) Airhub1: 初始化按钮... +I (839) Airhub1: Boot button initialized on GPIO0 +I (839) Airhub1: Volume up button initialized on GPIO-1 +I (839) Airhub1: Volume down button initialized on GPIO-1 +I (839) Airhub1: 故事按键已初始化,GPIO引脚 =4 +I (839) Airhub1: 所有按键已成功初始化! +I (839) Airhub1: IMU传感器未初始化,跳过IoT注册 +I (839) Airhub1: Initializing battery monitor... +I (839) Airhub1: ADC calibration initialized +I (839) Airhub1: 电池状态监控已初始化,GPIO:3 +I (839) Airhub1: 非生产测试模式且不在对话状态,姿态传感器业务已禁用以节约资源 +I (839) PowerSaveTimer: Power save timer enabled +I (839) Airhub1: 🔋 PowerSaveTimer已启用,20秒无活动将进入低功耗模式 +I (839) Airhub1: 电容触摸板按钮已禁用 (ENABLE_TOUCH_PAD_BUTTONS=0) +I (839) Application: 打印设置设备状态日志: starting +I (839) Application: 正常启动流程,将执行开机播报和网络连接播报 +I (839) Airhub1: Initializing audio codec (duplex)... +I (839) Airhub1: Creating BoxAudioCodec (ES8311+ES7210, without reference) ... +I (839) BoxAudioCodec: Duplex channels created +I (849) ES8311: Work in Slave mode +I (849) gpio: GPIO[48]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (849) ES7210: Work in Slave mode +I (859) ES7210: Enable ES7210_INPUT_MIC1 +I (859) ES7210: Enable ES7210_INPUT_MIC2 +I (869) BoxAudioCodec: BoxAudioDevice initialized (duplex) +I (869) Airhub1: Audio codec initialized successfully +I (869) Application: 检测到WiFi板卡,将opus编码器复杂度设置为3 +I (869) OpusResampler: Resampler configured with input sample rate 16000, output sample rate 8000, and channels 1 +I (869) I2S_IF: channel mode 2 bits:16/16 channel:2 mask:1 +I (869) I2S_IF: TDM Mode 0 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (869) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 +I (869) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (869) ES7210: Bits 16 +I (879) ES7210: Enable ES7210_INPUT_MIC1 +I (879) ES7210: Enable ES7210_INPUT_MIC2 +I (889) ES7210: Unmuted +I (889) Adev_Codec: Open codec device OK +I (889) BoxAudioCodec: Input opened: sr=16000 ch=1 mask=0x1 ref=0 +I (889) AudioCodec: Set input enable to true +I (889) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 +I (889) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (909) Adev_Codec: Open codec device OK +I (909) AudioCodec: Set output enable to true +I (909) AudioCodec: Audio codec started +I (1009) Airhub1: ADC: 2379, 原始电压: 2.38V, 计算电池电压: 10.32V, 电量: 100%, 满电电压: 4.20V +I (1009) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1109) Airhub1: ADC: 2377, 原始电压: 2.38V, 计算电池电压: 10.32V, 电量: 100%, 满电电压: 4.20V +I (1109) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1209) Airhub1: ADC: 2377, 原始电压: 2.38V, 计算电池电压: 10.32V, 电量: 100%, 满电电压: 4.20V +I (1209) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1329) Airhub1: ADC: 2376, 原始电压: 2.38V, 计算电池电压: 10.31V, 电量: 100%, 满电电压: 4.20V +I (1329) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1429) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (1429) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1529) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (1529) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1649) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (1649) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1749) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (1749) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1869) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (1869) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1939) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (1939) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (1969) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (1969) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2069) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (2069) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2169) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (2169) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2269) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (2269) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2369) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (2369) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2469) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (2469) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2569) Airhub1: ADC: 2375, 原始电压: 2.38V, 计算电池电压: 10.31V, 电量: 100%, 满电电压: 4.20V +I (2569) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2669) Airhub1: ADC: 2375, 原始电压: 2.38V, 计算电池电压: 10.31V, 电量: 100%, 满电电压: 4.20V +I (2669) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2769) Airhub1: ADC: 2375, 原始电压: 2.38V, 计算电池电压: 10.31V, 电量: 100%, 满电电压: 4.20V +I (2769) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2939) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (2939) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (2959) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (2959) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (3059) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (3059) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (3059) AudioCodec: 将运行时输出音量设置为:75 +I (3059) Application: 设备启动完成,播放开机播报语音 +I (3059) pp: pp rom version: e7ae62f +I (3059) net80211: net80211 rom version: e7ae62f +I (3069) wifi:wifi driver task: 3fcdc36c, prio:23, stack:6656, core=0 +I (3069) wifi:wifi firmware version: bea31f3 +I (3069) wifi:wifi certification version: v7.0 +I (3069) wifi:config NVS flash: disabled +I (3069) wifi:config nano formatting: disabled +I (3069) wifi:Init data frame dynamic rx buffer num: 32 +I (3069) wifi:Init dynamic rx mgmt buffer num: 5 +I (3069) wifi:Init management short buffer num: 32 +I (3069) wifi:Init static tx buffer num: 8 +I (3069) wifi:Init tx cache buffer num: 32 +I (3069) wifi:Init static tx FG buffer num: 2 +I (3069) wifi:Init static rx buffer size: 1600 +I (3069) wifi:Init static rx buffer num: 10 +I (3069) wifi:Init dynamic rx buffer num: 32 +I (3069) wifi_init: rx ba win: 16 +I (3069) wifi_init: accept mbox: 6 +I (3069) wifi_init: tcpip mbox: 32 +I (3069) wifi_init: udp mbox: 6 +I (3069) wifi_init: tcp mbox: 6 +I (3069) wifi_init: tcp tx win: 5760 +I (3069) wifi_init: tcp rx win: 5760 +I (3069) wifi_init: tcp mss: 1440 +I (3069) wifi_init: WiFi/LWIP prefer SPIRAM +I (3069) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 +I (3109) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(0) +I (3109) Application: 开始播放下行音频: 样本=960 采样率=16000 +I (3119) wifi:mode : sta (d0:cf:13:03:bb:f0) +I (3129) wifi:enable tsf +I (5539) wifi: 发现可连接 AP: airhub, BSSID: 70:2a:d7:85:bc:eb, RSSI: -31, Channel: 1, Authmode: 3 +I (5539) WifiBoard: Starting WiFi connection, playing network connection sound +W (5539) wifi:Password length matches WPA2 standards, authmode threshold changes from OPEN to WPA2 +I (5639) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1, snd_ch_cfg:0x0 +I (5639) wifi:state: init -> auth (0xb0) +I (5659) wifi:state: auth -> assoc (0x0) +I (5679) wifi:state: assoc -> run (0x10) +I (5709) wifi:connected with airhub, aid = 4, channel 1, BW20, bssid = 70:2a:d7:85:bc:eb +I (5709) wifi:security: WPA2-PSK, phy: bgn, rssi: -30 +I (5709) wifi:pm start, type: 1 + +I (5709) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us +I (5709) wifi:set rx beacon pti, rx_bcn_pti: 14, bcn_timeout: 25000, mt_pti: 14, mt_time: 10000 +I (5719) wifi:AP's beacon interval = 102400 us, DTIM period = 1 +I (5749) wifi:idx:0 (ifx:0, 70:2a:d7:85:bc:eb), tid:0, ssn:0, winSize:64 +I (6839) Airhub1: 📤 设备状态上报已启用,每30秒上报一次 +I (9749) wifi: Got IP: 192.168.124.22 +I (9749) esp_netif_handlers: sta ip: 192.168.124.22, mask: 255.255.255.0, gw: 192.168.124.1 +I (10339) VolcRtcProtocol: 设置Agent配置参数: {"Config":{"WebSearchAgentConfig":{"ParamsString":"{\"bot_id\":\"7585449675889608233\",\"stream\":true,\"location_info\":{\"city\":\"广州市\"}}"}}} +I (10339) VolcRtcProtocol: VolcRtcProtocol 开始启动... +I (10339) VolcRtcProtocol: 使用配置文件中的设备名称: d0_cf_13_03_bb_f0 +I (10339) VolcRtcProtocol: NVS凭证已加载:secret=1 appid=1 device_name=d0_cf_13_03_bb_f0, free_heap=8230100 [INF|volc_rtc.c:597]volc_rtc_create: set param[0]: {"debug":{"log_to_console":1}} [INF|volc_rtc.c:597]volc_rtc_create: set param[1]: {"audio":{"codec":{"internal":{"enable":1}}}} [INF|volc_rtc.c:597]volc_rtc_create: set param[2]: {"rtc":{"access":{"concurrent_requests":1}}} [INF|volc_rtc.c:597]volc_rtc_create: set param[3]: {"rtc":{"ice":{"concurrent_agents":1}}} -1970-01-01 08:00:13.144 [I] VolcEngineRTCLite.c:153 ****************** HELLO BOOKA (68f0bc7617b8520178bef12c)(1.57.207.001)(HASH-5c3aa20fe851886d21cede0115044e17c3ec8a67) ******************** -1970-01-01 08:00:13.144 [I] VolcEngineRTCLite.c:158 Platform esp32s3 -1970-01-01 08:00:13.145 [I] VolcEngineRTCLite.c:161 OsVersion FreeRTOS/unknown -1970-01-01 08:00:13.145 [I] VolcEngineRTCLite.c:164 CompilerInfo GCC/14.2.0 -1970-01-01 08:00:13.145 [I] VolcEngineRTCLite.c:100 BOOKA_DEVICE_LOW_RESOURCE : ON -1970-01-01 08:00:13.145 [I] VolcEngineRTCLite.c:104 BOOKA_ENABLE_EVENT_REPORT : ON -1970-01-01 08:00:13.146 [I] VolcEngineRTCLite.c:108 ENABLE_G722_CODEC : ON -1970-01-01 08:00:13.146 [I] GlobalParams.c:232 pGlobalParams->configParams.rtc.access.concurrent_requests from 2 to 1 -1970-01-01 08:00:13.146 [I] GlobalParams.c:233 pGlobalParams->configParams.rtc.ice.concurrent_agents from 2 to 1 -1970-01-01 08:00:13.147 [I] GlobalParams.c:239 pGlobalParams->configParams.audio.codec.internal.enable from 0 to 1 -1970-01-01 08:00:13.147 [I] GlobalParams.c:244 pGlobalParams->configParams.debug.log_to_console from 0 to 1 -1970-01-01 08:00:13.147 [I] GlobalParams.c:247 pGlobalParams->configParams.rtc.root_path to . -1970-01-01 08:00:13.149 [E] Cache.c:273 operation returned status code: 0x00000009 -1970-01-01 08:00:13.155 [E] SocketConnection-Lite.c:191 bind local ip failed -1970-01-01 08:00:13.159 [I] LiteResolver.c:213 start resolve rtc-log-service.volcvideo.com by sep thread -1970-01-01 08:00:13.160 [I] API byte_rtc_set_audio_codec engine 0x3c4b20dc audio_codec_type 4 -1970-01-01 08:00:13.162 [I] API byte:82 rtcAudioCodec2Sd engine 0x3c4b20dc video_codec_type 0 -1970-01-01 08:00:13.162 [I] API byte:82 rtcAudioCodec2Sd engine 0x3c4b20dc video_codec_type 0 -I (13208) VolcRtcProtocol: RTC实例已准备就绪;房间加入将在监听状态后执行 -I (13208) Application: 🌐 开始初始化WebSocket协议... -I (13208) Application: 🔧 创建WebsocketProtocol实例 -I (13208) Application: 🚀 启动WebSocket协议 -I (13208) Application: ✅ WebSocket协议初始化完成 -I (13208) VolcRtcProtocol: VolcRtcProtocol初始化任务已创建 -I (13208) Application: 打印设置设备状态日志: idle -I (13208) Application: Entering idle state, playing standby sound -I (13208) WeatherApi: [AutoDetectAndSetLocation] 调用全局函数自动检测位置 -I (13208) WeatherApi: [AutoDetectLocation] ===== 开始自动检测位置 ===== -I (13218) WeatherApi: [AutoDetectLocation] 从NVS命中位置: '广州市',已更新默认城市 -I (13218) WeatherApi: [AutoDetectLocation] ===== 位置检测完成 ===== -I (13218) main_task: Returned from app_main() -1970-01-01 08:00:13.202 [I] LiteResolver.c:213 start resolve access.rtc.volcvideo.com by sep thread -1970-01-01 08:00:13.204 [I] LiteResolver.c:213 start resolve rtc-log-info.volcvideo.com by sep thread -1970-01-01 08:00:13.881 [E] Cache.c:311 operation returned status code: 0x00000009 -1970-01-01 08:00:14.103 [I] IceAgent.c:2533 cur nominatedCandidatePair local 192.168.124.22:0 remote 183.2.197.21:50000 state ICE_CANDIDATE_PAIR_STATE_SUCCEEDED -1970-01-01 08:00:15.162 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -1970-01-01 08:00:17.162 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -1970-01-01 08:00:19.162 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -I (19808) Airhub1: BOOT button clicked -I (19808) Airhub1: 当前设备状态: 3 -I (19808) Airhub1: 从待命状态切换到聆听状态 -I (19808) Airhub1: 强制重新初始化音频输出 -I (19818) I2S_IF: Pending out channel for in channel running -I (19818) AudioCodec: Set output enable to false -I (19868) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 -I (19868) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (19878) Adev_Codec: Open codec device OK -I (19878) AudioCodec: Set output enable to true -I (19878) Airhub1: 播放提示音:卡卡在呢 -I (19878) Airhub1: 等待音频播放完成... -I (20378) Airhub1: 音频队列已清空,等待硬件输出完成... -I (20878) Airhub1: 音频播放完成 -I (20878) Application: 打印设置设备状态日志: connecting -I (20888) Application: 正在尝试打开音频通道 -I (20888) WifiBoard: 🔋 电源管理模式切换: 禁用低功耗模式(恢复正常模式) -I (20888) wifi:Set ps type: 0, coexist: 0 +2026-03-24 16:18:55.587 [I] VolcEngineRTCLite.c:153 ****************** HELLO BOOKA (68f0bc7617b8520178bef12c)(1.57.207.001)(HASH-5c3aa20fe851886d21cede0115044e17c3ec8a67) ******************** +2026-03-24 16:18:55.588 [I] VolcEngineRTCLite.c:158 Platform esp32s3 +2026-03-24 16:18:55.588 [I] VolcEngineRTCLite.c:161 OsVersion FreeRTOS/unknown +2026-03-24 16:18:55.588 [I] VolcEngineRTCLite.c:164 CompilerInfo GCC/14.2.0 +2026-03-24 16:18:55.589 [I] VolcEngineRTCLite.c:100 BOOKA_DEVICE_LOW_RESOURCE : ON +2026-03-24 16:18:55.589 [I] VolcEngineRTCLite.c:104 BOOKA_ENABLE_EVENT_REPORT : ON +2026-03-24 16:18:55.589 [I] VolcEngineRTCLite.c:108 ENABLE_G722_CODEC : ON +2026-03-24 16:18:55.590 [I] GlobalParams.c:232 pGlobalParams->configParams.rtc.access.concurrent_requests from 2 to 1 +2026-03-24 16:18:55.590 [I] GlobalParams.c:233 pGlobalParams->configParams.rtc.ice.concurrent_agents from 2 to 1 +2026-03-24 16:18:55.590 [I] GlobalParams.c:239 pGlobalParams->configParams.audio.codec.internal.enable from 0 to 1 +2026-03-24 16:18:55.591 [I] GlobalParams.c:244 pGlobalParams->configParams.debug.log_to_console from 0 to 1 +2026-03-24 16:18:55.591 [I] GlobalParams.c:247 pGlobalParams->configParams.rtc.root_path to . +2026-03-24 16:18:55.593 [E] Cache.c:273 operation returned status code: 0x00000009 +2026-03-24 16:18:55.598 [E] SocketConnection-Lite.c:191 bind local ip failed +2026-03-24 16:18:55.601 [I] LiteResolver.c:213 start resolve rtc-log-service.volcvideo.com by sep thread +2026-03-24 16:18:55.604 [I] API byte_rtc_set_audio_codec engine 0x3c5340e0 audio_codec_type 4 +2026-03-24 16:18:55.605 [I] Common.c:82 rtcAudioCodec2SdkAudioCodec codec 5 +2026-03-24 16:18:55.606 [I] API byte_rtc_set_video_codec engine 0x3c5340e0 video_codec_type 0 +I (10359) VolcRtcProtocol: RTC实例已准备就绪;房间加入将在监听状态后执行 +I (10359) Application: 🌐 开始初始化WebSocket协议... +I (10359) Application: 🔧 创建WebsocketProtocol实例 +I (10359) Application: 🚀 启动WebSocket协议 +I (10359) Application: ✅ WebSocket协议初始化完成 +I (10359) VolcRtcProtocol: VolcRtcProtocol初始化任务已创建 +I (10359) EspHttp: Opening HTTP connection to https://xiaozhi-dev-web.goods.fun/xiaozhi/ota/ +I (10369) Application: 打印设置设备状态日志: idle +I (10379) AI_CHAT_UI: GIF表情切换: neutral +I (10379) Application: Entering idle state, playing standby sound +I (10389) WeatherApi: [AutoDetectAndSetLocation] 调用全局函数自动检测位置 +I (10389) WeatherApi: [AutoDetectLocation] ===== 开始自动检测位置 ===== +I (10389) WeatherApi: [AutoDetectLocation] 从NVS命中位置: '广州市',已更新默认城市 +I (10389) WeatherApi: [AutoDetectLocation] ===== 位置检测完成 ===== +I (10389) main_task: Returned from app_main() +2026-03-24 16:18:55.656 [I] LiteResolver.c:213 start resolve rtc-log-info.volcvideo.com by sep thread +2026-03-24 16:18:55.658 [I] LiteResolver.c:213 start resolve access.rtc.volcvideo.com by sep thread +I (10489) wifi:idx:1 (ifx:0, 70:2a:d7:85:bc:eb), tid:3, ssn:0, winSize:64 +I (10699) esp-x509-crt-bundle: Certificate validated +I (11259) Ota: HTTP response status code: 0 +I (11259) Ota: Server role: , Device role: RTC_Test +W (11259) Ota: Role mismatch (Device:RTC_Test vs Server:), upgrade denied +W (11259) Ota: ✗ Upgrade conditions not met - Role: ✗, Version check: skipped +I (11259) Ota: Running partition: ota_0 +2026-03-25 00:18:56.724 [E] Cache.c:311 operation returned status code: 0x00000009 +2026-03-25 00:18:56.942 [I] IceAgent.c:2533 cur nominatedCandidatePair local 192.168.124.22:0 remote 59.38.99.250:443 state ICE_CANDIDATE_PAIR_STATE_SUCCEEDED +I (12939) Airhub1: ADC: 2374, 原始电压: 2.37V, 计算电池电压: 10.30V, 电量: 100%, 满电电压: 4.20V +I (12939) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (17189) Airhub1: BOOT长按3秒:切换设备模式 +I (17189) Airhub1: AI模式 → 吧唧模式 +I (17199) DeviceMode: 模式切换为 吧唧,即将重启... +I (17699) wifi:state: run -> init (0x0) +I (17699) wifi:pm stop, total sleep time: 7184443 us / 11986157 us -I (20888) VolcRtcProtocol: Join RTC: handle=0x3c4b202c bot=botCL63FJgWe iot_ready=1 free_heap=8129976 -[INF|volc_rtc.c:695]volc_rtc_start: bot_id=botCL63FJgWe audio_codec=4 heap_free=8129976 -[INF|volc_device_manager.c:594]Get RTC config URL: https://iot-cn-shanghai.iot.volces.com/2021-12-14/GetRTCConfig?Action=GetRTCConfig&Version=2021-12-14 -[INF|volc_device_manager.c:595]RTC config request body: {"InstanceID":"68f0bc7611a5cf890711f2d0","product_key":"69080ba98219e1f34702d133","device_name":"d0_cf_13_03_bb_f0","random_num":20839,"timestamp":20839,"signature":"s17qowpzYg09gc3kI3fa4q2ojDH6kY9gli9RPNT7cRg=","bot_id":"botCL63FJgWe","audio_codec":4,"task_id":"test","Config":{"WebSearchAgentConfig":{"ParamsString":"{\"bot_id\":\"7585449675889608233\",\"stream\":true,\"location_info\":{\"city\":\"广州市\"}}"}}} -I (20888) VOLC_HTTP: HTTP POST attempt 1/3 -I (20888) VOLC_HTTP: Performing HTTP request... -I (20948) wifi:idx:1 (ifx:0, 70:2a:d7:85:bc:eb), tid:1, ssn:0, winSize:64 -I (21088) esp-x509-crt-bundle: Certificate validated -1970-01-01 08:00:21.162 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -I (21758) VOLC_HTTP: HTTP_EVENT_ON_DATA: read 307 bytes, total: 307 -I (21758) VOLC_HTTP: HTTP_EVENT_ON_DATA: read 130 bytes, total: 437 -I (21758) VOLC_HTTP: HTTP response status: 200 -I (21758) VOLC_HTTP: Content-Length: 437, actually read: 437 -I (21758) VOLC_HTTP: Successfully read response: 437 bytes -I (21758) VOLC_HTTP: HTTP POST request completed, response_buffer=0x3c4c8d1c -[INF|volc_device_manager.c:605]Get RTC config response received -[INF|volc_device_manager.c:606]RTC config response content: {"ResponseMetadata":{"Action":"GetRTCConfig","Version":"2021-12-14"},"Result":{"RoomID":"aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000","TaskID":"test","UserID":"d0_cf_13_03_bb_f0","Token":"00168f0bc7617b8520178bef12ceQBYBmoBLUylaa2GrmkyAGFpYm90cnRjX0c3MTFBX2QwX2NmXzEzXzAzX2JiX2YwXzIwMjYwMzAyMTYzNzAwMDAwEQBkMF9jZl8xM18wM19iYl9mMAYAAACthq5pAQCthq5pAgCthq5pAwCthq5pBACthq5pBQCthq5pIADXPUwCZH/EmqLt6WjO7kO6DybXby9KvHztSBsml4/cMg=="}} -[INF|volc_device_manager.c:702]Retrieved RTC config: channel_name=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000, uid=d0_cf_13_03_bb_f0, task_id=test -[INF|volc_rtc.c:701]volc_get_rtc_config success heap_free=8129288 -[INF|volc_rtc.c:119]Joining channel: aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000, uid: d0_cf_13_03_bb_f0, token: 00168f0bc7617b8520178bef12ceQBYBmoBLUylaa2GrmkyAGFpYm90cnRjX0c3MTFBX2QwX2NmXzEzXzAzX2JiX2YwXzIwMjYwMzAyMTYzNzAwMDAwEQBkMF9jZl8xM18wM19iYl9mMAYAAACthq5pAQCthq5pAgCthq5pAwCthq5pBACthq5pBQCthq5pIADXPUwCZH/EmqLt6WjO7kO6DybXby9KvHztSBsml4/cMg==, vpub: 0, vsub: 0, apub: 1, asub: 1 -[INF|volc_rtc.c:123]Memory before byte_rtc_join_room - Heap: 8129288 bytes, SPIRAM: 8101932 bytes -1970-01-01 08:00:21.715 [I] API byte_rtc_join_room engine 0x3c4b20dc channel_name aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 user_name d0_cf_13_03_bb_f0 token 00168f0bc7617b8520178bef12ceQBYBmoBLUylaa2GrmkyAGFpYm90cnRjX0c3MTFBX2QwX2NmXzEzXzAzX2JiX2YwXzIwMjYwMzAyMTYzNzAwMDAwEQBkMF9jZl8xM18wM19iYl9mMAYAAACthq5pAQCthq5pAgCthq5pAwCthq5pBACthq5pBQCthq5pIADXPUwCZH/EmqLt6WjO7kO6DybXby9KvHztSBsml4/cMg== audio sub 1 pub 1 video sub 0 pub 0 -[INF|volc_rtc.c:132]Memory after byte_rtc_join_room - Heap: 8128660 bytes (change: -628), SPIRAM: 8101352 bytes (change: -580) -1970-01-01 08:00:21.717 [I] RoomImplX.c:632 [room_event] key: join_room, type: begin, result: true -I (22028) Airhub1: ADC: 2297, 原始电压: 2.30V, 计算电池电压: 9.97V, 电量: 100%, 满电电压: 4.20V -I (22028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -1970-01-01 08:00:21.990 [I] Rtp.c:139 video_retrans_buffer_duration_ms = 3000 -1970-01-01 08:00:21.990 [I] Rtp.c:141 enable_video_transport_cc = 1 -1970-01-01 08:00:21.991 [I] Rtp.c:190 audio_retrans_buffer_duration_ms = 1000 -1970-01-01 08:00:21.992 [I] Rtp.c:193 enable_audio_transport_cc = 1 -1970-01-01 08:00:21.997 [I] RoomImplX.c:816 [room_event] key: join_room, type: end, result: true -[INF|volc_rtc.c:254]join channel success aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 elapsed 270 ms - -I (22048) VolcRtcProtocol: RTC连接成功 -I (22048) VolcRtcProtocol: Wait connect bits=0x1 free_heap=8036568 -1970-01-01 08:00:22.005 [W] IceMessageProcessor.c:360 TODO: handle signal engineControlMessage content {"body":{"media":"audio","codec":"PCMA"},"appId":"68f0bc7617b8520178bef12c","roomId":"aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000","type":"changeCodec","messageId":"2a885d5a93254d56af8ed5f60d750760","sessionId":"1X7pqXdFePR7kMIl6O1FkVXjug4W3Omp"} -[INF|volc_rtc.c:268]remote user joined aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000:bot_20260302163700000 elapsed 0 ms - -I (22548) VolcRtcProtocol: RTC远程用户加入 -I (22548) Application: Dialog watchdog started, initial device state: 7 -I (22548) Application: 打印设置设备状态日志: dialog -I (22548) Application: 🟢 音频通道已打开 -I (22548) Application: 当前设备状态: dialog -I (22548) Airhub1: 🔋 PowerSaveTimer已唤醒,从低功耗模式恢复到正常模式 -I (22548) Application: 🔄 禁用电源低功耗管理模式 -I (22548) VolcRtcProtocol: 延迟发送StartListening,等待会话就绪 -I (22548) WifiBoard: 🔋 电源管理模式切换: 禁用低功耗模式(恢复正常模式) -I (22558) wifi:Set ps type: 0, coexist: 0 - -I (22558) Application: 🔊 启用音频编解码器输出 -I (22548) Application: 进入对话框状态:启用全双工 -I (22558) Application: 🔄 音频通道打开,准备播放欢迎语音 -I (22558) Application: 当前设备状态: dialog -I (22558) Application: 🟢 音频通道初始化完成 -1970-01-01 08:00:22.510 [W] EngineImplX.c:598 callback pEngineImplX->eventHandler.on_user_joined used too many times 6 -1970-01-01 08:00:22.570 [I] rx_net_audio_jitterbuffer.c:183 first_frame_build_target_delay:1, direct_mode:0, direct_mode_max_wait_time:200 -1970-01-01 08:00:22.579 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=0, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=20 expand_npkt=1 expand_loss=0 start_seq 0 end_seq 0 -1970-01-01 08:00:22.618 [I] StreamSubscriber.c:336 [room_event] key: first_frame, media: audio, type: begin_recv -I (22928) Airhub1: 🔗 检测到RTC火山引擎已连接 -1970-01-01 08:00:23.078 [I] rx_net_audio_jitterbuffer.c:1785 fir pkt seq=0 -1970-01-01 08:00:23.079 [I] rx_net_audio_jitterbuffer.c:1792 first recv dia cnt=0, fir pkt=0 -1970-01-01 08:00:23.081 [I] rx_net_audio_jitterbuffer.c:1785 fir pkt seq=1 -1970-01-01 08:00:23.117 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 -1970-01-01 08:00:23.118 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 -1970-01-01 08:00:23.158 [I] rx_net_audio_jitterbuffer.c:1443 build_target_delay over need_extract_packet s=160 -1970-01-01 08:00:23.160 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -1970-01-01 08:00:23.182 [I] MediaService.c:405 [room_event] key: first_frame, media: audio, type: recv_end -1970-01-01 08:00:23.183 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 -I (23228) VolcRtcProtocol: 接收下行音频首包: 类型=PCM 大小=320 -I (23228) Application: 收到下行音频首包入队: 字节=320 -1970-01-01 08:00:23.628 [I] rx_net_lite_cc_bandwidth_estimation.c:200 lite-cc bandwidth up bandwidth = 4630000 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=281 binary=1 free_heap=7880128 -I (23978) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (23978) Application: .. assistant: 你好, -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=287 binary=1 free_heap=7875964 -I (24068) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (24068) Application: .. assistant: 你好,我 -1970-01-01 08:00:24.026 [I] rx_net_lite_cc_bandwidth_estimation.c:200 lite-cc bandwidth up bandwidth = 5000000 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=293 binary=1 free_heap=7875528 -I (24168) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (24168) Application: .. assistant: 你好,我是 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=299 binary=1 free_heap=7876832 -I (24368) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (24368) Application: .. assistant: 你好,我是啦 -I (24548) Application: dialog对话空闲倒计时剩余: 40 秒 -I (24568) VolcRtcProtocol: 上行音频统计: PCM帧=52 字节=16640, G711A帧=0 字节=0, 速率=66091 bps -I (24568) VolcRtcProtocol: 下行音频统计: PCM字节=21760, OPUS字节=0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=311 binary=1 free_heap=7878224 -I (24598) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (24598) Application: .. assistant: 你好,我是啦啦, -1970-01-01 08:00:24.607 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 94:1:95,in: jitter nor=30 reor=261, wj=35, out: pkt=72 t_diff=32 seq_diff=1 buffer_ms=460 target_ms=100 expand_npkt=25 expand_loss=0 start_seq 1 end_seq 93 -1970-01-01 08:00:24.680 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 4, e2e_avg: -1, e2e_max: 0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=317 binary=1 free_heap=7875768 -I (25168) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (25168) Application: .. assistant: 你好,我是啦啦,我 -1970-01-01 08:00:25.160 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=323 binary=1 free_heap=7877212 -I (25278) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (25278) Application: .. assistant: 你好,我是啦啦,我是 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=329 binary=1 free_heap=7873108 -I (25368) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (25368) Application: .. assistant: 你好,我是啦啦,我是你 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=337 binary=1 free_heap=7874612 -I (25568) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (25568) Application: .. assistant: 你好,我是啦啦,我是你的AI -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=343 binary=1 free_heap=7875292 -I (25968) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (25968) Application: .. assistant: 你好,我是啦啦,我是你的AI伙 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=350 binary=1 free_heap=7871676 -I (26078) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (26078) Application: .. assistant: 你好,我是啦啦,我是你的AI伙伴 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=355 binary=1 free_heap=7872492 -I (26368) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (26368) Application: >> assistant: 你好,我是啦啦,我是你的AI伙伴哦~ -I (26578) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63680 bps -I (26578) VolcRtcProtocol: 下行音频统计: PCM字节=32000, OPUS字节=0 -1970-01-01 08:00:26.621 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 97:0:97,in: jitter nor=25 reor=0, wj=26, out: pkt=101 t_diff=41 seq_diff=1 buffer_ms=380 target_ms=100 expand_npkt=0 expand_loss=0 start_seq 94 end_seq 190 -1970-01-01 08:00:27.172 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=271 binary=1 free_heap=7924956 -I (28168) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28168) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=271 binary=1 free_heap=7925008 -I (28178) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28178) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=271 binary=1 free_heap=7923104 -I (28258) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28258) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=271 binary=1 free_heap=7925120 -I (28348) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28348) Application: .. assistant: 今天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=271 binary=1 free_heap=7925116 -I (28448) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28448) Application: .. assistant: 今天 -I (28548) Application: dialog对话空闲倒计时剩余: 39 秒 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=271 binary=1 free_heap=7925156 -I (28548) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28548) Application: .. assistant: 今天 -I (28588) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64937 bps -I (28588) VolcRtcProtocol: 下行音频统计: PCM字节=7360, OPUS字节=0 -1970-01-01 08:00:28.634 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=26, out: pkt=18 t_diff=40 seq_diff=1 buffer_ms=0 target_ms=100 expand_npkt=83 expand_loss=0 start_seq 0 end_seq 0 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=289 binary=1 free_heap=7925120 -I (28808) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28808) Application: .. assistant: 今天的天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=289 binary=1 free_heap=7923152 -I (28838) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28838) Application: .. assistant: 今天的天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=289 binary=1 free_heap=7921348 -I (28878) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28878) Application: .. assistant: 今天的天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=289 binary=1 free_heap=7923120 -I (28958) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (28958) Application: .. assistant: 今天的天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=290 binary=1 free_heap=7925036 -I (29058) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29058) Application: .. assistant: 今天的天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=290 binary=1 free_heap=7925080 -I (29158) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29158) Application: .. assistant: 今天的天气 -1970-01-01 08:00:29.172 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=290 binary=1 free_heap=7925024 -I (29248) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29248) Application: .. assistant: 今天的天气 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7924912 -I (29478) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29478) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7924636 -I (29508) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29508) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7924916 -I (29548) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29548) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7924976 -I (29648) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29648) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7924980 -I (29748) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29748) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7925000 -I (29858) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (29858) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7923004 -I (30048) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (30048) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7922864 -I (30088) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (30088) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=308 binary=1 free_heap=7923912 -I (30148) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (30148) Application: .. assistant: 今天的天气怎么样 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=314 binary=1 free_heap=7921168 -I (30288) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (30298) Application: .. assistant: 今天的天气怎么样? -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=312 binary=1 free_heap=7922696 -I (30298) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (30298) Application: >> assistant: 今天的天气怎么样? -I (30548) Application: dialog对话空闲倒计时剩余: 37 秒 -I (30598) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63680 bps -I (30598) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:30.652 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=26, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -1970-01-01 08:00:31.079 [I] rx_net_audio_jitterbuffer.c:1797 the dia cnt update, last=0, seq=190, cur=1, seq=191 -1970-01-01 08:00:31.080 [I] rx_net_audio_jitterbuffer.c:1617 [a_jb]reset jb bsize=0, needr=1, rst_cur_round=0, rst_cnt=0 -1970-01-01 08:00:31.103 [I] rx_net_audio_jitterbuffer.c:1443 build_target_delay over need_extract_packet s=100 -1970-01-01 08:00:31.119 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 52, e2e_avg: 7, e2e_max: 15 -1970-01-01 08:00:31.162 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=312 binary=1 free_heap=7877156 -I (31868) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (31868) Application: .. assistant: 今天的天 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=318 binary=1 free_heap=7872532 -I (31988) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (31988) Application: .. assistant: 今天的天气 -I (32028) Airhub1: ADC: 2296, 原始电压: 2.30V, 计算电池电压: 9.96V, 电量: 100%, 满电电压: 4.20V -I (32028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=324 binary=1 free_heap=7876584 -I (32068) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (32068) Application: .. assistant: 今天的天气情 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=330 binary=1 free_heap=7876088 -I (32268) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (32268) Application: .. assistant: 今天的天气情况 -I (32548) Application: dialog对话空闲倒计时剩余: 40 秒 -I (32608) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63700 bps -I (32608) VolcRtcProtocol: 下行音频统计: PCM字节=23360, OPUS字节=0 -1970-01-01 08:00:32.820 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 69, e2e_avg: 15, e2e_max: 80 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=336 binary=1 free_heap=7876348 -I (32868) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (32868) Application: .. assistant: 今天的天气情况需 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=342 binary=1 free_heap=7873612 -I (33068) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (33068) Application: .. assistant: 今天的天气情况需要 -1970-01-01 08:00:33.103 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 121:0:121,in: jitter nor=4538 reor=104, wj=29, out: pkt=100 t_diff=33 seq_diff=1 buffer_ms=440 target_ms=100 expand_npkt=0 expand_loss=0 start_seq 191 end_seq 311 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=348 binary=1 free_heap=7876560 -I (33178) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (33178) Application: .. assistant: 今天的天气情况需要查 -1970-01-01 08:00:33.160 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=354 binary=1 free_heap=7876120 -I (33488) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (33488) Application: .. assistant: 今天的天气情况需要查询 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=360 binary=1 free_heap=7876920 -I (33688) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (33688) Application: .. assistant: 今天的天气情况需要查询实 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=366 binary=1 free_heap=7876096 -I (33868) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (33878) Application: .. assistant: 今天的天气情况需要查询实时 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=372 binary=1 free_heap=7874456 -I (33968) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (33978) Application: .. assistant: 今天的天气情况需要查询实时数 -1970-01-01 08:00:34.127 [E] LiteSocket.c:316 Send data to fd 58 realSend/should 0/36 I/O error type 2 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=390 binary=1 free_heap=7873948 -I (34178) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (34178) Application: .. assistant: 今天的天气情况需要查询实时数据呢, -I (34618) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63680 bps -I (34618) VolcRtcProtocol: 下行音频统计: PCM字节=32000, OPUS字节=0 -1970-01-01 08:00:34.817 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 20, e2e_avg: 15, e2e_max: 30 -I (34928) Airhub1: 📤 准备上报设备状态,电量: 100% -I (34928) Airhub1: 📤 上报数据: {"mac_address":"d0:cf:13:03:bb:f2","is_online":true,"battery":100,"volume":65,"brightness":50} -I (34928) EspHttp: Opening HTTP connection to http://192.168.124.8:8000/api/v1/devices/report-status -1970-01-01 08:00:35.115 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 101:0:101,in: jitter nor=22 reor=0, wj=19, out: pkt=101 t_diff=33 seq_diff=1 buffer_ms=440 target_ms=100 expand_npkt=0 expand_loss=0 start_seq 312 end_seq 412 -I (35178) Airhub1: 📥 服务器响应: {"code":0,"message":"状态上报成功","data":{"device_id":231,"sn":"AL-DZBJ-ON-26W09-A01-00001"}} -I (35178) Airhub1: ✅ 设备状态上报完成 -1970-01-01 08:00:35.160 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=396 binary=1 free_heap=7876208 -I (35278) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (35278) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=402 binary=1 free_heap=7875784 -I (35368) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (35378) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=408 binary=1 free_heap=7874252 -I (35478) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (35478) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=414 binary=1 free_heap=7874592 -I (35598) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (35598) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=420 binary=1 free_heap=7877916 -I (35768) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (35768) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=426 binary=1 free_heap=7875924 -I (35878) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (35878) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=432 binary=1 free_heap=7875688 -I (35968) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (35968) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=438 binary=1 free_heap=7873436 -I (36168) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (36168) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=444 binary=1 free_heap=7875024 -I (36268) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (36268) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体城 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=456 binary=1 free_heap=7874488 -I (36468) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (36468) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体城市, -I (36628) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64934 bps -I (36628) VolcRtcProtocol: 下行音频统计: PCM字节=32320, OPUS字节=0 -1970-01-01 08:00:36.818 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 59, e2e_avg: 13, e2e_max: 38 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=462 binary=1 free_heap=7870836 -I (37168) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (37168) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体城市,我 -1970-01-01 08:00:37.138 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 101:0:101,in: jitter nor=34 reor=0, wj=36, out: pkt=101 t_diff=33 seq_diff=1 buffer_ms=440 target_ms=100 expand_npkt=0 expand_loss=0 start_seq 413 end_seq 513 -1970-01-01 08:00:37.176 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=468 binary=1 free_heap=7876256 -I (37288) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (37288) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体城市,我帮 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=474 binary=1 free_heap=7875372 -I (37378) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (37378) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体城市,我帮你 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=480 binary=1 free_heap=7878460 -I (37568) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (37568) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体城市,我帮你看 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=486 binary=1 free_heap=7874284 -I (37778) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (37778) Application: .. assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体城市,我帮你看看 -[INF|volc_rtc.c:475]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260302163700000 src=bot_20260302163700000 size=491 binary=1 free_heap=7875512 -I (37878) VolcRtcProtocol: 接收下行二进制消息(字幕) -I (37878) Application: 字幕情绪: 平静 → neutral -I (37878) Application: >> assistant: 今天的天气情况需要查询实时数据呢,你可以告诉我具体城市,我帮你看看呀~ -I (38638) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63687 bps -I (38638) VolcRtcProtocol: 下行音频统计: PCM字节=28800, OPUS字节=0 -1970-01-01 08:00:39.142 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 41:0:41,in: jitter nor=22 reor=0, wj=36, out: pkt=62 t_diff=40 seq_diff=1 buffer_ms=0 target_ms=100 expand_npkt=38 expand_loss=0 start_seq 514 end_seq 554 -1970-01-01 08:00:39.172 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -I (40548) Application: dialog对话空闲倒计时剩余: 38 秒 -I (40648) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63698 bps -I (40648) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:41.162 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -1970-01-01 08:00:41.163 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -I (42028) Airhub1: ADC: 2295, 原始电压: 2.30V, 计算电池电压: 9.96V, 电量: 100%, 满电电压: 4.20V -I (42028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (42548) Application: dialog对话空闲倒计时剩余: 36 秒 -I (42658) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63681 bps -I (42658) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:43.123 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 -1970-01-01 08:00:43.124 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 -1970-01-01 08:00:43.125 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 -1970-01-01 08:00:43.125 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 -1970-01-01 08:00:43.182 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -1970-01-01 08:00:43.184 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -I (44548) Application: dialog对话空闲倒计时剩余: 34 秒 -I (44668) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64939 bps -I (44668) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:45.182 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -1970-01-01 08:00:45.194 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -I (46548) Application: dialog对话空闲倒计时剩余: 32 秒 -I (46678) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63667 bps -I (46678) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:47.172 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -1970-01-01 08:00:47.222 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -I (48548) Application: dialog对话空闲倒计时剩余: 30 秒 -I (48688) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63711 bps -I (48688) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:49.172 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -1970-01-01 08:00:49.231 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -I (50548) Application: dialog对话空闲倒计时剩余: 28 秒 -I (50698) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63681 bps -I (50698) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:51.172 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 -1970-01-01 08:00:51.252 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=100 expand_loss=0 start_seq 0 end_seq 0 -I (52028) Airhub1: ADC: 2295, 原始电压: 2.30V, 计算电池电压: 9.96V, 电量: 100%, 满电电压: 4.20V -I (52028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (52548) Application: dialog对话空闲倒计时剩余: 26 秒 -I (52708) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64939 bps -I (52708) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:53.172 [E] EventTransport.c:292 connect to logserver timeout, need shutdown -1970-01-01 08:00:53.262 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -I (54548) Application: dialog对话空闲倒计时剩余: 24 秒 -I (54718) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63678 bps -I (54718) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:55.274 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -1970-01-01 08:00:55.852 [E] LiteSocket.c:316 Send data to fd 58 realSend/should 0/36 I/O error type 2 -I (56548) Application: dialog对话空闲倒计时剩余: 22 秒 -I (56728) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63700 bps -I (56728) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:57.302 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -I (58548) Application: dialog对话空闲倒计时剩余: 20 秒 -I (58738) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63681 bps -I (58738) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:00:59.311 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -I (60548) Application: dialog对话空闲倒计时剩余: 18 秒 -I (60748) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64934 bps -I (60748) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:01:01.322 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=100 expand_loss=0 start_seq 0 end_seq 0 -I (62028) Airhub1: ADC: 2294, 原始电压: 2.29V, 计算电池电压: 9.96V, 电量: 100%, 满电电压: 4.20V -I (62028) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (62548) Application: dialog对话空闲倒计时剩余: 16 秒 -I (62758) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63685 bps -I (62758) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -1970-01-01 08:01:03.332 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=36, out: pkt=0 t_diff=0 seq_diff=0 buffer_ms=0 target_ms=100 expand_npkt=101 expand_loss=0 start_seq 0 end_seq 0 -I (64548) Application: dialog对话空闲倒计时剩余: 14 秒 -I (64768) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63698 bps -I (64768) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 -I (64928) Airhub1: 📤 准备上报设备状态,电量: 100% \ No newline at end of file +I (17699) wifi:idx:0, tid:0 +I (17699) wifi:idx:1, tid:3 +I (17699) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1, snd_ch_cfg:0x0 +I (17699) wifi: Reconnecting airhub (attempt 1 / 5) +I (17739) wifi:flush txq +I (17739) wifi:stop sw txq +I (17739) wifi:lmac stop hw txq +ESP-ROM:esp32s3-20210327 +Build:Mar 27 2021 +rst:0xc (RTC_SW_CPU_RST),boot:0x2b (SPI_FAST_FLASH_BOOT) +Saved PC:0x40379ccd +--- 0x40379ccd: esp_restart_noos at /Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/components/esp_system/port/soc/esp32s3/system_internal.c:162 +SPIWP:0xee +mode:DIO, clock div:1 +load:0x3fce2820,len:0x56c +load:0x403c8700,len:0x4 +load:0x403c8704,len:0xb88 +load:0x403cb700,len:0x2df4 +entry 0x403c88f4 +I (47) WeatherApi: 初始化天气API配置 - 默认城市: 北京 +I (48) WeatherApi: WiFi位置缓存限制已设置为: 5 条 +I (48) coexist: coex firmware version: 7b9a184 +I (48) coexist: coexist rom version e7ae62f +I (49) main_task: Started on CPU0 +I (59) main_task: Calling app_main() +I (79) Application: 🎴 吧唧模式:跳过 WiFi/协议/音频初始化 +I (79) Application: 打印设置设备状态日志: idle +I (79) BluetoothProvisioning: 蓝牙配网对象创建完成 +I (79) button: IoT Button Version: 3.5.0 +I (79) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (79) button: IoT Button Version: 3.5.0 +I (79) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (79) Airhub1: Initializing I2C master bus for audio codec... +I (79) Airhub1: Scanning I2C bus for devices... +I (79) Airhub1: I2C设备在线: 0x18 +E (79) i2c.master: I2C transaction unexpected nack detected +E (79) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed +E (79) i2c.master: i2c_master_receive(1261): I2C transaction failed +E (79) i2c.master: I2C transaction unexpected nack detected +E (79) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed +E (79) i2c.master: i2c_master_receive(1261): I2C transaction failed +I (79) Airhub1: I2C设备在线: 0x40 +I (79) Airhub1: I2C scan completed. Found 2 devices +I (79) DZBJ: 开始初始化显示硬件... +I (79) gpio: GPIO[7]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (79) st77916: LCD panel create success, version: 1.0.1 +W (209) st77916: The 3Ah command has been used and will be overwritten by external initialization sequence +I (329) LCD: LCD GRAM cleared (black filled) +I (329) DZBJ: LCD 硬件初始化完成 +I (329) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:2 +I (329) gpio: GPIO[6]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (729) CST816S: IC id: 182 +I (729) LCD: Touch controller initialized successfully +I (729) LVGL: Starting LVGL task +I (729) LCD: LVGL buffer: 14400 bytes (W:360, Lines:20, DMA, single) +I (729) LCD: Touch controller added to LVGL +I (729) DZBJ: LVGL 初始化完成 +I (729) DZBJ: UI 初始化完成 +I (829) DZBJ: 背光已点亮,dzbj 显示模块初始化完成 +I (829) Airhub1: 🎴 电子吧唧模式启动 +I (829) Airhub1: 初始化吧唧模式按钮... +I (829) Airhub1: Boot button initialized on GPIO0 +I (829) Airhub1: 吧唧模式按钮初始化完成 +I (829) Airhub1: 初始化电子吧唧模式外设... +I (939) FATFS: SPIFFS: Total size: 2763761, Used: 78061 +I (989) IMG_LIST: 开始扫描SPIFFS中的图片文件 +I (989) IMG_LIST: 发现图片文件: 03.jpg +I (989) IMG_LIST: 发现图片文件: 02.jpg +I (989) IMG_LIST: 发现图片文件: default.jpg +I (1039) IMG_LIST: 图片列表初始化完成,共发现 3 张图片 +I (1039) IMG_LIST: 设置默认图片索引: 2 +I (1039) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:2 +I (1039) DZBJ_BTN: 按键初始化完成 (KEY2=GPIO4,BOOT由iot_button处理) +I (1039) DZBJ_BAT: ADC校准初始化成功 +I (1039) DZBJ_BAT: 电池ADC初始化完成 (GPIO3, ADC1_CH2, 分压比=2) +I (1039) DZBJ_BAT: ADC原始值=2838, ADC电压=2372mV, 电池电压=4744mV, 电量=100% +I (1039) DZBJ_BAT: 电池监控任务已启动,更新间隔5000ms +I (1039) BLE_INIT: BT controller compile version [6cfabcd] +I (1039) BLE_INIT: Feature Config, ADV:1, BLE_50:1, DTM:1, SCAN:1, CCA:0, SMP:1, CONNECT:1 +I (1049) BLE_INIT: Bluetooth MAC: d0:cf:13:03:bb:f2 +I (1049) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 +I (1079) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(0) +I (1149) DZBJ_BLE: GATT server register, status 0, app_id 0 +I (1149) DZBJ_BLE: 图片传输服务创建成功,句柄: 28 +I (1149) DZBJ_BLE: 图片写入特征创建成功,句柄: 42 +I (1149) DZBJ_BLE: 图片编辑特征创建成功,句柄: 44 +I (1149) DZBJ_BLE: BLE MAC: d0:cf:13:03:bb:f2 +I (1149) DZBJ_BLE: 蓝牙设备名称: Airhub_d0:cf:13:03:bb:f2 +I (1149) DZBJ_BLE: Advertising data set, status 0 +I (1149) DZBJ_BLE: Scan response data set, status 0 +I (1149) DZBJ_BLE: Advertising start successfully +I (1149) SLEEP: 休眠管理器初始化完成(超时=10s) +I (1149) Airhub1: 电子吧唧模式初始化完成 +I (1149) main_task: Returned from app_main() +I (6039) DZBJ_BAT: ADC原始值=2841, ADC电压=2375mV, 电池电压=4750mV, 电量=100% +I (11039) DZBJ_BAT: ADC原始值=2841, ADC电压=2375mV, 电池电压=4750mV, 电量=100% +I (14509) DZBJ_BLE: Connected, conn_id 0, remote 73:8f:af:0d:36:7a +I (14539) DZBJ_BLE: PHY update, status 0, tx_phy 1, rx_phy 1 +I (14879) DZBJ_BLE: Connection params update, status 0, conn_int 12, latency 0, timeout 400 +I (15039) DZBJ_BLE: Connection params update, status 0, conn_int 6, latency 0, timeout 500 +I (15179) DZBJ_BLE: Connection params update, status 0, conn_int 12, latency 0, timeout 400 +I (16039) DZBJ_BAT: ADC原始值=2839, ADC电压=2372mV, 电池电压=4744mV, 电量=100% +I (16329) DZBJ_BLE: PHY update, status 0, tx_phy 2, rx_phy 2 +W (17429) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x13 dev_find 1 +I (17429) DZBJ_BLE: Disconnected, remote 73:8f:af:0d:36:7a, reason 0x13 +I (17429) DZBJ_BLE: Advertising start successfully +I (21039) DZBJ_BAT: ADC原始值=2842, ADC电压=2376mV, 电池电压=4752mV, 电量=100% \ No newline at end of file diff --git a/BLE图片传输问题分析与优化建议.md b/BLE图片传输问题分析与优化建议.md new file mode 100644 index 0000000..8b36024 --- /dev/null +++ b/BLE图片传输问题分析与优化建议.md @@ -0,0 +1,695 @@ +# BLE 图片传输失败分析与优化建议 + +## 一、问题现象 + +APP 通过 BLE 向设备传输一张 533934 字节(约 521KB)的 JPEG 图片,传输过程中 BLE 连接断开,图片未完整接收,设备屏幕未更新。 + +--- + +## 二、双端日志对照分析 + +### 2.1 APP 端日志(Flutter Web) + +``` +[BLE Transfer] MTU 协商失败,使用默认值: FlutterBluePlusException | requestMtu | fbp-code: 2 | android-only +[BLE Transfer] MTU=512, chunkSize=507 +[BLE Transfer] 服务: 0b00 +[BLE Transfer] 特征: 0b01 (write + writeWithoutResponse) +[BLE Transfer] 特征: 0b02 (write + writeWithoutResponse) +[BLE Transfer] JPEG 大小: 533934 字节 +[FBP] stopScan: already stopped +(以上日志重复出现两次 —— APP 进行了两次连接尝试) +``` + +### 2.2 设备端日志(ESP32-S3) + +``` +I (14939) DZBJ_BLE: Connected, conn_id 0, remote 9c:76:0e:47:1b:de +I (15959) DZBJ_BLE: 处理前序数据 +I (15959) DZBJ_BLE: 图片数据长度:533934 +I (16069) DZBJ_BLE: 传输通道建立成功,文件名称:face_1774336190.jpg,文件大小:533934 +I (16069) DZBJ_BLE: 获取到数据:第:1包,长度:509,是否结束:0 +I (19169) DZBJ_BLE: 获取到数据:第:101包,长度:509,是否结束:0 ← 3秒收100包 +I (23309) DZBJ_BLE: 获取到数据:第:201包,长度:509,是否结束:0 ← 4秒收100包 +I (25379) DZBJ_BLE: 获取到数据:第:1包,长度:509,是否结束:0 ← 包序号溢出* +W (26369) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x13 dev_find 1 +I (26369) DZBJ_BLE: Disconnected, reason 0x13 ← APP主动断开 +``` + +> *注:包序号字段为 `uint8_t`(0~255),第 256 包时溢出回到 0,日志显示为"第1包"。**传输本身未中断,仅是日志显示溢出**。设备端后续会修复此日志。 + +### 2.3 时间线还原 + +| 时间点 | 事件 | 说明 | +|--------|------|------| +| T+0s | BLE 连接建立 | MTU=512 生效 | +| T+1s | 前序数据解析 | 文件名 + 文件大小 | +| T+1.1s | 传输开始 | chunkSize=507 字节/包 | +| T+1.1s ~ T+9.3s | 数据传输中 | 约收到 300 包 ≈ 150KB | +| **T+10.3s** | **APP 断开连接** | reason 0x13 = Remote User Terminated | +| - | 无"传输完成"日志 | 图片未保存,屏幕未更新 | + +### 2.4 传输进度估算 + +- 需要总包数:533934 ÷ 505(每包纯数据) ≈ **1058 包** +- 实际传输时间:约 10 秒 +- 已接收约:300~400 包(150KB~200KB) +- **完成度:约 30%** + +--- + +## 三、问题根因 + +### 3.1 核心原因:WriteWithoutResponse 无流控导致 BLE 缓冲区溢出 + +APP 使用 `writeWithoutResponse` 模式连续发送 1058 个数据包,此模式特点: + +- **不等待设备端 ACK**,发送速度完全由 APP 端控制 +- ESP32-S3 的 BLE 协议栈有内部缓冲区(Bluedroid TX buffer),连续高速写入导致缓冲区积压 +- 当缓冲区满且链路层来不及发送时,**底层协议栈会主动断开连接** +- BLE 规范中 WriteWithoutResponse 没有流控机制,必须由应用层自行控制节奏 + +### 3.2 次要原因:Flutter Web 环境 BLE 限制 + +- `js_primitives.dart` 表明 APP 运行在 **Flutter Web**(浏览器)环境 +- Web Bluetooth API 的 `requestMtu` 不可用(Android-only API),MTU 由浏览器自动协商 +- Web Bluetooth 的写入吞吐量和稳定性**显著低于** Android/iOS 原生 BLE +- 浏览器对 BLE 操作有隐式超时和安全限制 + +### 3.3 APP 连接了两次 + +APP 日志出现两组完整的服务发现记录,但设备端只有一次连接/断连,可能原因: +- 第一次连接极短(未成功开始传输),设备端未触发 CONNECT_EVT +- 或第一次只完成了服务发现就断开,第二次才开始数据传输 + +--- + +## 四、APP 端优化建议 + +### 4.1 【P0 - 必须修复】添加发送流控 + +这是导致传输失败的直接原因,**必须修复**。 + +#### 方案 A:混合写入模式(推荐,改动最小) + +每 N 包使用一次 `write`(带响应)作为同步点,其余用 `writeWithoutResponse`: + +```dart +const int SYNC_INTERVAL = 10; // 每 10 包同步一次 + +for (var i = 0; i < chunks.length; i++) { + if (i % SYNC_INTERVAL == 0) { + // 带响应写入:等待设备端 ACK,天然起到流控作用 + await characteristic.write(chunks[i], withoutResponse: false); + } else { + // 无响应写入:速度快 + await characteristic.write(chunks[i], withoutResponse: true); + } +} +``` + +**原理**:`write`(withoutResponse: false)会等待设备端 GATT 层 ACK,这个等待天然给设备端缓冲区消化数据的时间,避免溢出。 + +#### 方案 B:固定间隔延迟 + +如果不想用混合模式,在每批包之间加短延迟: + +```dart +for (var i = 0; i < chunks.length; i++) { + await characteristic.write(chunks[i], withoutResponse: true); + // 每 20 包暂停一下,让设备端消化缓冲区 + if (i % 20 == 0) { + await Future.delayed(Duration(milliseconds: 10)); + } +} +``` + +#### 方案 C:基于 FlutterBluePlus 队列深度控制 + +FlutterBluePlus 3.x+ 支持写入队列管理: + +```dart +// 限制最大并发写入数,防止缓冲区溢出 +FlutterBluePlus.setWriteQueueSize(maxConcurrent: 5); +``` + +### 4.2 【P0 - 必须修复】添加断连检测与错误处理 + +当前 APP 在传输中断后没有任何错误反馈,用户不知道发生了什么: + +```dart +// 监听连接状态变化 +device.connectionState.listen((state) { + if (state == BluetoothConnectionState.disconnected) { + if (transferInProgress) { + showError("传输中断,已发送 ${sentBytes}/${totalBytes} 字节,请重试"); + transferInProgress = false; + } + } +}); + +// 传输函数中添加异常捕获 +Future transferImage(List imageData) async { + try { + transferInProgress = true; + for (var i = 0; i < chunks.length; i++) { + if (!device.isConnected) { + throw Exception("BLE 连接断开,传输中止于第 $i/${chunks.length} 包"); + } + await characteristic.write(chunks[i], withoutResponse: i % 10 != 0); + sentBytes = i * chunkSize; + } + transferInProgress = false; + } catch (e) { + transferInProgress = false; + log("[BLE Transfer] 传输失败: $e"); + rethrow; // 向上层抛出,由 UI 处理 + } +} +``` + +### 4.3 【P1 - 建议修复】断连自动重试 + +```dart +const int MAX_RETRIES = 3; + +Future transferWithRetry(List imageData) async { + for (var attempt = 0; attempt < MAX_RETRIES; attempt++) { + try { + if (!device.isConnected) { + await device.connect(timeout: Duration(seconds: 10)); + await device.discoverServices(); + } + await transferImage(imageData); + return true; // 传输成功 + } catch (e) { + log("[BLE Transfer] 第 ${attempt + 1} 次尝试失败: $e"); + await device.disconnect(); + await Future.delayed(Duration(seconds: 2)); // 等待后重试 + } + } + return false; // 全部重试失败 +} +``` + +### 4.4 【P1 - 建议修复】Flutter Web 平台适配 + +Web Bluetooth 吞吐量低于原生 BLE,需要更保守的传输策略: + +```dart +import 'package:flutter/foundation.dart' show kIsWeb; + +// 根据平台调整传输参数 +int getSyncInterval() { + if (kIsWeb) { + return 5; // Web 环境:每 5 包同步一次(更保守) + } else { + return 15; // Native 环境:每 15 包同步一次 + } +} + +// Web 端建议同时降低传输并发 +int getChunkBatchSize() { + if (kIsWeb) { + return 10; // Web:每批 10 包 + 10ms 间隔 + } else { + return 30; // Native:每批 30 包 + } +} +``` + +### 4.5 【P2 - 可选优化】传输进度 UI + +```dart +Future transferImage( + List imageData, { + void Function(double progress)? onProgress, +}) async { + final chunks = splitIntoChunks(imageData, chunkSize); + for (var i = 0; i < chunks.length; i++) { + await characteristic.write(chunks[i], withoutResponse: i % 10 != 0); + onProgress?.call((i + 1) / chunks.length); + } +} + +// UI 层调用 +transferImage(jpegData, onProgress: (progress) { + setState(() => transferProgress = progress); // 0.0 ~ 1.0 +}); +``` + +--- + +## 五、BLE 图传协议参考 + +### 5.1 协议格式 + +#### 前序包(第一包,建立传输通道) + +写入特征:`0x0B01` + +| 偏移 | 长度 | 字段 | 说明 | +|------|------|------|------| +| 0 | 1 | type | 固定 `0xFD` 表示图片传输 | +| 1 | 22 | filename | 文件名(UTF-8,'\0'填充) | +| 23 | 3 | length | 文件总大小(大端序,3字节) | + +#### 数据包(后续包) + +写入特征:`0x0B01` + +| 偏移 | 长度 | 字段 | 说明 | +|------|------|------|------| +| 0 | 1 | pkt_no | 包序号(0~255 循环,仅用于日志) | +| 1 | 1 | isEnd | 0=继续传输, 1=最后一包 | +| 2 | N | data | 图片数据(N = chunkSize - 2 = 505 字节) | + +#### 图片编辑命令 + +写入特征:`0x0B02` + +| 类型字节(末字节) | 说明 | +|----------|------| +| `0xFF` | 切换显示指定图片(payload 前 22 字节为文件名) | +| `0xF1` | 删除指定图片 | + +### 5.2 MTU 与包大小关系 + +``` +协商 MTU = 512 +ATT Header = 3 字节 +GATT Write Header = 2 字节(attribute handle) +───────────────────────── +可用 Payload = 512 - 3 - 2 = 507 字节(即 chunkSize) +数据包头 = 2 字节(pkt_no + isEnd) +每包纯图片数据 = 507 - 2 = 505 字节 +``` + +### 5.3 传输耗时预估 + +基于连接间隔 7.5~20ms(设备端配置 min_int=6, max_int=16),加入方案 A 流控后: + +| 图片大小 | 总包数 | 无流控(当前) | 方案A 流控后预估 | +|----------|--------|---------------|-----------------| +| 100KB | ~203 | ~2s(可能断连) | ~4s | +| 300KB | ~608 | ~6s(可能断连) | ~12s | +| 500KB | ~1013 | ~10s(大概率断连) | ~20s | +| 1MB | ~2026 | 必定断连 | ~40s | + +--- + +## 六、设备端已完成的修复 + +以下问题已在最新固件中修复: + +| 问题 | 影响 | 修复状态 | +|------|------|----------| +| BLE 断连后未清理传输状态 | `img_data` 内存泄漏,`SendStatus.isSend` 残留 | ✅ 已修复:`DISCONNECT_EVT` 中自动释放资源 | +| BLE 5.0 2M PHY 未启用 | 传输速度只有 1M PHY | ✅ 已启用:连接后自动协商 2M PHY,速度翻倍 | +| 未使用的 BluFi 组件占用编译资源 | 与 BLE 5.0 不兼容 | ✅ 已移除:两种模式均使用自定义 GATT Server | + +--- + +## 七、测试验证清单 + +完成 APP 端优化后,请按以下步骤验证: + +- [ ] **小图测试**:传输 50KB 图片,确认完整接收并显示 +- [ ] **大图测试**:传输 500KB+ 图片,确认不中途断连 +- [ ] **连续测试**:连续传 3~5 张图片,每次都成功 +- [ ] **弱信号测试**:手机距设备 3~5 米,测试传输稳定性 +- [ ] **Web 端测试**:在 Chrome 浏览器中完成上述全部测试 +- [ ] **断连恢复测试**:传输中手动关闭蓝牙再打开,确认 APP 能正确提示并重试 + +### 传输成功的设备端日志标志 + +``` +I DZBJ_BLE: 传输通道建立成功,文件名称:xxx.jpg,文件大小:533934 +I DZBJ_BLE: 获取到数据:第:101包,长度:509,是否结束:0 +I DZBJ_BLE: 获取到数据:第:201包,长度:509,是否结束:0 +...(中间持续接收) +I DZBJ_BLE: 数据接收完毕,累计:533934字节,预期:533934字节 ← 累计 = 预期 +I DZBJ_BLE: 图片接收成功,数据直通显示(533934字节) ← 屏幕更新触发 +``` + +--- + +## 八、BLE 5.0 2M PHY 已启用(设备端已完成) + +设备端固件已启用 BLE 5.0 2M PHY,**APP 端无需任何修改**,PHY 协商在 BLE 链路层自动完成,对 GATT 操作完全透明。 + +### 8.1 设备端日志确认 + +``` +I BLE_INIT: Feature Config, ADV:1, BLE_50:1, ... ← BLE 5.0 已启用 +I DZBJ_BLE: Connected, conn_id 0, remote 73:8f:af:0d:36:7a +I DZBJ_BLE: PHY update, status 0, tx_phy 1, rx_phy 1 ← 初始 1M PHY +I DZBJ_BLE: PHY update, status 0, tx_phy 2, rx_phy 2 ← 自动切换到 2M PHY ✅ +``` + +### 8.2 速度对比 + +| PHY 模式 | 物理层速率 | 实际应用层吞吐量 | 533KB 图片预估耗时 | +|----------|-----------|-----------------|-------------------| +| 1M PHY(旧固件) | 1 Mbps | ~100-200 KB/s | ~3-5s | +| **2M PHY(当前固件)** | **2 Mbps** | **~200-350 KB/s** | **~1.5-2.5s** | + +### 8.3 兼容性 + +- 手机支持 BLE 5.0(2017 年后主流机型):自动协商 2M PHY,速度翻倍 +- 手机不支持 BLE 5.0:自动保持 1M PHY,不报错,功能不受影响 +- APP 端 FlutterBluePlus 的 `write` / `writeWithoutResponse` 调用方式完全不变 + +--- + +## 九、【P0 关键问题】Flutter APP 无法连接电子吧唧模式 + +### 9.1 问题现象 + +Flutter APP 在电子吧唧模式下可以扫描到设备,**BLE 连接成功,但约 3 秒后 APP 主动断开**,无法进行图片传输。而在 AI 对话模式下,同一 APP 可以正常连接和蓝牙配网。 + +### 9.2 设备端日志分析(设备端完全正常) + +``` +I (14509) DZBJ_BLE: Connected, conn_id 0, remote 73:8f:af:0d:36:7a ← 连接成功 ✅ +I (14539) DZBJ_BLE: PHY update, status 0, tx_phy 1, rx_phy 1 ← PHY 初始化 ✅ +I (14879) DZBJ_BLE: Connection params update, conn_int 12 ← 参数协商 ✅ +I (15039) DZBJ_BLE: Connection params update, conn_int 6 ← 参数协商 ✅ +I (16329) DZBJ_BLE: PHY update, status 0, tx_phy 2, rx_phy 2 ← 2M PHY 切换 ✅ +W (17429) BT_HCI: hcif disc complete: rsn 0x13 ← APP 主动断开 ❌ +I (17429) DZBJ_BLE: Disconnected, reason 0x13 +``` + +**设备端没有任何错误**。BLE 连接正常建立,参数协商正常,PHY 成功切换到 2M。是 APP 端在连接后约 3 秒主动断开了连接(reason 0x13 = Remote User Terminated Connection)。 + +### 9.3 APP 端日志分析 + +``` +[BLE Transfer] MTU 协商失败,使用默认值: FlutterBluePlusException | requestMtu | fbp-code: 2 | android-only +[BLE Transfer] MTU=512, chunkSize=507 +[BLE Transfer] 服务: 0b00 +[BLE Transfer] 特征: 0b01 (write + writeWithoutResponse) +[BLE Transfer] 特征: 0b02 (write + writeWithoutResponse) +[BLE Transfer] JPEG 大小: 533934 字节 +(以上日志重复出现两次 —— APP 进行了两次连接尝试) +``` + +APP 日志显示: +1. MTU 协商失败(`fbp-code: 2, android-only` 表明 `requestMtu` 在非 Android 平台不可用) +2. 服务和特征**已成功发现**(0x0B00 服务、0x0B01/0x0B02 特征) +3. 整个流程重复了两次(两次连接尝试都失败) + +### 9.4 根因分析 + +APP 连接后能发现服务和特征,但仍然断开,可能的原因: + +#### 原因 1:MTU 协商失败导致后续写入异常 + +`requestMtu` 失败后,APP 代码中 `MTU=512, chunkSize=507` 是写死的回退值。如果实际系统 MTU 远小于 512(某些平台默认 MTU=23),每包发送 509 字节(2字节ATT头 + 507 数据)会超出实际 MTU,**导致 BLE 协议栈直接丢包或报错**。 + +**修复方案**:MTU 协商失败时,应使用系统默认 MTU 或通过平台 API 获取实际值,而非写死 512。 + +```dart +try { + await device.requestMtu(512); +} catch (e) { + print('MTU 协商失败: $e'); +} +// 关键:无论 requestMtu 是否成功,都从系统获取实际 MTU +final actualMtu = await device.mtu.first; // 获取实际协商的 MTU +final chunkSize = actualMtu - 3; // ATT 头部 3 字节 +print('实际 MTU: $actualMtu, chunkSize: $chunkSize'); +``` + +#### 原因 2:连接后流程异常导致超时断开 + +APP 可能在 MTU 协商失败后进入了错误处理分支,没有继续执行图片传输,等待超时后断开。 + +**排查方法**:在 Flutter 代码中检查 `requestMtu` 失败后是否有 `return` 或异常抛出中断了后续的 `discoverServices` / `write` 流程。 + +**修复方案**:确保 `requestMtu` 失败不会中断主流程。 + +```dart +Future connectAndTransfer(BluetoothDevice device) async { + await device.connect(); + + // MTU 协商(失败不影响后续流程) + try { + await device.requestMtu(512); + } catch (e) { + print('MTU 协商失败,使用默认值: $e'); + // ✅ 不要 return 或 throw,继续执行 + } + + // 服务发现(必须执行) + final services = await device.discoverServices(); + final imageService = services.firstWhere( + (s) => s.uuid.toString().contains('0b00'), + orElse: () => throw Exception('未找到图传服务 0x0B00'), + ); + + // 获取特征 + final writeChar = imageService.characteristics.firstWhere( + (c) => c.uuid.toString().contains('0b01'), + ); + + // 开始传输... + await transferImage(writeChar, imageData); +} +``` + +#### 原因 3:APP 连接了两次 + +日志显示完整的连接流程重复出现两次。第一次连接可能在写入数据时失败,APP 重试了一次但结果相同。 + +**排查方法**:检查 APP 中是否有自动重连/重试逻辑,以及第一次连接失败时的具体错误信息。 + +### 9.5 两种模式 BLE 服务对比 + +APP 需要支持连接两种模式的 BLE 服务,它们的差异: + +| 维度 | AI 对话模式(配网) | 电子吧唧模式(图传) | +|------|-------------------|-------------------| +| 服务 UUID | `0xABF0` | `0x0B00` | +| 写入特征 | `0xABF1` (Write) | `0x0B01` (Write + WriteNoResponse) | +| 通知特征 | `0xABF2` (Notify) | `0x0B02` (Write,非 Notify) | +| 设备名称 | `Airhub_xx:xx:xx:xx:xx:xx` | `Airhub_xx:xx:xx:xx:xx:xx`(相同) | +| 广播标识 | 扫描响应含 `ABF0` UUID | 扫描响应含厂商数据 `LDdzbj` + `0B00` UUID | +| 协议格式 | 二进制命令(1字节CMD + payload) | 二进制帧(前序帧 + 数据帧,见第五章) | + +**APP 端区分两种模式的方法**: +- 扫描响应(Scan Response)中的厂商数据包含 ASCII `"dzbj"` → 电子吧唧模式 +- 连接后发现服务 `0x0B00` → 图传模式;发现服务 `0xABF0` → 配网模式 +- 两种模式不会同时存在(设备重启切换),APP 只需按发现的服务 UUID 走对应流程 + +### 9.6 APP 端自查清单 + +请 Flutter APP 开发者按以下顺序排查: + +- [ ] `requestMtu(512)` 失败后,是否 `return` / `throw` 中断了后续流程? +- [ ] `requestMtu` 失败后,`chunkSize` 是否仍为 507?实际 MTU 是否支持这个大小? +- [ ] `discoverServices()` 是否在 `requestMtu` 之后执行?是否能找到 `0x0B00` 服务? +- [ ] 写入特征时使用 `writeWithoutResponse` 还是 `write`?是否有流控/节流机制? +- [ ] 连接断开时是否有更详细的错误日志(FlutterBluePlus 的 `onConnectionStateChanged`)? +- [ ] 两次连接尝试之间是否有足够的间隔(建议 2 秒以上)? + +--- + +## 十、UniApp 成功 vs Flutter 失败——对比分析 + +UniApp 测试 APP 可以正常连接电子吧唧模式并成功传输图片,而 Flutter 正式 APP 连接后约 3 秒断开。以下是两者 BLE 实现的关键差异分析。 + +### 10.1 连接流程对比 + +| 步骤 | UniApp(成功) | Flutter(失败) | +|------|--------------|----------------| +| **BLE 连接** | `uni.createBLEConnection()` 原生 API | `device.connect()` FlutterBluePlus | +| **MTU 协商** | `uni.setBLEMTU({mtu:512})`,失败仅 log 不中断 | `device.requestMtu(512)` 抛异常 `android-only` | +| **MTU 失败处理** | 成功 → `getBleService()`;失败 → 仅打印日志,**不中断流程** | 异常后 `chunkSize` 写死 507,**可能中断后续流程** | +| **服务发现** | `uni.getBLEDeviceServices()` → `findByUuid16()` 灵活匹配 | `device.discoverServices()` → UUID 字符串匹配 | +| **特征发现** | `uni.getBLEDeviceCharacteristics()` → 同样灵活匹配 | 从服务对象直接获取 | + +### 10.2 UniApp 成功的 5 个关键因素 + +#### 因素 1:MTU 协商失败不阻塞主流程 + +```javascript +// UniApp connect.vue:426 +setBleMtu() { + uni.setBLEMTU({ + deviceId: this.deviceId, + mtu: 512, + success() { + that.isConnected = true; + that.getBleService(); // ✅ 成功后继续 + }, + fail() { + console.log('MTU设置失败'); // ✅ 仅打印,不阻塞 + } + }) +} +``` + +**注意**:UniApp 的 `fail` 回调中确实**没有**调用 `getBleService()`,但在原生 APP 环境下 `setBLEMTU` 通常会成功。如果 MTU 设置失败,UniApp 也无法继续——但它运行在原生环境中,所以 MTU 协商基本都成功。 + +**Flutter 问题**:`requestMtu` 在非 Android 平台(iOS/Web)直接抛异常,如果异常处理不当(catch 中 return/throw),后续服务发现和传输都不会执行。 + +#### 因素 2:UUID 灵活匹配(兼容多种格式) + +```javascript +// UniApp connect.vue:358 +findByUuid16(list, uuid16) { + const hex4 = uuid16.toString(16).padStart(4, '0').toLowerCase(); + const fullTarget = '0000' + hex4 + '-0000-1000-8000-00805f9b34fb'; + return list.find(item => { + const uuid = item.uuid.toLowerCase(); + if (uuid === fullTarget) return true; // 128-bit 完整格式 + if (uuid === hex4 || uuid === '0000' + hex4) return true; // 短格式 + if (uuid.startsWith('0000' + hex4 + '-')) return true; // 前缀匹配 + return false; + }); +} +``` + +UniApp 同时匹配 `"0b00"`、`"00000b00"`、`"00000b00-0000-1000-8000-00805f9b34fb"` 三种格式。**不同平台/不同 BLE 库返回的 UUID 格式不统一**,灵活匹配避免了因格式不匹配导致"找不到服务"的问题。 + +**Flutter 建议**:检查 `discoverServices()` 返回的 UUID 格式,确保匹配逻辑兼容短 UUID 和完整 128-bit UUID。 + +#### 因素 3:每包 5ms 延迟 + 重试机制(基础流控) + +```javascript +// UniApp connect.vue:308 writeBleImage() +while (offset < len) { + await this.bleWrite(this.imageWriteuuid, packet.buffer); + await this.delay(5); // ✅ 每包 5ms 延迟,防止 BLE 缓冲区溢出 + offset += chunkLen; + packetNo++; +} + +// UniApp connect.vue:237 bleWrite()(带重试) +async bleWrite(characteristicId, buffer) { + const MAX_RETRY = 3; + for (let i = 0; i < MAX_RETRY; i++) { + try { + await this._bleWriteOnce(characteristicId, buffer, 'writeNoResponse'); + return; + } catch (err) { + if (i < MAX_RETRY - 1) { + await this.delay(20 * (i + 1)); // ✅ 退避递增:20ms, 40ms, 60ms + } else { + // ✅ 最后一次尝试降级为 write(带应答) + await this._bleWriteOnce(characteristicId, buffer, 'write'); + return; + } + } + } +} +``` + +这是 UniApp 传输成功的**最核心因素**: +- **每包 5ms 延迟**:给 ESP32 BLE 协议栈缓冲区消化时间 +- **3 次重试**:写入失败不立即放弃 +- **退避递增**:重试间隔 20ms → 40ms → 60ms,给系统更多恢复时间 +- **降级机制**:最终尝试用 `write`(带 ACK 应答),天然起到流控作用 + +#### 因素 4:前序帧发送后等待 50ms + +```javascript +// UniApp connect.vue:323 +await this.bleWrite(this.imageWriteuuid, header.buffer); +await this.delay(50); // ✅ 等待设备端处理前序帧(malloc内存、创建文件等) +``` + +设备端收到前序帧后需要执行 `malloc()`、`fopen()` 等操作,50ms 的等待确保设备端准备好接收数据帧。 + +#### 因素 5:原生运行环境(非 Web) + +UniApp 编译为原生 APP 运行(Android/iOS),BLE API 直接调用系统原生接口: +- MTU 协商通过原生 API 实现,成功率高 +- BLE 写入性能接近原生(无浏览器 Web Bluetooth 的限制) +- 无 Web Bluetooth 的隐式超时和安全限制 + +### 10.3 Flutter APP 需要修复的差异点 + +| 序号 | 差异项 | UniApp 做法 | Flutter 当前问题 | 修复优先级 | +|------|--------|------------|-----------------|-----------| +| 1 | **MTU 失败处理** | fail 仅 log,不阻断 | 异常可能中断后续流程 | **P0** | +| 2 | **发送流控** | 每包 5ms 延迟 | 无延迟,全速发送 | **P0** | +| 3 | **写入重试** | 3 次重试 + 退避递增 + 降级为 write | 无重试机制 | **P0** | +| 4 | **前序帧等待** | header 后 50ms | 未知(需检查) | **P1** | +| 5 | **UUID 匹配** | 兼容短/长/前缀三种格式 | 可能只匹配一种格式 | **P1** | +| 6 | **运行环境** | 原生 APP | 可能运行在 Web 环境 | **P1** | + +### 10.4 Flutter 参考实现(对标 UniApp) + +```dart +/// 发送单包数据(带重试 + 降级机制,对标 UniApp bleWrite) +Future bleWriteWithRetry( + BluetoothCharacteristic char, + List data, { + int maxRetry = 3, +}) async { + for (var i = 0; i < maxRetry; i++) { + try { + await char.write(data, withoutResponse: true); + return; + } catch (e) { + if (i < maxRetry - 1) { + // 退避递增:20ms, 40ms, 60ms + await Future.delayed(Duration(milliseconds: 20 * (i + 1))); + } else { + // 最后一次降级为 write(带应答) + await char.write(data, withoutResponse: false); + return; + } + } + } +} + +/// 图片分包传输(对标 UniApp writeBleImage) +Future transferImage( + BluetoothCharacteristic writeChar, + List imageData, + String filename, { + void Function(double)? onProgress, +}) async { + // 1. 发送前序帧 + final header = buildHeader(filename, imageData.length); // 26 字节 + await bleWriteWithRetry(writeChar, header); + await Future.delayed(Duration(milliseconds: 50)); // ← 关键:等待设备端准备 + + // 2. 分包发送数据 + final chunkSize = 507; // MTU(512) - ATT(3) - Handle(2) + var offset = 0; + var packetNo = 0; + + while (offset < imageData.length) { + final remaining = imageData.length - offset; + final chunkLen = remaining < chunkSize ? remaining : chunkSize; + final isEnd = (offset + chunkLen >= imageData.length) ? 0x01 : 0x00; + + final packet = [packetNo & 0xFF, isEnd, ...imageData.sublist(offset, offset + chunkLen)]; + await bleWriteWithRetry(writeChar, packet); + await Future.delayed(Duration(milliseconds: 5)); // ← 关键:每包 5ms 延迟 + + offset += chunkLen; + packetNo++; + + if (packetNo % 10 == 0 || isEnd == 1) { + onProgress?.call(offset / imageData.length); + } + } +} +``` + +### 10.5 总结 + +**UniApp 能成功而 Flutter 失败的核心原因是:UniApp 实现了基础的 BLE 流控机制(每包延迟 + 重试 + 降级),而 Flutter APP 缺少这些关键防护。** + +BLE `WriteWithoutResponse` 是"发后不管"模式,ESP32 的 Bluedroid 协议栈缓冲区有限(约 8-10 个包),不加延迟的全速发送会导致缓冲区溢出 → 协议栈断开连接。UniApp 的 5ms/包延迟虽然简单,但足以让缓冲区不积压。 + +--- + +## 十一、联系方式 + +如有疑问请联系固件端开发。设备端调试可提供串口日志(115200 波特率)配合定位问题。 diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index e3e8f69..f1dbfbc 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -354,10 +354,9 @@ menu "蓝牙配网 (Bluetooth Provisioning)" default y select BT_ENABLED select BLUEDROID_ENABLED - select BT_BLUFI_ENABLE help 启用蓝牙配网功能,允许通过蓝牙BLE连接配置WiFi网络。 - 需要ESP-IDF的蓝牙和BLUFI组件支持。 + 使用自定义 GATT Server 实现,不依赖 BluFi 组件。 config BLUETOOTH_PROVISIONING_SECURITY bool "启用安全模式" diff --git a/main/bluetooth_provisioning_config.h b/main/bluetooth_provisioning_config.h index 941ac6e..053712b 100644 --- a/main/bluetooth_provisioning_config.h +++ b/main/bluetooth_provisioning_config.h @@ -196,9 +196,7 @@ extern "C" { #warning "蓝牙配网需要启用CONFIG_BLUEDROID_ENABLED" #endif -#ifndef CONFIG_BT_BLUFI_ENABLE -#warning "蓝牙配网需要启用CONFIG_BT_BLUFI_ENABLE" -#endif +// BluFi 组件未使用 — 配网采用自定义 GATT Server 实现 #ifndef CONFIG_ESP32_WIFI_ENABLED #warning "蓝牙配网需要启用WiFi功能" diff --git a/main/dzbj/dzbj_ble.c b/main/dzbj/dzbj_ble.c index 7086e41..1b79f30 100644 --- a/main/dzbj/dzbj_ble.c +++ b/main/dzbj/dzbj_ble.c @@ -267,6 +267,13 @@ static void esp_gap_cb(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *par param->update_conn_params.latency, param->update_conn_params.timeout); break; + case ESP_GAP_BLE_PHY_UPDATE_COMPLETE_EVT: + ESP_LOGI(CONN_TAG, "PHY update, status %d, tx_phy %d, rx_phy %d", + param->phy_update.status, + param->phy_update.tx_phy, + param->phy_update.rx_phy); + // tx_phy/rx_phy: 1=1M, 2=2M, 3=Coded + break; default: break; } @@ -397,11 +404,27 @@ static void gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_ ESP_LOGI(CONN_TAG, "Connected, conn_id %u, remote "ESP_BD_ADDR_STR"", param->connect.conn_id, ESP_BD_ADDR_HEX(param->connect.remote_bda)); esp_ble_gap_update_conn_params(&conn_params); + // 请求 2M PHY 提升传输速度(对端不支持时自动回退 1M,不影响兼容性) + esp_ble_gap_set_preferred_phy(param->connect.remote_bda, + ESP_BLE_GAP_NO_PREFER_TRANSMIT_PHY | ESP_BLE_GAP_NO_PREFER_RECEIVE_PHY, + ESP_BLE_GAP_PHY_2M_PREF_MASK, + ESP_BLE_GAP_PHY_2M_PREF_MASK, + ESP_BLE_GAP_PHY_OPTIONS_NO_PREF); break; } case ESP_GATTS_DISCONNECT_EVT: ESP_LOGI(CONN_TAG, "Disconnected, remote "ESP_BD_ADDR_STR", reason 0x%02x", ESP_BD_ADDR_HEX(param->disconnect.remote_bda), param->disconnect.reason); + // 清理未完成的传输,防止内存泄漏 + if (SendStatus.isSend) { + ESP_LOGW(CONN_TAG, "传输中断,已接收 %d/%d 字节", + (int)SendStatus.port, (int)firstMeg.len); + SendStatus.isSend = false; + SendStatus.port = 0; + if (img_data) { free(img_data); img_data = NULL; } + if (filepath) { free(filepath); filepath = NULL; } + if (file_img) { fclose(file_img); file_img = NULL; } + } esp_ble_gap_start_advertising(&adv_params); break; default: diff --git a/sdkconfig b/sdkconfig index f575e23..5c929f4 100644 --- a/sdkconfig +++ b/sdkconfig @@ -14,7 +14,6 @@ CONFIG_SOC_GDMA_SUPPORTED=y CONFIG_SOC_AHB_GDMA_SUPPORTED=y CONFIG_SOC_GPTIMER_SUPPORTED=y CONFIG_SOC_LCDCAM_SUPPORTED=y -CONFIG_SOC_LCDCAM_CAM_SUPPORTED=y CONFIG_SOC_LCDCAM_I80_LCD_SUPPORTED=y CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED=y CONFIG_SOC_MCPWM_SUPPORTED=y @@ -102,7 +101,7 @@ CONFIG_SOC_CPU_HAS_FPU=y CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 -CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40 +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64 CONFIG_SOC_SIMD_PREFERRED_DATA_ALIGNMENT=16 CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096 CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 @@ -209,7 +208,7 @@ CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y -CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_GROUPS=y CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 CONFIG_SOC_SDM_CLK_SUPPORT_APB=y CONFIG_SOC_SPI_PERIPH_NUM=3 @@ -370,9 +369,6 @@ CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y CONFIG_SOC_BLUFI_SUPPORTED=y CONFIG_SOC_ULP_HAS_ADC=y CONFIG_SOC_PHY_COMBO_MODULE=y -CONFIG_SOC_LCDCAM_CAM_SUPPORT_RGB_YUV_CONV=y -CONFIG_SOC_LCDCAM_CAM_PERIPH_NUM=1 -CONFIG_SOC_LCDCAM_CAM_DATA_WIDTH_MAX=16 CONFIG_IDF_CMAKE=y CONFIG_IDF_TOOLCHAIN="gcc" CONFIG_IDF_TOOLCHAIN_GCC=y @@ -829,7 +825,7 @@ CONFIG_BT_BLUEDROID_ESP_COEX_VSC=y CONFIG_BT_BLE_ENABLED=y CONFIG_BT_GATTS_ENABLE=y # CONFIG_BT_GATTS_PPCP_CHAR_GAP is not set -CONFIG_BT_BLE_BLUFI_ENABLE=y +# CONFIG_BT_BLE_BLUFI_ENABLE is not set CONFIG_BT_GATT_MAX_SR_PROFILES=8 CONFIG_BT_GATT_MAX_SR_ATTRIBUTES=100 # CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_MANUAL is not set @@ -1032,12 +1028,16 @@ CONFIG_BT_SMP_MAX_BONDS=15 # CONFIG_BT_BLE_ACT_SCAN_REP_ADV_SCAN is not set CONFIG_BT_MAX_DEVICE_NAME_LEN=32 CONFIG_BT_BLE_RPA_TIMEOUT=900 -# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set +CONFIG_BT_BLE_50_FEATURES_SUPPORTED=y +CONFIG_BT_BLE_50_EXTEND_ADV_EN=y +CONFIG_BT_BLE_50_PERIODIC_ADV_EN=y +CONFIG_BT_BLE_50_EXTEND_SCAN_EN=y +CONFIG_BT_BLE_50_EXTEND_SYNC_EN=y +CONFIG_BT_BLE_50_DTM_TEST_EN=y CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y CONFIG_BT_BLE_42_DTM_TEST_EN=y CONFIG_BT_BLE_42_ADV_EN=y CONFIG_BT_BLE_42_SCAN_EN=y -CONFIG_BT_BLE_VENDOR_HCI_EN=y # CONFIG_BT_BLE_HIGH_DUTY_ADV_INTERVAL is not set # CONFIG_BT_ABORT_WHEN_ALLOCATION_FAILS is not set # end of Bluedroid Options @@ -1259,7 +1259,6 @@ CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y # CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set # CONFIG_ESP_TLS_PSK_VERIFICATION is not set # CONFIG_ESP_TLS_INSECURE is not set -CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y # end of ESP-TLS # @@ -1287,12 +1286,6 @@ CONFIG_ESP_ERR_TO_NAME_LOOKUP=y CONFIG_ESP_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y # end of Common ESP-related -# -# ESP-Driver:Camera Controller Configurations -# -# CONFIG_CAM_CTLR_DVP_CAM_ISR_CACHE_SAFE is not set -# end of ESP-Driver:Camera Controller Configurations - # # ESP-Driver:GPIO Configurations # @@ -1610,11 +1603,8 @@ CONFIG_ESP_PHY_RF_CAL_PARTIAL=y # CONFIG_ESP_PHY_RF_CAL_NONE is not set # CONFIG_ESP_PHY_RF_CAL_FULL is not set CONFIG_ESP_PHY_CALIBRATION_MODE=0 -CONFIG_ESP_PHY_PLL_TRACK_PERIOD_MS=1000 # CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set # CONFIG_ESP_PHY_RECORD_USED_TIME is not set -CONFIG_ESP_PHY_IRAM_OPT=y -# CONFIG_ESP_PHY_DEBUG is not set # end of PHY # @@ -2285,7 +2275,6 @@ CONFIG_MBEDTLS_DYNAMIC_BUFFER=y # CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set # CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set # CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE is not set -# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set CONFIG_MBEDTLS_PKCS7_C=y # end of mbedTLS v3.x related @@ -3314,7 +3303,6 @@ CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_DIS=y CONFIG_SW_COEXIST_ENABLE=y CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=y CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y -# CONFIG_CAM_CTLR_DVP_CAM_ISR_IRAM_SAFE is not set # CONFIG_MCPWM_ISR_IN_IRAM is not set # CONFIG_EVENT_LOOP_PROFILING is not set CONFIG_POST_EVENTS_FROM_ISR=y diff --git a/sdkconfig.defaults b/sdkconfig.defaults index 6ea1f6a..771eb17 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -163,12 +163,13 @@ CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=n CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=n CONFIG_BT_RESERVE_DRAM=0x10000 -# BluFi Configuration -CONFIG_BT_BLUFI_ENABLED=y -CONFIG_BT_BLE_BLUFI_ENABLE=y -# Disable BLE 5.0 features for BluFi compatibility -CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n -CONFIG_BT_BLUFI_MAX_CONN=1 +# BluFi 未被代码使用(两种模式均用自定义 GATT Server),关闭以兼容 BLE 5.0 +CONFIG_BT_BLUFI_ENABLED=n +CONFIG_BT_BLE_BLUFI_ENABLE=n +# BLE 5.0 启用 2M PHY 支持(图传速度翻倍) +CONFIG_BT_BLE_50_FEATURES_SUPPORTED=y +# 同时保留 BLE 4.2 legacy advertising(两种模式的广播和 GATT 都依赖) +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y # Bluetooth and WiFi Coexistence CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y diff --git a/sdkconfig.defaults.prod生产环境 b/sdkconfig.defaults.prod生产环境 index 34e8e28..f197a88 100644 --- a/sdkconfig.defaults.prod生产环境 +++ b/sdkconfig.defaults.prod生产环境 @@ -151,12 +151,13 @@ CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=n CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=n CONFIG_BT_RESERVE_DRAM=0x10000 -# BluFi Configuration -CONFIG_BT_BLUFI_ENABLED=y -CONFIG_BT_BLE_BLUFI_ENABLE=y -# Disable BLE 5.0 features for BluFi compatibility -CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n -CONFIG_BT_BLUFI_MAX_CONN=1 +# BluFi 未被代码使用(两种模式均用自定义 GATT Server),关闭以兼容 BLE 5.0 +CONFIG_BT_BLUFI_ENABLED=n +CONFIG_BT_BLE_BLUFI_ENABLE=n +# BLE 5.0 启用 2M PHY 支持(图传速度翻倍) +CONFIG_BT_BLE_50_FEATURES_SUPPORTED=y +# 同时保留 BLE 4.2 legacy advertising(两种模式的广播和 GATT 都依赖) +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y # Bluetooth and WiFi Coexistence CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y