ESP-IDFでmDNS

 とりあえず、確認したいのはmDNSでのアナウンスができるかということと、AWS IoT CoreでMQTTする手順だったりする。どちらも標準環境で含まれているはず。

 サンプルを漁ってみる。

% ls $IDF_PATH/examples/

 README.md ieee802154 provisioning

 bluetooth lowpower security

 build_system mesh storage

 common_components network system

 custom_bootloader openthread wifi

 cxx peripherals zigbee

 ethernet phy

 get-started protocols

 MQTTのほうは、mqttとmqtt5がある。

% ls $IDF_PATH/examples/protocols

 README.md https_request mqtt

 dns_over_https https_server mqtt5

 esp_http_client https_x509_bundle smtp_client

 esp_local_ctrl icmp_echo sntp

 http_request l2tap sockets

 http_server linux_stubs static_ip

 https_mbedtls modbus

% ls $IDF_PATH/examples/protocols/mqtt

 custom_outbox ssl_ds ssl_psk ws

 ssl ssl_mutual_auth tcp wss

% ls $IDF_PATH/examples/protocols/mqtt5

 CMakeLists.txt main sdkconfig.ci

 README.md pytest_mqtt5.py sdkconfig.defaults

 mDNSのほうはサンプルは特になさそうね。作ってみるか。

 プロジェクトを作成する。

% cd ~/Downloads/esp

% idf.py create-project mdns_check

 Executing action: create-project

 The project was created in /Users/kinneko/Downloads/esp/mdns_check

% cd mdns_check

 ターゲットを追加。

% idf.py set-target esp32s3

 Adding "set-target"'s dependency "fullclean" to list of commands with default set of options.

 Executing action: fullclean

 Build directory '/Users/kinneko/Downloads/esp/mdns_check/build' not found. Nothing to clean.

 Executing action: set-target

 Set Target to: esp32s3, new sdkconfig will be created.

 Running cmake in directory /Users/kinneko/Downloads/esp/mdns_check/build

 Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=/Users/kinneko/.espressif/python_env/idf5.5_py3.13_env/bin/python -DESP_PLATFORM=1 -DIDF_TARGET=esp32s3 -DCCACHE_ENABLE=0 /Users/kinneko/Downloads/esp/mdns_check"...

-- Found Git: /usr/bin/git (found version "2.39.3 (Apple Git-146)")

-- Minimal build - OFF

-- The C compiler identification is GNU 14.2.0

-- The CXX compiler identification is GNU 14.2.0

-- The ASM compiler identification is GNU

-- Found assembler: /Users/kinneko/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20251107/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working C compiler: /Users/kinneko/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20251107/xtensa-esp-elf/bin/xtensa-esp32s3-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: /Users/kinneko/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20251107/xtensa-esp-elf/bin/xtensa-esp32s3-elf-g++ - skipped

-- Detecting CXX compile features

-- Detecting CXX compile features - done

-- git rev-parse returned 'fatal: not a git repository (or any of the parent directories): .git'

-- Could not use 'git describe' to determine PROJECT_VER.

-- Building ESP-IDF components for target esp32s3

-- ESP-TEE is currently supported only on the esp32c6;esp32h2;esp32c5 SoCs

-- Project sdkconfig file /Users/kinneko/Downloads/esp/mdns_check/sdkconfig

-- Compiler supported targets: xtensa-esp-elf

-- Found Python3: /Users/kinneko/.espressif/python_env/idf5.5_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 "mdns_check" version: 1

-- Adding linker script /Users/kinneko/Downloads/esp/mdns_check/build/esp-idf/esp_system/ld/memory.ld

-- Adding linker script /Users/kinneko/Downloads/esp/mdns_check/build/esp-idf/esp_system/ld/sections.ld.in

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.bt_funcs.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.wdt.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_master.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_50.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_smp.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_dtm.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_test.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_scan.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/soc/esp32s3/ld/esp32s3.peripherals.ld

-- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_bitscrambler esp_driver_cam esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_isp esp_driver_jpeg esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_ppa esp_driver_rmt esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_touch_sens esp_driver_tsens esp_driver_twai esp_driver_uart esp_driver_usb_serial_jtag esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_security esp_system esp_timer esp_vfs_console esp_wifi espcoredump esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash nvs_sec_provider openthread partition_table perfmon protobuf-c protocomm pthread rt sdmmc soc spi_flash spiffs tcp_transport touch_element ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa

-- Component paths: /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/app_trace /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/app_update /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader_support /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/cmock /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/console /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/cxx /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/driver /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/efuse /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp-tls /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_adc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_app_format /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_bootloader_format /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_coex /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_common /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_ana_cmpr /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_bitscrambler /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_cam /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_dac /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_gpio /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_gptimer /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_i2c /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_i2s /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_isp /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_jpeg /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_ledc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_mcpwm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_parlio /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_pcnt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_ppa /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_rmt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_sdio /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_sdm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_sdmmc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_sdspi /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_spi /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_touch_sens /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_tsens /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_twai /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_uart /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_usb_serial_jtag /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_eth /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_event /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_gdbstub /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_hid /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_http_client /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_http_server /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_https_ota /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_https_server /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_hw_support /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_lcd /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_local_ctrl /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_mm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_netif /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_netif_stack /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_partition /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_phy /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_pm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_psram /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_ringbuf /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_security /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_system /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_timer /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_vfs_console /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_wifi /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/espcoredump /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esptool_py /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/fatfs /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/freertos /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/hal /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/heap /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/http_parser /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/idf_test /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/ieee802154 /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/json /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/log /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/lwip /Users/kinneko/Downloads/esp/mdns_check/main /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/mbedtls /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/mqtt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/newlib /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/nvs_flash /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/nvs_sec_provider /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/openthread /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/partition_table /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/perfmon /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/protobuf-c /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/protocomm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/pthread /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/rt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/sdmmc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/soc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/spi_flash /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/spiffs /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/tcp_transport /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/touch_element /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/ulp /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/unity /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/usb /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/vfs /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/wear_levelling /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/wifi_provisioning /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/wpa_supplicant /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/xtensa

-- Configuring done (12.2s)

-- Generating done (0.3s)

-- Build files have been written to: /Users/kinneko/Downloads/esp/mdns_check/build

 mDNSコンポーネントの追加。

 ESP-IDF v5.0以降は、mDNSが別リポジトリに移動しているようなので、コンポーネントとして追加してやる必要がある。

% idf.py add-dependency espressif/mdns

 Executing action: add-dependency

 NOTICE: Created "/Users/kinneko/Downloads/esp/mdns_check/main/idf_component.yml"

 NOTICE: Successfully added dependency "espressif/mdns": "*" to component "main"

 NOTICE: If you want to make additional changes to the manifest file at path /Users/kinneko/Downloads/esp/mdns_check/main/idf_component.yml manually, please refer to the documentation: https://docs.espressif.com/projects/idf-component-manager/en/latest/reference/manifest_file.html

 CMakeLists.txtに設定された。

% cat main/CMakeLists.txt

 idf_component_register(SRCS "mdns_check.c"

 INCLUDE_DIRS ".")

 menuconfigでWi-Fi設定を登録するために、menuconfig用のテンプレートを作っておく。

% vi main/Kconfig.projbuild

 menu "mDNS Check Configuration"

 config WIFI_SSID

 string "WiFi SSID"

 default ""

 config WIFI_PASSWORD

 string "WiFi Password"

 default ""

 config MDNS_HOSTNAME

 string "mDNS hostname"

 default "esp32-mdns"

 endmenu

 menuconfigで設定する。

% idf.py menuconfig

 mDNS Check Configurationが生えているのが確認できる。

 Kconfig.projbuildを作ってない場合はメニューに出ない。

 評価環境のSSIDとパスワードを入力しておく。mDNS名はこのままでいいだろう。

 sキーで設定が保存される。qキーで終了。

 保存した内容はsdkconfigに登録されている。

% cat sdkconfig| grep CONFIG_MDNS_HOSTNAME

 CONFIG_MDNS_HOSTNAME="esp32-mdns"

 メインのコードを書く。

% vi main/mdns_check.c

#include <string.h>

#include "freertos/FreeRTOS.h"

#include "freertos/task.h"

#include "esp_log.h"

#include "esp_event.h"

#include "nvs_flash.h"

#include "esp_netif.h"

#include "esp_wifi.h"

#include "mdns.h"

 static const char *TAG = "mdns_check";

 static void start_mdns(void)

 {

 ESP_ERROR_CHECK(mdns_init());

// hostname.local になる

 ESP_ERROR_CHECK(mdns_hostname_set(CONFIG_MDNS_HOSTNAME));

 ESP_ERROR_CHECK(mdns_instance_name_set("ESP-IDF mDNS Check"));

// 動作確認用:HTTPサービスを広告(実サーバは立てなくてもOK)

 ESP_ERROR_CHECK(mdns_service_add(NULL, "_http", "_tcp", 80, NULL, 0));

// TXTレコード(任意)

 mdns_txt_item_t txt[] = {

 {"board", "esp32"},

 {"app", "mdns_check"},

 };

 ESP_ERROR_CHECK(mdns_service_txt_set("_http", "_tcp", txt, 2));

 ESP_LOGI(TAG, "mDNS started: %s.local", CONFIG_MDNS_HOSTNAME);

 ESP_LOGI(TAG, "Service: _http._tcp on port 80");

 }

 static void wifi_event_handler(void *arg, esp_event_base_t event_base,

 int32_t event_id, void *event_data)

 {

 (void)arg;

 (void)event_data;

 if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {

 ESP_LOGI(TAG, "Wi-Fi start -> connect");

 esp_wifi_connect();

 } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {

 ESP_LOGW(TAG, "Wi-Fi disconnected -> reconnect");

 esp_wifi_connect();

 } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {

 ESP_LOGI(TAG, "Got IP -> start mDNS");

 start_mdns();

 }

 }

 static void wifi_init_sta(void)

 {

 esp_netif_create_default_wifi_sta();

 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();

 ESP_ERROR_CHECK(esp_wifi_init(&cfg));

 ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL));

 ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &wifi_event_handler, NULL));

 wifi_config_t wifi_config = {0};

 strncpy((char *)wifi_config.sta.ssid, CONFIG_WIFI_SSID, sizeof(wifi_config.sta.ssid));

 strncpy((char *)wifi_config.sta.password, CONFIG_WIFI_PASSWORD, sizeof(wifi_config.sta.password));

 wifi_config.sta.threshold.authmode = WIFI_AUTH_WPA2_PSK;

 ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));

 ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));

 ESP_ERROR_CHECK(esp_wifi_start());

 }

 void app_main(void)

 {

 ESP_ERROR_CHECK(nvs_flash_init());

 ESP_ERROR_CHECK(esp_netif_init());

 ESP_ERROR_CHECK(esp_event_loop_create_default());

 wifi_init_sta();

// 何もしないで待つ(イベント駆動)

 while (1) {

 vTaskDelay(pdMS_TO_TICKS(1000));

 }

 }

 ビルドしてみる。

% idf.py build

 Executing action: all (aliases: build)

 Running ninja in directory /Users/kinneko/Downloads/esp/mdns_check/build

 Executing "ninja all"...

 [0/1] Re-running CMake...

-- Minimal build - OFF

-- git rev-parse returned 'fatal: not a git repository (or any of the parent directories): .git'

-- Could not use 'git describe' to determine PROJECT_VER.

-- Building ESP-IDF components for target esp32s3

 NOTICE: Processing 2 dependencies:

 NOTICE: [1/2] espressif/mdns (1.9.1)

 NOTICE: [2/2] idf (5.5.2)

-- ESP-TEE is currently supported only on the esp32c6;esp32h2;esp32c5 SoCs

-- Project sdkconfig file /Users/kinneko/Downloads/esp/mdns_check/sdkconfig

-- Compiler supported targets: xtensa-esp-elf

-- USING O3

-- App "mdns_check" version: 1

-- Adding linker script /Users/kinneko/Downloads/esp/mdns_check/build/esp-idf/esp_system/ld/memory.ld

-- Adding linker script /Users/kinneko/Downloads/esp/mdns_check/build/esp-idf/esp_system/ld/sections.ld.in

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.bt_funcs.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.wdt.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_master.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_50.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_smp.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_dtm.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_test.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_scan.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/soc/esp32s3/ld/esp32s3.peripherals.ld

-- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_bitscrambler esp_driver_cam esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_isp esp_driver_jpeg esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_ppa esp_driver_rmt esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_touch_sens esp_driver_tsens esp_driver_twai esp_driver_uart esp_driver_usb_serial_jtag esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_security esp_system esp_timer esp_vfs_console esp_wifi espcoredump espressif__mdns esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash nvs_sec_provider openthread partition_table perfmon protobuf-c protocomm pthread rt sdmmc soc spi_flash spiffs tcp_transport touch_element ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa

-- Component paths: /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/app_trace /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/app_update /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader_support /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/cmock /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/console /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/cxx /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/driver /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/efuse /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp-tls /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_adc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_app_format /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_bootloader_format /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_coex /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_common /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_ana_cmpr /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_bitscrambler /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_cam /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_dac /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_gpio /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_gptimer /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_i2c /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_i2s /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_isp /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_jpeg /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_ledc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_mcpwm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_parlio /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_pcnt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_ppa /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_rmt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_sdio /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_sdm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_sdmmc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_sdspi /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_spi /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_touch_sens /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_tsens /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_twai /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_uart /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_driver_usb_serial_jtag /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_eth /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_event /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_gdbstub /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_hid /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_http_client /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_http_server /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_https_ota /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_https_server /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_hw_support /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_lcd /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_local_ctrl /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_mm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_netif /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_netif_stack /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_partition /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_phy /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_pm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_psram /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_ringbuf /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_security /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_system /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_timer /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_vfs_console /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_wifi /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/espcoredump /Users/kinneko/Downloads/esp/mdns_check/managed_components/espressif__mdns /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esptool_py /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/fatfs /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/freertos /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/hal /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/heap /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/http_parser /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/idf_test /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/ieee802154 /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/json /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/log /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/lwip /Users/kinneko/Downloads/esp/mdns_check/main /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/mbedtls /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/mqtt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/newlib /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/nvs_flash /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/nvs_sec_provider /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/openthread /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/partition_table /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/perfmon /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/protobuf-c /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/protocomm /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/pthread /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/rt /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/sdmmc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/soc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/spi_flash /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/spiffs /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/tcp_transport /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/touch_element /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/ulp /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/unity /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/usb /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/vfs /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/wear_levelling /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/wifi_provisioning /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/wpa_supplicant /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/xtensa

-- Configuring done (2.4s)

-- Generating done (0.3s)

-- Build files have been written to: /Users/kinneko/Downloads/esp/mdns_check/build

 [4/1077] 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,24K,

 phy_init,data,phy,0xf000,4K,

 factory,app,factory,0x10000,1M,


 [1068/1077] Performing configure step for 'bootloader'

-- Found Git: /usr/bin/git (found version "2.39.3 (Apple Git-146)")

-- Minimal build - OFF

-- The C compiler identification is GNU 14.2.0

-- The CXX compiler identification is GNU 14.2.0

-- The ASM compiler identification is GNU

-- Found assembler: /Users/kinneko/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20251107/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working C compiler: /Users/kinneko/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20251107/xtensa-esp-elf/bin/xtensa-esp32s3-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: /Users/kinneko/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20251107/xtensa-esp-elf/bin/xtensa-esp32s3-elf-g++ - skipped

-- Detecting CXX compile features

-- Detecting CXX compile features - done

-- Building ESP-IDF components for target esp32s3

-- ESP-TEE is currently supported only on the esp32c6;esp32h2;esp32c5 SoCs

-- Project sdkconfig file /Users/kinneko/Downloads/esp/mdns_check/sdkconfig

-- Compiler supported targets: xtensa-esp-elf

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/soc/esp32s3/ld/esp32s3.peripherals.ld

-- Bootloader project name: "bootloader" version: 1

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.bt_funcs.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.wdt.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader/subproject/main/ld/esp32s3/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 soc spi_flash xtensa

-- Component paths: /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader_support /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/efuse /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_app_format /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_bootloader_format /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_common /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_hw_support /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_rom /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_security /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esp_system /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/esptool_py /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/freertos /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/hal /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/log /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader/subproject/main /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader/subproject/components/micro-ecc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/newlib /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/partition_table /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/soc /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/spi_flash /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/xtensa

-- Adding linker script /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld

-- Configuring done (3.9s)

-- Generating done (0.0s)

-- Build files have been written to: /Users/kinneko/Downloads/esp/mdns_check/build/bootloader

 [122/123] Generating binary image from built executable

 esptool.py v4.11.dev1

 Creating esp32s3 image...

 Merged 2 ELF sections

 Successfully created esp32s3 image.

 Generated /Users/kinneko/Downloads/esp/mdns_check/build/bootloader/bootloader.bin

 [123/123] cd /Users/kinneko/Downloads/e..._check/build/bootloader/bootloader.bin

 Bootloader binary size 0x5240 bytes. 0x2dc0 bytes (36%) free.

 [1075/1077] Generating binary image from built executable

 esptool.py v4.11.dev1

 Creating esp32s3 image...

 Merged 2 ELF sections

 Successfully created esp32s3 image.

 Generated /Users/kinneko/Downloads/esp/mdns_check/build/mdns_check.bin

 [1076/1077] cd /Users/kinneko/Downloads...ds/esp/mdns_check/build/mdns_check.bin

 mdns_check.bin binary size 0xbcd30 bytes. Smallest app partition is 0x100000 bytes. 0x432d0 bytes (26%) free.

 Project build complete. To flash, run:

 idf.py flash

 or

 idf.py -p PORT flash

 or

 python -m esptool --chip esp32s3 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size 2MB --flash_freq 80m 0x0 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/mdns_check.bin

 or from the "/Users/kinneko/Downloads/esp/mdns_check/build" directory

 python -m esptool --chip esp32s3 -b 460800 --before default_reset --after hard_reset write_flash "@flash_args"

 当たり前だけど、ビルドエラーは特になかった。

 ATOMS3に焼いて見る。シリアルは/dev/cu.usbmodem1101に見えている。

% idf.py -p /dev/cu.usbmodem1101 flash monitor

 Executing action: flash

 Running ninja in directory /Users/kinneko/Downloads/esp/mdns_check/build

 Executing "ninja flash"...

 [1/5] cd /Users/kinneko/Downloads/esp/m...ds/esp/mdns_check/build/mdns_check.bin

 mdns_check.bin binary size 0xbcd30 bytes. Smallest app partition is 0x100000 bytes. 0x432d0 bytes (26%) free.

 [1/1] cd /Users/kinneko/Downloads/esp/m..._check/build/bootloader/bootloader.bin

 Bootloader binary size 0x5240 bytes. 0x2dc0 bytes (36%) free.

 [4/5] cd /Users/kinneko/Downloads/esp-i...nents/esptool_py/run_serial_tool.cmake

 esptool.py --chip esp32s3 -p //dev/cu.usbmodem1101 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x10000 mdns_check.bin 0x8000 partition_table/partition-table.bin

 esptool.py v4.11.dev1

 Serial port //dev/cu.usbmodem1101

 Connecting...

 Device PID identification is only supported on COM and /dev/ serial ports.

 Chip is ESP32-S3 (QFN56) (revision v0.2)

 Features: WiFi, BLE, Embedded Flash 8MB (GD)

 Crystal is 40MHz

 USB mode: USB-Serial/JTAG

 MAC: 30:ed:a0:c9:ec:b4

 Uploading stub...

 Running stub...

 Stub running...

 Changing baud rate to 460800

 Changed.

 Configuring flash size...

 Flash will be erased from 0x00000000 to 0x00005fff...

 Flash will be erased from 0x00010000 to 0x000ccfff...

 Flash will be erased from 0x00008000 to 0x00008fff...

 SHA digest in image updated

 Compressed 21056 bytes to 13389...

 Writing at 0x00000000... (100 %)

 Wrote 21056 bytes (13389 compressed) at 0x00000000 in 0.3 seconds (effective 505.8 kbit/s)...

 Hash of data verified.

 Compressed 773424 bytes to 486761...

 Writing at 0x000c87ea... (100 %)

 Wrote 773424 bytes (486761 compressed) at 0x00010000 in 5.0 seconds (effective 1239.7 kbit/s)...

 Hash of data verified.

 Compressed 3072 bytes to 103...

 Writing at 0x00008000... (100 %)

 Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.1 seconds (effective 416.2 kbit/s)...

 Hash of data verified.

 Leaving...

 Hard resetting via RTS pin...

 Executing action: monitor

 Running idf_monitor in directory /Users/kinneko/Downloads/esp/mdns_check

 Executing "/Users/kinneko/.espressif/python_env/idf5.5_py3.13_env/bin/python /Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/tools/idf_monitor.py -p //dev/cu.usbmodem1101 -b 115200 --toolchain-prefix xtensa-esp32s3-elf- --target esp32s3 --revision 0 /Users/kinneko/Downloads/esp/mdns_check/build/mdns_check.elf /Users/kinneko/Downloads/esp/mdns_check/build/bootloader/bootloader.elf -m '/Users/kinneko/.espressif/python_env/idf5.5_py3.13_env/bin/python' '/Users/kinneko/Downloads/esp-idf/esp-idf-v5.5.2/tools/idf.py' '-p' '//dev/cu.usbmodem1101'"...

--- esp-idf-monitor 1.8.0 on //dev/cu.usbmodem1101 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:0x20 (DOWNLOAD(USB/UART0))

 Saved PC:0x40041a79

--- 0x40041a79: ets_delay_us in ROM

 waiting for download

 前にCPlusで作ったmDNSのモニタを使ってみたけど、アナウンス流れてこないな...

 ログ的には流している風ね。

--- Error: read failed: [Errno 6] Device not configured

--- Waiting for the device to reconnect........

 I (929) wifi:idx:0 (ifx:0, 34:76:c5:a4:36:30), tid:5, ssn:1, winSize:64

 I (1829) wifi:idx:1 (ifx:0, 34:76:c5:a4:36:30), tid:0, ssn:2, winSize:64

 I (2529) esp_netif_handlers: sta ip: 192.168.0.11, mask: 255.255.255.0, gw: 192.168.0.1

 I (2529) mdns_check: Got IP -> start mDNS

 I (2529) mdns_mem: mDNS task will be created from internal RAM

 I (2529) mdns_check: mDNS started: esp32-mdns.local

 I (2539) mdns_check: Service: _http._tcp on port 80

 macOS側で確認すると流れてきているのが確認できた。

% dns-sd -G v4v6 esp32-mdns.local

 DATE: ---Mon 05 Jan 2026---

 17:54:09.077 ...STARTING...

 Timestamp A/R Flags IF Hostname Address TTL

 17:54:09.080 Add 40000002 12 esp32-mdns.local. 192.168.0.11 120

 ^C

 サービスアナウンスも来ている。

% dns-sd -B _http._tcp

 Browsing for _http._tcp

 DATE: ---Mon 05 Jan 2026---

 17:57:26.437 ...STARTING...

 Timestamp A/R Flags if Domain Service Type Instance Name

 17:57:26.441 Add 2 12 local. _http._tcp. ESP-IDF mDNS Check

 ^C

 動いたけど、コード的には、main/CMakeLists.txtに依存関係書いてないのはちょっとダメかな。こうしておくのが確実かも。

% cat main/CMakeLists.txt

 idf_component_register(

 SRCS "mdns_check.c"

 INCLUDE_DIRS "."

 REQUIRES nvs_flash esp_netif esp_event esp_wifi mdns

 )

 100円投げ銭  https://kinneko.booth.pm/items/1963720


オリジナル投稿:
ESP-IDFでmDNS|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/11193866