Selected work
uno-esp32-c6
ESP32-C6 Dev Board
Personal project involving the creation of an ESP32-C6 Dev Board.
The ESP32-C6 module comes equipped with:
- A 32-bit processor with a clock speed of upto 160 MHz.
- Supports Wi-Fi 6 and bluetooth 5 (LE) with onboard antenna and thread, zigbee protocols.
- Comes with built in 320KB ROM, 512KB of HP SRAM, 16KB LP SRAM and 4MB Flash memory.
- Adapts multiple IO interfaces and integrates a full-speed USB PHY interface.
The Dev Board includes support for DC input power.

Getting Started
Development Environment Setup (Ubuntu)
This project supports firmware development for the ESP32-C6 using both:
- C/C++ with ESP-IDF (official Espressif framework)
- Rust with esp-rs (modern, type-safe embedded development)
You can use either workflow independently.
Option A: C/C++ Development (ESP-IDF)
ESP-IDF is Espressif’s official SDK and provides full, first-class support for the ESP32-C6.
1. Install System Dependencies
Update your system and install required packages:
sudo apt update
sudo apt install -y \
git \
python3 \
python3-pip \
python3-venv \
cmake \
ninja-build \
libusb-1.0-0
Verify Python:
python3 --version
2. Install ESP-IDF
Clone ESP-IDF (recommended stable version):
git clone -b v5.2 --recursive https://github.com/espressif/esp-idf.git
Run the installer:
cd esp-idf
./install.sh esp32c6
Activate the ESP-IDF environment:
source export.sh
To make this persistent, you may add the above line to your ~/.bashrc or ~/.zshrc.
Verify installation:
idf.py --version
3. First Hello World (C/C++)
Create a new project:
idf.py create-project hello_world
cd hello_world
Set the target to ESP32-C6:
idf.py set-target esp32c6
(Optional) Configure the project:
idf.py menuconfig
Important settings:
- Serial port selection
- Flash size (if your PCB differs from defaults)
Build, flash, and monitor:
idf.py build
idf.py flash monitor
Expected serial output:
Hello world!
Your toolchain is alive and talking.
Option B: Rust Development (esp-rs)
Rust development uses the esp-hal ecosystem and the RISC-V toolchain for ESP32-C6.
1. Install Rust
Install Rust using rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Reload your shell:
source ~/.cargo/env
Install required components:
rustup component add rust-src
2. Install ESP Rust Toolchain
Install the ESP toolchain manager:
cargo install espup
Install ESP targets and tools:
espup install
Activate the environment:
source ~/export-esp.sh
Add the ESP32-C6 target:
rustup target add riscv32imac-unknown-none-elf
3. First Hello World (Rust)
Install the project generator:
cargo install esp-generate
Create a new project:
cargo generate esp-rs/esp-template
During setup:
- Select esp32c6
- Choose no_std
- Enable UART logging
Navigate into the project:
cd your_project_name
Build and flash:
cargo run
Expected output over serial:
Hello world from Rust!
Rust is officially on the board 🦀.
