14 · Compile-time configuration¶
Only the topics the web interface doesn't cover are left here. A great many things are by now configurable at runtime via the web interface (see the migration table at the end of this page).
Status of this page
Tables derived from the firmware code (current dev state). Keep in sync with code changes.
Do I even need my own flags?¶
Usually not at all – the pre-built firmware (tier 1) fits most people. Custom flags are only worth it for different hardware or the few genuine compile-time values below.
Override mechanism¶
Custom settings belong in a settings-override.h (or, for your own board via HAL 99, a
settings-custom.h), so an update doesn't overwrite them.
Remaining feature flags (genuinely compile-time)¶
| Flag | Purpose |
|---|---|
HAL |
Board selection (see below) |
LANGUAGE |
Language of the serial output (≠ web interface language) |
SERIAL_LOGLEVEL |
Log level of the serial console |
CHIPSET / COLOR_ORDER |
Neopixel type (FastLED template, not at runtime) |
MDNS_ENABLE |
ESPuino.local reachable |
MQTT_ENABLE |
MQTT integration |
FTP_ENABLE |
FTP server |
NEOPIXEL_ENABLE |
Neopixel LEDs |
BLUETOOTH_ENABLE |
Bluetooth (→ "noBT" firmware when off) |
MEASURE_BATTERY_VOLTAGE |
Battery measurement |
USEROTARY_ENABLE |
Rotary encoder |
HEADPHONE_ADJUST_ENABLE |
Headphone detection/stereo for the headphone board |
SHUTDOWN_IF_SD_BOOT_FAILS |
Deep sleep on SD boot failure |
PORT_EXPANDER_ENABLE |
PCA9555 port expander |
SD_MMC_1BIT_MODE |
SD in SD-MMC 1-bit mode |
I2C_2_ENABLE |
second I²C bus |
INCLUDE_ROTARY_IN_CONTROLS_LOCK |
Lock the encoder along with the buttons |
INVERT_POWER / DETECT_HP_ON_HIGH |
Board logic (power / headphone detection) |
IR remote (RC_*, IR_DEBOUNCE) |
Infrared codes |
Pin definitions¶
Board-specific in the headers (settings-complete.h, settings-lolin_d32_pro_sdmmc_pe.h). See also
appendix → pinout.
Values only via settings.h (no web interface)¶
| Value | Location | Purpose |
|---|---|---|
deepsleepTimeAfterBootFails = 20 |
settings.h |
Auto-restart after an SD boot failure (seconds) |
rdiv1, rdiv2, inputAttenuation |
settings-complete.h |
Battery calibration (voltage divider/ADC) |
RC_*, IR_DEBOUNCE |
settings-complete.h |
IR remote codes |
| Pin definitions | Board header | see above |
offsetVoltage is now in the web interface
The battery correction value offsetVoltage has been settable in the web interface
(battery settings) since September 2026 and is therefore no longer listed here.
Seek step sizes are now in the web interface
The two seek step sizes are also settable in the web interface since September 2026
(chapter 8 → seek step sizes) and are therefore no
longer in this table: the one per button press (formerly jumpOffset) and the one per
rotary encoder detent (formerly JUMP_OFFSET_ROTARY). Both constants have disappeared from
settings.h and now only live on as internal default values (SEEK_STEP_BUTTON_DEFAULT /
SEEK_STEP_ROTARY_DEFAULT) in values.h. Important for self-builds: a
settings-override.h that still defines them no longer has any effect.
Precedence rule¶
Web interface > settings.h. A value set in the web interface (NVS) wins over the compile-time
default. A settings-override.h that still defines an option that has long since moved to the web
interface simply has no effect anymore.
Migration table: "formerly settings.h → now the web interface"¶
These used to be compile-time macros and are now in the web interface:
Formerly (settings.h) |
Now in the web interface |
|---|---|
STATIC_IP_ENABLE |
Static IP (per network) |
PLAY_LAST_RFID_AFTER_REBOOT |
"Resume last card after restart" |
PAUSE_WHEN_RFID_REMOVED |
"Pause when card is removed" |
DONT_ACCEPT_SAME_RFID_TWICE |
"Don't re-accept the same card" |
RESUME_ON_SAME_RFID |
"Resume on the same card" |
NEOPIXEL_REVERSE_ROTATION |
Neopixel rotation direction |
SHUTDOWN_ON_BAT_CRITICAL |
"Shut down at critical voltage" |
PLAY_MONO_SPEAKER |
Mono/stereo |
RFID_SCAN_INTERVAL |
MFRC522 scan interval |
LED defaults (NUM_*_LEDS, *_HUE_*, ATMO_*, DIMMABLE_STATES, LED_OFFSET) |
Neopixel brightness / gradient / layout |
Battery thresholds (s_warning*, s_voltageIndicator*, s_batteryCheckInterval) |
Battery settings |
| Volumes (initial / min / max, speaker + headphones) | Volume settings |
maxInactivityTime |
Deep sleep inactivity |
| Button mapping | Dynamic button layout |
| RC522 gain | RFID settings |
savePos* (shutdown / card change / interval) |
Audiobook settings |
| Recursion depth | Sorting/recursion |