Skip to content

Configuration Reference

Firmware configuration is expressed as ESP-IDF Kconfig symbols in sdkconfig. C3PO generates the sdkconfig for a device during provisioning from the values you enter in the Provision view (provision/config.py::generate_sdkconfig). You can also build manually by composing config overlays. The tables below group the symbols that matter.

You normally do not edit this by hand

For most devices, set the fields in the C3PO Provision view and let it emit the sdkconfig. Edit Kconfig directly only for custom builds.

Device and network

Symbol Example Meaning
CONFIG_DEVICE_ID "esp32-home-01" Device identifier (also stored in fctry NVS)
CONFIG_NETWORK_WIFI y Use WiFi STA transport
CONFIG_WIFI_SSID "lab-net" WiFi SSID
CONFIG_WIFI_PASS "..." WiFi password
CONFIG_NETWORK_GPRS y Use GPRS/PPP transport (instead of WiFi)
CONFIG_GPRS_APN "sl2sfr" Cellular APN
CONFIG_SERVER_IP "192.168.1.100" C3PO server address
CONFIG_SERVER_PORT 2626 C3PO server port

Exactly one of CONFIG_NETWORK_WIFI or CONFIG_NETWORK_GPRS is set.

Crypto

Symbol Value Meaning
CONFIG_CRYPTO_FCTRY_NS "crypto" fctry NVS namespace holding the master key
CONFIG_CRYPTO_FCTRY_KEY "master_key" NVS key name for the 32-byte master key
CONFIG_MBEDTLS_CHACHA20_C y ChaCha20 cipher
CONFIG_MBEDTLS_POLY1305_C y Poly1305 authenticator
CONFIG_MBEDTLS_CHACHAPOLY_C y ChaCha20-Poly1305 AEAD
CONFIG_MBEDTLS_HKDF_C y HKDF key derivation

Flash and partitions

Symbol Value Meaning
CONFIG_ESPTOOLPY_FLASHSIZE_4MB y 4 MB flash assumed
CONFIG_PARTITION_TABLE_CUSTOM y Use the custom partition table
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME "partitions.csv" Partition table file

See flash layout for the partition map.

ESPM (module loader)

Symbol Value Meaning
CONFIG_MOD_ENABLE y Enable module loading
CONFIG_ESPM_PERSIST_ENABLE y Allow modules to persist to NVS and autoload
CONFIG_ESPM_VERIFY_ENABLE y Verify the HMAC-SHA256 module signature before load
CONFIG_ESPM_MAX_MODULES 8 Concurrent module slots
CONFIG_ESPM_MAX_CODE_SIZE 65536 Max .text per module
CONFIG_ESPM_MAX_DATA_SIZE 32768 Max .data + .bss per module

OTA

Symbol Value Meaning
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE y TLS certificate bundle for HTTPS OTA
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL y Full certificate set
CONFIG_ESPILON_OTA_ALLOW_HTTP n Allow plain HTTP OTA (test only; off by default)

Camera (planned)

Provisioning emits CONFIG_ESPM_CAMERA_ENABLE=y when a camera board profile is selected, but camera support is not wired in the current firmware (no camera syscalls in the ESPM ABI yet). This symbol is reserved for a future camera release. See planned modules.

GPRS pins (cellular builds)

These come from the board overlay (configs/boards/<board>) rather than being typed in:

Symbol T-CALL T-SIM7070G
CONFIG_GPRS_TXD_PIN 17 27
CONFIG_GPRS_RXD_PIN 16 26
CONFIG_GPRS_PWR_KEY 4 4
CONFIG_GPRS_RESET_PIN 5 -1
CONFIG_GPRS_PWR_EN 23 25

Chip-specific

Chip Important symbols
ESP32-C6 CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT=n (allow ESPM dynamic loading)
ESP32-S3 CONFIG_SPIRAM=y, CONFIG_SPIRAM_USE_MALLOC=y, CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
ESP32-S3 v0.2 CONFIG_BT_ENABLED=n (BLE errata, frees ~28 KB)

Config overlays (manual builds)

The firmware composes a base overlay with a chip or board overlay:

idf.py set-target esp32c6
idf.py -D SDKCONFIG_DEFAULTS='configs/base;configs/esp32c6' build

Available overlays: configs/base, configs/esp32, configs/esp32c3, configs/esp32c6, configs/esp32s3, configs/esp32s3-v0.2, configs/esp32s3-cam, and the GPRS board overlays configs/boards/t-call and configs/boards/t-sim7070g.

See also