; T-Deck environment using Bluedroid BLE stack (fallback, uses more RAM) [env:tdeck-bluedroid] extra_scripts = pre:version.py pre:generate_splash.py platform = espressif32 board = esp32-s3-devkitc-1 framework = arduino ; T-Deck Plus has ESP32-S3 with 8MB Flash + 8MB PSRAM board_build.flash_mode = qio board_build.partitions = partitions.csv board_build.arduino.memory_type = qio_opi board_upload.flash_size = 8MB ; Enable PSRAM (required for LVGL buffers) board_build.arduino.psram_type = opi ; Serial monitor monitor_speed = 115200 monitor_filters = esp32_exception_decoder time ; Dependencies lib_deps = lvgl/lvgl@^8.3.11 bblanchon/ArduinoJson@^7.4.2 hideakitai/MsgPack@^0.4.2 rweather/Crypto@^0.4.0 mikalhart/TinyGPSPlus@^1.0.3 jgromes/RadioLib@^6.0 WiFi SPI Wire SPIFFS tdeck_ui universal_filesystem sx1262_interface tone auto_interface ble_interface lxst_audio sh123/esp32_codec2@^1.0.7 symlink://${PROJECT_DIR}/deps/microReticulum/lib/libbz2 ; Library dependency finder mode (deep search) lib_ldf_mode = deep+ lib_extra_dirs = deps/microReticulum ; Build configuration build_type = release build_flags = -std=gnu++11 -DBOARD_HAS_PSRAM -DBOARD_ESP32 ; Arduino loop task stack — Codec2 decode (lpc_post_filter + kiss_fft) ; uses ~6KB stack on top of ~10KB normal peak. 24KB gives safe headroom. -DARDUINO_LOOP_STACK_SIZE=24576 -DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_USB_MODE=1 -DLV_CONF_INCLUDE_SIMPLE -Ilib -Ideps/microReticulum/lib/libbz2 -Ideps/microReticulum/src -DBZ_NO_STDIO -DUSE_BLUEDROID -Os -DCORE_DEBUG_LEVEL=2 ; Enable memory instrumentation (heap/stack monitoring) ; Remove this flag to disable instrumentation and eliminate overhead -DMEMORY_INSTRUMENTATION_ENABLED ; Enable boot profiling (timing instrumentation for setup phases) ; Remove this flag to disable boot profiling -DBOOT_PROFILING_ENABLED ; Reduce log verbosity during boot for faster startup ; CORE_DEBUG_LEVEL=2 (WARNING) reduces INFO-level log output -DBOOT_REDUCED_LOGGING ; Default T-Deck environment using NimBLE BLE stack (uses ~100KB less RAM than Bluedroid) [env:tdeck] extra_scripts = pre:version.py pre:generate_splash.py pre:patch_nimble.py platform = espressif32 board = esp32-s3-devkitc-1 framework = arduino ; T-Deck Plus has ESP32-S3 with 8MB Flash + 8MB PSRAM board_build.flash_mode = qio board_build.partitions = partitions.csv board_build.arduino.memory_type = qio_opi board_upload.flash_size = 8MB ; Enable PSRAM (required for LVGL buffers) board_build.arduino.psram_type = opi ; Serial monitor monitor_speed = 115200 monitor_filters = esp32_exception_decoder time ; Library dependency finder mode (deep search) lib_ldf_mode = deep+ lib_extra_dirs = deps/microReticulum ; Build type build_type = release lib_deps = lvgl/lvgl@^8.3.11 bblanchon/ArduinoJson@^7.4.2 hideakitai/MsgPack@^0.4.2 rweather/Crypto@^0.4.0 mikalhart/TinyGPSPlus@^1.0.3 jgromes/RadioLib@^6.0 WiFi SPI Wire SPIFFS tdeck_ui universal_filesystem sx1262_interface tone auto_interface h2zero/NimBLE-Arduino@^2.1.0 ble_interface lxst_audio sh123/esp32_codec2@^1.0.7 symlink://${PROJECT_DIR}/deps/microReticulum/lib/libbz2 ; Build configuration build_flags = -std=gnu++11 -DBOARD_HAS_PSRAM -DBOARD_ESP32 ; Arduino loop task stack — Codec2 decode (lpc_post_filter + kiss_fft) ; uses ~6KB stack on top of ~10KB normal peak. 24KB gives safe headroom. -DARDUINO_LOOP_STACK_SIZE=24576 -DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_USB_MODE=1 -DLV_CONF_INCLUDE_SIMPLE -Ilib -Ideps/microReticulum/lib/libbz2 -Ideps/microReticulum/src -DBZ_NO_STDIO -DUSE_NIMBLE -DCONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=1 -Os -DCORE_DEBUG_LEVEL=2 ; Enable memory instrumentation (heap/stack monitoring) ; Remove this flag to disable instrumentation and eliminate overhead -DMEMORY_INSTRUMENTATION_ENABLED ; Enable boot profiling (timing instrumentation for setup phases) ; Remove this flag to disable boot profiling -DBOOT_PROFILING_ENABLED ; Reduce log verbosity during boot for faster startup ; CORE_DEBUG_LEVEL=2 (WARNING) reduces INFO-level log output -DBOOT_REDUCED_LOGGING ; OTA flashing environment (wireless upload via ArduinoOTA) ; Usage: pio run -e tdeck-ota -t upload [env:tdeck-ota] extends = env:tdeck upload_protocol = custom upload_command = "$PYTHONEXE" tools/espota.py -i pyxis-tdeck.local -p 3232 -f $SOURCE