From 3741e6f63abb8fc2d5c28d934a8f76ed7f8bfff0 Mon Sep 17 00:00:00 2001 From: Yoshi Walsh Date: Tue, 28 Jul 2026 23:10:18 +1000 Subject: [PATCH 1/7] Standardise RAK pin definitions --- variants/gat562_30s_mesh_kit/variant.h | 14 ++++----- variants/gat562_mesh_evb_pro/variant.h | 14 ++++----- variants/gat562_mesh_tracker_pro/variant.h | 14 ++++----- variants/gat562_mesh_watch13/variant.h | 14 ++++----- variants/rak3401/variant.h | 33 ++++++++++++++-------- variants/rak4631/variant.h | 12 ++++---- 6 files changed, 55 insertions(+), 46 deletions(-) diff --git a/variants/gat562_30s_mesh_kit/variant.h b/variants/gat562_30s_mesh_kit/variant.h index 5672572b..df3a649d 100644 --- a/variants/gat562_30s_mesh_kit/variant.h +++ b/variants/gat562_30s_mesh_kit/variant.h @@ -38,15 +38,15 @@ extern "C" { #endif // __cplusplus - /* +/* * WisBlock Base GPIO definitions */ - static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B - static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B - static const uint8_t WB_IO3 = 21; // SLOT_C - static const uint8_t WB_IO4 = 4; // SLOT_C - static const uint8_t WB_IO5 = 9; // SLOT_D - static const uint8_t WB_IO6 = 10; // SLOT_D + static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10 + static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12 + static const uint8_t WB_IO3 = 21; // SLOT_C P.12 + static const uint8_t WB_IO4 = 4; // SLOT_C P.10 + static const uint8_t WB_IO5 = 9; // SLOT_D P.12 + static const uint8_t WB_IO6 = 10; // SLOT_D P.10 static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT diff --git a/variants/gat562_mesh_evb_pro/variant.h b/variants/gat562_mesh_evb_pro/variant.h index b0e54a79..a9074445 100644 --- a/variants/gat562_mesh_evb_pro/variant.h +++ b/variants/gat562_mesh_evb_pro/variant.h @@ -38,15 +38,15 @@ extern "C" { #endif // __cplusplus - /* +/* * WisBlock Base GPIO definitions */ - static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B - static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B - static const uint8_t WB_IO3 = 21; // SLOT_C - static const uint8_t WB_IO4 = 4; // SLOT_C - static const uint8_t WB_IO5 = 9; // SLOT_D - static const uint8_t WB_IO6 = 10; // SLOT_D + static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10 + static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12 + static const uint8_t WB_IO3 = 21; // SLOT_C P.12 + static const uint8_t WB_IO4 = 4; // SLOT_C P.10 + static const uint8_t WB_IO5 = 9; // SLOT_D P.12 + static const uint8_t WB_IO6 = 10; // SLOT_D P.10 static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT diff --git a/variants/gat562_mesh_tracker_pro/variant.h b/variants/gat562_mesh_tracker_pro/variant.h index 0a28a2a4..1342b0fb 100644 --- a/variants/gat562_mesh_tracker_pro/variant.h +++ b/variants/gat562_mesh_tracker_pro/variant.h @@ -38,15 +38,15 @@ extern "C" { #endif // __cplusplus - /* +/* * WisBlock Base GPIO definitions */ - static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B - static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B - static const uint8_t WB_IO3 = 21; // SLOT_C - static const uint8_t WB_IO4 = 4; // SLOT_C - static const uint8_t WB_IO5 = 9; // SLOT_D - static const uint8_t WB_IO6 = 10; // SLOT_D + static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10 + static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12 + static const uint8_t WB_IO3 = 21; // SLOT_C P.12 + static const uint8_t WB_IO4 = 4; // SLOT_C P.10 + static const uint8_t WB_IO5 = 9; // SLOT_D P.12 + static const uint8_t WB_IO6 = 10; // SLOT_D P.10 static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT diff --git a/variants/gat562_mesh_watch13/variant.h b/variants/gat562_mesh_watch13/variant.h index f79c9970..679a6f24 100644 --- a/variants/gat562_mesh_watch13/variant.h +++ b/variants/gat562_mesh_watch13/variant.h @@ -38,15 +38,15 @@ extern "C" { #endif // __cplusplus - /* +/* * WisBlock Base GPIO definitions */ - static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B - static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B - static const uint8_t WB_IO3 = 21; // SLOT_C - static const uint8_t WB_IO4 = 4; // SLOT_C - static const uint8_t WB_IO5 = 9; // SLOT_D - static const uint8_t WB_IO6 = 10; // SLOT_D + static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10 + static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12 + static const uint8_t WB_IO3 = 21; // SLOT_C P.12 + static const uint8_t WB_IO4 = 4; // SLOT_C P.10 + static const uint8_t WB_IO5 = 9; // SLOT_D P.12 + static const uint8_t WB_IO6 = 10; // SLOT_D P.10 static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT diff --git a/variants/rak3401/variant.h b/variants/rak3401/variant.h index 98827886..a1a0e92c 100644 --- a/variants/rak3401/variant.h +++ b/variants/rak3401/variant.h @@ -38,6 +38,27 @@ extern "C" { #endif // __cplusplus +/* + * WisBlock Base GPIO definitions + */ + static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10 + static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12 + static const uint8_t WB_IO3 = 21; // SLOT_C P.12 + static const uint8_t WB_IO4 = 4; // SLOT_C P.10 + static const uint8_t WB_IO5 = 9; // SLOT_D P.12 + static const uint8_t WB_IO6 = 10; // SLOT_D P.10 + static const uint8_t WB_SW1 = 33; // IO_SLOT + static const uint8_t WB_A0 = 5; // IO_SLOT + static const uint8_t WB_A1 = 31; // IO_SLOT + static const uint8_t WB_I2C1_SDA = 13; // SENSOR_SLOT IO_SLOT + static const uint8_t WB_I2C1_SCL = 14; // SENSOR_SLOT IO_SLOT + static const uint8_t WB_I2C2_SDA = 24; // IO_SLOT + static const uint8_t WB_I2C2_SCL = 25; // IO_SLOT + static const uint8_t WB_SPI_CS = 26; // IO_SLOT + static const uint8_t WB_SPI_CLK = 3; // IO_SLOT + static const uint8_t WB_SPI_MISO = 29; // IO_SLOT + static const uint8_t WB_SPI_MOSI = 30; // IO_SLOT + // Number of pins defined in PinDescription array #define PINS_COUNT (48) #define NUM_DIGITAL_PINS (48) @@ -92,8 +113,6 @@ extern "C" #define PIN_AREF (2) #define PIN_NFC1 (9) -#define WB_IO5 PIN_NFC1 -#define WB_IO4 (4) #define PIN_NFC2 (10) static const uint8_t AREF = PIN_AREF; @@ -178,20 +197,10 @@ static const uint8_t AREF = PIN_AREF; // enables 3.3V periphery like GPS or IO Module // Do not toggle this for GPS power savings #define PIN_3V3_EN (34) -#define WB_IO2 PIN_3V3_EN - -// RAK1910 GPS module -// If using the wisblock GPS module and pluged into Port A on WisBlock base -// IO1 is hooked to PPS (pin 12 on header) = gpio 17 -// IO2 is hooked to GPS RESET = gpio 34, but it can not be used to this because IO2 is ALSO used to control 3V3_S power (1 is on). -// Therefore must be 1 to keep peripherals powered -// Power is on the controllable 3V3_S rail -#define PIN_GPS_PPS (17) // Pulse per second input from the GPS #define PIN_GPS_RX PIN_SERIAL1_RX #define PIN_GPS_TX PIN_SERIAL1_TX -#define PIN_GPS_1PPS PIN_GPS_PPS #define GPS_BAUD_RATE 9600 #define GPS_ADDRESS 0x42 //i2c address for GPS diff --git a/variants/rak4631/variant.h b/variants/rak4631/variant.h index 38cc8868..8635bd59 100644 --- a/variants/rak4631/variant.h +++ b/variants/rak4631/variant.h @@ -41,12 +41,12 @@ extern "C" /* * WisBlock Base GPIO definitions */ - static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B - static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B - static const uint8_t WB_IO3 = 21; // SLOT_C - static const uint8_t WB_IO4 = 4; // SLOT_C - static const uint8_t WB_IO5 = 9; // SLOT_D - static const uint8_t WB_IO6 = 10; // SLOT_D + static const uint8_t WB_IO1 = 17; // SLOT_A P.12 / SLOT_B P.10 + static const uint8_t WB_IO2 = 34; // SLOT_A P.10 / SLOT_B P.12 + static const uint8_t WB_IO3 = 21; // SLOT_C P.12 + static const uint8_t WB_IO4 = 4; // SLOT_C P.10 + static const uint8_t WB_IO5 = 9; // SLOT_D P.12 + static const uint8_t WB_IO6 = 10; // SLOT_D P.10 static const uint8_t WB_SW1 = 33; // IO_SLOT static const uint8_t WB_A0 = 5; // IO_SLOT static const uint8_t WB_A1 = 31; // IO_SLOT From 4063ce3bd5e3615b8f8cace3e1b775c826cf4752 Mon Sep 17 00:00:00 2001 From: Yoshi Walsh Date: Tue, 28 Jul 2026 23:11:25 +1000 Subject: [PATCH 2/7] Remove unused 1PPS pin definition This was only configured for a single Sensor Slot anyway --- variants/rak4631/variant.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/rak4631/variant.h b/variants/rak4631/variant.h index 8635bd59..50c1c5c7 100644 --- a/variants/rak4631/variant.h +++ b/variants/rak4631/variant.h @@ -182,7 +182,7 @@ extern "C" #define EXTERNAL_FLASH_DEVICES IS25LP080D #define EXTERNAL_FLASH_USE_QSPI -#define PIN_GPS_1PPS 17 //GPS PPS pin +#define PIN_GPS_RX PIN_SERIAL1_RX #define GPS_BAUD_RATE 9600 #define GPS_ADDRESS 0x42 //i2c address for GPS From a01ae26d66519249e2b848da5b60d890bbb7988c Mon Sep 17 00:00:00 2001 From: Yoshi Walsh Date: Tue, 28 Jul 2026 23:12:17 +1000 Subject: [PATCH 3/7] Move GPS pin definition to be with other pin definitions --- variants/rak4631/platformio.ini | 2 -- variants/rak4631/variant.h | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/variants/rak4631/platformio.ini b/variants/rak4631/platformio.ini index 2bbba314..668f69c0 100644 --- a/variants/rak4631/platformio.ini +++ b/variants/rak4631/platformio.ini @@ -12,8 +12,6 @@ build_flags = ${nrf52_base.build_flags} -D NRF52_POWER_MANAGEMENT -D PIN_BOARD_SCL=14 -D PIN_BOARD_SDA=13 - -D PIN_GPS_TX=PIN_SERIAL1_RX - -D PIN_GPS_RX=PIN_SERIAL1_TX -D PIN_GPS_EN=-1 -D PIN_OLED_RESET=-1 -D USE_SX1262 diff --git a/variants/rak4631/variant.h b/variants/rak4631/variant.h index 50c1c5c7..575d260a 100644 --- a/variants/rak4631/variant.h +++ b/variants/rak4631/variant.h @@ -183,6 +183,8 @@ extern "C" #define EXTERNAL_FLASH_USE_QSPI #define PIN_GPS_RX PIN_SERIAL1_RX +#define PIN_GPS_TX PIN_SERIAL1_TX + #define GPS_BAUD_RATE 9600 #define GPS_ADDRESS 0x42 //i2c address for GPS From bbe2681584da5e7cc5eb4417817ef5c025028cd1 Mon Sep 17 00:00:00 2001 From: Yoshi Walsh Date: Tue, 28 Jul 2026 23:13:33 +1000 Subject: [PATCH 4/7] Enable GPS support for RAK4631 & derivatives These boards support the RAK12500 and RAK12501 GPS modules. --- variants/rak4631/platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/rak4631/platformio.ini b/variants/rak4631/platformio.ini index 668f69c0..edb753bf 100644 --- a/variants/rak4631/platformio.ini +++ b/variants/rak4631/platformio.ini @@ -9,6 +9,7 @@ build_flags = ${nrf52_base.build_flags} -I variants/rak4631 -D RAK_4631 -D RAK_BOARD + -UENV_INCLUDE_GPS -D NRF52_POWER_MANAGEMENT -D PIN_BOARD_SCL=14 -D PIN_BOARD_SDA=13 From 966f7ab465f06bf235623df85b5d466758cd5d9f Mon Sep 17 00:00:00 2001 From: Yoshi Walsh Date: Tue, 28 Jul 2026 23:14:44 +1000 Subject: [PATCH 5/7] Enable RAK-flavoured sensor support for RAK3401 This board is a RAK4631 derivative (even sharing the same bootloader) and so supports the same features --- variants/rak3401/platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/rak3401/platformio.ini b/variants/rak3401/platformio.ini index 20a8a548..22024892 100644 --- a/variants/rak3401/platformio.ini +++ b/variants/rak3401/platformio.ini @@ -6,6 +6,7 @@ build_flags = ${nrf52_base.build_flags} ${sensor_base.build_flags} -I variants/rak3401 -D RAK_3401 + -D RAK_BOARD -D NRF52_POWER_MANAGEMENT -D RADIO_CLASS=CustomSX1262 -D WRAPPER_CLASS=CustomSX1262Wrapper From 0f8751630bb78d9d4a18e92427ff39e96864c33c Mon Sep 17 00:00:00 2001 From: Yoshi Walsh Date: Tue, 28 Jul 2026 23:16:41 +1000 Subject: [PATCH 6/7] Fix transposed UART RX/TX pins for RAK boards This seems to have just been a typo. Fixing this allows RAK12500 to work in serial mode, and RAK12501 to work at all. (Both tested on RAK3401) --- src/helpers/sensors/EnvironmentSensorManager.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/helpers/sensors/EnvironmentSensorManager.cpp b/src/helpers/sensors/EnvironmentSensorManager.cpp index 73842d9e..65b302f0 100644 --- a/src/helpers/sensors/EnvironmentSensorManager.cpp +++ b/src/helpers/sensors/EnvironmentSensorManager.cpp @@ -775,8 +775,7 @@ void EnvironmentSensorManager::initBasicGPS() { // or make a new location provider ... #ifdef RAK_WISBLOCK_GPS void EnvironmentSensorManager::rakGPSInit(){ - - Serial1.setPins(PIN_GPS_TX, PIN_GPS_RX); + Serial1.setPins(PIN_GPS_RX, PIN_GPS_TX); #ifdef GPS_BAUD_RATE Serial1.begin(GPS_BAUD_RATE); From ba7102fd6878cdd768cdc2832b623615a931a6bb Mon Sep 17 00:00:00 2001 From: Yoshi Walsh Date: Tue, 28 Jul 2026 23:24:21 +1000 Subject: [PATCH 7/7] Replace RAK GPS attempted reset pin control with 3V3_EN control The previous code only worked by accident. 1. Regardless of which slot the GPS module was present in, it would always be detected as Slot A 2. Slot A reset pin (WB_IO2) overlaps with PIN_3V3_EN. 3. Per u-blox ZOE-M8Q documentation: "In reset state, the SiP consumes a significant amount of current. It is therefore recommended to use RESET_N only as a reset signal and not as an enable/disable." So using reset PIN to control GPS status is not desirable anyway. This commit replaces the faulty reset pin detection and control logic by instead just controlling the 3V3 bus. Note: 3V3 control is disabled on the RAK3401 as this board is most commonly used in the "1W LoRa Booster Kit", and turning 3V3 off would also disable 5V power supply to the SKY66122 PA. Changes tested with RAK3401 with a RAK12500 in both Slot A and Slot C, as well as a RAK12501 in Slot A. --- .../sensors/EnvironmentSensorManager.cpp | 59 ++++++++----------- .../sensors/EnvironmentSensorManager.h | 2 +- variants/rak3401/variant.h | 5 +- 3 files changed, 27 insertions(+), 39 deletions(-) diff --git a/src/helpers/sensors/EnvironmentSensorManager.cpp b/src/helpers/sensors/EnvironmentSensorManager.cpp index 65b302f0..5441c226 100644 --- a/src/helpers/sensors/EnvironmentSensorManager.cpp +++ b/src/helpers/sensors/EnvironmentSensorManager.cpp @@ -165,16 +165,15 @@ static RAK12035_SoilMoisture RAK12035; #endif #ifdef RAK_WISBLOCK_GPS -static uint32_t gpsResetPin = 0; static bool i2cGPSFlag = false; static bool serialGPSFlag = false; #ifndef TELEM_RAK12500_ADDRESS -#define TELEM_RAK12500_ADDRESS 0x42 //RAK12500 Ublox GPS via i2c +#define TELEM_RAK12500_ADDRESS 0x42 // RAK12500 u-blox ZOE-M8Q GPS via i2c #endif #include -static SFE_UBLOX_GNSS ublox_GNSS; +static SFE_UBLOX_GNSS ublox_GNSS; // RAK12500 u-blox ZOE-M8Q GPS via UART -class RAK12500LocationProvider : public LocationProvider { +class RAKI2CLocationProvider : public LocationProvider { long _lat = 0; long _lng = 0; long _alt = 0; @@ -207,7 +206,7 @@ public: bool isEnabled() override { return true; } }; -static RAK12500LocationProvider RAK12500_provider; +static RAKI2CLocationProvider RAK12500_provider; #endif // ============================================================ @@ -783,14 +782,14 @@ void EnvironmentSensorManager::rakGPSInit(){ Serial1.begin(9600); #endif - //search for the correct IO standby pin depending on socket used - if(gpsIsAwake(WB_IO2)){ - } - else if(gpsIsAwake(WB_IO4)){ - } - else if(gpsIsAwake(WB_IO5)){ - } - else{ + #ifdef PIN_3V3_EN + digitalWrite(PIN_3V3_EN,LOW); + delay(1000); + digitalWrite(PIN_3V3_EN,HIGH); + delay(2000); + #endif + + if(!gpsIsAwake()){ MESH_DEBUG_PRINTLN("No GPS found"); gps_active = false; gps_detected = false; @@ -804,18 +803,10 @@ void EnvironmentSensorManager::rakGPSInit(){ #endif } -bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){ - - //set initial waking state - pinMode(ioPin,OUTPUT); - digitalWrite(ioPin,LOW); - delay(500); - digitalWrite(ioPin,HIGH); - delay(500); - +bool EnvironmentSensorManager::gpsIsAwake(){ //Try to init RAK12500 on I2C if (ublox_GNSS.begin(Wire) == true){ - MESH_DEBUG_PRINTLN("RAK12500 GPS init correctly with pin %i",ioPin); + MESH_DEBUG_PRINTLN("RAK12500 I2C GPS init"); ublox_GNSS.setI2COutput(COM_TYPE_UBX); ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_GPS); ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_GALILEO); @@ -826,7 +817,6 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){ ublox_GNSS.enableGNSS(true, SFE_UBLOX_GNSS_ID_QZSS); ublox_GNSS.setMeasurementRate(1000); ublox_GNSS.saveConfigSelective(VAL_CFG_SUBSEC_IOPORT); - gpsResetPin = ioPin; i2cGPSFlag = true; gps_active = true; gps_detected = true; @@ -834,20 +824,13 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){ _location = &RAK12500_provider; return true; } else if (Serial1.available()) { - MESH_DEBUG_PRINTLN("Serial GPS init correctly and is turned on"); -#ifdef PIN_GPS_EN - if(PIN_GPS_EN){ - gpsResetPin = PIN_GPS_EN; - } -#endif + MESH_DEBUG_PRINTLN("Serial GPS init correctly"); serialGPSFlag = true; gps_active = true; gps_detected = true; return true; } - pinMode(ioPin, INPUT); - MESH_DEBUG_PRINTLN("GPS did not init with this IO pin... try the next"); return false; } #endif @@ -855,8 +838,8 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){ void EnvironmentSensorManager::start_gps() { gps_active = true; #ifdef RAK_WISBLOCK_GPS - pinMode(gpsResetPin, OUTPUT); - digitalWrite(gpsResetPin, HIGH); + pinMode(PIN_3V3_EN, OUTPUT); + digitalWrite(PIN_3V3_EN, HIGH); return; #endif @@ -871,8 +854,12 @@ void EnvironmentSensorManager::start_gps() { void EnvironmentSensorManager::stop_gps() { gps_active = false; #ifdef RAK_WISBLOCK_GPS - pinMode(gpsResetPin, OUTPUT); - digitalWrite(gpsResetPin, LOW); + #ifdef SKY66122 + MESH_DEBUG_PRINTLN("GPS cannot be disabled as this would also disable SKY66122."); + return; + #endif + pinMode(PIN_3V3_EN, OUTPUT); + digitalWrite(PIN_3V3_EN, LOW); return; #endif diff --git a/src/helpers/sensors/EnvironmentSensorManager.h b/src/helpers/sensors/EnvironmentSensorManager.h index 29147c89..be1195dc 100644 --- a/src/helpers/sensors/EnvironmentSensorManager.h +++ b/src/helpers/sensors/EnvironmentSensorManager.h @@ -30,7 +30,7 @@ protected: void initBasicGPS(); #ifdef RAK_BOARD void rakGPSInit(); - bool gpsIsAwake(uint8_t ioPin); + bool gpsIsAwake(); #endif #endif diff --git a/variants/rak3401/variant.h b/variants/rak3401/variant.h index a1a0e92c..5f49695c 100644 --- a/variants/rak3401/variant.h +++ b/variants/rak3401/variant.h @@ -181,6 +181,7 @@ static const uint8_t AREF = PIN_AREF; // in hardware via SetDIO2AsRfSwitchCtrl (microsecond-accurate, no GPIO needed). // The 5V boost for the PA is enabled by WB_IO2 (P0.34 = PIN_3V3_EN). #define SX126X_POWER_EN (21) // P0.21 = IO3 -> SKY66122 CSD+CPS (FEM enable) +#define SKY66122 // CTX is driven by SX1262 DIO2, not a GPIO #define SX126X_DIO2_AS_RF_SWITCH @@ -194,8 +195,8 @@ static const uint8_t AREF = PIN_AREF; #define P_LORA_BUSY SX126X_BUSY #define P_LORA_RESET SX126X_RESET -// enables 3.3V periphery like GPS or IO Module -// Do not toggle this for GPS power savings +// enables 3.3V periphery like GPS, the IO Module, and the SKY66122 5V boost +// Do NOT use this for GPS power savings as this will interfere with LoRa functionality #define PIN_3V3_EN (34) #define PIN_GPS_RX PIN_SERIAL1_RX