# ESP-IDF on ESP32-S3-DevKitC

**URL:** https://hub.mender.io/t/esp-idf-on-esp32-s3-devkitc/8373
**Category:** Board Integrations
**Tags:** esp32, esp-idf, freertos
**Created:** [September 25, 2026, 11:14am UTC](https://hub.mender.io/t/esp-idf-on-esp32-s3-devkitc/8373 "2026-09-25T11:14:57Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![danieldrabitzius](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@danieldrabitzius](https://hub.mender.io/u/danieldrabitzius)
#### Post date: [September 25, 2026, 11:14am UTC](https://hub.mender.io/t/esp-idf-on-esp32-s3-devkitc/8373/1 "2026-09-25T11:14:57Z")

</div>

This post shows how to build and run the Mender MCU client on ESP-IDF v6, using [ESP32-S3-DevKitC](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitc-1/index.html).

**Note: ESP-IDF support in Mender MCU is still being developed and isn’t officially supported yet, so some features might be missing.**

**Prerequisites and requirements:**

- **ESP32-S3-DevKitC** , connected over USB
- **ESP-IDF v6.0 or later**
  - See [Espressif’s getting started guide](https://docs.espressif.com/projects/esp-idf/en/v6.0/esp32s3/get-started/index.html)

- **`mender-artifact` 4.2.0 or later** in your `PATH`
  - The build uses it to create the Mender Artifact. See [the downloads page](https://docs.mender.io/downloads/workstation-tools#mender-artifact)

- **A hosted Mender account** ([US](https://hosted.mender.io) or [EU](https://eu.hosted.mender.io)) and a tenant token
  - Found under your user menu → **My organization** → **Organization token**

- **Wi-Fi** SSID and password

## Get the sources

Once you have all the requirements in place, clone the `esp-idf` branch of `mender-mcu-integration`:

```auto
git clone -b esp-idf https://github.com/mendersoftware/mender-mcu-integration
cd mender-mcu-integration

```

## Configure

Create `sdkconfig.defaults.esp32s3` with your Wi-Fi credentials, tenant token and Artifact name:

```auto
CONFIG_MENDER_APP_WIFI_SSID="<your SSID>"
CONFIG_MENDER_APP_WIFI_PSK="<your password>"
CONFIG_MENDER_SERVER_TENANT_TOKEN="<paste your tenant token here>"
CONFIG_MENDER_ARTIFACT_NAME="release-1"

```

If you’re using EU hosted Mender, also add `CONFIG_MENDER_SERVER_HOST_EU=y`.

## Build and flash

[Activate the ESP-IDF environment](https://docs.espressif.com/projects/esp-idf/en/v6.0/esp32s3/get-started/linux-macos-start-project.html#activate-the-environment), then prepare the device by erasing its flash:

```auto
idf.py erase-flash

```

Build, flash and open the monitor:

```auto
idf.py build flash monitor

```

The build also creates the Mender Artifact, `build/mender-mcu-freertos-example.mender`. Press `Ctrl-]` to exit the monitor.

Once the device is on Wi-Fi, it should show up as pending in hosted Mender. Accept it, and it will start checking for deployments and sending inventory.

## Deploy an update

Open the menuconfig:

```auto
idf.py menuconfig

```

Under **Component config → Mender client → Mender Artifact generation** , change **Name of the artifact** , e.g. to `release-2`. This is also where you’ll find the rest of the client settings. Save, exit and rebuild:

```auto
idf.py build

```

Upload `build/mender-mcu-freertos-example.mender` to hosted Mender and deploy it to your device. The device reboots into the new image and commits the update once it has reconnected to the server. If it never gets that far, it rolls back to the previous image on the next reboot.

To follow the update, start `idf.py monitor` before creating the deployment; starting it mid-update resets the board.

We’d love to get your feedback!
