STM32 WiFi and Bluetooth
While STMicroelectronics do offer STM32 MCUs with wireless functionality in their "W" family, for some truly baffling reason, they have never offered a MCU with [{WiFi]] functionality, and in this day and age that does seem quite remarkable. On Oct. 1, 2024, they announced a strategic partnership with Qualcomm development, no - not a WiFi enabled STM32 but a Module which could be hooked up to a STM32 MCU and some libraries supporting this library.
The ST67W611M1 Module
Towards the middle of 2025, the new module was finally announced, the "ST67W611M1xx" one.
ESP-01
To be added
ESP-32
To be added
Building the Slave firmware
Prerequisites
This section assumes a working and up-to-date ESP-IDF installation and some sort of ESP32 development board. We will be using one based on a ESP32-C3 (single core risc-v) module.
Having the installed and configured the ESP-IDF, load the configuration by running something like:
lth@ncpws04:~$ . ~/esp/esp-idf/export.sh
Creating, configuring and building
First step is to create a new project, which will be done automatically (assuming a working ESP-IDF installation):
lth@ncpws04:~/tmp$ idf.py create-project-from-example "espressif/esp_hosted:slave" Executing action: create-project-from-example NOTICE: Example "slave" successfully downloaded to /home/lth/tmp/slave Done
Next up, we will set our target MCU:
lth@ncpws04:~/tmp$ cd slave/ lth@ncpws04:~/tmp/slave$ idf.py set-target esp32c3 Adding "set-target"'s dependency "fullclean" to list of commands with default set of options. Executing action: fullclean Build directory '/home/lth/tmp/slave/build' not found. Nothing to clean. Executing action: set-target Set Target to: esp32c3, new sdkconfig will be created. Running cmake in directory /home/lth/tmp/slave/build Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=/home/lth/.espressif/python_env/idf6.0_py3.13_env/bin/python -DESP_PLATFORM=1 -DIDF_TARGET=esp32c3 -DCCACHE_ENABLE=0 /home/lth/tmp/slave"... -- Found Git: /usr/bin/git (found version "2.47.2") -- Minimal build - OFF -- The C compiler identification is GNU 15.1.0 -- The CXX compiler identification is GNU 15.1.0 -- The ASM compiler identification is GNU -- Found assembler: /home/lth/.espressif/tools/riscv32-esp-elf/esp-15.1.0_20250607/riscv32-esp-elf/bin/riscv32-esp-elf-gcc -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /home/lth/.espressif/tools/riscv32-esp-elf/esp-15.1.0_20250607/riscv32-esp-elf/bin/riscv32-esp-elf-gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /home/lth/.espressif/tools/riscv32-esp-elf/esp-15.1.0_20250607/riscv32-esp-elf/bin/riscv32-esp-elf-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- git rev-parse returned 'fatal: not a git repository (or any parent up to mount point /) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).' -- Could not use 'git describe' to determine PROJECT_VER. -- Building ESP-IDF components for target esp32c3 -- Project sdkconfig file /home/lth/tmp/slave/sdkconfig warning: the int symbol ESP_HOSTED_BT_UART_PORT_ESP32 (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:737) has a non-int range [BTDM_CTRL_HCI_UART_NO (undefined), BTDM_CTRL_HCI_UART_NO (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_BAUDRATE_ESP32 (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:743) has a non-int range [BTDM_CTRL_HCI_UART_BAUDRATE (undefined), BTDM_CTRL_HCI_UART_BAUDRATE (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_PORT (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:757) has a non-int range [BT_LE_HCI_UART_PORT (undefined), BT_LE_HCI_UART_PORT (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_TX_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:763) has a non-int range [BT_LE_HCI_UART_TX_PIN (undefined), BT_LE_HCI_UART_TX_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_RX_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:769) has a non-int range [BT_LE_HCI_UART_RX_PIN (undefined), BT_LE_HCI_UART_RX_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_RTS_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:775) has a non-int range [BT_LE_HCI_UART_RTS_PIN (undefined), BT_LE_HCI_UART_RTS_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_CTS_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:782) has a non-int range [BT_LE_HCI_UART_CTS_PIN (undefined), BT_LE_HCI_UART_CTS_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_BAUDRATE (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:789) has a non-int range [BT_LE_HCI_UART_BAUD (undefined), BT_LE_HCI_UART_BAUD (undefined)] Loading defaults file /home/lth/tmp/slave/sdkconfig.defaults... Loading defaults file /home/lth/tmp/slave/sdkconfig.defaults.esp32c3... /tmp/kconfgen_tmp5h6uq3x5:4 line was updated to CONFIG_SDIO_DAT2_DISABLED=n /tmp/kconfgen_tmp5h6uq3x5:9 line was updated to CONFIG_BT_BLUEDROID_ENABLED=n warning: unknown kconfig symbol 'ESP32_DEFAULT_CPU_FREQ_160' assigned to 'y' in /home/lth/tmp/slave/sdkconfig.defaults.esp32c3 warning: unknown kconfig symbol 'ESP32_DEFAULT_CPU_FREQ_MHZ' assigned to '160' in /home/lth/tmp/slave/sdkconfig.defaults.esp32c3 warning: unknown kconfig symbol 'SDIO_DAT2_DISABLED' assigned to 'n' in /home/lth/tmp/slave/sdkconfig.defaults.esp32c3 warning: unknown kconfig symbol 'BT_LE_SLEEP_ENABLE' assigned to 'y' in /home/lth/tmp/slave/sdkconfig.defaults.esp32c3 -- Adding linker script /home/lth/esp/esp-idf/components/riscv/ld/rom.api.ld -- Found Python3: /home/lth/.espressif/python_env/idf6.0_py3.13_env/bin/python (found version "3.13.5") found components: Interpreter -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS -- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS - Success -- USING O3 -- App "network_adapter" version: 1 -- Adding linker script /home/lth/tmp/slave/build/esp-idf/esp_system/ld/memory.ld -- Adding linker script /home/lth/tmp/slave/build/esp-idf/esp_system/ld/sections.ld.in -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.bt_funcs.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_cca.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_test.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3_bt_funcs.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libc.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libc-suboptimal_for_misaligned_mem.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -- Adding linker script /home/lth/esp/esp-idf/components/soc/esp32c3/ld/esp32c3.peripherals.ld -- Components: app_update bootloader bootloader_support bt console cxx driver efuse esp_app_format esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_bitscrambler esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_rmt esp_driver_sd_intf esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_tsens esp_driver_twai esp_driver_uart esp_driver_usb_serial_jtag esp_event esp_gdbstub esp_http_server esp_hw_support esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_ringbuf esp_rom esp_security esp_system esp_timer esp_vfs_console esp_wifi esptool_py freertos hal heap http_parser log lwip main mbedtls newlib nvs_flash partition_table protobuf-c protocomm pthread riscv sdmmc soc spi_flash vfs wpa_supplicant -- Component paths: /home/lth/esp/esp-idf/components/app_update /home/lth/esp/esp-idf/components/bootloader /home/lth/esp/esp-idf/components/bootloader_support /home/lth/esp/esp-idf/components/bt /home/lth/esp/esp-idf/components/console /home/lth/esp/esp-idf/components/cxx /home/lth/esp/esp-idf/components/driver /home/lth/esp/esp-idf/components/efuse /home/lth/esp/esp-idf/components/esp_app_format /home/lth/esp/esp-idf/components/esp_bootloader_format /home/lth/esp/esp-idf/components/esp_coex /home/lth/esp/esp-idf/components/esp_common /home/lth/esp/esp-idf/components/esp_driver_ana_cmpr /home/lth/esp/esp-idf/components/esp_driver_bitscrambler /home/lth/esp/esp-idf/components/esp_driver_dac /home/lth/esp/esp-idf/components/esp_driver_gpio /home/lth/esp/esp-idf/components/esp_driver_gptimer /home/lth/esp/esp-idf/components/esp_driver_i2c /home/lth/esp/esp-idf/components/esp_driver_i2s /home/lth/esp/esp-idf/components/esp_driver_ledc /home/lth/esp/esp-idf/components/esp_driver_mcpwm /home/lth/esp/esp-idf/components/esp_driver_parlio /home/lth/esp/esp-idf/components/esp_driver_pcnt /home/lth/esp/esp-idf/components/esp_driver_rmt /home/lth/esp/esp-idf/components/esp_driver_sd_intf /home/lth/esp/esp-idf/components/esp_driver_sdio /home/lth/esp/esp-idf/components/esp_driver_sdm /home/lth/esp/esp-idf/components/esp_driver_sdmmc /home/lth/esp/esp-idf/components/esp_driver_sdspi /home/lth/esp/esp-idf/components/esp_driver_spi /home/lth/esp/esp-idf/components/esp_driver_tsens /home/lth/esp/esp-idf/components/esp_driver_twai /home/lth/esp/esp-idf/components/esp_driver_uart /home/lth/esp/esp-idf/components/esp_driver_usb_serial_jtag /home/lth/esp/esp-idf/components/esp_event /home/lth/esp/esp-idf/components/esp_gdbstub /home/lth/esp/esp-idf/components/esp_http_server /home/lth/esp/esp-idf/components/esp_hw_support /home/lth/esp/esp-idf/components/esp_mm /home/lth/esp/esp-idf/components/esp_netif /home/lth/esp/esp-idf/components/esp_netif_stack /home/lth/esp/esp-idf/components/esp_partition /home/lth/esp/esp-idf/components/esp_phy /home/lth/esp/esp-idf/components/esp_pm /home/lth/esp/esp-idf/components/esp_ringbuf /home/lth/esp/esp-idf/components/esp_rom /home/lth/esp/esp-idf/components/esp_security /home/lth/esp/esp-idf/components/esp_system /home/lth/esp/esp-idf/components/esp_timer /home/lth/esp/esp-idf/components/esp_vfs_console /home/lth/esp/esp-idf/components/esp_wifi /home/lth/esp/esp-idf/components/esptool_py /home/lth/esp/esp-idf/components/freertos /home/lth/esp/esp-idf/components/hal /home/lth/esp/esp-idf/components/heap /home/lth/esp/esp-idf/components/http_parser /home/lth/esp/esp-idf/components/log /home/lth/esp/esp-idf/components/lwip /home/lth/tmp/slave/main /home/lth/esp/esp-idf/components/mbedtls /home/lth/esp/esp-idf/components/newlib /home/lth/esp/esp-idf/components/nvs_flash /home/lth/esp/esp-idf/components/partition_table /home/lth/esp/esp-idf/components/protobuf-c /home/lth/esp/esp-idf/components/protocomm /home/lth/esp/esp-idf/components/pthread /home/lth/esp/esp-idf/components/riscv /home/lth/esp/esp-idf/components/sdmmc /home/lth/esp/esp-idf/components/soc /home/lth/esp/esp-idf/components/spi_flash /home/lth/esp/esp-idf/components/vfs /home/lth/esp/esp-idf/components/wpa_supplicant -- Configuring done (3.9s) -- Generating done (0.3s) -- Build files have been written to: /home/lth/tmp/slave/build
We can now move on to configuring the project. Run:
lth@ncpws04:~/tmp/slave$ idf.py menuconfig
First step is to configure the "Serial flasher config" to match the flash available on the development board.
Final step is building and flashing:
lth@ncpws04:~/tmp/slave$ idf.py build flash monitor Executing action: all (aliases: build) Running ninja in directory /home/lth/tmp/slave/build Executing "ninja all"... [0/1] Re-running CMake... -- Minimal build - OFF -- git rev-parse returned 'fatal: not a git repository (or any parent up to mount point /) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).' -- Could not use 'git describe' to determine PROJECT_VER. -- Building ESP-IDF components for target esp32c3 -- Project sdkconfig file /home/lth/tmp/slave/sdkconfig warning: the int symbol ESP_HOSTED_BT_UART_PORT_ESP32 (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:737) has a non-int range [BTDM_CTRL_HCI_UART_NO (undefined), BTDM_CTRL_HCI_UART_NO (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_BAUDRATE_ESP32 (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:743) has a non-int range [BTDM_CTRL_HCI_UART_BAUDRATE (undefined), BTDM_CTRL_HCI_UART_BAUDRATE (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_PORT (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:757) has a non-int range [BT_LE_HCI_UART_PORT (undefined), BT_LE_HCI_UART_PORT (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_TX_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:763) has a non-int range [BT_LE_HCI_UART_TX_PIN (undefined), BT_LE_HCI_UART_TX_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_RX_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:769) has a non-int range [BT_LE_HCI_UART_RX_PIN (undefined), BT_LE_HCI_UART_RX_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_RTS_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:775) has a non-int range [BT_LE_HCI_UART_RTS_PIN (undefined), BT_LE_HCI_UART_RTS_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_CTS_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:782) has a non-int range [BT_LE_HCI_UART_CTS_PIN (undefined), BT_LE_HCI_UART_CTS_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_BAUDRATE (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:789) has a non-int range [BT_LE_HCI_UART_BAUD (undefined), BT_LE_HCI_UART_BAUD (undefined)] Loading defaults file /home/lth/tmp/slave/sdkconfig.defaults... Loading defaults file /home/lth/tmp/slave/sdkconfig.defaults.esp32c3... /tmp/kconfgen_tmp9nnp6qtj:4 line was updated to CONFIG_SDIO_DAT2_DISABLED=n /tmp/kconfgen_tmp9nnp6qtj:9 line was updated to CONFIG_BT_BLUEDROID_ENABLED=n warning: unknown kconfig symbol 'ESP32_DEFAULT_CPU_FREQ_160' assigned to 'y' in /home/lth/tmp/slave/sdkconfig.defaults.esp32c3 warning: unknown kconfig symbol 'ESP32_DEFAULT_CPU_FREQ_MHZ' assigned to '160' in /home/lth/tmp/slave/sdkconfig.defaults.esp32c3 warning: unknown kconfig symbol 'SDIO_DAT2_DISABLED' assigned to 'n' in /home/lth/tmp/slave/sdkconfig.defaults.esp32c3 warning: unknown kconfig symbol 'BT_LE_SLEEP_ENABLE' assigned to 'y' in /home/lth/tmp/slave/sdkconfig.defaults.esp32c3 -- Adding linker script /home/lth/esp/esp-idf/components/riscv/ld/rom.api.ld -- USING O3 -- App "network_adapter" version: 1 -- Adding linker script /home/lth/tmp/slave/build/esp-idf/esp_system/ld/memory.ld -- Adding linker script /home/lth/tmp/slave/build/esp-idf/esp_system/ld/sections.ld.in -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.bt_funcs.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_cca.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_test.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3_bt_funcs.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libc.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libc-suboptimal_for_misaligned_mem.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -- Adding linker script /home/lth/esp/esp-idf/components/soc/esp32c3/ld/esp32c3.peripherals.ld -- Components: app_update bootloader bootloader_support bt console cxx driver efuse esp_app_format esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_bitscrambler esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_rmt esp_driver_sd_intf esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_tsens esp_driver_twai esp_driver_uart esp_driver_usb_serial_jtag esp_event esp_gdbstub esp_http_server esp_hw_support esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_ringbuf esp_rom esp_security esp_system esp_timer esp_vfs_console esp_wifi esptool_py freertos hal heap http_parser log lwip main mbedtls newlib nvs_flash partition_table protobuf-c protocomm pthread riscv sdmmc soc spi_flash vfs wpa_supplicant -- Component paths: /home/lth/esp/esp-idf/components/app_update /home/lth/esp/esp-idf/components/bootloader /home/lth/esp/esp-idf/components/bootloader_support /home/lth/esp/esp-idf/components/bt /home/lth/esp/esp-idf/components/console /home/lth/esp/esp-idf/components/cxx /home/lth/esp/esp-idf/components/driver /home/lth/esp/esp-idf/components/efuse /home/lth/esp/esp-idf/components/esp_app_format /home/lth/esp/esp-idf/components/esp_bootloader_format /home/lth/esp/esp-idf/components/esp_coex /home/lth/esp/esp-idf/components/esp_common /home/lth/esp/esp-idf/components/esp_driver_ana_cmpr /home/lth/esp/esp-idf/components/esp_driver_bitscrambler /home/lth/esp/esp-idf/components/esp_driver_dac /home/lth/esp/esp-idf/components/esp_driver_gpio /home/lth/esp/esp-idf/components/esp_driver_gptimer /home/lth/esp/esp-idf/components/esp_driver_i2c /home/lth/esp/esp-idf/components/esp_driver_i2s /home/lth/esp/esp-idf/components/esp_driver_ledc /home/lth/esp/esp-idf/components/esp_driver_mcpwm /home/lth/esp/esp-idf/components/esp_driver_parlio /home/lth/esp/esp-idf/components/esp_driver_pcnt /home/lth/esp/esp-idf/components/esp_driver_rmt /home/lth/esp/esp-idf/components/esp_driver_sd_intf /home/lth/esp/esp-idf/components/esp_driver_sdio /home/lth/esp/esp-idf/components/esp_driver_sdm /home/lth/esp/esp-idf/components/esp_driver_sdmmc /home/lth/esp/esp-idf/components/esp_driver_sdspi /home/lth/esp/esp-idf/components/esp_driver_spi /home/lth/esp/esp-idf/components/esp_driver_tsens /home/lth/esp/esp-idf/components/esp_driver_twai /home/lth/esp/esp-idf/components/esp_driver_uart /home/lth/esp/esp-idf/components/esp_driver_usb_serial_jtag /home/lth/esp/esp-idf/components/esp_event /home/lth/esp/esp-idf/components/esp_gdbstub /home/lth/esp/esp-idf/components/esp_http_server /home/lth/esp/esp-idf/components/esp_hw_support /home/lth/esp/esp-idf/components/esp_mm /home/lth/esp/esp-idf/components/esp_netif /home/lth/esp/esp-idf/components/esp_netif_stack /home/lth/esp/esp-idf/components/esp_partition /home/lth/esp/esp-idf/components/esp_phy /home/lth/esp/esp-idf/components/esp_pm /home/lth/esp/esp-idf/components/esp_ringbuf /home/lth/esp/esp-idf/components/esp_rom /home/lth/esp/esp-idf/components/esp_security /home/lth/esp/esp-idf/components/esp_system /home/lth/esp/esp-idf/components/esp_timer /home/lth/esp/esp-idf/components/esp_vfs_console /home/lth/esp/esp-idf/components/esp_wifi /home/lth/esp/esp-idf/components/esptool_py /home/lth/esp/esp-idf/components/freertos /home/lth/esp/esp-idf/components/hal /home/lth/esp/esp-idf/components/heap /home/lth/esp/esp-idf/components/http_parser /home/lth/esp/esp-idf/components/log /home/lth/esp/esp-idf/components/lwip /home/lth/tmp/slave/main /home/lth/esp/esp-idf/components/mbedtls /home/lth/esp/esp-idf/components/newlib /home/lth/esp/esp-idf/components/nvs_flash /home/lth/esp/esp-idf/components/partition_table /home/lth/esp/esp-idf/components/protobuf-c /home/lth/esp/esp-idf/components/protocomm /home/lth/esp/esp-idf/components/pthread /home/lth/esp/esp-idf/components/riscv /home/lth/esp/esp-idf/components/sdmmc /home/lth/esp/esp-idf/components/soc /home/lth/esp/esp-idf/components/spi_flash /home/lth/esp/esp-idf/components/vfs /home/lth/esp/esp-idf/components/wpa_supplicant -- Configuring done (3.3s) -- Generating done (0.3s) -- Build files have been written to: /home/lth/tmp/slave/build [2/900] Generating /home/lth/tmp/slave/main/coprocessor_fw_version.h ************************************************************************************* Building ESP-Hosted-MCU FW :: 2.0.14 ************************************************************************************* [11/900] Generating ../../partition_table/partition-table.bin Partition table binary generated. Contents: ******************************************************************************* # ESP-IDF Partition Table # Name, Type, SubType, Offset, Size, Flags nvs,data,nvs,0x9000,16K, otadata,data,ota,0xd000,8K, phy_init,data,phy,0xf000,4K, factory,app,factory,0x10000,1M, ota_0,app,ota_0,0x110000,1M, ota_1,app,ota_1,0x210000,1M, ******************************************************************************* [301/900] Performing configure step for 'bootloader' -- Minimal build - OFF -- Building ESP-IDF components for target esp32c3 -- Project sdkconfig file /home/lth/tmp/slave/sdkconfig -- Adding linker script /home/lth/esp/esp-idf/components/riscv/ld/rom.api.ld -- Adding linker script /home/lth/esp/esp-idf/components/soc/esp32c3/ld/esp32c3.peripherals.ld -- Bootloader project name: "bootloader" version: 1 -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.bt_funcs.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libc.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libc-suboptimal_for_misaligned_mem.ld -- Adding linker script /home/lth/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -- Adding linker script /home/lth/esp/esp-idf/components/bootloader/subproject/main/ld/esp32c3/bootloader.ld -- Adding linker script /home/lth/esp/esp-idf/components/bootloader/subproject/main/ld/esp32c3/bootloader.rom.ld -- Components: bootloader bootloader_support efuse esp_app_format esp_bootloader_format esp_common esp_hw_support esp_rom esp_security esp_system esptool_py freertos hal log main micro-ecc newlib partition_table riscv soc spi_flash -- Component paths: /home/lth/esp/esp-idf/components/bootloader /home/lth/esp/esp-idf/components/bootloader_support /home/lth/esp/esp-idf/components/efuse /home/lth/esp/esp-idf/components/esp_app_format /home/lth/esp/esp-idf/components/esp_bootloader_format /home/lth/esp/esp-idf/components/esp_common /home/lth/esp/esp-idf/components/esp_hw_support /home/lth/esp/esp-idf/components/esp_rom /home/lth/esp/esp-idf/components/esp_security /home/lth/esp/esp-idf/components/esp_system /home/lth/esp/esp-idf/components/esptool_py /home/lth/esp/esp-idf/components/freertos /home/lth/esp/esp-idf/components/hal /home/lth/esp/esp-idf/components/log /home/lth/esp/esp-idf/components/bootloader/subproject/main /home/lth/esp/esp-idf/components/bootloader/subproject/components/micro-ecc /home/lth/esp/esp-idf/components/newlib /home/lth/esp/esp-idf/components/partition_table /home/lth/esp/esp-idf/components/riscv /home/lth/esp/esp-idf/components/soc /home/lth/esp/esp-idf/components/spi_flash -- Configuring done (4.3s) -- Generating done (0.0s) -- Build files have been written to: /home/lth/tmp/slave/build/bootloader [2/3] Generating binary image from built executable esptool.py v4.9.0 Creating esp32c3 image... Merged 2 ELF sections Successfully created esp32c3 image. Generated /home/lth/tmp/slave/build/bootloader/bootloader.bin [3/3] cd /home/lth/tmp/slave/build/bootloader/esp-idf/e...0x0 /home/lth/tmp/slave/build/bootloader/bootloader.bin Bootloader binary size 0x58a0 bytes. 0x2760 bytes (31%) free. [896/900] Generating esp-idf/esp_system/ld/sections.ld warning: the int symbol ESP_HOSTED_BT_UART_PORT_ESP32 (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:737) has a non-int range [BTDM_CTRL_HCI_UART_NO (undefined), BTDM_CTRL_HCI_UART_NO (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_BAUDRATE_ESP32 (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:743) has a non-int range [BTDM_CTRL_HCI_UART_BAUDRATE (undefined), BTDM_CTRL_HCI_UART_BAUDRATE (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_PORT (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:757) has a non-int range [BT_LE_HCI_UART_PORT (undefined), BT_LE_HCI_UART_PORT (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_TX_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:763) has a non-int range [BT_LE_HCI_UART_TX_PIN (undefined), BT_LE_HCI_UART_TX_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_RX_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:769) has a non-int range [BT_LE_HCI_UART_RX_PIN (undefined), BT_LE_HCI_UART_RX_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_RTS_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:775) has a non-int range [BT_LE_HCI_UART_RTS_PIN (undefined), BT_LE_HCI_UART_RTS_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_CTS_PIN (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:782) has a non-int range [BT_LE_HCI_UART_CTS_PIN (undefined), BT_LE_HCI_UART_CTS_PIN (undefined)] warning: the int symbol ESP_HOSTED_BT_UART_BAUDRATE (defined at /home/lth/tmp/slave/main/Kconfig.projbuild:789) has a non-int range [BT_LE_HCI_UART_BAUD (undefined), BT_LE_HCI_UART_BAUD (undefined)] [899/900] Generating binary image from built executable esptool.py v4.9.0 Creating esp32c3 image... Merged 1 ELF section Successfully created esp32c3 image. Generated /home/lth/tmp/slave/build/network_adapter.bin [900/900] cd /home/lth/tmp/slave/build/esp-idf/esptool_...table.bin /home/lth/tmp/slave/build/network_adapter.bin network_adapter.bin binary size 0xe50e0 bytes. Smallest app partition is 0x100000 bytes. 0x1af20 bytes (11%) free. Executing action: flash Serial port /dev/ttyS3 /dev/ttyS3 failed to connect: Could not open /dev/ttyS3, the port is busy or doesn't exist. (Could not configure port: (5, 'Input/output error')) Serial port /dev/ttyS2 /dev/ttyS2 failed to connect: Could not open /dev/ttyS2, the port is busy or doesn't exist. (Could not configure port: (5, 'Input/output error')) Serial port /dev/ttyS1 /dev/ttyS1 failed to connect: Could not open /dev/ttyS1, the port is busy or doesn't exist. (Could not configure port: (5, 'Input/output error')) Serial port /dev/ttyS0 Connecting....................... /dev/ttyS0 failed to connect: Failed to connect to Espressif device: No serial data received. For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html Serial port /dev/ttyACM0 Connecting.... Detecting chip type... ESP32-C3 Running ninja in directory /home/lth/tmp/slave/build Executing "ninja flash"... [1/5] cd /home/lth/tmp/slave/build/esp-idf/esptool_py &...table.bin /home/lth/tmp/slave/build/network_adapter.bin network_adapter.bin binary size 0xe50e0 bytes. Smallest app partition is 0x100000 bytes. 0x1af20 bytes (11%) free. [1/1] cd /home/lth/tmp/slave/build/bootloader/esp-idf/e...0x0 /home/lth/tmp/slave/build/bootloader/bootloader.bin Bootloader binary size 0x58a0 bytes. 0x2760 bytes (31%) free. [4/5] cd /home/lth/esp/esp-idf/components/esptool_py &&...esp/esp-idf/components/esptool_py/run_serial_tool.cmake esptool.py --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 4MB 0x10000 network_adapter.bin 0x8000 partition_table/partition-table.bin 0xd000 ota_data_initial.bin 0x0 bootloader/bootloader.bin esptool.py v4.9.0 Serial port /dev/ttyACM0 Connecting... Chip is ESP32-C3 (QFN32) (revision v0.4) Features: WiFi, BLE, Embedded Flash 4MB (XMC) Crystal is 40MHz USB mode: USB-Serial/JTAG MAC: dc:54:75:63:ad:30 Uploading stub... Running stub... Stub running... Changing baud rate to 460800 Changed. Configuring flash size... Flash will be erased from 0x00010000 to 0x000f5fff... Flash will be erased from 0x00008000 to 0x00008fff... Flash will be erased from 0x0000d000 to 0x0000efff... Flash will be erased from 0x00000000 to 0x00005fff... Compressed 938208 bytes to 517492... Writing at 0x000f11f4... (100 %) Wrote 938208 bytes (517492 compressed) at 0x00010000 in 7.3 seconds (effective 1023.4 kbit/s)... Hash of data verified. Compressed 3072 bytes to 138... Writing at 0x00008000... (100 %) Wrote 3072 bytes (138 compressed) at 0x00008000 in 0.0 seconds (effective 597.5 kbit/s)... Hash of data verified. Compressed 8192 bytes to 31... Writing at 0x0000d000... (100 %) Wrote 8192 bytes (31 compressed) at 0x0000d000 in 0.1 seconds (effective 790.0 kbit/s)... Hash of data verified. SHA digest in image updated Compressed 22688 bytes to 14287... Writing at 0x00000000... (100 %) Wrote 22688 bytes (14287 compressed) at 0x00000000 in 0.3 seconds (effective 555.6 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... Executing action: monitor Running idf_monitor in directory /home/lth/tmp/slave Executing "/home/lth/.espressif/python_env/idf6.0_py3.13_env/bin/python /home/lth/esp/esp-idf/tools/idf_monitor.py -p /dev/ttyACM0 -b 115200 --toolchain-prefix riscv32-esp-elf- --target esp32c3 --revision 3 --decode-panic backtrace /home/lth/tmp/slave/build/network_adapter.elf /home/lth/tmp/slave/build/bootloader/bootloader.elf -m '/home/lth/.espressif/python_env/idf6.0_py3.13_env/bin/python' '/home/lth/esp/esp-idf/tools/idf.py'"... --- esp-idf-monitor 1.6.2 on /dev/ttyACM0 115200 --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H I (29ESP-ROM:esp32c3-api1-20210207 Build:Feb 7 2021 rst:0x15 (USB_UART_CHIP_RESET),boot:0xc (SPI_FAST_FLASH_BOOT) Saved PC:0x4004c0d8 --- 0x4004c0d8: uart_tx_one_char_uart.part.0 in ROM SPIWP:0xee mode:DIO, clock div:1 load:0x3fcd5820,len:0x1594 load:0x403cbf10,len:0xc94 --- 0x403cbf10: esp_bootloader_get_description at /home/lth/esp/esp-idf/components/esp_bootloader_format/esp_bootloader_desc.c:39 load:0x403ce710,len:0x3618 --- 0x403ce710: esp_flash_encryption_enabled at /home/lth/esp/esp-idf/components/bootloader_support/src/flash_encrypt.c:89 entry 0x403cbf1a --- 0x403cbf1a: call_start_cpu0 at /home/lth/esp/esp-idf/components/bootloader/subproject/main/bootloader_start.c:25 I (24) boot: ESP-IDF v6.0-dev-1002-gbfe5caf58f 2nd stage bootloader I (24) boot: compile time Jul 12 2025 15:56:28 I (25) boot: chip revision: v0.4 I (26) boot: efuse block revision: v1.2 I (30) boot.esp32c3: SPI Speed : 80MHz I (34) boot.esp32c3: SPI Mode : DIO I (37) boot.esp32c3: SPI Flash Size : 4MB I (41) boot: Enabling RNG early entropy source... I (46) boot: Partition Table: I (48) boot: ## Label Usage Type ST Offset Length I (54) boot: 0 nvs WiFi data 01 02 00009000 00004000 I (61) boot: 1 otadata OTA data 01 00 0000d000 00002000 I (67) boot: 2 phy_init RF data 01 01 0000f000 00001000 I (74) boot: 3 factory factory app 00 00 00010000 00100000 I (80) boot: 4 ota_0 OTA app 00 10 00110000 00100000 I (87) boot: 5 ota_1 OTA app 00 11 00210000 00100000 I (94) boot: End of partition table I (97) boot: Defaulting to factory image I (100) esp_image: segment 0: paddr=00010020 vaddr=3c0a0020 size=293f4h (168948) map I (131) esp_image: segment 1: paddr=0003941c vaddr=3fc9a400 size=0342ch ( 13356) load I (134) esp_image: segment 2: paddr=0003c850 vaddr=40380000 size=037c8h ( 14280) load I (138) esp_image: segment 3: paddr=00040020 vaddr=42000020 size=9e5dch (648668) map I (232) esp_image: segment 4: paddr=000de604 vaddr=403837c8 size=16a8ch ( 92812) load I (248) esp_image: segment 5: paddr=000f5098 vaddr=50000000 size=00020h ( 32) load I (255) boot: Loaded app from partition at offset 0x10000 I (255) boot: Disabling RNG early entropy source... I (265) cpu_start: Unicore app I (274) cpu_start: Pro cpu start user code I (274) cpu_start: cpu freq: 160000000 Hz I (274) app_init: Application information: I (274) app_init: Project name: network_adapter I (279) app_init: App version: 1 I (282) app_init: Compile time: Jul 12 2025 15:58:54 I (287) app_init: ELF file SHA256: 9e1e5528b... I (291) app_init: ESP-IDF: v6.0-dev-1002-gbfe5caf58f I (297) efuse_init: Min chip rev: v0.3 I (301) efuse_init: Max chip rev: v1.99 I (305) efuse_init: Chip rev: v0.4 I (309) heap_init: Initializing. RAM available for dynamic allocation: I (315) heap_init: At 3FCA2600 len 0001DA00 (118 KiB): RAM I (320) heap_init: At 3FCC0000 len 0001C710 (113 KiB): Retention RAM I (326) heap_init: At 3FCDC710 len 00002950 (10 KiB): Retention RAM I (332) heap_init: At 50000020 len 00001FC8 (7 KiB): RTCRAM I (338) spi_flash: detected chip: generic I (341) spi_flash: flash io: dio I (344) sleep_gpio: Configure to isolate all GPIO pins in sleep state I (350) sleep_gpio: Enable automatic switching of GPIO sleep configuration I (357) coexist: coex firmware version: 831ec70 I (361) coexist: coexist rom version 9387209 I (366) main_task: Started on CPU0 I (368) main_task: Calling app_main() I (372) fg_mcu_slave: ********************************************************************* I (380) fg_mcu_slave: ESP-Hosted-MCU Slave FW version :: 2.0.14 I (389) fg_mcu_slave: Transport used :: SPI only I (397) fg_mcu_slave: ********************************************************************* I (405) fg_mcu_slave: Supported features are: I (409) fg_mcu_slave: - WLAN over SPI I (412) h_bt: - BT/BLE I (414) h_bt: - HCI Over SPI I (417) h_bt: - BLE only I (419) fg_mcu_slave: capabilities: 0xe8 I (423) fg_mcu_slave: Supported extended features are: I (428) h_bt: - BT/BLE (extended) I (431) fg_mcu_slave: extended capabilities: 0x0 I (439) h_bt: ESP Bluetooth MAC addr: dc:54:75:63:ad:32 I (440) BLE_INIT: BT controller compile version [4713a69] I (445) BLE_INIT: Using main XTAL as clock source I (450) BLE_INIT: Feature Config, ADV:1, BLE_50:1, DTM:1, SCAN:1, CCA:0, SMP:1, CONNECT:1 I (458) BLE_INIT: Bluetooth MAC: dc:54:75:63:ad:32 I (463) phy_init: phy_version 1201,bae5dd99,Mar 3 2025,15:36:21 I (499) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(0) I (510) SPI_DRIVER: Using SPI interface I (511) SPI_DRIVER: SPI Ctrl:1 mode: 3, Freq:ConfigAtHost GPIOs: CLK:6 MOSI:7 MISO:2 CS:10 HS:3 DR:4 I (512) SPI_DRIVER: Hosted SPI queue size: Tx:20 Rx:20 I (519) SPI_DRIVER: Slave chip Id[12] I (520) fg_mcu_slave: Initial set up done I (524) slave_ctrl: event ESPInit mem_dump free:98500 min-free:98424 lfb-dma:40960 lfb-def:40960 lfb-8bit:40960 Done