diff --git a/05-最新日志.txt b/05-最新日志.txt index dc91679..13dbcdd 100644 --- a/05-最新日志.txt +++ b/05-最新日志.txt @@ -1,337 +1,235 @@ -'/Users/rdzleo/.espressif/python_env/idf5.4_py3.13_env/bin/python3' '/Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/tools/idf_monitor.py' -p /dev/tty.usbmodem834401 -b 115200 --toolchain-prefix xtensa-esp32s3-elf- --make ''/Users/rdzleo/.espressif/python_env/idf5.4_py3.13_env/bin/python3' '/Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/tools/idf.py'' --target esp32s3 '/Users/rdzleo/Desktop/Baji_Rtc_Toy/build/kapi.elf' - -rdzleo@RdzleodeMac-Studio Baji_Rtc_Toy % -export IDF_PATH='/Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf' -'/Users/rdzleo/.espressif/python_env/idf5.4_py3.13_env/bin/python3' '/Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/tools/idf_monitor.py' -p /dev/tty.usbmodem834401 -b 115200 --toolchain-prefix xtensa-esp32s3-elf- --make ''/Users/rdzleo/.espressif/python_env/idf5.4_py3.13_env/bin/python3' '/Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/tools/idf.py'' --target esp32s3 '/Users/rdzleo/Desktop/Baji_Rtc_Toy/build/kapi.elf' -rdzleo@RdzleodeMac-Studio Baji_Rtc_Toy % export IDF_PATH='/Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf' -rdzleo@RdzleodeMac-Studio Baji_Rtc_Toy % '/Users/rdzleo/.espressif/python_env/idf5.4_py3.13_env/bin/python3' '/Users/rdzleo/esp/esp-idf/v5.4.2/esp-idf/tools/idf_monit -or.py' -p /dev/tty.usbmodem834401 -b 115200 --toolchain-prefix xtensa-esp32s3-elf- --make ''/Users/rdzleo/.espressif/python_env/idf5.4_py3.13_env/bin/python3' '/Users -/rdzleo/esp/esp-idf/v5.4.2/esp-idf/tools/idf.py'' --target esp32s3 '/Users/rdzleo/Desktop/Baji_Rtc_Toy/build/kapi.elf' ---- Warning: Serial ports accessed as /dev/tty.* will hang gdb if launched. ---- Using /dev/cu.usbmodem834401 instead... ---- esp-idf-monitor 1.8.0 on /dev/cu.usbmodem834401 115200 ---- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H -ESP-ROM:esp32s3-20210327 -Build:Mar 27 2021 -rst:0x15 (USB_UART_CHIP_RESET),boot:0x2b (SPI_FAST_FLASH_BOOT) -Saved PC:0x403895d6 ---- 0x403895d6: esp_cpu_wait_for_intr at /Users/rdzleo/esp/esp-idf/components/esp_hw_support/cpu.c:64 -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 (49) WeatherApi: 初始化天气API配置 - 默认城市: 北京 I (50) WeatherApi: WiFi位置缓存限制已设置为: 5 条 I (50) coexist: coex firmware version: 831ec70 I (50) coexist: coexist rom version e7ae62f I (51) main_task: Started on CPU0 I (61) main_task: Calling app_main() -I (81) BackgroundTask: background_task started -I (81) BluetoothProvisioning: 蓝牙配网对象创建完成 -I (81) button: IoT Button Version: 3.5.0 -I (81) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 -I (81) button: IoT Button Version: 3.5.0 -I (81) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 -I (81) Airhub1: Initializing I2C master bus for audio codec... -I (81) Airhub1: Scanning I2C bus for devices... -I (81) Airhub1: I2C设备在线: 0x18 -I (81) Airhub1: I2C设备在线: 0x40 -I (81) Airhub1: I2C scan completed. Found 2 devices -I (81) DZBJ: 开始初始化显示硬件... -I (81) gpio: GPIO[7]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 -I (81) st77916: LCD panel create success, version: 1.0.1 -W (211) st77916: The 3Ah command has been used and will be overwritten by external initialization sequence -I (331) LCD: TEON enabled (V-Blank mode) -I (331) LCD: LCD GRAM cleared (black filled) -I (331) DZBJ: LCD 硬件初始化完成 -I (331) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:2 -I (331) gpio: GPIO[6]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 -I (731) CST816S: IC id: 182 -I (731) LCD: Touch controller initialized successfully -I (731) DZBJ: 数字人 EAF 模式: 跳过 LVGL 初始化,等待 esp_emote_gfx 接管 -I (731) AI_CHAT_EAF: ============================ -I (731) AI_CHAT_EAF: === EAF 数字人 UI 初始化 === -I (731) AI_CHAT_EAF: ============================ -I (731) AI_CHAT_EAF: SPIFFS 未挂载,自动挂载到 /spiflash... -I (921) AI_CHAT_EAF: SPIFFS 已就绪: total=4640 KB, used=4513 KB -I (921) AI_CHAT_EAF: 解析 hiyori-assets.bin: -I (921) AI_CHAT_EAF: MMAP file_count=9 -I (921) AI_CHAT_EAF: MMAP 版本=旧版(0x10), ENTRY_SIZE=28 -I (921) AI_CHAT_EAF: 跳过非 EAF: index.json (size=1135) -I (1241) AI_CHAT_EAF: ✓ Cached [0] hiyori_m01.eaf (833884 bytes) @ 0x3c41502c (file_offset=1423) -I (1531) AI_CHAT_EAF: ✓ Cached [1] hiyori_m02.eaf (528479 bytes) @ 0x3c4e1044 (file_offset=835309) -I (1841) AI_CHAT_EAF: ✓ Cached [2] hiyori_m03.eaf (576910 bytes) @ 0x3c565048 (file_offset=1363790) -I (2141) AI_CHAT_EAF: ✓ Cached [3] hiyori_m04.eaf (572724 bytes) @ 0x3c5f504c (file_offset=1940702) -I (2471) AI_CHAT_EAF: ✓ Cached [4] hiyori_m05.eaf (620157 bytes) @ 0x3c681050 (file_offset=2513428) -I (2721) AI_CHAT_EAF: ✓ Cached [5] hiyori_m06.eaf (433214 bytes) @ 0x3c719054 (file_offset=3133587) -I (2961) AI_CHAT_EAF: ✓ Cached [6] hiyori_m07.eaf (387868 bytes) @ 0x3c783058 (file_offset=3566803) -I (3271) AI_CHAT_EAF: ✓ Cached [7] hiyori_m08.eaf (579193 bytes) @ 0x3c7e305c (file_offset=3954673) -I (3271) AI_CHAT_EAF: EAF 预加载完成,共 8 个表情可用 -I (3222) timer: init timer manager: fps=25 period=40 ms -I (3401) AI_CHAT_EAF: 背景图已加载: 360x360 (253 KB RGB565 @ 0x3c875064) -I (3431) AI_CHAT_EAF: 切换表情: hiyori_m06.eaf (idx=5, size=433214) -I (3471) AI_CHAT_EAF: 字幕 label 创建成功(300×90, 黑字, WRAP, 居中) -I (3471) AI_CHAT_EAF: === EAF 数字人 UI 初始化完成 === -I (3571) Airhub1: 🤖 AI对话模式启动 -I (3571) Airhub1: 初始化按钮... -I (3571) Airhub1: Boot button initialized on GPIO0 -I (3571) Airhub1: Volume up button initialized on GPIO-1 -I (3571) Airhub1: Volume down button initialized on GPIO-1 -I (3571) Airhub1: 故事按键已初始化,GPIO引脚 =4 -I (3581) Airhub1: 所有按键已成功初始化! -I (3581) Airhub1: IMU传感器未初始化,跳过IoT注册 -I (3581) Airhub1: Initializing battery monitor... -I (3581) Airhub1: ADC calibration initialized -I (3581) Airhub1: 电池状态监控已初始化,GPIO:3 -I (3581) Airhub1: 非生产测试模式且不在对话状态,姿态传感器业务已禁用以节约资源 -I (3581) PowerSaveTimer: Power save timer enabled -I (3581) Airhub1: 🔋 PowerSaveTimer已启用,20秒无活动将进入低功耗模式 -I (3581) Airhub1: 电容触摸板按钮已禁用 (ENABLE_TOUCH_PAD_BUTTONS=0) -I (3581) Application: 打印设置设备状态日志: starting -I (3581) Application: 正常启动流程,将执行开机播报和网络连接播报 -I (3581) Airhub1: Initializing audio codec (duplex)... -I (3581) Airhub1: Creating BoxAudioCodec (ES8311+ES7210, without reference) ... -I (3581) BoxAudioCodec: Duplex channels created -I (3591) ES8311: Work in Slave mode -I (3591) gpio: GPIO[48]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 -I (3591) ES7210: Work in Slave mode -I (3601) ES7210: Enable ES7210_INPUT_MIC1 -I (3601) ES7210: Enable ES7210_INPUT_MIC2 -I (3611) BoxAudioCodec: BoxAudioDevice initialized (duplex) -I (3611) Airhub1: Audio codec initialized successfully -I (3611) Application: 检测到WiFi板卡,将opus编码器复杂度设置为3 -I (3611) OpusResampler: Resampler configured with input sample rate 16000, output sample rate 8000, and channels 1 -I (3611) I2S_IF: channel mode 2 bits:16/16 channel:2 mask:1 -I (3611) I2S_IF: TDM Mode 0 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (3611) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 -I (3611) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (3611) ES7210: Bits 16 -I (3651) ES7210: Enable ES7210_INPUT_MIC1 -I (3651) ES7210: Enable ES7210_INPUT_MIC2 -I (3661) ES7210: Unmuted -I (3661) Adev_Codec: Open codec device OK -I (3661) BoxAudioCodec: Input opened: sr=16000 ch=1 mask=0x1 ref=0 -I (3661) AudioCodec: Set input enable to true -I (3661) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 -I (3661) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (3681) Adev_Codec: Open codec device OK -I (3681) AudioCodec: Set output enable to true -I (3681) AudioCodec: Audio codec started -I (3681) AudioCodec: 将运行时输出音量设置为:80 -I (3681) Application: 设备启动完成,播放开机播报语音 -I (3681) pp: pp rom version: e7ae62f -I (3681) net80211: net80211 rom version: e7ae62f -I (3691) wifi:wifi driver task: 3fce4ea0, prio:23, stack:6656, core=0 -I (3691) wifi:wifi firmware version: 3263cda -I (3691) wifi:wifi certification version: v7.0 -I (3691) wifi:config NVS flash: disabled -I (3691) wifi:config nano formatting: disabled -I (3691) wifi:Init data frame dynamic rx buffer num: 32 -I (3691) wifi:Init dynamic rx mgmt buffer num: 5 -I (3691) wifi:Init management short buffer num: 32 -I (3691) wifi:Init static tx buffer num: 8 -I (3691) wifi:Init tx cache buffer num: 32 -I (3691) wifi:Init static tx FG buffer num: 2 -I (3691) wifi:Init static rx buffer size: 1600 -I (3691) wifi:Init static rx buffer num: 10 -I (3691) wifi:Init dynamic rx buffer num: 32 -I (3701) wifi_init: rx ba win: 16 -I (3701) wifi_init: accept mbox: 6 -I (3701) wifi_init: tcpip mbox: 32 -I (3701) wifi_init: udp mbox: 6 -I (3711) wifi_init: tcp mbox: 6 -I (3711) wifi_init: tcp tx win: 5760 -I (3711) wifi_init: tcp rx win: 5760 -I (3711) wifi_init: tcp mss: 1440 -I (3711) wifi_init: WiFi/LWIP prefer SPIRAM -I (3711) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 -I (3741) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(0) -I (3741) Application: 开始播放下行音频: 样本=960 采样率=16000 -I (3791) wifi:mode : sta (d0:cf:13:03:bb:f0) -I (3791) wifi:enable tsf -I (4341) Airhub1: BOOT button clicked -I (4341) Airhub1: 🔄 BOOT按键触发:设备状态=1,WiFi连接状态=未连接 -I (4341) Airhub1: 🔄 开始重置WiFi配置,清除已保存的WiFi凭据 -I (4351) wifi:flush txq -I (4351) wifi:stop sw txq -I (4351) wifi:lmac stop hw txq -I (4351) Airhub1: ✅ 已清除所有WiFi凭据,设备将进入配网模式 -I (4351) WifiBoard: 🔄 重置WiFi配置,设备将重启进入配网模式 -I (4351) WifiBoard: 🔄 [reset_task] 开始播放配网音效... -I (4351) wifi: Wait for next scan -I (4681) Airhub1: ADC: 2352, 原始电压: 2.35V, 计算电池电压: 10.21V, 电量: 100%, 满电电压: 4.20V -I (4681) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (4931) Airhub1: BOOT button clicked -I (4931) Airhub1: 🔄 BOOT按键触发:设备状态=1,WiFi连接状态=未连接 -I (4931) Airhub1: 🔄 开始重置WiFi配置,清除已保存的WiFi凭据 -I (4931) Airhub1: ✅ 已清除所有WiFi凭据,设备将进入配网模式 -I (4931) WifiBoard: 🔄 重置WiFi配置,设备将重启进入配网模式 -I (4931) WifiBoard: 🔄 [reset_task] 开始播放配网音效... -I (5681) Airhub1: ADC: 2359, 原始电压: 2.36V, 计算电池电压: 10.24V, 电量: 100%, 满电电压: 4.20V -I (5681) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (6481) Airhub1: BOOT button clicked -I (6481) Airhub1: 🔄 BOOT按键触发:设备状态=1,WiFi连接状态=未连接 -I (6481) Airhub1: 🔄 开始重置WiFi配置,清除已保存的WiFi凭据 -I (6481) Airhub1: ✅ 已清除所有WiFi凭据,设备将进入配网模式 -I (6481) WifiBoard: 🔄 重置WiFi配置,设备将重启进入配网模式 -I (6491) WifiBoard: 🔄 [reset_task] 开始播放配网音效... -I (6681) Airhub1: ADC: 2360, 原始电压: 2.36V, 计算电池电压: 10.24V, 电量: 100%, 满电电压: 4.20V -I (6681) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (7681) Airhub1: ADC: 2361, 原始电压: 2.36V, 计算电池电压: 10.25V, 电量: 100%, 满电电压: 4.20V -I (7681) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 -I (8351) WifiBoard: 🔄 [reset_task] 配网音效播放完成 -I (8361) WifiBoard: 🔄 [reset_task] 正在重启设备... -ESP-ROM:esp32s3-20210327 -Build:Mar 27 2021 -rst:0xc (RTC_SW_CPU_RST),boot:0x2b (SPI_FAST_FLASH_BOOT) -Saved PC:0x40379d55 ---- 0x40379d55: esp_restart_noos at /Users/rdzleo/esp/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 (49) WeatherApi: 初始化天气API配置 - 默认城市: 北京 -I (49) WeatherApi: WiFi位置缓存限制已设置为: 5 条 -I (50) coexist: coex firmware version: 831ec70 -I (50) coexist: coexist rom version e7ae62f -I (50) main_task: Started on CPU0 -I (60) main_task: Calling app_main() -I (80) BackgroundTask: background_task started -I (80) BluetoothProvisioning: 蓝牙配网对象创建完成 -I (80) WifiBoard: force_ap is set to 1, will clear in StartNetwork() -I (80) button: IoT Button Version: 3.5.0 -I (80) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 -I (80) button: IoT Button Version: 3.5.0 -I (80) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 -I (80) Airhub1: Initializing I2C master bus for audio codec... -I (80) Airhub1: Scanning I2C bus for devices... -I (80) Airhub1: I2C设备在线: 0x18 -I (80) Airhub1: I2C设备在线: 0x40 -I (80) Airhub1: I2C scan completed. Found 2 devices -I (80) DZBJ: 开始初始化显示硬件... -I (80) gpio: GPIO[7]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 -I (80) st77916: LCD panel create success, version: 1.0.1 -W (210) st77916: The 3Ah command has been used and will be overwritten by external initialization sequence -I (330) LCD: TEON enabled (V-Blank mode) -I (330) LCD: LCD GRAM cleared (black filled) -I (330) DZBJ: LCD 硬件初始化完成 -I (330) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:2 -I (330) gpio: GPIO[6]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 -I (730) CST816S: IC id: 182 -I (730) LCD: Touch controller initialized successfully -I (730) DZBJ: 数字人 EAF 模式: 跳过 LVGL 初始化,等待 esp_emote_gfx 接管 -I (730) Airhub1: 🔵 配网模式: 跳过 EAF 数字人, 显示静态背景图 (省 DRAM 给 BLE) -I (1220) Airhub1: 🖼 配网模式背景图加载成功 360x360 (RGB565 @PSRAM, 分 6 块画完) -I (1320) Airhub1: 🤖 AI对话模式启动 -I (1320) Airhub1: 初始化按钮... -I (1320) Airhub1: Boot button initialized on GPIO0 -I (1320) Airhub1: Volume up button initialized on GPIO-1 -I (1320) Airhub1: Volume down button initialized on GPIO-1 -I (1320) Airhub1: 故事按键已初始化,GPIO引脚 =4 -I (1320) Airhub1: 所有按键已成功初始化! -I (1320) Airhub1: IMU传感器未初始化,跳过IoT注册 -I (1320) Airhub1: 配网模式:跳过电池检测、IMU传感器、低功耗管理 -I (1320) Airhub1: 电容触摸板按钮已禁用 (ENABLE_TOUCH_PAD_BUTTONS=0) -I (1320) Application: 打印设置设备状态日志: starting -I (1320) Application: 正常启动流程,将执行开机播报和网络连接播报 -I (1320) Airhub1: Initializing audio codec (output only)... -I (1320) Airhub1: Creating BoxAudioCodec (ES8311, without reference) ... -I (1320) BoxAudioCodec: TX-only channel created (provisioning mode) -I (1320) ES8311: Work in Slave mode -I (1330) gpio: GPIO[48]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 -I (1330) BoxAudioCodec: BoxAudioDevice initialized (output only) -I (1330) Airhub1: Audio codec initialized successfully -I (1330) Application: 配网模式:跳过 Opus 编码器、输入重采样器、麦克风输入 -I (1330) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 -I (1330) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (1340) Adev_Codec: Open codec device OK -I (1340) AudioCodec: Set output enable to true -I (1340) AudioCodec: Audio codec started (output only, provisioning mode) -I (1350) AudioCodec: 将运行时输出音量设置为:80 -I (1350) Application: 设备启动完成,播放开机播报语音 -I (1360) WifiBoard: force_ap cleared to 0 -I (1360) WifiBoard: 🔵 进入配网模式 - BLE蓝牙配网 -I (1360) WifiBoard: 🔵 进入配网模式 - 使用BLE蓝牙配网 -I (1360) WifiBoard: 🔵 正在启动BLE蓝牙配网服务... -I (1360) Application: 🎵 测试模式:音频开始播放,等待播放完成 -I (1360) Application: ✅ 测试模式:音频播放完成 -I (1360) BluetoothProvisioning: 🔄 配网状态变化: IDLE -> INITIALIZING -I (1360) BluetoothProvisioning: 初始化WiFi... -I (1360) pp: pp rom version: e7ae62f -I (1360) net80211: net80211 rom version: e7ae62f -I (1370) wifi:wifi driver task: 3fce48cc, prio:23, stack:6656, core=0 -I (1370) wifi:wifi firmware version: 3263cda -I (1370) wifi:wifi certification version: v7.0 -I (1370) wifi:config NVS flash: enabled -I (1370) wifi:config nano formatting: disabled -I (1370) wifi:Init data frame dynamic rx buffer num: 32 -I (1370) wifi:Init dynamic rx mgmt buffer num: 5 -I (1370) wifi:Init management short buffer num: 32 -I (1370) wifi:Init static tx buffer num: 8 -I (1370) wifi:Init tx cache buffer num: 32 -I (1370) wifi:Init static tx FG buffer num: 2 -I (1370) wifi:Init static rx buffer size: 1600 -I (1370) wifi:Init static rx buffer num: 10 -I (1370) wifi:Init dynamic rx buffer num: 32 -I (1380) wifi_init: rx ba win: 16 -I (1380) wifi_init: accept mbox: 6 -I (1380) wifi_init: tcpip mbox: 32 -I (1380) wifi_init: udp mbox: 6 -I (1380) wifi_init: tcp mbox: 6 -I (1380) wifi_init: tcp tx win: 5760 -I (1380) wifi_init: tcp rx win: 5760 -I (1380) wifi_init: tcp mss: 1440 -I (1380) wifi_init: WiFi/LWIP prefer SPIRAM -I (1380) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 -I (1430) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(0) -I (1440) wifi:mode : sta (d0:cf:13:03:bb:f0) -I (1440) wifi:enable tsf -I (1450) BluetoothProvisioning: WiFi初始化完成 -I (1450) BluetoothProvisioning: 初始化蓝牙控制器... -I (1450) BLE_INIT: BT controller compile version [2edb0b0] -I (1450) BLE_INIT: Using main XTAL as clock source -I (1450) BLE_INIT: Feature Config, ADV:1, BLE_50:0, DTM:1, SCAN:1, CCA:0, SMP:1, CONNECT:1 -I (1450) BLE_INIT: Bluetooth MAC: d0:cf:13:03:bb:f2 -I (1450) BluetoothProvisioning: 初始化Bluedroid协议栈... -E (1450) BT_LOG: BTU_StartUp Unable to allocate resources for bt_workqueue +I (71) BackgroundTask: background_task started +I (71) BluetoothProvisioning: 蓝牙配网对象创建完成 +I (71) button: IoT Button Version: 3.5.0 +I (71) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (71) button: IoT Button Version: 3.5.0 +I (71) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (71) Airhub1: Initializing I2C master bus for audio codec... +I (71) Airhub1: Scanning I2C bus for devices... +I (71) Airhub1: I2C设备在线: 0x18 +I (71) Airhub1: I2C设备在线: 0x40 +I (71) Airhub1: I2C scan completed. Found 2 devices +I (71) DZBJ: 开始初始化显示硬件... +I (71) gpio: GPIO[7]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (71) st77916: LCD panel create success, version: 1.0.1 +W (201) st77916: The 3Ah command has been used and will be overwritten by external initialization sequence +I (321) LCD: TEON enabled (V-Blank mode) +I (321) LCD: LCD GRAM cleared (black filled) +I (321) DZBJ: LCD 硬件初始化完成 +I (321) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:2 +I (321) gpio: GPIO[6]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (721) CST816S: IC id: 182 +I (721) LCD: Touch controller initialized successfully +I (721) DZBJ: 硬件初始化完成,跳过 LVGL,等待上层显示管线接管 +I (721) Airhub1: 🔵 配网模式: 跳过 LVGL/EAF 显示业务,仅保留 LCD 硬件清屏 +I (721) Airhub1: 🤖 AI对话模式启动 +I (721) Airhub1: 初始化按钮... +I (721) DZBJ_BTN: BOOT+KEY2组合键模式切换注册成功(2000ms) +I (721) Airhub1: Boot button initialized on GPIO0 +I (721) Airhub1: Volume up button initialized on GPIO-1 +I (721) Airhub1: Volume down button initialized on GPIO-1 +I (721) Airhub1: 故事按键已初始化,GPIO引脚 =4 +I (721) Airhub1: 所有按键已成功初始化! +I (721) Airhub1: IMU传感器未初始化,跳过IoT注册 +I (721) Airhub1: 配网模式:跳过电池检测、IMU传感器、低功耗管理 +I (721) Airhub1: 电容触摸板按钮已禁用 (ENABLE_TOUCH_PAD_BUTTONS=0) +I (721) Application: 打印设置设备状态日志: starting +I (721) Application: 正常启动流程,将执行开机播报和网络连接播报 +I (721) Airhub1: Initializing audio codec (output only)... +I (721) Airhub1: Creating BoxAudioCodec (ES8311, without reference) ... +I (721) BoxAudioCodec: TX-only channel created (provisioning mode) +I (731) ES8311: Work in Slave mode +I (731) gpio: GPIO[48]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (731) BoxAudioCodec: BoxAudioDevice initialized (output only) +I (731) Airhub1: Audio codec initialized successfully +I (731) Application: 配网模式:跳过 Opus 编码器、输入重采样器、麦克风输入 +I (731) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 +I (731) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (751) Adev_Codec: Open codec device OK +I (751) AudioCodec: Set output enable to true +I (751) AudioCodec: Audio codec started (output only, provisioning mode) +I (751) AudioCodec: 将运行时输出音量设置为:80 +I (751) Application: 设备启动完成,播放开机播报语音 +I (751) WifiBoard: 🔍 未找到WiFi凭据,启动BLE配网... +I (751) WifiBoard: 🔵 正在启动BLE蓝牙配网服务... +I (751) Application: 🎵 测试模式:音频开始播放,等待播放完成 +I (751) Application: ✅ 测试模式:音频播放完成 +I (751) BluetoothProvisioning: 🔄 配网状态变化: IDLE -> INITIALIZING +I (751) BluetoothProvisioning: 初始化WiFi... +I (751) pp: pp rom version: e7ae62f +I (751) net80211: net80211 rom version: e7ae62f +I (761) wifi:wifi driver task: 3fce0dec, prio:23, stack:6656, core=0 +I (761) wifi:wifi firmware version: 3263cda +I (761) wifi:wifi certification version: v7.0 +I (761) wifi:config NVS flash: enabled +I (761) wifi:config nano formatting: disabled +I (761) wifi:Init data frame dynamic rx buffer num: 32 +I (761) wifi:Init dynamic rx mgmt buffer num: 5 +I (761) wifi:Init management short buffer num: 32 +I (761) wifi:Init static tx buffer num: 8 +I (761) wifi:Init tx cache buffer num: 32 +I (761) wifi:Init static tx FG buffer num: 2 +I (761) wifi:Init static rx buffer size: 1600 +I (761) wifi:Init static rx buffer num: 10 +I (761) wifi:Init dynamic rx buffer num: 32 +I (761) wifi_init: rx ba win: 16 +I (761) wifi_init: accept mbox: 6 +I (761) wifi_init: tcpip mbox: 32 +I (761) wifi_init: udp mbox: 6 +I (761) wifi_init: tcp mbox: 6 +I (761) wifi_init: tcp tx win: 5760 +I (761) wifi_init: tcp rx win: 5760 +I (761) wifi_init: tcp mss: 1440 +I (761) wifi_init: WiFi/LWIP prefer SPIRAM +I (761) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 +I (791) wifi:mode : sta (d0:cf:13:03:bb:f0) +I (801) wifi:enable tsf +I (801) BluetoothProvisioning: WiFi初始化完成 +I (801) BluetoothProvisioning: 初始化蓝牙控制器... +I (801) BLE_INIT: BT controller compile version [2edb0b0] +I (801) BLE_INIT: Using main XTAL as clock source +I (801) BLE_INIT: Feature Config, ADV:1, BLE_50:0, DTM:0, SCAN:1, CCA:0, SMP:1, CONNECT:1 +I (801) BLE_INIT: Bluetooth MAC: d0:cf:13:03:bb:f2 +I (801) BluetoothProvisioning: 初始化Bluedroid协议栈... +I (811) BluetoothProvisioning: 注册 BLE GAP/GATTS 回调... +I (811) BluetoothProvisioning: ✅ GATTS App 注册成功, gatts_if=3 +I (811) BluetoothProvisioning: Service 创建成功, handle=40 +I (811) BluetoothProvisioning: WRITE 特征添加成功, handle=42 +I (811) BluetoothProvisioning: NOTIFY 特征添加成功, handle=44 +I (811) BluetoothProvisioning: CCCD 添加成功, handle=45 +I (811) BluetoothProvisioning: ✅ GATT Service 启动成功 +I (811) BluetoothProvisioning: 注册WiFi事件处理器... +I (811) BluetoothProvisioning: 🔄 配网状态变化: INITIALIZING -> IDLE +I (811) BluetoothProvisioning: 蓝牙配网初始化完成 (GATT Server 模式) +I (811) BluetoothProvisioning: 蓝牙MAC地址: d0:cf:13:03:bb:f2 +I (811) WifiBoard: 🔍 BLE Initialize返回结果: true +I (811) BluetoothProvisioning: 🔵 开始启动蓝牙配网服务 (GATT Server)... +I (811) BluetoothProvisioning: 🔍 检查初始化状态: initialized_ = true +I (811) BluetoothProvisioning: MAC地址发送状态已重置 +I (811) BluetoothProvisioning: 🔄 MAC地址发送状态已重置 +I (821) BluetoothProvisioning: 🧹 清除之前的WiFi凭据... +I (821) BluetoothProvisioning: ✅ WiFi凭据清除完成,准备接收新的配网信息 +I (821) BluetoothProvisioning: 📡 蓝牙设备名称: Airhub_d0:cf:13:03:bb:f2 +I (821) BluetoothProvisioning: 📡 广播数据构建完成,长度: 29 字节 +I (821) BluetoothProvisioning: 📡 扫描响应数据构建完成,长度: 7 字节 +I (821) BluetoothProvisioning: 📡 广播数据设置完成,配置扫描响应数据 +I (821) BluetoothProvisioning: 📡 扫描响应数据设置完成,启动广播 +I (821) BluetoothProvisioning: ✅ 广播启动成功 +I (821) BluetoothProvisioning: 🔄 配网状态变化: IDLE -> ADVERTISING +I (821) BluetoothProvisioning: 蓝牙配网广播已启动,等待客户端连接... +I (821) WifiBoard: ✅ BLE蓝牙配网启动成功 +I (821) WifiBoard: 📱 请使用支持BLE的手机APP连接设备进行配网 +W (821) Application: Alert BLE配网模式: 请使用手机APP搜索设备连接WI-FI [happy] +I (821) AI_CHAT_EAF: 状态: BLE配网模式(PoC 阶段暂不显示) +I (821) WifiBoard: Starting BLE provisioning monitor... +I (821) WifiBoard: ✅ BLE配网启动成功,等待手机连接... +I (821) Application: 配网模式:跳过协议初始化、位置检测等网络业务 +I (821) Application: 打印设置设备状态日志: idle +I (821) AI_CHAT_EAF: 状态: 待命(PoC 阶段暂不显示) +I (821) main_task: Returned from app_main() +I (831) Application: 开始播放下行音频: 样本=960 采样率=16000 +I (13321) AudioCodec: Set output enable to false +I (16901) BluetoothProvisioning: 📱 客户端已连接, conn_id=0, addr=65:cd:2c:22:b2:72 +I (16901) BluetoothProvisioning: 🔍 [DEBUG] 设置client_connected_为true +I (16901) BluetoothProvisioning: MAC地址发送状态已重置 +I (16901) BluetoothProvisioning: 🔄 MAC地址发送状态已重置 +I (16901) BluetoothProvisioning: 🔄 配网状态变化: ADVERTISING -> CONNECTED +I (16901) WifiBoard: BLE client connected +I (16901) BluetoothProvisioning: 🔍 [DEBUG] BLE连接处理完成,client_connected_=true +I (16901) BluetoothProvisioning: 广播已停止 +I (17271) BluetoothProvisioning: 连接参数更新: status=0, conn_int=24, latency=0, timeout=400 +I (17601) BluetoothProvisioning: 连接参数更新: status=0, conn_int=6, latency=0, timeout=500 +I (17671) BluetoothProvisioning: MTU 更新: 512 +I (17751) BluetoothProvisioning: 连接参数更新: status=0, conn_int=24, latency=0, timeout=400 +I (18231) BluetoothProvisioning: NOTIFY 已启用 +I (18411) BluetoothProvisioning: 📱 手机请求获取WiFi列表,开始扫描 +W (18411) wifi:Error! Should use default active scan time parameter for WiFi scan when Bluetooth is enabled!!!!!! -assert failed: vQueueDelete queue.c:2355 (pxQueue) +I (18411) BluetoothProvisioning: 🔍 WiFi扫描已启动 +I (27181) BluetoothProvisioning: 📡 WiFi扫描完成,准备发送WiFi列表 +I (27181) BluetoothProvisioning: 📊 扫描到 46 个WiFi热点 +I (27181) BluetoothProvisioning: ✅ 成功获取WiFi扫描结果 +I (27181) BluetoothProvisioning: 📊 过滤后剩余 21 个2.4GHz热点 (原始: 46) +I (27181) BluetoothProvisioning: 向客户端发送WiFi列表,共21个AP +I (27601) BluetoothProvisioning: 📤 WiFi列表已发送给客户端,包含 21 个热点 +I (27601) BluetoothProvisioning: 📤 WiFi列表已发送,包含 21 个热点 +I (36801) BluetoothProvisioning: 📶 收到WiFi SSID: airhub +I (36981) BluetoothProvisioning: 🔐 收到WiFi密码 (长度: 8) +W (36981) wifi:Password length matches WPA2 standards, authmode threshold changes from OPEN to WPA2 +I (37001) BluetoothProvisioning: 📡 已发起WiFi连接请求,启动超时监控 +I (37001) WifiBoard: WiFi credentials received via BLE +I (37091) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1, snd_ch_cfg:0x0 +I (37091) wifi:state: init -> auth (0xb0) +I (37131) wifi:state: auth -> assoc (0x0) +I (37161) wifi:state: assoc -> run (0x10) +I (37191) wifi:connected with airhub, aid = 2, channel 1, BW20, bssid = 70:2a:d7:85:bc:eb +I (37191) wifi:security: WPA2-PSK, phy: bgn, rssi: -42 +I (37201) wifi:pm start, type: 1 + +I (37201) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us +I (37201) wifi:set rx beacon pti, rx_bcn_pti: 14, bcn_timeout: 25000, mt_pti: 14, mt_time: 10000 +I (37201) BluetoothProvisioning: ✅ WiFi连接成功,SSID: airhub,等待获取IP地址 +I (37211) wifi:AP's beacon interval = 102400 us, DTIM period = 1 +I (37221) wifi:idx:0 (ifx:0, 70:2a:d7:85:bc:eb), tid:0, ssn:0, winSize:64 +I (41291) esp_netif_handlers: sta ip: 192.168.124.92, mask: 255.255.255.0, gw: 192.168.124.1 +I (41291) BluetoothProvisioning: ✅ WiFi获取IP地址成功: 192.168.124.92 +I (41291) BluetoothProvisioning: 💾 启用WiFi配置自动保存到NVS存储... +I (41291) BluetoothProvisioning: ✅ WiFi配置将自动保存到NVS存储 +I (41291) BluetoothProvisioning: 📋 获取当前WiFi配置成功,SSID: airhub +I (41291) BluetoothProvisioning: ✅ WiFi凭据已保存到NVS列表 +I (41291) BluetoothProvisioning: BluetoothProvisioning WIFI_CONNECTED skip_session=0 +I (41291) BluetoothProvisioning: 🔍 准备设置状态为SUCCESS并触发回调 +I (41291) BluetoothProvisioning: 🔄 配网状态变化: CONNECTED -> SUCCESS +I (41291) WifiBoard: 设备配网成功,已连接到WiFi网络! +I (41291) BluetoothProvisioning: 🔍 [DEBUG] ReportWiFiStatus调用: success=true, client_connected_=true +I (41291) BluetoothProvisioning: 向客户端报告设备连接WiFi成功! +I (41291) BluetoothProvisioning: 📋 配网流程完成,状态: SUCCESS, client_connected_: true +I (41291) BluetoothProvisioning: ⏰ 延迟2000ms后重启设备以确保配置生效... +I (41821) WifiBoard: BLE provisioning completed successfully +I (41821) BluetoothProvisioning: 停止蓝牙配网... +I (41821) BluetoothProvisioning: 广播已停止 +W (41821) BT_HCI: hci cmd send: disconnect: hdl 0x1, rsn:0x13 +I (41821) BluetoothProvisioning: 📱 客户端已断开连接, reason=0x16, 当前状态: SUCCESS +I (41821) BluetoothProvisioning: 🔍 [DEBUG] 设置client_connected_为false +I (41821) BluetoothProvisioning: 🔄 配网状态变化: SUCCESS -> ADVERTISING +I (41821) WifiBoard: BLE client disconnected +I (41821) BluetoothProvisioning: 📡 广播数据设置完成,配置扫描响应数据 +I (41821) BluetoothProvisioning: 📡 扫描响应数据设置完成,启动广播 +I (41821) BluetoothProvisioning: 🔄 配网状态变化: ADVERTISING -> IDLE +I (41821) BluetoothProvisioning: 蓝牙配网已停止 +E (41821) esp_netif_lwip: esp_netif_new_api: Failed to configure netif with config=0x3fcc0d60 (config or if_key is NULL or duplicate key) +E (41821) BT_BTM: btm_ +assert failed: esp_netif_create_default_wifi_sta wifi_default.c:422 (netif) -Backtrace: 0x40379e11:0x3fcc10e0 0x4038bd8d:0x3fcc1100 0x40393655:0x3fcc1120 0x4038c6d6:0x3fcc1240 0x42054679:0x3fcc1260 0x420570cb:0x3fcc1280 0x4203e6bb:0x3fcc12a0 0x4203e2d4:0x3fcc12c0 0x4203e373:0x3fcc12e0 0x42032564:0x3fcc1310 0x4202df5a:0x3fcc1330 0x420522b5:0x3fcc1360 0x4205475d:0x3fcc1380 ---- 0x40379e11: panic_abort at /Users/rdzleo/esp/esp-idf/components/esp_system/panic.c:469 ---- 0x4038bd8d: esp_system_abort at /Users/rdzleo/esp/esp-idf/components/esp_system/port/esp_system_chip.c:87 ---- 0x40393655: __assert_func at /Users/rdzleo/esp/esp-idf/components/newlib/assert.c:80 ---- 0x4038c6d6: vQueueDelete at /Users/rdzleo/esp/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:2355 ---- 0x42054679: osi_mutex_free at /Users/rdzleo/esp/esp-idf/components/bt/common/osi/mutex.c:72 ---- 0x420570cb: bta_sys_free at /Users/rdzleo/esp/esp-idf/components/bt/host/bluedroid/bta/sys/bta_sys_main.c:195 ---- 0x4203e6bb: btu_task_shut_down at /Users/rdzleo/esp/esp-idf/components/bt/host/bluedroid/stack/btu/btu_task.c:293 ---- 0x4203e2d4: BTU_ShutDown at /Users/rdzleo/esp/esp-idf/components/bt/host/bluedroid/stack/btu/btu_init.c:218 ---- 0x4203e373: BTU_StartUp at /Users/rdzleo/esp/esp-idf/components/bt/host/bluedroid/stack/btu/btu_init.c:201 ---- 0x42032564: bte_main_enable at /Users/rdzleo/esp/esp-idf/components/bt/host/bluedroid/main/bte_main.c:140 ---- (inlined by) bte_main_boot_entry at /Users/rdzleo/esp/esp-idf/components/bt/host/bluedroid/main/bte_main.c:92 ---- 0x4202df5a: btc_init_bluetooth at /Users/rdzleo/esp/esp-idf/components/bt/host/bluedroid/btc/core/btc_main.c:56 ---- (inlined by) btc_main_call_handler at /Users/rdzleo/esp/esp-idf/components/bt/host/bluedroid/btc/core/btc_main.c:104 ---- 0x420522b5: btc_thread_handler at /Users/rdzleo/esp/esp-idf/components/bt/common/btc/core/btc_task.c:287 ---- 0x4205475d: osi_thread_run at /Users/rdzleo/esp/esp-idf/components/bt/common/osi/thread.c:165 +Backtrace: 0x40379e09:0x3fcc0c00 0x4038bc35:0x3fcc0c20 0x403934fd:0x3fcc0c40 0x42173bb3:0x3fcc0d60 0x42110515:0x3fcc0d90 0x42022f7a:0x3fcc0e70 0x42023069:0x3fcc0ea0 +--- 0x40379e09: panic_abort at /Users/rdzleo/esp/esp-idf/components/esp_system/panic.c:469 +--- 0x4038bc35: esp_system_abort at /Users/rdzleo/esp/esp-idf/components/esp_system/port/esp_system_chip.c:87 +--- 0x403934fd: __assert_func at /Users/rdzleo/esp/esp-idf/components/newlib/assert.c:80 +--- 0x42173bb3: esp_netif_create_default_wifi_sta at /Users/rdzleo/esp/esp-idf/components/esp_wifi/src/wifi_default.c:422 +--- 0x42110515: WifiStation::Start() at /Users/rdzleo/Desktop/Baji_Rtc_Toy/managed_components/78__esp-wifi-connect/wifi_station.cc:101 +--- 0x42022f7a: WifiBoard::MonitorBleProvisioning() at /Users/rdzleo/Desktop/Baji_Rtc_Toy/main/boards/common/wifi_board.cc:516 +--- 0x42023069: WifiBoard::StartBleProvisioning()::{lambda(void*)#1}::_FUN(void*) at /Users/rdzleo/Desktop/Baji_Rtc_Toy/main/boards/common/wifi_board.cc:438 +--- (inlined by) _FUN at /Users/rdzleo/Desktop/Baji_Rtc_Toy/main/boards/common/wifi_board.cc:440 -ELF file SHA256: 71ac14ba2 +ELF file SHA256: 299442efc Rebooting... ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0xc (RTC_SW_CPU_RST),boot:0x2b (SPI_FAST_FLASH_BOOT) -Saved PC:0x40379d55 ---- 0x40379d55: esp_restart_noos at /Users/rdzleo/esp/esp-idf/components/esp_system/port/soc/esp32s3/system_internal.c:162 +Saved PC:0x40391fe7 +--- 0x40391fe7: systimer_ll_is_counter_value_valid at /Users/rdzleo/esp/esp-idf/components/hal/esp32s3/include/hal/systimer_ll.h:95 +--- (inlined by) systimer_hal_get_counter_value at /Users/rdzleo/esp/esp-idf/components/hal/systimer_hal.c:51 SPIWP:0xee mode:DIO, clock div:1 load:0x3fce2820,len:0x56c @@ -345,7 +243,7 @@ I (50) coexist: coex firmware version: 831ec70 I (50) coexist: coexist rom version e7ae62f I (50) main_task: Started on CPU0 I (60) main_task: Calling app_main() -I (80) BackgroundTask: background_task started +I (70) BackgroundTask: background_task started I (80) BluetoothProvisioning: 蓝牙配网对象创建完成 I (80) button: IoT Button Version: 3.5.0 I (80) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 @@ -367,108 +265,710 @@ I (330) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldow I (330) gpio: GPIO[6]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 I (730) CST816S: IC id: 182 I (730) LCD: Touch controller initialized successfully -I (730) DZBJ: 数字人 EAF 模式: 跳过 LVGL 初始化,等待 esp_emote_gfx 接管 +I (730) DZBJ: 硬件初始化完成,跳过 LVGL,等待上层显示管线接管 I (730) AI_CHAT_EAF: ============================ I (730) AI_CHAT_EAF: === EAF 数字人 UI 初始化 === I (730) AI_CHAT_EAF: ============================ I (730) AI_CHAT_EAF: SPIFFS 未挂载,自动挂载到 /spiflash... -I (920) AI_CHAT_EAF: SPIFFS 已就绪: total=4640 KB, used=4513 KB -I (920) AI_CHAT_EAF: 解析 hiyori-assets.bin: -I (920) AI_CHAT_EAF: MMAP file_count=9 -I (920) AI_CHAT_EAF: MMAP 版本=旧版(0x10), ENTRY_SIZE=28 -I (920) AI_CHAT_EAF: 跳过非 EAF: index.json (size=1135) -I (1240) AI_CHAT_EAF: ✓ Cached [0] hiyori_m01.eaf (833884 bytes) @ 0x3c41502c (file_offset=1423) -I (1530) AI_CHAT_EAF: ✓ Cached [1] hiyori_m02.eaf (528479 bytes) @ 0x3c4e1044 (file_offset=835309) -I (1840) AI_CHAT_EAF: ✓ Cached [2] hiyori_m03.eaf (576910 bytes) @ 0x3c565048 (file_offset=1363790) -I (2140) AI_CHAT_EAF: ✓ Cached [3] hiyori_m04.eaf (572724 bytes) @ 0x3c5f504c (file_offset=1940702) -I (2470) AI_CHAT_EAF: ✓ Cached [4] hiyori_m05.eaf (620157 bytes) @ 0x3c681050 (file_offset=2513428) -I (2720) AI_CHAT_EAF: ✓ Cached [5] hiyori_m06.eaf (433214 bytes) @ 0x3c719054 (file_offset=3133587) -I (2960) AI_CHAT_EAF: ✓ Cached [6] hiyori_m07.eaf (387868 bytes) @ 0x3c783058 (file_offset=3566803) -I (3270) AI_CHAT_EAF: ✓ Cached [7] hiyori_m08.eaf (579193 bytes) @ 0x3c7e305c (file_offset=3954673) -I (3270) AI_CHAT_EAF: EAF 预加载完成,共 8 个表情可用 -I (3222) timer: init timer manager: fps=25 period=40 ms -I (3400) AI_CHAT_EAF: 背景图已加载: 360x360 (253 KB RGB565 @ 0x3c875064) -I (3430) AI_CHAT_EAF: 切换表情: hiyori_m06.eaf (idx=5, size=433214) -I (3470) AI_CHAT_EAF: 字幕 label 创建成功(300×90, 黑字, WRAP, 居中) -I (3470) AI_CHAT_EAF: === EAF 数字人 UI 初始化完成 === -I (3570) Airhub1: 🤖 AI对话模式启动 -I (3570) Airhub1: 初始化按钮... -I (3570) Airhub1: Boot button initialized on GPIO0 -I (3570) Airhub1: Volume up button initialized on GPIO-1 -I (3570) Airhub1: Volume down button initialized on GPIO-1 -I (3570) Airhub1: 故事按键已初始化,GPIO引脚 =4 -I (3580) Airhub1: 所有按键已成功初始化! -I (3580) Airhub1: IMU传感器未初始化,跳过IoT注册 -I (3580) Airhub1: Initializing battery monitor... -I (3580) Airhub1: ADC calibration initialized -I (3580) Airhub1: 电池状态监控已初始化,GPIO:3 -I (3580) Airhub1: 非生产测试模式且不在对话状态,姿态传感器业务已禁用以节约资源 -I (3580) PowerSaveTimer: Power save timer enabled -I (3580) Airhub1: 🔋 PowerSaveTimer已启用,20秒无活动将进入低功耗模式 -I (3580) Airhub1: 电容触摸板按钮已禁用 (ENABLE_TOUCH_PAD_BUTTONS=0) -I (3580) Application: 打印设置设备状态日志: starting -I (3580) Application: 正常启动流程,将执行开机播报和网络连接播报 -I (3580) Airhub1: Initializing audio codec (duplex)... -I (3580) Airhub1: Creating BoxAudioCodec (ES8311+ES7210, without reference) ... -I (3580) BoxAudioCodec: Duplex channels created -I (3590) ES8311: Work in Slave mode -I (3590) gpio: GPIO[48]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 -I (3590) ES7210: Work in Slave mode -I (3600) ES7210: Enable ES7210_INPUT_MIC1 -I (3600) ES7210: Enable ES7210_INPUT_MIC2 -I (3610) BoxAudioCodec: BoxAudioDevice initialized (duplex) -I (3610) Airhub1: Audio codec initialized successfully -I (3610) Application: 检测到WiFi板卡,将opus编码器复杂度设置为3 -I (3610) OpusResampler: Resampler configured with input sample rate 16000, output sample rate 8000, and channels 1 -I (3610) I2S_IF: channel mode 2 bits:16/16 channel:2 mask:1 -I (3610) I2S_IF: TDM Mode 0 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (3610) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 -I (3610) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (3610) ES7210: Bits 16 -I (3650) ES7210: Enable ES7210_INPUT_MIC1 -I (3650) ES7210: Enable ES7210_INPUT_MIC2 -I (3660) ES7210: Unmuted -I (3660) Adev_Codec: Open codec device OK -I (3660) BoxAudioCodec: Input opened: sr=16000 ch=1 mask=0x1 ref=0 -I (3660) AudioCodec: Set input enable to true -I (3660) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 -I (3660) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 -I (3680) Adev_Codec: Open codec device OK -I (3680) AudioCodec: Set output enable to true -I (3680) AudioCodec: Audio codec started -I (3680) AudioCodec: 将运行时输出音量设置为:80 -I (3680) Application: 设备启动完成,播放开机播报语音 -I (3680) pp: pp rom version: e7ae62f -I (3680) net80211: net80211 rom version: e7ae62f -I (3690) wifi:wifi driver task: 3fce4ea0, prio:23, stack:6656, core=0 -I (3690) wifi:wifi firmware version: 3263cda -I (3690) wifi:wifi certification version: v7.0 -I (3690) wifi:config NVS flash: disabled -I (3690) wifi:config nano formatting: disabled -I (3690) wifi:Init data frame dynamic rx buffer num: 32 -I (3690) wifi:Init dynamic rx mgmt buffer num: 5 -I (3690) wifi:Init management short buffer num: 32 -I (3690) wifi:Init static tx buffer num: 8 -I (3690) wifi:Init tx cache buffer num: 32 -I (3690) wifi:Init static tx FG buffer num: 2 -I (3690) wifi:Init static rx buffer size: 1600 -I (3690) wifi:Init static rx buffer num: 10 -I (3690) wifi:Init dynamic rx buffer num: 32 -I (3700) wifi_init: rx ba win: 16 -I (3700) wifi_init: accept mbox: 6 -I (3700) wifi_init: tcpip mbox: 32 -I (3700) wifi_init: udp mbox: 6 -I (3710) wifi_init: tcp mbox: 6 -I (3710) wifi_init: tcp tx win: 5760 -I (3710) wifi_init: tcp rx win: 5760 -I (3710) wifi_init: tcp mss: 1440 -I (3710) wifi_init: WiFi/LWIP prefer SPIRAM -I (3710) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 -I (3740) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(0) -I (3740) Application: 开始播放下行音频: 样本=960 采样率=16000 -I (3790) wifi:mode : sta (d0:cf:13:03:bb:f0) -I (3790) wifi:enable tsf -I (4680) Airhub1: ADC: 2328, 原始电压: 2.33V, 计算电池电压: 10.10V, 电量: 100%, 满电电压: 4.20V -I (4680) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 ---- Error: read failed: [Errno 6] Device not configured ---- Waiting for the device to reconnect...... \ No newline at end of file +I (1000) AI_CHAT_EAF: SPIFFS 已就绪: total=6522 KB, used=4513 KB +I (1000) AI_CHAT_EAF: 解析 hiyori-assets.bin: +I (1000) AI_CHAT_EAF: MMAP file_count=9 +I (1000) AI_CHAT_EAF: MMAP 版本=旧版(0x10), ENTRY_SIZE=28 +I (1000) AI_CHAT_EAF: 跳过非 EAF: index.json (size=1135) +I (1320) AI_CHAT_EAF: ✓ Cached [0] hiyori_m01.eaf (833884 bytes) @ 0x3c577d40 (file_offset=1423) +I (1640) AI_CHAT_EAF: ✓ Cached [1] hiyori_m02.eaf (528479 bytes) @ 0x3c643d58 (file_offset=835309) +I (1980) AI_CHAT_EAF: ✓ Cached [2] hiyori_m03.eaf (576910 bytes) @ 0x3c6c7d5c (file_offset=1363790) +I (2320) AI_CHAT_EAF: ✓ Cached [3] hiyori_m04.eaf (572724 bytes) @ 0x3c757d60 (file_offset=1940702) +I (2680) AI_CHAT_EAF: ✓ Cached [4] hiyori_m05.eaf (620157 bytes) @ 0x3c7e3d64 (file_offset=2513428) +I (2960) AI_CHAT_EAF: ✓ Cached [5] hiyori_m06.eaf (433214 bytes) @ 0x3c87bd68 (file_offset=3133587) +I (3230) AI_CHAT_EAF: ✓ Cached [6] hiyori_m07.eaf (387868 bytes) @ 0x3c8e5d6c (file_offset=3566803) +I (3570) AI_CHAT_EAF: ✓ Cached [7] hiyori_m08.eaf (579193 bytes) @ 0x3c945d70 (file_offset=3954673) +I (3570) AI_CHAT_EAF: EAF 预加载完成,共 8 个表情可用 +I (3528) timer: init timer manager: fps=25 period=40 ms +I (3740) AI_CHAT_EAF: 背景图已加载: 360x360 (253 KB RGB565 @ 0x3c9d7d78) +I (3770) AI_CHAT_EAF: 切换表情: hiyori_m06.eaf (idx=5, size=433214) +I (3810) AI_CHAT_EAF: 字幕 label 创建成功(300×90, 黑字, WRAP, 居中) +I (3810) AI_CHAT_EAF: === EAF 数字人 UI 初始化完成 === +I (3910) Airhub1: 🤖 AI对话模式启动 +I (3910) Airhub1: 初始化按钮... +I (3910) DZBJ_BTN: BOOT+KEY2组合键模式切换注册成功(2000ms) +I (3910) Airhub1: Boot button initialized on GPIO0 +I (3910) Airhub1: Volume up button initialized on GPIO-1 +I (3920) Airhub1: Volume down button initialized on GPIO-1 +I (3920) Airhub1: 故事按键已初始化,GPIO引脚 =4 +I (3920) Airhub1: 所有按键已成功初始化! +I (3920) Airhub1: IMU传感器未初始化,跳过IoT注册 +I (3920) Airhub1: Initializing battery monitor... +I (3920) Airhub1: ADC calibration initialized +I (3920) Airhub1: 电池状态监控已初始化,GPIO:3 +I (3920) Airhub1: 非生产测试模式且不在对话状态,姿态传感器业务已禁用以节约资源 +I (3920) PowerSaveTimer: Power save timer enabled +I (3920) Airhub1: 🔋 PowerSaveTimer已启用,20秒无活动将进入低功耗模式 +I (3920) Airhub1: 电容触摸板按钮已禁用 (ENABLE_TOUCH_PAD_BUTTONS=0) +I (3920) Application: 打印设置设备状态日志: starting +I (3920) Application: 正常启动流程,将执行开机播报和网络连接播报 +I (3920) Airhub1: Initializing audio codec (duplex)... +I (3920) Airhub1: Creating BoxAudioCodec (ES8311+ES7210, without reference) ... +I (3920) BoxAudioCodec: Duplex channels created +I (3930) ES8311: Work in Slave mode +I (3930) gpio: GPIO[48]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (3930) ES7210: Work in Slave mode +I (3940) ES7210: Enable ES7210_INPUT_MIC1 +I (3940) ES7210: Enable ES7210_INPUT_MIC2 +I (3950) BoxAudioCodec: BoxAudioDevice initialized (duplex) +I (3950) Airhub1: Audio codec initialized successfully +I (3950) Application: 检测到WiFi板卡,将opus编码器复杂度设置为3 +I (3950) OpusResampler: Resampler configured with input sample rate 16000, output sample rate 8000, and channels 1 +I (3950) I2S_IF: channel mode 2 bits:16/16 channel:2 mask:1 +I (3950) I2S_IF: TDM Mode 0 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (3950) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 +I (3950) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (3950) ES7210: Bits 16 +I (3980) ES7210: Enable ES7210_INPUT_MIC1 +I (3990) ES7210: Enable ES7210_INPUT_MIC2 +I (4000) ES7210: Unmuted +I (4000) Adev_Codec: Open codec device OK +I (4000) BoxAudioCodec: Input opened: sr=16000 ch=1 mask=0x1 ref=0 +I (4000) AudioCodec: Set input enable to true +I (4000) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 +I (4000) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (4010) Adev_Codec: Open codec device OK +I (4020) AudioCodec: Set output enable to true +I (4020) AudioCodec: Audio codec started +I (4020) AudioCodec: 将运行时输出音量设置为:80 +I (4020) Application: 设备启动完成,播放开机播报语音 +I (4020) pp: pp rom version: e7ae62f +I (4020) net80211: net80211 rom version: e7ae62f +I (4030) wifi:wifi driver task: 3fcec9f8, prio:23, stack:6656, core=0 +I (4030) wifi:wifi firmware version: 3263cda +I (4030) wifi:wifi certification version: v7.0 +I (4030) wifi:config NVS flash: disabled +I (4030) wifi:config nano formatting: disabled +I (4030) wifi:Init data frame dynamic rx buffer num: 32 +I (4030) wifi:Init dynamic rx mgmt buffer num: 5 +I (4030) wifi:Init management short buffer num: 32 +I (4030) wifi:Init static tx buffer num: 8 +I (4030) wifi:Init tx cache buffer num: 32 +I (4030) wifi:Init static tx FG buffer num: 2 +I (4030) wifi:Init static rx buffer size: 1600 +I (4030) wifi:Init static rx buffer num: 10 +I (4030) wifi:Init dynamic rx buffer num: 32 +I (4040) wifi_init: rx ba win: 16 +I (4040) wifi_init: accept mbox: 6 +I (4040) wifi_init: tcpip mbox: 32 +I (4050) wifi_init: udp mbox: 6 +I (4050) wifi_init: tcp mbox: 6 +I (4050) wifi_init: tcp tx win: 5760 +I (4050) wifi_init: tcp rx win: 5760 +I (4050) wifi_init: tcp mss: 1440 +I (4050) wifi_init: WiFi/LWIP prefer SPIRAM +I (4050) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 +I (4100) wifi:mode : sta (d0:cf:13:03:bb:f0) +I (4100) wifi:enable tsf +I (4100) Application: 开始播放下行音频: 样本=960 采样率=16000 +I (5020) Airhub1: ADC: 2324, 原始电压: 2.32V, 计算电池电压: 10.09V, 电量: 100%, 满电电压: 4.20V +I (5020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (6020) Airhub1: ADC: 2330, 原始电压: 2.33V, 计算电池电压: 10.11V, 电量: 100%, 满电电压: 4.20V +I (6020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (6580) wifi: 发现可连接 AP: airhub, BSSID: 70:2a:d7:85:bc:eb, RSSI: -36, Channel: 1, Authmode: 3 +I (6580) WifiBoard: Starting WiFi connection, playing network connection sound +W (6580) wifi:Password length matches WPA2 standards, authmode threshold changes from OPEN to WPA2 +I (6670) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1, snd_ch_cfg:0x0 +I (6670) wifi:state: init -> auth (0xb0) +I (6680) wifi:state: auth -> assoc (0x0) +I (6690) wifi:state: assoc -> run (0x10) +I (6730) wifi:connected with airhub, aid = 2, channel 1, BW20, bssid = 70:2a:d7:85:bc:eb +I (6730) wifi:security: WPA2-PSK, phy: bgn, rssi: -37 +I (6730) wifi:pm start, type: 1 + +I (6730) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us +I (6730) wifi:set rx beacon pti, rx_bcn_pti: 14, bcn_timeout: 25000, mt_pti: 14, mt_time: 10000 +I (6760) wifi:AP's beacon interval = 102400 us, DTIM period = 1 +I (7020) Airhub1: ADC: 2340, 原始电压: 2.34V, 计算电池电压: 10.16V, 电量: 100%, 满电电压: 4.20V +I (7020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (8020) Airhub1: ADC: 2343, 原始电压: 2.34V, 计算电池电压: 10.17V, 电量: 100%, 满电电压: 4.20V +I (8020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (8260) wifi:idx:0 (ifx:0, 70:2a:d7:85:bc:eb), tid:0, ssn:0, winSize:64 +I (9020) Airhub1: ADC: 2342, 原始电压: 2.34V, 计算电池电压: 10.16V, 电量: 100%, 满电电压: 4.20V +I (9020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (9420) wifi: Got IP: 192.168.124.92 +I (9420) esp_netif_handlers: sta ip: 192.168.124.92, mask: 255.255.255.0, gw: 192.168.124.1 +I (10020) Airhub1: ADC: 2344, 原始电压: 2.34V, 计算电池电压: 10.17V, 电量: 100%, 满电电压: 4.20V +I (10020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (11020) Airhub1: ADC: 2346, 原始电压: 2.35V, 计算电池电压: 10.18V, 电量: 100%, 满电电压: 4.20V +I (11020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (12020) Airhub1: ADC: 2347, 原始电压: 2.35V, 计算电池电压: 10.19V, 电量: 100%, 满电电压: 4.20V +I (12020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (13020) Airhub1: ADC: 2348, 原始电压: 2.35V, 计算电池电压: 10.19V, 电量: 100%, 满电电压: 4.20V +I (13020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (13800) wifi:idx:1 (ifx:0, 70:2a:d7:85:bc:eb), tid:3, ssn:0, winSize:64 +I (13820) AI_CHAT_EAF: 状态: 加载协议...(PoC 阶段暂不显示) +I (13820) VolcRtcProtocol: 设置Agent配置参数: {"Config":{"WebSearchAgentConfig":{"ParamsString":"{\"bot_id\":\"7585449675889608233\",\"stream\":true,\"location_info\":{\"city\":\"北京\"}}"}}} +I (13820) VolcRtcProtocol: VolcRtcProtocol 开始启动... +I (13820) VolcRtcProtocol: 使用配置文件中的设备名称: d0_cf_13_03_bb_f0 +I (13830) VolcRtcProtocol: NVS凭证已加载:secret=0 appid=0 device_name=d0_cf_13_03_bb_f0, free_heap=3396552 +[INF|volc_device_manager.c:338]Device register URL: https://iot-cn-shanghai.iot.volces.com/2021-12-14/DynamicRegister?Action=DynamicRegister&Version=2021-12-14 +I (13840) VOLC_HTTP: HTTP POST attempt 1/3 +I (13840) VOLC_HTTP: Performing HTTP request... +I (13840) VolcRtcProtocol: VolcRtcProtocol初始化任务已创建 +I (13850) Application: 打印设置设备状态日志: idle +I (13850) AI_CHAT_EAF: 状态: 待命(PoC 阶段暂不显示) +I (13910) AI_CHAT_EAF: 切换表情: hiyori_m01.eaf (idx=0, size=833884) +I (13910) Application: Entering idle state, playing standby sound +I (13930) WeatherApi: [AutoDetectAndSetLocation] 调用全局函数自动检测位置 +I (13930) WeatherApi: [AutoDetectLocation] ===== 开始自动检测位置 ===== +I (13940) WeatherApi: [AutoDetectLocation] 未从NVS命中城市信息,将调用位置API获取城市信息 +I (13940) WeatherApi: [GetIpInfo] 开始获取IP位置信息 +I (13940) WeatherApi: [GetIpInfo] 查询URL: http://ip-api.com/json/?lang=zh-CN +I (13970) main_task: Returned from app_main() +I (14000) esp-x509-crt-bundle: Certificate validated +I (14020) Airhub1: ADC: 2346, 原始电压: 2.35V, 计算电池电压: 10.18V, 电量: 100%, 满电电压: 4.20V +I (14020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (14670) WeatherApi: [GetIpInfo] HTTP状态码: 200, 头长度: 313 +I (14670) WeatherApi: [GetIpInfo] 获取到响应,长度: 313 字节 +I (14670) WeatherApi: 开始解析IP位置信息JSON +I (14670) WeatherApi: =============== IP位置信息 =============== +I (14670) WeatherApi: 状态: success +I (14670) WeatherApi: IP: 112.94.17.77 +I (14670) WeatherApi: 国家: 中国 +I (14670) WeatherApi: 区域代码: GD +I (14670) WeatherApi: 省份: 广东 +I (14670) WeatherApi: 城市: 广州市 +I (14670) WeatherApi: 邮编: +I (14670) WeatherApi: 纬度: 23.1181 +I (14670) WeatherApi: 经度: 113.2539 +I (14670) WeatherApi: 时区: Asia/Shanghai +I (14670) WeatherApi: 运营商: China Unicom CHINA169 Guangdong Province Network +I (14670) WeatherApi: 组织: +I (14670) WeatherApi: AS号: AS17622 China Unicom Guangzhou network +I (14670) WeatherApi: ====================================== +I (14670) VOLC_HTTP: HTTP_EVENT_ON_DATA: read 187 bytes, total: 187 +I (14680) VOLC_HTTP: HTTP response status: 200 +I (14680) VOLC_HTTP: Content-Length: 187, actually read: 187 +I (14680) VOLC_HTTP: Successfully read response: 187 bytes +I (14680) VOLC_HTTP: HTTP POST request completed, response_buffer=0x3ca2a3b8 +[INF|volc_device_manager.c:375]Device register response received: {"ResponseMetadata":{"Action":"DynamicRegister","Version":"2021-12-14"},"Result":{"len":24,"payload":"8qRC86SbT84cBG8pAdNzlV6t0aaee3RFcsfmtq8qRTY=","RTCAppID":"68f0bc7617b8520178bef12c"}} +[INF|volc_device_manager.c:453]Decoded device secret: ce52471c506b8be190ce0203 +[INF|volc_device_manager.c:496]Device registration successful: rtc_app_id=68f0bc7617b8520178bef12c +[INF|volc_rtc.c:600]volc_rtc_create: set param[0]: {"debug":{"log_to_console":1}} +[INF|volc_rtc.c:600]volc_rtc_create: set param[1]: {"audio":{"codec":{"internal":{"enable":1}}}} +[INF|volc_rtc.c:600]volc_rtc_create: set param[2]: {"rtc":{"access":{"concurrent_requests":1}}} +[INF|volc_rtc.c:600]volc_rtc_create: set param[3]: {"rtc":{"ice":{"concurrent_agents":1}}} +2026-06-01 18:21:42.814 [I] VolcEngineRTCLite.c:153 ****************** HELLO BOOKA (68f0bc7617b8520178bef12c)(1.57.207.001)(HASH-5c3aa20fe851886d21cede0115044e17c3ec8a67) ******************** +2026-06-01 18:21:42.815 [I] VolcEngineRTCLite.c:158 Platform esp32s3 +2026-06-01 18:21:42.815 [I] VolcEngineRTCLite.c:161 OsVersion FreeRTOS/unknown +2026-06-01 18:21:42.815 [I] VolcEngineRTCLite.c:164 CompilerInfo GCC/14.2.0 +2026-06-01 18:21:42.816 [I] VolcEngineRTCLite.c:100 BOOKA_DEVICE_LOW_RESOURCE : ON +2026-06-01 18:21:42.816 [I] VolcEngineRTCLite.c:104 BOOKA_ENABLE_EVENT_REPORT : ON +2026-06-01 18:21:42.816 [I] VolcEngineRTCLite.c:108 ENABLE_G722_CODEC : ON +2026-06-01 18:21:42.817 [I] GlobalParams.c:232 pGlobalParams->configParams.rtc.access.concurrent_requests from 2 to 1 +2026-06-01 18:21:42.817 [I] GlobalParams.c:233 pGlobalParams->configParams.rtc.ice.concurrent_agents from 2 to 1 +2026-06-01 18:21:42.817 [I] GlobalParams.c:239 pGlobalParams->configParams.audio.codec.internal.enable from 0 to 1 +2026-06-01 18:21:42.818 [I] GlobalParams.c:244 pGlobalParams->configParams.debug.log_to_console from 0 to 1 +2026-06-01 18:21:42.818 [I] GlobalParams.c:247 pGlobalParams->configParams.rtc.root_path to . +2026-06-01 18:21:42.820 [E] Cache.c:273 operation returned status code: 0x00000009 +2026-06-01 18:21:42.827 [E] SocketConnection-Lite.c:191 bind local ip failed +2026-06-01 18:21:42.830 [I] LiteResolver.c:213 start resolve rtc-log-service.volcvideo.com by sep thread +2026-06-01 18:21:42.832 [I] API byte_rtc_set_audio_codec engine 0x3ca26e4c audio_codec_type 4 +2026-06-01 18:21:42.833 [I] API byte_rtc_set_video_codec engine 0x3ca26e4c video_codec_type 0 +I (14700) VolcRtcProtocol: RTC实例已准备就绪;房间加入将在监听状态后执行 +I (14700) Application: 🌐 开始初始化WebSocket协议... +I (14700) Application: 🔧 创建WebsocketProtocol实例 +I (14700) Application: 🚀 启动WebSocket协议 +I (14700) Application: ✅ WebSocket协议初始化完成 +2026-06-01 18:21:42.837 [I] Common.c:82 rtcAudioCodec2SdkAudioCodec codec 5 +2026-06-01 18:21:42.881 [I] LiteResolver.c:213 start resolve access.rtc.volcvideo.com by sep thread +2026-06-01 18:21:42.882 [I] LiteResolver.c:213 start resolve rtc-log-info.volcvideo.com by sep thread +I (14770) WeatherApi: [GetIpInfo] 返回城市信息: 广州市 +I (14770) WeatherApi: [AutoDetectLocation] 城市信息保存到NVS成功! +I (14770) WeatherApi: [AutoDetectLocation] 自动检测到位置: '广州市',已更新默认城市 +I (14770) WeatherApi: [AutoDetectLocation] ===== 位置检测完成 ===== +I (15020) Airhub1: ADC: 2345, 原始电压: 2.35V, 计算电池电压: 10.18V, 电量: 100%, 满电电压: 4.20V +I (15020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +2026-06-01 18:21:43.399 [E] Cache.c:311 operation returned status code: 0x00000009 +2026-06-01 18:21:43.601 [I] IceAgent.c:2533 cur nominatedCandidatePair local 192.168.124.92:0 remote 163.177.46.38:50000 state ICE_CANDIDATE_PAIR_STATE_SUCCEEDED +I (16020) Airhub1: ADC: 2346, 原始电压: 2.35V, 计算电池电压: 10.18V, 电量: 100%, 满电电压: 4.20V +I (16020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +2026-06-01 18:21:44.841 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 +I (17020) Airhub1: ADC: 2348, 原始电压: 2.35V, 计算电池电压: 10.19V, 电量: 100%, 满电电压: 4.20V +I (17020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (18020) Airhub1: ADC: 2350, 原始电压: 2.35V, 计算电池电压: 10.20V, 电量: 100%, 满电电压: 4.20V +I (18020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (18020) Airhub1: BOOT button clicked +I (18020) Airhub1: 当前设备状态: 3 +I (18020) Airhub1: 从待命状态切换到聆听状态 +I (18020) Airhub1: 强制重新初始化音频输出 +I (18020) I2S_IF: Pending out channel for in channel running +I (18020) AudioCodec: Set output enable to false +I (18070) I2S_IF: channel mode 0 bits:16/16 channel:2 mask:1 +I (18070) I2S_IF: STD Mode 1 bits:16/16 channel:2 sample_rate:16000 mask:1 +I (18080) Adev_Codec: Open codec device OK +I (18080) AudioCodec: Set output enable to true +I (18080) Airhub1: 播放提示音:卡卡在呢 +I (18080) Airhub1: 等待音频播放完成... +I (18600) Airhub1: 音频队列已清空,等待硬件输出完成... +2026-06-01 18:21:46.841 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 +I (19100) Airhub1: 音频播放完成 +I (19100) Application: 打印设置设备状态日志: connecting +I (19100) AI_CHAT_EAF: 状态: 连接中...(PoC 阶段暂不显示) +I (19100) Application: 正在尝试打开音频通道 +I (19100) WifiBoard: 🔋 电源管理模式切换: 禁用低功耗模式(恢复正常模式) +I (19100) wifi:Set ps type: 0, coexist: 0 + +I (19100) VolcRtcProtocol: Join RTC: handle=0x3ca2a2d0 bot=botCL63FJgWe iot_ready=1 free_heap=3247836 +W (19100) DIAG-RTC: Pre-Join: sockets=20/20 heap=3247836 psram=3229200 rssi=-34 +[INF|volc_rtc.c:698]volc_rtc_start: bot_id=botCL63FJgWe audio_codec=4 heap_free=3247836 +[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":19056,"timestamp":19056,"signature":"fOFHHrybmmgLPx3QUa3CKsT7YICYj0M/XxHkzyQVpNg=","bot_id":"botCL63FJgWe","audio_codec":4,"task_id":"test","Config":{"WebSearchAgentConfig":{"ParamsString":"{\"bot_id\":\"7585449675889608233\",\"stream\":true,\"location_info\":{\"city\":\"北京\"}}"}}} +I (19100) VOLC_HTTP: HTTP POST attempt 1/3 +I (19110) VOLC_HTTP: Performing HTTP request... +I (19200) Airhub1: ADC: 2348, 原始电压: 2.35V, 计算电池电压: 10.19V, 电量: 100%, 满电电压: 4.20V +I (19200) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (19300) esp-x509-crt-bundle: Certificate validated +2026-06-01 18:21:47.861 [W] LiteHttp.c:490 ID 227298569 E_TIMEOUT : Handshark timeout +I (20020) Airhub1: ADC: 2348, 原始电压: 2.35V, 计算电池电压: 10.19V, 电量: 100%, 满电电压: 4.20V +I (20020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (20320) VOLC_HTTP: HTTP_EVENT_ON_DATA: read 307 bytes, total: 307 +I (20320) VOLC_HTTP: HTTP_EVENT_ON_DATA: read 130 bytes, total: 437 +I (20320) VOLC_HTTP: HTTP response status: 200 +I (20320) VOLC_HTTP: Content-Length: 437, actually read: 437 +I (20320) VOLC_HTTP: Successfully read response: 437 bytes +I (20320) VOLC_HTTP: HTTP POST request completed, response_buffer=0x3ca4cadc +[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_20260601182147000","TaskID":"test","UserID":"d0_cf_13_03_bb_f0","Token":"00168f0bc7617b8520178bef12ceQAyLiUCPF0daryXJmoyAGFpYm90cnRjX0c3MTFBX2QwX2NmXzEzXzAzX2JiX2YwXzIwMjYwNjAxMTgyMTQ3MDAwEQBkMF9jZl8xM18wM19iYl9mMAYAAAC8lyZqAQC8lyZqAgC8lyZqAwC8lyZqBAC8lyZqBQC8lyZqIADFqlPyt/csBnEdTqcgd/iMQpc+gTKP8bGMZj56G/AIaA=="}} +[INF|volc_device_manager.c:702]Retrieved RTC config: channel_name=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000, uid=d0_cf_13_03_bb_f0, task_id=test +[INF|volc_rtc.c:704]volc_get_rtc_config success heap_free=3255728 +[INF|volc_rtc.c:119]Joining channel: aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000, uid: d0_cf_13_03_bb_f0, token: 00168f0bc7617b8520178bef12ceQAyLiUCPF0daryXJmoyAGFpYm90cnRjX0c3MTFBX2QwX2NmXzEzXzAzX2JiX2YwXzIwMjYwNjAxMTgyMTQ3MDAwEQBkMF9jZl8xM18wM19iYl9mMAYAAAC8lyZqAQC8lyZqAgC8lyZqAwC8lyZqBAC8lyZqBQC8lyZqIADFqlPyt/csBnEdTqcgd/iMQpc+gTKP8bGMZj56G/AIaA==, vpub: 0, vsub: 0, apub: 1, asub: 1 +[INF|volc_rtc.c:123]Memory before byte_rtc_join_room - Heap: 3255728 bytes, SPIRAM: 3237408 bytes +2026-06-01 18:21:48.459 [I] API byte_rtc_join_room engine 0x3ca26e4c channel_name aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000 user_name d0_cf_13_03_bb_f0 token 00168f0bc7617b8520178bef12ceQAyLiUCPF0daryXJmoyAGFpYm90cnRjX0c3MTFBX2QwX2NmXzEzXzAzX2JiX2YwXzIwMjYwNjAxMTgyMTQ3MDAwEQBkMF9jZl8xM18wM19iYl9mMAYAAAC8lyZqAQC8lyZqAgC8lyZqAwC8lyZqBAC8lyZqBQC8lyZqIADFqlPyt/csBnEdTqcgd/iMQpc+gTKP8bGMZj56G/AIaA== audio sub 1 pub 1 video sub 0 pub 0 +[INF|volc_rtc.c:132]Memory after byte_rtc_join_room - Heap: 3255116 bytes (change: -612), SPIRAM: 3236844 bytes (change: -564) +2026-06-01 18:21:48.461 [I] RoomImplX.c:632 [room_event] key: join_room, type: begin, result: true +2026-06-01 18:21:48.659 [I] Rtp.c:139 video_retrans_buffer_duration_ms = 3000 +2026-06-01 18:21:48.659 [I] Rtp.c:141 enable_video_transport_cc = 1 +2026-06-01 18:21:48.660 [I] Rtp.c:190 audio_retrans_buffer_duration_ms = 1000 +2026-06-01 18:21:48.661 [I] Rtp.c:193 enable_audio_transport_cc = 1 +2026-06-01 18:21:48.667 [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_20260601182147000 elapsed 195 ms + +I (20540) VolcRtcProtocol: RTC连接成功 +I (20540) VolcRtcProtocol: Wait connect bits=0x1 free_heap=3196708 +2026-06-01 18:21:48.677 [W] IceMessageProcessor.c:360 TODO: handle signal engineControlMessage content {"appId":"68f0bc7617b8520178bef12c","messageId":"1e198746665f4d63bcf880c4ca92ae5a","sessionId":"phUEzQCl8X5vKeO1x7PmgNpxSrvWcodW","roomId":"aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000","type":"changeCodec","body":{"codec":"PCMA","media":"audio"}} +2026-06-01 18:21:48.841 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 +[INF|volc_rtc.c:268]remote user joined aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000:bot_20260601182147000 elapsed 0 ms + +I (20900) VolcRtcProtocol: RTC远程用户加入 +I (20900) Application: Dialog watchdog started, initial device state: 7 +I (20900) Application: 打印设置设备状态日志: dialog +I (20900) Application: 🟢 音频通道已打开 +I (20900) Application: 当前设备状态: dialog +I (20900) AI_CHAT_EAF: 状态: 说话中...(PoC 阶段暂不显示) +I (20900) Airhub1: 🔋 PowerSaveTimer已唤醒,从低功耗模式恢复到正常模式 +I (20900) VolcRtcProtocol: 延迟发送StartListening,等待会话就绪 +I (20900) Application: 🔄 禁用电源低功耗管理模式 +I (20900) Application: 进入对话框状态:启用全双工 +I (20900) WifiBoard: 🔋 电源管理模式切换: 禁用低功耗模式(恢复正常模式) +I (20900) wifi:Set ps type: 0, coexist: 0 + +I (20900) Application: 🔊 启用音频编解码器输出 +I (20930) Application: ✅ AEC 初始化成功: chunk_size=256 samples (16 ms @16kHz), mode=VOIP_LOW_COST, ref_ring_capacity=3200 samples (200 ms), delay=800 samples (50 ms) +I (20930) Application: 🔬 AEC RMS mic=162 ref=0 clean=162 (AI 说话时 ref↑, clean 应接近 mic 静音; 用户说话时 mic↑ clean≈mic; delay=800 samples) +I (20930) Application: AEC 首包: 请求 samples=320 实际 chunk=256 data.size=320 +I (21020) Airhub1: ADC: 2347, 原始电压: 2.35V, 计算电池电压: 10.19V, 电量: 100%, 满电电压: 4.20V +I (21020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +I (21040) Application: 🔇 已灌 200ms 静音 PCM 覆盖 DMA 残留 +I (21040) Application: 🔄 音频通道打开,准备播放欢迎语音 +I (21040) Application: 当前设备状态: dialog +I (21040) Application: 🟢 音频通道初始化完成 +2026-06-01 18:21:49.169 [W] EngineImplX.c:598 callback pEngineImplX->eventHandler.on_user_joined used too many times 140 +2026-06-01 18:21:49.185 [I] rx_net_audio_jitterbuffer.c:183 first_frame_build_target_delay:1, direct_mode:0, direct_mode_max_wait_time:200 +2026-06-01 18:21:49.197 [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 +2026-06-01 18:21:49.237 [I] StreamSubscriber.c:336 [room_event] key: first_frame, media: audio, type: begin_recv +2026-06-01 18:21:49.607 [I] rx_net_audio_jitterbuffer.c:1785 fir pkt seq=0 +2026-06-01 18:21:49.608 [I] rx_net_audio_jitterbuffer.c:1792 first recv dia cnt=0, fir pkt=0 +2026-06-01 18:21:49.611 [I] rx_net_audio_jitterbuffer.c:1785 fir pkt seq=1 +2026-06-01 18:21:49.642 [I] rx_net_audio_jitterbuffer.c:1443 build_target_delay over need_extract_packet s=120 +2026-06-01 18:21:49.643 [I] MediaService.c:405 [room_event] key: first_frame, media: audio, type: recv_end +I (21510) VolcRtcProtocol: 接收下行音频首包: 类型=PCM 大小=320 +I (21510) Application: 收到下行音频首包入队: 字节=320 +2026-06-01 18:21:49.653 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 +2026-06-01 18:21:49.654 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 +2026-06-01 18:21:49.654 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 +2026-06-01 18:21:49.655 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 +[INF|volc_rtc.c:478]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000 src=bot_20260601182147000 size=326 binary=1 free_heap=2909000 +I (21940) Application: .. AI: 你好, +I (22020) Airhub1: ADC: 2346, 原始电压: 2.35V, 计算电池电压: 10.18V, 电量: 100%, 满电电压: 4.20V +I (22020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +2026-06-01 18:21:50.290 [I] rx_net_lite_cc_bandwidth_estimation.c:200 lite-cc bandwidth up bandwidth = 4630000 +[INF|volc_rtc.c:478]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000 src=bot_20260601182147000 size=332 binary=1 free_heap=2888032 +I (22340) Application: .. AI: 你好,我 +[INF|volc_rtc.c:478]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000 src=bot_20260601182147000 size=338 binary=1 free_heap=2887004 +I (22440) Application: .. AI: 你好,我是 +2026-06-01 18:21:50.698 [I] rx_net_lite_cc_bandwidth_estimation.c:200 lite-cc bandwidth up bandwidth = 5000000 +[INF|volc_rtc.c:478]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000 src=bot_20260601182147000 size=344 binary=1 free_heap=2888332 +I (22650) Application: .. AI: 你好,我是啦 +2026-06-01 18:21:50.783 [W] EngineImplX.c:1047 callback pEngineImplX->eventHandler.on_message_received used too many times 10 +2026-06-01 18:21:50.831 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 +[INF|volc_rtc.c:478]message received channel=aibotrtc_G711A_d0_cf_13_03_bb_f0_20260601182147000 src=bot_20260601182147000 size=349 binary=1 free_heap=2887672 +I (22840) Application: AI回复结束,表情恢复 neutral +I (22840) Application: 📝 AI: 你好,我是啦啦~ +I (22900) Application: dialog对话空闲倒计时剩余: 40 秒 +I (22930) Application: 🔬 AEC RMS mic=1745 ref=9330 clean=155 (AI 说话时 ref↑, clean 应接近 mic 静音; 用户说话时 mic↑ clean≈mic; delay=800 samples) +I (22940) VolcRtcProtocol: 上行音频统计: PCM帧=52 字节=16640, G711A帧=0 字节=0, 速率=66189 bps +I (22940) VolcRtcProtocol: 下行音频统计: PCM字节=23040, OPUS字节=0 +I (23020) Airhub1: ADC: 2345, 原始电压: 2.35V, 计算电池电压: 10.18V, 电量: 100%, 满电电压: 4.20V +I (23020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +2026-06-01 18:21:51.207 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 98:1:99,in: jitter nor=40 reor=189, wj=48, out: pkt=79 t_diff=33 seq_diff=1 buffer_ms=400 target_ms=100 expand_npkt=27 expand_loss=0 start_seq 1 end_seq 97 +2026-06-01 18:21:51.210 [I] rx_net_audio_jitterbuffer.c:1717 is burst ver, [a_jb] rtt_to_s: 58, e2e_avg: -1, e2e_max: 0 +I (24020) Airhub1: ADC: 2344, 原始电压: 2.34V, 计算电池电压: 10.17V, 电量: 100%, 满电电压: 4.20V +I (24020) BluetoothMAC: Bluetooth MAC Address: d0:cf:13:03:bb:f2 +2026-06-01 18:21:52.841 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 +I (24900) Application: dialog对话空闲倒计时剩余: 38 秒 +I (24920) Airhub1: 🔗 检测到RTC火山引擎已连接 +I (24950) Application: 🔬 AEC RMS mic=164 ref=8 clean=164 (AI 说话时 ref↑, clean 应接近 mic 静音; 用户说话时 mic↑ clean≈mic; delay=800 samples) +I (24950) VolcRtcProtocol: 上行音频统计: PCM帧=50 字节=16000, G711A帧=0 字节=0, 速率=63688 bps +I (24950) VolcRtcProtocol: 下行音频统计: PCM字节=9280, OPUS字节=0 +2026-06-01 18:21:53.219 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 3:0:3,in: jitter nor=5 reor=0, wj=48, out: pkt=22 t_diff=30 seq_diff=1 buffer_ms=0 target_ms=100 expand_npkt=78 expand_loss=0 start_seq 98 end_seq 100 +2026-06-01 18:21:54.851 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 1 +I (26900) Application: dialog对话空闲倒计时剩余: 36 秒 +I (26960) Application: 🔬 AEC RMS mic=201 ref=8 clean=201 (AI 说话时 ref↑, clean 应接近 mic 静音; 用户说话时 mic↑ clean≈mic; delay=800 samples) +I (26960) VolcRtcProtocol: 上行音频统计: PCM帧=51 字节=16320, G711A帧=0 字节=0, 速率=64920 bps +I (26970) VolcRtcProtocol: 下行音频统计: PCM字节=0, OPUS字节=0 +2026-06-01 18:21:55.241 [I] rx_net_audio_jitterbuffer.c:1537 [a_jb]insert ok:dup:total 0:0:0,in: jitter nor=0 reor=0, wj=48, 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 (27920) Airhub1: 📤 设备状态上报已启用,每30秒上报一次 +I (28160) DZBJ_BTN: BOOT+KEY2组合键2秒:触发模式切换 +I (28160) DZBJ_BTN: 执行模式切换... +I (28160) DZBJ_BTN: AI模式 → 吧唧模式 +I (28160) DeviceMode: 模式切换为 吧唧,即将重启... +2026-06-01 18:21:56.663 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 +2026-06-01 18:21:56.664 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 +2026-06-01 18:21:56.665 [W] EventReportControl.c:195 PEventReportControl pAvailableLogdataQueue is empty, need drop this message, isStat 0 +2026-06-01 18:21:56.665 [E] EventReportSDK.c:596 operation returned status code: 0x00000022 +I (28660) wifi:state: run -> init (0x0) +I (28660) wifi:pm stop, total sleep time: 7889558 us / 21927321 us + +I (28660) wifi:idx:0, tid:0 +I (28660) wifi:idx:1, tid:3 +I (28660) wifi:new:<1,0>, old:<1,0>, ap:<255,255>, sta:<1,0>, prof:1, snd_ch_cfg:0x0 +I (28660) wifi: Reconnecting airhub (attempt 1 / 5) +I (28690) wifi:flush txq +I (28690) wifi:stop sw txq +I (28690) 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:0x40379d4d +--- 0x40379d4d: esp_restart_noos at /Users/rdzleo/esp/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 (49) WeatherApi: 初始化天气API配置 - 默认城市: 北京 +I (49) WeatherApi: WiFi位置缓存限制已设置为: 5 条 +I (50) coexist: coex firmware version: 831ec70 +I (50) coexist: coexist rom version e7ae62f +I (50) main_task: Started on CPU0 +I (60) main_task: Calling app_main() +I (80) Application: 🎴 吧唧模式:跳过 WiFi/协议/音频初始化 +I (80) Application: 打印设置设备状态日志: idle +I (80) BluetoothProvisioning: 蓝牙配网对象创建完成 +I (80) button: IoT Button Version: 3.5.0 +I (80) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (80) button: IoT Button Version: 3.5.0 +I (80) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (80) Airhub1: Initializing I2C master bus for audio codec... +I (80) Airhub1: Scanning I2C bus for devices... +I (80) Airhub1: I2C设备在线: 0x18 +I (80) Airhub1: I2C设备在线: 0x40 +I (80) Airhub1: I2C scan completed. Found 2 devices +I (80) DZBJ: 开始初始化显示硬件... +I (80) gpio: GPIO[7]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (80) st77916: LCD panel create success, version: 1.0.1 +W (210) st77916: The 3Ah command has been used and will be overwritten by external initialization sequence +I (330) LCD: TEON enabled (V-Blank mode) +I (330) LCD: LCD GRAM cleared (black filled) +I (330) DZBJ: LCD 硬件初始化完成 +I (330) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:2 +I (330) gpio: GPIO[6]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (730) CST816S: IC id: 182 +I (730) LCD: Touch controller initialized successfully +I (730) DZBJ: 硬件初始化完成,跳过 LVGL,等待上层显示管线接管 +I (730) LVGL: Starting LVGL task +I (730) LCD: LVGL buffer: 14400 bytes (W:360, Lines:20, DMA, single) +I (730) LCD: Touch controller added to LVGL +I (730) DZBJ: LVGL 初始化完成 +I (730) DZBJ: UI 初始化完成 +I (830) DZBJ: 背光已点亮,dzbj 显示模块初始化完成 +I (830) Airhub1: 🎴 电子吧唧模式启动 +I (830) Airhub1: 初始化吧唧模式按钮... +I (830) DZBJ_BTN: BOOT+KEY2组合键模式切换注册成功(2000ms) +I (830) Airhub1: Boot button initialized on GPIO0 +I (830) Airhub1: 吧唧模式按钮初始化完成 +I (830) Airhub1: 初始化电子吧唧模式外设... +I (1100) FATFS: SPIFFS: Total size: 6679361, Used: 4621663 +I (1320) IMG_LIST: 开始扫描SPIFFS中的图片文件 +I (1320) IMG_LIST: 发现图片文件: 02.jpg +I (1320) IMG_LIST: 发现图片文件: Background_360x360.jpg +I (1350) Airhub1: 吧唧模式 BOOT 单击 +I (1370) DeviceMode: 检测到模式切换重启,启用2秒按键抑制 +I (1370) DZBJ_BTN: 模式切换按键抑制期,忽略BOOT单击 +I (1410) IMG_LIST: 发现图片文件: default.jpg +I (1450) IMG_LIST: 图片列表初始化完成,共发现 3 张图片 +I (1450) IMG_LIST: 设置默认图片索引: 2 +I (1450) button: IoT Button Version: 3.5.0 +I (1450) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (1450) DZBJ_BTN: 按键初始化完成 (KEY2=GPIO4 iot_button,BOOT由board类管理) +I (1450) DZBJ_BAT: ADC校准初始化成功 +I (1450) DZBJ_BAT: 电池ADC初始化完成 (GPIO3, ADC1_CH2, 分压比=2) +I (1450) DZBJ_BAT: ADC原始值=2822, ADC电压=2360mV, 电池电压=4720mV, 电量=100% +I (1450) DZBJ_BAT: 电池监控任务已启动,更新间隔5000ms +I (1450) BLE_INIT: BT controller compile version [2edb0b0] +I (1450) BLE_INIT: Using main XTAL as clock source +I (1450) BLE_INIT: Feature Config, ADV:1, BLE_50:0, DTM:0, SCAN:1, CCA:0, SMP:1, CONNECT:1 +I (1450) BLE_INIT: Bluetooth MAC: d0:cf:13:03:bb:f2 +I (1450) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 +I (1500) DZBJ_BLE: GATT server register, status 0, app_id 0 +I (1500) DZBJ_BLE: 图片传输服务创建成功,句柄: 28 +I (1500) DZBJ_BLE: 图片写入特征创建成功,句柄: 42 +I (1500) DZBJ_BLE: 图片编辑特征创建成功,句柄: 44 +I (1500) DZBJ_BLE: BLE MAC: d0:cf:13:03:bb:f2 +I (1500) DZBJ_BLE: 蓝牙设备名称: Airhub_d0:cf:13:03:bb:f2 +I (1500) DZBJ_BLE: Advertising data set, status 0 +I (1500) DZBJ_BLE: Scan response data set, status 0 +I (1500) BLE_XFER: GATTC注册成功, if=4 +I (1500) BLE_XFER: 设备间传输模块初始化完成 +I (1500) SLEEP: 休眠管理器初始化完成(超时=10s) +I (1500) Airhub1: 电子吧唧模式初始化完成 +I (1500) AI_CHAT_EAF: 状态: 待命(PoC 阶段暂不显示) +I (1500) main_task: Returned from app_main() +I (2300) LVGL: Touch detected: x=151, y=36, count=1 +I (2340) LVGL: Touch detected: x=151, y=42, count=1 +I (2370) LVGL: Touch detected: x=152, y=55, count=1 +I (2400) LVGL: Touch detected: x=153, y=74, count=1 +I (2430) LVGL: Touch detected: x=153, y=99, count=1 +I (2430) DZBJ_BTN: 按键上下文切换: 2 +I (2470) LVGL: Touch detected: x=153, y=180, count=1 +I (2510) LVGL: Touch detected: x=152, y=229, count=1 +I (2540) LVGL: Touch detected: x=150, y=278, count=1 +I (3310) LVGL: Touch detected: x=131, y=226, count=1 +I (3340) LVGL: Touch detected: x=131, y=226, count=1 +I (3380) LVGL: Touch detected: x=129, y=226, count=1 +I (3410) LVGL: Touch detected: x=123, y=226, count=1 +I (3440) LVGL: Touch detected: x=119, y=226, count=1 +I (3470) LVGL: Touch detected: x=115, y=226, count=1 +I (3500) LVGL: Touch detected: x=113, y=226, count=1 +I (3540) LVGL: Touch detected: x=111, y=226, count=1 +I (3570) LVGL: Touch detected: x=111, y=226, count=1 +I (3600) LVGL: Touch detected: x=112, y=226, count=1 +I (3630) LVGL: Touch detected: x=115, y=226, count=1 +I (3660) LVGL: Touch detected: x=123, y=226, count=1 +I (3700) LVGL: Touch detected: x=143, y=226, count=1 +I (3730) LVGL: Touch detected: x=153, y=226, count=1 +I (3760) LVGL: Touch detected: x=160, y=226, count=1 +I (3790) LVGL: Touch detected: x=164, y=226, count=1 +I (4140) LVGL: Touch detected: x=94, y=164, count=1 +I (4180) SLEEP: 休眠模式已启用,亮度已调节至10%,10s无操作将熄屏 +I (4820) LVGL: Touch detected: x=93, y=153, count=1 +I (4850) LVGL: Touch detected: x=93, y=153, count=1 +I (4880) LVGL: Touch detected: x=93, y=153, count=1 +I (4910) SLEEP: 休眠模式已禁用,亮度恢复到50% +I (5550) LVGL: Touch detected: x=189, y=167, count=1 +I (6450) DZBJ_BAT: ADC原始值=2803, ADC电压=2345mV, 电池电压=4690mV, 电量=100% +I (6580) LVGL: Touch detected: x=158, y=172, count=1 +I (6610) LVGL: Touch detected: x=158, y=172, count=1 +I (6640) LVGL: Touch detected: x=158, y=172, count=1 +I (7600) LVGL: Touch detected: x=156, y=175, count=1 +I (7630) LVGL: Touch detected: x=156, y=175, count=1 +I (8560) LVGL: Touch detected: x=161, y=187, count=1 +I (8590) LVGL: Touch detected: x=161, y=187, count=1 +I (9970) LVGL: Touch detected: x=162, y=191, count=1 +I (10000) LVGL: Touch detected: x=162, y=191, count=1 +I (10770) LVGL: Touch detected: x=169, y=221, count=1 +I (10800) LVGL: Touch detected: x=169, y=221, count=1 +I (10830) LVGL: Touch detected: x=169, y=221, count=1 +I (11450) DZBJ_BAT: ADC原始值=2839, ADC电压=2372mV, 电池电压=4744mV, 电量=100% +I (12390) LVGL: Touch detected: x=168, y=43, count=1 +I (12430) LVGL: Touch detected: x=168, y=47, count=1 +I (12460) LVGL: Touch detected: x=165, y=70, count=1 +I (12500) LVGL: Touch detected: x=163, y=96, count=1 +I (12530) LVGL: Touch detected: x=160, y=152, count=1 +I (12560) LVGL: Touch detected: x=158, y=201, count=1 +I (12590) LVGL: Touch detected: x=158, y=250, count=1 +I (14290) Airhub1: 吧唧模式 BOOT 单击 +I (15090) LVGL: Touch detected: x=166, y=39, count=1 +I (15120) LVGL: Touch detected: x=166, y=42, count=1 +I (15150) LVGL: Touch detected: x=166, y=58, count=1 +I (15180) LVGL: Touch detected: x=167, y=94, count=1 +I (15180) DZBJ_BTN: 按键上下文切换: 2 +I (15220) LVGL: Touch detected: x=160, y=236, count=1 +I (16240) LVGL: Touch detected: x=170, y=343, count=1 +I (16270) LVGL: Touch detected: x=170, y=340, count=1 +I (16300) LVGL: Touch detected: x=170, y=329, count=1 +I (16340) LVGL: Touch detected: x=167, y=285, count=1 +I (16340) DZBJ_BTN: 按键上下文切换: 0 +I (16370) LVGL: Touch detected: x=162, y=243, count=1 +I (16400) LVGL: Touch detected: x=159, y=203, count=1 +I (16450) DZBJ_BAT: ADC原始值=2825, ADC电压=2362mV, 电池电压=4724mV, 电量=100% +I (16850) LVGL: Touch detected: x=186, y=201, count=1 +I (16880) LVGL: Touch detected: x=179, y=201, count=1 +I (16910) LVGL: Touch detected: x=139, y=205, count=1 +I (16940) LVGL: Touch detected: x=96, y=209, count=1 +I (16940) IMG_LIST: 图片列表已初始化,跳过 +I (16940) IMG_UI: 准备显示图片: default.jpg, 路径: /spiflash/default.jpg +I (16940) IMG_UI: 文件大小: 8805 字节 +I (17030) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (17030) IMG_UI: JPEG图片更新成功: default.jpg +I (17030) DZBJ_BTN: 按键上下文切换: 1 +I (18080) LVGL: Touch detected: x=194, y=200, count=1 +I (18110) LVGL: Touch detected: x=193, y=200, count=1 +I (18140) LVGL: Touch detected: x=186, y=200, count=1 +I (18180) LVGL: Touch detected: x=146, y=203, count=1 +I (18240) LVGL: Touch detected: x=18, y=223, count=1 +I (18270) LVGL: Touch detected: x=18, y=223, count=1 +I (18820) LVGL: Touch detected: x=187, y=169, count=1 +I (18850) LVGL: Touch detected: x=186, y=169, count=1 +I (18880) LVGL: Touch detected: x=182, y=169, count=1 +I (18910) LVGL: Touch detected: x=172, y=169, count=1 +I (18940) LVGL: Touch detected: x=152, y=168, count=1 +I (18980) LVGL: Touch detected: x=73, y=166, count=1 +I (18980) IMG_LIST: 切换到下一张图片,索引: 1/3 +I (18980) IMG_UI: 准备显示图片: 02.jpg, 路径: /spiflash/02.jpg +I (19010) IMG_UI: 文件大小: 20498 字节 +I (19010) IMG_UI: 释放之前的图片数据 +I (19130) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (19130) IMG_UI: JPEG图片更新成功: 02.jpg +I (19540) LVGL: Touch detected: x=202, y=182, count=1 +I (19570) LVGL: Touch detected: x=201, y=182, count=1 +I (19600) LVGL: Touch detected: x=193, y=182, count=1 +I (19630) LVGL: Touch detected: x=167, y=183, count=1 +I (19660) LVGL: Touch detected: x=141, y=185, count=1 +I (19660) IMG_LIST: 切换到下一张图片,索引: 2/3 +I (19660) IMG_UI: 准备显示图片: Background_360x360.jpg, 路径: /spiflash/Background_360x360.jpg +I (19660) IMG_UI: 文件大小: 20564 字节 +I (19660) IMG_UI: 释放之前的图片数据 +I (19780) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (19780) IMG_UI: JPEG图片更新成功: Background_360x360.jpg +I (20140) LVGL: Touch detected: x=197, y=190, count=1 +I (20180) LVGL: Touch detected: x=196, y=190, count=1 +I (20210) LVGL: Touch detected: x=191, y=190, count=1 +I (20240) LVGL: Touch detected: x=180, y=190, count=1 +I (20270) LVGL: Touch detected: x=159, y=188, count=1 +I (20300) LVGL: Touch detected: x=110, y=187, count=1 +I (20300) IMG_LIST: 切换到下一张图片,索引: 3/3 +I (20300) IMG_UI: 准备显示图片: default.jpg, 路径: /spiflash/default.jpg +I (20390) IMG_UI: 文件大小: 8805 字节 +I (20390) IMG_UI: 释放之前的图片数据 +I (20480) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (20480) IMG_UI: JPEG图片更新成功: default.jpg +I (20500) LVGL: Touch detected: x=7, y=187, count=1 +I (20530) LVGL: Touch detected: x=7, y=187, count=1 +I (20560) LVGL: Touch detected: x=7, y=187, count=1 +I (20590) LVGL: Touch detected: x=7, y=187, count=1 +I (20620) LVGL: Touch detected: x=7, y=187, count=1 +I (20660) LVGL: Touch detected: x=7, y=187, count=1 +I (21070) LVGL: Touch detected: x=201, y=194, count=1 +I (21100) LVGL: Touch detected: x=200, y=194, count=1 +I (21140) LVGL: Touch detected: x=185, y=193, count=1 +I (21170) LVGL: Touch detected: x=161, y=191, count=1 +I (21200) LVGL: Touch detected: x=109, y=188, count=1 +I (21200) IMG_LIST: 切换到下一张图片,索引: 1/3 +I (21200) IMG_UI: 准备显示图片: 02.jpg, 路径: /spiflash/02.jpg +I (21230) IMG_UI: 文件大小: 20498 字节 +I (21230) IMG_UI: 释放之前的图片数据 +I (21350) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (21350) IMG_UI: JPEG图片更新成功: 02.jpg +I (21450) DZBJ_BAT: ADC原始值=2826, ADC电压=2362mV, 电池电压=4724mV, 电量=100% +I (21700) LVGL: Touch detected: x=191, y=193, count=1 +I (21730) LVGL: Touch detected: x=188, y=193, count=1 +I (21760) LVGL: Touch detected: x=178, y=193, count=1 +I (21790) LVGL: Touch detected: x=157, y=193, count=1 +I (21820) LVGL: Touch detected: x=124, y=193, count=1 +I (21820) IMG_LIST: 切换到下一张图片,索引: 2/3 +I (21820) IMG_UI: 准备显示图片: Background_360x360.jpg, 路径: /spiflash/Background_360x360.jpg +I (21820) IMG_UI: 文件大小: 20564 字节 +I (21820) IMG_UI: 释放之前的图片数据 +I (21940) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (21940) IMG_UI: JPEG图片更新成功: Background_360x360.jpg +I (22270) LVGL: Touch detected: x=183, y=201, count=1 +I (22300) LVGL: Touch detected: x=182, y=201, count=1 +I (22340) LVGL: Touch detected: x=172, y=201, count=1 +I (22370) LVGL: Touch detected: x=158, y=201, count=1 +I (22400) LVGL: Touch detected: x=139, y=201, count=1 +I (22430) LVGL: Touch detected: x=114, y=201, count=1 +I (22430) IMG_LIST: 切换到下一张图片,索引: 3/3 +I (22430) IMG_UI: 准备显示图片: default.jpg, 路径: /spiflash/default.jpg +I (22520) IMG_UI: 文件大小: 8805 字节 +I (22520) IMG_UI: 释放之前的图片数据 +I (22610) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (22610) IMG_UI: JPEG图片更新成功: default.jpg +I (22980) LVGL: Touch detected: x=189, y=196, count=1 +I (23010) LVGL: Touch detected: x=186, y=196, count=1 +I (23040) LVGL: Touch detected: x=175, y=196, count=1 +I (23070) LVGL: Touch detected: x=154, y=196, count=1 +I (23100) LVGL: Touch detected: x=126, y=196, count=1 +I (23100) IMG_LIST: 切换到下一张图片,索引: 1/3 +I (23100) IMG_UI: 准备显示图片: 02.jpg, 路径: /spiflash/02.jpg +I (23130) IMG_UI: 文件大小: 20498 字节 +I (23130) IMG_UI: 释放之前的图片数据 +I (23250) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (23250) IMG_UI: JPEG图片更新成功: 02.jpg +I (23550) LVGL: Touch detected: x=190, y=195, count=1 +I (23580) LVGL: Touch detected: x=189, y=195, count=1 +I (23620) LVGL: Touch detected: x=173, y=195, count=1 +I (23650) LVGL: Touch detected: x=149, y=195, count=1 +I (23680) LVGL: Touch detected: x=91, y=193, count=1 +I (23680) IMG_LIST: 切换到下一张图片,索引: 2/3 +I (23680) IMG_UI: 准备显示图片: Background_360x360.jpg, 路径: /spiflash/Background_360x360.jpg +I (23680) IMG_UI: 文件大小: 20564 字节 +I (23680) IMG_UI: 释放之前的图片数据 +I (23800) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (23800) IMG_UI: JPEG图片更新成功: Background_360x360.jpg +I (24080) LVGL: Touch detected: x=191, y=200, count=1 +I (24110) LVGL: Touch detected: x=188, y=200, count=1 +I (24140) LVGL: Touch detected: x=174, y=200, count=1 +I (24180) LVGL: Touch detected: x=131, y=199, count=1 +I (24180) IMG_LIST: 切换到下一张图片,索引: 3/3 +I (24180) IMG_UI: 准备显示图片: default.jpg, 路径: /spiflash/default.jpg +I (24270) IMG_UI: 文件大小: 8805 字节 +I (24270) IMG_UI: 释放之前的图片数据 +I (24360) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (24360) IMG_UI: JPEG图片更新成功: default.jpg +I (26450) DZBJ_BAT: ADC原始值=2827, ADC电压=2364mV, 电池电压=4728mV, 电量=100% +I (30740) DZBJ_BTN: KEY2单击:开蓝牙 → 配对界面 +I (30740) DZBJ_BLE: BLE广播已启动 +I (30740) DZBJ_BLE: Advertising start successfully +I (31450) DZBJ_BAT: ADC原始值=2815, ADC电压=2354mV, 电池电压=4708mV, 电量=100% +I (36450) DZBJ_BAT: ADC原始值=2826, ADC电压=2362mV, 电池电压=4724mV, 电量=100% +I (41450) DZBJ_BAT: ADC原始值=2827, ADC电压=2364mV, 电池电压=4728mV, 电量=100% +I (45420) DZBJ_BLE: Connected, conn_id 0, remote 65:cd:2c:22:b2:72 +I (45420) DZBJ_BLE: BLE 5.0 disabled, keep legacy 1M PHY for compatibility +I (45780) DZBJ_BLE: Connection params update, status 0, conn_int 12, latency 0, timeout 400 +I (45940) DZBJ_BLE: Connection params update, status 0, conn_int 6, latency 0, timeout 500 +I (46080) DZBJ_BLE: Connection params update, status 0, conn_int 12, latency 0, timeout 400 +I (46450) DZBJ_BAT: ADC原始值=2825, ADC电压=2362mV, 电池电压=4724mV, 电量=100% +I (46480) DZBJ_BLE: 处理前序数据 +I (46480) DZBJ_BLE: 图片数据长度:51328 +I (46840) DZBJ_BLE: 传输通道建立成功,数据指针:0x3c5b97b0,文件名称:face_1780309362.jpg,文件大小:51328 +I (46840) DZBJ_BLE: APP传图:跳转到Update界面 +I (46840) DZBJ_BTN: 按键上下文切换: 8 +I (46840) DZBJ_BLE: 获取到数据:第:1包,长度:509,是否结束:0 +I (49080) DZBJ_BLE: 获取到数据:第:101包,长度:509,是否结束:0 +I (49120) DZBJ_BLE: 获取到数据:第:102包,长度:123,是否结束:1 +I (49120) DZBJ_BLE: 数据接收完毕,累计:51328字节,预期:51328字节,首字节:FF D8 +I (49470) DZBJ_BLE: 图片接收成功,数据直通显示(51328字节) +I (49470) IMG_LIST: 图片列表已初始化,跳过 +I (49470) IMG_UI: 准备显示图片: face_1780309362.jpg, 路径: /spiflash/face_1780309362.jpg +I (49480) IMG_UI: 文件大小: 51328 字节 +I (49480) IMG_UI: 释放之前的图片数据 +I (49790) IMG_UI: 图片解码成功,宽度: 360, 高度: 360 +I (49790) IMG_UI: JPEG图片更新成功: face_1780309362.jpg +I (49790) IMG_LIST: BLE导航到ScreenImg显示: face_1780309362.jpg +I (49790) DZBJ_BTN: 按键上下文切换: 1 +W (50170) BT_APPL: gattc_conn_cb: if=4 st=0 id=4 rsn=0x13 +W (50170) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x13 dev_find 1 +I (50170) DZBJ_BLE: Disconnected, remote 65:cd:2c:22:b2:72, reason 0x13 +I (50170) BLE_XFER: GATTC断开连接 +I (50180) DZBJ_BLE: Advertising start successfully +I (51450) DZBJ_BAT: ADC原始值=2826, ADC电压=2362mV, 电池电压=4724mV, 电量=100% diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index a1a52fa..f82af10 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -16,7 +16,6 @@ set(SOURCES "audio_codecs/audio_codec.cc" "iot/thing_manager.cc" "system_info.cc" "application.cc" - "ota.cc" "settings.cc" "background_task.cc" "bluetooth_provisioning.cc" # 蓝牙配网实现 @@ -28,10 +27,9 @@ set(SOURCES "audio_codecs/audio_codec.cc" "dzbj/pages_pwm.c" "dzbj/dzbj_init.c" # 含 dzbj_hw_display_init(公共硬件初始化);dzbj_display_init 函数体内部 #ifdef 包裹 "dzbj/fatfs.c" # DecodeImg 公共(AI 模式 BG GIF PoC 也用);吧唧专用函数 fatfs_init/list 等无副作用 - # Phase 10: ai_chat_ui 双轨编译 - # CONFIG_BAJI_BADGE_MODE=y → ai_chat_ui.c (LVGL 版) - # CONFIG_BAJI_BADGE_MODE=n → ai_chat_ui_eaf.c (esp_emote_gfx 版) - # 这两个在下方 if(CONFIG_BAJI_BADGE_MODE) 块中条件编译 + # Phase 10: RTC 数字人固定使用 EAF UI + # CONFIG_BAJI_BADGE_MODE 仅控制电子吧唧模块是否额外编译 + "dzbj/ai_chat_ui_eaf.c" "fonts/font_puhui_20_4.c" # 阿里巴巴普惠体 20px 4bpp(GB2312 简体中文) # SquareLine Studio UI 公共文件(AI 模式也使用) "ui/ui.c" @@ -56,27 +54,7 @@ set(SOURCES "audio_codecs/audio_codec.cc" "ui/images/ui_img_s12_png.c" "ui/images/ui_img_s13_png.c" "ui/images/ui_img_s14_png.c" - # emoji 表情图片资源(旧 PNG 静态表情,保留备用) - "ui/images/ui_img_neutral_png.c" - "ui/images/ui_img_happy_png.c" - "ui/images/ui_img_sad_png.c" - "ui/images/ui_img_angry_png.c" - "ui/images/ui_img_crying_png.c" - "ui/images/ui_img_funny_png.c" - "ui/images/ui_img_laughing_png.c" - # GIF 动画表情资源(压缩优化,200x89) - "ui/images/my_emotion/emotion_angry_200_89.c" - "ui/images/my_emotion/emotion_blink1_200_89.c" - "ui/images/my_emotion/emotion_blink_fast_200_89.c" - "ui/images/my_emotion/emotion_blink_slow_200_89.c" - "ui/images/my_emotion/emotion_dizzy_200_89.c" - "ui/images/my_emotion/emotion_happy_200_89.c" - "ui/images/my_emotion/emotion_sad_200_89.c" - "ui/images/my_emotion/emotion_sleep_200_89.c" - # GIF 动画图标资源(压缩优化,45x45,叠加在表情上) - "ui/images/my_icon/icon_emotion_confused_45.c" - "ui/images/my_icon/icon_emotion_sleep_45.c" - "ui/images/my_icon/icon_emotion_thinking_45.c" + # 旧 LVGL/GIF 表情资源由 ai_chat_ui.c 使用;当前 RTC 固定走 EAF UI,不再编译进固件。 ) set(INCLUDE_DIRS "." "display" "audio_codecs" "protocols" "audio_processing" "audio" "dzbj" "ui") @@ -210,7 +188,8 @@ file(GLOB BOARD_SOURCES list(APPEND SOURCES ${BOARD_SOURCES}) # === 电子吧唧专属 srcs(条件编译,CONFIG_BAJI_BADGE_MODE=n 时不参与编译)=== -# 源代码文件全部保留在仓库中,仅通过 Kconfig 开关控制是否进入编译队列 +# 源代码文件全部保留在仓库中,仅通过 Kconfig 开关控制是否进入编译队列。 +# RTC 数字人始终使用 ai_chat_ui_eaf.c,避免开启双模式后退回 LVGL/GIF 旧链路。 if(CONFIG_BAJI_BADGE_MODE) list(APPEND SOURCES # dzbj 吧唧专属模块 @@ -221,11 +200,6 @@ if(CONFIG_BAJI_BADGE_MODE) "dzbj/dzbj_button.c" "dzbj/dzbj_battery.c" "dzbj/ble_transfer.c" - # 吧唧模式 LVGL UI(AI 对话屏幕 + 各种 PoC) - "dzbj/ai_chat_ui.c" - "dzbj/sprite_demo.c" - "dzbj/dual_gif_demo.c" - "dzbj/bg_gif_demo.c" # SquareLine Studio 吧唧专属 UI 屏幕(9 个) "ui/screens/ui_ScreenHome.c" "ui/screens/ui_ScreenImg.c" @@ -237,11 +211,6 @@ if(CONFIG_BAJI_BADGE_MODE) "ui/screens/ui_ScreenSharing.c" "ui/screens/ui_ScreenReceiving.c" ) -else() - # Phase 10: 数字人模式 EAF UI(替代 LVGL 版 ai_chat_ui.c + bg_gif_demo.c) - list(APPEND SOURCES - "dzbj/ai_chat_ui_eaf.c" - ) endif() if(CONFIG_CONNECTION_TYPE_MQTT_UDP) @@ -293,7 +262,7 @@ idf_component_register(SRCS ${SOURCES} INCLUDE_DIRS ${INCLUDE_DIRS} # 路径 D'' AEC: esp-sr 提供 esp_aec.h 底层同步 API (aec_create/aec_process/aec_destroy) # 配合软件 loopback ref (DAC PCM copy 到 ring buffer) 实现设备端 AEC - REQUIRES esp_wifi esp_netif esp_event nvs_flash bt spi_flash app_update efuse volc_engine_rtc_lite common zlib esp_lcd driver esp-sr + REQUIRES esp_wifi esp_netif esp_event nvs_flash bt spi_flash esp_app_format efuse volc_engine_rtc_lite common zlib esp_lcd driver esp-sr WHOLE_ARCHIVE ) diff --git a/main/application.cc b/main/application.cc index 5b77a42..8917993 100644 --- a/main/application.cc +++ b/main/application.cc @@ -103,7 +103,6 @@ Application::Application() { dialog_watchdog_task_handle_ = nullptr; // 初始化对话看门狗任务句柄 clock_ticks_ = 0; // 初始化时钟计数 main_loop_task_handle_ = nullptr; // 初始化主循环任务句柄 - check_new_version_task_handle_ = nullptr; // 初始化版本检查任务句柄 audio_loop_task_handle_ = nullptr; // 初始化音频循环任务句柄 esp_timer_create_args_t clock_timer_args = { @@ -322,106 +321,7 @@ void Application::ApplyAEC(std::vector& mic_inout) { } void Application::CheckNewVersion() { - // ESP_LOGI(TAG, "OTA版本检查已临时禁用"); - // return; - auto& board = Board::GetInstance(); - auto display = board.GetDisplay(); - // Check if there is a new firmware version available - ota_.SetPostData(board.GetJson());// 发送当前设备的JSON数据到OTA服务器,用于检查是否有新的固件版本 包办板载信息 BOARD_TYPE - - const int MAX_RETRY = 10; - int retry_count = 0; - - while (true) { - if (!ota_.CheckVersion()) { - retry_count++; - if (retry_count >= MAX_RETRY) { - ESP_LOGE(TAG, "Too many retries, exit version check"); - return; - } - ESP_LOGW(TAG, "Check new version failed, retry in %d seconds (%d/%d)", 60, retry_count, MAX_RETRY); - vTaskDelay(pdMS_TO_TICKS(60000)); - continue; - } - retry_count = 0; - - if (ota_.HasNewVersion()) { - Alert(Lang::Strings::OTA_UPGRADE, Lang::Strings::UPGRADING, "happy", Lang::Sounds::P3_UPGRADE); - // Wait for the chat state to be idle - do { - vTaskDelay(pdMS_TO_TICKS(3000)); - } while (GetDeviceState() != kDeviceStateIdle); - - // Use main task to do the upgrade, not cancelable - Schedule([this, display]() { - SetDeviceState(kDeviceStateUpgrading); - - display->SetIcon(FONT_AWESOME_DOWNLOAD); - std::string message = std::string(Lang::Strings::NEW_VERSION) + ota_.GetFirmwareVersion(); - display->SetChatMessage("system", message.c_str()); - - auto& board = Board::GetInstance(); - board.SetPowerSaveMode(false);// 关闭低功耗模式 -#if CONFIG_USE_WAKE_WORD_DETECT || CONFIG_USE_CUSTOM_WAKE_WORD - wake_word_detect_.Stop(); -#endif - // 预先关闭音频输出,避免升级过程有音频操作 - auto codec = board.GetAudioCodec(); - codec->EnableInput(false); - codec->EnableOutput(false); - { - std::lock_guard lock(mutex_); - audio_decode_queue_.clear(); - } - background_task_->WaitForCompletion(); - delete background_task_; - background_task_ = nullptr; - vTaskDelay(pdMS_TO_TICKS(1000)); - - ota_.StartUpgrade([display](int progress, size_t speed) { - char buffer[64]; - snprintf(buffer, sizeof(buffer), "%d%% %zuKB/s", progress, speed / 1024); - display->SetChatMessage("system", buffer); - }); - - // If upgrade success, the device will reboot and never reach here - display->SetStatus(Lang::Strings::UPGRADE_FAILED); - ESP_LOGI(TAG, "Firmware upgrade failed..."); - vTaskDelay(pdMS_TO_TICKS(3000)); - Reboot(); - }); - - return; - } - - // No new version, mark the current version as valid - ota_.MarkCurrentVersionValid(); - std::string message = std::string(Lang::Strings::VERSION) + ota_.GetCurrentVersion(); - display->ShowNotification(message.c_str()); - - // 检查是否有设备激活码 - // if (ota_.HasActivationCode()) { - // // Activation code is valid - // SetDeviceState(kDeviceStateActivating);//设置设备状态为激活中 - // // ShowActivationCode();//显示设备激活码 - - // // Check again in 60 seconds or until the device is idle - // for (int i = 0; i < 60; ++i) { - // if (device_state_ == kDeviceStateIdle) { - // break; - // } - // vTaskDelay(pdMS_TO_TICKS(1000)); - // } - // continue; - // } - - SetDeviceState(kDeviceStateIdle); - display->SetChatMessage("system", ""); - ResetDecoder(); - PlaySound(Lang::Sounds::P3_SUCCESS); - // Exit the loop if upgrade or idle - break; - } + ESP_LOGI(TAG, "OTA disabled in this dual-mode firmware"); } // 取消设备激活码播报,当前设备绑定使用Wi-Fi的Mac地址进行绑定 @@ -1945,20 +1845,7 @@ void Application::Start() { }); protocol_->Start(); - // Check for new firmware version or get the MQTT broker address - ota_.SetCheckVersionUrl(CONFIG_OTA_VERSION_URL); - ota_.SetHeader("Device-Id", SystemInfo::GetMacAddress().c_str()); - ota_.SetHeader("Client-Id", board.GetUuid()); - ota_.SetHeader("Accept-Language", Lang::CODE); - auto app_desc = esp_app_get_description(); - ota_.SetHeader("User-Agent", std::string(BOARD_NAME "/") + app_desc->version); - - // 禁用自动OTA - 注释掉下面的任务创建OTA自动升级 - xTaskCreate([](void* arg) { - Application* app = (Application*)arg; - app->CheckNewVersion(); - vTaskDelete(NULL); - }, "check_new_version", 4096 * 2, this, 2, nullptr); + // 当前双模式固件不启用 OTA,避免创建检查任务并占用运行时资源。 #if CONFIG_USE_AUDIO_PROCESSOR @@ -2227,18 +2114,6 @@ void Application::OnClockTimer() { //ESP_LOGI(TAG, "此设备角色为: %s",CONFIG_DEVICE_ROLE); // ESP_LOGI(TAG, "此设备角色为: KAKA 1028 升级成功!"); - // 如果我们已经同步了服务器时间,如果设备处于空闲状态,请将状态设置为时钟“HH:MM” - if (ota_.HasServerTime()) { - if (device_state_ == kDeviceStateIdle) { - Schedule([this]() { - // Set status to clock "HH:MM" - time_t now = time(NULL);// 获取当前时间 - char time_str[64];// 时间字符串缓冲区 - strftime(time_str, sizeof(time_str), "%H:%M ", localtime(&now));// 格式化时间字符串 - Board::GetInstance().GetDisplay()->SetStatus(time_str);// 设置显示状态 - }); - } - } } } @@ -4891,4 +4766,3 @@ void Application::WakeFromHibernate() { ESP_LOGI(TAG, "✓ 唤醒完成,已触发 RTC 重连"); } - diff --git a/main/application.h b/main/application.h index 489e951..b071d26 100644 --- a/main/application.h +++ b/main/application.h @@ -17,7 +17,6 @@ #include "protocol.h" #include "websocket_protocol.h" -#include "ota.h" #include "background_task.h" #include "audio/simple_pipeline.h" // #include "ble_service.h" // BLE JSON Service 暂不使用 @@ -134,7 +133,6 @@ private: #if CONFIG_USE_AUDIO_PROCESSOR AudioProcessor audio_processor_; #endif - Ota ota_; std::mutex mutex_; std::list> main_tasks_; std::unique_ptr protocol_; @@ -186,7 +184,6 @@ private: TaskHandle_t dialog_watchdog_task_handle_; // 对话看门狗任务句柄 int clock_ticks_; TaskHandle_t main_loop_task_handle_; - TaskHandle_t check_new_version_task_handle_; // Audio encode / decode TaskHandle_t audio_loop_task_handle_; diff --git a/main/boards/common/board.cc b/main/boards/common/board.cc index 87c83b1..a80fc3a 100644 --- a/main/boards/common/board.cc +++ b/main/boards/common/board.cc @@ -5,7 +5,7 @@ #include "assets/lang_config.h" #include -#include +#include #include #include @@ -151,8 +151,7 @@ std::string Board::GetJson() { json += "],"; json += "\"ota\":{"; - auto ota_partition = esp_ota_get_running_partition(); - json += "\"label\":\"" + std::string(ota_partition->label) + "\""; + json += "\"label\":\"disabled\""; json += "},"; json += "\"board\":" + GetBoardJson(); @@ -160,4 +159,4 @@ std::string Board::GetJson() { // Close the JSON object json += "}"; return json; -} \ No newline at end of file +} diff --git a/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc b/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc index 0196a7f..e871fd2 100644 --- a/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc +++ b/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc @@ -59,7 +59,6 @@ extern "C" void init_spiffs_image_list(void); // AI 对话屏幕初始化(纯 C,避免 lv_font_t 冲突) extern "C" void ai_chat_screen_init(void); extern "C" void ai_chat_resume_animation(void); -// 配网模式专用最小化初始化 (只显示文字, 不加载 EAF 资源 / 不创建 anim) extern "C" void ai_chat_screen_init_provisioning(const char* hint_text); // 背光初始化(pages_pwm.h 包含 LVGL 头文件,不能直接 include) @@ -253,24 +252,17 @@ public: #endif { // ===== AI 对话模式 ===== - // 仅硬件+LVGL 初始化(不加载 SquareLine UI) + // 仅初始化 LCD/Touch 硬件。LVGL 只属于电子吧唧模式,AI/配网路径由 EAF 或纯提示接管。 dzbj_hw_display_init(codec_i2c_bus_); - // 配网模式跳过 EAF 数字人初始化, 节省 ~30 KB DRAM + 4.32 MB PSRAM, - // 让 BLE Bluedroid stack 有足够 DRAM 完成 advertising data malloc. - // 配网期间用户操作只需要听音效 + 看简单提示, 不需要数字人界面. if (WifiBoard::NeedsProvisioning()) { - // 配网模式: EAF 最小化初始化 (仅显示文字, 不加载 8 张 EAF 资源 + 不创建 anim) - // 省 4.32 MB PSRAM (EAF 资源) + 数字人 anim 的 DRAM 占用 - // 保留 ~30 KB DRAM 给 gfx flush buffer (启动时预分配, 不抢 BLE 初始化) - // 显示"请使用APP\n蓝牙配网~"提示 - // 跟 adaptation_dzbjImg_shar (用 LVGL 显示 GIF + 配网) 同思路, 用 EAF 替代 LVGL - ESP_LOGI(TAG, "🔵 配网模式: EAF 最小化初始化, 显示配网提示文字"); - ai_chat_screen_init_provisioning("请使用APP\n蓝牙配网~"); + // 配网模式只启用 EAF 最小显示栈:renderer + label,不加载数字人资源和动画。 + ESP_LOGI(TAG, "🔵 配网模式: 使用 EAF 最小显示栈显示中文提示"); + ai_chat_screen_init_provisioning("请使用APP\n蓝牙配网"); } else { // 加载 AI 对话专用屏幕 ai_chat_screen_init(); + vTaskDelay(pdMS_TO_TICKS(100)); // 等待首帧渲染 } - vTaskDelay(pdMS_TO_TICKS(100)); // 等待首帧渲染 pwm_init(); // 点亮背光 ESP_LOGI(TAG, "🤖 AI对话模式启动"); diff --git a/main/dzbj/dzbj_ble.c b/main/dzbj/dzbj_ble.c index 60a3f28..1e812bd 100644 --- a/main/dzbj/dzbj_ble.c +++ b/main/dzbj/dzbj_ble.c @@ -454,12 +454,16 @@ 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,不影响兼容性) + // BLE 5.0 开启时请求 2M PHY;RTC 双模式默认关闭 BLE 5.0,走 legacy 1M 保配网稳定。 +#if CONFIG_BT_BLE_50_FEATURES_SUPPORTED 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); +#else + ESP_LOGI(CONN_TAG, "BLE 5.0 disabled, keep legacy 1M PHY for compatibility"); +#endif break; } case ESP_GATTS_DISCONNECT_EVT: diff --git a/main/dzbj/dzbj_init.c b/main/dzbj/dzbj_init.c index e6e2aa6..ff0ca6b 100644 --- a/main/dzbj/dzbj_init.c +++ b/main/dzbj/dzbj_init.c @@ -12,10 +12,9 @@ #define TAG "DZBJ" -// 仅硬件+LVGL 初始化(不加载 SquareLine UI,不点亮背光) -// -// Phase 10: 数字人 EAF 模式(CONFIG_BAJI_BADGE_MODE=n)下跳过 LVGL 初始化 -// 让 esp_emote_gfx 接管 panel_handle,避免双框架冲突 +// 仅 LCD/Touch 硬件初始化,不启动 LVGL。 +// 双模式固件中 CONFIG_BAJI_BADGE_MODE 只是"支持电子吧唧"的编译开关, +// 不能用它判断当前运行模式;AI/EAF/配网路径必须避免初始化 LVGL。 void dzbj_hw_display_init(i2c_master_bus_handle_t i2c_bus) { ESP_LOGI(TAG, "开始初始化显示硬件..."); @@ -34,15 +33,7 @@ void dzbj_hw_display_init(i2c_master_bus_handle_t i2c_bus) { ESP_LOGI(TAG, "屏幕触摸已禁用 (DZBJ_ENABLE_TOUCH=0)"); #endif -#ifdef CONFIG_BAJI_BADGE_MODE - // 4. LVGL 初始化(仅吧唧模式) - lvgl_lcd_init(); - ESP_LOGI(TAG, "LVGL 初始化完成"); -#else - // Phase 10: 数字人 EAF 模式下不初始化 LVGL - // esp_emote_gfx 会在 ai_chat_screen_init 中接管 panel_handle - ESP_LOGI(TAG, "数字人 EAF 模式: 跳过 LVGL 初始化,等待 esp_emote_gfx 接管"); -#endif + ESP_LOGI(TAG, "硬件初始化完成,跳过 LVGL,等待上层显示管线接管"); } #ifdef CONFIG_BAJI_BADGE_MODE @@ -50,6 +41,10 @@ void dzbj_hw_display_init(i2c_master_bus_handle_t i2c_bus) { void dzbj_display_init(i2c_master_bus_handle_t i2c_bus) { dzbj_hw_display_init(i2c_bus); + // 电子吧唧模式才启动 LVGL + SquareLine UI。 + lvgl_lcd_init(); + ESP_LOGI(TAG, "LVGL 初始化完成"); + // SquareLine UI 初始化 ui_init(); ESP_LOGI(TAG, "UI 初始化完成"); diff --git a/main/dzbj/dzbj_init.h b/main/dzbj/dzbj_init.h index 2622a99..c9b3a2b 100644 --- a/main/dzbj/dzbj_init.h +++ b/main/dzbj/dzbj_init.h @@ -14,8 +14,8 @@ extern "C" { void dzbj_display_init(i2c_master_bus_handle_t i2c_bus); #endif -// 仅硬件+LVGL 初始化(不加载 SquareLine UI,不点亮背光)—— 公共 -// 用于 AI 模式:调用方自行加载 AI 专用屏幕后再点亮背光 +// 仅 LCD/Touch 硬件初始化,不启动 LVGL。 +// 用于 AI/EAF 和配网模式:避免 LVGL 与 EAF 双显示栈抢内部 SRAM。 void dzbj_hw_display_init(i2c_master_bus_handle_t i2c_bus); #ifdef __cplusplus diff --git a/main/dzbj/pages.c b/main/dzbj/pages.c index a83cdff..03b2834 100644 --- a/main/dzbj/pages.c +++ b/main/dzbj/pages.c @@ -327,6 +327,9 @@ void img_loop_task(void *pvParameters) { while((entry = readdir(dir)) != NULL && file_count < 10) { // 检查是否是图片文件(.jpg, .jpeg, .png等) const char *name = entry->d_name; + if(strcmp(name, "Background_360x360.jpg") == 0) { + continue; + } int len = strlen(name); if(len > 4) { const char *ext = name + len - 4; @@ -417,6 +420,9 @@ void init_spiffs_image_list(void) { while((entry = readdir(dir)) != NULL && spiffs_image_count < MAX_IMAGE_FILES) { // 检查是否是图片文件(.jpg, .jpeg, .png等) const char *name = entry->d_name; + if(strcmp(name, "Background_360x360.jpg") == 0) { + continue; + } int len = strlen(name); if(len > 4 && len < MAX_FILENAME_LEN) { const char *ext = name + len - 4; diff --git a/main/ota.h b/main/ota.h index 7f7507a..6441ba5 100644 --- a/main/ota.h +++ b/main/ota.h @@ -4,22 +4,23 @@ #include #include #include +#include class Ota { public: - Ota(); - ~Ota(); + Ota() = default; + ~Ota() = default; - void SetCheckVersionUrl(std::string check_version_url); - void SetHeader(const std::string& key, const std::string& value); - void SetPostData(const std::string& post_data); - bool CheckVersion(); - bool HasNewVersion() { return has_new_version_; } - bool HasMqttConfig() { return has_mqtt_config_; } - bool HasActivationCode() { return has_activation_code_; } - bool HasServerTime() { return has_server_time_; } - void StartUpgrade(std::function callback); - void MarkCurrentVersionValid(); + void SetCheckVersionUrl(std::string check_version_url) { check_version_url_ = std::move(check_version_url); } + void SetHeader(const std::string& key, const std::string& value) { headers_[key] = value; } + void SetPostData(const std::string& post_data) { post_data_ = post_data; } + bool CheckVersion() { return false; } + bool HasNewVersion() { return false; } + bool HasMqttConfig() { return false; } + bool HasActivationCode() { return false; } + bool HasServerTime() { return false; } + void StartUpgrade(std::function callback) {} + void MarkCurrentVersionValid() {} const std::string& GetFirmwareVersion() const { return firmware_version_; } const std::string& GetCurrentVersion() const { return current_version_; } @@ -39,11 +40,6 @@ private: std::string firmware_url_; std::string post_data_; std::map headers_; - - void Upgrade(const std::string& firmware_url); - std::function upgrade_callback_; - std::vector ParseVersion(const std::string& version); - bool IsNewVersionAvailable(const std::string& currentVersion, const std::string& newVersion); }; #endif // _OTA_H diff --git a/main/system_info.cc b/main/system_info.cc index a1ce792..fd7cdc2 100644 --- a/main/system_info.cc +++ b/main/system_info.cc @@ -7,7 +7,6 @@ #include #include #include -#include #define TAG "SystemInfo" @@ -133,4 +132,3 @@ exit: //Common return path free(end_array); return ret; } - diff --git a/partitions.csv b/partitions.csv index be43545..134d82a 100644 --- a/partitions.csv +++ b/partitions.csv @@ -1,8 +1,6 @@ # ESP-IDF Partition Table # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x4000, -otadata, data, ota, 0xd000, 0x2000, phy_init, data, phy, 0xf000, 0x1000, -ota_0, app, ota_0, 0x10000, 0x580000, -ota_1, app, ota_1, 0x590000, 0x580000, -storage, data, spiffs, 0xB10000, 0x4F0000, +factory, app, factory, 0x10000, 0x900000, +storage, data, spiffs, 0x910000, 0x6F0000, diff --git a/sdkconfig b/sdkconfig index a5a3dcf..c340fb4 100644 --- a/sdkconfig +++ b/sdkconfig @@ -587,7 +587,7 @@ CONFIG_CONNECTION_TYPE_VOLC_RTC=y # # Baji RTC Toy Configuration # -# CONFIG_BAJI_BADGE_MODE is not set +CONFIG_BAJI_BADGE_MODE=y # end of Baji RTC Toy Configuration CONFIG_WEBSOCKET_URL="wss://xiaozhi-dev-api.goods.fun/xiaozhi/v1" @@ -1029,18 +1029,18 @@ CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2 # end of BT DEBUG LOG LEVEL -CONFIG_BT_ACL_CONNECTIONS=4 -CONFIG_BT_MULTI_CONNECTION_ENBALE=y +CONFIG_BT_ACL_CONNECTIONS=1 +# CONFIG_BT_MULTI_CONNECTION_ENBALE is not set CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y # CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY is not set CONFIG_BT_SMP_ENABLE=y -CONFIG_BT_SMP_MAX_BONDS=15 +CONFIG_BT_SMP_MAX_BONDS=2 # 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_42_FEATURES_SUPPORTED=y -CONFIG_BT_BLE_42_DTM_TEST_EN=y +# CONFIG_BT_BLE_42_DTM_TEST_EN is not set CONFIG_BT_BLE_42_ADV_EN=y CONFIG_BT_BLE_42_SCAN_EN=y CONFIG_BT_BLE_VENDOR_HCI_EN=y @@ -1052,8 +1052,8 @@ CONFIG_BT_BLE_VENDOR_HCI_EN=y # Controller Options # CONFIG_BT_CTRL_MODE_EFF=1 -CONFIG_BT_CTRL_BLE_MAX_ACT=6 -CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=6 +CONFIG_BT_CTRL_BLE_MAX_ACT=2 +CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=2 CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0 CONFIG_BT_CTRL_PINNED_TO_CORE_0=y # CONFIG_BT_CTRL_PINNED_TO_CORE_1 is not set @@ -1061,7 +1061,7 @@ CONFIG_BT_CTRL_PINNED_TO_CORE=0 CONFIG_BT_CTRL_HCI_MODE_VHCI=y # CONFIG_BT_CTRL_HCI_MODE_UART_H4 is not set CONFIG_BT_CTRL_HCI_TL=1 -CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30 +CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=10 CONFIG_BT_BLE_CCA_MODE_NONE=y # CONFIG_BT_BLE_CCA_MODE_HW is not set # CONFIG_BT_BLE_CCA_MODE_SW is not set @@ -1103,7 +1103,7 @@ CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DEVICE=y # CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DATA is not set # CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DATA_DEVICE is not set CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0 -CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100 +CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=10 CONFIG_BT_CTRL_DUPL_SCAN_CACHE_REFRESH_PERIOD=0 # CONFIG_BT_CTRL_BLE_MESH_SCAN_DUPL_EN is not set # CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EN is not set @@ -1134,7 +1134,7 @@ CONFIG_BT_CTRL_LE_PING_EN=y # end of BLE disconnects when Instant Passed (0x28) occurs # CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY is not set -CONFIG_BT_CTRL_DTM_ENABLE=y +# CONFIG_BT_CTRL_DTM_ENABLE is not set CONFIG_BT_CTRL_BLE_MASTER=y # CONFIG_BT_CTRL_BLE_TEST is not set CONFIG_BT_CTRL_BLE_SCAN=y @@ -1661,7 +1661,7 @@ CONFIG_SPIRAM_USE_MALLOC=y # CONFIG_SPIRAM_MEMTEST is not set CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=8192 CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y -CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536 CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY=y # end of SPI RAM config diff --git a/sdkconfig.defaults b/sdkconfig.defaults index 7972ab6..59aca39 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -163,6 +163,16 @@ CONFIG_BT_STACK_NO_LOG=n CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=n CONFIG_BT_RESERVE_DRAM=0x10000 +CONFIG_BT_ACL_CONNECTIONS=1 +CONFIG_BT_MULTI_CONNECTION_ENBALE=n +CONFIG_BT_SMP_MAX_BONDS=2 +CONFIG_BT_CTRL_BLE_MAX_ACT=2 +CONFIG_BT_BLE_42_DTM_TEST_EN=n +CONFIG_BT_CTRL_DTM_ENABLE=n +CONFIG_BT_BLE_42_SCAN_EN=y +CONFIG_BT_CTRL_BLE_SCAN=y +CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=10 +CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=10 # BluFi 未被代码使用(两种模式均用自定义 GATT Server),关闭以减少无关兼容风险 CONFIG_BT_BLUFI_ENABLED=n @@ -182,4 +192,4 @@ CONFIG_LWIP_MAX_SOCKETS=20 # === Baji RTC Toy 模式开关 === # 数字人 RTC 单一形态固件:CONFIG_BAJI_BADGE_MODE=n # 双模式(AI + 电子吧唧)固件:CONFIG_BAJI_BADGE_MODE=y -CONFIG_BAJI_BADGE_MODE=n +CONFIG_BAJI_BADGE_MODE=y