Skip to content

Feature Configuration ​

The Feature Configuration page controls modules that were compiled into the firmware. Settings are stored in LittleFS at /config/features.json and take effect after Save and Restart.

Activation Rules ​

text
compiled AND userEnabled AND budgetPassed AND NOT runtimeDisabled
FieldMeaning
compiledThe firmware contains the feature code
userEnabledThe user enabled the feature
budgetPassedThe startup DRAM/PSRAM budget check passed
runtimeDisabledRuntime memory protection temporarily stopped the feature
activeThe feature and all dependencies are currently available
lockedThe build or partition cannot support the feature
deferredInitialization is waiting for the network

If memory is insufficient, initialization is skipped, a [BUDGET] message is logged, and /api/system/status reports no-memory. The budget is evaluated again at restart.

Core management entries such as Device Config, Network Config, and Feature Configuration remain visible. An optional feature menu is visible only when the feature is compiled and active. A feature excluded from the build is locked and labeled Not compiled into firmware.

Memory Degradation ​

At SEVERE memory pressure, the system keeps network and Web management available first. MQTTS falls back to MQTT, while Modbus, Peripheral Exec workers and timers, scripts, and memory-heavy optional peripherals may pause. Their JSON configuration is not deleted. Services are rebuilt when memory recovers.

If pressure remains CRITICAL, MQTT may be persistently disabled. Save and enable it again from Protocol Configuration after resolving the memory shortage.

Release Defaults ​

Release environments share a common feature baseline, with hardware-specific overrides for capabilities such as OTA and IR.

GroupFeature KeysDefaultNotes
NetworkwebServer, mdnsOnKeeps the management entry available
Peripheralslcd, neopixel, sevenSegment, ds18b20OffEnable only with matching hardware
PeripheralslcdGb2312, i2cSensors, rfid, irRemote, rfLearn, ds1302, lcd1602OffDepends on LCD, I2C, SPI, RMT, or three-wire hardware
Protocolsmodbus, mqttsOffMQTTS depends on MQTT; Modbus needs UART/RS485
AutomationruleScript, commandScriptOffcommandScript depends on ruleScript
SystemdeviceControl, ota, logViewer, fileLogging, userAdminOffOTA also requires an A/B partition
Network extensionsethernet, cellular, bleOffRequires matching hardware; BLE is not a release path

Use the page or /api/features/status as the source of truth for the current build. The 4MB environments lock OTA. esp32-F4R0, esp32c3-F4R0, esp32c6-F4R0, and esp32c6-F8R0 do not compile Ethernet or Cellular support.

Apply a Change ​

  1. Open Feature Configuration in the device Web console.
  2. Check the compile state and hardware dependency before enabling a feature.
  3. Save and restart the device.
  4. Confirm active and review Health Monitor after restart.

Runtime switches do not reduce the firmware image size. Flash-size reduction requires changing build flags in platformio.ini and rebuilding the firmware and Web assets.

features.json stores the complete requested state. A legacy sparse file keeps its existing choices and is expanded after the first successful load. Use configuration export/import for migration instead of editing a live filesystem.

API Summary ​

EndpointPurpose
GET /api/features/statusReturn feature states and the resource summary
POST /api/features/configSave switches without restarting
POST /api/features/estimateEstimate Flash/RAM use without saving
POST /api/features/applySave settings and schedule a restart

Clients should wait for a successful apply response, then poll /api/health. A network-dependent feature may temporarily report deferred during startup. Low-memory Web requests may return 503; honor Retry-After before retrying.

FastBee | fastbee.cn