Merge branch 'develop' into t-watch-s3-plus

This commit is contained in:
Manuel
2026-01-09 18:21:28 +01:00
committed by GitHub
274 changed files with 8356 additions and 2679 deletions

View File

@@ -15,4 +15,5 @@ upload_protocol = esptool
upload_speed = 460800
lib_deps =
${esp32_base.lib_deps}
adafruit/Adafruit NeoPixel @ ^1.12.0
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
adafruit/Adafruit NeoPixel@1.15.2

View File

@@ -13,5 +13,3 @@ board_build.f_cpu = 240000000L
upload_protocol = esptool
;upload_port = /dev/ttyUSB0
upload_speed = 460800
lib_deps =
${esp32_base.lib_deps}

View File

@@ -9,4 +9,5 @@ build_flags =
lib_deps =
${esp32_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7

View File

@@ -1,5 +1,12 @@
; Port to Disaster Radio's ESP32-v3 Dev Board
[env:meshtastic-dr-dev]
custom_meshtastic_hw_model = 41
custom_meshtastic_hw_model_slug = DR_DEV
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = false
custom_meshtastic_display_name = DR-DEV
custom_meshtastic_tags = DIY
extends = esp32_base
board = esp32doit-devkit-v1
board_level = extra

View File

@@ -1,5 +1,13 @@
; Hydra - Meshtastic DIY v1 hardware with some specific changes
[env:hydra]
custom_meshtastic_hw_model = 39
custom_meshtastic_hw_model_slug = HYDRA
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Hydra
custom_meshtastic_tags = DIY
extends = esp32_base
board = esp32doit-devkit-v1
build_flags =

View File

@@ -1,5 +1,14 @@
; Meshtastic DIY v1 by Nano VHF Schematic based on ESP32-WROOM-32 (38 pins) devkit & EBYTE E22 SX1262/SX1268 module
[env:meshtastic-diy-v1]
custom_meshtastic_hw_model = 39
custom_meshtastic_hw_model_slug = DIY_V1
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = DIY V1
custom_meshtastic_images = diy.svg
custom_meshtastic_tags = DIY
extends = esp32_base
board = esp32doit-devkit-v1
board_check = true

View File

@@ -0,0 +1,87 @@
; Common settings for ESP targets, mixin with extends = esp32_common
[esp32_common]
extends = arduino_base
custom_esp32_kind =
custom_mtjson_part =
platform =
# renovate: datasource=custom.pio depName=platformio/espressif32 packageName=platformio/platform/espressif32
platformio/espressif32@6.12.0
extra_scripts =
${env.extra_scripts}
pre:extra_scripts/esp32_pre.py
extra_scripts/esp32_extra.py
build_src_filter =
${arduino_base.build_src_filter} -<platform/nrf52/> -<platform/stm32wl> -<platform/rp2xx0> -<mesh/eth/> -<mesh/raspihttp>
upload_speed = 921600
debug_init_break = tbreak setup
monitor_filters = esp32_exception_decoder
board_build.filesystem = littlefs
# Remove -DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL for low level BLE logging.
# See library directory for BLE logging possible values: .pio/libdeps/tbeam/NimBLE-Arduino/src/log_common/log_common.h
# This overrides the BLE logging default of LOG_LEVEL_INFO (1) from: .pio/libdeps/tbeam/NimBLE-Arduino/src/esp_nimble_cfg.h
build_unflags = -fno-lto
build_flags =
${arduino_base.build_flags}
-flto
-Wall
-Wextra
-Isrc/platform/esp32
-std=c++11
-DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG
-DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG
-DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL
-DAXP_DEBUG_PORT=Serial
-DCONFIG_BT_NIMBLE_ENABLED
-DCONFIG_BT_NIMBLE_MAX_BONDS=6 # default is 3
-DCONFIG_NIMBLE_CPP_LOG_LEVEL=2
-DCONFIG_BT_NIMBLE_MAX_CCCDS=20
-DCONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192
-DESP_OPENSSL_SUPPRESS_LEGACY_WARNING
-DSERIAL_BUFFER_SIZE=4096
-DSERIAL_HAS_ON_RECEIVE
-DLIBPAX_ARDUINO
-DLIBPAX_WIFI
-DLIBPAX_BLE
-DHAS_UDP_MULTICAST=1
;-DDEBUG_HEAP
lib_deps =
${arduino_base.lib_deps}
${networking_base.lib_deps}
${networking_extra.lib_deps}
${environmental_base.lib_deps}
${environmental_extra.lib_deps}
${radiolib_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-esp32_https_server packageName=https://github.com/meshtastic/esp32_https_server gitBranch=master
https://github.com/meshtastic/esp32_https_server/archive/3223704846752e6d545139204837bdb2a55459ca.zip
# renovate: datasource=custom.pio depName=NimBLE-Arduino packageName=h2zero/library/NimBLE-Arduino
h2zero/NimBLE-Arduino@^1.4.3
# renovate: datasource=git-refs depName=libpax packageName=https://github.com/dbinfrago/libpax gitBranch=master
https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip
# renovate: datasource=github-tags depName=XPowersLib packageName=lewisxhe/XPowersLib
https://github.com/lewisxhe/XPowersLib/archive/v0.3.2.zip
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
# renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto
rweather/Crypto@0.4.0
lib_ignore =
segger_rtt
ESP32 BLE Arduino
; leave this commented out to avoid breaking Windows
;upload_port = /dev/ttyUSB0
;monitor_port = /dev/ttyUSB0
; Please don't delete these lines. JM uses them.
;upload_port = /dev/cu.SLAB_USBtoUART
;monitor_port = /dev/cu.SLAB_USBtoUART
; customize the partition table
; http://docs.platformio.org/en/latest/platforms/espressif32.html#partition-tables
board_build.partitions = partition-table.csv

View File

@@ -1,86 +1,8 @@
; Common settings for ESP targes, mixin with extends = esp32_base
; Common settings for ESP32 OG (without suffix)
; See 'esp32_common' for common ESP32-family settings
[esp32_base]
extends = arduino_base
extends = esp32_common
custom_esp32_kind = esp32
custom_mtjson_part =
platform =
# renovate: datasource=custom.pio depName=platformio/espressif32 packageName=platformio/platform/espressif32
platformio/espressif32@6.12.0
extra_scripts =
${env.extra_scripts}
pre:extra_scripts/esp32_pre.py
extra_scripts/esp32_extra.py
build_src_filter =
${arduino_base.build_src_filter} -<platform/nrf52/> -<platform/stm32wl> -<platform/rp2xx0> -<mesh/eth/> -<mesh/raspihttp>
upload_speed = 921600
debug_init_break = tbreak setup
monitor_filters = esp32_exception_decoder
board_build.filesystem = littlefs
# Remove -DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL for low level BLE logging.
# See library directory for BLE logging possible values: .pio/libdeps/tbeam/NimBLE-Arduino/src/log_common/log_common.h
# This overrides the BLE logging default of LOG_LEVEL_INFO (1) from: .pio/libdeps/tbeam/NimBLE-Arduino/src/esp_nimble_cfg.h
build_unflags = -fno-lto
build_flags =
${arduino_base.build_flags}
-flto
-Wall
-Wextra
-Isrc/platform/esp32
-std=c++11
-DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG
-DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG
-DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL
-DAXP_DEBUG_PORT=Serial
-DCONFIG_BT_NIMBLE_ENABLED
-DCONFIG_BT_NIMBLE_MAX_BONDS=6 # default is 3
-DCONFIG_NIMBLE_CPP_LOG_LEVEL=2
-DCONFIG_BT_NIMBLE_MAX_CCCDS=20
-DCONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192
-DESP_OPENSSL_SUPPRESS_LEGACY_WARNING
-DSERIAL_BUFFER_SIZE=4096
-DSERIAL_HAS_ON_RECEIVE
-DLIBPAX_ARDUINO
-DLIBPAX_WIFI
-DLIBPAX_BLE
-DHAS_UDP_MULTICAST=1
;-DDEBUG_HEAP
lib_deps =
${arduino_base.lib_deps}
${networking_base.lib_deps}
${environmental_base.lib_deps}
${environmental_extra.lib_deps}
${radiolib_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-esp32_https_server packageName=https://github.com/meshtastic/esp32_https_server gitBranch=master
https://github.com/meshtastic/esp32_https_server/archive/3223704846752e6d545139204837bdb2a55459ca.zip
# renovate: datasource=custom.pio depName=NimBLE-Arduino packageName=h2zero/library/NimBLE-Arduino
h2zero/NimBLE-Arduino@^1.4.3
# renovate: datasource=git-refs depName=libpax packageName=https://github.com/dbinfrago/libpax gitBranch=master
https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip
# renovate: datasource=github-tags depName=XPowersLib packageName=lewisxhe/XPowersLib
https://github.com/lewisxhe/XPowersLib/archive/v0.3.2.zip
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
# renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto
rweather/Crypto@0.4.0
lib_ignore =
segger_rtt
ESP32 BLE Arduino
; leave this commented out to avoid breaking Windows
;upload_port = /dev/ttyUSB0
;monitor_port = /dev/ttyUSB0
; Please don't delete these lines. JM uses them.
;upload_port = /dev/cu.SLAB_USBtoUART
;monitor_port = /dev/cu.SLAB_USBtoUART
; customize the partition table
; http://docs.platformio.org/en/latest/platforms/espressif32.html#partition-tables
board_build.partitions = partition-table.csv
${esp32_common.build_flags}

View File

@@ -1,4 +1,11 @@
[env:heltec-v1]
custom_meshtastic_hw_model = 11
custom_meshtastic_hw_model_slug = HELTEC_V1
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = false
custom_meshtastic_display_name = Heltec V1
custom_meshtastic_tags = Heltec
;build_type = debug ; to make it possible to step through our jtag debugger
extends = esp32_base
board_level = extra

View File

@@ -1,4 +1,11 @@
[env:heltec-v2_1]
custom_meshtastic_hw_model = 10
custom_meshtastic_hw_model_slug = HELTEC_V2_1
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = false
custom_meshtastic_display_name = Heltec V2.1
custom_meshtastic_tags = Heltec
board_level = extra
;build_type = debug ; to make it possible to step through our jtag debugger
extends = esp32_base

View File

@@ -1,4 +1,11 @@
[env:heltec-v2_0]
custom_meshtastic_hw_model = 5
custom_meshtastic_hw_model_slug = HELTEC_V2_0
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = false
custom_meshtastic_display_name = Heltec V2.0
custom_meshtastic_tags = Heltec
;build_type = debug ; to make it possible to step through our jtag debugger
board_level = extra
extends = esp32_base

View File

@@ -1,4 +1,12 @@
[env:m5stack-core]
custom_meshtastic_hw_model = 42
custom_meshtastic_hw_model_slug = M5STACK
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = M5 Stack
custom_meshtastic_tags = M5Stack
extends = esp32_base
board = m5stack-core-esp32
monitor_filters = esp32_exception_decoder
@@ -25,4 +33,5 @@ lib_ignore =
m5stack-core
lib_deps =
${esp32_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7

View File

@@ -18,8 +18,10 @@ build_flags =
-DM5STACK
lib_deps =
${esp32_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
lewisxhe/PCF8563_Library@^1.0.1
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
zinggjm/GxEPD2@1.6.5
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
lewisxhe/SensorLib@0.3.3
lib_ignore =
m5stack-coreink
monitor_filters = esp32_exception_decoder

View File

@@ -13,7 +13,6 @@
#define LED_STATE_ON 1 // State when LED is lit
#define LED_PIN 10
#include "pcf8563.h"
// PCF8563 RTC Module
#define PCF8563_RTC 0x51
#define HAS_RTC 1

View File

@@ -1,9 +1,15 @@
; The 1.0 release of the nano-g1-explorer board
[env:nano-g1-explorer]
custom_meshtastic_hw_model = 17
custom_meshtastic_hw_model_slug = NANO_G1_EXPLORER
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Nano G1 Explorer
custom_meshtastic_tags = B&Q
extends = esp32_base
board = ttgo-t-beam
lib_deps =
${esp32_base.lib_deps}
build_flags =
${esp32_base.build_flags}
-D NANO_G1_EXPLORER

View File

@@ -1,9 +1,15 @@
; The 1.0 release of the nano-g1 board
[env:nano-g1]
custom_meshtastic_hw_model = 14
custom_meshtastic_hw_model_slug = NANO_G1
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Nano G1
custom_meshtastic_tags = B&Q
extends = esp32_base
board = ttgo-t-beam
lib_deps =
${esp32_base.lib_deps}
build_flags =
${esp32_base.build_flags}
-D NANO_G1

View File

@@ -13,4 +13,5 @@ board_build.f_cpu = 240000000L
upload_protocol = esptool
lib_deps =
${esp32_base.lib_deps}
# renovate: datasource=github-tags depName=STK8xxx-Accelerometer packageName=gjelsoe/STK8xxx-Accelerometer
https://github.com/gjelsoe/STK8xxx-Accelerometer/archive/v0.1.1.zip

View File

@@ -15,5 +15,3 @@ build_flags =
-I variants/esp32/radiomaster_900_bandit_nano
board_build.f_cpu = 240000000L
upload_protocol = esptool
lib_deps =
${esp32_base.lib_deps}

View File

@@ -1,4 +1,12 @@
[env:radiomaster_900_bandit_nano]
custom_meshtastic_hw_model = 64
custom_meshtastic_hw_model_slug = RADIOMASTER_900_BANDIT_NANO
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 2
custom_meshtastic_display_name = RadioMaster 900 Bandit Nano
custom_meshtastic_tags = RadioMaster
extends = esp32_base
board = esp32doit-devkit-v1
build_flags =
@@ -10,5 +18,3 @@ build_flags =
-I variants/esp32/radiomaster_900_bandit_nano
board_build.f_cpu = 240000000L
upload_protocol = esptool
lib_deps =
${esp32_base.lib_deps}

View File

@@ -1,4 +1,13 @@
[env:rak11200]
custom_meshtastic_hw_model = 13
custom_meshtastic_hw_model_slug = RAK11200
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = RAK WisBlock 11200
custom_meshtastic_images = rak11200.svg
custom_meshtastic_tags = RAK
extends = esp32_base
board = wiscore_rak11200
board_level = pr

View File

@@ -1,9 +1,15 @@
; The 1.0 release of the nano-g1 board
[env:station-g1]
custom_meshtastic_hw_model = 25
custom_meshtastic_hw_model_slug = STATION_G1
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Station G1
custom_meshtastic_tags = B&Q
extends = esp32_base
board = ttgo-t-beam
lib_deps =
${esp32_base.lib_deps}
build_flags =
${esp32_base.build_flags}
-D STATION_G1

View File

@@ -1,10 +1,18 @@
; The 1.0 release of the TBEAM board
[env:tbeam]
custom_meshtastic_hw_model = 4
custom_meshtastic_hw_model_slug = TBEAM
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = LILYGO T-Beam
custom_meshtastic_images = tbeam.svg
custom_meshtastic_tags = LilyGo
extends = esp32_base
board = ttgo-t-beam
board_check = true
lib_deps = ${esp32_base.lib_deps}
build_flags = ${esp32_base.build_flags}
-D TBEAM_V10
-I variants/esp32/tbeam
@@ -21,5 +29,7 @@ build_flags =
lib_deps =
${env:tbeam.lib_deps}
https://github.com/meshtastic/st7796/archive/refs/tags/1.0.5.zip ; display addon
lewisxhe/SensorLib@0.3.1 ; touchscreen addon
# renovate: datasource=github-tags depName=meshtastic-st7796 packageName=meshtastic/st7796
https://github.com/meshtastic/st7796/archive/1.0.5.zip
# renovate: datasource=custom.pio depName=lewisxhe-SensorLib packageName=lewisxhe/library/SensorLib
lewisxhe/SensorLib@0.3.3

View File

@@ -1,5 +1,12 @@
; The original TBEAM board without the AXP power chip and a few other changes
[env:tbeam0_7]
custom_meshtastic_hw_model = 6
custom_meshtastic_hw_model_slug = TBEAM_V0P7
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = false
custom_meshtastic_display_name = LILYGO T-Beam V0.7
custom_meshtastic_tags = LilyGo
board_level = extra
extends = esp32_base
board = ttgo-t-beam

View File

@@ -1,4 +1,11 @@
[env:tlora-v1]
custom_meshtastic_hw_model = 2
custom_meshtastic_hw_model_slug = TLORA_V1
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = false
custom_meshtastic_display_name = LILYGO T-LoRa V1
custom_meshtastic_tags = LilyGo
board_level = extra
extends = esp32_base
board = ttgo-lora32-v1

View File

@@ -1,4 +1,11 @@
[env:tlora-v2]
custom_meshtastic_hw_model = 1
custom_meshtastic_hw_model_slug = TLORA_V2
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = false
custom_meshtastic_display_name = LILYGO T-LoRa V2
custom_meshtastic_tags = LilyGo
board_level = extra
extends = esp32_base
board = ttgo-lora32-v1

View File

@@ -1,4 +1,13 @@
[env:tlora-v2-1-1_6]
custom_meshtastic_hw_model = 3
custom_meshtastic_hw_model_slug = TLORA_V2_1_1P6
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = LILYGO T-LoRa V2.1-1.6
custom_meshtastic_images = tlora-v2-1-1_6.svg
custom_meshtastic_tags = LilyGo
extends = esp32_base
board = ttgo-lora32-v21
board_check = true

View File

@@ -1,4 +1,13 @@
[env:tlora-v2-1-1_8]
custom_meshtastic_hw_model = 15
custom_meshtastic_hw_model_slug = TLORA_V2_1_1P8
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = LILYGO T-LoRa V2.1-1.8
custom_meshtastic_images = tlora-v2-1-1_8.svg
custom_meshtastic_tags = LilyGo, 2.4GHz
extends = esp32_base
board_level = extra
board = ttgo-lora32-v21

View File

@@ -10,6 +10,9 @@ build_flags =
-I variants/esp32/wiphone
lib_deps =
${esp32_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
sparkfun/SX1509 IO Expander@^3.0.5
pololu/APA102@^3.0.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
# renovate: datasource=custom.pio depName=SX1509 IO Expander packageName=sparkfun/library/SX1509 IO Expander
sparkfun/SX1509 IO Expander@3.0.6
# renovate: datasource=custom.pio depName=APA102 packageName=pololu/library/APA102
pololu/APA102@3.0.0

View File

@@ -4,7 +4,7 @@
extends = esp32c3_base
board = esp32-c3-devkitm-1
build_flags =
${esp32_base.build_flags}
${esp32c3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32c3/diy/esp32c3_super_mini
-D ARDUINO_USB_MODE=1

View File

@@ -1,5 +1,5 @@
[esp32c3_base]
extends = esp32_base
extends = esp32_common
custom_esp32_kind = esp32c3
monitor_speed = 115200

View File

@@ -3,7 +3,7 @@ extends = esp32c3_base
board = esp32-c3-devkitm-1
board_level = extra
build_flags =
${esp32_base.build_flags}
${esp32c3_base.build_flags}
-D PRIVATE_HW
-D ARDUINO_USB_MODE=1
-D ARDUINO_USB_CDC_ON_BOOT=1

View File

@@ -1,9 +1,18 @@
[env:heltec-ht62-esp32c3-sx1262]
custom_meshtastic_hw_model = 53
custom_meshtastic_hw_model_slug = HELTEC_HT62
custom_meshtastic_architecture = esp32-c3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec HT62
custom_meshtastic_images = heltec-ht62-esp32c3-sx1262.svg
custom_meshtastic_tags = Heltec
extends = esp32c3_base
board = esp32-c3-devkitm-1
board_level = pr
build_flags =
${esp32_base.build_flags}
${esp32c3_base.build_flags}
-D HELTEC_HT62
-I variants/esp32c3/heltec_esp32c3
monitor_speed = 115200

View File

@@ -2,8 +2,9 @@
extends = esp32c3_base
board = adafruit_qtpy_esp32c3
build_flags =
${esp32_base.build_flags}
${esp32c3_base.build_flags}
-D HELTEC_HRU_3601
-I variants/esp32c3/heltec_hru_3601
lib_deps = ${esp32c3_base.lib_deps}
adafruit/Adafruit NeoPixel @ ^1.12.0
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
adafruit/Adafruit NeoPixel@1.15.2

View File

@@ -3,7 +3,7 @@ extends = esp32c3_base
board = esp32-c3-devkitm-1
board_level = extra
build_flags =
${esp32_base.build_flags}
${esp32c3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32c3/m5stack-stamp-c3
monitor_speed = 115200

View File

@@ -1,5 +1,5 @@
[esp32c6_base]
extends = esp32_base
extends = esp32_common
platform =
# Do not renovate until we have switched to pioarduino tagged builds
https://github.com/Jason2866/platform-espressif32/archive/22faa566df8c789000f8136cd8d0aca49617af55.zip
@@ -35,12 +35,13 @@ lib_deps =
rweather/Crypto@0.4.0
build_src_filter =
${esp32_base.build_src_filter} -<mesh/http>
${esp32_common.build_src_filter} -<mesh/http>
monitor_speed = 460800
monitor_filters = esp32_c3_exception_decoder
lib_ignore =
${esp32_common.lib_ignore}
NonBlockingRTTTL
NimBLE-Arduino
libpax

View File

@@ -1,4 +1,13 @@
[env:m5stack-unitc6l]
custom_meshtastic_hw_model = 111
custom_meshtastic_hw_model_slug = M5STACK_C6L
custom_meshtastic_architecture = esp32-c6
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = M5Stack Unit C6L
custom_meshtastic_images = m5_c6l.svg
custom_meshtastic_tags = M5Stack
extends = esp32c6_base
board = esp32-c6-devkitc-1
;OpenOCD flash method
@@ -12,8 +21,10 @@ build_unflags =
-D HAS_WIFI
lib_deps =
${esp32c6_base.lib_deps}
adafruit/Adafruit NeoPixel@^1.12.3
h2zero/NimBLE-Arduino@^2.3.6
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
adafruit/Adafruit NeoPixel@1.15.2
# renovate: datasource=custom.pio depName=NimBLE-Arduino packageName=h2zero/library/NimBLE-Arduino
h2zero/NimBLE-Arduino@2.3.7
build_flags =
${esp32c6_base.build_flags}
-D M5STACK_UNITC6L

View File

@@ -1,19 +1,19 @@
[esp32s2_base]
extends = esp32_base
extends = esp32_common
custom_esp32_kind = esp32s2
build_src_filter =
${esp32_base.build_src_filter} - <libpax/> -<nimble/> -<mesh/raspihttp>
${esp32_common.build_src_filter} - <libpax/> -<nimble/> -<mesh/raspihttp>
monitor_speed = 115200
build_flags =
${esp32_base.build_flags}
${esp32_common.build_flags}
-DHAS_BLUETOOTH=0
-DMESHTASTIC_EXCLUDE_PAXCOUNTER
-DMESHTASTIC_EXCLUDE_BLUETOOTH
lib_ignore =
${esp32_base.lib_ignore}
${esp32_common.lib_ignore}
NimBLE-Arduino
libpax

View File

@@ -1,4 +1,13 @@
[env:CDEBYTE_EoRa-S3]
custom_meshtastic_hw_model = 61
custom_meshtastic_hw_model_slug = CDEBYTE_EORA_S3
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = EBYTE EoRa-S3
custom_meshtastic_tags = EByte
custom_meshtastic_requires_dfu = true
extends = esp32s3_base
board = CDEBYTE_EoRa-S3
build_flags =

View File

@@ -1,4 +1,14 @@
[env:thinknode_m2]
custom_meshtastic_hw_model = 90
custom_meshtastic_hw_model_slug = THINKNODE_M2
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = ThinkNode M2
custom_meshtastic_images = thinknode_m2.svg
custom_meshtastic_tags = Elecrow
custom_meshtastic_requires_dfu = false
extends = esp32s3_base
board = ESP32-S3-WROOM-1-N4
build_flags =

View File

@@ -56,10 +56,6 @@
#define HAS_SCREEN 1
#define USE_SH1106 1
// PCF8563 RTC Module
// #define PCF8563_RTC 0x51
// #define PIN_RTC_INT 48 // Interrupt from the PCF8563 RTC
#define HAS_RTC 0
#define HAS_GPS 0
#define BUTTON_PIN PIN_BUTTON1

View File

@@ -1,4 +1,14 @@
[env:thinknode_m5]
custom_meshtastic_hw_model = 107
custom_meshtastic_hw_model_slug = THINKNODE_M5
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = ThinkNode M5
custom_meshtastic_images = thinknode_m1.svg
custom_meshtastic_tags = Elecrow
custom_meshtastic_requires_dfu = false
extends = esp32s3_base
board = ESP32-S3-WROOM-1-N4
build_flags =
@@ -16,6 +26,7 @@ build_flags =
-DEINK_BACKGROUND_USES_FAST ; (Optional) Use FAST refresh for both BACKGROUND and RESPONSIVE, until a limit is reached.
lib_deps = ${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
lewisxhe/PCF8563_Library@^1.0.1
maxpromer/PCA9557-arduino @ ^1.0.0
# renovate: datasource=custom.pio depName=PCA9557-arduino packageName=maxpromer/library/PCA9557-arduino
maxpromer/PCA9557-arduino@1.0.0

View File

@@ -44,9 +44,6 @@
#define PIN_SERIAL1_RX GPS_TX_PIN
#define PIN_SERIAL1_TX GPS_RX_PIN
// PCF8563 RTC Module
#define PCF8563_RTC 0x51
#define SX126X_CS 17
#define LORA_SCK 16
#define LORA_MOSI 15

View File

@@ -8,9 +8,10 @@ board_level = extra
upload_protocol = esptool
;upload_port = /dev/ttyACM2
lib_deps =
${esp32_base.lib_deps}
caveman99/ESP32 Codec2@^1.0.1
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=caveman99-ESP32_Codec2 packageName=caveman99/library/ESP32 Codec2
caveman99/ESP32 Codec2@1.0.1
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32s3/bpi_picow_esp32_s3

View File

@@ -25,6 +25,7 @@ build_flags =
;-DEINK_LIMIT_RATE_RESPONSIVE_SEC=1
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip
[env:crowpanel-esp32s3-4-epaper]
@@ -54,6 +55,7 @@ build_flags =
;-DEINK_LIMIT_RATE_RESPONSIVE_SEC=1
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip
[env:crowpanel-esp32s3-2-epaper]
@@ -83,4 +85,5 @@ build_flags =
;-DEINK_LIMIT_RATE_RESPONSIVE_SEC=1
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip

View File

@@ -9,14 +9,16 @@ upload_protocol = esptool
;upload_port = /dev/ttyACM1
upload_speed = 921600
lib_deps =
${esp32_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
adafruit/Adafruit NeoPixel @ ^1.12.0
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
zinggjm/GxEPD2@1.6.5
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
adafruit/Adafruit NeoPixel@1.15.2
build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32s3/diy/my_esp32s3_diy_eink
-Dmy

View File

@@ -9,13 +9,14 @@ upload_protocol = esptool
;upload_port = /dev/ttyACM0
upload_speed = 921600
lib_deps =
${esp32_base.lib_deps}
adafruit/Adafruit NeoPixel @ ^1.12.0
${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
adafruit/Adafruit NeoPixel@1.15.2
build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32s3/diy/my_esp32s3_diy_oled
-DBOARD_HAS_PSRAM

View File

@@ -12,8 +12,10 @@ build_flags =
-D ARDUINO_USB_CDC_ON_BOOT=1
lib_deps = ${esp32s3_base.lib_deps}
earlephilhower/ESP8266Audio@^1.9.9
earlephilhower/ESP8266SAM@^1.0.1
# renovate: datasource=custom.pio depName=ESP8266Audio packageName=earlephilhower/library/ESP8266Audio
earlephilhower/ESP8266Audio@1.9.9
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
earlephilhower/ESP8266SAM@1.1.0
[env:dreamcatcher-2206]
extends = esp32s3_base

View File

@@ -41,9 +41,13 @@ build_flags = ${esp32s3_base.build_flags} -Os
lib_deps = ${esp32s3_base.lib_deps}
${device-ui_base.lib_deps}
# renovate: datasource=custom.pio depName=ESP8266Audio packageName=earlephilhower/library/ESP8266Audio
earlephilhower/ESP8266Audio@1.9.9
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
earlephilhower/ESP8266SAM@1.0.1
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.0 ; note: v1.2.7 breaks the elecrow 7" display functionality
# renovate: datasource=custom.pio depName=TCA9534 packageName=hideakitai/library/TCA9534
hideakitai/TCA9534@0.1.1
[crowpanel_small_esp32s3_base] ; 2.4, 2.8, 3.5 inch
@@ -71,6 +75,17 @@ build_flags =
-D DISPLAY_SET_RESOLUTION
[env:elecrow-adv-24-28-tft]
custom_meshtastic_hw_model = 97
custom_meshtastic_hw_model_slug = CROWPANEL
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Crowpanel Adv 2.4/2.8 TFT
custom_meshtastic_images = crowpanel_2_4.svg, crowpanel_2_8.svg
custom_meshtastic_tags = Elecrow
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 16MB
extends = crowpanel_small_esp32s3_base
build_flags =
${crowpanel_small_esp32s3_base.build_flags}
@@ -95,6 +110,17 @@ build_flags =
-D LGFX_TOUCH_ROTATION=0
[env:elecrow-adv-35-tft]
custom_meshtastic_hw_model = 97
custom_meshtastic_hw_model_slug = CROWPANEL
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Crowpanel Adv 3.5 TFT
custom_meshtastic_images = crowpanel_3_5.svg
custom_meshtastic_tags = Elecrow
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 16MB
extends = crowpanel_small_esp32s3_base
board_level = pr
build_flags =
@@ -123,6 +149,17 @@ build_flags =
; 4.3, 5.0, 7.0 inch 800x480 IPS (V1)
[env:elecrow-adv1-43-50-70-tft]
custom_meshtastic_hw_model = 97
custom_meshtastic_hw_model_slug = CROWPANEL
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Crowpanel Adv 4.3/5.0/7.0 TFT
custom_meshtastic_images = crowpanel_5_0.svg, crowpanel_7_0.svg
custom_meshtastic_tags = Elecrow
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 16MB
extends = crowpanel_large_esp32s3_base
build_flags =
${crowpanel_large_esp32s3_base.build_flags}

View File

@@ -22,5 +22,7 @@ build_flags = ${esp32s3_base.build_flags}
-DEINK_HEIGHT=128
lib_deps = ${esp32s3_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
adafruit/Adafruit NeoPixel @ ^1.12.0
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
zinggjm/GxEPD2@1.6.5
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
adafruit/Adafruit NeoPixel@1.15.2

View File

@@ -1,5 +1,5 @@
[esp32s3_base]
extends = esp32_base
extends = esp32_common
custom_esp32_kind = esp32s3
monitor_speed = 115200

View File

@@ -12,4 +12,5 @@ build_flags = ${esp32s3_base.build_flags}
-I variants/esp32s3/hackaday-communicator
lib_deps = ${esp32s3_base.lib_deps}
https://github.com/meshtastic/Arduino_GFX/archive/054e81ffaf23784830a734e3c184346789349406.zip
# renovate: datasource=git-refs depName=meshtastic-Arduino_GFX packageName=https://github.com/meshtastic/Arduino_GFX gitBranch=master
https://github.com/meshtastic/Arduino_GFX/archive/054e81ffaf23784830a734e3c184346789349406.zip

View File

@@ -9,4 +9,5 @@ build_flags =
-D HELTEC_SENSOR_HUB
lib_deps = ${esp32s3_base.lib_deps}
adafruit/Adafruit NeoPixel @ ^1.12.0
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
adafruit/Adafruit NeoPixel@1.15.2

View File

@@ -1,4 +1,14 @@
[env:heltec-v3]
[env:heltec-v3]
custom_meshtastic_hw_model = 43
custom_meshtastic_hw_model_slug = HELTEC_V3
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec V3
custom_meshtastic_images = heltec-v3.svg, heltec-v3-case.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_wifi_lora_32_V3
board_level = pr

View File

@@ -7,11 +7,20 @@ build_flags =
${esp32s3_base.build_flags}
-D HELTEC_V4
-I variants/esp32s3/heltec_v4
lib_deps =
${esp32s3_base.lib_deps}
[env:heltec-v4]
custom_meshtastic_hw_model = 110
custom_meshtastic_hw_model_slug = HELTEC_V4
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec V4
custom_meshtastic_images = heltec_v4.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 16MB
extends = heltec_v4_base
build_flags =
${heltec_v4_base.build_flags}
@@ -23,8 +32,6 @@ build_flags =
-D I2C_SCL=18
-D I2C_SDA1=4
-D I2C_SCL1=3
lib_deps =
${heltec_v4_base.lib_deps}
[env:heltec-v4-tft]
extends = heltec_v4_base
@@ -107,6 +114,10 @@ build_flags =
lib_deps = ${heltec_v4_base.lib_deps}
; ${device-ui_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.0
# renovate: datasource=git-refs depName=Quency-D_chsc6x packageName=https://github.com/Quency-D/chsc6x gitBranch=master
https://github.com/Quency-D/chsc6x/archive/5cbead829d6b432a8d621ed1aafd4eb474fd4f27.zip
; TODO revert to official device-ui (when merged)
# renovate: datasource=git-refs depName=Quency-D_device-ui packageName=https://github.com/Quency-D/device-ui gitBranch=heltec-v4-tft
https://github.com/Quency-D/device-ui/archive/7c9870b8016641190b059bdd90fe16c1012a39eb.zip

View File

@@ -29,10 +29,32 @@
#define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#define USE_GC1109_PA // We have a GC1109 power amplifier+attenuator
#define LORA_PA_POWER 7 // power en
#define LORA_PA_EN 2
#define LORA_PA_TX_EN 46 // enable tx
// ---- GC1109 RF FRONT END CONFIGURATION ----
// The Heltec V4 uses a GC1109 FEM chip with integrated PA and LNA
// RF path: SX1262 -> GC1109 PA -> Pi attenuator -> Antenna
// Measured net TX gain (non-linear due to PA compression):
// +11dB at 0-15dBm input (e.g., 10dBm in -> 21dBm out)
// +10dB at 16-17dBm input
// +9dB at 18-19dBm input
// +7dB at 21dBm input (e.g., 21dBm in -> 28dBm out max)
// Control logic (from GC1109 datasheet):
// Shutdown: CSD=0, CTX=X, CPS=X
// Receive LNA: CSD=1, CTX=0, CPS=X (17dB gain, 2dB NF)
// Transmit bypass: CSD=1, CTX=1, CPS=0 (~1dB loss, no PA)
// Transmit PA: CSD=1, CTX=1, CPS=1 (full PA enabled)
// Pin mapping:
// CTX (pin 6) -> SX1262 DIO2: TX/RX path select (automatic via SX126X_DIO2_AS_RF_SWITCH)
// CSD (pin 4) -> GPIO2: Chip enable (HIGH=on, LOW=shutdown)
// CPS (pin 5) -> GPIO46: PA mode select (HIGH=full PA, LOW=bypass)
// VCC0/VCC1 -> Vfem via U3 LDO, controlled by GPIO7
#define USE_GC1109_PA
#define LORA_PA_POWER 7 // VFEM_Ctrl - GC1109 LDO power enable
#define LORA_PA_EN 2 // CSD - GC1109 chip enable (HIGH=on)
#define LORA_PA_TX_EN 46 // CPS - GC1109 PA mode (HIGH=full PA, LOW=bypass)
// GC1109 FEM: TX/RX path switching is handled by DIO2 -> CTX pin (via SX126X_DIO2_AS_RF_SWITCH)
// GPIO46 is CPS (PA mode), not TX control - setTransmitEnable() handles it in SX126xInterface.cpp
// Do NOT use SX126X_TXEN/RXEN as that would cause double-control of GPIO46
#if HAS_TFT
#define USE_TFTDISPLAY 1

View File

@@ -1,4 +1,15 @@
[env:heltec-vision-master-e213]
custom_meshtastic_hw_model = 67
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_E213
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec Vision Master E213
custom_meshtastic_images = heltec-vision-master-e213.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_vision_master_e213
board_build.partitions = default_8MB.csv
@@ -17,8 +28,8 @@ build_flags =
-DEINK_HASQUIRK_GHOSTING ; Display model is identified as "prone to ghosting"
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
lewisxhe/PCF8563_Library@^1.0.1
upload_speed = 115200
[env:heltec-vision-master-e213-inkhud]
@@ -27,7 +38,7 @@ board = heltec_vision_master_e213
board_level = pr
board_build.partitions = default_8MB.csv
build_src_filter =
${esp32_base.build_src_filter}
${esp32s3_base.build_src_filter}
${inkhud.build_src_filter}
build_flags =
${esp32s3_base.build_flags}

View File

@@ -1,5 +1,16 @@
; Using the original screen class
[env:heltec-vision-master-e290]
custom_meshtastic_hw_model = 68
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_E290
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec Vision Master E290
custom_meshtastic_images = heltec-vision-master-e290.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_vision_master_e290
board_build.partitions = default_8MB.csv
@@ -20,8 +31,8 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/448c8538129fde3d02a7cb5e6fc81971ad92547f.zip
lewisxhe/PCF8563_Library@^1.0.1
upload_speed = 115200
[env:heltec-vision-master-e290-inkhud]
@@ -29,7 +40,7 @@ extends = esp32s3_base, inkhud
board = heltec_vision_master_e290
board_build.partitions = default_8MB.csv
build_src_filter =
${esp32_base.build_src_filter}
${esp32s3_base.build_src_filter}
${inkhud.build_src_filter}
build_flags =
${esp32s3_base.build_flags}

View File

@@ -1,4 +1,15 @@
[env:heltec-vision-master-t190]
custom_meshtastic_hw_model = 66
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_T190
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec Vision Master T190
custom_meshtastic_images = heltec-vision-master-t190.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_vision_master_t190
board_build.partitions = default_8MB.csv
@@ -8,6 +19,6 @@ build_flags =
-D HELTEC_VISION_MASTER_T190
lib_deps =
${esp32s3_base.lib_deps}
lewisxhe/PCF8563_Library@^1.0.1
# renovate: datasource=git-refs depName=meshtastic-st7789 packageName=https://github.com/meshtastic/st7789 gitBranch=main
https://github.com/meshtastic/st7789/archive/bd33ea58ddfe4a5e4a66d53300ccbd38d66ac21f.zip
upload_speed = 921600

View File

@@ -1,5 +1,15 @@
; Using the original screen class
[env:heltec-wireless-paper]
custom_meshtastic_hw_model = 49
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_PAPER
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec Wireless Paper
custom_meshtastic_images = heltec-wireless-paper.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_wifi_lora_32_V3
board_build.partitions = default_8MB.csv
@@ -18,8 +28,8 @@ build_flags =
-D EINK_HASQUIRK_GHOSTING ; Display model is identified as "prone to ghosting"
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
lewisxhe/PCF8563_Library@^1.0.1
upload_speed = 115200
[env:heltec-wireless-paper-inkhud]
@@ -27,7 +37,7 @@ extends = esp32s3_base, inkhud
board = heltec_wifi_lora_32_V3
board_build.partitions = default_8MB.csv
build_src_filter =
${esp32_base.build_src_filter}
${esp32s3_base.build_src_filter}
${inkhud.build_src_filter}
build_flags =
${esp32s3_base.build_flags}

View File

@@ -1,4 +1,14 @@
[env:heltec-wireless-paper-v1_0]
custom_meshtastic_hw_model = 57
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_PAPER_V1_0
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = false
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Heltec Wireless Paper V1.0
custom_meshtastic_images = heltec-wireless-paper-v1_0.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board_level = extra
board = heltec_wifi_lora_32_V3
@@ -15,6 +25,6 @@ build_flags =
-D EINK_LIMIT_GHOSTING_PX=2000 ; (Optional) How much image ghosting is tolerated
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/55f618961db45a23eff0233546430f1e5a80f63a.zip
lewisxhe/PCF8563_Library@^1.0.1
upload_speed = 115200

View File

@@ -1,4 +1,15 @@
[env:heltec-wireless-tracker]
custom_meshtastic_hw_model = 48
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec Wireless Tracker V1.1
custom_meshtastic_images = heltec-wireless-tracker.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_wireless_tracker
board_build.partitions = default_8MB.csv
@@ -12,4 +23,5 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7

View File

@@ -1,4 +1,14 @@
[env:heltec-wireless-tracker-V1-0]
custom_meshtastic_hw_model = 58
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER_V1_0
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = false
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Heltec Wireless Tracker V1.0
custom_meshtastic_images = heltec-wireless-tracker.svg
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board_level = extra
board = heltec_wireless_tracker
@@ -11,4 +21,5 @@ build_flags =
;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
lib_deps =
${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7

View File

@@ -10,4 +10,5 @@ build_flags =
-D HELTEC_WIRELESS_TRACKER_V2
lib_deps =
${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7

View File

@@ -73,7 +73,29 @@
#define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#define USE_GC1109_PA // We have a GC1109 power amplifier+attenuator
#define LORA_PA_POWER 7 // power en
#define LORA_PA_EN 4
#define LORA_PA_TX_EN 46 // enable tx
// ---- GC1109 RF FRONT END CONFIGURATION ----
// The Heltec Wireless Tracker V2 uses a GC1109 FEM chip with integrated PA and LNA
// RF path: SX1262 -> GC1109 PA -> Pi attenuator -> Antenna
// Measured net TX gain (non-linear due to PA compression):
// +11dB at 0-15dBm input (e.g., 10dBm in -> 21dBm out)
// +10dB at 16-17dBm input
// +9dB at 18-19dBm input
// +7dB at 21dBm input (e.g., 21dBm in -> 28dBm out max)
// Control logic (from GC1109 datasheet):
// Shutdown: CSD=0, CTX=X, CPS=X
// Receive LNA: CSD=1, CTX=0, CPS=X (17dB gain, 2dB NF)
// Transmit bypass: CSD=1, CTX=1, CPS=0 (~1dB loss, no PA)
// Transmit PA: CSD=1, CTX=1, CPS=1 (full PA enabled)
// Pin mapping:
// CTX (pin 6) -> SX1262 DIO2: TX/RX path select (automatic via SX126X_DIO2_AS_RF_SWITCH)
// CSD (pin 4) -> GPIO4: Chip enable (HIGH=on, LOW=shutdown)
// CPS (pin 5) -> GPIO46: PA mode select (HIGH=full PA, LOW=bypass)
// VCC0/VCC1 -> Vfem via U3 LDO, controlled by GPIO7
#define USE_GC1109_PA
#define LORA_PA_POWER 7 // VFEM_Ctrl - GC1109 LDO power enable
#define LORA_PA_EN 4 // CSD - GC1109 chip enable (HIGH=on)
#define LORA_PA_TX_EN 46 // CPS - GC1109 PA mode (HIGH=full PA, LOW=bypass)
// GC1109 FEM: TX/RX path switching is handled by DIO2 -> CTX pin (via SX126X_DIO2_AS_RF_SWITCH)
// GPIO46 is CPS (PA mode), not TX control - setTransmitEnable() handles it in SX126xInterface.cpp
// Do NOT use SX126X_TXEN/RXEN as that would cause double-control of GPIO46

View File

@@ -1,4 +1,14 @@
[env:heltec-wsl-v3]
[env:heltec-wsl-v3]
custom_meshtastic_hw_model = 44
custom_meshtastic_hw_model_slug = HELTEC_WSL_V3
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Heltec Wireless Stick Lite V3
custom_meshtastic_images = heltec-wsl-v3.svg
custom_meshtastic_tags = Heltec
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_wifi_lora_32_V3
board_build.partitions = default_8MB.csv

View File

@@ -7,9 +7,6 @@ board_build.mcu = esp32s3
board_build.partitions = default_8MB.csv
upload_protocol = esptool
upload_speed = 921600
platform_packages = platformio/framework-arduinoespressif32@https://github.com/PowerFeather/powerfeather-meshtastic-arduino-lib/releases/download/2.0.16a/esp32-2.0.16.zip
lib_deps =
${esp32s3_base.lib_deps}
build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1

View File

@@ -3,7 +3,7 @@ extends = esp32s3_base
board = esp32-s3-devkitc-1
board_level = extra
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D LINK_32
-I variants/esp32s3/link32_s3_v1
-DARDUINO_USB_CDC_ON_BOOT

View File

@@ -6,8 +6,7 @@ board_check = true
board_build.partitions = default_16MB.csv
upload_protocol = esptool
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D PRIVATE_HW
-D M5STACK_CORES3
-I variants/esp32s3/m5stack_cores3
lib_deps = ${esp32_base.lib_deps}

View File

@@ -46,11 +46,12 @@ build_flags = ${esp32s3_base.build_flags}
-D VIEW_320x240
-D USE_PACKET_API
-I variants/esp32s3/mesh-tab
build_src_filter = ${esp32_base.build_src_filter}
build_src_filter = ${esp32s3_base.build_src_filter}
lib_deps =
${esp32_base.lib_deps}
${esp32s3_base.lib_deps}
${device-ui_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
[mesh_tab_xpt2046]
extends = mesh_tab_base

View File

@@ -55,5 +55,6 @@
#define SX126X_RESET 14
#define SX126X_RXEN 47
#define SX126X_TXEN RADIOLIB_NC // Assuming that DIO2 is connected to TXEN pin
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#endif

View File

@@ -3,6 +3,6 @@ extends = esp32s3_base
board = esp32-s3-zero
board_level = extra
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32s3/nibble_esp32

View File

@@ -1,4 +1,12 @@
[env:picomputer-s3]
custom_meshtastic_hw_model = 52
custom_meshtastic_hw_model_slug = PICOMPUTER_S3
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Pi Computer S3
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = bpi_picow_esp32_s3
board_check = true
@@ -15,7 +23,8 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
build_src_filter =
${esp32s3_base.build_src_filter}

View File

@@ -17,6 +17,8 @@ static const uint8_t MOSI = 11;
static const uint8_t MISO = 10;
static const uint8_t SCK = 13;
#define SPI_INTERFACES_COUNT 1
#define SPI_MOSI (11)
#define SPI_SCK (13)
#define SPI_MISO (10)
@@ -25,4 +27,51 @@ static const uint8_t SCK = 13;
// LEDs
#define LED_BUILTIN LED_GREEN
#ifdef _VARIANT_RAK3112_
/*
* Serial interfaces
*/
// TXD1 RXD1 on Base Board
#define PIN_SERIAL1_RX (44)
#define PIN_SERIAL1_TX (43)
/*
* Internal SPI to LoRa transceiver
*/
#define LORA_SX126X_SCK 5
#define LORA_SX126X_MISO 3
#define LORA_SX126X_MOSI 6
/*
* Analog pins
*/
#define PIN_A0 (21)
#define PIN_A1 (14)
/*
* Wire Interfaces
*/
#define WIRE_INTERFACES_COUNT 2
#define PIN_WIRE1_SDA (17)
#define PIN_WIRE1_SCL (18)
/*
* GPIO's
*/
#define WB_IO1 21
#define WB_IO2 2
// #define WB_IO2 14
#define WB_IO3 41
#define WB_IO4 42
#define WB_IO5 38
#define WB_IO6 39
// #define WB_SW1 35 NC
#define WB_A0 1
#define WB_A1 2
#define WB_CS 12
#define WB_LED1 46
#define WB_LED2 45
#endif
#endif /* Pins_Arduino_h */

View File

@@ -1,4 +1,15 @@
[env:rak3312]
custom_meshtastic_hw_model = 106
custom_meshtastic_hw_model_slug = RAK3312
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = RAK3312
custom_meshtastic_images = rak_3312.svg
custom_meshtastic_tags = RAK
custom_meshtastic_requires_dfu = false
custom_meshtastic_partition_scheme = 16MB
extends = esp32s3_base
board = wiscore_rak3312
board_level = pr
@@ -6,6 +17,18 @@ board_check = true
upload_protocol = esptool
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D RAK3312
-I variants/esp32s3/rak3312
[env:rak3112]
extends = esp32s3_base
board = wiscore_rak3312
board_level = extra
upload_protocol = esptool
build_flags =
${esp32_base.build_flags}
-D RAK3312
-D _VARIANT_RAK3112_
-I variants/esp32s3/rak3312

View File

@@ -18,11 +18,6 @@
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#endif
#define SX126X_POWER_EN (4)
#define PIN_POWER_EN PIN_3V3_EN
#define PIN_3V3_EN (14)
#define LED_GREEN 46
#define LED_BLUE 45
@@ -35,10 +30,30 @@
#define LED_STATE_ON 1 // State when LED is litted
#define BATTERY_PIN 1
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
#ifdef _VARIANT_RAK3112_ // Modular variant (stamp)
#define ADC_MULTIPLIER 2.11
#define BUTTON_NEED_PULLUP
#define HAS_SDCARD
#define SDCARD_USE_SPI1
#define SDCARD_CS SPI_CS
#define I2C_SDA1 PIN_WIRE1_SDA
#define I2C_SCL1 PIN_WIRE1_SCL
#else // Generic 3312 variant (40-pin standard connector)
#define ADC_MULTIPLIER 1.667
#define SX126X_POWER_EN (4)
#define PIN_POWER_EN PIN_3V3_EN
#define PIN_3V3_EN (14)
#define HAS_GPS 1
#define GPS_TX_PIN 43
#define GPS_RX_PIN 44
#define BATTERY_PIN 1
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
#define ADC_MULTIPLIER 1.667
#endif

View File

@@ -8,14 +8,15 @@ upload_protocol = esptool
board_build.partitions = default_8MB.csv
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D RAK3312
-D RAK_WISMESH_TAP_V2
-I variants/esp32s3/rak_wismesh_tap_v2
lib_deps =
${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
[ft5x06]
extends = mesh_tab_base

View File

@@ -1,5 +1,16 @@
; Seeed Studio SenseCAP Indicator
[env:seeed-sensecap-indicator]
custom_meshtastic_hw_model = 70
custom_meshtastic_hw_model_slug = SENSECAP_INDICATOR
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = Seeed SenseCAP Indicator
custom_meshtastic_images = seeed-sensecap-indicator.svg
custom_meshtastic_tags = Seeed
custom_meshtastic_partition_scheme = 8MB
= true
extends = esp32s3_base
platform_packages =
platformio/framework-arduinoespressif32 @ https://github.com/mverch67/arduino-esp32/archive/aef7fef6de3329ed6f75512d46d63bba12b09bb5.zip ; add_tca9535 (based on 2.0.16)
@@ -9,7 +20,7 @@ board_check = true
board_build.partitions = partition-table-8MB.csv
upload_protocol = esptool
build_flags = ${esp32_base.build_flags}
build_flags = ${esp32s3_base.build_flags}
-Ivariants/esp32s3/seeed-sensecap-indicator
-DSENSECAP_INDICATOR
-DCONFIG_ARDUHAL_LOG_COLORS
@@ -24,10 +35,12 @@ build_flags = ${esp32_base.build_flags}
-DUSE_ARDUINO_HAL_GPIO
lib_deps = ${esp32s3_base.lib_deps}
; TODO switch back to official LovyanGFX
https://github.com/mverch67/LovyanGFX/archive/4c76238c1344162a234ae917b27651af146d6fb2.zip
earlephilhower/ESP8266Audio@^1.9.9
earlephilhower/ESP8266SAM@^1.0.1
# renovate: datasource=custom.pio depName=ESP8266Audio packageName=earlephilhower/library/ESP8266Audio
earlephilhower/ESP8266Audio@1.9.9
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
earlephilhower/ESP8266SAM@1.1.0
[env:seeed-sensecap-indicator-tft]
extends = env:seeed-sensecap-indicator
@@ -64,4 +77,5 @@ build_flags =
lib_deps =
${env:seeed-sensecap-indicator.lib_deps}
${device-ui_base.lib_deps}
; TODO switch back to official bb_captouch
https://github.com/mverch67/bb_captouch/archive/8626412fe650d808a267791c0eae6e5860c85a5d.zip ; alternative touch library supporting FT6x36

View File

@@ -1,4 +1,15 @@
[env:seeed-xiao-s3]
custom_meshtastic_hw_model = 81
custom_meshtastic_hw_model_slug = SEEED_XIAO_S3
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Seeed Xiao ESP32-S3
custom_meshtastic_images = seeed-xiao-s3.svg
custom_meshtastic_tags = Seeed
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = seeed-xiao-s3
board_level = pr
@@ -6,8 +17,6 @@ board_check = true
board_build.partitions = default_8MB.csv
upload_protocol = esptool
upload_speed = 921600
lib_deps =
${esp32s3_base.lib_deps}
build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1

View File

@@ -1,4 +1,15 @@
[env:station-g2]
custom_meshtastic_hw_model = 31
custom_meshtastic_hw_model_slug = STATION_G2
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 2
custom_meshtastic_display_name = Station G2
custom_meshtastic_images = station-g2.svg
custom_meshtastic_tags = B&Q
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 16MB
extends = esp32s3_base
board = station-g2
board_level = pr
@@ -8,8 +19,6 @@ board_build.mcu = esp32s3
upload_protocol = esptool
;upload_port = /dev/ttyACM0
upload_speed = 921600
lib_deps =
${esp32s3_base.lib_deps}
build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1

View File

@@ -0,0 +1,25 @@
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <stdint.h>
#define USB_VID 0x303a
#define USB_PID 0x1001
static const uint8_t TX = 43;
static const uint8_t RX = 44;
// I2C for OLED and sensors
static const uint8_t SDA = 8;
static const uint8_t SCL = 9;
// Default SPI mapped to Radio/SD
static const uint8_t SS = 15; // LoRa CS
static const uint8_t MOSI = 11;
static const uint8_t MISO = 12;
static const uint8_t SCK = 13;
// SD Card CS
#define SDCARD_CS 10
#endif /* Pins_Arduino_h */

View File

@@ -0,0 +1,14 @@
; LilyGo T-Beam-1W (1 Watt LoRa with external PA)
[env:t-beam-1w]
extends = esp32s3_base
board = t-beam-1w
board_build.partitions = default_8MB.csv
board_check = true
lib_deps =
${esp32s3_base.lib_deps}
build_flags =
${esp32s3_base.build_flags}
-I variants/esp32s3/t-beam-1w
-D T_BEAM_1W

View File

@@ -0,0 +1,97 @@
// LilyGo T-Beam-1W variant.h
// Configuration based on LilyGO utilities.h and RF documentation
// I2C for OLED display (SH1106 at 0x3C)
#define I2C_SDA 8
#define I2C_SCL 9
// GPS - Quectel L76K
#define GPS_RX_PIN 5
#define GPS_TX_PIN 6
#define GPS_1PPS_PIN 7
#define GPS_WAKEUP_PIN 16 // GPS_EN_PIN in LilyGO code
#define HAS_GPS 1
#define GPS_BAUDRATE 9600
// Buttons
#define BUTTON_PIN 0 // BUTTON 1
#define ALT_BUTTON_PIN 17 // BUTTON 2
// SPI (shared by LoRa and SD)
#define SPI_MOSI 11
#define SPI_SCK 13
#define SPI_MISO 12
#define SPI_CS 10
// SD Card
#define HAS_SDCARD
#define SDCARD_USE_SPI1
#define SDCARD_CS SPI_CS
// LoRa Radio - SX1262 with 1W PA
#define USE_SX1262
#define LORA_SCK SPI_SCK
#define LORA_MISO SPI_MISO
#define LORA_MOSI SPI_MOSI
#define LORA_CS 15
#define LORA_RESET 3
#define LORA_DIO1 1
#define LORA_BUSY 38
// CRITICAL: Radio power enable - MUST be HIGH before lora.begin()!
// GPIO 40 powers the SX1262 + PA module via LDO
#define SX126X_POWER_EN 40
// TX power offset for external PA (0 = no offset, full SX1262 power)
#define TX_GAIN_LORA 10
#ifdef USE_SX1262
#define SX126X_CS LORA_CS
#define SX126X_DIO1 LORA_DIO1
#define SX126X_BUSY LORA_BUSY
#define SX126X_RESET LORA_RESET
// RF switching configuration for 1W PA module
// DIO2 controls PA (via SX126X_DIO2_AS_RF_SWITCH)
// CTRL PIN (GPIO 21) controls LNA - must be HIGH during RX
// Truth table: DIO2=1,CTRL=0 → TX (PA on, LNA off)
// DIO2=0,CTRL=1 → RX (PA off, LNA on)
#define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_RXEN 21 // LNA enable - HIGH during RX
// TCXO voltage - required for radio init
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#define SX126X_MAX_POWER 22
#endif
// LED
#define LED_PIN 18
#define LED_STATE_ON 1 // HIGH = ON
// Battery ADC
#define BATTERY_PIN 4
#define ADC_CHANNEL ADC1_GPIO4_CHANNEL
#define BATTERY_SENSE_SAMPLES 30
#define ADC_MULTIPLIER 2.9333
// NTC temperature sensor
#define NTC_PIN 14
// Fan control
#define FAN_CTRL_PIN 41
// Meshtastic standard fan control pin macro
#define RF95_FAN_EN FAN_CTRL_PIN
// PA Ramp Time - T-Beam 1W requires >800us stabilization (default is 200us)
// Value 0x05 = RADIOLIB_SX126X_PA_RAMP_800U
#define SX126X_PA_RAMP_US 0x05
// Display - SH1106 OLED (128x64)
#define USE_SH1106
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
// 32768 Hz crystal present
#define HAS_32768HZ 1

View File

@@ -1,11 +1,22 @@
[env:t-deck-pro]
custom_meshtastic_hw_model = 102
custom_meshtastic_hw_model_slug = T_DECK_PRO
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = LILYGO T-Deck Pro
custom_meshtastic_images = tdeck_pro.svg
custom_meshtastic_tags = LilyGo
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 16MB
extends = esp32s3_base
board = t-deck-pro
board_check = true
upload_protocol = esptool
build_flags =
${esp32_base.build_flags} -I variants/esp32s3/t-deck-pro
${esp32s3_base.build_flags} -I variants/esp32s3/t-deck-pro
-D T_DECK_PRO
-D USE_EINK
-D EINK_DISPLAY_MODEL=GxEPD2_310_GDEQ031T10
@@ -17,7 +28,11 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
https://github.com/ZinggJM/GxEPD2/archive/refs/tags/1.6.4.zip
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
zinggjm/GxEPD2@1.6.4
# renovate: datasource=git-refs depName=CSE_Touch packageName=https://github.com/CIRCUITSTATE/CSE_Touch gitBranch=main
https://github.com/CIRCUITSTATE/CSE_Touch/archive/b44f23b6f870b848f1fbe453c190879bc6cfaafa.zip
# renovate: datasource=github-tags depName=CSE_CST328 packageName=CIRCUITSTATE/CSE_CST328
https://github.com/CIRCUITSTATE/CSE_CST328/archive/refs/tags/v0.0.4.zip
# renovate: datasource=git-refs depName=BQ27220 packageName=https://github.com/mverch67/BQ27220 gitBranch=main
https://github.com/mverch67/BQ27220/archive/07d92be846abd8a0258a50c23198dac0858b22ed.zip

View File

@@ -1,5 +1,16 @@
; LilyGo T-Deck
[env:t-deck]
custom_meshtastic_hw_model = 50
custom_meshtastic_hw_model_slug = T_DECK
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = LILYGO T-Deck
custom_meshtastic_images = t-deck.svg
custom_meshtastic_tags = LilyGo
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 16MB
extends = esp32s3_base
board = t-deck
board_check = true
@@ -12,9 +23,12 @@ build_flags = ${esp32s3_base.build_flags}
-I variants/esp32s3/t-deck
lib_deps = ${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
earlephilhower/ESP8266Audio@^1.9.9
earlephilhower/ESP8266SAM@^1.0.1
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
# renovate: datasource=custom.pio depName=ESP8266Audio packageName=earlephilhower/library/ESP8266Audio
earlephilhower/ESP8266Audio@1.9.9
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
earlephilhower/ESP8266SAM@1.1.0
[env:t-deck-tft]
extends = env:t-deck
@@ -68,4 +82,5 @@ build_flags =
lib_deps =
${env:t-deck.lib_deps}
${device-ui_base.lib_deps}
# renovate: datasource=github-tags depName=bb_captouch packageName=bitbank2/bb_captouch
https://github.com/bitbank2/bb_captouch/archive/refs/tags/1.3.1.zip

View File

@@ -15,4 +15,5 @@ lib_ignore =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=github-tags depName=ETHClass2 packageName=meshtastic/ETHClass2
https://github.com/meshtastic/ETHClass2/archive/v1.0.0.zip

View File

@@ -1,21 +1,33 @@
; LilyGo T-Watch S3
[env:t-watch-s3]
custom_meshtastic_hw_model = 51
custom_meshtastic_hw_model_slug = T_WATCH_S3
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = LILYGO T-Watch S3
custom_meshtastic_images = t-watch-s3.svg
custom_meshtastic_tags = LilyGo
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = t-watch-s3
board_check = true
board_build.partitions = default_16MB.csv
upload_protocol = esptool
build_flags = ${esp32_base.build_flags}
build_flags = ${esp32s3_base.build_flags}
-DT_WATCH_S3
-Ivariants/esp32s3/t-watch-s3
-DPCF8563_RTC=0x51
-DHAS_BMA423=1
lib_deps = ${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
lewisxhe/PCF8563_Library@1.0.1
adafruit/Adafruit DRV2605 Library@^1.2.2
earlephilhower/ESP8266Audio@^1.9.9
earlephilhower/ESP8266SAM@^1.0.1
lewisxhe/SensorLib@0.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
lewisxhe/SensorLib@0.3.3
# renovate: datasource=custom.pio depName=Adafruit DRV2605 packageName=adafruit/library/Adafruit DRV2605 Library
adafruit/Adafruit DRV2605 Library@1.2.4
# renovate: datasource=custom.pio depName=ESP8266Audio packageName=earlephilhower/library/ESP8266Audio
earlephilhower/ESP8266Audio@1.9.9
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
earlephilhower/ESP8266SAM@1.1.0

View File

@@ -43,11 +43,14 @@
#define HAS_AXP2101
// PCF8563 RTC Module
#define PCF8563_RTC 0x51
#define HAS_RTC 1
#define I2C_SDA 10 // For QMC6310 sensors and screens
#define I2C_SCL 11 // For QMC6310 sensors and screens
#define HAS_BMA423 1
#define BMA4XX_INT 14 // Interrupt for BMA_423 axis sensor
#define GPS_DEFAULT_NOT_PRESENT 1

View File

@@ -1,5 +1,16 @@
; The 1.0 release of the LilyGo TBEAM-S3-Core board
[env:tbeam-s3-core]
custom_meshtastic_hw_model = 12
custom_meshtastic_hw_model_slug = LILYGO_TBEAM_S3_CORE
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = LILYGO T-Beam Supreme
custom_meshtastic_images = tbeam-s3-core.svg
custom_meshtastic_tags = LilyGo
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = tbeam-s3-core
board_build.partitions = default_8MB.csv
@@ -7,9 +18,9 @@ board_check = true
lib_deps =
${esp32s3_base.lib_deps}
lewisxhe/PCF8563_Library@1.0.1
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
lewisxhe/SensorLib@0.3.3
build_flags =
${esp32s3_base.build_flags}
-I variants/esp32s3/tbeam-s3-core
-D PCF8563_RTC=0x51 ;Putting definitions in variant.h does not compile correctly

View File

@@ -53,6 +53,8 @@
// #define PMU_IRQ 40
#define HAS_AXP2101
// PCF8563 RTC Module
#define PCF8563_RTC 0x51
#define HAS_RTC 1
// Specify the PMU as Wire1. In the t-beam-s3 core, PCF8563 and PMU share the bus
@@ -72,9 +74,6 @@
#define HAS_SDCARD // Have SPI interface SD card slot
#define SDCARD_USE_SPI1
// PCF8563 RTC Module
// #define PCF8563_RTC 0x51 //Putting definitions in variant. h does not compile correctly
// has 32768 Hz crystal
#define HAS_32768HZ 1

View File

@@ -1,5 +1,16 @@
; LilyGo T-Lora-Pager
[env:tlora-pager]
custom_meshtastic_hw_model = 103
custom_meshtastic_hw_model_slug = T_LORA_PAGER
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = LILYGO T-LoRa Pager
custom_meshtastic_images = lilygo-tlora-pager.svg
custom_meshtastic_tags = LilyGo
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 16MB
extends = esp32s3_base
board = t-deck-pro ; same as T-Deck Pro
board_check = true
@@ -17,14 +28,23 @@ build_flags = ${esp32s3_base.build_flags}
-D ROTARY_BUXTRONICS
lib_deps = ${esp32s3_base.lib_deps}
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
# renovate: datasource=custom.pio depName=ESP8266Audio packageName=earlephilhower/library/ESP8266Audio
earlephilhower/ESP8266Audio@1.9.9
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
earlephilhower/ESP8266SAM@1.0.1
# renovate: datasource=custom.pio depName=Adafruit DRV2605 packageName=adafruit/library/Adafruit DRV2605 Library
adafruit/Adafruit DRV2605 Library@1.2.4
# renovate: datasource=custom.pio depName=PCF8563 packageName=lewisxhe/library/PCF8563_Library
lewisxhe/PCF8563_Library@1.0.1
lewisxhe/SensorLib@0.3.1
https://github.com/pschatzmann/arduino-audio-driver/archive/refs/tags/v0.1.3.zip
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
lewisxhe/SensorLib@0.3.3
# renovate: datasource=github-tags depName=pschatzmann_arduino-audio-driver packageName=pschatzmann/arduino-audio-driver
https://github.com/pschatzmann/arduino-audio-driver/archive/v0.1.3.zip
# TODO renovate
https://github.com/mverch67/BQ27220/archive/07d92be846abd8a0258a50c23198dac0858b22ed.zip
# TODO renovate
https://github.com/mverch67/RotaryEncoder/archive/da958a21389cbcd485989705df602a33e092dd88.zip
[env:tlora-pager-tft]

View File

@@ -38,11 +38,8 @@
#define GPS_TX_PIN 12
#define PIN_GPS_PPS 13
// PCF8563 RTC Module
#if __has_include("pcf8563.h")
#include "pcf8563.h"
#endif
#define PCF8563_RTC 0x51
// PCF85063 RTC Module
#define PCF85063_RTC 0x51
#define HAS_RTC 1
// Rotary

View File

@@ -1,11 +1,21 @@
[env:tlora-t3s3-epaper]
custom_meshtastic_hw_model = 16
custom_meshtastic_hw_model_slug = TLORA_T3_S3
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = LILYGO T-LoRa T3-S3 E-Ink
custom_meshtastic_images = tlora-t3s3-epaper.svg
custom_meshtastic_tags = LilyGo
custom_meshtastic_requires_dfu = true
extends = esp32s3_base
board = tlora-t3s3-v1
board_check = true
upload_protocol = esptool
build_flags =
${esp32_base.build_flags}
${esp32s3_base.build_flags}
-D TLORA_T3S3_EPAPER
-I variants/esp32s3/tlora_t3s3_epaper
-DUSE_EINK
@@ -20,6 +30,7 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/b202ebfec6a4821e098cf7a625ba0f6f2400292d.zip
[env:tlora-t3s3-epaper-inkhud]
@@ -28,7 +39,7 @@ board = tlora-t3s3-v1
board_check = true
upload_protocol = esptool
build_src_filter =
${esp32_base.build_src_filter}
${esp32s3_base.build_src_filter}
${inkhud.build_src_filter}
build_flags =
${esp32s3_base.build_flags}

View File

@@ -1,8 +1,20 @@
[env:tlora-t3s3-v1]
custom_meshtastic_hw_model = 16
custom_meshtastic_hw_model_slug = TLORA_T3_S3
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = LILYGO T-LoRa T3-S3
custom_meshtastic_images = tlora-t3s3-v1.svg
custom_meshtastic_tags = LilyGo
custom_meshtastic_requires_dfu = true
extends = esp32s3_base
board = tlora-t3s3-v1
board_check = true
upload_protocol = esptool
build_flags =
${esp32_base.build_flags} -D TLORA_T3S3_V1 -I variants/esp32s3/tlora_t3s3_v1
${esp32s3_base.build_flags}
-D TLORA_T3S3_V1
-I variants/esp32s3/tlora_t3s3_v1

View File

@@ -1,4 +1,13 @@
[env:tracksenger]
custom_meshtastic_hw_model = 48
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = TrackSenger (small TFT)
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_wireless_tracker
board_build.partitions = default_8MB.csv
@@ -12,9 +21,19 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
[env:tracksenger-lcd]
custom_meshtastic_hw_model = 48
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = false
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = TrackSenger (big TFT)
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_wireless_tracker
board_build.partitions = default_8MB.csv
@@ -28,9 +47,18 @@ build_flags =
lib_deps =
${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.7
[env:tracksenger-oled]
custom_meshtastic_hw_model = 48
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = TrackSenger (big OLED)
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = heltec_wireless_tracker
board_build.partitions = default_8MB.csv

View File

@@ -1,6 +1,15 @@
; platformio.ini for unphone meshtastic
[env:unphone]
custom_meshtastic_hw_model = 59
custom_meshtastic_hw_model_slug = UNPHONE
custom_meshtastic_architecture = esp32-s3
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = unPhone
custom_meshtastic_requires_dfu = true
custom_meshtastic_partition_scheme = 8MB
extends = esp32s3_base
board = unphone
board_build.partitions = partition-table-8MB.csv
@@ -27,10 +36,12 @@ build_src_filter =
+<../variants/esp32s3/unphone>
lib_deps = ${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@ 1.2.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@1.2.0
# TODO renovate
https://gitlab.com/hamishcunningham/unphonelibrary#meshtastic@9.0.0
adafruit/Adafruit NeoPixel @ ^1.12.0
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
adafruit/Adafruit NeoPixel@1.15.2
[env:unphone-tft]
board_level = extra

View File

@@ -5,5 +5,4 @@ extends = portduino_base
build_flags = ${portduino_base.build_flags} -O0 -I variants/native/portduino-buildroot
board = buildroot
board_level = extra
lib_deps = ${portduino_base.lib_deps}
build_src_filter = ${portduino_base.build_src_filter}

View File

@@ -21,18 +21,21 @@ build_src_filter =
lib_deps =
${env.lib_deps}
${networking_base.lib_deps}
${networking_extra.lib_deps}
${radiolib_base.lib_deps}
${environmental_base.lib_deps}
# renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto
rweather/Crypto@0.4.0
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
lovyan03/LovyanGFX@^1.2.0
lovyan03/LovyanGFX@1.2.7
# renovate: datasource=git-refs depName=libch341-spi-userspace packageName=https://github.com/pine64/libch341-spi-userspace gitBranch=main
https://github.com/pine64/libch341-spi-userspace/archive/af9bc27c9c30fa90772279925b7c5913dff789b4.zip
# renovate: datasource=custom.pio depName=adafruit/Adafruit seesaw Library packageName=adafruit/library/Adafruit seesaw Library
adafruit/Adafruit seesaw Library@1.7.9
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
https://github.com/RAKWireless/RAK12034-BMX160/archive/dcead07ffa267d3c906e9ca4a1330ab989e957e2.zip
# renovate: datasource=custom.pio depName=adafruit/Adafruit BME680 Library packageName=adafruit/library/Adafruit BME680
adafruit/Adafruit BME680 Library@^2.0.5
build_flags =
${arduino_base.build_flags}

View File

@@ -6,7 +6,8 @@ board = cross_platform
board_level = extra
lib_deps =
${portduino_base.lib_deps}
melopero/Melopero RV3028@^1.1.0
# renovate: datasource=custom.pio depName=Melopero RV3028 packageName=melopero/library/Melopero RV3028
melopero/Melopero RV3028@1.2.0
build_src_filter = ${portduino_base.build_src_filter}

View File

@@ -11,5 +11,6 @@ build_flags = ${nrf52840_base.build_flags}
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/Dongle_nRF52840-pca10059-v1>
lib_deps =
${nrf52840_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
zinggjm/GxEPD2@1.6.5
debug_tool = jlink

View File

@@ -1,5 +1,14 @@
; First prototype eink/nrf52840/sx1262 device
[env:thinknode_m1]
custom_meshtastic_hw_model = 89
custom_meshtastic_hw_model_slug = THINKNODE_M1
custom_meshtastic_architecture = nrf52840
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 1
custom_meshtastic_display_name = ThinkNode M1
custom_meshtastic_images = thinknode_m1.svg
custom_meshtastic_tags = Elecrow
extends = nrf52840_base
board = ThinkNode-M1
board_check = true
@@ -23,9 +32,10 @@ build_flags = ${nrf52840_base.build_flags}
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/ELECROW-ThinkNode-M1>
lib_deps =
${nrf52840_base.lib_deps}
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip
lewisxhe/PCF8563_Library@^1.0.1
khoih-prog/nRF52_PWM@^1.0.1
# renovate: datasource=custom.pio depName=nRF52_PWM packageName=khoih-prog/library/nRF52_PWM
khoih-prog/nRF52_PWM@1.0.1
;upload_protocol = fs
[env:thinknode_m1-inkhud]
@@ -45,4 +55,3 @@ build_src_filter =
lib_deps =
${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
${nrf52840_base.lib_deps}
lewisxhe/PCF8563_Library@^1.0.1

Some files were not shown because too many files have changed in this diff Show More