A convenient VS Code extension for developing with ESP8266 and ESP8285 chips.
Supports ESP8266_RTOS_SDK via idf.py.
Features
⚙️ Build
- Build — full project build
- Build App — application only
- Build Bootloader — bootloader only
- Build Partition Table — partition table only
- Auto-saves all unsaved files before build
- Configurable pre-build action (none / clean / full clean)
- Configurable post-build action (none / flash / flash + monitor)
- Optional post-build analysis (size / size-components / size-files)
⚡ Flash
- Flash — flash firmware to device
- Flash App / Bootloader / Partition Table — flash individual components
- Flash Encrypted / Flash Encrypted App — encrypted flash variants
- Erase Flash — full flash erase
- Configurable action before flash (none / erase flash)
- Configurable action after flash (none / open monitor)
- Port availability check before flashing — prompts to select another port if device not connected
🖥️ Monitor
- Monitor — open serial monitor
- Stop Monitor — close serial monitor
- Configurable baud rate
- Menuconfig — visual configuration (
idf.py menuconfig)
- Reconfigure — re-run CMake configuration
- Reset Config — delete
sdkconfig and restore defaults
📁 Project Folder
- Shows active project name
- 📦 Components — automatically lists
components/ subfolders
[+] button — launch Add Component wizard
[✏️] button — edit component (rename, sources, headers, dependencies)
[🗑] button — delete component with confirmation
➕ Add Component Wizard
Creates a new ESP-IDF component in components/ with 4 steps:
- Component name
- Source
.c files
- Header location:
include/ folder, same folder ./, or none
REQUIRES dependencies
Generates:
components/<n>/CMakeLists.txt with correct idf_component_register()
.c source stub
.h header stub (if selected)
No changes to root CMakeLists.txt needed — ESP-IDF SDK auto-detects components/
✏️ Edit Component Wizard
Edits an existing component — opens pre-filled wizard with 4 steps:
- Rename — rename the component folder (leave unchanged to skip)
- Source files — pre-filled from existing
CMakeLists.txt
- Header location — pre-selected from existing config
- REQUIRES dependencies — pre-filled from existing config
Updates CMakeLists.txt in place. Creates any new source files that don't exist yet.
🛠️ Utilities
- Make SPIFFS — pack
data/ folder into SPIFFS image using mkspiffs
- Custom Partitions — open partition table editor
🗂️ Partition Table Editor
Visual editor for ESP8266 flash partition tables.
Drag-and-drop reordering, flash map visualization, presets, validation and CSV support.
- Drag-and-drop partition reordering
- Flash map visualization
- OTA preset — auto-selects 1MB or 2MB+ layout based on flash size
- SPIFFS preset — classic layout: nvs + phy_init + factory (512KB) + spiffs (rest)
- Default preset — standard single factory app (960KB max due to ESP8266 1MB boundary)
- Auto Offsets — automatic offset calculation
- Validation with ESP8266-specific checks (1MB app boundary, alignment, overlaps)
- CSV save/open
📊 Analysis
- Size — firmware size report (
idf.py size)
- Size Components — per-component size breakdown
- Size Files — per-file size breakdown
⚗️ Advanced (Experimental)
- eFuse Common / Custom Table generation
- OTA data erase / read
- Show eFuse Table
🔧 VSCode Utilities
- Generate IntelliSense — creates
.vscode/c_cpp_properties.json with correct ESP8266 includes
- Generate tasks.json — adds ESP build tasks for
Ctrl+Shift+B
Requirements
- Python 3.7.x — must be 3.7.x, newer versions are not compatible with ESP8266 RTOS SDK
- ESP8266_RTOS_SDK — download and set path via extension settings
Setup (Fresh Install)
- Install the extension — sidebar shows the full command tree immediately
- Install Python 3.7 — click warning in sidebar → Download Python 3.7
- Set SDK path — in sidebar, click RTOS IDF: not set and point to your
ESP8266_RTOS_SDK folder
- Install build tools — extension detects missing tools and offers to install automatically via
idf_tools.py
- Select your COM port via Serial Source Settings → Port
- Run Build → Flash → Monitor
Command Check Order
Every command verifies prerequisites in this order before executing:
- Python 3.7 — if not found, shows download prompt
- IDF path — if not set, shows settings prompt
- Build tools — if missing, offers automatic installation
- Project folder — if not selected, shows folder picker
- COM port — if not connected, shows port selector
Extension Settings
| Setting |
Description |
Default |
esp-idf-tools.idfPath |
Path to ESP8266_RTOS_SDK |
|
esp-idf-tools.pythonPath |
Manual path to Python 3.7 folder |
|
esp-idf-tools.comPort |
COM port (e.g. COM3 or /dev/ttyUSB0) |
|
esp-idf-tools.flashBaud |
Flash baud rate |
115200 |
esp-idf-tools.flashSize |
Flash size |
2MB |
esp-idf-tools.flashMode |
SPI flash mode (dio, qio, …) |
dio |
esp-idf-tools.flashFreq |
SPI flash frequency |
40m |
esp-idf-tools.monitorBaud |
Serial monitor baud rate |
74880 |
esp-idf-tools.eraseBeforeFlash |
Erase flash before flashing |
false |
esp-idf-tools.postFlashAction |
Action after flash (none, monitor) |
none |
esp-idf-tools.postBuildAction |
Action after build (none, flash, flash_monitor) |
none |
esp-idf-tools.useCompressedUpload |
Use compressed upload (-z) |
true |
esp-idf-tools.overrideFlashConfig |
Use manual flash settings instead of menuconfig |
false |
esp-idf-tools.reuseTerminal |
Reuse existing terminal instead of creating new |
true |
esp-idf-tools.saveSettingsToWorkspace |
Save settings per-project instead of globally |
true |
- ✅ Windows 10/11 (PowerShell)
- ✅ Linux (bash)
- ✅ macOS (bash/zsh)
Links
License
MIT
| |