A lightweight, Unix-like interactive shell and firmware for the ESP32 built on top of FreeRTOS, LittleFS, and the Duktape JavaScript engine.
Developed in the Arduino IDE, this project provides a universal, zero-hassle way to get a functional command-line interface and script execution environment running on your microcontroller in under two minutes.
Created as part of a Master's Dissertation in Informatics & Computer Engineering.
- Universal Arduino Setup: Easy to build, customize, and flash via the standard Arduino IDE.
- Dual Interface: Full shell access via standard Serial CLI or over a lightweight Web Interface.
- Embedded JS Engine: Run JavaScript scripts directly on the hardware powered by Duktape.
- File System Support: Native LittleFS integration for managing files and scripts on flash memory.
- Multi-tasking Core: Built on FreeRTOS for responsive multitasking.
- IDE: Arduino IDE (with ESP32 board support installed)
- Target Board: ESP32 (e.g., select Node32S or standard ESP32 Dev Module)
- Clone or download this repository.
- Open
ESP32-web-shell.inoin the Arduino IDE. - Select your board and COM port.
- Set the Serial Monitor baud rate to
115200. - Upload the sketch to your ESP32.
By default, the system operates over the Serial Monitor. To switch on the Web Shell:
- Open the configuration file located at
init/config.txt. - Change the
web_interfacevariable to1. - Re-upload or save to your LittleFS image.
- Connect to the ESP32 Access Point from your Wi-Fi settings:
- SSID:
ESP32-Shell(or your configured AP name) - Default Password:
12345678
- SSID:
- Open your browser and navigate to:
[http://192.168.4.1](http://192.168.4.1)