Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
83bfcc1
Upgrade to arduino-esp32 3.0.4
mskvortsov Mar 27, 2025
11ca63c
Merge branch 'master' into esp-idf5
thebentern Mar 27, 2025
e0edd7c
Fix rebase
mskvortsov Mar 27, 2025
b953314
Fix tlora-c6 build
mskvortsov Mar 27, 2025
b7603b2
Fix seeed-sensecap-indicator[-tft] build
mskvortsov Mar 27, 2025
06898b7
Rename esp32.ini to base.ini
mskvortsov Mar 27, 2025
da7a9cb
Switch to pioarduino/platform-espressif32
mskvortsov Mar 27, 2025
ad81ecc
Remove quirks.h, patch libs instead
mskvortsov Mar 27, 2025
1f53ed1
Merge branch 'master' into esp-idf5
mskvortsov Mar 27, 2025
1d561c0
Fix seeed-sensecap-indicator-tft build
mskvortsov Mar 27, 2025
9076a42
Patch ETHClass2 for t-eth-elite
mskvortsov Mar 27, 2025
30043d5
Improve patching
mskvortsov Mar 28, 2025
0645c44
Don't malloc wdt_config
mskvortsov Mar 28, 2025
6ab5ef2
Remove arduino version checks
mskvortsov Mar 28, 2025
bb6364e
pioarduino 54.03.20
mskvortsov Mar 28, 2025
4fb7dac
h2zero/NimBLE-Arduino@^2.2.3
mskvortsov Mar 28, 2025
bfef356
Merge branch 'master' into esp-idf5
mskvortsov Mar 28, 2025
2cb063a
Fix BLE
mskvortsov Mar 28, 2025
9d5d0b3
esp32s3 ble fix is no longer needed
mskvortsov Mar 28, 2025
862bd3e
Fix automatic TWDT
mskvortsov Mar 28, 2025
0090c3e
Try remove quirks as possibly no longer needed
mskvortsov Mar 29, 2025
ec0914d
Merge branch 'master' into esp-idf5
mskvortsov Mar 29, 2025
80fd0ad
Fix seeed-sensecap-indicator build
mskvortsov Mar 29, 2025
ffb0f3d
Merge branch 'master' into esp-idf5
mskvortsov Mar 29, 2025
dcc5c3a
Merge branch 'master' into esp-idf5
mskvortsov Mar 30, 2025
0fff751
Fix merge
mskvortsov Mar 30, 2025
8378a02
Merge branch 'master' into esp-idf5
thebentern Mar 31, 2025
5e3cf58
Merge branch 'master' into esp-idf5
caveman99 Apr 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions arch/esp32/base.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
; Common settings for ESP targes, mixin with extends = esp32_base
[esp32_abstract]
extends = arduino_base
platform = https://github.com/pioarduino/platform-espressif32/releases/download/54.03.20/platform-espressif32.zip

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=auto
-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_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
-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}
${radiolib_base.lib_deps}
https://github.com/meshtastic/esp32_https_server/archive/896f1771ceb5979987a0b41028bf1b4e7aad419b.zip
h2zero/NimBLE-Arduino@^2.2.3
https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip
lewisxhe/XPowersLib@^0.2.7
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
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
69 changes: 3 additions & 66 deletions arch/esp32/esp32.ini
Original file line number Diff line number Diff line change
@@ -1,69 +1,6 @@
; Common settings for ESP targes, mixin with extends = esp32_base
[esp32_base]
extends = arduino_base
extends = esp32_abstract
custom_esp32_kind = esp32
platform = platformio/espressif32@6.10.0

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_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
-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}
${radiolib_base.lib_deps}
https://github.com/meshtastic/esp32_https_server/archive/23665b3adc080a311dcbb586ed5941b5f94d6ea2.zip
h2zero/NimBLE-Arduino@^1.4.3
https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip
lewisxhe/XPowersLib@^0.2.7
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
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
platform_packages =
platformio/framework-arduinoespressif32-libs@https://github.com/mskvortsov/meshtastic-esp32-arduino-libs/releases/download/20250328/esp32-arduino-libs.zip
2 changes: 1 addition & 1 deletion arch/esp32/esp32c3.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[esp32c3_base]
extends = esp32_base
extends = esp32_abstract
custom_esp32_kind = esp32c3

monitor_speed = 115200
Expand Down
6 changes: 4 additions & 2 deletions arch/esp32/esp32c6.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
[esp32c6_base]
extends = esp32_base
extends = esp32_abstract
custom_esp32_kind = esp32c6
; TODO Switch to pioarduino
platform = https://github.com/Jason2866/platform-espressif32/archive/22faa566df8c789000f8136cd8d0aca49617af55.zip
build_flags =
${arduino_base.build_flags}
Expand Down Expand Up @@ -29,7 +31,7 @@ lib_deps =
rweather/Crypto@^0.4.0

build_src_filter =
${esp32_base.build_src_filter} -<mesh/http>
${esp32_abstract.build_src_filter} -<mesh/http>

monitor_speed = 460800
monitor_filters = esp32_c3_exception_decoder
Expand Down
8 changes: 4 additions & 4 deletions arch/esp32/esp32s2.ini
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
[esp32s2_base]
extends = esp32_base
extends = esp32_abstract
custom_esp32_kind = esp32s2

build_src_filter =
${esp32_base.build_src_filter} - <libpax/> -<nimble/> -<mesh/raspihttp>
${esp32_abstract.build_src_filter} - <libpax/> -<nimble/> -<mesh/raspihttp>

monitor_speed = 115200

build_flags =
${esp32_base.build_flags}
${esp32_abstract.build_flags}
-DHAS_BLUETOOTH=0
-DMESHTASTIC_EXCLUDE_PAXCOUNTER
-DMESHTASTIC_EXCLUDE_BLUETOOTH

lib_ignore =
${esp32_base.lib_ignore}
${esp32_abstract.lib_ignore}
NimBLE-Arduino
libpax
3 changes: 1 addition & 2 deletions arch/esp32/esp32s3.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
[esp32s3_base]
extends = esp32_base
extends = esp32_abstract
custom_esp32_kind = esp32s3

monitor_speed = 115200

56 changes: 41 additions & 15 deletions bin/platformio-custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,21 +66,6 @@ def esp32_create_combined_bin(source, target, env):

env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", esp32_create_combined_bin)

esp32_kind = env.GetProjectOption("custom_esp32_kind")
if esp32_kind == "esp32":
# Free up some IRAM by removing auxiliary SPI flash chip drivers.
# Wrapped stub symbols are defined in src/platform/esp32/iram-quirk.c.
env.Append(
LINKFLAGS=[
"-Wl,--wrap=esp_flash_chip_gd",
"-Wl,--wrap=esp_flash_chip_issi",
"-Wl,--wrap=esp_flash_chip_winbond",
]
)
else:
# For newer ESP32 targets, using newlib nano works better.
env.Append(LINKFLAGS=["--specs=nano.specs", "-u", "_printf_float"])

if platform.name == "nordicnrf52":
env.AddPostAction("$BUILD_DIR/${PROGNAME}.hex",
env.VerboseAction(f"\"{sys.executable}\" ./bin/uf2conv.py $BUILD_DIR/firmware.hex -c -f 0xADA52840 -o $BUILD_DIR/firmware.uf2",
Expand Down Expand Up @@ -131,3 +116,44 @@ def esp32_create_combined_bin(source, target, env):
if lb.name == "meshtastic-device-ui":
lb.env.Append(CPPDEFINES=[("APP_VERSION", verObj["long"])])
break

############################# Libraries Patching #############################

env.Execute("$PYTHONEXE -m pip install patch pyyaml")

import os
import patch
import yaml

patches = {}
config_path = os.path.join(env["PROJECT_DIR"], "patches/config.yaml")
with open(config_path, "r") as file:
y = yaml.safe_load(file)
for p in y["patches"]:
name = p["name"]
p.pop("name", None)
patches[name] = p

for lb in env.GetLibBuilders():
if not lb.name in patches:
continue
p = patches[lb.name]
if "version" in p and not (lb.version == p["version"]):
print(f"Skipping {lb.name}.patch: version doesn't match")
continue
if "targets" in p and not (env.get("PIOENV") in p["targets"]):
print(f"Skipping {lb.name}.patch: target doesn't match")
continue

marker_path = os.path.join(lb.src_dir, ".patched")
if os.path.exists(marker_path):
print(f"Skipping {lb.name}.patch: already patched")
continue

patch_path = env["PROJECT_DIR"] + "/patches/" + lb.name + ".patch"
ps = patch.fromfile(patch_path)
if not ps.apply(0, lb.src_dir):
print(f"Failed to apply patch {patch_path}")
exit(1)
print(f"Patched {lb.name}")
open(marker_path, "w").close()
34 changes: 34 additions & 0 deletions patches/ESP8266 and ESP32 OLED driver for SSD1306 displays.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Fix compiler warning

diff --git a/OLEDDisplay.cpp b/OLEDDisplay.cpp
index dca2ad1..35eb456 100644
--- a/OLEDDisplay.cpp
+++ b/OLEDDisplay.cpp
@@ -941,15 +941,6 @@ size_t OLEDDisplay::write(uint8_t c) {
return 1;
}

-size_t OLEDDisplay::write(const char* str) {
- if (str == NULL) return 0;
- size_t length = strlen(str);
- for (size_t i = 0; i < length; i++) {
- write(str[i]);
- }
- return length;
-}
-
#ifdef __MBED__
int OLEDDisplay::_putc(int c) {

diff --git a/OLEDDisplay.h b/OLEDDisplay.h
index 23e6845..07cb9a2 100644
--- a/OLEDDisplay.h
+++ b/OLEDDisplay.h
@@ -330,7 +330,6 @@ class OLEDDisplay : public Stream {

// Implement needed function to be compatible with Print class
size_t write(uint8_t c);
- size_t write(const char* s);

// Implement needed function to be compatible with Stream class
#ifdef __MBED__
Loading