Skip to content

Version 2.0

badge badge badge badge badge

This version is the development version, features can change anytime, feedback, PR and suggestions are welcome.

ESP3D-X is designed around three axes:

  1. Connectivity — How the pendant talks to the machine: UART, Bluetooth (BLE / BTSerial), or IP (TCP / WebSocket)
  2. Board / Inputs — Physical peripherals: TFT, touch, rotary encoder, buttons, buzzer, SD card, etc.
  3. Machine persona — The UI adapts to the target controller (CNC vs 3D printer)

Connectivity (serial / BT / WiFi IP)

Shared core (G-code host, settings, commands)

Board BSP (inputs)

Target FW persona (CNC vs 3D UI)

LVGL UI

The repository uses a central launcher build_all.py that discovers board-specific build scripts under boards/<board>/build_scripts/.

  • python build_all.py --list : list all available build targets.
  • python build_all.py --validate : validate that build scripts only use supported CMake options.
  • python build_all.py : build every discovered variant.
  • python build_all.py 8mb_wifi_fluidnc : build only the 8MB WiFi FluidNC variant.
  • python build_all.py --clean 4mb_bt_fluidnc : clean and rebuild the 4MB BT FluidNC variant.
  • python build_all.py --clean-all : clean all build directories before building every discovered variant.

The configuration options are defined in CMakeLists.txt. They are separated into two categories:

  • Features : software and service options that can be enabled or disabled.
  • Capabilities : hardware capabilities inherent to the board, declared in boards/<board>/board_config.cmake.

Note: when adding a new CMake option, update the option list in boards/<board>/build_scripts/variants.py and run python validate_build_scripts.py to verify consistency.

OptionDescription
TFT_UI_SERVICEenables the TFT display interface on boards that include it
SD_CARD_SERVICEenables SD card support on boards that include it
BUZZER_SERVICEenables the hardware buzzer
TFT_TOUCH_SERVICEenables the touch panel on the TFT display
OptionDescription
ESP32_PIBOT_CNC_PENDANT_V1selects the PiBot CNC Pendant V1.0 hardware target
MEMORY_4_MB / MEMORY_8_MBchooses the flash size variant
TARGET_FW_MARLINselects the Marlin firmware target
TARGET_FW_REPETIERselects the Repetier firmware target
TARGET_FW_SMOOTHIEWAREselects the Smoothieware firmware target
TARGET_FW_GRBLselects the GRBL firmware target
TARGET_FW_GRBLHALselects the grblHAL firmware target
TARGET_FW_FLUIDNCselects the FluidNC firmware target
SERIAL_SERVICEenables serial transport
USB_SERIAL_SERVICEenables USB serial transport
WIFI_SERVICEenables WiFi network services
BT_SERVICEenables Bluetooth services
ESP3D_AUTHENTICATIONenables client authentication
MDNS_SERVICEenables mDNS service
SSDP_SERVICEenables SSDP discovery
TIME_SERVICEenables time/NTP service
WEB_SERVICESenables HTTP/WebSocket/WebDAV services
SOCKET_SERVER_SERVICEenables incoming TCP socket server
SOCKET_CLIENT_SERVICEenables outgoing TCP socket client
NOTIFICATIONS_SERVICEenables the notification system
WEBUI_SERVERenables the WebUI server
WEBDAV_SERVICESenables WebDAV services
WS_SERVER_SERVICEenables incoming WebSocket server
WS_CLIENT_SERVICEenables outgoing WebSocket client
USE_FAT_INSTEAD_OF_LITTLEFSuses FAT filesystem instead of LittleFS
UPDATE_SERVICEenables OTA / SD card update support