diff --git a/arch/esp32/esp32.ini b/arch/esp32/esp32.ini
index 810c9780ed6..4c37f157f18 100644
--- a/arch/esp32/esp32.ini
+++ b/arch/esp32/esp32.ini
@@ -6,7 +6,7 @@ platform =
# renovate: datasource=custom.pio depName=platformio/espressif32 packageName=platformio/platform/espressif32
platformio/espressif32@6.11.0
-build_src_filter =
+build_src_filter =
${arduino_base.build_src_filter} - - - - -
upload_speed = 921600
@@ -32,7 +32,9 @@ build_flags =
-DAXP_DEBUG_PORT=Serial
-DCONFIG_BT_NIMBLE_ENABLED
-DCONFIG_BT_NIMBLE_MAX_BONDS=6 # default is 3
+ -DNIMBLE_TWO
-DCONFIG_NIMBLE_CPP_LOG_LEVEL=2
+ -DCONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED
-DCONFIG_BT_NIMBLE_MAX_CCCDS=20
-DCONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192
-DESP_OPENSSL_SUPPRESS_LEGACY_WARNING
@@ -53,7 +55,7 @@ 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
+ h2zero/NimBLE-Arduino@^2.3.6
# 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
@@ -63,7 +65,7 @@ lib_deps =
# renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto
rweather/Crypto@0.4.0
-lib_ignore =
+lib_ignore =
segger_rtt
ESP32 BLE Arduino
diff --git a/arch/esp32/esp32c3.ini b/arch/esp32/esp32c3.ini
index 2ba3036d0be..4d8a10f9e6d 100644
--- a/arch/esp32/esp32c3.ini
+++ b/arch/esp32/esp32c3.ini
@@ -4,3 +4,8 @@ custom_esp32_kind = esp32c3
monitor_speed = 115200
monitor_filters = esp32_c3_exception_decoder
+
+build_flags =
+ ${esp32_base.build_flags}
+ -DCONFIG_BT_NIMBLE_EXT_ADV=1
+ -DCONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES=2
\ No newline at end of file
diff --git a/arch/esp32/esp32s3.ini b/arch/esp32/esp32s3.ini
index 8d8b6899e91..441a31463bf 100644
--- a/arch/esp32/esp32s3.ini
+++ b/arch/esp32/esp32s3.ini
@@ -3,3 +3,8 @@ extends = esp32_base
custom_esp32_kind = esp32s3
monitor_speed = 115200
+
+build_flags =
+ ${esp32_base.build_flags}
+ -DCONFIG_BT_NIMBLE_EXT_ADV=1
+ -DCONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES=2
\ No newline at end of file
diff --git a/src/nimble/NimbleBluetooth.cpp b/src/nimble/NimbleBluetooth.cpp
index 69da258848d..5f48cf0c4bc 100644
--- a/src/nimble/NimbleBluetooth.cpp
+++ b/src/nimble/NimbleBluetooth.cpp
@@ -3,6 +3,7 @@
#include "BluetoothCommon.h"
#include "NimbleBluetooth.h"
#include "PowerFSM.h"
+#include "PowerStatus.h"
#include "StaticPointerQueue.h"
#include "concurrency/OSThread.h"
@@ -16,7 +17,9 @@
#ifdef NIMBLE_TWO
#include "NimBLEAdvertising.h"
+#ifdef CONFIG_BT_NIMBLE_EXT_ADV
#include "NimBLEExtAdvertising.h"
+#endif
#include "PowerStatus.h"
#endif
@@ -401,7 +404,6 @@ class NimbleBluetoothToRadioCallback : public NimBLECharacteristicCallbacks
virtual void onWrite(NimBLECharacteristic *pCharacteristic, NimBLEConnInfo &connInfo)
#else
virtual void onWrite(NimBLECharacteristic *pCharacteristic)
-
#endif
{
// CAUTION: This callback runs in the NimBLE task!!! Don't do anything except communicate with the main task's runOnce.
@@ -777,7 +779,6 @@ bool NimbleBluetooth::isConnected()
int NimbleBluetooth::getRssi()
{
-#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C6)
if (!bleServer || !isConnected()) {
return 0; // No active BLE connection
}
@@ -803,8 +804,6 @@ int NimbleBluetooth::getRssi()
return rssi;
}
LOG_DEBUG("BLE RSSI read failed, rc=%d", rc);
-#endif
-
return 0;
}
@@ -816,7 +815,11 @@ void NimbleBluetooth::setup()
LOG_INFO("Init the NimBLE bluetooth module");
NimBLEDevice::init(getDeviceName());
+#ifdef NIMBLE_TWO
+ NimBLEDevice::setPower(9);
+#else
NimBLEDevice::setPower(ESP_PWR_LVL_P9);
+#endif
#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C6)
int mtuResult = NimBLEDevice::setMTU(kPreferredBleMtu);
@@ -869,7 +872,8 @@ void NimbleBluetooth::setupService()
ToRadioCharacteristic = bleService->createCharacteristic(TORADIO_UUID, NIMBLE_PROPERTY::WRITE);
// Allow notifications so phones can stream FromRadio without polling.
FromRadioCharacteristic = bleService->createCharacteristic(FROMRADIO_UUID, NIMBLE_PROPERTY::READ);
- fromNumCharacteristic = bleService->createCharacteristic(FROMNUM_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ);
+ fromNumCharacteristic =
+ bleService->createCharacteristic(FROMNUM_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ, 4);
logRadioCharacteristic =
bleService->createCharacteristic(LOGRADIO_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ, 512U);
} else {
@@ -877,9 +881,9 @@ void NimbleBluetooth::setupService()
TORADIO_UUID, NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_AUTHEN | NIMBLE_PROPERTY::WRITE_ENC);
FromRadioCharacteristic = bleService->createCharacteristic(
FROMRADIO_UUID, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_AUTHEN | NIMBLE_PROPERTY::READ_ENC);
- fromNumCharacteristic =
- bleService->createCharacteristic(FROMNUM_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ |
- NIMBLE_PROPERTY::READ_AUTHEN | NIMBLE_PROPERTY::READ_ENC);
+ fromNumCharacteristic = bleService->createCharacteristic(
+ FROMNUM_UUID,
+ NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_AUTHEN | NIMBLE_PROPERTY::READ_ENC, 4);
logRadioCharacteristic = bleService->createCharacteristic(
LOGRADIO_UUID,
NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_AUTHEN | NIMBLE_PROPERTY::READ_ENC, 512U);
@@ -912,7 +916,7 @@ void NimbleBluetooth::setupService()
void NimbleBluetooth::startAdvertising()
{
-#ifdef NIMBLE_TWO
+#if defined(NIMBLE_TWO) && defined(CONFIG_BT_NIMBLE_EXT_ADV)
NimBLEExtAdvertising *pAdvertising = NimBLEDevice::getAdvertising();
NimBLEExtAdvertisement legacyAdvertising;
@@ -944,8 +948,17 @@ void NimbleBluetooth::startAdvertising()
pAdvertising->reset();
pAdvertising->addServiceUUID(MESH_SERVICE_UUID);
pAdvertising->addServiceUUID(NimBLEUUID((uint16_t)0x180f)); // 0x180F is the Battery Service
- pAdvertising->start(0);
+#if defined(NIMBLE_TWO)
+ NimBLEAdvertisementData scan;
+ scan.setName(getDeviceName());
+ pAdvertising->setScanResponseData(scan);
+ pAdvertising->enableScanResponse(true);
+#endif
+ if (!pAdvertising->start(0)) {
+ LOG_ERROR("BLE failed to start advertising");
+ };
#endif
+ LOG_DEBUG("BLE Advertising started");
}
/// Given a level between 0-100, update the BLE attribute
diff --git a/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini b/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini
index c87baa7bf88..2dca8e1a906 100644
--- a/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini
+++ b/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini
@@ -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
diff --git a/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini b/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini
index 5a72b9d7409..af386a6e2a1 100644
--- a/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini
+++ b/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini
@@ -2,8 +2,8 @@
extends = esp32c3_base
board = esp32-c3-devkitm-1
board_level = extra
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32c3_base.build_flags}
-D PRIVATE_HW
-D ARDUINO_USB_MODE=1
-D ARDUINO_USB_CDC_ON_BOOT=1
diff --git a/variants/esp32c3/heltec_esp32c3/platformio.ini b/variants/esp32c3/heltec_esp32c3/platformio.ini
index 705e2e99691..350071a0894 100644
--- a/variants/esp32c3/heltec_esp32c3/platformio.ini
+++ b/variants/esp32c3/heltec_esp32c3/platformio.ini
@@ -2,8 +2,8 @@
extends = esp32c3_base
board = esp32-c3-devkitm-1
board_level = pr
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32c3_base.build_flags}
-D HELTEC_HT62
-I variants/esp32c3/heltec_esp32c3
monitor_speed = 115200
diff --git a/variants/esp32c3/heltec_hru_3601/platformio.ini b/variants/esp32c3/heltec_hru_3601/platformio.ini
index b5ff63eae3c..bfc3799b3e9 100644
--- a/variants/esp32c3/heltec_hru_3601/platformio.ini
+++ b/variants/esp32c3/heltec_hru_3601/platformio.ini
@@ -2,7 +2,7 @@
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}
diff --git a/variants/esp32c3/m5stack-stamp-c3/platformio.ini b/variants/esp32c3/m5stack-stamp-c3/platformio.ini
index 1072df664fd..5d99dc41095 100644
--- a/variants/esp32c3/m5stack-stamp-c3/platformio.ini
+++ b/variants/esp32c3/m5stack-stamp-c3/platformio.ini
@@ -2,8 +2,8 @@
extends = esp32c3_base
board = esp32-c3-devkitm-1
board_level = extra
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32c3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32c3/m5stack-stamp-c3
monitor_speed = 115200
diff --git a/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini b/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini
index 57af0da82f8..d1727f0deb6 100644
--- a/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini
+++ b/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini
@@ -10,7 +10,7 @@ upload_protocol = esptool
lib_deps =
${esp32_base.lib_deps}
caveman99/ESP32 Codec2@^1.0.1
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32s3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32s3/bpi_picow_esp32_s3
diff --git a/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini b/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini
index 267544c40f5..f6edbd67d61 100644
--- a/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini
+++ b/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini
@@ -15,8 +15,8 @@ lib_deps =
build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32s3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32s3/diy/my_esp32s3_diy_eink
-Dmy
diff --git a/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini b/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini
index aa3e6e48221..5f735b7c526 100644
--- a/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini
+++ b/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini
@@ -14,8 +14,8 @@ lib_deps =
build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32s3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32s3/diy/my_esp32s3_diy_oled
-DBOARD_HAS_PSRAM
diff --git a/variants/esp32s3/link32_s3_v1/platformio.ini b/variants/esp32s3/link32_s3_v1/platformio.ini
index 8d88075c4fa..89d445e5cc3 100644
--- a/variants/esp32s3/link32_s3_v1/platformio.ini
+++ b/variants/esp32s3/link32_s3_v1/platformio.ini
@@ -1,8 +1,8 @@
[env:link32-s3-v1]
extends = esp32s3_base
board = esp32-s3-devkitc-1
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32s3_base.build_flags}
-D LINK_32
-I variants/esp32s3/link32_s3_v1
-DARDUINO_USB_CDC_ON_BOOT
diff --git a/variants/esp32s3/m5stack_cores3/platformio.ini b/variants/esp32s3/m5stack_cores3/platformio.ini
index 9973abfcec1..5f44a50a518 100644
--- a/variants/esp32s3/m5stack_cores3/platformio.ini
+++ b/variants/esp32s3/m5stack_cores3/platformio.ini
@@ -5,8 +5,8 @@ board = m5stack-cores3
board_check = true
board_build.partitions = default_16MB.csv
upload_protocol = esptool
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32s3_base.build_flags}
-D PRIVATE_HW
-D M5STACK_CORES3
-I variants/esp32s3/m5stack_cores3
diff --git a/variants/esp32s3/nibble_esp32/platformio.ini b/variants/esp32s3/nibble_esp32/platformio.ini
index 2f6960d2e1d..2d9d4efd18c 100644
--- a/variants/esp32s3/nibble_esp32/platformio.ini
+++ b/variants/esp32s3/nibble_esp32/platformio.ini
@@ -2,7 +2,7 @@
extends = esp32s3_base
board = esp32-s3-zero
board_level = extra
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32s3_base.build_flags}
-D PRIVATE_HW
-I variants/esp32s3/nibble_esp32
diff --git a/variants/esp32s3/rak3312/platformio.ini b/variants/esp32s3/rak3312/platformio.ini
index 0de36498f69..d7ce7cfec27 100644
--- a/variants/esp32s3/rak3312/platformio.ini
+++ b/variants/esp32s3/rak3312/platformio.ini
@@ -5,7 +5,7 @@ board_level = pr
board_check = true
upload_protocol = esptool
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32s3_base.build_flags}
-D RAK3312
-I variants/esp32s3/rak3312
diff --git a/variants/esp32s3/seeed-sensecap-indicator/platformio.ini b/variants/esp32s3/seeed-sensecap-indicator/platformio.ini
index 25ec3ebfcbb..b13a44fe698 100644
--- a/variants/esp32s3/seeed-sensecap-indicator/platformio.ini
+++ b/variants/esp32s3/seeed-sensecap-indicator/platformio.ini
@@ -9,7 +9,8 @@ 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
diff --git a/variants/esp32s3/t-deck-pro/platformio.ini b/variants/esp32s3/t-deck-pro/platformio.ini
index 0b3c7843a35..2df75e48d37 100644
--- a/variants/esp32s3/t-deck-pro/platformio.ini
+++ b/variants/esp32s3/t-deck-pro/platformio.ini
@@ -4,8 +4,9 @@ board = t-deck-pro
board_check = true
upload_protocol = esptool
-build_flags =
- ${esp32_base.build_flags} -I variants/esp32s3/t-deck-pro
+build_flags =
+ ${esp32s3_base.build_flags}
+ -I variants/esp32s3/t-deck-pro
-D T_DECK_PRO
-D USE_EINK
-D EINK_DISPLAY_MODEL=GxEPD2_310_GDEQ031T10
diff --git a/variants/esp32s3/t-watch-s3/platformio.ini b/variants/esp32s3/t-watch-s3/platformio.ini
index 59ff8891dcd..42575d6c778 100644
--- a/variants/esp32s3/t-watch-s3/platformio.ini
+++ b/variants/esp32s3/t-watch-s3/platformio.ini
@@ -6,7 +6,8 @@ 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
diff --git a/variants/esp32s3/tlora_t3s3_epaper/platformio.ini b/variants/esp32s3/tlora_t3s3_epaper/platformio.ini
index eca052f5796..5e209829924 100644
--- a/variants/esp32s3/tlora_t3s3_epaper/platformio.ini
+++ b/variants/esp32s3/tlora_t3s3_epaper/platformio.ini
@@ -4,8 +4,8 @@ board = tlora-t3s3-v1
board_check = true
upload_protocol = esptool
-build_flags =
- ${esp32_base.build_flags}
+build_flags =
+ ${esp32s3_base.build_flags}
-D TLORA_T3S3_EPAPER
-I variants/esp32s3/tlora_t3s3_epaper
-DUSE_EINK
diff --git a/variants/esp32s3/tlora_t3s3_v1/platformio.ini b/variants/esp32s3/tlora_t3s3_v1/platformio.ini
index 56ece0d6215..aec33cd1175 100644
--- a/variants/esp32s3/tlora_t3s3_v1/platformio.ini
+++ b/variants/esp32s3/tlora_t3s3_v1/platformio.ini
@@ -4,5 +4,5 @@ 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
+build_flags =
+ ${esp32s3_base.build_flags} -D TLORA_T3S3_V1 -I variants/esp32s3/tlora_t3s3_v1