A pure Rust implementation of the Mender client for the ESP32 platform, designed for secure and reliable over-the-air (OTA) firmware updates. This project combines the performance and safety of Rust with the robustness of Mender.io, bringing modern OTA solutions to embedded IoT devices.
Futher more, we enabling the capability of
- Updating AI model for edge devices
- Remote command for edge devices
- Peform updating for other via CAN bus
It is build and test on esp32-c6 for now.
![image](https://private-user-images.githubusercontent.com/56182747/406668434-31c2c963-585a-4074-b28d-a693922ed45e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwMDU0OTksIm5iZiI6MTc0MDAwNTE5OSwicGF0aCI6Ii81NjE4Mjc0Ny80MDY2Njg0MzQtMzFjMmM5NjMtNTg1YS00MDc0LWIyOGQtYTY5MzkyMmVkNDVlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE5VDIyNDYzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVkMGM3ZmNlZWNlZTk1ZjBlMjA3ZTYzZjI4Yzk5OGRmOTc3MTdmZjdlMjgwMTU0Yzc2MjJkZGRkMDZlMzhlZWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.wJuKWnUq06uaVqyts9011IsZSqpCwuy6sIE3Y51w84k)
- 🔒 Secure OTA Updates – Seamless integration with Mender for secure, encrypted firmware delivery.
- 🔄 Enabling for Updating AI model at the Edge
- ⚡ Remote Command - Remote Control
- ⚡ Firmware/Software/AI model update for other components via CAN bus
- ⚡ Lightweight & Efficient – Optimized for resource-constrained ESP32 devices.
- 🔄 Automatic Rollback – Fail-safe mechanisms for firmware deployment.
- 🦀 Powered by Rust – Memory safety and performance without a garbage collector.
- 📦 Modular Design – Easy to extend and adapt for various embedded projects.
- 📦 Rust Toolchain (
rustup
) - 🛠 ESP-IDF for Rust (
espup
) - 🔌 ESP32 Development Board
- 🌐 Mender Server Account (Hosted or Open Source)
Configure environment variables:
MENDER_CLIENT_WIFI_SSID
MENDER_CLIENT_WIFI_PSK
MENDER_CLIENT_URL
MENDER_CLIENT_TENANT_TOKEN (optional)
- Install Rust for ESP32
rustup install stable cargo install espup espup install cargo install espflash
- Compile and build the project
Try on esp32c3
cd examples/esp32c3
cargo run --release
Try on esp32c6
cd examples/esp32c6
cargo run --release
Please join us : https://discord.gg/b7vk6fza
- video demo on esp32c3 : https://youtu.be/N24ugg88bFo