Bringing Zephyr RTOS to the ESP32-S3-BOX-3: A Comprehensive Port

zephyr_s3_box3

The ESP32-S3-BOX-3 is a versatile development kit aimed at AIoT and Edge AI use cases. In this post, we’re excited to share the initial public release of our Zephyr RTOS port for the ESP32-S3-BOX-3. This work enables the board’s rich hardware capabilities while remaining strictly aligned with upstream Zephyr design principles.

Our focus throughout this effort has been to reuse existing Zephyr infrastructure and mainline drivers wherever possible, ensuring the port remains maintainable, reviewable, and suitable for long-term upstream alignment.

Hardware at a Glance

The ESP32-S3-BOX-3 brings together a wide range of features in a compact form factor:

  • Dual-core processing: Based on the ESP32-S3-WROOM-1 module
  • Memory: 16 MB of Quad Flash and 16 MB of Octal PSRAM
  • User interface: 2.4-inch (320×240) LCD with capacitive touch
  • Connectivity and sensors: Integrated Wi-Fi, Bluetooth 5 (LE), and an onboard AHT30 temperature and humidity sensor

This combination makes the BOX-3 a strong candidate for UI-driven and connected Zephyr applications.

Supported Features

The current port enables a broad set of functionality out of the box:

  • Graphics and touch: LVGL graphics stack with GT911 capacitive touch controller integration
  • Wireless connectivity: Wi-Fi station mode and Bluetooth Low Energy (BLE)
  • Persistent storage: NVS-backed storage for saving credentials and configuration across reboots
  • Bootloading: MCUboot-compatible flash partitioning with dual application image slots
  • Multi-core support: Inter-core communication between PROCPU (main core) and APPCPU (application core)

Together, these features provide a solid foundation for building real-world Zephyr applications on the ESP32-S3-BOX-3.

Advanced Flash Partitioning

To support robust IoT and update workflows, the port uses a custom flash partition layout. The NVS partition is automatically mounted at /nvs using Zephyr’s fstab mechanism.

PartitionPurpose
MCUbootBootloader partition
Slots 0 & 1Dual application images for OTA updates
App & LP CoresDedicated space for co-processor firmware
NVSPersistent storage for Wi-Fi/user data
CoredumpDebugging information for system crashes

This layout enables safe firmware updates, persistent configuration, and improved debugging support.

Sample Applications

To help developers get started quickly, the port includes several reference applications:

  • lcd_lvgl: A basic introduction to the display driver and LVGL object creation
  • lcd_lvgl_touch: Extends the UI with touch navigation and a BLE beacon
  • wifi_ble_provisioning_lvgl: A complete provisioning workflow that allows Wi-Fi credentials to be sent over BLE (via a mobile app or Python script) and stored persistently in NVS

These samples are intended both as validation tools and as starting points for custom application development.

Getting Started

The port is maintained on the zephyr-esp32s3-box-3 branch, based on the upstream Zephyr main branch.

The source code is available at: https://github.com/notionext/zephyr 

To build one of the sample applications, for example:

git clone https://github.com/notionext/zephyr.git
cd zephyr
west init -m https://github.com/notionext/zephyr
west update

Above commands will clone the git repository, now you can build and flash this as,

west build -b esp32s3_box3/esp32s3/procpu samples/boards/espressif/wifi_ble_lvgl
west flash
west espressif monitor

Once you follow the initial setup, you can see the IP address of the device as below, 

Whether you’re evaluating the platform, validating features, or prototyping a product, this port provides a practical reference implementation for the ESP32-S3-BOX-3.

Leave a Comment

Your email address will not be published. Required fields are marked *