Menuconfig Guide¶
ESP-IDF's menuconfig is the primary tool for configuring Espilon firmware before building.
Launching Menuconfig¶
This opens an ncurses-based configuration menu.
Navigation¶
- Arrow Keys: Move up/down
- Enter: Select submenu or toggle option
- Space: Toggle checkbox options
- Y: Enable option
- N: Disable option
- /: Search for option
- ?: Help for selected option
- S: Save configuration
- Q: Quit (prompts to save)
Espilon Configuration¶
Navigate to: Espilon Bot Configuration
Device Settings¶
Purpose: Unique identifier for this device
Format: 8 hexadecimal characters
Example: "a1b2c3d4"
Network Mode¶
WiFi Mode (default): - For ESP32-DevKit and most boards - Requires WiFi SSID and password - 802.11 b/g/n support
GPRS Mode: - For LilyGO T-Call only - Requires SIM card and APN - 2G cellular connectivity
WiFi Settings¶
│ ├─ WiFi Settings (depends on WiFi mode)
│ │ ├─ WiFi SSID: "YourNetwork"
│ │ └─ WiFi Password: "YourPassword"
SSID: Name of WiFi network Password: WPA/WPA2 password (leave empty for open networks)
GPRS Settings¶
APN: Access Point Name from your carrier
Common APNs:
- SFR (France): sl2sfr
- Orange (France): orange.fr
- AT&T (USA): phone
- T-Mobile (USA): fast.t-mobile.com
Server Configuration¶
Server IP: IP address of your C2 server Server Port: TCP port (default 2626)
Public IP for GPRS
GPRS mode requires a public IP or VPN. Local IPs (192.168.x.x) won't work.
Module Selection¶
Network Module (recommended): - ping, arp_scan, port_scan - Basic network operations - ~40KB flash
Recon Module (advanced): - WiFi monitoring - BLE tracking - Requires extra flash/RAM
FakeAP Module (advanced): - Rogue access points - Captive portals - Requires WiFi mode
Recon Module Settings¶
├─ Recon Settings (depends on Recon Module)
│ ├─ [ ] Enable Camera Reconnaissance
│ └─ [ ] Enable BLE Trilateration Reconnaissance
Camera: Requires ESP32-CAM board BLE: Bluetooth Low Energy tracking
Security¶
Cryptographic keys are not configured via menuconfig. They are generated by deploy.py
during provisioning and written directly to the factory NVS partition (0x10000) on the device.
The relevant Kconfig options that deploy.py sets automatically:
CONFIG_CRYPTO_FCTRY_NS="crypto" # NVS namespace for the master key
CONFIG_CRYPTO_FCTRY_KEY="master_key" # NVS key name
See Deploy System for full provisioning details.
Important ESP-IDF Settings¶
Flash Size¶
Navigate to: Serial flasher config → Flash size
Set according to your board: - Most boards: 4MB - Some boards: 8MB or 16MB
Partition Table¶
Navigate to: Partition Table → Partition Table
Recommended: Single factory app, no OTA
For OTA updates: Factory app, two OTA definitions
Log Level¶
Navigate to: Component config → Log output → Default log verbosity
Development: Info or Debug Production: Warning or Error
WiFi Configuration¶
Navigate to: Component config → Wi-Fi
Recommended settings: - WiFi Task Core ID: Core 0 - Max Number of Connections: 4 - WiFi NVS Flash: Enabled
FreeRTOS¶
Navigate to: Component config → FreeRTOS
Default settings work for most cases.
For memory-constrained boards: - Tick rate (Hz): 100 (default 1000) - Minimum task stack size: 1024 (default 1536)
Configuration File¶
Configuration is saved to:
This file is auto-generated from sdkconfig.defaults.
Using sdkconfig.defaults¶
Create sdkconfig.defaults for version control:
# Device
CONFIG_DEVICE_ID="ce4f626b"
# Network
CONFIG_NETWORK_WIFI=y
CONFIG_WIFI_SSID="MyNetwork"
CONFIG_WIFI_PASS="MyPassword"
# Server
CONFIG_SERVER_IP="192.168.1.100"
CONFIG_SERVER_PORT=2626
# Modules
CONFIG_MODULE_NETWORK=y
CONFIG_MODULE_RECON=n
CONFIG_MODULE_FAKEAP=n
# Crypto (NVS namespace/key — actual master key written by deploy.py)
CONFIG_CRYPTO_FCTRY_NS="crypto"
CONFIG_CRYPTO_FCTRY_KEY="master_key"
Then:
rm sdkconfig # Force regeneration
idf.py -D SDKCONFIG_DEFAULTS=sdkconfig.defaults reconfigure
idf.py build
Common Configurations¶
WiFi Development Board¶
Network Mode: WiFi
WiFi SSID: "YourLab"
WiFi Pass: "LabPassword"
Server IP: "192.168.1.100"
Modules: Network only
LilyGO T-Call GPRS¶
ESP32-CAM Recon¶
Troubleshooting¶
Configuration Not Saved¶
Problem: Changes revert after rebuild
Solution: Press S to save before quitting
Module Option Missing¶
Problem: Can't find Espilon configuration
Solution: Ensure you're in espilon_bot directory, not root
Build Fails After Config Change¶
Problem: Compilation errors after enabling module
Solution: Clean and rebuild:
Default Values Wrong¶
Problem: menuconfig shows old defaults
Solution: Delete sdkconfig and regenerate:
Next Steps¶
- Network Settings Details - WiFi and GPRS configuration
- Module Selection Guide - Choose the right modules
- Security Best Practices - Secure your deployment
Previous: Hardware | Next: Network Configuration