From ce4e559c01dbd20d492189d9d3e2ab7851334cb1 Mon Sep 17 00:00:00 2001 From: Alexander Begoon Date: Thu, 7 Aug 2025 22:30:33 +0200 Subject: [PATCH 1/2] Add support for Xiao ESP32C6 with external antenna configuration --- src/helpers/esp32/XiaoC6Board.h | 28 ++++++++++++++++++++++++++++ variants/xiao_c6/platformio.ini | 1 + variants/xiao_c6/target.cpp | 2 +- variants/xiao_c6/target.h | 3 ++- 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/helpers/esp32/XiaoC6Board.h diff --git a/src/helpers/esp32/XiaoC6Board.h b/src/helpers/esp32/XiaoC6Board.h new file mode 100644 index 00000000..86c3475c --- /dev/null +++ b/src/helpers/esp32/XiaoC6Board.h @@ -0,0 +1,28 @@ +#pragma once + +#include +#include + +class XiaoC6Board : public ESP32Board { +public: + void begin() { + ESP32Board::begin(); + +#ifdef USE_XIAO_ESP32C6_EXTERNAL_ANTENNA +// Connect an external antenna to your XIAO ESP32C6 otherwise, it may be damaged! + pinMode(3, OUTPUT); + digitalWrite(3, LOW); // Activate RF switch control + + delay(100); + + pinMode(14, OUTPUT); + digitalWrite(14, HIGH); // Use external antenna +#endif + } + + const char* getManufacturerName() const override { + return "Xiao C6"; + } +}; + + diff --git a/variants/xiao_c6/platformio.ini b/variants/xiao_c6/platformio.ini index 9ad07aef..c27df55e 100644 --- a/variants/xiao_c6/platformio.ini +++ b/variants/xiao_c6/platformio.ini @@ -87,6 +87,7 @@ build_flags = -D SX126X_DIO3_TCXO_VOLTAGE=1.8 -D SX126X_CURRENT_LIMIT=140 -D SX126X_RX_BOOSTED_GAIN=1 + -D USE_XIAO_ESP32C6_EXTERNAL_ANTENNA=1 [env:Meshimi_Repeater] extends = Meshimi diff --git a/variants/xiao_c6/target.cpp b/variants/xiao_c6/target.cpp index caca57bc..ff77474a 100644 --- a/variants/xiao_c6/target.cpp +++ b/variants/xiao_c6/target.cpp @@ -1,7 +1,7 @@ #include #include "target.h" -ESP32Board board; +XiaoC6Board board; #if defined(P_LORA_SCLK) static SPIClass spi(0); diff --git a/variants/xiao_c6/target.h b/variants/xiao_c6/target.h index c26d5958..e1469228 100644 --- a/variants/xiao_c6/target.h +++ b/variants/xiao_c6/target.h @@ -4,11 +4,12 @@ #include #include #include +#include #include #include #include -extern ESP32Board board; +extern XiaoC6Board board; extern WRAPPER_CLASS radio_driver; extern AutoDiscoverRTCClock rtc_clock; extern SensorManager sensors; From 6902dd81fa8eb8276c2582a0c9a561609f8e5c9a Mon Sep 17 00:00:00 2001 From: Alexander Begoon Date: Fri, 8 Aug 2025 23:04:14 +0200 Subject: [PATCH 2/2] Move variant specific code --- variants/xiao_c6/{target.cpp => XiaoC6Board.cpp} | 2 ++ {src/helpers/esp32 => variants/xiao_c6}/XiaoC6Board.h | 0 variants/xiao_c6/platformio.ini | 1 + variants/xiao_c6/target.h | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) rename variants/xiao_c6/{target.cpp => XiaoC6Board.cpp} (99%) rename {src/helpers/esp32 => variants/xiao_c6}/XiaoC6Board.h (100%) diff --git a/variants/xiao_c6/target.cpp b/variants/xiao_c6/XiaoC6Board.cpp similarity index 99% rename from variants/xiao_c6/target.cpp rename to variants/xiao_c6/XiaoC6Board.cpp index ff77474a..555fed62 100644 --- a/variants/xiao_c6/target.cpp +++ b/variants/xiao_c6/XiaoC6Board.cpp @@ -47,3 +47,5 @@ mesh::LocalIdentity radio_new_identity() { RadioNoiseListener rng(radio); return mesh::LocalIdentity(&rng); // create new random identity } + + diff --git a/src/helpers/esp32/XiaoC6Board.h b/variants/xiao_c6/XiaoC6Board.h similarity index 100% rename from src/helpers/esp32/XiaoC6Board.h rename to variants/xiao_c6/XiaoC6Board.h diff --git a/variants/xiao_c6/platformio.ini b/variants/xiao_c6/platformio.ini index c27df55e..95dede08 100644 --- a/variants/xiao_c6/platformio.ini +++ b/variants/xiao_c6/platformio.ini @@ -28,6 +28,7 @@ build_flags = -D DISABLE_WIFI_OTA=1 build_src_filter = ${esp32c6_base.build_src_filter} +<../variants/xiao_c6> + + [env:Xiao_C6_Repeater] extends = Xiao_C6 diff --git a/variants/xiao_c6/target.h b/variants/xiao_c6/target.h index e1469228..0fbb0bb2 100644 --- a/variants/xiao_c6/target.h +++ b/variants/xiao_c6/target.h @@ -2,9 +2,9 @@ #define RADIOLIB_STATIC_ONLY 1 #include +#include #include #include -#include #include #include #include