+
+#ifdef ARCH_PORTDUINO
+#include "configuration.h"
+
+#if defined(UNIT_TEST)
+#define IS_RUNNING_TESTS 1
+#else
+#define IS_RUNNING_TESTS 0
+#endif
+
+#if (defined(ARCH_ESP32) || defined(ARCH_NRF52) || defined(ARCH_RP2040)) && !defined(CONFIG_IDF_TARGET_ESP32S2) && \
+ !defined(CONFIG_IDF_TARGET_ESP32C3)
+#include "modules/SerialModule.h"
+#endif
+
+#if (defined(ARCH_ESP32) || defined(ARCH_NRF52) || defined(ARCH_RP2040)) && !defined(CONFIG_IDF_TARGET_ESP32S2) && \
+ !defined(CONFIG_IDF_TARGET_ESP32C3)
+
+// Test that empty configuration is valid.
+void test_serialConfigEmptyIsValid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {};
+
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+}
+
+// Test that basic enabled configuration is valid.
+void test_serialConfigEnabledIsValid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {.enabled = true};
+
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+}
+
+// Test that configuration with override_console_serial_port and NMEA mode is valid.
+void test_serialConfigWithOverrideConsoleNmeaModeIsValid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {
+ .enabled = true, .override_console_serial_port = true, .mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_NMEA};
+
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+}
+
+// Test that configuration with override_console_serial_port and CalTopo mode is valid.
+void test_serialConfigWithOverrideConsoleCalTopoModeIsValid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {
+ .enabled = true, .override_console_serial_port = true, .mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_CALTOPO};
+
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+}
+
+// Test that configuration with override_console_serial_port and DEFAULT mode is invalid.
+void test_serialConfigWithOverrideConsoleDefaultModeIsInvalid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {
+ .enabled = true, .override_console_serial_port = true, .mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_DEFAULT};
+
+ TEST_ASSERT_FALSE(SerialModule::isValidConfig(config));
+}
+
+// Test that configuration with override_console_serial_port and SIMPLE mode is invalid.
+void test_serialConfigWithOverrideConsoleSimpleModeIsInvalid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {
+ .enabled = true, .override_console_serial_port = true, .mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_SIMPLE};
+
+ TEST_ASSERT_FALSE(SerialModule::isValidConfig(config));
+}
+
+// Test that configuration with override_console_serial_port and TEXTMSG mode is invalid.
+void test_serialConfigWithOverrideConsoleTextMsgModeIsInvalid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {
+ .enabled = true, .override_console_serial_port = true, .mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_TEXTMSG};
+
+ TEST_ASSERT_FALSE(SerialModule::isValidConfig(config));
+}
+
+// Test that configuration with override_console_serial_port and PROTO mode is invalid.
+void test_serialConfigWithOverrideConsoleProtoModeIsInvalid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {
+ .enabled = true, .override_console_serial_port = true, .mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_PROTO};
+
+ TEST_ASSERT_FALSE(SerialModule::isValidConfig(config));
+}
+
+// Test that various modes work without override_console_serial_port.
+void test_serialConfigVariousModesWithoutOverrideAreValid(void)
+{
+ meshtastic_ModuleConfig_SerialConfig config = {.enabled = true, .override_console_serial_port = false};
+
+ // Test DEFAULT mode
+ config.mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_DEFAULT;
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+
+ // Test SIMPLE mode
+ config.mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_SIMPLE;
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+
+ // Test TEXTMSG mode
+ config.mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_TEXTMSG;
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+
+ // Test PROTO mode
+ config.mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_PROTO;
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+
+ // Test NMEA mode
+ config.mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_NMEA;
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+
+ // Test CALTOPO mode
+ config.mode = meshtastic_ModuleConfig_SerialConfig_Serial_Mode_CALTOPO;
+ TEST_ASSERT_TRUE(SerialModule::isValidConfig(config));
+}
+
+#endif // Architecture check
+
+void setup()
+{
+ initializeTestEnvironment();
+
+#if (defined(ARCH_ESP32) || defined(ARCH_NRF52) || defined(ARCH_RP2040)) && !defined(CONFIG_IDF_TARGET_ESP32S2) && \
+ !defined(CONFIG_IDF_TARGET_ESP32C3)
+ UNITY_BEGIN();
+ RUN_TEST(test_serialConfigEmptyIsValid);
+ RUN_TEST(test_serialConfigEnabledIsValid);
+ RUN_TEST(test_serialConfigWithOverrideConsoleNmeaModeIsValid);
+ RUN_TEST(test_serialConfigWithOverrideConsoleCalTopoModeIsValid);
+ RUN_TEST(test_serialConfigWithOverrideConsoleDefaultModeIsInvalid);
+ RUN_TEST(test_serialConfigWithOverrideConsoleSimpleModeIsInvalid);
+ RUN_TEST(test_serialConfigWithOverrideConsoleTextMsgModeIsInvalid);
+ RUN_TEST(test_serialConfigWithOverrideConsoleProtoModeIsInvalid);
+ RUN_TEST(test_serialConfigVariousModesWithoutOverrideAreValid);
+ exit(UNITY_END());
+#else
+ LOG_WARN("This test requires ESP32, NRF52, or RP2040 architecture");
+ UNITY_BEGIN();
+ UNITY_END();
+#endif
+}
+#else
+void setup()
+{
+ initializeTestEnvironment();
+ LOG_WARN("This test requires the ARCH_PORTDUINO variant");
+ UNITY_BEGIN();
+ UNITY_END();
+}
+#endif
+void loop() {}
diff --git a/userPrefs.jsonc b/userPrefs.jsonc
index fc9e6ed72..f6f3ef995 100644
--- a/userPrefs.jsonc
+++ b/userPrefs.jsonc
@@ -23,6 +23,7 @@
// "USERPREFS_CONFIG_OWNER_SHORT_NAME": "MLN",
// "USERPREFS_CONFIG_DEVICE_ROLE": "meshtastic_Config_DeviceConfig_Role_CLIENT", // Defaults to CLIENT. ROUTER*, LOST AND FOUND, and REPEATER roles are restricted.
// "USERPREFS_EVENT_MODE": "1",
+ // "USERPREFS_FIRMWARE_EDITION": "meshtastic_FirmwareEdition_BURNING_MAN",
// "USERPREFS_FIXED_BLUETOOTH": "121212",
// "USERPREFS_FIXED_GPS": "",
// "USERPREFS_FIXED_GPS_ALT": "0",
@@ -53,5 +54,7 @@
// "USERPREFS_MQTT_ENCRYPTION_ENABLED": "true",
// "USERPREFS_MQTT_TLS_ENABLED": "false",
// "USERPREFS_MQTT_ROOT_TOPIC": "event/REPLACEME",
+ // "USERPREFS_RINGTONE_NAG_SECS": "60",
+ "USERPREFS_RINGTONE_RTTTL": "24:d=32,o=5,b=565:f6,p,f6,4p,p,f6,p,f6,2p,p,b6,p,b6,p,b6,p,b6,p,b,p,b,p,b,p,b,p,b,p,b,p,b,p,b,1p.,2p.,p",
"USERPREFS_TZ_STRING": "tzplaceholder "
}
diff --git a/variants/diy/platformio.ini b/variants/diy/platformio.ini
deleted file mode 100644
index 153796daf..000000000
--- a/variants/diy/platformio.ini
+++ /dev/null
@@ -1,129 +0,0 @@
-; Meshtastic DIY v1 by Nano VHF Schematic based on ESP32-WROOM-32 (38 pins) devkit & EBYTE E22 SX1262/SX1268 module
-[env:meshtastic-diy-v1]
-extends = esp32_base
-board = esp32doit-devkit-v1
-board_check = true
-build_flags =
- ${esp32_base.build_flags}
- -D DIY_V1
- -D EBYTE_E22
- -I variants/diy/v1
-
-; Meshtastic DIY v1.1 new schematic based on ESP32-WROOM-32 & SX1262/SX1268 modules
-[env:meshtastic-diy-v1_1]
-extends = esp32_base
-board = esp32doit-devkit-v1
-board_level = extra
-build_flags =
- ${esp32_base.build_flags}
- -D DIY_V1
- -D EBYTE_E22
- -I variants/diy/v1_1
-
-; Port to Disaster Radio's ESP32-v3 Dev Board
-[env:meshtastic-dr-dev]
-extends = esp32_base
-board = esp32doit-devkit-v1
-board_upload.maximum_size = 4194304
-board_upload.maximum_ram_size = 532480
-build_flags =
- ${esp32_base.build_flags}
- -D DR_DEV
- -D EBYTE_E22
- -I variants/diy/dr-dev
-
-; Hydra - Meshtastic DIY v1 hardware with some specific changes
-[env:hydra]
-extends = esp32_base
-board = esp32doit-devkit-v1
-build_flags =
- ${esp32_base.build_flags}
- -D DIY_V1
- -I variants/diy/hydra
-
-
-; Promicro + E22(0)-xxxMM / RA-01SH modules board variant - DIY - without TCXO
-[env:nrf52_promicro_diy_xtal]
-extends = nrf52840_base
-board = promicro-nrf52840
-board_level = extra
-build_flags = ${nrf52840_base.build_flags}
- -I variants/diy/nrf52_promicro_diy_xtal
- -D NRF52_PROMICRO_DIY
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/diy/nrf52_promicro_diy_xtal>
-lib_deps =
- ${nrf52840_base.lib_deps}
-debug_tool = jlink
-
-
-; Promicro + E22(0)-xxxM / HT-RA62 modules board variant - DIY - with TCXO
-[env:nrf52_promicro_diy_tcxo]
-extends = nrf52840_base
-board = promicro-nrf52840
-build_flags = ${nrf52840_base.build_flags}
- -I variants/diy/nrf52_promicro_diy_tcxo
- -D NRF52_PROMICRO_DIY
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/diy/nrf52_promicro_diy_tcxo>
-lib_deps =
- ${nrf52840_base.lib_deps}
-debug_tool = jlink
-
-; NRF52 ProMicro w/ E-Ink display
-[env:nrf52_promicro_diy-inkhud]
-board_level = extra
-extends = nrf52840_base, inkhud
-board = promicro-nrf52840
-build_flags =
- ${nrf52840_base.build_flags}
- ${inkhud.build_flags}
- -I variants/diy/nrf52_promicro_diy_tcxo
- -D NRF52_PROMICRO_DIY
-build_src_filter =
- ${nrf52_base.build_src_filter}
- ${inkhud.build_src_filter}
- +<../variants/diy/nrf52_promicro_diy_tcxo>
-lib_deps =
- ${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
- ${nrf52840_base.lib_deps}
-extra_scripts =
- ${env.extra_scripts}
- variants/diy/nrf52_promicro_diy_tcxo/custom_build_tasks.py ; Add to PIO's Project Tasks pane: preset builds for common displays
-
-; Seeed Xiao BLE: https://www.digikey.com/en/products/detail/seeed-technology-co-ltd/102010448/16652893
-[env:xiao_ble]
-extends = env:seeed_xiao_nrf52840_kit
-board_level = extra
-build_flags = ${env:seeed_xiao_nrf52840_kit.build_flags} -D PRIVATE_HW -DXIAO_BLE_LEGACY_PINOUT -DEBYTE_E22 -DEBYTE_E22_900M30S
-build_unflags = -DGPS_L76K
-
-; Seeed XIAO nRF52840 + XIAO Wio SX1262 DIY
-[env:seeed-xiao-nrf52840-wio-sx1262]
-board = xiao_ble_sense
-extends = nrf52840_base
-board_level = extra
-build_flags = ${nrf52840_base.build_flags} -Ivariants/diy/seeed-xiao-nrf52840-wio-sx1262 -D PRIVATE_HW
- -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52
-board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/diy/seeed-xiao-nrf52840-wio-sx1262>
-lib_deps =
- ${nrf52840_base.lib_deps}
-debug_tool = jlink
-
-; NanoVHF T-Energy-S3 + E22(0)-xxxM - DIY
-[env:t-energy-s3_e22]
-extends = esp32s3_base
-board = esp32-s3-devkitc-1
-board_build.partitions = default_16MB.csv
-board_level = extra
-board_upload.flash_size = 16MB ;Specify the FLASH capacity as 16MB
-board_build.arduino.memory_type = qio_opi ;Enable internal PSRAM
-build_unflags =
- ${esp32s3_base.build_unflags}
- -D ARDUINO_USB_MODE=1
-build_flags =
- ${esp32s3_base.build_flags}
- -D EBYTE_ESP32_S3
- -D BOARD_HAS_PSRAM
- -D ARDUINO_USB_MODE=0
- -D ARDUINO_USB_CDC_ON_BOOT=1
- -I variants/diy/t-energy-s3_e22
diff --git a/variants/diy/xiao_ble/README.md b/variants/diy/xiao_ble/README.md
deleted file mode 100644
index 2a08138ba..000000000
--- a/variants/diy/xiao_ble/README.md
+++ /dev/null
@@ -1,264 +0,0 @@
-#
-
-
- Xiao BLE/BLE Sense + Ebyte E22-900M30S
-
-
-
- A step-by-step guide for macOS and Linux
-
-
-## Introduction
-
-This guide will walk you through everything needed to get the Xiao BLE (or BLE Sense) running Meshtastic using an Ebyte E22-900M30S LoRa module. The combination of the E22 with an nRF52840 MCU is desirable because it allows for both very low idle (Rx) power draw and high transmit power. The Xiao BLE is a small but surprisingly well-appointed nRF52840 board, with enough GPIO for most Meshtastic applications and a built-in LiPo charger. The E22, on the other hand, is a famously inscrutable and mysterious beast. It is one of the more readily available LoRa modules capable of transmitting at 30 dBm, and includes an LNA to boost its Rx sensitivity a few dB beyond that of the SX1262. However, its documentation is relatively sparse overall, and seems to merely hint at (or completely omit) several key details regarding its functionality. Thus, much of what follows is a synthesis of my observations and inferences over the course of many hours of trial and error.
-
-Acknowledgement and friendly disclaimer
-
-Huge thanks to those in the community who have forged the way with the E22, without whose hard work none of this would have been possible! (thebentern, riddick, rainer_vie, beegee-tokyo, geeksville, caveman99, Der_Bear, PlumRugOfDoom, BigCorvus, and many others.)
-
-
-
-Please take the conclusions here as a tentative work in progress, representing my current (and fairly limited) understanding of the E22 when paired with this particular MCU. It is my hope that this guide will be helpful to others who are interested in trying a DIY Meshtastic build, and also be subject to revision by folks with more experience and better test equipment.
-
-### Obligatory liability disclaimer
-
-This guide and all associated content is for informational purposes only. The information presented is intended for consumption only by persons having appropriate technical skill and judgement, to be used entirely at their own discretion and risk. The authors of this guide in no way provide any warranty, express or implied, toward the content herein, nor its correctness, safety, or suitability to any particular purpose. By following the instructions in this guide in part or in full, you assume all responsibility for all potential risks, including but not limited to fire, property damage, bodily injury, and death.
-
-### Note
-
-These instructions assume you are running macOS or Linux, but it should be relatively easy to translate each command for Windows. (In this case, in step 2 below, each line of `xiao_ble.sh` would also need to be converted to the equivalent Windows CLI command and run individually.)
-
-## 1. Update Bootloader
-
-The first thing you will need to do is update the Xiao BLE's bootloader. The stock bootloader is functionally very similar to the Adafruit nRF52 UF2 bootloader, but apparently not quite enough so to work with Meshtastic out of the box.
-
-1. Connect the Xiao BLE to your computer via USB-C.
-
-2. Install `adafruit-nrfutil` by following the instructions here.
-
-3. Open a terminal window and navigate to `firmware/variants/xiao_ble` (where `firmware` is the directory into which you have cloned the Meshtastic firmware repo).
-
-4. Run the following command, replacing `/dev/cu.usbmodem2101` with the serial port your Xiao BLE is connected to:
-
- ```bash
- adafruit-nrfutil --verbose dfu serial --package xiao_nrf52840_ble_bootloader-0.7.0-22-g277a0c8_s140_7.3.0.zip --port /dev/cu.usbmodem2101 -b 115200 --singlebank --touch 1200
- ```
-
-5. If all goes well, the Xiao BLE's red LED should start to pulse slowly, and you should see a new USB storage device called `XIAO-BOOT` appear under `Locations` in Finder.
-
-
-
-## 2. PlatformIO Environment Preparation
-
-Before building Meshtastic for the Xiao BLE + E22, it is necessary to pull in SoftDevice 7.3.0 and its associated linker script (nrf52840_s140_v7.ld) from Seeed Studio's Arduino core. The `xiao_ble.sh` script does this.
-
-1. In your terminal window, run the following command:
-
- ```bash
- sudo ./xiao_ble.sh
- ```
-
-
-
-## 3. Build Meshtastic
-
-At this point, you should be able to build the firmware successfully.
-
-1. In VS Code, press `Command Shift P` to bring up the command palette.
-
-2. Search for and run the `Developer: Reload Window` command.
-
-3. Bring up the command palette again with `Command Shift P`. Search for and run the `PlatformIO: Pick Project Environment` command.
-
-4. In the list of environments, select `env:xiao_ble`. PlatformIO may update itself for a minute or two, and should let you know once done.
-
-5. Return to the command palette once again (`Command Shift P`). Search for and run the `PlatformIO: Build` command.
-
-6. PlatformIO will build the project. After a few minutes you should see a green `SUCCESS` message.
-
-
-
-## 4. Wire the board
-
-Connecting the E22 to the Xiao BLE is straightforward, but there are a few gotchas to be mindful of.
-
-- On the Xiao BLE:
-
- - Pins D4 and D5 are currently mapped to `PIN_WIRE_SDA` and `PIN_WIRE_SCL`, respectively. If you are not using I²C and would like to free up pins D4 and D5 for use as GPIO, `PIN_WIRE_SDA` and `PIN_WIRE_SCL` can be reassigned to any two other unused pin numbers.
-
- - Pins D6 and D7 were originally mapped to the TX and RX pins for serial interface 1 (`PIN_SERIAL1_RX` and `PIN_SERIAL1_TX`) but are currently set to -1 in `variant.h`. If you need to expose a serial interface, you can restore these pins and move e.g. `SX126X_RXEN` to pin 4 or 5 (the opposite should work too).
-
-- On the E22:
-
- - There are two options for the E22's `TXEN` pin:
-
- 1. It can be connected to the MCU on the pin defined as `SX126X_TXEN` in `variant.h`. In this configuration, the MCU will control Tx/Rx switching "manually". As long as `SX126X_TXEN` and `SX126X_RXEN` are both defined in `variant.h` (and neither is set to `RADIOLIB_NC`), `SX126xInterface.cpp` will initialize the E22 correctly for this mode.
-
- 2. Alternately, it can be connected to the E22's `DIO2` pin only, with neither `TXEN` nor `DIO2` being connected to the MCU. In this configuration, the E22 will control Tx/Rx switching automatically. In `variant.h`, as long as `SX126X_TXEN` is defined as `RADIOLIB_NC`, and `SX126X_RXEN` is defined and connected to the E22's `RXEN` pin, and `E22_TXEN_CONNECTED_TO_DIO2` is defined, `SX126xInterface.cpp` will initialize the E22 correctly for this mode. This configuration frees up a GPIO, and presents no drawbacks that I have found.
-
- - Note that any combination other than the two described above will likely result in unexpected behavior. In my testing, some of these other configurations appeared to "work" at first glance, but every one I tried had at least one of the following flaws: weak Tx power, extremely poor Rx sensitivity, or the E22 overheating because TXEN was never pulled low, causing its PA to stay on indefinitely.
-
- - Along the same lines, it is a good idea to check the E22's temperature frequently by lightly touching the shield. If you feel the shield getting hot (i.e. approaching uncomfortable to touch) near pins 1, 2, and 3, something is probably misconfigured; disconnect both the Xiao BLE and E22 from power and double check wiring and pin mapping.
-
- - Whether you opt to let the E22 control Rx and Tx or handle this manually, the E22's `RXEN` pin must always be connected to the MCU on the pin defined as `SX126X_RXEN` in `variant.h`.
-
-Note
-
-The default pin mapping in `variant.h` uses 'automatic Tx/Rx switching' mode. If you wire your board for manual Rx/Tx switching, make sure to update `variant.h` accordingly by commenting/uncommenting the necessary lines in the 'E22 Tx/Rx control options' section.
-
-
-
----
-
-
-
-Example wiring for "E22 automatic Tx/Rx switching" mode:
-
-
-MCU -> E22 connections
-
-| Xiao BLE pin | variant.h definition | E22 pin | Notes |
-| :----------- | :------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------- |
-| D0 | SX126X_CS | 19 (NSS) | |
-| D1 | SX126X_DIO1 | 13 (DIO1) | |
-| D2 | SX126X_BUSY | 14 (BUSY) | |
-| D3 | SX126X_RESET | 15 (NRST) | |
-| D7 | SX126X_RXEN | 6 (RXEN) | These pins must still be connected, and `SX126X_RXEN` defined in `variant.h`, otherwise Rx sensitivity will be poor. |
-| D8 | PIN_SPI_SCK | 18 (SCK) | |
-| D9 | PIN_SPI_MISO | 16 (MISO) | |
-| D10 | PIN_SPI_MOSI | 17 (MOSI) | |
-
-
-
-
-E22 -> E22 connections:
-
-| E22 pin | E22 pin | Notes |
-| :------ | :------ | :------------------------------------------------------------------------ |
-| TXEN | DIO2 | These must be physically connected for automatic Tx/Rx switching to work. |
-
-Note
-
-The schematic (`xiao-ble-e22-schematic.png`) in the `eagle-project` directory uses this wiring.
-
-
-
----
-
-
-
-Example wiring for "Manual Tx/Rx switching" mode:
-
-MCU -> E22 connections
-
-| Xiao BLE pin | variant.h definition | E22 pin | Notes |
-| :----------- | :------------------- | :-------- | :---- |
-| D0 | SX126X_CS | 19 (NSS) | |
-| D1 | SX126X_DIO1 | 13 (DIO1) | |
-| D2 | SX126X_BUSY | 14 (BUSY) | |
-| D3 | SX126X_RESET | 15 (NRST) | |
-| D6 | SX126X_TXEN | 7 (TXEN) | |
-| D7 | SX126X_RXEN | 6 (RXEN) | |
-| D8 | PIN_SPI_SCK | 18 (SCK) | |
-| D9 | PIN_SPI_MISO | 16 (MISO) | |
-| D10 | PIN_SPI_MOSI | 17 (MOSI) | |
-
-E22 -> E22 connections: (none)
-
-
-
-## 5. Flash the firmware to the Xiao BLE
-
-1. Double press the Xiao's `reset` button to put it in bootloader mode.
-2. In a terminal window, navigate to the Meshtastic firmware repo's root directory, and from there to `.pio/build/xiao_ble`.
-3. Convert the generated `.hex` file into a `.uf2` file:
-
- ```bash
- ../../../bin/uf2conv.py firmware.hex -c -o firmware.uf2 -f 0xADA52840
- ```
-
-4. Copy the new `.uf2` file to the Xiao's mass storage volume:
-
- ```bash
- cp firmware.uf2 /Volumes/XIAO-BOOT
- ```
-
-5. The Xiao's red LED will flash for several seconds as the firmware is copied.
-6. Once the firmware is copied, to verify it is running, run the following command:
-
- ```bash
- meshtastic --noproto
- ```
-
-7. Then, press the Xiao's `reset` button again. You should see a lot of debug output logged in the terminal window.
-
-
-
-## 6. Troubleshooting
-
-- If after flashing Meshtastic, the Xiao is bootlooped, look at the serial output (you can see this by running `meshtastic --noproto` with the device connected to your computer via USB).
-
- - If you see that the SX1262 init result was -2, this likely indicates a wiring problem; double check your wiring and pin mapping in `variant.h`.
-
- - If you see an error mentioning tinyFS, this may mean you need to reformat the Xiao's storage:
-
- 1. Double press the `reset` button to put the Xiao in bootloader mode.
-
- 2. In a terminal window, navigate to the Meshtastic firmware repo's root directory, and from there to `variants/xiao_ble`.
-
- 3. Run the following command: `cp xiao-ble-internal-format.uf2 /Volumes/XIAO-BOOT`
-
- 4. The Xiao's red LED will flash briefly as the filesystem format firmware is copied.
-
- 5. Run the following command: `meshtastic --noproto`
-
- 6. In the output of the above command, you should see a message saying "Formatting...done".
-
- 7. To flash Meshtastic again, repeat the steps in section 5 above.
-
- - If you don't see any specific error message, but the boot process is stuck or not proceeding as expected, this might also mean there is a conflict in `variant.h`. If you have made any changes to the pin mapping, ensure they do not result in a conflict. If all else fails, try reverting your changes and using the known-good configuration included here.
-
- - The above might also mean something is wired incorrectly. Try reverting to one of the known-good example wirings in section 4.
-
-- If the E22 gets hot to the touch:
- - The power amplifier is likely running continually. Disconnect it and the Xiao from power immediately, and double check wiring and pin mapping. In my experimentation this occurred in cases where TXEN was inadvertenly high (usually due to a pin mapping conflict).
-
-
-
-## 7. Notes
-
-- There are several anecdotal recommendations regarding the Tx power the E22's internal SX1262 should be set to in order to achieve the advertised output of 30 dBm, ranging from 4 (per this article in the RadioLib github repo) to 22 (per this conversation from the Meshtastic Discord). When paired with the Xiao BLE in the configurations described above, I observed that the output is at its maximum when Tx power is set to 22.
-
-- To achieve its full output, the E22 should have a bypass capacitor from its 5V supply to ground. 100 µF works well.
-
-- The E22 will happily run on voltages lower than 5V, but the full output power will not be realized. For example, with a fully charged LiPo at 4.2V, Tx power appears to max out around 26-27 dBm.
-
-
-
-## 8. Testing Methodology
-
-During what became a fairly long trial-and-error process, I did a lot of careful testing of Tx power and Rx sensitivity. My methodology in these tests was as follows:
-
-- All tests were conducted between two nodes:
-
- 1. The Xiao BLE + E22 coupled with an Abracon ARRKP4065-S915A ceramic patch antenna
-
- 2. A RAK 5005/4631 coupled with a Laird MA9-5N antenna via a 4" U.FL to Type N pigtail.
-
- - No other nodes were powered up onsite or nearby.
-
-
-
-- Each node and its antenna was kept in exactly the same position and orientation throughout testing.
-
-- Other environmental factors (e.g. the location and resting position of my body in the room while testing) were controlled as carefully as possible.
-
-- Each test comprised at least five (and often ten) runs, after which the results were averaged.
-
-- All testing was done by sending single-character messages between nodes and observing the received RSSI reported in the message acknowledgement. Messages were sent one by one, waiting for each to be acknowledged or time out before sending the next.
-
-- The E22's Tx power was observed by sending messages from the RAK to the Xiao BLE + E22 and recording the received RSSI.
-
-- The opposite was done to observe the E22's Rx sensitivity: messages were sent from the Xiao BLE + E22 to the RAK, and the received RSSI was recorded.
-
-While this cannot match the level of accuracy achievable with actual test equipment in a lab setting, it was nonetheless sufficient to demonstrate the (sometimes very large) differences in Tx power and Rx sensitivity between various configurations.
diff --git a/variants/betafpv_2400_tx_micro/platformio.ini b/variants/esp32/betafpv_2400_tx_micro/platformio.ini
similarity index 81%
rename from variants/betafpv_2400_tx_micro/platformio.ini
rename to variants/esp32/betafpv_2400_tx_micro/platformio.ini
index 531e8532d..4d163d834 100644
--- a/variants/betafpv_2400_tx_micro/platformio.ini
+++ b/variants/esp32/betafpv_2400_tx_micro/platformio.ini
@@ -8,11 +8,11 @@ build_flags =
-D VTABLES_IN_FLASH=1
-D CONFIG_DISABLE_HAL_LOCKS=1
-O2
- -I variants/betafpv_2400_tx_micro
+ -I variants/esp32/betafpv_2400_tx_micro
board_build.f_cpu = 240000000L
upload_protocol = esptool
;upload_port = /dev/ttyUSB0
upload_speed = 460800
lib_deps =
${esp32_base.lib_deps}
- adafruit/Adafruit NeoPixel @ ^1.12.0
\ No newline at end of file
+ adafruit/Adafruit NeoPixel @ ^1.12.0
diff --git a/variants/betafpv_2400_tx_micro/variant.h b/variants/esp32/betafpv_2400_tx_micro/variant.h
similarity index 100%
rename from variants/betafpv_2400_tx_micro/variant.h
rename to variants/esp32/betafpv_2400_tx_micro/variant.h
diff --git a/variants/betafpv_900_tx_nano/platformio.ini b/variants/esp32/betafpv_900_tx_nano/platformio.ini
similarity index 84%
rename from variants/betafpv_900_tx_nano/platformio.ini
rename to variants/esp32/betafpv_900_tx_nano/platformio.ini
index 3bea16f6b..7e01fd2fa 100644
--- a/variants/betafpv_900_tx_nano/platformio.ini
+++ b/variants/esp32/betafpv_900_tx_nano/platformio.ini
@@ -8,10 +8,10 @@ build_flags =
-D VTABLES_IN_FLASH=1
-D CONFIG_DISABLE_HAL_LOCKS=1
-O2
- -I variants/betafpv_900_tx_nano
+ -I variants/esp32/betafpv_900_tx_nano
board_build.f_cpu = 240000000L
upload_protocol = esptool
;upload_port = /dev/ttyUSB0
upload_speed = 460800
lib_deps =
- ${esp32_base.lib_deps}
\ No newline at end of file
+ ${esp32_base.lib_deps}
diff --git a/variants/betafpv_900_tx_nano/variant.h b/variants/esp32/betafpv_900_tx_nano/variant.h
similarity index 100%
rename from variants/betafpv_900_tx_nano/variant.h
rename to variants/esp32/betafpv_900_tx_nano/variant.h
diff --git a/variants/chatter2/platformio.ini b/variants/esp32/chatter2/platformio.ini
similarity index 91%
rename from variants/chatter2/platformio.ini
rename to variants/esp32/chatter2/platformio.ini
index 83e00d0c4..bf496bf26 100644
--- a/variants/chatter2/platformio.ini
+++ b/variants/esp32/chatter2/platformio.ini
@@ -5,7 +5,7 @@ board = esp32doit-devkit-v1
build_flags =
${esp32_base.build_flags}
-D CHATTER_2
- -I variants/chatter2
+ -I variants/esp32/chatter2
lib_deps =
${esp32_base.lib_deps}
diff --git a/variants/chatter2/variant.h b/variants/esp32/chatter2/variant.h
similarity index 100%
rename from variants/chatter2/variant.h
rename to variants/esp32/chatter2/variant.h
diff --git a/variants/esp32/diy/dr-dev/platformio.ini b/variants/esp32/diy/dr-dev/platformio.ini
new file mode 100644
index 000000000..5461d27b3
--- /dev/null
+++ b/variants/esp32/diy/dr-dev/platformio.ini
@@ -0,0 +1,11 @@
+; Port to Disaster Radio's ESP32-v3 Dev Board
+[env:meshtastic-dr-dev]
+extends = esp32_base
+board = esp32doit-devkit-v1
+board_upload.maximum_size = 4194304
+board_upload.maximum_ram_size = 532480
+build_flags =
+ ${esp32_base.build_flags}
+ -D DR_DEV
+ -D EBYTE_E22
+ -I variants/esp32/diy/dr-dev
diff --git a/variants/diy/dr-dev/variant.h b/variants/esp32/diy/dr-dev/variant.h
similarity index 100%
rename from variants/diy/dr-dev/variant.h
rename to variants/esp32/diy/dr-dev/variant.h
diff --git a/variants/esp32/diy/hydra/platformio.ini b/variants/esp32/diy/hydra/platformio.ini
new file mode 100644
index 000000000..a922ed874
--- /dev/null
+++ b/variants/esp32/diy/hydra/platformio.ini
@@ -0,0 +1,8 @@
+; Hydra - Meshtastic DIY v1 hardware with some specific changes
+[env:hydra]
+extends = esp32_base
+board = esp32doit-devkit-v1
+build_flags =
+ ${esp32_base.build_flags}
+ -D DIY_V1
+ -I variants/esp32/diy/hydra
diff --git a/variants/diy/hydra/variant.h b/variants/esp32/diy/hydra/variant.h
similarity index 100%
rename from variants/diy/hydra/variant.h
rename to variants/esp32/diy/hydra/variant.h
diff --git a/variants/esp32/diy/v1/platformio.ini b/variants/esp32/diy/v1/platformio.ini
new file mode 100644
index 000000000..bcbd57cfa
--- /dev/null
+++ b/variants/esp32/diy/v1/platformio.ini
@@ -0,0 +1,10 @@
+; Meshtastic DIY v1 by Nano VHF Schematic based on ESP32-WROOM-32 (38 pins) devkit & EBYTE E22 SX1262/SX1268 module
+[env:meshtastic-diy-v1]
+extends = esp32_base
+board = esp32doit-devkit-v1
+board_check = true
+build_flags =
+ ${esp32_base.build_flags}
+ -D DIY_V1
+ -D EBYTE_E22
+ -I variants/esp32/diy/v1
diff --git a/variants/diy/v1/variant.h b/variants/esp32/diy/v1/variant.h
similarity index 100%
rename from variants/diy/v1/variant.h
rename to variants/esp32/diy/v1/variant.h
diff --git a/variants/esp32/diy/v1_1/platformio.ini b/variants/esp32/diy/v1_1/platformio.ini
new file mode 100644
index 000000000..1431bd4c8
--- /dev/null
+++ b/variants/esp32/diy/v1_1/platformio.ini
@@ -0,0 +1,10 @@
+; Meshtastic DIY v1.1 new schematic based on ESP32-WROOM-32 & SX1262/SX1268 modules
+[env:meshtastic-diy-v1_1]
+extends = esp32_base
+board = esp32doit-devkit-v1
+board_level = extra
+build_flags =
+ ${esp32_base.build_flags}
+ -D DIY_V1
+ -D EBYTE_E22
+ -I variants/esp32/diy/v1_1
diff --git a/variants/diy/v1_1/variant.h b/variants/esp32/diy/v1_1/variant.h
similarity index 100%
rename from variants/diy/v1_1/variant.h
rename to variants/esp32/diy/v1_1/variant.h
diff --git a/variants/hackerboxes_esp32_io/platformio.ini b/variants/esp32/hackerboxes_esp32_io/platformio.ini
similarity index 85%
rename from variants/hackerboxes_esp32_io/platformio.ini
rename to variants/esp32/hackerboxes_esp32_io/platformio.ini
index f024dac3e..fc5f6701c 100644
--- a/variants/hackerboxes_esp32_io/platformio.ini
+++ b/variants/esp32/hackerboxes_esp32_io/platformio.ini
@@ -5,7 +5,7 @@ board_level = extra
build_flags =
${esp32_base.build_flags}
-D PRIVATE_HW
- -I variants/hackerboxes_esp32_io
+ -I variants/esp32/hackerboxes_esp32_io
monitor_speed = 115200
upload_protocol = esptool
;upload_port = /dev/ttyUSB0
diff --git a/variants/hackerboxes_esp32_io/variant.h b/variants/esp32/hackerboxes_esp32_io/variant.h
similarity index 100%
rename from variants/hackerboxes_esp32_io/variant.h
rename to variants/esp32/hackerboxes_esp32_io/variant.h
diff --git a/variants/heltec_v1/platformio.ini b/variants/esp32/heltec_v1/platformio.ini
similarity index 70%
rename from variants/heltec_v1/platformio.ini
rename to variants/esp32/heltec_v1/platformio.ini
index ee10ef0f6..4be3ba655 100644
--- a/variants/heltec_v1/platformio.ini
+++ b/variants/esp32/heltec_v1/platformio.ini
@@ -4,4 +4,6 @@ extends = esp32_base
board_level = extra
board = heltec_wifi_lora_32
build_flags =
- ${esp32_base.build_flags} -D HELTEC_V1 -I variants/heltec_v1
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D HELTEC_V1
+ -I variants/esp32/heltec_v1
diff --git a/variants/heltec_v1/variant.h b/variants/esp32/heltec_v1/variant.h
similarity index 100%
rename from variants/heltec_v1/variant.h
rename to variants/esp32/heltec_v1/variant.h
diff --git a/variants/heltec_v2.1/platformio.ini b/variants/esp32/heltec_v2.1/platformio.ini
similarity index 65%
rename from variants/heltec_v2.1/platformio.ini
rename to variants/esp32/heltec_v2.1/platformio.ini
index ea2281911..763f9764c 100644
--- a/variants/heltec_v2.1/platformio.ini
+++ b/variants/esp32/heltec_v2.1/platformio.ini
@@ -4,5 +4,7 @@ board_level = extra
extends = esp32_base
board = heltec_wifi_lora_32_V2
build_flags =
- ${esp32_base.build_flags} -D HELTEC_V2_1 -I variants/heltec_v2.1
- -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D HELTEC_V2_1
+ -I variants/esp32/heltec_v2.1
+ -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
diff --git a/variants/heltec_v2.1/variant.h b/variants/esp32/heltec_v2.1/variant.h
similarity index 100%
rename from variants/heltec_v2.1/variant.h
rename to variants/esp32/heltec_v2.1/variant.h
diff --git a/variants/heltec_v2/platformio.ini b/variants/esp32/heltec_v2/platformio.ini
similarity index 70%
rename from variants/heltec_v2/platformio.ini
rename to variants/esp32/heltec_v2/platformio.ini
index c81bca8ba..ed455616d 100644
--- a/variants/heltec_v2/platformio.ini
+++ b/variants/esp32/heltec_v2/platformio.ini
@@ -4,4 +4,6 @@ board_level = extra
extends = esp32_base
board = heltec_wifi_lora_32_V2
build_flags =
- ${esp32_base.build_flags} -D HELTEC_V2_0 -I variants/heltec_v2
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D HELTEC_V2_0
+ -I variants/esp32/heltec_v2
diff --git a/variants/heltec_v2/variant.h b/variants/esp32/heltec_v2/variant.h
similarity index 100%
rename from variants/heltec_v2/variant.h
rename to variants/esp32/heltec_v2/variant.h
diff --git a/variants/heltec_wireless_bridge/platformio.ini b/variants/esp32/heltec_wireless_bridge/platformio.ini
similarity index 94%
rename from variants/heltec_wireless_bridge/platformio.ini
rename to variants/esp32/heltec_wireless_bridge/platformio.ini
index ab30eb744..60e686f9e 100644
--- a/variants/heltec_wireless_bridge/platformio.ini
+++ b/variants/esp32/heltec_wireless_bridge/platformio.ini
@@ -4,7 +4,7 @@ extends = esp32_base
board = heltec_wifi_lora_32
build_flags =
${esp32_base.build_flags}
- -I variants/heltec_wireless_bridge
+ -I variants/esp32/heltec_wireless_bridge
-D HELTEC_WIRELESS_BRIDGE
-D BOARD_HAS_PSRAM
-D RADIOLIB_EXCLUDE_LR11X0=1
diff --git a/variants/heltec_wireless_bridge/variant.h b/variants/esp32/heltec_wireless_bridge/variant.h
similarity index 100%
rename from variants/heltec_wireless_bridge/variant.h
rename to variants/esp32/heltec_wireless_bridge/variant.h
diff --git a/variants/heltec_wsl_v2.1/platformio.ini b/variants/esp32/heltec_wsl_v2.1/platformio.ini
similarity index 56%
rename from variants/heltec_wsl_v2.1/platformio.ini
rename to variants/esp32/heltec_wsl_v2.1/platformio.ini
index f4fff9698..eb44c88d2 100644
--- a/variants/heltec_wsl_v2.1/platformio.ini
+++ b/variants/esp32/heltec_wsl_v2.1/platformio.ini
@@ -3,5 +3,7 @@ extends = esp32_base
board = heltec_wireless_stick_lite
board_level = extra
build_flags =
- ${esp32_base.build_flags} -D PRIVATE_HW -I variants/heltec_wsl_v2.1
- -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/esp32/heltec_wsl_v2.1
+ -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
diff --git a/variants/heltec_wsl_v2.1/variant.h b/variants/esp32/heltec_wsl_v2.1/variant.h
similarity index 100%
rename from variants/heltec_wsl_v2.1/variant.h
rename to variants/esp32/heltec_wsl_v2.1/variant.h
diff --git a/variants/m5stack_core/pins_arduino.h b/variants/esp32/m5stack_core/pins_arduino.h
similarity index 100%
rename from variants/m5stack_core/pins_arduino.h
rename to variants/esp32/m5stack_core/pins_arduino.h
diff --git a/variants/m5stack_core/platformio.ini b/variants/esp32/m5stack_core/platformio.ini
similarity index 90%
rename from variants/m5stack_core/platformio.ini
rename to variants/esp32/m5stack_core/platformio.ini
index 7418d9e17..469d93f94 100644
--- a/variants/m5stack_core/platformio.ini
+++ b/variants/esp32/m5stack_core/platformio.ini
@@ -5,7 +5,8 @@ monitor_filters = esp32_exception_decoder
build_src_filter =
${esp32_base.build_src_filter}
build_flags =
- ${esp32_base.build_flags} -I variants/m5stack_core
+ ${esp32_base.build_flags}
+ -I variants/esp32/m5stack_core
-DILI9341_DRIVER
-DM5STACK
-DUSER_SETUP_LOADED
diff --git a/variants/m5stack_core/variant.h b/variants/esp32/m5stack_core/variant.h
similarity index 100%
rename from variants/m5stack_core/variant.h
rename to variants/esp32/m5stack_core/variant.h
diff --git a/variants/m5stack_coreink/pins_arduino.h b/variants/esp32/m5stack_coreink/pins_arduino.h
similarity index 100%
rename from variants/m5stack_coreink/pins_arduino.h
rename to variants/esp32/m5stack_coreink/pins_arduino.h
diff --git a/variants/m5stack_coreink/platformio.ini b/variants/esp32/m5stack_coreink/platformio.ini
similarity index 90%
rename from variants/m5stack_coreink/platformio.ini
rename to variants/esp32/m5stack_coreink/platformio.ini
index 70da53379..1a00788e3 100644
--- a/variants/m5stack_coreink/platformio.ini
+++ b/variants/esp32/m5stack_coreink/platformio.ini
@@ -5,7 +5,8 @@ board_check = true
build_src_filter =
${esp32_base.build_src_filter}
build_flags =
- ${esp32_base.build_flags} -I variants/m5stack_coreink
+ ${esp32_base.build_flags}
+ -I variants/esp32/m5stack_coreink
;-D RADIOLIB_VERBOSE
-Ofast
-D__MCUXPRESSO
diff --git a/variants/m5stack_coreink/variant.h b/variants/esp32/m5stack_coreink/variant.h
similarity index 100%
rename from variants/m5stack_coreink/variant.h
rename to variants/esp32/m5stack_coreink/variant.h
diff --git a/variants/nano-g1-explorer/platformio.ini b/variants/esp32/nano-g1-explorer/platformio.ini
similarity index 65%
rename from variants/nano-g1-explorer/platformio.ini
rename to variants/esp32/nano-g1-explorer/platformio.ini
index 22037cbc9..2ba1f49e9 100644
--- a/variants/nano-g1-explorer/platformio.ini
+++ b/variants/esp32/nano-g1-explorer/platformio.ini
@@ -5,4 +5,6 @@ board = ttgo-t-beam
lib_deps =
${esp32_base.lib_deps}
build_flags =
- ${esp32_base.build_flags} -D NANO_G1_EXPLORER -I variants/nano-g1-explorer
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D NANO_G1_EXPLORER
+ -I variants/esp32/nano-g1-explorer
diff --git a/variants/nano-g1-explorer/variant.h b/variants/esp32/nano-g1-explorer/variant.h
similarity index 100%
rename from variants/nano-g1-explorer/variant.h
rename to variants/esp32/nano-g1-explorer/variant.h
diff --git a/variants/nano-g1/platformio.ini b/variants/esp32/nano-g1/platformio.ini
similarity index 67%
rename from variants/nano-g1/platformio.ini
rename to variants/esp32/nano-g1/platformio.ini
index a3107423e..be8227de2 100644
--- a/variants/nano-g1/platformio.ini
+++ b/variants/esp32/nano-g1/platformio.ini
@@ -5,4 +5,6 @@ board = ttgo-t-beam
lib_deps =
${esp32_base.lib_deps}
build_flags =
- ${esp32_base.build_flags} -D NANO_G1 -I variants/nano-g1
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D NANO_G1
+ -I variants/esp32/nano-g1
diff --git a/variants/nano-g1/variant.h b/variants/esp32/nano-g1/variant.h
similarity index 100%
rename from variants/nano-g1/variant.h
rename to variants/esp32/nano-g1/variant.h
diff --git a/variants/radiomaster_900_bandit/platformio.ini b/variants/esp32/radiomaster_900_bandit/platformio.ini
similarity index 90%
rename from variants/radiomaster_900_bandit/platformio.ini
rename to variants/esp32/radiomaster_900_bandit/platformio.ini
index f87025937..d9eb78a57 100644
--- a/variants/radiomaster_900_bandit/platformio.ini
+++ b/variants/esp32/radiomaster_900_bandit/platformio.ini
@@ -8,7 +8,7 @@ build_flags =
-DCONFIG_DISABLE_HAL_LOCKS=1
-DHAS_STK8XXX=1
-O2
- -Ivariants/radiomaster_900_bandit
+ -I variants/esp32/radiomaster_900_bandit
board_build.f_cpu = 240000000L
upload_protocol = esptool
lib_deps =
diff --git a/variants/radiomaster_900_bandit/variant.h b/variants/esp32/radiomaster_900_bandit/variant.h
similarity index 100%
rename from variants/radiomaster_900_bandit/variant.h
rename to variants/esp32/radiomaster_900_bandit/variant.h
diff --git a/variants/radiomaster_900_bandit_micro/platformio.ini b/variants/esp32/radiomaster_900_bandit_micro/platformio.ini
similarity index 87%
rename from variants/radiomaster_900_bandit_micro/platformio.ini
rename to variants/esp32/radiomaster_900_bandit_micro/platformio.ini
index 9e54f5859..36a45787b 100644
--- a/variants/radiomaster_900_bandit_micro/platformio.ini
+++ b/variants/esp32/radiomaster_900_bandit_micro/platformio.ini
@@ -12,8 +12,8 @@ build_flags =
-DVTABLES_IN_FLASH=1
-DCONFIG_DISABLE_HAL_LOCKS=1
-O2
- -Ivariants/radiomaster_900_bandit_nano
+ -I variants/esp32/radiomaster_900_bandit_nano
board_build.f_cpu = 240000000L
upload_protocol = esptool
lib_deps =
- ${esp32_base.lib_deps}
\ No newline at end of file
+ ${esp32_base.lib_deps}
diff --git a/variants/radiomaster_900_bandit_nano/platformio.ini b/variants/esp32/radiomaster_900_bandit_nano/platformio.ini
similarity index 79%
rename from variants/radiomaster_900_bandit_nano/platformio.ini
rename to variants/esp32/radiomaster_900_bandit_nano/platformio.ini
index 0d43b8665..9a7fad83b 100644
--- a/variants/radiomaster_900_bandit_nano/platformio.ini
+++ b/variants/esp32/radiomaster_900_bandit_nano/platformio.ini
@@ -7,8 +7,8 @@ build_flags =
-DVTABLES_IN_FLASH=1
-DCONFIG_DISABLE_HAL_LOCKS=1
-O2
- -Ivariants/radiomaster_900_bandit_nano
+ -I variants/esp32/radiomaster_900_bandit_nano
board_build.f_cpu = 240000000L
upload_protocol = esptool
lib_deps =
- ${esp32_base.lib_deps}
\ No newline at end of file
+ ${esp32_base.lib_deps}
diff --git a/variants/radiomaster_900_bandit_nano/variant.h b/variants/esp32/radiomaster_900_bandit_nano/variant.h
similarity index 100%
rename from variants/radiomaster_900_bandit_nano/variant.h
rename to variants/esp32/radiomaster_900_bandit_nano/variant.h
diff --git a/variants/rak11200/pins_arduino.h b/variants/esp32/rak11200/pins_arduino.h
similarity index 100%
rename from variants/rak11200/pins_arduino.h
rename to variants/esp32/rak11200/pins_arduino.h
diff --git a/variants/esp32/rak11200/platformio.ini b/variants/esp32/rak11200/platformio.ini
new file mode 100644
index 000000000..170e80b41
--- /dev/null
+++ b/variants/esp32/rak11200/platformio.ini
@@ -0,0 +1,10 @@
+[env:rak11200]
+extends = esp32_base
+board = wiscore_rak11200
+board_level = pr
+board_check = true
+build_flags =
+ ${esp32_base.build_flags}
+ -D RAK_11200
+ -I variants/esp32/rak11200
+upload_speed = 115200
diff --git a/variants/rak11200/variant.h b/variants/esp32/rak11200/variant.h
similarity index 100%
rename from variants/rak11200/variant.h
rename to variants/esp32/rak11200/variant.h
diff --git a/variants/station-g1/platformio.ini b/variants/esp32/station-g1/platformio.ini
similarity index 66%
rename from variants/station-g1/platformio.ini
rename to variants/esp32/station-g1/platformio.ini
index a466414d0..693a41ae8 100644
--- a/variants/station-g1/platformio.ini
+++ b/variants/esp32/station-g1/platformio.ini
@@ -5,4 +5,6 @@ board = ttgo-t-beam
lib_deps =
${esp32_base.lib_deps}
build_flags =
- ${esp32_base.build_flags} -D STATION_G1 -I variants/station-g1
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D STATION_G1
+ -I variants/esp32/station-g1
diff --git a/variants/station-g1/variant.h b/variants/esp32/station-g1/variant.h
similarity index 100%
rename from variants/station-g1/variant.h
rename to variants/esp32/station-g1/variant.h
diff --git a/variants/tbeam/platformio.ini b/variants/esp32/tbeam/platformio.ini
similarity index 75%
rename from variants/tbeam/platformio.ini
rename to variants/esp32/tbeam/platformio.ini
index 9049836a3..ea17751c6 100644
--- a/variants/tbeam/platformio.ini
+++ b/variants/esp32/tbeam/platformio.ini
@@ -2,12 +2,15 @@
[env:tbeam]
extends = esp32_base
board = ttgo-t-beam
+board_level = pr
board_check = true
lib_deps =
${esp32_base.lib_deps}
build_flags =
- ${esp32_base.build_flags} -D TBEAM_V10 -I variants/tbeam
+ ${esp32_base.build_flags}
+ -D TBEAM_V10
+ -I variants/esp32/tbeam
-DGPS_POWER_TOGGLE ; comment this line to disable double press function on the user button to turn off gps entirely.
-DBOARD_HAS_PSRAM
-mfix-esp32-psram-cache-issue
-upload_speed = 921600
\ No newline at end of file
+upload_speed = 921600
diff --git a/variants/tbeam/variant.h b/variants/esp32/tbeam/variant.h
similarity index 100%
rename from variants/tbeam/variant.h
rename to variants/esp32/tbeam/variant.h
diff --git a/variants/tbeam_v07/platformio.ini b/variants/esp32/tbeam_v07/platformio.ini
similarity index 69%
rename from variants/tbeam_v07/platformio.ini
rename to variants/esp32/tbeam_v07/platformio.ini
index 0cba92400..1647d9fd7 100644
--- a/variants/tbeam_v07/platformio.ini
+++ b/variants/esp32/tbeam_v07/platformio.ini
@@ -4,4 +4,6 @@ board_level = extra
extends = esp32_base
board = ttgo-t-beam
build_flags =
- ${esp32_base.build_flags} -D TBEAM_V07 -I variants/tbeam_v07
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D TBEAM_V07
+ -I variants/esp32/tbeam_v07
diff --git a/variants/tbeam_v07/variant.h b/variants/esp32/tbeam_v07/variant.h
similarity index 100%
rename from variants/tbeam_v07/variant.h
rename to variants/esp32/tbeam_v07/variant.h
diff --git a/variants/tlora_v1/platformio.ini b/variants/esp32/tlora_v1/platformio.ini
similarity index 50%
rename from variants/tlora_v1/platformio.ini
rename to variants/esp32/tlora_v1/platformio.ini
index 17fc71d72..1d879b6b0 100644
--- a/variants/tlora_v1/platformio.ini
+++ b/variants/esp32/tlora_v1/platformio.ini
@@ -3,5 +3,7 @@ board_level = extra
extends = esp32_base
board = ttgo-lora32-v1
build_flags =
- ${esp32_base.build_flags} -D TLORA_V1 -I variants/tlora_v1
-upload_speed = 115200
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D TLORA_V1
+ -I variants/esp32/tlora_v1
+upload_speed = 115200
diff --git a/variants/tlora_v1/variant.h b/variants/esp32/tlora_v1/variant.h
similarity index 100%
rename from variants/tlora_v1/variant.h
rename to variants/esp32/tlora_v1/variant.h
diff --git a/variants/tlora_v1_3/platformio.ini b/variants/esp32/tlora_v1_3/platformio.ini
similarity index 50%
rename from variants/tlora_v1_3/platformio.ini
rename to variants/esp32/tlora_v1_3/platformio.ini
index c5eca589f..523c38a80 100644
--- a/variants/tlora_v1_3/platformio.ini
+++ b/variants/esp32/tlora_v1_3/platformio.ini
@@ -3,5 +3,5 @@ board_level = extra
extends = esp32_base
board = ttgo-lora32-v1
build_flags =
- ${esp32_base.build_flags} -D TLORA_V1_3 -I variants/tlora_v1_3
-upload_speed = 115200
\ No newline at end of file
+ ${esp32_base.build_flags} -D TLORA_V1_3 -I variants/esp32/tlora_v1_3
+upload_speed = 115200
diff --git a/variants/tlora_v1_3/variant.h b/variants/esp32/tlora_v1_3/variant.h
similarity index 100%
rename from variants/tlora_v1_3/variant.h
rename to variants/esp32/tlora_v1_3/variant.h
diff --git a/variants/tlora_v2/platformio.ini b/variants/esp32/tlora_v2/platformio.ini
similarity index 56%
rename from variants/tlora_v2/platformio.ini
rename to variants/esp32/tlora_v2/platformio.ini
index 8087a30e3..4a710ee34 100644
--- a/variants/tlora_v2/platformio.ini
+++ b/variants/esp32/tlora_v2/platformio.ini
@@ -3,4 +3,6 @@ board_level = extra
extends = esp32_base
board = ttgo-lora32-v1
build_flags =
- ${esp32_base.build_flags} -D TLORA_V2 -I variants/tlora_v2
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D TLORA_V2
+ -I variants/esp32/tlora_v2
diff --git a/variants/tlora_v2/variant.h b/variants/esp32/tlora_v2/variant.h
similarity index 100%
rename from variants/tlora_v2/variant.h
rename to variants/esp32/tlora_v2/variant.h
diff --git a/variants/tlora_v2_1_16/platformio.ini b/variants/esp32/tlora_v2_1_16/platformio.ini
similarity index 68%
rename from variants/tlora_v2_1_16/platformio.ini
rename to variants/esp32/tlora_v2_1_16/platformio.ini
index 4253cc6af..bd85aa847 100644
--- a/variants/tlora_v2_1_16/platformio.ini
+++ b/variants/esp32/tlora_v2_1_16/platformio.ini
@@ -3,6 +3,6 @@ extends = esp32_base
board = ttgo-lora32-v21
board_check = true
build_flags =
- ${esp32_base.build_flags} -D TLORA_V2_1_16 -I variants/tlora_v2_1_16
+ ${esp32_base.build_flags} -D TLORA_V2_1_16 -I variants/esp32/tlora_v2_1_16
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-upload_speed = 115200
\ No newline at end of file
+upload_speed = 115200
diff --git a/variants/tlora_v2_1_16/variant.h b/variants/esp32/tlora_v2_1_16/variant.h
similarity index 100%
rename from variants/tlora_v2_1_16/variant.h
rename to variants/esp32/tlora_v2_1_16/variant.h
diff --git a/variants/tlora_v2_1_16_tcxo/platformio.ini b/variants/esp32/tlora_v2_1_16_tcxo/platformio.ini
similarity index 90%
rename from variants/tlora_v2_1_16_tcxo/platformio.ini
rename to variants/esp32/tlora_v2_1_16_tcxo/platformio.ini
index 5c7cb7eb3..9404faa02 100644
--- a/variants/tlora_v2_1_16_tcxo/platformio.ini
+++ b/variants/esp32/tlora_v2_1_16_tcxo/platformio.ini
@@ -5,7 +5,7 @@ board = ttgo-lora32-v21
build_flags =
${esp32_base.build_flags}
-D TLORA_V2_1_16
- -I variants/tlora_v2_1_16
+ -I variants/esp32/tlora_v2_1_16
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-D LORA_TCXO_GPIO=33
upload_speed = 115200
\ No newline at end of file
diff --git a/variants/tlora_v2_1_18/platformio.ini b/variants/esp32/tlora_v2_1_18/platformio.ini
similarity index 55%
rename from variants/tlora_v2_1_18/platformio.ini
rename to variants/esp32/tlora_v2_1_18/platformio.ini
index 48a001ced..432117485 100644
--- a/variants/tlora_v2_1_18/platformio.ini
+++ b/variants/esp32/tlora_v2_1_18/platformio.ini
@@ -4,4 +4,6 @@ board_level = extra
board = ttgo-lora32-v21
build_flags =
- ${esp32_base.build_flags} -D TLORA_V2_1_18 -I variants/tlora_v2_1_18
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D TLORA_V2_1_18
+ -I variants/esp32/tlora_v2_1_18
diff --git a/variants/tlora_v2_1_18/variant.h b/variants/esp32/tlora_v2_1_18/variant.h
similarity index 100%
rename from variants/tlora_v2_1_18/variant.h
rename to variants/esp32/tlora_v2_1_18/variant.h
diff --git a/variants/tlora_v3_3_0_tcxo/platformio.ini b/variants/esp32/tlora_v3_3_0_tcxo/platformio.ini
similarity index 89%
rename from variants/tlora_v3_3_0_tcxo/platformio.ini
rename to variants/esp32/tlora_v3_3_0_tcxo/platformio.ini
index 8d060a087..f1110386e 100644
--- a/variants/tlora_v3_3_0_tcxo/platformio.ini
+++ b/variants/esp32/tlora_v3_3_0_tcxo/platformio.ini
@@ -4,7 +4,7 @@ board = ttgo-lora32-v21
build_flags =
${esp32_base.build_flags}
-D TLORA_V2_1_16
- -I variants/tlora_v2_1_16
+ -I variants/esp32/tlora_v2_1_16
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-D LORA_TCXO_GPIO=12
-D BUTTON_PIN=0
\ No newline at end of file
diff --git a/variants/trackerd/platformio.ini b/variants/esp32/trackerd/platformio.ini
similarity index 56%
rename from variants/trackerd/platformio.ini
rename to variants/esp32/trackerd/platformio.ini
index 654534a15..3c2726a3c 100644
--- a/variants/trackerd/platformio.ini
+++ b/variants/esp32/trackerd/platformio.ini
@@ -4,5 +4,5 @@ board = pico32
board_build.f_flash = 80000000L
build_flags =
- ${esp32_base.build_flags} -D PRIVATE_HW -I variants/trackerd -D BSFILE=\"boards/dragino_lbt2.h\"
+ ${esp32_base.build_flags} -D PRIVATE_HW -I variants/esp32/trackerd -D BSFILE=\"boards/dragino_lbt2.h\"
;board_build.partitions = no_ota.csv
\ No newline at end of file
diff --git a/variants/trackerd/variant.h b/variants/esp32/trackerd/variant.h
similarity index 100%
rename from variants/trackerd/variant.h
rename to variants/esp32/trackerd/variant.h
diff --git a/variants/wiphone/pins_arduino.h b/variants/esp32/wiphone/pins_arduino.h
similarity index 100%
rename from variants/wiphone/pins_arduino.h
rename to variants/esp32/wiphone/pins_arduino.h
diff --git a/variants/wiphone/platformio.ini b/variants/esp32/wiphone/platformio.ini
similarity index 81%
rename from variants/wiphone/platformio.ini
rename to variants/esp32/wiphone/platformio.ini
index 362102731..5cce94b13 100644
--- a/variants/wiphone/platformio.ini
+++ b/variants/esp32/wiphone/platformio.ini
@@ -5,7 +5,9 @@ board_level = extra
monitor_filters = esp32_exception_decoder
board_build.partitions = default_16MB.csv
build_flags =
- ${esp32_base.build_flags} -D WIPHONE -I variants/wiphone
+ ${esp32_base.build_flags}
+ -D WIPHONE
+ -I variants/esp32/wiphone
lib_deps =
${esp32_base.lib_deps}
lovyan03/LovyanGFX@^1.2.0
diff --git a/variants/wiphone/variant.h b/variants/esp32/wiphone/variant.h
similarity index 100%
rename from variants/wiphone/variant.h
rename to variants/esp32/wiphone/variant.h
diff --git a/variants/ai-c3/platformio.ini b/variants/esp32c3/ai-c3/platformio.ini
similarity index 57%
rename from variants/ai-c3/platformio.ini
rename to variants/esp32c3/ai-c3/platformio.ini
index 2869ca580..a25c0cb19 100644
--- a/variants/ai-c3/platformio.ini
+++ b/variants/esp32c3/ai-c3/platformio.ini
@@ -2,7 +2,7 @@
extends = esp32c3_base
board = esp32-c3-devkitm-1
board_level = extra
-build_flags = ${esp32c3_base.build_flags}
+build_flags =
+ ${esp32c3_base.build_flags}
-D PRIVATE_HW
- -I variants/ai-c3
-
+ -I variants/esp32c3/ai-c3
diff --git a/variants/ai-c3/variant.h b/variants/esp32c3/ai-c3/variant.h
similarity index 100%
rename from variants/ai-c3/variant.h
rename to variants/esp32c3/ai-c3/variant.h
diff --git a/variants/esp32c3/diy/esp32c3_super_mini/pins_arduino.h b/variants/esp32c3/diy/esp32c3_super_mini/pins_arduino.h
new file mode 100644
index 000000000..a325b81eb
--- /dev/null
+++ b/variants/esp32c3/diy/esp32c3_super_mini/pins_arduino.h
@@ -0,0 +1,24 @@
+#ifndef Pins_Arduino_h
+#define Pins_Arduino_h
+
+#include
+
+static const uint8_t TX = 21;
+static const uint8_t RX = 20;
+
+static const uint8_t SDA = 1;
+static const uint8_t SCL = 0;
+
+static const uint8_t SS = 8;
+static const uint8_t MOSI = 7;
+static const uint8_t MISO = 6;
+static const uint8_t SCK = 10;
+
+static const uint8_t A0 = 0;
+static const uint8_t A1 = 1;
+static const uint8_t A2 = 2;
+static const uint8_t A3 = 3;
+static const uint8_t A4 = 4;
+static const uint8_t A5 = 5;
+
+#endif /* Pins_Arduino_h */
diff --git a/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini b/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini
new file mode 100644
index 000000000..c87baa7bf
--- /dev/null
+++ b/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini
@@ -0,0 +1,12 @@
+; ESP32 C3 Super Mini Development Board
+; https://www.espboards.dev/esp32/esp32-c3-super-mini/
+[env:esp32c3_super_mini]
+extends = esp32c3_base
+board = esp32-c3-devkitm-1
+build_flags =
+ ${esp32_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/esp32c3/diy/esp32c3_super_mini
+ -D ARDUINO_USB_MODE=1
+ -D ARDUINO_USB_CDC_ON_BOOT=1
+board_level = extra
diff --git a/variants/esp32c3/diy/esp32c3_super_mini/variant.h b/variants/esp32c3/diy/esp32c3_super_mini/variant.h
new file mode 100644
index 000000000..48c275912
--- /dev/null
+++ b/variants/esp32c3/diy/esp32c3_super_mini/variant.h
@@ -0,0 +1,61 @@
+#ifndef _VARIANT_ESP32C3_SUPER_MINI_
+#define _VARIANT_ESP32C3_SUPER_MINI_
+
+/*----------------------------------------------------------------------------
+ * Headers
+ *----------------------------------------------------------------------------*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+// I2C (Wire) & OLED
+#define WIRE_INTERFACES_COUNT (1)
+#define I2C_SDA (1)
+#define I2C_SCL (0)
+
+#define USE_SSD1306
+
+// GPS
+#undef GPS_RX_PIN
+#undef GPS_TX_PIN
+#define GPS_RX_PIN (20)
+#define GPS_TX_PIN (21)
+
+// Button
+#define BUTTON_PIN (9) // BOOT button
+
+// LoRa
+#define USE_LLCC68
+#define USE_SX1262
+// #define USE_RF95
+#define USE_SX1268
+
+#define LORA_DIO0 RADIOLIB_NC
+#define LORA_RESET (5)
+#define LORA_DIO1 (3)
+#define LORA_RXEN (2)
+#define LORA_BUSY (4)
+#define LORA_SCK (10)
+#define LORA_MISO (6)
+#define LORA_MOSI (7)
+#define LORA_CS (8)
+
+#define SX126X_CS LORA_CS
+#define SX126X_DIO1 LORA_DIO1
+#define SX126X_BUSY LORA_BUSY
+#define SX126X_RESET LORA_RESET
+#define SX126X_RXEN LORA_RXEN
+
+#define SX126X_DIO3_TCXO_VOLTAGE (1.8)
+#define TCXO_OPTIONAL // make it so that the firmware can try both TCXO and XTAL
+
+#ifdef __cplusplus
+}
+#endif
+
+/*----------------------------------------------------------------------------
+ * Arduino objects - C++ only
+ *----------------------------------------------------------------------------*/
+
+#endif
diff --git a/variants/hackerboxes_esp32c3_oled/platformio.ini b/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini
similarity index 80%
rename from variants/hackerboxes_esp32c3_oled/platformio.ini
rename to variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini
index 4fcbf2ade..5a72b9d74 100644
--- a/variants/hackerboxes_esp32c3_oled/platformio.ini
+++ b/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini
@@ -7,8 +7,8 @@ build_flags =
-D PRIVATE_HW
-D ARDUINO_USB_MODE=1
-D ARDUINO_USB_CDC_ON_BOOT=1
- -I variants/hackerboxes_esp32c3_oled
+ -I variants/esp32c3/hackerboxes_esp32c3_oled
monitor_speed = 115200
upload_protocol = esptool
;upload_port = /dev/ttyUSB0
-upload_speed = 921600
\ No newline at end of file
+upload_speed = 921600
diff --git a/variants/hackerboxes_esp32c3_oled/variant.h b/variants/esp32c3/hackerboxes_esp32c3_oled/variant.h
similarity index 100%
rename from variants/hackerboxes_esp32c3_oled/variant.h
rename to variants/esp32c3/hackerboxes_esp32c3_oled/variant.h
diff --git a/variants/heltec_esp32c3/pins_arduino.h b/variants/esp32c3/heltec_esp32c3/pins_arduino.h
similarity index 100%
rename from variants/heltec_esp32c3/pins_arduino.h
rename to variants/esp32c3/heltec_esp32c3/pins_arduino.h
diff --git a/variants/heltec_esp32c3/platformio.ini b/variants/esp32c3/heltec_esp32c3/platformio.ini
similarity index 74%
rename from variants/heltec_esp32c3/platformio.ini
rename to variants/esp32c3/heltec_esp32c3/platformio.ini
index 6fe5c3c69..705e2e996 100644
--- a/variants/heltec_esp32c3/platformio.ini
+++ b/variants/esp32c3/heltec_esp32c3/platformio.ini
@@ -1,11 +1,12 @@
[env:heltec-ht62-esp32c3-sx1262]
extends = esp32c3_base
board = esp32-c3-devkitm-1
+board_level = pr
build_flags =
${esp32_base.build_flags}
-D HELTEC_HT62
- -I variants/heltec_esp32c3
+ -I variants/esp32c3/heltec_esp32c3
monitor_speed = 115200
upload_protocol = esptool
;upload_port = /dev/ttyUSB0
-upload_speed = 921600
\ No newline at end of file
+upload_speed = 921600
diff --git a/variants/heltec_esp32c3/variant.h b/variants/esp32c3/heltec_esp32c3/variant.h
similarity index 100%
rename from variants/heltec_esp32c3/variant.h
rename to variants/esp32c3/heltec_esp32c3/variant.h
diff --git a/variants/heltec_hru_3601/pins_arduino.h b/variants/esp32c3/heltec_hru_3601/pins_arduino.h
similarity index 100%
rename from variants/heltec_hru_3601/pins_arduino.h
rename to variants/esp32c3/heltec_hru_3601/pins_arduino.h
diff --git a/variants/heltec_hru_3601/platformio.ini b/variants/esp32c3/heltec_hru_3601/platformio.ini
similarity index 84%
rename from variants/heltec_hru_3601/platformio.ini
rename to variants/esp32c3/heltec_hru_3601/platformio.ini
index 3668e72b7..b5ff63eae 100644
--- a/variants/heltec_hru_3601/platformio.ini
+++ b/variants/esp32c3/heltec_hru_3601/platformio.ini
@@ -4,6 +4,6 @@ board = adafruit_qtpy_esp32c3
build_flags =
${esp32_base.build_flags}
-D HELTEC_HRU_3601
- -I variants/heltec_hru_3601
+ -I variants/esp32c3/heltec_hru_3601
lib_deps = ${esp32c3_base.lib_deps}
adafruit/Adafruit NeoPixel @ ^1.12.0
diff --git a/variants/heltec_hru_3601/variant.h b/variants/esp32c3/heltec_hru_3601/variant.h
similarity index 100%
rename from variants/heltec_hru_3601/variant.h
rename to variants/esp32c3/heltec_hru_3601/variant.h
diff --git a/variants/m5stack-stamp-c3/pins_arduino.h b/variants/esp32c3/m5stack-stamp-c3/pins_arduino.h
similarity index 100%
rename from variants/m5stack-stamp-c3/pins_arduino.h
rename to variants/esp32c3/m5stack-stamp-c3/pins_arduino.h
diff --git a/variants/m5stack-stamp-c3/platformio.ini b/variants/esp32c3/m5stack-stamp-c3/platformio.ini
similarity index 86%
rename from variants/m5stack-stamp-c3/platformio.ini
rename to variants/esp32c3/m5stack-stamp-c3/platformio.ini
index bab65b621..1072df664 100644
--- a/variants/m5stack-stamp-c3/platformio.ini
+++ b/variants/esp32c3/m5stack-stamp-c3/platformio.ini
@@ -5,7 +5,7 @@ board_level = extra
build_flags =
${esp32_base.build_flags}
-D PRIVATE_HW
- -I variants/m5stack-stamp-c3
+ -I variants/esp32c3/m5stack-stamp-c3
monitor_speed = 115200
upload_protocol = esptool
;upload_port = /dev/ttyACM2
diff --git a/variants/m5stack-stamp-c3/variant.h b/variants/esp32c3/m5stack-stamp-c3/variant.h
similarity index 100%
rename from variants/m5stack-stamp-c3/variant.h
rename to variants/esp32c3/m5stack-stamp-c3/variant.h
diff --git a/variants/tlora_c6/platformio.ini b/variants/esp32c6/tlora_c6/platformio.ini
similarity index 78%
rename from variants/tlora_c6/platformio.ini
rename to variants/esp32c6/tlora_c6/platformio.ini
index 2da10138a..6b402d7c5 100644
--- a/variants/tlora_c6/platformio.ini
+++ b/variants/esp32c6/tlora_c6/platformio.ini
@@ -1,9 +1,10 @@
[env:tlora-c6]
extends = esp32c6_base
board = esp32-c6-devkitm-1
+board_level = pr
build_flags =
${esp32c6_base.build_flags}
-D TLORA_C6
- -I variants/tlora_c6
+ -I variants/esp32c6/tlora_c6
-DARDUINO_USB_CDC_ON_BOOT=1
-DARDUINO_USB_MODE=1
diff --git a/variants/tlora_c6/variant.h b/variants/esp32c6/tlora_c6/variant.h
similarity index 100%
rename from variants/tlora_c6/variant.h
rename to variants/esp32c6/tlora_c6/variant.h
diff --git a/variants/nugget_s2_lora/platformio.ini b/variants/esp32s2/nugget_s2_lora/platformio.ini
similarity index 54%
rename from variants/nugget_s2_lora/platformio.ini
rename to variants/esp32s2/nugget_s2_lora/platformio.ini
index 2a7ff1013..a091a705f 100644
--- a/variants/nugget_s2_lora/platformio.ini
+++ b/variants/esp32s2/nugget_s2_lora/platformio.ini
@@ -3,4 +3,6 @@ extends = esp32s2_base
board = lolin_s2_mini
board_level = extra
build_flags =
- ${esp32s2_base.build_flags} -D PRIVATE_HW -I variants/nugget_s2_lora
\ No newline at end of file
+ ${esp32s2_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/esp32s2/nugget_s2_lora
diff --git a/variants/nugget_s2_lora/variant.h b/variants/esp32s2/nugget_s2_lora/variant.h
similarity index 100%
rename from variants/nugget_s2_lora/variant.h
rename to variants/esp32s2/nugget_s2_lora/variant.h
diff --git a/variants/CDEBYTE_EoRa-S3/pins_arduino.h b/variants/esp32s3/CDEBYTE_EoRa-S3/pins_arduino.h
similarity index 100%
rename from variants/CDEBYTE_EoRa-S3/pins_arduino.h
rename to variants/esp32s3/CDEBYTE_EoRa-S3/pins_arduino.h
diff --git a/variants/CDEBYTE_EoRa-S3/platformio.ini b/variants/esp32s3/CDEBYTE_EoRa-S3/platformio.ini
similarity index 69%
rename from variants/CDEBYTE_EoRa-S3/platformio.ini
rename to variants/esp32s3/CDEBYTE_EoRa-S3/platformio.ini
index a1642ff97..dbd420f04 100644
--- a/variants/CDEBYTE_EoRa-S3/platformio.ini
+++ b/variants/esp32s3/CDEBYTE_EoRa-S3/platformio.ini
@@ -4,5 +4,5 @@ board = CDEBYTE_EoRa-S3
build_flags =
${esp32s3_base.build_flags}
-D CDEBYTE_EORA_S3
- -I variants/CDEBYTE_EoRa-S3
- -D GPS_POWER_TOGGLE
\ No newline at end of file
+ -I variants/esp32s3/CDEBYTE_EoRa-S3
+ -D GPS_POWER_TOGGLE
diff --git a/variants/CDEBYTE_EoRa-S3/variant.h b/variants/esp32s3/CDEBYTE_EoRa-S3/variant.h
similarity index 100%
rename from variants/CDEBYTE_EoRa-S3/variant.h
rename to variants/esp32s3/CDEBYTE_EoRa-S3/variant.h
diff --git a/variants/EBYTE_ESP32-S3/pins_arduino.h b/variants/esp32s3/EBYTE_ESP32-S3/pins_arduino.h
similarity index 100%
rename from variants/EBYTE_ESP32-S3/pins_arduino.h
rename to variants/esp32s3/EBYTE_ESP32-S3/pins_arduino.h
diff --git a/variants/EBYTE_ESP32-S3/platformio.ini b/variants/esp32s3/EBYTE_ESP32-S3/platformio.ini
similarity index 86%
rename from variants/EBYTE_ESP32-S3/platformio.ini
rename to variants/esp32s3/EBYTE_ESP32-S3/platformio.ini
index 10de91386..507a19588 100644
--- a/variants/EBYTE_ESP32-S3/platformio.ini
+++ b/variants/esp32s3/EBYTE_ESP32-S3/platformio.ini
@@ -6,4 +6,4 @@ board_level = extra
build_flags =
${esp32s3_base.build_flags}
-D EBYTE_ESP32_S3
- -I variants/EBYTE_ESP32-S3
+ -I variants/esp32s3/EBYTE_ESP32-S3
diff --git a/variants/EBYTE_ESP32-S3/variant.h b/variants/esp32s3/EBYTE_ESP32-S3/variant.h
similarity index 100%
rename from variants/EBYTE_ESP32-S3/variant.h
rename to variants/esp32s3/EBYTE_ESP32-S3/variant.h
diff --git a/variants/ELECROW-ThinkNode-M2/pins_arduino.h b/variants/esp32s3/ELECROW-ThinkNode-M2/pins_arduino.h
similarity index 100%
rename from variants/ELECROW-ThinkNode-M2/pins_arduino.h
rename to variants/esp32s3/ELECROW-ThinkNode-M2/pins_arduino.h
diff --git a/variants/ELECROW-ThinkNode-M2/platformio.ini b/variants/esp32s3/ELECROW-ThinkNode-M2/platformio.ini
similarity index 76%
rename from variants/ELECROW-ThinkNode-M2/platformio.ini
rename to variants/esp32s3/ELECROW-ThinkNode-M2/platformio.ini
index c08c94a71..01e82184b 100644
--- a/variants/ELECROW-ThinkNode-M2/platformio.ini
+++ b/variants/esp32s3/ELECROW-ThinkNode-M2/platformio.ini
@@ -4,4 +4,4 @@ board = ESP32-S3-WROOM-1-N4
build_flags =
${esp32s3_base.build_flags}
-D ELECROW_ThinkNode_M2
- -I variants/ELECROW-ThinkNode-M2
+ -I variants/esp32s3/ELECROW-ThinkNode-M2
diff --git a/variants/ELECROW-ThinkNode-M2/variant.h b/variants/esp32s3/ELECROW-ThinkNode-M2/variant.h
similarity index 100%
rename from variants/ELECROW-ThinkNode-M2/variant.h
rename to variants/esp32s3/ELECROW-ThinkNode-M2/variant.h
diff --git a/variants/bpi_picow_esp32_s3/pins_arduino.h b/variants/esp32s3/bpi_picow_esp32_s3/pins_arduino.h
similarity index 100%
rename from variants/bpi_picow_esp32_s3/pins_arduino.h
rename to variants/esp32s3/bpi_picow_esp32_s3/pins_arduino.h
diff --git a/variants/bpi_picow_esp32_s3/platformio.ini b/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini
similarity index 77%
rename from variants/bpi_picow_esp32_s3/platformio.ini
rename to variants/esp32s3/bpi_picow_esp32_s3/platformio.ini
index 7e94cc97e..57af0da82 100644
--- a/variants/bpi_picow_esp32_s3/platformio.ini
+++ b/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini
@@ -11,4 +11,6 @@ lib_deps =
${esp32_base.lib_deps}
caveman99/ESP32 Codec2@^1.0.1
build_flags =
- ${esp32_base.build_flags} -D PRIVATE_HW -I variants/bpi_picow_esp32_s3
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/esp32s3/bpi_picow_esp32_s3
diff --git a/variants/bpi_picow_esp32_s3/variant.h b/variants/esp32s3/bpi_picow_esp32_s3/variant.h
similarity index 100%
rename from variants/bpi_picow_esp32_s3/variant.h
rename to variants/esp32s3/bpi_picow_esp32_s3/variant.h
diff --git a/variants/crowpanel-esp32s3-5-epaper/pins_arduino.h b/variants/esp32s3/crowpanel-esp32s3-5-epaper/pins_arduino.h
similarity index 100%
rename from variants/crowpanel-esp32s3-5-epaper/pins_arduino.h
rename to variants/esp32s3/crowpanel-esp32s3-5-epaper/pins_arduino.h
diff --git a/variants/crowpanel-esp32s3-5-epaper/platformio.ini b/variants/esp32s3/crowpanel-esp32s3-5-epaper/platformio.ini
similarity index 89%
rename from variants/crowpanel-esp32s3-5-epaper/platformio.ini
rename to variants/esp32s3/crowpanel-esp32s3-5-epaper/platformio.ini
index ebf013f64..49e84bf4f 100644
--- a/variants/crowpanel-esp32s3-5-epaper/platformio.ini
+++ b/variants/esp32s3/crowpanel-esp32s3-5-epaper/platformio.ini
@@ -11,7 +11,9 @@ board = esp32-s3-devkitc-1
board_level = extra
upload_protocol = esptool
build_flags =
- ${esp32s3_base.build_flags} -D CROWPANEL_ESP32S3_5_EPAPER -I variants/crowpanel-esp32s3-5-epaper
+ ${esp32s3_base.build_flags}
+ -D CROWPANEL_ESP32S3_5_EPAPER
+ -I variants/esp32s3/crowpanel-esp32s3-5-epaper
-D PRIVATE_HW
-DBOARD_HAS_PSRAM
-DGPS_POWER_TOGGLE
@@ -39,7 +41,9 @@ board = esp32-s3-devkitc-1
board_level = extra
upload_protocol = esptool
build_flags =
- ${esp32s3_base.build_flags} -D CROWPANEL_ESP32S3_4_EPAPER -I variants/crowpanel-esp32s3-5-epaper
+ ${esp32s3_base.build_flags}
+ -D CROWPANEL_ESP32S3_4_EPAPER
+ -I variants/esp32s3/crowpanel-esp32s3-5-epaper
-D PRIVATE_HW
-DBOARD_HAS_PSRAM
-DGPS_POWER_TOGGLE
@@ -67,7 +71,9 @@ board = esp32-s3-devkitc-1
board_level = extra
upload_protocol = esptool
build_flags =
- ${esp32s3_base.build_flags} -D CROWPANEL_ESP32S3_2_EPAPER -I variants/crowpanel-esp32s3-5-epaper
+ ${esp32s3_base.build_flags}
+ -D CROWPANEL_ESP32S3_2_EPAPER
+ -I variants/esp32s3/crowpanel-esp32s3-5-epaper
-D PRIVATE_HW
-DBOARD_HAS_PSRAM
-DGPS_POWER_TOGGLE
diff --git a/variants/crowpanel-esp32s3-5-epaper/variant.h b/variants/esp32s3/crowpanel-esp32s3-5-epaper/variant.h
similarity index 100%
rename from variants/crowpanel-esp32s3-5-epaper/variant.h
rename to variants/esp32s3/crowpanel-esp32s3-5-epaper/variant.h
diff --git a/variants/my_esp32s3_diy_eink/pins_arduino.h b/variants/esp32s3/diy/my_esp32s3_diy_eink/pins_arduino.h
similarity index 100%
rename from variants/my_esp32s3_diy_eink/pins_arduino.h
rename to variants/esp32s3/diy/my_esp32s3_diy_eink/pins_arduino.h
diff --git a/variants/my_esp32s3_diy_eink/platformio.ini b/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini
similarity index 71%
rename from variants/my_esp32s3_diy_eink/platformio.ini
rename to variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini
index 98613e4fb..267544c40 100644
--- a/variants/my_esp32s3_diy_eink/platformio.ini
+++ b/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini
@@ -8,8 +8,6 @@ board_build.f_cpu = 240000000L
upload_protocol = esptool
;upload_port = /dev/ttyACM1
upload_speed = 921600
-platform_packages =
- platformio/tool-esptoolpy@^1.40801.0
lib_deps =
${esp32_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
@@ -18,12 +16,13 @@ build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
build_flags =
- ;${esp32_base.build_flags} -D MY_ESP32S3_DIY -I variants/my_esp32s3_diy_eink
- ${esp32_base.build_flags} -D PRIVATE_HW -I variants/my_esp32s3_diy_eink
+ ${esp32_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/esp32s3/diy/my_esp32s3_diy_eink
-Dmy
-DEINK_DISPLAY_MODEL=GxEPD2_290_T5D
-DEINK_WIDTH=296
-DEINK_HEIGHT=128
-DBOARD_HAS_PSRAM
-mfix-esp32-psram-cache-issue
- -DARDUINO_USB_MODE=0
\ No newline at end of file
+ -DARDUINO_USB_MODE=0
diff --git a/variants/my_esp32s3_diy_eink/variant.h b/variants/esp32s3/diy/my_esp32s3_diy_eink/variant.h
similarity index 100%
rename from variants/my_esp32s3_diy_eink/variant.h
rename to variants/esp32s3/diy/my_esp32s3_diy_eink/variant.h
diff --git a/variants/my_esp32s3_diy_oled/pins_arduino.h b/variants/esp32s3/diy/my_esp32s3_diy_oled/pins_arduino.h
similarity index 100%
rename from variants/my_esp32s3_diy_oled/pins_arduino.h
rename to variants/esp32s3/diy/my_esp32s3_diy_oled/pins_arduino.h
diff --git a/variants/my_esp32s3_diy_oled/platformio.ini b/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini
similarity index 67%
rename from variants/my_esp32s3_diy_oled/platformio.ini
rename to variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini
index 346cc9cac..aa3e6e482 100644
--- a/variants/my_esp32s3_diy_oled/platformio.ini
+++ b/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini
@@ -8,8 +8,6 @@ board_build.f_cpu = 240000000L
upload_protocol = esptool
;upload_port = /dev/ttyACM0
upload_speed = 921600
-platform_packages =
- platformio/tool-esptoolpy@^1.40801.0
lib_deps =
${esp32_base.lib_deps}
adafruit/Adafruit NeoPixel @ ^1.12.0
@@ -17,8 +15,9 @@ build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
build_flags =
- ;${esp32_base.build_flags} -D MY_ESP32S3_DIY -I variants/my_esp32s3_diy_oled
- ${esp32_base.build_flags} -D PRIVATE_HW -I variants/my_esp32s3_diy_oled
+ ${esp32_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/esp32s3/diy/my_esp32s3_diy_oled
-DBOARD_HAS_PSRAM
-mfix-esp32-psram-cache-issue
- -DARDUINO_USB_MODE=0
\ No newline at end of file
+ -DARDUINO_USB_MODE=0
diff --git a/variants/my_esp32s3_diy_oled/variant.h b/variants/esp32s3/diy/my_esp32s3_diy_oled/variant.h
similarity index 100%
rename from variants/my_esp32s3_diy_oled/variant.h
rename to variants/esp32s3/diy/my_esp32s3_diy_oled/variant.h
diff --git a/variants/esp32s3/diy/t-energy-s3_e22/platformio.ini b/variants/esp32s3/diy/t-energy-s3_e22/platformio.ini
new file mode 100644
index 000000000..681ee6c45
--- /dev/null
+++ b/variants/esp32s3/diy/t-energy-s3_e22/platformio.ini
@@ -0,0 +1,18 @@
+; NanoVHF T-Energy-S3 + E22(0)-xxxM - DIY
+[env:t-energy-s3_e22]
+extends = esp32s3_base
+board = esp32-s3-devkitc-1
+board_build.partitions = default_16MB.csv
+board_level = extra
+board_upload.flash_size = 16MB ;Specify the FLASH capacity as 16MB
+board_build.arduino.memory_type = qio_opi ;Enable internal PSRAM
+build_unflags =
+ ${esp32s3_base.build_unflags}
+ -D ARDUINO_USB_MODE=1
+build_flags =
+ ${esp32s3_base.build_flags}
+ -D EBYTE_ESP32_S3
+ -D BOARD_HAS_PSRAM
+ -D ARDUINO_USB_MODE=0
+ -D ARDUINO_USB_CDC_ON_BOOT=1
+ -I variants/esp32s3/diy/t-energy-s3_e22
diff --git a/variants/diy/t-energy-s3_e22/variant.h b/variants/esp32s3/diy/t-energy-s3_e22/variant.h
similarity index 100%
rename from variants/diy/t-energy-s3_e22/variant.h
rename to variants/esp32s3/diy/t-energy-s3_e22/variant.h
diff --git a/variants/dreamcatcher/platformio.ini b/variants/esp32s3/dreamcatcher/platformio.ini
similarity index 89%
rename from variants/dreamcatcher/platformio.ini
rename to variants/esp32s3/dreamcatcher/platformio.ini
index 6527d89be..d088f2dac 100644
--- a/variants/dreamcatcher/platformio.ini
+++ b/variants/esp32s3/dreamcatcher/platformio.ini
@@ -8,7 +8,7 @@ build_flags =
${esp32s3_base.build_flags}
-D PRIVATE_HW
-D OTHERNET_DC_REV=2301
- -I variants/dreamcatcher
+ -I variants/esp32s3/dreamcatcher
-D ARDUINO_USB_CDC_ON_BOOT=1
lib_deps = ${esp32s3_base.lib_deps}
@@ -25,5 +25,5 @@ build_flags =
${esp32s3_base.build_flags}
-D PRIVATE_HW
-D OTHERNET_DC_REV=2206
- -I variants/dreamcatcher
+ -I variants/esp32s3/dreamcatcher
-D ARDUINO_USB_CDC_ON_BOOT=1
diff --git a/variants/dreamcatcher/rfswitch.h b/variants/esp32s3/dreamcatcher/rfswitch.h
similarity index 100%
rename from variants/dreamcatcher/rfswitch.h
rename to variants/esp32s3/dreamcatcher/rfswitch.h
diff --git a/variants/dreamcatcher/variant.h b/variants/esp32s3/dreamcatcher/variant.h
similarity index 100%
rename from variants/dreamcatcher/variant.h
rename to variants/esp32s3/dreamcatcher/variant.h
diff --git a/variants/elecrow_panel/pins_arduino.h b/variants/esp32s3/elecrow_panel/pins_arduino.h
similarity index 100%
rename from variants/elecrow_panel/pins_arduino.h
rename to variants/esp32s3/elecrow_panel/pins_arduino.h
diff --git a/variants/elecrow_panel/platformio.ini b/variants/esp32s3/elecrow_panel/platformio.ini
similarity index 95%
rename from variants/elecrow_panel/platformio.ini
rename to variants/esp32s3/elecrow_panel/platformio.ini
index 5bce58208..59bc26000 100644
--- a/variants/elecrow_panel/platformio.ini
+++ b/variants/esp32s3/elecrow_panel/platformio.ini
@@ -5,7 +5,7 @@ board_check = true
upload_protocol = esptool
board_build.partitions = default_16MB.csv ; must be here for some reason, board.json is not enough !?
build_flags = ${esp32s3_base.build_flags} -Os
- -I variants/elecrow_panel
+ -I variants/esp32s3/elecrow_panel
-D ELECROW_PANEL
-D CONFIG_ARDUHAL_LOG_COLORS
-D RADIOLIB_DEBUG_SPI=0
@@ -79,6 +79,7 @@ build_flags =
-D SPI_FREQUENCY=80000000
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
+ -D DISPLAY_SIZE=320x240 ; landscape mode
-D LGFX_PANEL=ST7789
-D LGFX_ROTATION=1
-D LGFX_CFG_HOST=SPI2_HOST
@@ -97,12 +98,14 @@ build_flags =
[env:elecrow-adv-35-tft]
extends = crowpanel_small_esp32s3_base
+board_level = pr
build_flags =
${crowpanel_small_esp32s3_base.build_flags}
-D LV_CACHE_DEF_SIZE=2097152
-D SPI_FREQUENCY=60000000
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
+ -D DISPLAY_SIZE=320x480 ; portrait mode
-D LGFX_PANEL=ILI9488
-D LGFX_ROTATION=0
-D LGFX_CFG_HOST=SPI2_HOST
@@ -126,3 +129,4 @@ extends = crowpanel_large_esp32s3_base
build_flags =
${crowpanel_large_esp32s3_base.build_flags}
-D VIEW_320x240
+ -D DISPLAY_SIZE=800x480 ; landscape mode
diff --git a/variants/elecrow_panel/variant.h b/variants/esp32s3/elecrow_panel/variant.h
similarity index 100%
rename from variants/elecrow_panel/variant.h
rename to variants/esp32s3/elecrow_panel/variant.h
diff --git a/variants/esp32-s3-pico/pins_arduino.h b/variants/esp32s3/esp32-s3-pico/pins_arduino.h
similarity index 100%
rename from variants/esp32-s3-pico/pins_arduino.h
rename to variants/esp32s3/esp32-s3-pico/pins_arduino.h
diff --git a/variants/esp32-s3-pico/platformio.ini b/variants/esp32s3/esp32-s3-pico/platformio.ini
similarity index 94%
rename from variants/esp32-s3-pico/platformio.ini
rename to variants/esp32s3/esp32-s3-pico/platformio.ini
index 69969c601..11bd4f5a3 100644
--- a/variants/esp32-s3-pico/platformio.ini
+++ b/variants/esp32s3/esp32-s3-pico/platformio.ini
@@ -15,7 +15,7 @@ board_upload.require_upload_port = yes
build_flags = ${esp32s3_base.build_flags}
-DESP32_S3_PICO
;-DPRIVATE_HW
- -Ivariants/esp32-s3-pico
+ -Ivariants/esp32s3/esp32-s3-pico
-DBOARD_HAS_PSRAM
-DEINK_DISPLAY_MODEL=GxEPD2_290_T94_V2
-DEINK_WIDTH=296
diff --git a/variants/esp32-s3-pico/variant.h b/variants/esp32s3/esp32-s3-pico/variant.h
similarity index 100%
rename from variants/esp32-s3-pico/variant.h
rename to variants/esp32s3/esp32-s3-pico/variant.h
diff --git a/variants/heltec_capsule_sensor_v3/platformio.ini b/variants/esp32s3/heltec_capsule_sensor_v3/platformio.ini
similarity index 82%
rename from variants/heltec_capsule_sensor_v3/platformio.ini
rename to variants/esp32s3/heltec_capsule_sensor_v3/platformio.ini
index 8d1c039c1..d43ffd0df 100644
--- a/variants/heltec_capsule_sensor_v3/platformio.ini
+++ b/variants/esp32s3/heltec_capsule_sensor_v3/platformio.ini
@@ -4,7 +4,7 @@ board = heltec_wifi_lora_32_V3
board_check = true
board_build.partitions = default_8MB.csv
build_flags =
- ${esp32s3_base.build_flags} -I variants/heltec_capsule_sensor_v3
+ ${esp32s3_base.build_flags} -I variants/esp32s3/heltec_capsule_sensor_v3
-D HELTEC_CAPSULE_SENSOR_V3
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
- ;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
\ No newline at end of file
+ ;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
diff --git a/variants/heltec_capsule_sensor_v3/variant.h b/variants/esp32s3/heltec_capsule_sensor_v3/variant.h
similarity index 100%
rename from variants/heltec_capsule_sensor_v3/variant.h
rename to variants/esp32s3/heltec_capsule_sensor_v3/variant.h
diff --git a/variants/heltec_sensor_hub/platformio.ini b/variants/esp32s3/heltec_sensor_hub/platformio.ini
similarity index 75%
rename from variants/heltec_sensor_hub/platformio.ini
rename to variants/esp32s3/heltec_sensor_hub/platformio.ini
index 53f84fab4..92b90d9b9 100644
--- a/variants/heltec_sensor_hub/platformio.ini
+++ b/variants/esp32s3/heltec_sensor_hub/platformio.ini
@@ -4,7 +4,8 @@ board = heltec_wifi_lora_32_V3
board_check = true
build_flags =
- ${esp32s3_base.build_flags} -I variants/heltec_sensor_hub
+ ${esp32s3_base.build_flags}
+ -I variants/esp32s3/heltec_sensor_hub
-D HELTEC_SENSOR_HUB
lib_deps = ${esp32s3_base.lib_deps}
diff --git a/variants/heltec_sensor_hub/variant.h b/variants/esp32s3/heltec_sensor_hub/variant.h
similarity index 100%
rename from variants/heltec_sensor_hub/variant.h
rename to variants/esp32s3/heltec_sensor_hub/variant.h
diff --git a/variants/heltec_v3/platformio.ini b/variants/esp32s3/heltec_v3/platformio.ini
similarity index 73%
rename from variants/heltec_v3/platformio.ini
rename to variants/esp32s3/heltec_v3/platformio.ini
index 4be96b019..b521e11ca 100644
--- a/variants/heltec_v3/platformio.ini
+++ b/variants/esp32s3/heltec_v3/platformio.ini
@@ -1,8 +1,11 @@
[env:heltec-v3]
extends = esp32s3_base
board = heltec_wifi_lora_32_V3
+board_level = pr
board_check = true
board_build.partitions = default_8MB.csv
build_flags =
- ${esp32s3_base.build_flags} -D HELTEC_V3 -I variants/heltec_v3
+ ${esp32s3_base.build_flags}
+ -D HELTEC_V3
+ -I variants/esp32s3/heltec_v3
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
diff --git a/variants/heltec_v3/variant.h b/variants/esp32s3/heltec_v3/variant.h
similarity index 100%
rename from variants/heltec_v3/variant.h
rename to variants/esp32s3/heltec_v3/variant.h
diff --git a/variants/esp32s3/heltec_vision_master_e213/einkDetect.h b/variants/esp32s3/heltec_vision_master_e213/einkDetect.h
new file mode 100644
index 000000000..35140db60
--- /dev/null
+++ b/variants/esp32s3/heltec_vision_master_e213/einkDetect.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "configuration.h"
+
+enum class EInkDetectionResult : uint8_t {
+ LCMEN213EFC1 = 0, // Initial version
+ E0213A367 = 1, // E213 PCB marked V1.1 (Mid 2025)
+};
+
+EInkDetectionResult detectEInk()
+{
+ // Test 1: Logic of BUSY pin
+
+ // Determines controller IC manufacturer
+ // Fitipower: busy when LOW
+ // Solomon Systech: busy when HIGH
+
+ // Force display BUSY by holding reset pin active
+ pinMode(PIN_EINK_RES, OUTPUT);
+ digitalWrite(PIN_EINK_RES, LOW);
+
+ delay(10);
+
+ // Read whether pin is HIGH or LOW while busy
+ pinMode(PIN_EINK_BUSY, INPUT);
+ bool busyLogic = digitalRead(PIN_EINK_BUSY);
+
+ // Test complete. Release pin
+ pinMode(PIN_EINK_RES, INPUT);
+
+ if (busyLogic == LOW)
+ return EInkDetectionResult::LCMEN213EFC1;
+ else // busy HIGH
+ return EInkDetectionResult::E0213A367;
+}
\ No newline at end of file
diff --git a/variants/heltec_vision_master_e213/nicheGraphics.h b/variants/esp32s3/heltec_vision_master_e213/nicheGraphics.h
similarity index 79%
rename from variants/heltec_vision_master_e213/nicheGraphics.h
rename to variants/esp32s3/heltec_vision_master_e213/nicheGraphics.h
index 26f393f6c..1b1291424 100644
--- a/variants/heltec_vision_master_e213/nicheGraphics.h
+++ b/variants/esp32s3/heltec_vision_master_e213/nicheGraphics.h
@@ -18,16 +18,22 @@
// Shared NicheGraphics components
// --------------------------------
+#include "graphics/niche/Drivers/EInk/E0213A367.h"
#include "graphics/niche/Drivers/EInk/LCMEN2R13EFC1.h"
#include "graphics/niche/Inputs/TwoButton.h"
-// Button feedback
-#include "buzz.h"
+#include "buzz.h" // Button feedback
+#include "einkDetect.h" // Detect display model at runtime
void setupNicheGraphics()
{
using namespace NicheGraphics;
+ // Detect E-Ink Model
+ // -------------------
+
+ EInkDetectionResult displayModel = detectEInk();
+
// SPI
// -----------------------------
@@ -38,7 +44,13 @@ void setupNicheGraphics()
// E-Ink Driver
// -----------------------------
- Drivers::EInk *driver = new Drivers::LCMEN213EFC1;
+ Drivers::EInk *driver;
+
+ if (displayModel == EInkDetectionResult::LCMEN213EFC1) // V1 (unmarked)
+ driver = new Drivers::LCMEN213EFC1;
+ else if (displayModel == EInkDetectionResult::E0213A367) // V1.1
+ driver = new Drivers::E0213A367;
+
driver->begin(hspi, PIN_EINK_DC, PIN_EINK_CS, PIN_EINK_BUSY, PIN_EINK_RES);
// InkHUD
@@ -51,10 +63,15 @@ void setupNicheGraphics()
// Set how many FAST updates per FULL update
// Set how unhealthy additional FAST updates beyond this number are
- inkhud->setDisplayResilience(10, 1.5);
+
+ if (displayModel == EInkDetectionResult::LCMEN213EFC1) // V1 (unmarked)
+ inkhud->setDisplayResilience(10, 1.5);
+ else if (displayModel == EInkDetectionResult::E0213A367) // V1.1
+ inkhud->setDisplayResilience(15, 3);
// Select fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Customize default settings
@@ -90,7 +107,7 @@ void setupNicheGraphics()
buttons->setWiring(1, PIN_BUTTON2);
buttons->setHandlerShortPress(1, [inkhud]() {
inkhud->nextTile();
- playBoop();
+ playChirp();
});
// Begin handling button events
diff --git a/variants/heltec_vision_master_e213/pins_arduino.h b/variants/esp32s3/heltec_vision_master_e213/pins_arduino.h
similarity index 100%
rename from variants/heltec_vision_master_e213/pins_arduino.h
rename to variants/esp32s3/heltec_vision_master_e213/pins_arduino.h
diff --git a/variants/heltec_vision_master_e213/platformio.ini b/variants/esp32s3/heltec_vision_master_e213/platformio.ini
similarity index 79%
rename from variants/heltec_vision_master_e213/platformio.ini
rename to variants/esp32s3/heltec_vision_master_e213/platformio.ini
index 34cebb6e3..43f6199af 100644
--- a/variants/heltec_vision_master_e213/platformio.ini
+++ b/variants/esp32s3/heltec_vision_master_e213/platformio.ini
@@ -4,10 +4,11 @@ board = heltec_vision_master_e213
board_build.partitions = default_8MB.csv
build_flags =
${esp32s3_base.build_flags}
- -Ivariants/heltec_vision_master_e213
+ -Ivariants/esp32s3/heltec_vision_master_e213
-DHELTEC_VISION_MASTER_E213
-DUSE_EINK
- -DEINK_DISPLAY_MODEL=GxEPD2_213_FC1
+ -DGXEPD2_DRIVER_0=GxEPD2_213_FC1
+ -DGXEPD2_DRIVER_1=GxEPD2_213_E0213A367
-DEINK_WIDTH=250
-DEINK_HEIGHT=122
-DUSE_EINK_DYNAMICDISPLAY ; Enable Dynamic EInk
@@ -16,13 +17,14 @@ build_flags =
-DEINK_HASQUIRK_GHOSTING ; Display model is identified as "prone to ghosting"
lib_deps =
${esp32s3_base.lib_deps}
- https://github.com/meshtastic/GxEPD2/archive/b202ebfec6a4821e098cf7a625ba0f6f2400292d.zip
+ https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
lewisxhe/PCF8563_Library@^1.0.1
upload_speed = 115200
[env:heltec-vision-master-e213-inkhud]
extends = esp32s3_base, inkhud
board = heltec_vision_master_e213
+board_level = pr
board_build.partitions = default_8MB.csv
build_src_filter =
${esp32_base.build_src_filter}
@@ -30,9 +32,9 @@ build_src_filter =
build_flags =
${esp32s3_base.build_flags}
${inkhud.build_flags}
- -I variants/heltec_vision_master_e213
+ -I variants/esp32s3/heltec_vision_master_e213
-D HELTEC_VISION_MASTER_E213
lib_deps =
${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
${esp32s3_base.lib_deps}
-upload_speed = 921600
\ No newline at end of file
+upload_speed = 921600
diff --git a/variants/heltec_vision_master_e213/variant.h b/variants/esp32s3/heltec_vision_master_e213/variant.h
similarity index 100%
rename from variants/heltec_vision_master_e213/variant.h
rename to variants/esp32s3/heltec_vision_master_e213/variant.h
diff --git a/variants/heltec_vision_master_e290/nicheGraphics.h b/variants/esp32s3/heltec_vision_master_e290/nicheGraphics.h
similarity index 96%
rename from variants/heltec_vision_master_e290/nicheGraphics.h
rename to variants/esp32s3/heltec_vision_master_e290/nicheGraphics.h
index f3cf6355e..61b08c740 100644
--- a/variants/heltec_vision_master_e290/nicheGraphics.h
+++ b/variants/esp32s3/heltec_vision_master_e290/nicheGraphics.h
@@ -67,7 +67,8 @@ void setupNicheGraphics()
inkhud->setDisplayResilience(7, 1.5);
// Select fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Customize default settings
@@ -103,7 +104,7 @@ void setupNicheGraphics()
buttons->setWiring(1, PIN_BUTTON2);
buttons->setHandlerShortPress(1, [inkhud]() {
inkhud->nextTile();
- playBoop();
+ playChirp();
});
// Begin handling button events
diff --git a/variants/heltec_vision_master_e290/pins_arduino.h b/variants/esp32s3/heltec_vision_master_e290/pins_arduino.h
similarity index 100%
rename from variants/heltec_vision_master_e290/pins_arduino.h
rename to variants/esp32s3/heltec_vision_master_e290/pins_arduino.h
diff --git a/variants/heltec_vision_master_e290/platformio.ini b/variants/esp32s3/heltec_vision_master_e290/platformio.ini
similarity index 91%
rename from variants/heltec_vision_master_e290/platformio.ini
rename to variants/esp32s3/heltec_vision_master_e290/platformio.ini
index cda3fde00..08056b639 100644
--- a/variants/heltec_vision_master_e290/platformio.ini
+++ b/variants/esp32s3/heltec_vision_master_e290/platformio.ini
@@ -5,7 +5,7 @@ board = heltec_vision_master_e290
board_build.partitions = default_8MB.csv
build_flags =
${esp32s3_base.build_flags}
- -I variants/heltec_vision_master_e290
+ -I variants/esp32s3/heltec_vision_master_e290
-D DISPLAY_FLIP_SCREEN ; Orient so the LoRa antenna faces up
-D HELTEC_VISION_MASTER_E290
-D BUTTON_CLICK_MS=200
@@ -34,9 +34,9 @@ build_src_filter =
build_flags =
${esp32s3_base.build_flags}
${inkhud.build_flags}
- -I variants/heltec_vision_master_e290
+ -I variants/esp32s3/heltec_vision_master_e290
-D HELTEC_VISION_MASTER_E290
lib_deps =
${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
${esp32s3_base.lib_deps}
-upload_speed = 921600
\ No newline at end of file
+upload_speed = 921600
diff --git a/variants/heltec_vision_master_e290/variant.h b/variants/esp32s3/heltec_vision_master_e290/variant.h
similarity index 100%
rename from variants/heltec_vision_master_e290/variant.h
rename to variants/esp32s3/heltec_vision_master_e290/variant.h
diff --git a/variants/heltec_vision_master_t190/pins_arduino.h b/variants/esp32s3/heltec_vision_master_t190/pins_arduino.h
similarity index 100%
rename from variants/heltec_vision_master_t190/pins_arduino.h
rename to variants/esp32s3/heltec_vision_master_t190/pins_arduino.h
diff --git a/variants/heltec_vision_master_t190/platformio.ini b/variants/esp32s3/heltec_vision_master_t190/platformio.ini
similarity index 77%
rename from variants/heltec_vision_master_t190/platformio.ini
rename to variants/esp32s3/heltec_vision_master_t190/platformio.ini
index 7f55a1be7..e7e7ff4e4 100644
--- a/variants/heltec_vision_master_t190/platformio.ini
+++ b/variants/esp32s3/heltec_vision_master_t190/platformio.ini
@@ -4,10 +4,10 @@ board = heltec_vision_master_t190
board_build.partitions = default_8MB.csv
build_flags =
${esp32s3_base.build_flags}
- -Ivariants/heltec_vision_master_t190
- -DHELTEC_VISION_MASTER_T190
+ -I variants/esp32s3/heltec_vision_master_t190
+ -D HELTEC_VISION_MASTER_T190
lib_deps =
${esp32s3_base.lib_deps}
lewisxhe/PCF8563_Library@^1.0.1
https://github.com/meshtastic/st7789/archive/bd33ea58ddfe4a5e4a66d53300ccbd38d66ac21f.zip
-upload_speed = 921600
\ No newline at end of file
+upload_speed = 921600
diff --git a/variants/heltec_vision_master_t190/variant.h b/variants/esp32s3/heltec_vision_master_t190/variant.h
similarity index 100%
rename from variants/heltec_vision_master_t190/variant.h
rename to variants/esp32s3/heltec_vision_master_t190/variant.h
diff --git a/variants/esp32s3/heltec_wireless_paper/einkDetect.h b/variants/esp32s3/heltec_wireless_paper/einkDetect.h
new file mode 100644
index 000000000..93b3f86e3
--- /dev/null
+++ b/variants/esp32s3/heltec_wireless_paper/einkDetect.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "configuration.h"
+
+enum class EInkDetectionResult : uint8_t {
+ LCMEN213EFC1 = 0, // V1.1
+ E0213A367 = 1, // V1.1.1, V1.2
+};
+
+EInkDetectionResult detectEInk()
+{
+ // Test 1: Logic of BUSY pin
+
+ // Determines controller IC manufacturer
+ // Fitipower: busy when LOW
+ // Solomon Systech: busy when HIGH
+
+ // Force display BUSY by holding reset pin active
+ pinMode(PIN_EINK_RES, OUTPUT);
+ digitalWrite(PIN_EINK_RES, LOW);
+
+ delay(10);
+
+ // Read whether pin is HIGH or LOW while busy
+ pinMode(PIN_EINK_BUSY, INPUT);
+ bool busyLogic = digitalRead(PIN_EINK_BUSY);
+
+ // Test complete. Release pin
+ pinMode(PIN_EINK_RES, INPUT);
+
+ if (busyLogic == LOW)
+ return EInkDetectionResult::LCMEN213EFC1;
+ else // busy HIGH
+ return EInkDetectionResult::E0213A367;
+}
\ No newline at end of file
diff --git a/variants/heltec_wireless_paper/nicheGraphics.h b/variants/esp32s3/heltec_wireless_paper/nicheGraphics.h
similarity index 79%
rename from variants/heltec_wireless_paper/nicheGraphics.h
rename to variants/esp32s3/heltec_wireless_paper/nicheGraphics.h
index c8994b7f1..445b57714 100644
--- a/variants/heltec_wireless_paper/nicheGraphics.h
+++ b/variants/esp32s3/heltec_wireless_paper/nicheGraphics.h
@@ -18,13 +18,21 @@
// Shared NicheGraphics components
// --------------------------------
+#include "graphics/niche/Drivers/EInk/E0213A367.h"
#include "graphics/niche/Drivers/EInk/LCMEN2R13EFC1.h"
#include "graphics/niche/Inputs/TwoButton.h"
+#include "einkDetect.h" // Detect display model at runtime
+
void setupNicheGraphics()
{
using namespace NicheGraphics;
+ // Detect E-Ink Model
+ // -------------------
+
+ EInkDetectionResult displayModel = detectEInk();
+
// SPI
// -----------------------------
@@ -35,7 +43,13 @@ void setupNicheGraphics()
// E-Ink Driver
// -----------------------------
- Drivers::EInk *driver = new Drivers::LCMEN213EFC1;
+ Drivers::EInk *driver;
+
+ if (displayModel == EInkDetectionResult::LCMEN213EFC1) // V1.1
+ driver = new Drivers::LCMEN213EFC1;
+ else if (displayModel == EInkDetectionResult::E0213A367) // V1.1.1, V1.2
+ driver = new Drivers::E0213A367;
+
driver->begin(hspi, PIN_EINK_DC, PIN_EINK_CS, PIN_EINK_BUSY, PIN_EINK_RES);
// InkHUD
@@ -48,10 +62,15 @@ void setupNicheGraphics()
// Set how many FAST updates per FULL update
// Set how unhealthy additional FAST updates beyond this number are
- inkhud->setDisplayResilience(10, 1.5);
+
+ if (displayModel == EInkDetectionResult::LCMEN213EFC1) // V1.1 (unmarked)
+ inkhud->setDisplayResilience(10, 1.5);
+ else if (displayModel == EInkDetectionResult::E0213A367) // V1.1.1, V1.2
+ inkhud->setDisplayResilience(15, 3);
// Select fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Customize default settings
diff --git a/variants/heltec_wireless_paper/pins_arduino.h b/variants/esp32s3/heltec_wireless_paper/pins_arduino.h
similarity index 100%
rename from variants/heltec_wireless_paper/pins_arduino.h
rename to variants/esp32s3/heltec_wireless_paper/pins_arduino.h
diff --git a/variants/heltec_wireless_paper/platformio.ini b/variants/esp32s3/heltec_wireless_paper/platformio.ini
similarity index 81%
rename from variants/heltec_wireless_paper/platformio.ini
rename to variants/esp32s3/heltec_wireless_paper/platformio.ini
index ce5b5e533..f16dcd257 100644
--- a/variants/heltec_wireless_paper/platformio.ini
+++ b/variants/esp32s3/heltec_wireless_paper/platformio.ini
@@ -5,9 +5,10 @@ board = heltec_wifi_lora_32_V3
board_build.partitions = default_8MB.csv
build_flags =
${esp32s3_base.build_flags}
- -I variants/heltec_wireless_paper
+ -I variants/esp32s3/heltec_wireless_paper
-D HELTEC_WIRELESS_PAPER
- -D EINK_DISPLAY_MODEL=GxEPD2_213_FC1
+ -D GXEPD2_DRIVER_0=GxEPD2_213_FC1
+ -D GXEPD2_DRIVER_1=GxEPD2_213_E0213A367
-D EINK_WIDTH=250
-D EINK_HEIGHT=122
-D USE_EINK
@@ -17,7 +18,7 @@ build_flags =
-D EINK_HASQUIRK_GHOSTING ; Display model is identified as "prone to ghosting"
lib_deps =
${esp32s3_base.lib_deps}
- https://github.com/meshtastic/GxEPD2/archive/b202ebfec6a4821e098cf7a625ba0f6f2400292d.zip
+ https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
lewisxhe/PCF8563_Library@^1.0.1
upload_speed = 115200
@@ -31,9 +32,9 @@ build_src_filter =
build_flags =
${esp32s3_base.build_flags}
${inkhud.build_flags}
- -I variants/heltec_wireless_paper
+ -I variants/esp32s3/heltec_wireless_paper
-D HELTEC_WIRELESS_PAPER
lib_deps =
${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
${esp32s3_base.lib_deps}
-upload_speed = 921600
\ No newline at end of file
+upload_speed = 921600
diff --git a/variants/heltec_wireless_paper/variant.h b/variants/esp32s3/heltec_wireless_paper/variant.h
similarity index 100%
rename from variants/heltec_wireless_paper/variant.h
rename to variants/esp32s3/heltec_wireless_paper/variant.h
diff --git a/variants/heltec_wireless_paper_v1/pins_arduino.h b/variants/esp32s3/heltec_wireless_paper_v1/pins_arduino.h
similarity index 100%
rename from variants/heltec_wireless_paper_v1/pins_arduino.h
rename to variants/esp32s3/heltec_wireless_paper_v1/pins_arduino.h
diff --git a/variants/heltec_wireless_paper_v1/platformio.ini b/variants/esp32s3/heltec_wireless_paper_v1/platformio.ini
similarity index 91%
rename from variants/heltec_wireless_paper_v1/platformio.ini
rename to variants/esp32s3/heltec_wireless_paper_v1/platformio.ini
index 44b0606af..99f2eddeb 100644
--- a/variants/heltec_wireless_paper_v1/platformio.ini
+++ b/variants/esp32s3/heltec_wireless_paper_v1/platformio.ini
@@ -5,7 +5,7 @@ board = heltec_wifi_lora_32_V3
board_build.partitions = default_8MB.csv
build_flags =
${esp32s3_base.build_flags}
- -I variants/heltec_wireless_paper_v1
+ -I variants/esp32s3/heltec_wireless_paper_v1
-D HELTEC_WIRELESS_PAPER_V1_0
-D EINK_DISPLAY_MODEL=GxEPD2_213_BN
-D EINK_WIDTH=250
@@ -17,4 +17,4 @@ lib_deps =
${esp32s3_base.lib_deps}
https://github.com/meshtastic/GxEPD2/archive/55f618961db45a23eff0233546430f1e5a80f63a.zip
lewisxhe/PCF8563_Library@^1.0.1
-upload_speed = 115200
\ No newline at end of file
+upload_speed = 115200
diff --git a/variants/heltec_wireless_paper_v1/variant.h b/variants/esp32s3/heltec_wireless_paper_v1/variant.h
similarity index 100%
rename from variants/heltec_wireless_paper_v1/variant.h
rename to variants/esp32s3/heltec_wireless_paper_v1/variant.h
diff --git a/variants/heltec_wireless_tracker/pins_arduino.h b/variants/esp32s3/heltec_wireless_tracker/pins_arduino.h
similarity index 100%
rename from variants/heltec_wireless_tracker/pins_arduino.h
rename to variants/esp32s3/heltec_wireless_tracker/pins_arduino.h
diff --git a/variants/heltec_wireless_tracker/platformio.ini b/variants/esp32s3/heltec_wireless_tracker/platformio.ini
similarity index 85%
rename from variants/heltec_wireless_tracker/platformio.ini
rename to variants/esp32s3/heltec_wireless_tracker/platformio.ini
index 5c19c37e6..2faba45a8 100644
--- a/variants/heltec_wireless_tracker/platformio.ini
+++ b/variants/esp32s3/heltec_wireless_tracker/platformio.ini
@@ -5,7 +5,8 @@ board_build.partitions = default_8MB.csv
upload_protocol = esptool
build_flags =
- ${esp32s3_base.build_flags} -I variants/heltec_wireless_tracker
+ ${esp32s3_base.build_flags}
+ -I variants/esp32s3/heltec_wireless_tracker
-D HELTEC_TRACKER_V1_1
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
diff --git a/variants/heltec_wireless_tracker/variant.h b/variants/esp32s3/heltec_wireless_tracker/variant.h
similarity index 100%
rename from variants/heltec_wireless_tracker/variant.h
rename to variants/esp32s3/heltec_wireless_tracker/variant.h
diff --git a/variants/heltec_wireless_tracker_V1_0/pins_arduino.h b/variants/esp32s3/heltec_wireless_tracker_V1_0/pins_arduino.h
similarity index 100%
rename from variants/heltec_wireless_tracker_V1_0/pins_arduino.h
rename to variants/esp32s3/heltec_wireless_tracker_V1_0/pins_arduino.h
diff --git a/variants/heltec_wireless_tracker_V1_0/platformio.ini b/variants/esp32s3/heltec_wireless_tracker_V1_0/platformio.ini
similarity index 85%
rename from variants/heltec_wireless_tracker_V1_0/platformio.ini
rename to variants/esp32s3/heltec_wireless_tracker_V1_0/platformio.ini
index 08b0ae95c..89fe4b385 100644
--- a/variants/heltec_wireless_tracker_V1_0/platformio.ini
+++ b/variants/esp32s3/heltec_wireless_tracker_V1_0/platformio.ini
@@ -5,7 +5,8 @@ board = heltec_wireless_tracker
board_build.partitions = default_8MB.csv
upload_protocol = esptool
build_flags =
- ${esp32s3_base.build_flags} -I variants/heltec_wireless_tracker_V1_0
+ ${esp32s3_base.build_flags}
+ -I variants/esp32s3/heltec_wireless_tracker_V1_0
-D HELTEC_TRACKER_V1_0
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
diff --git a/variants/heltec_wireless_tracker_V1_0/variant.h b/variants/esp32s3/heltec_wireless_tracker_V1_0/variant.h
similarity index 100%
rename from variants/heltec_wireless_tracker_V1_0/variant.h
rename to variants/esp32s3/heltec_wireless_tracker_V1_0/variant.h
diff --git a/variants/heltec_wsl_v3/platformio.ini b/variants/esp32s3/heltec_wsl_v3/platformio.ini
similarity index 78%
rename from variants/heltec_wsl_v3/platformio.ini
rename to variants/esp32s3/heltec_wsl_v3/platformio.ini
index bc3e6ada1..06cde2304 100644
--- a/variants/heltec_wsl_v3/platformio.ini
+++ b/variants/esp32s3/heltec_wsl_v3/platformio.ini
@@ -4,5 +4,7 @@ board = heltec_wifi_lora_32_V3
board_build.partitions = default_8MB.csv
# Temporary until espressif creates a release with this new target
build_flags =
- ${esp32s3_base.build_flags} -D HELTEC_WSL_V3 -I variants/heltec_wsl_v3
+ ${esp32s3_base.build_flags}
+ -D HELTEC_WSL_V3
+ -I variants/esp32s3/heltec_wsl_v3
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
diff --git a/variants/heltec_wsl_v3/variant.h b/variants/esp32s3/heltec_wsl_v3/variant.h
similarity index 100%
rename from variants/heltec_wsl_v3/variant.h
rename to variants/esp32s3/heltec_wsl_v3/variant.h
diff --git a/variants/icarus/pins_arduino.h b/variants/esp32s3/icarus/pins_arduino.h
similarity index 100%
rename from variants/icarus/pins_arduino.h
rename to variants/esp32s3/icarus/pins_arduino.h
diff --git a/variants/icarus/platformio.ini b/variants/esp32s3/icarus/platformio.ini
similarity index 84%
rename from variants/icarus/platformio.ini
rename to variants/esp32s3/icarus/platformio.ini
index b4ea125cf..de450da93 100644
--- a/variants/icarus/platformio.ini
+++ b/variants/esp32s3/icarus/platformio.ini
@@ -14,6 +14,8 @@ build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
build_flags =
- ${esp32s3_base.build_flags} -D PRIVATE_HW -I variants/icarus
- -DBOARD_HAS_PSRAM
+ ${esp32s3_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/esp32s3/icarus
+ -DBOARD_HAS_PSRAM
-DARDUINO_USB_MODE=0
diff --git a/variants/icarus/variant.h b/variants/esp32s3/icarus/variant.h
similarity index 100%
rename from variants/icarus/variant.h
rename to variants/esp32s3/icarus/variant.h
diff --git a/variants/link32_s3_v1/pins_arduino.h b/variants/esp32s3/link32_s3_v1/pins_arduino.h
similarity index 100%
rename from variants/link32_s3_v1/pins_arduino.h
rename to variants/esp32s3/link32_s3_v1/pins_arduino.h
diff --git a/variants/link32_s3_v1/platformio.ini b/variants/esp32s3/link32_s3_v1/platformio.ini
similarity index 81%
rename from variants/link32_s3_v1/platformio.ini
rename to variants/esp32s3/link32_s3_v1/platformio.ini
index 5a614a7af..c1b71b3b5 100644
--- a/variants/link32_s3_v1/platformio.ini
+++ b/variants/esp32s3/link32_s3_v1/platformio.ini
@@ -2,7 +2,9 @@
extends = esp32s3_base
board = esp32-s3-devkitc-1
build_flags =
- ${esp32_base.build_flags} -D LINK_32 -I variants/link32_s3_v1
+ ${esp32_base.build_flags}
+ -D LINK_32
+ -I variants/esp32s3/link32_s3_v1
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-DARDUINO_USB_CDC_ON_BOOT
-DARDUINO_USB_MODE=1
diff --git a/variants/link32_s3_v1/variant.h b/variants/esp32s3/link32_s3_v1/variant.h
similarity index 100%
rename from variants/link32_s3_v1/variant.h
rename to variants/esp32s3/link32_s3_v1/variant.h
diff --git a/variants/m5stack_cores3/pins_arduino.h b/variants/esp32s3/m5stack_cores3/pins_arduino.h
similarity index 100%
rename from variants/m5stack_cores3/pins_arduino.h
rename to variants/esp32s3/m5stack_cores3/pins_arduino.h
diff --git a/variants/m5stack_cores3/platformio.ini b/variants/esp32s3/m5stack_cores3/platformio.ini
similarity index 53%
rename from variants/m5stack_cores3/platformio.ini
rename to variants/esp32s3/m5stack_cores3/platformio.ini
index 2253e75e2..9973abfce 100644
--- a/variants/m5stack_cores3/platformio.ini
+++ b/variants/esp32s3/m5stack_cores3/platformio.ini
@@ -5,11 +5,9 @@ board = m5stack-cores3
board_check = true
board_build.partitions = default_16MB.csv
upload_protocol = esptool
-
-build_flags = ${esp32_base.build_flags}
- -DPRIVATE_HW
- -DM5STACK_CORES3
- -Ivariants/m5stack_cores3
-
-lib_deps =
- ${esp32_base.lib_deps}
+build_flags =
+ ${esp32_base.build_flags}
+ -D PRIVATE_HW
+ -D M5STACK_CORES3
+ -I variants/esp32s3/m5stack_cores3
+lib_deps = ${esp32_base.lib_deps}
diff --git a/variants/m5stack_cores3/variant.h b/variants/esp32s3/m5stack_cores3/variant.h
similarity index 100%
rename from variants/m5stack_cores3/variant.h
rename to variants/esp32s3/m5stack_cores3/variant.h
diff --git a/variants/mesh-tab/pins_arduino.h b/variants/esp32s3/mesh-tab/pins_arduino.h
similarity index 100%
rename from variants/mesh-tab/pins_arduino.h
rename to variants/esp32s3/mesh-tab/pins_arduino.h
diff --git a/variants/mesh-tab/platformio.ini b/variants/esp32s3/mesh-tab/platformio.ini
similarity index 93%
rename from variants/mesh-tab/platformio.ini
rename to variants/esp32s3/mesh-tab/platformio.ini
index beeb58a48..e21bc38e1 100644
--- a/variants/mesh-tab/platformio.ini
+++ b/variants/esp32s3/mesh-tab/platformio.ini
@@ -45,7 +45,7 @@ build_flags = ${esp32s3_base.build_flags}
-D LGFX_TOUCH_INT=41
-D VIEW_320x240
-D USE_PACKET_API
- -I variants/mesh-tab
+ -I variants/esp32s3/mesh-tab
build_src_filter = ${esp32_base.build_src_filter}
lib_deps =
${esp32_base.lib_deps}
@@ -85,6 +85,7 @@ build_flags = ${mesh_tab_xpt2046.build_flags}
-D SPI_FREQUENCY=60000000
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
+ -D DISPLAY_SIZE=320x240 ; landscape mode
-D LGFX_PANEL=ST7789
-D LGFX_INVERT_COLOR=false
-D LGFX_ROTATION=3
@@ -97,6 +98,7 @@ build_flags = ${mesh_tab_xpt2046.build_flags}
-D SPI_FREQUENCY=60000000 ; if image is distorted then lower to 40 MHz
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
+ -D DISPLAY_SIZE=320x240 ; landscape mode
-D LGFX_PANEL=ILI9341
-D LGFX_ROTATION=1
-D LGFX_TOUCH_ROTATION=4
@@ -109,6 +111,7 @@ build_flags = ${mesh_tab_xpt2046.build_flags}
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
+ -D DISPLAY_SIZE=320x480 ; portrait mode
-D LGFX_PANEL=ILI9488
-D LGFX_ROTATION=0
-D LGFX_TOUCH_ROTATION=0
@@ -121,6 +124,7 @@ build_flags = ${mesh_tab_xpt2046.build_flags}
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
+ -D DISPLAY_SIZE=320x480 ; portrait mode
-D LGFX_PANEL=HX8357B
-D LGFX_INVERT_COLOR=false
-D LGFX_ROTATION=4
@@ -133,6 +137,7 @@ build_flags = ${mesh_tab_ft5x06.build_flags}
-D SPI_FREQUENCY=75000000 ; may go higher upto 60/80 MHz
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
+ -D DISPLAY_SIZE=320x240 ; landscape mode
-D LGFX_PANEL=ILI9341
-D LGFX_ROTATION=1
-D LGFX_TOUCH_X_MIN=0
@@ -149,6 +154,7 @@ build_flags = ${mesh_tab_ft5x06.build_flags}
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
+ -D DISPLAY_SIZE=320x480 ; portrait mode
-D LGFX_PANEL=ILI9488
-D LGFX_ROTATION=2
-D LGFX_TOUCH_X_MIN=0
@@ -165,6 +171,7 @@ build_flags = ${mesh_tab_ft5x06.build_flags}
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
+ -D DISPLAY_SIZE=320x480 ; portrait mode
-D LGFX_PANEL=HX8357B
-D LGFX_ROTATION=4
-D LGFX_TOUCH_X_MIN=0
diff --git a/variants/mesh-tab/variant.h b/variants/esp32s3/mesh-tab/variant.h
similarity index 100%
rename from variants/mesh-tab/variant.h
rename to variants/esp32s3/mesh-tab/variant.h
diff --git a/variants/nibble_esp32/platformio.ini b/variants/esp32s3/nibble_esp32/platformio.ini
similarity index 55%
rename from variants/nibble_esp32/platformio.ini
rename to variants/esp32s3/nibble_esp32/platformio.ini
index 24d2ee2a5..2f6960d2e 100644
--- a/variants/nibble_esp32/platformio.ini
+++ b/variants/esp32s3/nibble_esp32/platformio.ini
@@ -3,4 +3,6 @@ extends = esp32s3_base
board = esp32-s3-zero
board_level = extra
build_flags =
- ${esp32_base.build_flags} -D PRIVATE_HW -I variants/nibble_esp32
\ No newline at end of file
+ ${esp32_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/esp32s3/nibble_esp32
diff --git a/variants/nibble_esp32/variant.h b/variants/esp32s3/nibble_esp32/variant.h
similarity index 100%
rename from variants/nibble_esp32/variant.h
rename to variants/esp32s3/nibble_esp32/variant.h
diff --git a/variants/nugget_s3_lora/platformio.ini b/variants/esp32s3/nugget_s3_lora/platformio.ini
similarity index 78%
rename from variants/nugget_s3_lora/platformio.ini
rename to variants/esp32s3/nugget_s3_lora/platformio.ini
index 1085d633b..a0076a18b 100644
--- a/variants/nugget_s3_lora/platformio.ini
+++ b/variants/esp32s3/nugget_s3_lora/platformio.ini
@@ -3,4 +3,4 @@ extends = esp32s3_base
board = lolin_s3_mini
board_level = extra
build_flags =
- ${esp32s3_base.build_flags} -D ARDUINO_USB_CDC_ON_BOOT=1 -D PRIVATE_HW -I variants/nugget_s3_lora
+ ${esp32s3_base.build_flags} -D ARDUINO_USB_CDC_ON_BOOT=1 -D PRIVATE_HW -I variants/esp32s3/nugget_s3_lora
diff --git a/variants/nugget_s3_lora/variant.h b/variants/esp32s3/nugget_s3_lora/variant.h
similarity index 100%
rename from variants/nugget_s3_lora/variant.h
rename to variants/esp32s3/nugget_s3_lora/variant.h
diff --git a/variants/picomputer-s3/pins_arduino.h b/variants/esp32s3/picomputer-s3/pins_arduino.h
similarity index 100%
rename from variants/picomputer-s3/pins_arduino.h
rename to variants/esp32s3/picomputer-s3/pins_arduino.h
diff --git a/variants/picomputer-s3/platformio.ini b/variants/esp32s3/picomputer-s3/platformio.ini
similarity index 93%
rename from variants/picomputer-s3/platformio.ini
rename to variants/esp32s3/picomputer-s3/platformio.ini
index b7987796f..d5847959b 100644
--- a/variants/picomputer-s3/platformio.ini
+++ b/variants/esp32s3/picomputer-s3/platformio.ini
@@ -11,7 +11,7 @@ upload_protocol = esptool
build_flags =
${esp32s3_base.build_flags}
-DPICOMPUTER_S3
- -I variants/picomputer-s3
+ -I variants/esp32s3/picomputer-s3
lib_deps =
${esp32s3_base.lib_deps}
@@ -44,6 +44,7 @@ build_flags =
-D LOG_DEBUG_INC=\"DebugConfiguration.h\"
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
+ -D DISPLAY_SIZE=320x240 ; landscape mode
-D LGFX_DRIVER=LGFX_PICOMPUTER_S3
-D GFX_DRIVER_INC=\"graphics/LGFX/LGFX_PICOMPUTER_S3.h\"
-D VIEW_320x240
diff --git a/variants/picomputer-s3/variant.h b/variants/esp32s3/picomputer-s3/variant.h
similarity index 97%
rename from variants/picomputer-s3/variant.h
rename to variants/esp32s3/picomputer-s3/variant.h
index ff8faa6f4..8252e841c 100644
--- a/variants/picomputer-s3/variant.h
+++ b/variants/esp32s3/picomputer-s3/variant.h
@@ -49,7 +49,7 @@
#define SCREEN_TRANSITION_FRAMERATE 5
// Picomputer gets a white on black display
-#define TFT_MESH COLOR565(0xFF, 0xFF, 0xFF)
+#define TFT_MESH_OVERRIDE COLOR565(255, 255, 255)
#define CANNED_MESSAGE_MODULE_ENABLE 1
diff --git a/variants/esp32s3/rak3312/pins_arduino.h b/variants/esp32s3/rak3312/pins_arduino.h
new file mode 100644
index 000000000..15a26e991
--- /dev/null
+++ b/variants/esp32s3/rak3312/pins_arduino.h
@@ -0,0 +1,28 @@
+#ifndef Pins_Arduino_h
+#define Pins_Arduino_h
+
+#include "variant.h"
+#include
+
+#define USB_VID 0x303a
+#define USB_PID 0x1001
+
+// The default Wire will be mapped to PMU and RTC
+static const uint8_t SDA = 9;
+static const uint8_t SCL = 40;
+
+// Default SPI will be mapped to Radio
+static const uint8_t SS = 12;
+static const uint8_t MOSI = 11;
+static const uint8_t MISO = 10;
+static const uint8_t SCK = 13;
+
+#define SPI_MOSI (11)
+#define SPI_SCK (13)
+#define SPI_MISO (10)
+#define SPI_CS (12)
+
+// LEDs
+#define LED_BUILTIN LED_GREEN
+
+#endif /* Pins_Arduino_h */
diff --git a/variants/esp32s3/rak3312/platformio.ini b/variants/esp32s3/rak3312/platformio.ini
new file mode 100644
index 000000000..0de36498f
--- /dev/null
+++ b/variants/esp32s3/rak3312/platformio.ini
@@ -0,0 +1,11 @@
+[env:rak3312]
+extends = esp32s3_base
+board = wiscore_rak3312
+board_level = pr
+board_check = true
+upload_protocol = esptool
+
+build_flags =
+ ${esp32_base.build_flags}
+ -D RAK3312
+ -I variants/esp32s3/rak3312
diff --git a/variants/esp32s3/rak3312/variant.h b/variants/esp32s3/rak3312/variant.h
new file mode 100644
index 000000000..dfdf4de71
--- /dev/null
+++ b/variants/esp32s3/rak3312/variant.h
@@ -0,0 +1,44 @@
+#define I2C_SDA 9
+#define I2C_SCL 40
+
+#define USE_SX1262
+
+#define LORA_SCK 5
+#define LORA_MISO 3
+#define LORA_MOSI 6
+#define LORA_CS 7
+#define LORA_RESET 8
+
+#ifdef USE_SX1262
+#define SX126X_CS LORA_CS
+#define SX126X_DIO1 47
+#define SX126X_BUSY 48
+#define SX126X_RESET LORA_RESET
+#define SX126X_DIO2_AS_RF_SWITCH
+#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
+
+#define PIN_LED1 LED_GREEN
+#define PIN_LED2 LED_BLUE
+
+#define LED_CONN LED_BLUE
+#define LED_PIN LED_GREEN
+#define ledOff(pin) pinMode(pin, INPUT)
+
+#define LED_STATE_ON 1 // State when LED is litted
+
+#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
\ No newline at end of file
diff --git a/variants/seeed-sensecap-indicator/pins_arduino.h b/variants/esp32s3/seeed-sensecap-indicator/pins_arduino.h
similarity index 100%
rename from variants/seeed-sensecap-indicator/pins_arduino.h
rename to variants/esp32s3/seeed-sensecap-indicator/pins_arduino.h
diff --git a/variants/seeed-sensecap-indicator/platformio.ini b/variants/esp32s3/seeed-sensecap-indicator/platformio.ini
similarity index 98%
rename from variants/seeed-sensecap-indicator/platformio.ini
rename to variants/esp32s3/seeed-sensecap-indicator/platformio.ini
index aafb55449..cf01c8748 100644
--- a/variants/seeed-sensecap-indicator/platformio.ini
+++ b/variants/esp32s3/seeed-sensecap-indicator/platformio.ini
@@ -21,7 +21,7 @@ build_unflags =
-DCONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192
build_flags = ${esp32_base.build_flags} -D lcd_periph_signals=lcd_periph_rgb_signals -mtext-section-literals -ffat-lto-objects
- -Ivariants/seeed-sensecap-indicator
+ -Ivariants/esp32s3/seeed-sensecap-indicator
-DSENSECAP_INDICATOR
-DCONFIG_ARDUHAL_LOG_COLORS
-DRADIOLIB_DEBUG_SPI=0
@@ -87,7 +87,7 @@ custom_sdkconfig =
[env:seeed-sensecap-indicator-tft]
extends = env:seeed-sensecap-indicator
-board_level = main
+board_level = pr
upload_speed = 460800
build_flags =
@@ -118,6 +118,7 @@ build_flags =
-D CUSTOM_TOUCH_DRIVER
-D LGFX_SCREEN_WIDTH=480
-D LGFX_SCREEN_HEIGHT=480
+ -D DISPLAY_SIZE=480x480
-D LGFX_DRIVER=LGFX_INDICATOR
-D GFX_DRIVER_INC=\"graphics/LGFX/LGFX_INDICATOR.h\"
-D VIEW_320x240
diff --git a/variants/seeed-sensecap-indicator/variant.h b/variants/esp32s3/seeed-sensecap-indicator/variant.h
similarity index 100%
rename from variants/seeed-sensecap-indicator/variant.h
rename to variants/esp32s3/seeed-sensecap-indicator/variant.h
diff --git a/variants/seeed_xiao_s3/pins_arduino.h b/variants/esp32s3/seeed_xiao_s3/pins_arduino.h
similarity index 100%
rename from variants/seeed_xiao_s3/pins_arduino.h
rename to variants/esp32s3/seeed_xiao_s3/pins_arduino.h
diff --git a/variants/seeed_xiao_s3/platformio.ini b/variants/esp32s3/seeed_xiao_s3/platformio.ini
similarity index 71%
rename from variants/seeed_xiao_s3/platformio.ini
rename to variants/esp32s3/seeed_xiao_s3/platformio.ini
index 9d935e2e0..ffc6e9638 100644
--- a/variants/seeed_xiao_s3/platformio.ini
+++ b/variants/esp32s3/seeed_xiao_s3/platformio.ini
@@ -1,6 +1,7 @@
[env:seeed-xiao-s3]
extends = esp32s3_base
board = seeed-xiao-s3
+board_level = pr
board_check = true
board_build.partitions = default_8MB.csv
upload_protocol = esptool
@@ -11,7 +12,8 @@ build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
build_flags =
- ${esp32s3_base.build_flags} -DSEEED_XIAO_S3 -I variants/seeed_xiao_s3
+ ${esp32s3_base.build_flags}
+ -D SEEED_XIAO_S3
+ -I variants/esp32s3/seeed_xiao_s3
-DBOARD_HAS_PSRAM
-
- -DARDUINO_USB_MODE=0
\ No newline at end of file
+ -DARDUINO_USB_MODE=0
diff --git a/variants/seeed_xiao_s3/variant.h b/variants/esp32s3/seeed_xiao_s3/variant.h
similarity index 100%
rename from variants/seeed_xiao_s3/variant.h
rename to variants/esp32s3/seeed_xiao_s3/variant.h
diff --git a/variants/station-g2/pins_arduino.h b/variants/esp32s3/station-g2/pins_arduino.h
similarity index 100%
rename from variants/station-g2/pins_arduino.h
rename to variants/esp32s3/station-g2/pins_arduino.h
diff --git a/variants/station-g2/platformio.ini b/variants/esp32s3/station-g2/platformio.ini
similarity index 80%
rename from variants/station-g2/platformio.ini
rename to variants/esp32s3/station-g2/platformio.ini
index 4ddd28f1c..056d543d9 100755
--- a/variants/station-g2/platformio.ini
+++ b/variants/esp32s3/station-g2/platformio.ini
@@ -1,6 +1,7 @@
[env:station-g2]
extends = esp32s3_base
board = station-g2
+board_level = pr
board_check = true
board_build.partitions = default_16MB.csv
board_build.mcu = esp32s3
@@ -13,7 +14,9 @@ build_unflags =
${esp32s3_base.build_unflags}
-DARDUINO_USB_MODE=1
build_flags =
- ${esp32s3_base.build_flags} -D STATION_G2 -I variants/station-g2
+ ${esp32s3_base.build_flags}
+ -D STATION_G2
+ -I variants/esp32s3/station-g2
-DBOARD_HAS_PSRAM
-DSTATION_G2
-DARDUINO_USB_MODE=0
diff --git a/variants/station-g2/variant.h b/variants/esp32s3/station-g2/variant.h
similarity index 100%
rename from variants/station-g2/variant.h
rename to variants/esp32s3/station-g2/variant.h
diff --git a/variants/esp32s3/t-deck-pro/pins_arduino.h b/variants/esp32s3/t-deck-pro/pins_arduino.h
new file mode 100644
index 000000000..af0ba80b3
--- /dev/null
+++ b/variants/esp32s3/t-deck-pro/pins_arduino.h
@@ -0,0 +1,19 @@
+#ifndef Pins_Arduino_h
+#define Pins_Arduino_h
+
+#include
+
+#define USB_VID 0x303a
+#define USB_PID 0x1001
+
+// used for keyboard, touch controller, beam sensor, and gyroscope
+static const uint8_t SDA = 13;
+static const uint8_t SCL = 14;
+
+// Default SPI will be mapped to Radio
+static const uint8_t SS = 3;
+static const uint8_t MOSI = 33;
+static const uint8_t MISO = 47;
+static const uint8_t SCK = 36;
+
+#endif /* Pins_Arduino_h */
diff --git a/variants/esp32s3/t-deck-pro/platformio.ini b/variants/esp32s3/t-deck-pro/platformio.ini
new file mode 100644
index 000000000..45c3ae4ea
--- /dev/null
+++ b/variants/esp32s3/t-deck-pro/platformio.ini
@@ -0,0 +1,24 @@
+[env:t-deck-pro]
+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
+ -D T_DECK_PRO
+ -D GPS_POWER_TOGGLE
+ -D USE_EINK
+ -D EINK_DISPLAY_MODEL=GxEPD2_310_GDEQ031T10
+ -D EINK_WIDTH=240
+ -D EINK_HEIGHT=320
+ ;-D USE_EINK_DYNAMICDISPLAY ; Enable Dynamic EInk
+ -D EINK_LIMIT_FASTREFRESH=10 ; How many consecutive fast-refreshes are permitted
+ -D EINK_LIMIT_GHOSTING_PX=2000 ; (Optional) How much image ghosting is tolerated
+
+lib_deps =
+ ${esp32s3_base.lib_deps}
+ https://github.com/ZinggJM/GxEPD2/archive/refs/tags/1.6.4.zip
+ https://github.com/CIRCUITSTATE/CSE_Touch/archive/b44f23b6f870b848f1fbe453c190879bc6cfaafa.zip
+ https://github.com/CIRCUITSTATE/CSE_CST328/archive/refs/tags/v0.0.4.zip
+ https://github.com/mverch67/BQ27220/archive/07d92be846abd8a0258a50c23198dac0858b22ed.zip
diff --git a/variants/esp32s3/t-deck-pro/variant.h b/variants/esp32s3/t-deck-pro/variant.h
new file mode 100644
index 000000000..b08d3f65f
--- /dev/null
+++ b/variants/esp32s3/t-deck-pro/variant.h
@@ -0,0 +1,94 @@
+// Display (E-Ink)
+#define PIN_EINK_CS 34
+#define PIN_EINK_BUSY 37
+#define PIN_EINK_DC 35
+#define PIN_EINK_RES -1
+#define PIN_EINK_SCLK 36
+#define PIN_EINK_MOSI 47
+
+#define I2C_SDA SDA
+#define I2C_SCL SCL
+
+// CST328 touch screen (implementation in src/platform/extra_variants/t_deck_pro/variant.cpp)
+#define HAS_TOUCHSCREEN 1
+#define CST328_PIN_INT 12
+#define CST328_PIN_RST 45
+
+#define USE_POWERSAVE
+#define SLEEP_TIME 120
+
+// GNNS
+#define HAS_GPS 1
+#define GPS_BAUDRATE 38400
+#define PIN_GPS_EN 15
+#define GPS_EN_ACTIVE 1
+#define GPS_RX_PIN 44
+#define GPS_TX_PIN 43
+#define PIN_GPS_PPS 1
+
+#define BUTTON_PIN 0
+
+// vibration motor
+#define PIN_VIBRATION 2
+
+// Have SPI interface SD card slot
+#define HAS_SDCARD
+#define SDCARD_USE_SPI1
+#define SPI_MOSI (33)
+#define SPI_SCK (36)
+#define SPI_MISO (47)
+#define SPI_CS (48)
+#define SDCARD_CS SPI_CS
+#define SD_SPI_FREQUENCY 75000000U
+
+// TCA8418 keyboard
+#define KB_BL_PIN 42
+#define CANNED_MESSAGE_MODULE_ENABLE 1
+
+// microphone PCM5102A
+#define PCM5102A_SCK 47
+#define PCM5102A_DIN 17
+#define PCM5102A_LRCK 18
+
+// LTR_553ALS light sensor
+#define HAS_LTR553ALS
+
+// gyroscope BHI260AP
+#define BOARD_1V8_EN 38
+#define HAS_BHI260AP
+
+// battery charger BQ25896
+#define HAS_PPM 1
+#define XPOWERS_CHIP_BQ25896
+
+// battery quality management BQ27220
+#define HAS_BQ27220 1
+#define BQ27220_I2C_SDA SDA
+#define BQ27220_I2C_SCL SCL
+#define BQ27220_DESIGN_CAPACITY 1400
+
+// LoRa
+#define USE_SX1262
+#define USE_SX1268
+
+#define LORA_EN 46 // LoRa enable pin
+#define LORA_SCK 36
+#define LORA_MISO 47
+#define LORA_MOSI 33
+#define LORA_CS 3
+
+#define LORA_DIO0 -1 // a No connect on the SX1262 module
+#define LORA_RESET 4
+#define LORA_DIO1 5 // SX1262 IRQ
+#define LORA_DIO2 6 // SX1262 BUSY
+#define LORA_DIO3 // Not connected on PCB, but internally on the TTGO SX1262, if DIO3 is high the TXCO is enabled
+
+#define SX126X_CS LORA_CS // FIXME - we really should define LORA_CS instead
+#define SX126X_DIO1 LORA_DIO1
+#define SX126X_BUSY LORA_DIO2
+#define SX126X_RESET LORA_RESET
+// Not really an E22 but TTGO seems to be trying to clone that
+#define SX126X_DIO2_AS_RF_SWITCH
+#define SX126X_DIO3_TCXO_VOLTAGE 2.4
+// Internally the TTGO module hooks the SX1262-DIO2 in to control the TX/RX switch (which is the default for the sx1262interface
+// code)
diff --git a/variants/t-deck/pins_arduino.h b/variants/esp32s3/t-deck/pins_arduino.h
similarity index 100%
rename from variants/t-deck/pins_arduino.h
rename to variants/esp32s3/t-deck/pins_arduino.h
diff --git a/variants/t-deck/platformio.ini b/variants/esp32s3/t-deck/platformio.ini
similarity index 92%
rename from variants/t-deck/platformio.ini
rename to variants/esp32s3/t-deck/platformio.ini
index 6ee95b119..7c8070c3e 100644
--- a/variants/t-deck/platformio.ini
+++ b/variants/esp32s3/t-deck/platformio.ini
@@ -7,19 +7,19 @@ board_build.partitions = default_16MB.csv
upload_protocol = esptool
build_flags = ${esp32s3_base.build_flags}
- -DT_DECK
- -DBOARD_HAS_PSRAM
- -DGPS_POWER_TOGGLE
- -Ivariants/t-deck
+ -D T_DECK
+ -D BOARD_HAS_PSRAM
+ -D GPS_POWER_TOGGLE
+ -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
-
[env:t-deck-tft]
extends = env:t-deck
+board_level = pr
build_flags =
${env:t-deck.build_flags}
@@ -54,6 +54,7 @@ build_flags =
; -D CALIBRATE_TOUCH=0
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
+ -D DISPLAY_SIZE=320x240 ; landscape mode
-D LGFX_DRIVER=LGFX_TDECK
-D GFX_DRIVER_INC=\"graphics/LGFX/LGFX_T_DECK.h\"
; -D LVGL_DRIVER=LVGL_TDECK
diff --git a/variants/t-deck/variant.h b/variants/esp32s3/t-deck/variant.h
similarity index 99%
rename from variants/t-deck/variant.h
rename to variants/esp32s3/t-deck/variant.h
index 9fa0018ec..9b0de631a 100644
--- a/variants/t-deck/variant.h
+++ b/variants/esp32s3/t-deck/variant.h
@@ -68,6 +68,7 @@
#define TB_LEFT 1
#define TB_RIGHT 2
#define TB_PRESS 0 // BUTTON_PIN
+#define TB_DIRECTION FALLING
// microphone
#define ES7210_SCK 47
diff --git a/variants/t-eth-elite/pins_arduino.h b/variants/esp32s3/t-eth-elite/pins_arduino.h
similarity index 100%
rename from variants/t-eth-elite/pins_arduino.h
rename to variants/esp32s3/t-eth-elite/pins_arduino.h
diff --git a/variants/t-eth-elite/platformio.ini b/variants/esp32s3/t-eth-elite/platformio.ini
similarity index 85%
rename from variants/t-eth-elite/platformio.ini
rename to variants/esp32s3/t-eth-elite/platformio.ini
index d6f415f3d..6107185ce 100644
--- a/variants/t-eth-elite/platformio.ini
+++ b/variants/esp32s3/t-eth-elite/platformio.ini
@@ -1,12 +1,14 @@
[env:t-eth-elite]
extends = esp32s3_base
board = esp32s3box
+board_level = pr
board_check = true
board_build.partitions = default_16MB.csv
build_flags =
${esp32s3_base.build_flags}
-D T_ETH_ELITE
- -I variants/t-eth-elite
+ -D HAS_UDP_MULTICAST=1
+ -I variants/esp32s3/t-eth-elite
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
lib_ignore =
diff --git a/variants/t-eth-elite/rfswitch.h b/variants/esp32s3/t-eth-elite/rfswitch.h
similarity index 100%
rename from variants/t-eth-elite/rfswitch.h
rename to variants/esp32s3/t-eth-elite/rfswitch.h
diff --git a/variants/t-eth-elite/variant.h b/variants/esp32s3/t-eth-elite/variant.h
similarity index 100%
rename from variants/t-eth-elite/variant.h
rename to variants/esp32s3/t-eth-elite/variant.h
diff --git a/variants/t-watch-s3/pins_arduino.h b/variants/esp32s3/t-watch-s3/pins_arduino.h
similarity index 100%
rename from variants/t-watch-s3/pins_arduino.h
rename to variants/esp32s3/t-watch-s3/pins_arduino.h
diff --git a/variants/t-watch-s3/platformio.ini b/variants/esp32s3/t-watch-s3/platformio.ini
similarity index 93%
rename from variants/t-watch-s3/platformio.ini
rename to variants/esp32s3/t-watch-s3/platformio.ini
index f98237943..59ff8891d 100644
--- a/variants/t-watch-s3/platformio.ini
+++ b/variants/esp32s3/t-watch-s3/platformio.ini
@@ -8,7 +8,7 @@ upload_protocol = esptool
build_flags = ${esp32_base.build_flags}
-DT_WATCH_S3
- -Ivariants/t-watch-s3
+ -Ivariants/esp32s3/t-watch-s3
-DPCF8563_RTC=0x51
-DHAS_BMA423=1
diff --git a/variants/t-watch-s3/variant.h b/variants/esp32s3/t-watch-s3/variant.h
similarity index 100%
rename from variants/t-watch-s3/variant.h
rename to variants/esp32s3/t-watch-s3/variant.h
diff --git a/variants/tbeam-s3-core/pins_arduino.h b/variants/esp32s3/tbeam-s3-core/pins_arduino.h
similarity index 100%
rename from variants/tbeam-s3-core/pins_arduino.h
rename to variants/esp32s3/tbeam-s3-core/pins_arduino.h
diff --git a/variants/tbeam-s3-core/platformio.ini b/variants/esp32s3/tbeam-s3-core/platformio.ini
similarity index 71%
rename from variants/tbeam-s3-core/platformio.ini
rename to variants/esp32s3/tbeam-s3-core/platformio.ini
index a7bdf963f..fba8e4003 100644
--- a/variants/tbeam-s3-core/platformio.ini
+++ b/variants/esp32s3/tbeam-s3-core/platformio.ini
@@ -11,5 +11,5 @@ lib_deps =
build_flags =
${esp32s3_base.build_flags}
- -Ivariants/tbeam-s3-core
- -DPCF8563_RTC=0x51 ;Putting definitions in variant.h does not compile correctly
+ -I variants/esp32s3/tbeam-s3-core
+ -D PCF8563_RTC=0x51 ;Putting definitions in variant.h does not compile correctly
diff --git a/variants/tbeam-s3-core/variant.h b/variants/esp32s3/tbeam-s3-core/variant.h
similarity index 100%
rename from variants/tbeam-s3-core/variant.h
rename to variants/esp32s3/tbeam-s3-core/variant.h
diff --git a/variants/tlora_t3s3_epaper/nicheGraphics.h b/variants/esp32s3/tlora_t3s3_epaper/nicheGraphics.h
similarity index 96%
rename from variants/tlora_t3s3_epaper/nicheGraphics.h
rename to variants/esp32s3/tlora_t3s3_epaper/nicheGraphics.h
index 5184037e8..8f5e63653 100644
--- a/variants/tlora_t3s3_epaper/nicheGraphics.h
+++ b/variants/esp32s3/tlora_t3s3_epaper/nicheGraphics.h
@@ -51,7 +51,8 @@ void setupNicheGraphics()
inkhud->setDisplayResilience(15, 1.5);
// Select fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Customize default settings
diff --git a/variants/tlora_t3s3_epaper/pins_arduino.h b/variants/esp32s3/tlora_t3s3_epaper/pins_arduino.h
similarity index 100%
rename from variants/tlora_t3s3_epaper/pins_arduino.h
rename to variants/esp32s3/tlora_t3s3_epaper/pins_arduino.h
diff --git a/variants/tlora_t3s3_epaper/platformio.ini b/variants/esp32s3/tlora_t3s3_epaper/platformio.ini
similarity index 85%
rename from variants/tlora_t3s3_epaper/platformio.ini
rename to variants/esp32s3/tlora_t3s3_epaper/platformio.ini
index 0750b5bbb..71644ee77 100644
--- a/variants/tlora_t3s3_epaper/platformio.ini
+++ b/variants/esp32s3/tlora_t3s3_epaper/platformio.ini
@@ -5,7 +5,9 @@ board_check = true
upload_protocol = esptool
build_flags =
- ${esp32_base.build_flags} -D TLORA_T3S3_EPAPER -I variants/tlora_t3s3_epaper
+ ${esp32_base.build_flags}
+ -D TLORA_T3S3_EPAPER
+ -I variants/esp32s3/tlora_t3s3_epaper
-DGPS_POWER_TOGGLE
-DUSE_EINK
-DEINK_DISPLAY_MODEL=GxEPD2_213_BN
@@ -29,8 +31,8 @@ build_src_filter =
build_flags =
${esp32s3_base.build_flags}
${inkhud.build_flags}
- -I variants/tlora_t3s3_epaper
+ -I variants/esp32s3/tlora_t3s3_epaper
-D TLORA_T3S3_EPAPER
lib_deps =
${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
- ${esp32s3_base.lib_deps}
\ No newline at end of file
+ ${esp32s3_base.lib_deps}
diff --git a/variants/tlora_t3s3_epaper/variant.h b/variants/esp32s3/tlora_t3s3_epaper/variant.h
similarity index 100%
rename from variants/tlora_t3s3_epaper/variant.h
rename to variants/esp32s3/tlora_t3s3_epaper/variant.h
diff --git a/variants/tlora_t3s3_v1/pins_arduino.h b/variants/esp32s3/tlora_t3s3_v1/pins_arduino.h
similarity index 100%
rename from variants/tlora_t3s3_v1/pins_arduino.h
rename to variants/esp32s3/tlora_t3s3_v1/pins_arduino.h
diff --git a/variants/tlora_t3s3_v1/platformio.ini b/variants/esp32s3/tlora_t3s3_v1/platformio.ini
similarity index 58%
rename from variants/tlora_t3s3_v1/platformio.ini
rename to variants/esp32s3/tlora_t3s3_v1/platformio.ini
index 0a5797280..d9624f043 100644
--- a/variants/tlora_t3s3_v1/platformio.ini
+++ b/variants/esp32s3/tlora_t3s3_v1/platformio.ini
@@ -5,5 +5,5 @@ board_check = true
upload_protocol = esptool
build_flags =
- ${esp32_base.build_flags} -D TLORA_T3S3_V1 -I variants/tlora_t3s3_v1
- -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
\ No newline at end of file
+ ${esp32_base.build_flags} -D TLORA_T3S3_V1 -I variants/esp32s3/tlora_t3s3_v1
+ -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
diff --git a/variants/tlora_t3s3_v1/rfswitch.h b/variants/esp32s3/tlora_t3s3_v1/rfswitch.h
similarity index 100%
rename from variants/tlora_t3s3_v1/rfswitch.h
rename to variants/esp32s3/tlora_t3s3_v1/rfswitch.h
diff --git a/variants/tlora_t3s3_v1/variant.h b/variants/esp32s3/tlora_t3s3_v1/variant.h
similarity index 100%
rename from variants/tlora_t3s3_v1/variant.h
rename to variants/esp32s3/tlora_t3s3_v1/variant.h
diff --git a/variants/tracksenger/internal/pins_arduino.h b/variants/esp32s3/tracksenger/internal/pins_arduino.h
similarity index 100%
rename from variants/tracksenger/internal/pins_arduino.h
rename to variants/esp32s3/tracksenger/internal/pins_arduino.h
diff --git a/variants/tracksenger/internal/variant.h b/variants/esp32s3/tracksenger/internal/variant.h
similarity index 98%
rename from variants/tracksenger/internal/variant.h
rename to variants/esp32s3/tracksenger/internal/variant.h
index 57ead848d..6f75ad0e2 100644
--- a/variants/tracksenger/internal/variant.h
+++ b/variants/esp32s3/tracksenger/internal/variant.h
@@ -72,7 +72,7 @@
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
// Picomputer gets a white on black display
-#define TFT_MESH COLOR565(0xFF, 0xFF, 0xFF)
+#define TFT_MESH_OVERRIDE COLOR565(255, 255, 255)
// keyboard changes
diff --git a/variants/tracksenger/lcd/pins_arduino.h b/variants/esp32s3/tracksenger/lcd/pins_arduino.h
similarity index 100%
rename from variants/tracksenger/lcd/pins_arduino.h
rename to variants/esp32s3/tracksenger/lcd/pins_arduino.h
diff --git a/variants/tracksenger/lcd/variant.h b/variants/esp32s3/tracksenger/lcd/variant.h
similarity index 98%
rename from variants/tracksenger/lcd/variant.h
rename to variants/esp32s3/tracksenger/lcd/variant.h
index ecf4e854e..843bf3924 100644
--- a/variants/tracksenger/lcd/variant.h
+++ b/variants/esp32s3/tracksenger/lcd/variant.h
@@ -96,7 +96,7 @@
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
// Picomputer gets a white on black display
-#define TFT_MESH COLOR565(0xFF, 0xFF, 0xFF)
+#define TFT_MESH_OVERRIDE COLOR565(255, 255, 255)
// keyboard changes
diff --git a/variants/tracksenger/oled/pins_arduino.h b/variants/esp32s3/tracksenger/oled/pins_arduino.h
similarity index 100%
rename from variants/tracksenger/oled/pins_arduino.h
rename to variants/esp32s3/tracksenger/oled/pins_arduino.h
diff --git a/variants/tracksenger/oled/variant.h b/variants/esp32s3/tracksenger/oled/variant.h
similarity index 98%
rename from variants/tracksenger/oled/variant.h
rename to variants/esp32s3/tracksenger/oled/variant.h
index 70f0f3209..85cc019c4 100644
--- a/variants/tracksenger/oled/variant.h
+++ b/variants/esp32s3/tracksenger/oled/variant.h
@@ -74,7 +74,7 @@
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
// Picomputer gets a white on black display
-#define TFT_MESH COLOR565(0xFF, 0xFF, 0xFF)
+#define TFT_MESH_OVERRIDE COLOR565(255, 255, 255)
// keyboard changes
diff --git a/variants/tracksenger/platformio.ini b/variants/esp32s3/tracksenger/platformio.ini
similarity index 85%
rename from variants/tracksenger/platformio.ini
rename to variants/esp32s3/tracksenger/platformio.ini
index b36b9c45a..0e9f08541 100644
--- a/variants/tracksenger/platformio.ini
+++ b/variants/esp32s3/tracksenger/platformio.ini
@@ -5,7 +5,8 @@ board_build.partitions = default_8MB.csv
upload_protocol = esp-builtin
build_flags =
- ${esp32s3_base.build_flags} -I variants/tracksenger/internal
+ ${esp32s3_base.build_flags}
+ -I variants/esp32s3/tracksenger/internal
-D HELTEC_TRACKER_V1_1
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
@@ -21,7 +22,8 @@ board_build.partitions = default_8MB.csv
upload_protocol = esp-builtin
build_flags =
- ${esp32s3_base.build_flags} -I variants/tracksenger/lcd
+ ${esp32s3_base.build_flags}
+ -I variants/esp32s3/tracksenger/lcd
-D HELTEC_TRACKER_V1_1
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
@@ -37,7 +39,8 @@ board_build.partitions = default_8MB.csv
upload_protocol = esp-builtin
build_flags =
- ${esp32s3_base.build_flags} -I variants/tracksenger/oled
+ ${esp32s3_base.build_flags}
+ -I variants/esp32s3/tracksenger/oled
-D HELTEC_TRACKER_V1_1
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
diff --git a/variants/unphone/pins_arduino.h b/variants/esp32s3/unphone/pins_arduino.h
similarity index 100%
rename from variants/unphone/pins_arduino.h
rename to variants/esp32s3/unphone/pins_arduino.h
diff --git a/variants/unphone/platformio.ini b/variants/esp32s3/unphone/platformio.ini
similarity index 93%
rename from variants/unphone/platformio.ini
rename to variants/esp32s3/unphone/platformio.ini
index f286c3d4c..ecb1cbd67 100644
--- a/variants/unphone/platformio.ini
+++ b/variants/esp32s3/unphone/platformio.ini
@@ -11,7 +11,7 @@ monitor_filters = esp32_exception_decoder
build_flags =
${esp32s3_base.build_flags}
-D UNPHONE
- -I variants/unphone
+ -I variants/esp32s3/unphone
-D ARDUINO_USB_MODE=0
-D UNPHONE_ACCEL=0
-D UNPHONE_TOUCHS=0
@@ -23,7 +23,7 @@ build_flags =
build_src_filter =
${esp32s3_base.build_src_filter}
- +<../variants/unphone>
+ +<../variants/esp32s3/unphone>
lib_deps = ${esp32s3_base.lib_deps}
lovyan03/LovyanGFX@ 1.2.0
@@ -56,6 +56,7 @@ build_flags =
-D LOG_DEBUG_INC=\"DebugConfiguration.h\"
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
+ -D DISPLAY_SIZE=320x480 ; portrait mode
-D LGFX_DRIVER=LGFX_UNPHONE_V9
-D GFX_DRIVER_INC=\"graphics/LGFX/LGFX_UNPHONE.h\"
-D VIEW_320x240
diff --git a/variants/unphone/variant.cpp b/variants/esp32s3/unphone/variant.cpp
similarity index 100%
rename from variants/unphone/variant.cpp
rename to variants/esp32s3/unphone/variant.cpp
diff --git a/variants/unphone/variant.h b/variants/esp32s3/unphone/variant.h
similarity index 100%
rename from variants/unphone/variant.h
rename to variants/esp32s3/unphone/variant.h
diff --git a/variants/portduino-buildroot/platformio.ini b/variants/native/portduino-buildroot/platformio.ini
similarity index 75%
rename from variants/portduino-buildroot/platformio.ini
rename to variants/native/portduino-buildroot/platformio.ini
index 3fbd26910..d1bd39e10 100644
--- a/variants/portduino-buildroot/platformio.ini
+++ b/variants/native/portduino-buildroot/platformio.ini
@@ -2,7 +2,7 @@
extends = portduino_base
; Optional libraries should be appended to `PLATFORMIO_BUILD_FLAGS`
; environment variable in the buildroot environment.
-build_flags = ${portduino_base.build_flags} -O0 -I variants/portduino-buildroot
+build_flags = ${portduino_base.build_flags} -O0 -I variants/native/portduino-buildroot
board = buildroot
lib_deps = ${portduino_base.lib_deps}
build_src_filter = ${portduino_base.build_src_filter}
\ No newline at end of file
diff --git a/variants/portduino-buildroot/variant.h b/variants/native/portduino-buildroot/variant.h
similarity index 100%
rename from variants/portduino-buildroot/variant.h
rename to variants/native/portduino-buildroot/variant.h
diff --git a/variants/portduino/platformio.ini b/variants/native/portduino/platformio.ini
similarity index 97%
rename from variants/portduino/platformio.ini
rename to variants/native/portduino/platformio.ini
index 5293b12b9..732b2a1d4 100644
--- a/variants/portduino/platformio.ini
+++ b/variants/native/portduino/platformio.ini
@@ -1,6 +1,6 @@
[native_base]
extends = portduino_base
-build_flags = ${portduino_base.build_flags} -I variants/portduino
+build_flags = ${portduino_base.build_flags} -I variants/native/portduino
-D ARCH_PORTDUINO
-I /usr/include
board = cross_platform
diff --git a/variants/portduino/variant.h b/variants/native/portduino/variant.h
similarity index 100%
rename from variants/portduino/variant.h
rename to variants/native/portduino/variant.h
diff --git a/variants/Dongle_nRF52840-pca10059-v1/platformio.ini b/variants/nrf52840/Dongle_nRF52840-pca10059-v1/platformio.ini
similarity index 67%
rename from variants/Dongle_nRF52840-pca10059-v1/platformio.ini
rename to variants/nrf52840/Dongle_nRF52840-pca10059-v1/platformio.ini
index ad944779d..83044c206 100644
--- a/variants/Dongle_nRF52840-pca10059-v1/platformio.ini
+++ b/variants/nrf52840/Dongle_nRF52840-pca10059-v1/platformio.ini
@@ -2,11 +2,13 @@
board_level = extra
extends = nrf52840_base
board = nordic_pca10059
-build_flags = ${nrf52840_base.build_flags} -Ivariants/Dongle_nRF52840-pca10059-v1 -D NORDIC_PCA10059
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/Dongle_nRF52840-pca10059-v1
+ -D NORDIC_PCA10059
-DEINK_DISPLAY_MODEL=GxEPD2_420_M01
-DEINK_WIDTH=300
-DEINK_HEIGHT=400
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/Dongle_nRF52840-pca10059-v1>
+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
diff --git a/variants/Dongle_nRF52840-pca10059-v1/variant.cpp b/variants/nrf52840/Dongle_nRF52840-pca10059-v1/variant.cpp
similarity index 100%
rename from variants/Dongle_nRF52840-pca10059-v1/variant.cpp
rename to variants/nrf52840/Dongle_nRF52840-pca10059-v1/variant.cpp
diff --git a/variants/Dongle_nRF52840-pca10059-v1/variant.h b/variants/nrf52840/Dongle_nRF52840-pca10059-v1/variant.h
similarity index 100%
rename from variants/Dongle_nRF52840-pca10059-v1/variant.h
rename to variants/nrf52840/Dongle_nRF52840-pca10059-v1/variant.h
diff --git a/variants/ELECROW-ThinkNode-M1/nicheGraphics.h b/variants/nrf52840/ELECROW-ThinkNode-M1/nicheGraphics.h
similarity index 97%
rename from variants/ELECROW-ThinkNode-M1/nicheGraphics.h
rename to variants/nrf52840/ELECROW-ThinkNode-M1/nicheGraphics.h
index f3b709261..f64de9d07 100644
--- a/variants/ELECROW-ThinkNode-M1/nicheGraphics.h
+++ b/variants/nrf52840/ELECROW-ThinkNode-M1/nicheGraphics.h
@@ -56,7 +56,8 @@ void setupNicheGraphics()
inkhud->setDisplayResilience(10, 1.5);
// Select fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Customize default settings
@@ -103,11 +104,11 @@ void setupNicheGraphics()
buttons->setHandlerDown(1, [backlight]() { backlight->peek(); });
buttons->setHandlerLongPress(1, [backlight]() {
backlight->latch();
- playBeep();
+ playBoop();
});
buttons->setHandlerShortPress(1, [backlight]() {
backlight->off();
- playBoop();
+ playChirp();
});
// Begin handling button events
diff --git a/variants/ELECROW-ThinkNode-M1/platformio.ini b/variants/nrf52840/ELECROW-ThinkNode-M1/platformio.ini
similarity index 88%
rename from variants/ELECROW-ThinkNode-M1/platformio.ini
rename to variants/nrf52840/ELECROW-ThinkNode-M1/platformio.ini
index 2e9a20dfe..0578bcfe8 100644
--- a/variants/ELECROW-ThinkNode-M1/platformio.ini
+++ b/variants/nrf52840/ELECROW-ThinkNode-M1/platformio.ini
@@ -6,7 +6,8 @@ board_check = true
debug_tool = jlink
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
-build_flags = ${nrf52840_base.build_flags} -Ivariants/ELECROW-ThinkNode-M1
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/ELECROW-ThinkNode-M1
-DELECROW_ThinkNode_M1
-DGPS_POWER_TOGGLE
-DUSE_EINK
@@ -20,7 +21,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/ELECROW-ThinkNode-M1
; -DEINK_LIMIT_GHOSTING_PX=2000 ; (Optional) How much image ghosting is tolerated
-DEINK_BACKGROUND_USES_FAST ; (Optional) Use FAST refresh for both BACKGROUND and RESPONSIVE, until a limit is reached.
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/ELECROW-ThinkNode-M1>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/ELECROW-ThinkNode-M1>
lib_deps =
${nrf52840_base.lib_deps}
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip
@@ -36,11 +37,12 @@ debug_tool = jlink
build_flags =
${nrf52840_base.build_flags}
${inkhud.build_flags}
- -I variants/ELECROW-ThinkNode-M1
+ -I variants/nrf52840/ELECROW-ThinkNode-M1
-D ELECROW_ThinkNode_M1
build_src_filter =
${nrf52_base.build_src_filter}
${inkhud.build_src_filter}
+ +<../variants/nrf52840/ELECROW-ThinkNode-M1>
lib_deps =
${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
${nrf52840_base.lib_deps}
diff --git a/variants/ELECROW-ThinkNode-M1/variant.cpp b/variants/nrf52840/ELECROW-ThinkNode-M1/variant.cpp
similarity index 100%
rename from variants/ELECROW-ThinkNode-M1/variant.cpp
rename to variants/nrf52840/ELECROW-ThinkNode-M1/variant.cpp
diff --git a/variants/ELECROW-ThinkNode-M1/variant.h b/variants/nrf52840/ELECROW-ThinkNode-M1/variant.h
similarity index 100%
rename from variants/ELECROW-ThinkNode-M1/variant.h
rename to variants/nrf52840/ELECROW-ThinkNode-M1/variant.h
diff --git a/variants/ME25LS01-4Y10TD/platformio.ini b/variants/nrf52840/ME25LS01-4Y10TD/platformio.ini
similarity index 76%
rename from variants/ME25LS01-4Y10TD/platformio.ini
rename to variants/nrf52840/ME25LS01-4Y10TD/platformio.ini
index b452f0ad8..89a45694c 100644
--- a/variants/ME25LS01-4Y10TD/platformio.ini
+++ b/variants/nrf52840/ME25LS01-4Y10TD/platformio.ini
@@ -3,10 +3,14 @@ extends = nrf52840_base
board = me25ls01-4y10td
board_level = extra
; platform = https://github.com/maxgerhardt/platform-nordicnrf52#cac6fcf943a41accd2aeb4f3659ae297a73f422e
-build_flags = ${nrf52840_base.build_flags} -Ivariants/ME25LS01-4Y10TD -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DME25LS01_4Y10TD
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/ME25LS01-4Y10TD
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
+ -DME25LS01_4Y10TD
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/ME25LS01-4Y10TD>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/ME25LS01-4Y10TD>
lib_deps =
${nrf52840_base.lib_deps}
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
diff --git a/variants/ME25LS01-4Y10TD/rfswitch.h b/variants/nrf52840/ME25LS01-4Y10TD/rfswitch.h
similarity index 100%
rename from variants/ME25LS01-4Y10TD/rfswitch.h
rename to variants/nrf52840/ME25LS01-4Y10TD/rfswitch.h
diff --git a/variants/ME25LS01-4Y10TD/variant.cpp b/variants/nrf52840/ME25LS01-4Y10TD/variant.cpp
similarity index 100%
rename from variants/ME25LS01-4Y10TD/variant.cpp
rename to variants/nrf52840/ME25LS01-4Y10TD/variant.cpp
diff --git a/variants/ME25LS01-4Y10TD/variant.h b/variants/nrf52840/ME25LS01-4Y10TD/variant.h
similarity index 100%
rename from variants/ME25LS01-4Y10TD/variant.h
rename to variants/nrf52840/ME25LS01-4Y10TD/variant.h
diff --git a/variants/ME25LS01-4Y10TD_e-ink/platformio.ini b/variants/nrf52840/ME25LS01-4Y10TD_e-ink/platformio.ini
similarity index 78%
rename from variants/ME25LS01-4Y10TD_e-ink/platformio.ini
rename to variants/nrf52840/ME25LS01-4Y10TD_e-ink/platformio.ini
index f9788a521..ad5867bd5 100644
--- a/variants/ME25LS01-4Y10TD_e-ink/platformio.ini
+++ b/variants/nrf52840/ME25LS01-4Y10TD_e-ink/platformio.ini
@@ -3,13 +3,17 @@ extends = nrf52840_base
board = me25ls01-4y10td
board_level = extra
; platform = https://github.com/maxgerhardt/platform-nordicnrf52#cac6fcf943a41accd2aeb4f3659ae297a73f422e
-build_flags = ${nrf52840_base.build_flags} -Ivariants/ME25LS01-4Y10TD_e-ink -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DME25LS01_4Y10TD
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/ME25LS01-4Y10TD_e-ink
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
+ -DME25LS01_4Y10TD
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-DEINK_DISPLAY_MODEL=GxEPD2_420_GDEY042T81
-DEINK_WIDTH=400
-DEINK_HEIGHT=300
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/ME25LS01-4Y10TD_e-ink>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/ME25LS01-4Y10TD_e-ink>
lib_deps =
${nrf52840_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
diff --git a/variants/ME25LS01-4Y10TD_e-ink/rfswitch.h b/variants/nrf52840/ME25LS01-4Y10TD_e-ink/rfswitch.h
similarity index 100%
rename from variants/ME25LS01-4Y10TD_e-ink/rfswitch.h
rename to variants/nrf52840/ME25LS01-4Y10TD_e-ink/rfswitch.h
diff --git a/variants/ME25LS01-4Y10TD_e-ink/variant.cpp b/variants/nrf52840/ME25LS01-4Y10TD_e-ink/variant.cpp
similarity index 100%
rename from variants/ME25LS01-4Y10TD_e-ink/variant.cpp
rename to variants/nrf52840/ME25LS01-4Y10TD_e-ink/variant.cpp
diff --git a/variants/ME25LS01-4Y10TD_e-ink/variant.h b/variants/nrf52840/ME25LS01-4Y10TD_e-ink/variant.h
similarity index 100%
rename from variants/ME25LS01-4Y10TD_e-ink/variant.h
rename to variants/nrf52840/ME25LS01-4Y10TD_e-ink/variant.h
diff --git a/variants/MS24SF1/platformio.ini b/variants/nrf52840/MS24SF1/platformio.ini
similarity index 79%
rename from variants/MS24SF1/platformio.ini
rename to variants/nrf52840/MS24SF1/platformio.ini
index 10e8d2c95..f162cbd60 100644
--- a/variants/MS24SF1/platformio.ini
+++ b/variants/nrf52840/MS24SF1/platformio.ini
@@ -3,10 +3,13 @@ extends = nrf52840_base
board = ms24sf1
board_level = extra
; platform = https://github.com/maxgerhardt/platform-nordicnrf52#cac6fcf943a41accd2aeb4f3659ae297a73f422e
-build_flags = ${nrf52840_base.build_flags} -Ivariants/MS24SF1 -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/MS24SF1
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/MS24SF1>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/MS24SF1>
lib_deps =
${nrf52840_base.lib_deps}
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
diff --git a/variants/MS24SF1/variant.cpp b/variants/nrf52840/MS24SF1/variant.cpp
similarity index 100%
rename from variants/MS24SF1/variant.cpp
rename to variants/nrf52840/MS24SF1/variant.cpp
diff --git a/variants/MS24SF1/variant.h b/variants/nrf52840/MS24SF1/variant.h
similarity index 100%
rename from variants/MS24SF1/variant.h
rename to variants/nrf52840/MS24SF1/variant.h
diff --git a/variants/MakePython_nRF52840_eink/platformio.ini b/variants/nrf52840/MakePython_nRF52840_eink/platformio.ini
similarity index 77%
rename from variants/MakePython_nRF52840_eink/platformio.ini
rename to variants/nrf52840/MakePython_nRF52840_eink/platformio.ini
index ef97172e9..50e5495f0 100644
--- a/variants/MakePython_nRF52840_eink/platformio.ini
+++ b/variants/nrf52840/MakePython_nRF52840_eink/platformio.ini
@@ -2,12 +2,14 @@
board_level = extra
extends = nrf52840_base
board = nordic_pca10059
-build_flags = ${nrf52840_base.build_flags} -Ivariants/MakePython_nRF52840_eink -D PRIVATE_HW
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/MakePython_nRF52840_eink
+ -D PRIVATE_HW
-D PIN_EINK_EN
-DEINK_DISPLAY_MODEL=GxEPD2_290_T5D
-DEINK_WIDTH=296
-DEINK_HEIGHT=128
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/MakePython_nRF52840_eink>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/MakePython_nRF52840_eink>
lib_deps =
${nrf52840_base.lib_deps}
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
diff --git a/variants/MakePython_nRF52840_eink/variant.cpp b/variants/nrf52840/MakePython_nRF52840_eink/variant.cpp
similarity index 100%
rename from variants/MakePython_nRF52840_eink/variant.cpp
rename to variants/nrf52840/MakePython_nRF52840_eink/variant.cpp
diff --git a/variants/MakePython_nRF52840_eink/variant.h b/variants/nrf52840/MakePython_nRF52840_eink/variant.h
similarity index 100%
rename from variants/MakePython_nRF52840_eink/variant.h
rename to variants/nrf52840/MakePython_nRF52840_eink/variant.h
diff --git a/variants/MakePython_nRF52840_oled/platformio.ini b/variants/nrf52840/MakePython_nRF52840_oled/platformio.ini
similarity index 69%
rename from variants/MakePython_nRF52840_oled/platformio.ini
rename to variants/nrf52840/MakePython_nRF52840_oled/platformio.ini
index 57b9ecb79..c7418e53c 100644
--- a/variants/MakePython_nRF52840_oled/platformio.ini
+++ b/variants/nrf52840/MakePython_nRF52840_oled/platformio.ini
@@ -2,8 +2,10 @@
board_level = extra
extends = nrf52840_base
board = nordic_pca10059
-build_flags = ${nrf52840_base.build_flags} -Ivariants/MakePython_nRF52840_oled -D PRIVATE_HW
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/MakePython_nRF52840_oled>
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/MakePython_nRF52840_oled
+ -D PRIVATE_HW
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/MakePython_nRF52840_oled>
lib_deps =
${nrf52840_base.lib_deps}
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
diff --git a/variants/MakePython_nRF52840_oled/variant.cpp b/variants/nrf52840/MakePython_nRF52840_oled/variant.cpp
similarity index 100%
rename from variants/MakePython_nRF52840_oled/variant.cpp
rename to variants/nrf52840/MakePython_nRF52840_oled/variant.cpp
diff --git a/variants/MakePython_nRF52840_oled/variant.h b/variants/nrf52840/MakePython_nRF52840_oled/variant.h
similarity index 100%
rename from variants/MakePython_nRF52840_oled/variant.h
rename to variants/nrf52840/MakePython_nRF52840_oled/variant.h
diff --git a/variants/TWC_mesh_v4/platformio.ini b/variants/nrf52840/TWC_mesh_v4/platformio.ini
similarity index 59%
rename from variants/TWC_mesh_v4/platformio.ini
rename to variants/nrf52840/TWC_mesh_v4/platformio.ini
index 2eb58bf9f..77aeee26e 100644
--- a/variants/TWC_mesh_v4/platformio.ini
+++ b/variants/nrf52840/TWC_mesh_v4/platformio.ini
@@ -2,8 +2,10 @@
extends = nrf52840_base
board = nordic_pca10059
board_level = extra
-build_flags = ${nrf52840_base.build_flags} -I variants/TWC_mesh_v4 -D TWC_mesh_v4 -L".pio\libdeps\TWC_mesh_v4\bsec2\src\cortex-m4\fpv4-sp-d16-hard"
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/TWC_mesh_v4>
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/TWC_mesh_v4
+ -D TWC_mesh_v4
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/TWC_mesh_v4>
lib_deps =
${nrf52840_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
diff --git a/variants/TWC_mesh_v4/variant.cpp b/variants/nrf52840/TWC_mesh_v4/variant.cpp
similarity index 100%
rename from variants/TWC_mesh_v4/variant.cpp
rename to variants/nrf52840/TWC_mesh_v4/variant.cpp
diff --git a/variants/TWC_mesh_v4/variant.h b/variants/nrf52840/TWC_mesh_v4/variant.h
similarity index 100%
rename from variants/TWC_mesh_v4/variant.h
rename to variants/nrf52840/TWC_mesh_v4/variant.h
diff --git a/variants/canaryone/platformio.ini b/variants/nrf52840/canaryone/platformio.ini
similarity index 78%
rename from variants/canaryone/platformio.ini
rename to variants/nrf52840/canaryone/platformio.ini
index ad11305db..251937e9c 100644
--- a/variants/canaryone/platformio.ini
+++ b/variants/nrf52840/canaryone/platformio.ini
@@ -5,8 +5,10 @@ board = canaryone
debug_tool = jlink
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
-build_flags = ${nrf52840_base.build_flags} -Ivariants/canaryone
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/canaryone>
+build_flags =
+ ${nrf52840_base.build_flags}
+ -I variants/nrf52840/canaryone
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/canaryone>
lib_deps =
${nrf52840_base.lib_deps}
lewisxhe/PCF8563_Library@^1.0.1
diff --git a/variants/canaryone/variant.cpp b/variants/nrf52840/canaryone/variant.cpp
similarity index 100%
rename from variants/canaryone/variant.cpp
rename to variants/nrf52840/canaryone/variant.cpp
diff --git a/variants/canaryone/variant.h b/variants/nrf52840/canaryone/variant.h
similarity index 100%
rename from variants/canaryone/variant.h
rename to variants/nrf52840/canaryone/variant.h
diff --git a/variants/nrf52840/diy/WashTastic/platformio.ini b/variants/nrf52840/diy/WashTastic/platformio.ini
new file mode 100644
index 000000000..881b961e1
--- /dev/null
+++ b/variants/nrf52840/diy/WashTastic/platformio.ini
@@ -0,0 +1,13 @@
+; Promicro + E22900M30S
+[env:WashTastic]
+extends = nrf52840_base
+board = promicro-nrf52840
+board_level = extra
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/diy/nrf52_promicro_diy_tcxo
+ -D PRIVATE_HW
+ -D EBYTE_E22_900M30S
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/diy/nrf52_promicro_diy_tcxo>
+lib_deps =
+ ${nrf52840_base.lib_deps}
+debug_tool = jlink
diff --git a/variants/diy/nrf52_promicro_diy_tcxo/E80_RSSI_per_case.webp b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/E80_RSSI_per_case.webp
similarity index 100%
rename from variants/diy/nrf52_promicro_diy_tcxo/E80_RSSI_per_case.webp
rename to variants/nrf52840/diy/nrf52_promicro_diy_tcxo/E80_RSSI_per_case.webp
diff --git a/variants/diy/nrf52_promicro_diy_tcxo/Schematic_Pro-Micro_Pinouts 2024-12-14.pdf b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/Schematic_Pro-Micro_Pinouts 2024-12-14.pdf
similarity index 100%
rename from variants/diy/nrf52_promicro_diy_tcxo/Schematic_Pro-Micro_Pinouts 2024-12-14.pdf
rename to variants/nrf52840/diy/nrf52_promicro_diy_tcxo/Schematic_Pro-Micro_Pinouts 2024-12-14.pdf
diff --git a/variants/diy/nrf52_promicro_diy_tcxo/custom_build_tasks.py b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/custom_build_tasks.py
similarity index 100%
rename from variants/diy/nrf52_promicro_diy_tcxo/custom_build_tasks.py
rename to variants/nrf52840/diy/nrf52_promicro_diy_tcxo/custom_build_tasks.py
diff --git a/variants/diy/nrf52_promicro_diy_tcxo/nicheGraphics.h b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/nicheGraphics.h
similarity index 96%
rename from variants/diy/nrf52_promicro_diy_tcxo/nicheGraphics.h
rename to variants/nrf52840/diy/nrf52_promicro_diy_tcxo/nicheGraphics.h
index bbd530595..8f30a244f 100644
--- a/variants/diy/nrf52_promicro_diy_tcxo/nicheGraphics.h
+++ b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/nicheGraphics.h
@@ -55,8 +55,9 @@ void setupNicheGraphics()
// Set how many FAST updates per FULL update.
inkhud->setDisplayResilience(INKHUD_BUILDCONF_DISPLAYRESILIENCE); // Suggest roughly ten
- // Prepare fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ // Select fonts
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Init settings, and customize defaults
diff --git a/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/platformio.ini b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/platformio.ini
new file mode 100644
index 000000000..61a6eda07
--- /dev/null
+++ b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/platformio.ini
@@ -0,0 +1,32 @@
+; Promicro + E22(0)-xxxM / HT-RA62 modules board variant - DIY - with TCXO
+[env:nrf52_promicro_diy_tcxo]
+extends = nrf52840_base
+board = promicro-nrf52840
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/diy/nrf52_promicro_diy_tcxo
+ -D NRF52_PROMICRO_DIY
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/diy/nrf52_promicro_diy_tcxo>
+lib_deps =
+ ${nrf52840_base.lib_deps}
+debug_tool = jlink
+
+; NRF52 ProMicro w/ E-Ink display
+[env:nrf52_promicro_diy-inkhud]
+board_level = extra
+extends = nrf52840_base, inkhud
+board = promicro-nrf52840
+build_flags =
+ ${nrf52840_base.build_flags}
+ ${inkhud.build_flags}
+ -I variants/nrf52840/diy/nrf52_promicro_diy_tcxo
+ -D NRF52_PROMICRO_DIY
+build_src_filter =
+ ${nrf52_base.build_src_filter}
+ ${inkhud.build_src_filter}
+ +<../variants/nrf52840/diy/nrf52_promicro_diy_tcxo>
+lib_deps =
+ ${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
+ ${nrf52840_base.lib_deps}
+extra_scripts =
+ ${env.extra_scripts}
+ variants/nrf52840/diy/nrf52_promicro_diy_tcxo/custom_build_tasks.py ; Add to PIO's Project Tasks pane: preset builds for common displays
diff --git a/variants/diy/nrf52_promicro_diy_tcxo/readme.md b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/readme.md
similarity index 99%
rename from variants/diy/nrf52_promicro_diy_tcxo/readme.md
rename to variants/nrf52840/diy/nrf52_promicro_diy_tcxo/readme.md
index 585ac36de..5a78103ee 100644
--- a/variants/diy/nrf52_promicro_diy_tcxo/readme.md
+++ b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/readme.md
@@ -1,3 +1,5 @@
+
+
# Notes
## General
diff --git a/variants/diy/nrf52_promicro_diy_tcxo/rfswitch.h b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/rfswitch.h
similarity index 100%
rename from variants/diy/nrf52_promicro_diy_tcxo/rfswitch.h
rename to variants/nrf52840/diy/nrf52_promicro_diy_tcxo/rfswitch.h
diff --git a/variants/diy/nrf52_promicro_diy_tcxo/variant.cpp b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/variant.cpp
similarity index 100%
rename from variants/diy/nrf52_promicro_diy_tcxo/variant.cpp
rename to variants/nrf52840/diy/nrf52_promicro_diy_tcxo/variant.cpp
diff --git a/variants/diy/nrf52_promicro_diy_tcxo/variant.h b/variants/nrf52840/diy/nrf52_promicro_diy_tcxo/variant.h
similarity index 100%
rename from variants/diy/nrf52_promicro_diy_tcxo/variant.h
rename to variants/nrf52840/diy/nrf52_promicro_diy_tcxo/variant.h
diff --git a/variants/nrf52840/diy/nrf52_promicro_diy_xtal/platformio.ini b/variants/nrf52840/diy/nrf52_promicro_diy_xtal/platformio.ini
new file mode 100644
index 000000000..278f578c5
--- /dev/null
+++ b/variants/nrf52840/diy/nrf52_promicro_diy_xtal/platformio.ini
@@ -0,0 +1,12 @@
+; Promicro + E22(0)-xxxMM / RA-01SH modules board variant - DIY - without TCXO
+[env:nrf52_promicro_diy_xtal]
+extends = nrf52840_base
+board = promicro-nrf52840
+board_level = extra
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/diy/nrf52_promicro_diy_xtal
+ -D NRF52_PROMICRO_DIY
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/diy/nrf52_promicro_diy_xtal>
+lib_deps =
+ ${nrf52840_base.lib_deps}
+debug_tool = jlink
diff --git a/variants/diy/nrf52_promicro_diy_xtal/variant.cpp b/variants/nrf52840/diy/nrf52_promicro_diy_xtal/variant.cpp
similarity index 100%
rename from variants/diy/nrf52_promicro_diy_xtal/variant.cpp
rename to variants/nrf52840/diy/nrf52_promicro_diy_xtal/variant.cpp
diff --git a/variants/diy/nrf52_promicro_diy_xtal/variant.h b/variants/nrf52840/diy/nrf52_promicro_diy_xtal/variant.h
similarity index 100%
rename from variants/diy/nrf52_promicro_diy_xtal/variant.h
rename to variants/nrf52840/diy/nrf52_promicro_diy_xtal/variant.h
diff --git a/variants/diy/seeed-xiao-nrf52840-wio-sx1262/README.md b/variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/README.md
similarity index 100%
rename from variants/diy/seeed-xiao-nrf52840-wio-sx1262/README.md
rename to variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/README.md
diff --git a/variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/platformio.ini b/variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/platformio.ini
new file mode 100644
index 000000000..2df31d23c
--- /dev/null
+++ b/variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/platformio.ini
@@ -0,0 +1,15 @@
+; Seeed XIAO nRF52840 + XIAO Wio SX1262 DIY
+[env:seeed-xiao-nrf52840-wio-sx1262]
+board = xiao_ble_sense
+extends = nrf52840_base
+board_level = extra
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262
+ -D PRIVATE_HW
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
+board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262>
+lib_deps =
+ ${nrf52840_base.lib_deps}
+debug_tool = jlink
diff --git a/variants/diy/seeed-xiao-nrf52840-wio-sx1262/variant.cpp b/variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/variant.cpp
similarity index 100%
rename from variants/diy/seeed-xiao-nrf52840-wio-sx1262/variant.cpp
rename to variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/variant.cpp
diff --git a/variants/diy/seeed-xiao-nrf52840-wio-sx1262/variant.h b/variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/variant.h
similarity index 100%
rename from variants/diy/seeed-xiao-nrf52840-wio-sx1262/variant.h
rename to variants/nrf52840/diy/seeed-xiao-nrf52840-wio-sx1262/variant.h
diff --git a/variants/nrf52840/diy/seeed_xiao_nrf52840_e22/platformio.ini b/variants/nrf52840/diy/seeed_xiao_nrf52840_e22/platformio.ini
new file mode 100644
index 000000000..a5d0aaf8f
--- /dev/null
+++ b/variants/nrf52840/diy/seeed_xiao_nrf52840_e22/platformio.ini
@@ -0,0 +1,19 @@
+; Seeed XIAO nRF52840 + EBYTE E22-900M30S - Pinout matching Wio-SX1262 (SKU 113010003)
+[env:seeed_xiao_nrf52840_e22_900m30s]
+extends = env:seeed_xiao_nrf52840_kit
+board_level = extra
+build_flags = ${env:seeed_xiao_nrf52840_kit.build_flags}
+ -D PRIVATE_HW
+ -DEBYTE_E22
+ -DEBYTE_E22_900M30S
+build_unflags = -DGPS_L76K
+
+; Seeed XIAO nRF52840 + EBYTE E22-900M33S - Pinout matching Wio-SX1262 (SKU 113010003)
+[env:seeed_xiao_nrf52840_e22_900m33s]
+extends = env:seeed_xiao_nrf52840_kit
+board_level = extra
+build_flags = ${env:seeed_xiao_nrf52840_kit.build_flags}
+ -D PRIVATE_HW
+ -DEBYTE_E22
+ -DEBYTE_E22_900M33S
+build_unflags = -DGPS_L76K
diff --git a/variants/nrf52840/diy/xiao_ble/README.md b/variants/nrf52840/diy/xiao_ble/README.md
new file mode 100644
index 000000000..fe6dcba2d
--- /dev/null
+++ b/variants/nrf52840/diy/xiao_ble/README.md
@@ -0,0 +1,168 @@
+# XIAO nrf52840/nrf52840 Sense + Ebyte E22-900M30S
+
+_A step-by-step guide for macOS and Linux._
+
+## Introduction
+
+This guide will walk you through everything needed to get the XIAO nrf52840 (or XIAO nrf52840 Sense) running Meshtastic using an Ebyte E22-900M30S LoRa module. The combination of the E22 with an nRF52840 MCU is desirable because it allows for both very low idle (Rx) power draw _and_ high transmit power.
+
+The XIAO nrf52840 is a small but surprisingly well-appointed nRF52840 board, with enough GPIO for most Meshtastic applications and a built-in LiPo charger.
+
+The E22, on the other hand, is a famously inscrutable and mysterious beast. It is one of the more readily available LoRa modules capable of transmitting at 30 dBm, and includes an LNA to boost its Rx sensitivity a few dB beyond that of the SX1262.
+
+However, its documentation is relatively sparse overall, and seems to merely hint at (or completely omit) several key details regarding its functionality. Thus, much of what follows is a synthesis of my observations and inferences over the course of many hours of trial and error.
+
+### Acknowledgement and Friendly Disclaimer
+
+Huge thanks to those in the community who have forged the way with the E22, without whose hard work none of this would have been possible! (thebentern, riddick, rainer_vie, beegee-tokyo, geeksville, caveman99, Der_Bear, PlumRugOfDoom, BigCorvus, and many others.)
+
+Please take the conclusions here as a tentative work in progress, representing my current (and fairly limited) understanding of the E22 when paired with this particular MCU. It is my hope that this guide will be helpful to others who are interested in trying a DIY Meshtastic build, and also be subject to revision by folks with more experience and better test equipment.
+
+### Obligatory Liability Disclaimer
+
+This guide and all associated content is for informational purposes only. The information presented is intended for consumption only by persons having appropriate technical skill and judgement, to be used entirely at their own discretion and risk. The authors of this guide in no way provide any warranty, express or implied, toward the content herein, nor its correctness, safety, or suitability to any particular purpose. By following the instructions in this guide in part or in full, you assume all responsibility for all potential risks, including but not limited to fire, property damage, bodily injury, and death.
+
+## 1. Wire the board
+
+Connecting the E22 to the XIAO nrf52840 is straightforward, but there are a few gotchas to be mindful of.
+
+### On the XIAO nrf52840
+
+- Pins D4 and D5 are currently mapped to `PIN_WIRE_SDA` and `PIN_WIRE_SCL`, respectively. If you are not using I²C and would like to free up pins D4 and D5 for use as GPIO, `PIN_WIRE_SDA` and `PIN_WIRE_SCL` can be reassigned to any two other unused pin numbers.
+- Pins D6 and D7 were originally mapped to the TX and RX pins for serial interface 1 (`PIN_SERIAL1_RX` and `PIN_SERIAL1_TX`) but are currently set to -1 in `variant.h`. If you need to expose a serial interface, you can restore these pins and move e.g. `SX126X_RXEN` to pin 4 or 5 (the opposite should work too).
+
+### On the E22
+
+- There are two options for the E22's `TXEN` pin:
+ 1. It can be connected to the MCU on the pin defined as `SX126X_TXEN` in `variant.h`. In this configuration, the MCU will control Tx/Rx switching "manually". As long as `SX126X_TXEN` and `SX126X_RXEN` are both defined in `variant.h` (and neither is set to `RADIOLIB_NC`), `SX126xInterface.cpp` will initialize the E22 correctly for this mode.
+ 2. Alternately, it can be connected to the E22's `DIO2` pin only, with neither `TXEN` nor `DIO2` being connected to the MCU. In this configuration, the E22 will control Tx/Rx switching automatically. In `variant.h`, as long as `SX126X_TXEN` is defined as `RADIOLIB_NC`, and `SX126X_RXEN` is defined and connected to the E22's `RXEN` pin, and `E22_TXEN_CONNECTED_TO_DIO2` is defined, `SX126xInterface.cpp` will initialize the E22 correctly for this mode. This configuration frees up a GPIO, and presents no drawbacks that I have found.
+- Note that any combination other than the two described above will likely result in unexpected behavior. In my testing, some of these other configurations appeared to "work" at first glance, but every one I tried had at least one of the following flaws: weak Tx power, extremely poor Rx sensitivity, or the E22 overheating because TXEN was never pulled low, causing its PA to stay on indefinitely.
+- Along the same lines, it is a good idea to check the E22's temperature frequently by lightly touching the shield. If you feel the shield getting hot (i.e. approaching uncomfortable to touch) near pins 1, 2, and 3, something is probably misconfigured; disconnect both the XIAO nrf52840 and E22 from power and double check wiring and pin mapping.
+- Whether you opt to let the E22 control Rx and Tx or handle this manually, **the E22's `RXEN` pin must always be connected to the MCU** on the pin defined as `SX126X_RXEN` in `variant.h`.
+
+#### Note
+
+The default pin mapping in `variant.h` uses "Automatic Tx/Rx switching" mode.
+
+If you wire your board for Manual Tx/Rx Switching Mode, `SX126X_TXEN` must be defined (`#define #define SX126X_TXEN D6`) in `variants/seeed_xiao_nrf52840_kit/variant.h` in the code block following:
+
+```c
+#ifdef XIAO_BLE_LEGACY_PINOUT
+// Legacy xiao_ble variant pinout for third-party SX126x modules e.g. EBYTE E22
+```
+
+### Example Wiring for Automatic Tx/Rx Switching Mode
+
+#### MCU -> E22 Connections
+
+| XIAO nrf52840 pin | variant.h definition | E22 pin | Notes |
+| :---------------- | :------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------- |
+| D0 | SX126X_CS | 19 (NSS) | |
+| D1 | SX126X_DIO1 | 13 (DIO1) | |
+| D2 | SX126X_BUSY | 14 (BUSY) | |
+| D3 | SX126X_RESET | 15 (NRST) | |
+| D7 | SX126X_RXEN | 6 (RXEN) | These pins must still be connected, and `SX126X_RXEN` defined in `variant.h`, otherwise Rx sensitivity will be poor. |
+| D8 | PIN_SPI_SCK | 18 (SCK) | |
+| D9 | PIN_SPI_MISO | 16 (MISO) | |
+| D10 | PIN_SPI_MOSI | 17 (MOSI) | |
+
+#### E22 -> E22 Connections
+
+| E22 pin | E22 pin | Notes |
+| :------ | :------ | :------------------------------------------------------------------------ |
+| TXEN | DIO2 | These must be physically connected for automatic Tx/Rx switching to work. |
+
+#### Note
+
+The schematic (`xiao-ble-e22-schematic.png`) in the `eagle-project` directory uses this wiring.
+
+### Example Wiring for Manual Tx/Rx Switching Mode
+
+#### MCU -> E22 Connections
+
+| XIAO nrf52840 pin | variant.h definition | E22 pin | Notes |
+| :---------------- | :------------------- | :-------- | :---- |
+| D0 | SX126X_CS | 19 (NSS) | |
+| D1 | SX126X_DIO1 | 13 (DIO1) | |
+| D2 | SX126X_BUSY | 14 (BUSY) | |
+| D3 | SX126X_RESET | 15 (NRST) | |
+| D6 | SX126X_TXEN | 7 (TXEN) | |
+| D7 | SX126X_RXEN | 6 (RXEN) | |
+| D8 | PIN_SPI_SCK | 18 (SCK) | |
+| D9 | PIN_SPI_MISO | 16 (MISO) | |
+| D10 | PIN_SPI_MOSI | 17 (MOSI) | |
+
+#### E22 -> E22 connections
+
+_(none)_
+
+## 2. Build Meshtastic
+
+1. Follow the [Building Meshtastic Firmware](https://meshtastic.org/docs/development/firmware/build/) documentation, stop after **Build** → **Step 2**
+2. For **Build** → **Step 3**, select `xiao_ble` as your target
+3. Adjust source code if you:
+ - Wired your board for Manual Tx/Rx Switching Mode: see [Wire the Board](#1-wire-the-board)
+ - Used an E22-900M33S module
+ (this step is important to avoid **damaging the power amplifier** in the M33S module and **transmitting power above legal limits**!):
+ 1. Open `variants/diy/platformio.ini`
+ 2. Search for `[env:xiao_ble]`
+ 3. In the line starting with `build_flags` within this section, change `-DEBYTE_E22_900M30S` to `-DEBYTE_E22_900M33S`
+4. Follow **Build** → **Step 4** to build the firmware
+5. Stop here, because the **PlatformIO: Upload** step does not work for factory-fresh XIAO nrf52840 (the automatic reset to bootloader only works if Meshtastic firmware is already running)
+6. The built `firmware.uf2` binary can be found in the folder `.pio/build/xiao_ble/firmware.uf2` (relative to where you cloned the Git repository to), we will need it for [flashing the firmware](#3-flash-the-firmware-to-the-xiao-nrf52840) (manually)
+
+## 3. Flash the Firmware to the XIAO nrf52840
+
+1. Double press the XIAO nrf52840's `reset` button to put it in bootloader mode, and a USB volume named `XIAO SENSE` will appear
+2. Copy the `firmware.uf2` file to the `XIAO SENSE` volume (refer to the last step of [Build Meshtastic](#2-build-meshtastic))
+3. The XIAO nrf52840's red LED will flash for several seconds as the firmware is copied
+4. Once Meshtastic firmware succesfully boots, the:
+ 1. Green LED will turn on
+ 2. Red LED will flash several times to indicate flash memory writes during initial settings file creation
+ 3. Green LED will blink every second once the firmware is running normally
+5. If you do not see the above LED patters, proceed to [Troubleshooting](#4-troubleshooting)
+
+## 4. Troubleshooting
+
+- If after flashing Meshtastic, the XIAO is bootlooped, look at the serial output (you can see this by running `meshtastic --noproto` with the device connected to your computer via USB).
+ - If you see that the SX1262 init result was -2, this likely indicates a wiring problem; double check your wiring and pin mapping in `variant.h`.
+ - If you see an error mentioning tinyFS, this may mean you need to reformat the XIAO's storage:
+ 1. Open the [Meshtastic web flasher](https://flasher.meshtastic.org/)
+ 2. Select the **_Seeed XIAO NRF52840 Kit_**
+ 3. Click the **_trash can icon_** to the right of **_Flash_**
+ 4. Follow the instructions on the screen
+ **Do not flash the Seeed XIAO NRF52840 Kit firmware** if you have wired the LoRa module according to this variant, as the Seeed XIAO NRF52840 Kit uses different wiring for the SX1262 LoRa chip
+ - If you don't see any specific error message, but the boot process is stuck or not proceeding as expected, this might also mean there is a conflict in `variant.h`. If you have made any changes to the pin mapping, ensure they do not result in a conflict. If all else fails, try reverting your changes and using the known-good configuration included here.
+ - The above might also mean something is wired incorrectly. Try reverting to one of the known-good example wirings in section 4.
+- If the E22 gets hot to the touch:
+ - The power amplifier is likely running continually. Disconnect it and the XIAO from power immediately, and double check wiring and pin mapping. In my experimentation this occurred in cases where TXEN was inadvertenly high (usually due to a pin mapping conflict).
+
+## 5. Notes
+
+- **Transmit Power**
+ - There is a power amplifier after the SX1262's Tx, so the actual Tx power is just over 7 dB greater than the SX1262's set Tx power (the E22-900M30S actually tops out just over 29dB at 5V according to the datasheet)
+ - Meshtastic firmware is aware of the gain of the E22-900M30S module, so the Meshtastic clients' Tx power setting reflects the actual output power, i.e. setting 30 dBm in the Meshtastic app programs the E22 module to correctly output 30 dBm, setting 24 dBm will output 24 dBm, etc.
+- **Adequate 5V Power Supply to the E22 Module**
+ - Have a bypass capacitor from its 5V supply to ground; 100 µF works well
+ - Voltage must be between 5V–5.5V, lower supply voltage results in less output power; for example, with a fully charged LiPo at 4.2V, Tx power appears to max out around 26-27 dBm
+
+### Additional Reading
+
+- [S5NC/CDEBYTE_Modules](https://github.com/S5NC/CDEBYTE_Modules) has additional information about EBYTE E22 modules' internal workings, including photographs
+- [RadioLib High power Radio Modules Guide](https://github.com/jgromes/RadioLib/wiki/High-power-Radio-Modules-Guide)
+
+## 6. Testing Methodology
+
+During what became a fairly long trial-and-error process, I did a lot of careful testing of Tx power and Rx sensitivity. My methodology in these tests was as follows:
+
+- All tests were conducted between two nodes:
+ 1. The XIAO nrf52840 + E22 coupled with an [Abracon ARRKP4065-S915A](https://www.digikey.com/en/products/detail/abracon-llc/ARRKP4065-S915A/8593263") ceramic patch antenna
+ 2. A RAK 5005/4631 coupled with a [Laird MA9-5N](https://www.streakwave.com/laird-technologies-ma9-5n-55dbi-900mhz-mobile-omni-select-mount) antenna via a 4" U.FL to Type N pigtail.
+ - No other nodes were powered up onsite or nearby.
+- Each node and its antenna was kept in exactly the same position and orientation throughout testing.
+- Other environmental factors (e.g. the location and resting position of my body in the room while testing) were controlled as carefully as possible.
+- Each test comprised at least five (and often ten) runs, after which the results were averaged.
+- All testing was done by sending single-character messages between nodes and observing the received RSSI reported in the message acknowledgement. Messages were sent one by one, waiting for each to be acknowledged or time out before sending the next.
+- The E22's Tx power was observed by sending messages from the RAK to the XIAO nrf52840 + E22 and recording the received RSSI.
+- The opposite was done to observe the E22's Rx sensitivity: messages were sent from the XIAO nrf52840 + E22 to the RAK, and the received RSSI was recorded.
+ While this cannot match the level of accuracy achievable with actual test equipment in a lab setting, it was nonetheless sufficient to demonstrate the (sometimes very large) differences in Tx power and Rx sensitivity between various configurations.
diff --git a/variants/nrf52840/diy/xiao_ble/platformio.ini b/variants/nrf52840/diy/xiao_ble/platformio.ini
new file mode 100644
index 000000000..6c764ea78
--- /dev/null
+++ b/variants/nrf52840/diy/xiao_ble/platformio.ini
@@ -0,0 +1,10 @@
+; Seeed Xiao BLE: https://www.digikey.com/en/products/detail/seeed-technology-co-ltd/102010448/16652893
+[env:xiao_ble]
+extends = env:seeed_xiao_nrf52840_kit
+board_level = extra
+build_flags = ${env:seeed_xiao_nrf52840_kit.build_flags}
+ -D PRIVATE_HW
+ -DXIAO_BLE_LEGACY_PINOUT
+ -DEBYTE_E22
+ -DEBYTE_E22_900M30S
+build_unflags = -DGPS_L76K
diff --git a/variants/feather_diy/platformio.ini b/variants/nrf52840/feather_diy/platformio.ini
similarity index 79%
rename from variants/feather_diy/platformio.ini
rename to variants/nrf52840/feather_diy/platformio.ini
index 84c582ab0..a17e418a2 100644
--- a/variants/feather_diy/platformio.ini
+++ b/variants/nrf52840/feather_diy/platformio.ini
@@ -2,8 +2,10 @@
[env:feather_diy]
extends = nrf52840_base
board = adafruit_feather_nrf52840
-build_flags = ${nrf52840_base.build_flags} -Ivariants/feather_diy -Dfeather_diy
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/feather_diy>
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/feather_diy
+ -Dfeather_diy
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/feather_diy>
lib_deps =
${nrf52840_base.lib_deps}
debug_tool = jlink
diff --git a/variants/feather_diy/variant.cpp b/variants/nrf52840/feather_diy/variant.cpp
similarity index 100%
rename from variants/feather_diy/variant.cpp
rename to variants/nrf52840/feather_diy/variant.cpp
diff --git a/variants/feather_diy/variant.h b/variants/nrf52840/feather_diy/variant.h
similarity index 100%
rename from variants/feather_diy/variant.h
rename to variants/nrf52840/feather_diy/variant.h
diff --git a/variants/gat562_mesh_trial_tracker/platformio.ini b/variants/nrf52840/gat562_mesh_trial_tracker/platformio.ini
similarity index 75%
rename from variants/gat562_mesh_trial_tracker/platformio.ini
rename to variants/nrf52840/gat562_mesh_trial_tracker/platformio.ini
index e67f3ec8d..72ac6320d 100644
--- a/variants/gat562_mesh_trial_tracker/platformio.ini
+++ b/variants/nrf52840/gat562_mesh_trial_tracker/platformio.ini
@@ -3,11 +3,13 @@
extends = nrf52840_base
board = gat562_mesh_trial_tracker
board_check = true
-build_flags = ${nrf52840_base.build_flags} -Ivariants/gat562_mesh_trial_tracker -D GAT562_MESH_TRIAL_TRACKER
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/gat562_mesh_trial_tracker
+ -D GAT562_MESH_TRIAL_TRACKER
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-DRADIOLIB_EXCLUDE_SX128X=1
-DRADIOLIB_EXCLUDE_SX127X=1
-DRADIOLIB_EXCLUDE_LR11X0=1
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/gat562_mesh_trial_tracker>
-lib_deps =
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/gat562_mesh_trial_tracker>
+lib_deps =
${nrf52840_base.lib_deps}
diff --git a/variants/gat562_mesh_trial_tracker/variant.cpp b/variants/nrf52840/gat562_mesh_trial_tracker/variant.cpp
similarity index 100%
rename from variants/gat562_mesh_trial_tracker/variant.cpp
rename to variants/nrf52840/gat562_mesh_trial_tracker/variant.cpp
diff --git a/variants/gat562_mesh_trial_tracker/variant.h b/variants/nrf52840/gat562_mesh_trial_tracker/variant.h
similarity index 99%
rename from variants/gat562_mesh_trial_tracker/variant.h
rename to variants/nrf52840/gat562_mesh_trial_tracker/variant.h
index 2af0bc76d..6337ac70c 100644
--- a/variants/gat562_mesh_trial_tracker/variant.h
+++ b/variants/nrf52840/gat562_mesh_trial_tracker/variant.h
@@ -19,8 +19,6 @@
#ifndef _VARIANT_GAT562_MESH_TRIAL_TRACKER_
#define _VARIANT_GAT562_MESH_TRIAL_TRACKER_
-#define GAT562_MESH_TRIAL_TRACKER
-
// led pin 2 (blue), see https://github.com/meshtastic/firmware/blob/master/src/mesh/NodeDB.cpp#L723
#define RAK4630
diff --git a/variants/heltec_mesh_node_t114-inkhud/custom_build_tasks.py b/variants/nrf52840/heltec_mesh_node_t114-inkhud/custom_build_tasks.py
similarity index 100%
rename from variants/heltec_mesh_node_t114-inkhud/custom_build_tasks.py
rename to variants/nrf52840/heltec_mesh_node_t114-inkhud/custom_build_tasks.py
diff --git a/variants/heltec_mesh_node_t114-inkhud/nicheGraphics.h b/variants/nrf52840/heltec_mesh_node_t114-inkhud/nicheGraphics.h
similarity index 96%
rename from variants/heltec_mesh_node_t114-inkhud/nicheGraphics.h
rename to variants/nrf52840/heltec_mesh_node_t114-inkhud/nicheGraphics.h
index fe1c281bf..b6be70ff4 100644
--- a/variants/heltec_mesh_node_t114-inkhud/nicheGraphics.h
+++ b/variants/nrf52840/heltec_mesh_node_t114-inkhud/nicheGraphics.h
@@ -56,8 +56,9 @@ void setupNicheGraphics()
// Set how many FAST updates per FULL update.
inkhud->setDisplayResilience(INKHUD_BUILDCONF_DISPLAYRESILIENCE); // Suggest roughly ten
- // Prepare fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ // Select fonts
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Init settings, and customize defaults
diff --git a/variants/heltec_mesh_node_t114-inkhud/platformio.ini b/variants/nrf52840/heltec_mesh_node_t114-inkhud/platformio.ini
similarity index 66%
rename from variants/heltec_mesh_node_t114-inkhud/platformio.ini
rename to variants/nrf52840/heltec_mesh_node_t114-inkhud/platformio.ini
index 9a5673040..2641a507d 100644
--- a/variants/heltec_mesh_node_t114-inkhud/platformio.ini
+++ b/variants/nrf52840/heltec_mesh_node_t114-inkhud/platformio.ini
@@ -6,14 +6,15 @@ board_check = true
build_flags =
${nrf52840_base.build_flags}
${inkhud.build_flags}
- -I variants/heltec_mesh_node_t114-inkhud
+ -I variants/nrf52840/heltec_mesh_node_t114-inkhud
build_src_filter =
${nrf52_base.build_src_filter}
${inkhud.build_src_filter}
+ +<../variants/nrf52840/heltec_mesh_node_t114-inkhud>
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
extra_scripts =
${env.extra_scripts}
- variants/diy/nrf52_promicro_diy_tcxo/custom_build_tasks.py ; Add to PIO's Project Tasks pane: preset builds for common displays
\ No newline at end of file
+ variants/nrf52840/diy/nrf52_promicro_diy_tcxo/custom_build_tasks.py ; Add to PIO's Project Tasks pane: preset builds for common displays
diff --git a/variants/heltec_mesh_node_t114-inkhud/variant.cpp b/variants/nrf52840/heltec_mesh_node_t114-inkhud/variant.cpp
similarity index 100%
rename from variants/heltec_mesh_node_t114-inkhud/variant.cpp
rename to variants/nrf52840/heltec_mesh_node_t114-inkhud/variant.cpp
diff --git a/variants/heltec_mesh_node_t114-inkhud/variant.h b/variants/nrf52840/heltec_mesh_node_t114-inkhud/variant.h
similarity index 100%
rename from variants/heltec_mesh_node_t114-inkhud/variant.h
rename to variants/nrf52840/heltec_mesh_node_t114-inkhud/variant.h
diff --git a/variants/heltec_mesh_node_t114/platformio.ini b/variants/nrf52840/heltec_mesh_node_t114/platformio.ini
similarity index 72%
rename from variants/heltec_mesh_node_t114/platformio.ini
rename to variants/nrf52840/heltec_mesh_node_t114/platformio.ini
index 3ba97bd04..c7b30b339 100644
--- a/variants/heltec_mesh_node_t114/platformio.ini
+++ b/variants/nrf52840/heltec_mesh_node_t114/platformio.ini
@@ -2,14 +2,16 @@
[env:heltec-mesh-node-t114]
extends = nrf52840_base
board = heltec_mesh_node_t114
+board_level = pr
debug_tool = jlink
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
-build_flags = ${nrf52840_base.build_flags} -Ivariants/heltec_mesh_node_t114
- -DGPS_POWER_TOGGLE
- -DHELTEC_T114
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/heltec_mesh_node_t114
+ -DGPS_POWER_TOGGLE
+ -DHELTEC_T114
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/heltec_mesh_node_t114>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_node_t114>
lib_deps =
${nrf52840_base.lib_deps}
lewisxhe/PCF8563_Library@^1.0.1
diff --git a/variants/heltec_mesh_node_t114/variant.cpp b/variants/nrf52840/heltec_mesh_node_t114/variant.cpp
similarity index 100%
rename from variants/heltec_mesh_node_t114/variant.cpp
rename to variants/nrf52840/heltec_mesh_node_t114/variant.cpp
diff --git a/variants/heltec_mesh_node_t114/variant.h b/variants/nrf52840/heltec_mesh_node_t114/variant.h
similarity index 98%
rename from variants/heltec_mesh_node_t114/variant.h
rename to variants/nrf52840/heltec_mesh_node_t114/variant.h
index 798c3538a..f4f0baf13 100644
--- a/variants/heltec_mesh_node_t114/variant.h
+++ b/variants/nrf52840/heltec_mesh_node_t114/variant.h
@@ -57,6 +57,9 @@ extern "C" {
#define TFT_OFFSET_X 0
#define TFT_OFFSET_Y 0
+// T114 gets a muted yellow on black display
+#define TFT_MESH_OVERRIDE COLOR565(255, 255, 128)
+
// #define TFT_OFFSET_ROTATION 0
// #define SCREEN_ROTATE
// #define SCREEN_TRANSITION_FRAMERATE 5
diff --git a/variants/heltec_mesh_pocket/nicheGraphics.h b/variants/nrf52840/heltec_mesh_pocket/nicheGraphics.h
similarity index 96%
rename from variants/heltec_mesh_pocket/nicheGraphics.h
rename to variants/nrf52840/heltec_mesh_pocket/nicheGraphics.h
index 271a35d6d..f8202debb 100644
--- a/variants/heltec_mesh_pocket/nicheGraphics.h
+++ b/variants/nrf52840/heltec_mesh_pocket/nicheGraphics.h
@@ -50,7 +50,8 @@ void setupNicheGraphics()
inkhud->setDisplayResilience(10, 1.5);
// Select fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Customize default settings
diff --git a/variants/heltec_mesh_pocket/platformio.ini b/variants/nrf52840/heltec_mesh_pocket/platformio.ini
similarity index 89%
rename from variants/heltec_mesh_pocket/platformio.ini
rename to variants/nrf52840/heltec_mesh_pocket/platformio.ini
index 2f3886887..2fb852226 100644
--- a/variants/heltec_mesh_pocket/platformio.ini
+++ b/variants/nrf52840/heltec_mesh_pocket/platformio.ini
@@ -5,7 +5,8 @@ board = heltec_mesh_pocket
debug_tool = jlink
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
-build_flags = ${nrf52840_base.build_flags} -Ivariants/heltec_mesh_pocket
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/heltec_mesh_pocket
-DHELTEC_MESH_POCKET
-DHELTEC_MESH_POCKET_BATTERY_5000
-DUSE_EINK
@@ -21,7 +22,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/heltec_mesh_pocket
-DEINK_HASQUIRK_GHOSTING ; Display model is identified as "prone to ghosting"
-DEINK_HASQUIRK_WEAKFASTREFRESH ; Pixels set with fast-refresh are easy to clear, disrupted by sunlight
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/heltec_mesh_pocket>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket>
lib_deps =
${nrf52840_base.lib_deps}
lewisxhe/PCF8563_Library@^1.0.1
@@ -31,11 +32,11 @@ lib_deps =
[env:heltec-mesh-pocket-5000-inkhud]
extends = nrf52840_base, inkhud
board = heltec_mesh_pocket
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/heltec_mesh_pocket> ${inkhud.build_src_filter}
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket> ${inkhud.build_src_filter}
build_flags =
${inkhud.build_flags}
${nrf52840_base.build_flags}
- -I variants/heltec_mesh_pocket
+ -I variants/nrf52840/heltec_mesh_pocket
-D HELTEC_MESH_POCKET
-D HELTEC_MESH_POCKET_BATTERY_5000
lib_deps =
@@ -50,7 +51,8 @@ board = heltec_mesh_pocket
debug_tool = jlink
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
-build_flags = ${nrf52840_base.build_flags} -Ivariants/heltec_mesh_pocket
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/heltec_mesh_pocket
-DHELTEC_MESH_POCKET
-DHELTEC_MESH_POCKET_BATTERY_10000
-DUSE_EINK
@@ -66,7 +68,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/heltec_mesh_pocket
-DEINK_HASQUIRK_GHOSTING ; Display model is identified as "prone to ghosting"
-DEINK_HASQUIRK_WEAKFASTREFRESH ; Pixels set with fast-refresh are easy to clear, disrupted by sunlight
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/heltec_mesh_pocket>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket>
lib_deps =
${nrf52840_base.lib_deps}
lewisxhe/PCF8563_Library@^1.0.1
@@ -76,11 +78,11 @@ lib_deps =
[env:heltec-mesh-pocket-10000-inkhud]
extends = nrf52840_base, inkhud
board = heltec_mesh_pocket
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/heltec_mesh_pocket> ${inkhud.build_src_filter}
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket> ${inkhud.build_src_filter}
build_flags =
${inkhud.build_flags}
${nrf52840_base.build_flags}
- -I variants/heltec_mesh_pocket
+ -I variants/nrf52840/heltec_mesh_pocket
-D HELTEC_MESH_POCKET
-D HELTEC_MESH_POCKET_BATTERY_10000
lib_deps =
diff --git a/variants/heltec_mesh_pocket/variant.cpp b/variants/nrf52840/heltec_mesh_pocket/variant.cpp
similarity index 100%
rename from variants/heltec_mesh_pocket/variant.cpp
rename to variants/nrf52840/heltec_mesh_pocket/variant.cpp
diff --git a/variants/heltec_mesh_pocket/variant.h b/variants/nrf52840/heltec_mesh_pocket/variant.h
similarity index 100%
rename from variants/heltec_mesh_pocket/variant.h
rename to variants/nrf52840/heltec_mesh_pocket/variant.h
diff --git a/variants/meshlink/platformio.ini b/variants/nrf52840/meshlink/platformio.ini
similarity index 94%
rename from variants/meshlink/platformio.ini
rename to variants/nrf52840/meshlink/platformio.ini
index 384858576..8216a704a 100644
--- a/variants/meshlink/platformio.ini
+++ b/variants/nrf52840/meshlink/platformio.ini
@@ -5,7 +5,9 @@
extends = nrf52840_base
board = meshlink
;board_check = true
-build_flags = ${nrf52840_base.build_flags} -I variants/meshlink -D MESHLINK
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/meshlink
+ -D MESHLINK
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-D EINK_DISPLAY_MODEL=GxEPD2_213_B74
-D EINK_WIDTH=250
@@ -19,7 +21,7 @@ build_flags = ${nrf52840_base.build_flags} -I variants/meshlink -D MESHLINK
-D EINK_HASQUIRK_VICIOUSFASTREFRESH ; Identify that pixels drawn by fast-refresh are harder to clear
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/meshlink>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/meshlink>
lib_deps =
${nrf52840_base.lib_deps}
https://github.com/meshtastic/GxEPD2/archive/55f618961db45a23eff0233546430f1e5a80f63a.zip
diff --git a/variants/meshlink/variant.cpp b/variants/nrf52840/meshlink/variant.cpp
similarity index 100%
rename from variants/meshlink/variant.cpp
rename to variants/nrf52840/meshlink/variant.cpp
diff --git a/variants/meshlink/variant.h b/variants/nrf52840/meshlink/variant.h
similarity index 100%
rename from variants/meshlink/variant.h
rename to variants/nrf52840/meshlink/variant.h
diff --git a/variants/meshlink_eink/platformio.ini b/variants/nrf52840/meshlink_eink/platformio.ini
similarity index 93%
rename from variants/meshlink_eink/platformio.ini
rename to variants/nrf52840/meshlink_eink/platformio.ini
index 550b1e2fc..a48a9e695 100644
--- a/variants/meshlink_eink/platformio.ini
+++ b/variants/nrf52840/meshlink_eink/platformio.ini
@@ -5,7 +5,9 @@
extends = nrf52840_base
board = meshlink
;board_check = true
-build_flags = ${nrf52840_base.build_flags} -I variants/meshlink_eink -D MESHLINK
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/meshlink_eink
+ -D MESHLINK
-D GPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-D EINK_DISPLAY_MODEL=GxEPD2_213_B74
-D EINK_WIDTH=250
@@ -19,7 +21,7 @@ build_flags = ${nrf52840_base.build_flags} -I variants/meshlink_eink -D MESHLINK
-D EINK_HASQUIRK_VICIOUSFASTREFRESH ; Identify that pixels drawn by fast-refresh are harder to clear
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/meshlink_eink>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/meshlink_eink>
lib_deps =
${nrf52840_base.lib_deps}
https://github.com/meshtastic/GxEPD2/archive/55f618961db45a23eff0233546430f1e5a80f63a.zip
diff --git a/variants/meshlink_eink/variant.cpp b/variants/nrf52840/meshlink_eink/variant.cpp
similarity index 100%
rename from variants/meshlink_eink/variant.cpp
rename to variants/nrf52840/meshlink_eink/variant.cpp
diff --git a/variants/meshlink_eink/variant.h b/variants/nrf52840/meshlink_eink/variant.h
similarity index 100%
rename from variants/meshlink_eink/variant.h
rename to variants/nrf52840/meshlink_eink/variant.h
diff --git a/variants/monteops_hw1/platformio.ini b/variants/nrf52840/monteops_hw1/platformio.ini
similarity index 77%
rename from variants/monteops_hw1/platformio.ini
rename to variants/nrf52840/monteops_hw1/platformio.ini
index 82567f614..5426aee7f 100644
--- a/variants/monteops_hw1/platformio.ini
+++ b/variants/nrf52840/monteops_hw1/platformio.ini
@@ -3,8 +3,10 @@
board_level = extra
extends = nrf52840_base
board = wiscore_rak4631
-build_flags = ${nrf52840_base.build_flags} -Ivariants/monteops_hw1 -D MONTEOPS_HW1
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/monteops_hw1> + + +
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/monteops_hw1
+ -D MONTEOPS_HW1
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/monteops_hw1> + + +
lib_deps =
${nrf52840_base.lib_deps}
${networking_base.lib_deps}
diff --git a/variants/monteops_hw1/variant.cpp b/variants/nrf52840/monteops_hw1/variant.cpp
similarity index 100%
rename from variants/monteops_hw1/variant.cpp
rename to variants/nrf52840/monteops_hw1/variant.cpp
diff --git a/variants/monteops_hw1/variant.h b/variants/nrf52840/monteops_hw1/variant.h
similarity index 100%
rename from variants/monteops_hw1/variant.h
rename to variants/nrf52840/monteops_hw1/variant.h
diff --git a/variants/nano-g2-ultra/platformio.ini b/variants/nrf52840/nano-g2-ultra/platformio.ini
similarity index 70%
rename from variants/nano-g2-ultra/platformio.ini
rename to variants/nrf52840/nano-g2-ultra/platformio.ini
index 7da168b47..f697a90dd 100644
--- a/variants/nano-g2-ultra/platformio.ini
+++ b/variants/nrf52840/nano-g2-ultra/platformio.ini
@@ -4,8 +4,10 @@ extends = nrf52840_base
board = nano-g2-ultra
debug_tool = jlink
-build_flags = ${nrf52840_base.build_flags} -Ivariants/nano-g2-ultra -D NANO_G2_ULTRA
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nano-g2-ultra>
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/nano-g2-ultra
+ -D NANO_G2_ULTRA
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/nano-g2-ultra>
lib_deps =
${nrf52840_base.lib_deps}
lewisxhe/PCF8563_Library@^1.0.1
diff --git a/variants/nano-g2-ultra/variant.cpp b/variants/nrf52840/nano-g2-ultra/variant.cpp
similarity index 100%
rename from variants/nano-g2-ultra/variant.cpp
rename to variants/nrf52840/nano-g2-ultra/variant.cpp
diff --git a/variants/nano-g2-ultra/variant.h b/variants/nrf52840/nano-g2-ultra/variant.h
similarity index 100%
rename from variants/nano-g2-ultra/variant.h
rename to variants/nrf52840/nano-g2-ultra/variant.h
diff --git a/variants/rak2560/platformio.ini b/variants/nrf52840/rak2560/platformio.ini
similarity index 87%
rename from variants/rak2560/platformio.ini
rename to variants/nrf52840/rak2560/platformio.ini
index 8a720ce5a..2b73aca03 100644
--- a/variants/rak2560/platformio.ini
+++ b/variants/nrf52840/rak2560/platformio.ini
@@ -3,13 +3,15 @@
extends = nrf52840_base
board = wiscore_rak4631
board_check = true
-build_flags = ${nrf52840_base.build_flags} -Ivariants/rak2560 -D RAK_4631
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/rak2560
+ -D RAK_4631
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-DRADIOLIB_EXCLUDE_SX128X=1
-DRADIOLIB_EXCLUDE_SX127X=1
-DRADIOLIB_EXCLUDE_LR11X0=1
-DHAS_RAKPROT=1 ; Define if RAk OneWireSerial is used (disables GPS)
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak2560> + +
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak2560> + +
lib_deps =
${nrf52840_base.lib_deps}
${networking_base.lib_deps}
diff --git a/variants/rak2560/variant.cpp b/variants/nrf52840/rak2560/variant.cpp
similarity index 100%
rename from variants/rak2560/variant.cpp
rename to variants/nrf52840/rak2560/variant.cpp
diff --git a/variants/rak2560/variant.h b/variants/nrf52840/rak2560/variant.h
similarity index 99%
rename from variants/rak2560/variant.h
rename to variants/nrf52840/rak2560/variant.h
index a03fc3933..f922e8a61 100644
--- a/variants/rak2560/variant.h
+++ b/variants/nrf52840/rak2560/variant.h
@@ -222,6 +222,7 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
// #define PIN_GPS_EN PIN_3V3_EN
#define PIN_GPS_PPS (17) // Pulse per second input from the GPS
+#define GPS_SERIAL_PORT Serial2
// On RAK2560 the GPS is be on a different UART
// #define GPS_RX_PIN PIN_SERIAL2_RX
// #define GPS_TX_PIN PIN_SERIAL2_TX
diff --git a/variants/rak4631/platformio.ini b/variants/nrf52840/rak4631/platformio.ini
similarity index 94%
rename from variants/rak4631/platformio.ini
rename to variants/nrf52840/rak4631/platformio.ini
index ee134e87a..199e17570 100644
--- a/variants/rak4631/platformio.ini
+++ b/variants/nrf52840/rak4631/platformio.ini
@@ -2,8 +2,11 @@
[env:rak4631]
extends = nrf52840_base
board = wiscore_rak4631
+board_level = pr
board_check = true
-build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631 -D RAK_4631
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/rak4631
+ -D RAK_4631
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-DEINK_DISPLAY_MODEL=GxEPD2_213_BN
-DEINK_WIDTH=250
@@ -11,7 +14,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631 -D RAK_4631
-DRADIOLIB_EXCLUDE_SX128X=1
-DRADIOLIB_EXCLUDE_SX127X=1
-DRADIOLIB_EXCLUDE_LR11X0=1
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak4631> + + +
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak4631> + + +
lib_deps =
${nrf52840_base.lib_deps}
${networking_base.lib_deps}
diff --git a/variants/rak4631/variant.cpp b/variants/nrf52840/rak4631/variant.cpp
similarity index 100%
rename from variants/rak4631/variant.cpp
rename to variants/nrf52840/rak4631/variant.cpp
diff --git a/variants/rak4631/variant.h b/variants/nrf52840/rak4631/variant.h
similarity index 100%
rename from variants/rak4631/variant.h
rename to variants/nrf52840/rak4631/variant.h
diff --git a/variants/rak4631_epaper/platformio.ini b/variants/nrf52840/rak4631_epaper/platformio.ini
similarity index 86%
rename from variants/rak4631_epaper/platformio.ini
rename to variants/nrf52840/rak4631_epaper/platformio.ini
index 47e4451c7..704520f8d 100644
--- a/variants/rak4631_epaper/platformio.ini
+++ b/variants/nrf52840/rak4631_epaper/platformio.ini
@@ -2,14 +2,16 @@
[env:rak4631_eink]
extends = nrf52840_base
board = wiscore_rak4631
-build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631_epaper -D RAK_4631
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/rak4631_epaper
+ -D RAK_4631
-DEINK_DISPLAY_MODEL=GxEPD2_213_BN
-DEINK_WIDTH=250
-DEINK_HEIGHT=122
-DRADIOLIB_EXCLUDE_SX128X=1
-DRADIOLIB_EXCLUDE_SX127X=1
-DRADIOLIB_EXCLUDE_LR11X0=1
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak4631_epaper>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak4631_epaper>
lib_deps =
${nrf52840_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
diff --git a/variants/rak4631_epaper/variant.cpp b/variants/nrf52840/rak4631_epaper/variant.cpp
similarity index 100%
rename from variants/rak4631_epaper/variant.cpp
rename to variants/nrf52840/rak4631_epaper/variant.cpp
diff --git a/variants/rak4631_epaper/variant.h b/variants/nrf52840/rak4631_epaper/variant.h
similarity index 100%
rename from variants/rak4631_epaper/variant.h
rename to variants/nrf52840/rak4631_epaper/variant.h
diff --git a/variants/rak4631_epaper_onrxtx/platformio.ini b/variants/nrf52840/rak4631_epaper_onrxtx/platformio.ini
similarity index 87%
rename from variants/rak4631_epaper_onrxtx/platformio.ini
rename to variants/nrf52840/rak4631_epaper_onrxtx/platformio.ini
index 52a13f2a7..e0156668b 100644
--- a/variants/rak4631_epaper_onrxtx/platformio.ini
+++ b/variants/nrf52840/rak4631_epaper_onrxtx/platformio.ini
@@ -3,7 +3,9 @@
board_level = extra
extends = nrf52840_base
board = wiscore_rak4631
-build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631_epaper -D RAK_4631
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/rak4631_epaper
+ -D RAK_4631
-D PIN_EINK_EN=34
-D EINK_DISPLAY_MODEL=GxEPD2_213_BN
-D EINK_WIDTH=250
@@ -11,7 +13,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631_epaper -D RAK_4631
-D RADIOLIB_EXCLUDE_SX128X=1
-D RADIOLIB_EXCLUDE_SX127X=1
-D RADIOLIB_EXCLUDE_LR11X0=1
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak4631_epaper_onrxtx>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak4631_epaper_onrxtx>
lib_deps =
${nrf52840_base.lib_deps}
zinggjm/GxEPD2@^1.6.2
diff --git a/variants/rak4631_epaper_onrxtx/variant.cpp b/variants/nrf52840/rak4631_epaper_onrxtx/variant.cpp
similarity index 100%
rename from variants/rak4631_epaper_onrxtx/variant.cpp
rename to variants/nrf52840/rak4631_epaper_onrxtx/variant.cpp
diff --git a/variants/rak4631_epaper_onrxtx/variant.h b/variants/nrf52840/rak4631_epaper_onrxtx/variant.h
similarity index 100%
rename from variants/rak4631_epaper_onrxtx/variant.h
rename to variants/nrf52840/rak4631_epaper_onrxtx/variant.h
diff --git a/variants/rak4631_eth_gw/platformio.ini b/variants/nrf52840/rak4631_eth_gw/platformio.ini
similarity index 94%
rename from variants/rak4631_eth_gw/platformio.ini
rename to variants/nrf52840/rak4631_eth_gw/platformio.ini
index 492ca374b..a1c1b4610 100644
--- a/variants/rak4631_eth_gw/platformio.ini
+++ b/variants/nrf52840/rak4631_eth_gw/platformio.ini
@@ -3,8 +3,11 @@
extends = nrf52840_base
board = wiscore_rak4631
board_check = true
-build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631_eth_gw -D RAK_4631
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/rak4631_eth_gw
+ -D RAK_4631
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
+ -DHAS_UDP_MULTICAST=1
-DEINK_DISPLAY_MODEL=GxEPD2_213_BN
-DEINK_WIDTH=250
-DEINK_HEIGHT=122
@@ -21,7 +24,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631_eth_gw -D RAK_4631
-DMESHTASTIC_EXCLUDE_STOREFORWARD=1
-DMESHTASTIC_EXCLUDE_CANNEDMESSAGES=1
-DMESHTASTIC_EXCLUDE_WAYPOINT=1
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak4631_eth_gw> + + +
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak4631_eth_gw> + + +
lib_deps =
${nrf52840_base.lib_deps}
${networking_base.lib_deps}
diff --git a/variants/rak4631_eth_gw/variant.cpp b/variants/nrf52840/rak4631_eth_gw/variant.cpp
similarity index 100%
rename from variants/rak4631_eth_gw/variant.cpp
rename to variants/nrf52840/rak4631_eth_gw/variant.cpp
diff --git a/variants/rak4631_eth_gw/variant.h b/variants/nrf52840/rak4631_eth_gw/variant.h
similarity index 100%
rename from variants/rak4631_eth_gw/variant.h
rename to variants/nrf52840/rak4631_eth_gw/variant.h
diff --git a/variants/rak4631_nomadstar_meteor_pro/platformio.ini b/variants/nrf52840/rak4631_nomadstar_meteor_pro/platformio.ini
similarity index 89%
rename from variants/rak4631_nomadstar_meteor_pro/platformio.ini
rename to variants/nrf52840/rak4631_nomadstar_meteor_pro/platformio.ini
index d5fbe6a16..e94eef1ee 100644
--- a/variants/rak4631_nomadstar_meteor_pro/platformio.ini
+++ b/variants/nrf52840/rak4631_nomadstar_meteor_pro/platformio.ini
@@ -3,8 +3,9 @@
extends = nrf52840_base
board = wiscore_rak4631
board_check = true
-build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631_nomadstar_meteor_pro -D NOMADSTAR_METEOR_PRO
- -L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard"
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/rak4631_nomadstar_meteor_pro
+ -D NOMADSTAR_METEOR_PRO
;-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-DEINK_DISPLAY_MODEL=GxEPD2_213_BN
-DEINK_WIDTH=250
@@ -12,8 +13,8 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/rak4631_nomadstar_meteor_p
-DRADIOLIB_EXCLUDE_SX128X=1
-DRADIOLIB_EXCLUDE_SX127X=1
-DRADIOLIB_EXCLUDE_LR11X0=1
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak4631_nomadstar_meteor_pro> + +
-lib_deps =
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak4631_nomadstar_meteor_pro> + +
+lib_deps =
${nrf52840_base.lib_deps}
https://github.com/NomadStar-outdoor/IOBoard-RGB-LP5562-Library.git#9c366c8
diff --git a/variants/rak4631_nomadstar_meteor_pro/variant.cpp b/variants/nrf52840/rak4631_nomadstar_meteor_pro/variant.cpp
similarity index 100%
rename from variants/rak4631_nomadstar_meteor_pro/variant.cpp
rename to variants/nrf52840/rak4631_nomadstar_meteor_pro/variant.cpp
diff --git a/variants/rak4631_nomadstar_meteor_pro/variant.h b/variants/nrf52840/rak4631_nomadstar_meteor_pro/variant.h
similarity index 100%
rename from variants/rak4631_nomadstar_meteor_pro/variant.h
rename to variants/nrf52840/rak4631_nomadstar_meteor_pro/variant.h
diff --git a/variants/nrf52840/rak_wismeshtag/platformio.ini b/variants/nrf52840/rak_wismeshtag/platformio.ini
new file mode 100644
index 000000000..08e723302
--- /dev/null
+++ b/variants/nrf52840/rak_wismeshtag/platformio.ini
@@ -0,0 +1,17 @@
+; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
+[env:rak_wismeshtag]
+extends = nrf52840_base
+board = wiscore_rak4631
+board_check = true
+build_flags = ${nrf52840_base.build_flags}
+ -I variants/nrf52840/rak_wismeshtag
+ -D WISMESH_TAG
+ -D RAK_4631
+ -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
+ -DRADIOLIB_EXCLUDE_SX128X=1
+ -DRADIOLIB_EXCLUDE_SX127X=1
+ -DRADIOLIB_EXCLUDE_LR11X0=1
+ -DMESHTASTIC_EXCLUDE_WIFI=1
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak_wismeshtag>
+lib_deps =
+ ${nrf52840_base.lib_deps}
\ No newline at end of file
diff --git a/variants/nrf52840/rak_wismeshtag/variant.cpp b/variants/nrf52840/rak_wismeshtag/variant.cpp
new file mode 100644
index 000000000..e84b60b3b
--- /dev/null
+++ b/variants/nrf52840/rak_wismeshtag/variant.cpp
@@ -0,0 +1,45 @@
+/*
+ Copyright (c) 2014-2015 Arduino LLC. All right reserved.
+ Copyright (c) 2016 Sandeep Mistry All right reserved.
+ Copyright (c) 2018, Adafruit Industries (adafruit.com)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#include "variant.h"
+#include "nrf.h"
+#include "wiring_constants.h"
+#include "wiring_digital.h"
+
+const uint32_t g_ADigitalPinMap[] = {
+ // P0
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+
+ // P1
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47};
+
+void initVariant()
+{
+ // LED1 & LED2
+ pinMode(PIN_LED1, OUTPUT);
+ ledOff(PIN_LED1);
+
+ pinMode(PIN_LED2, OUTPUT);
+ ledOff(PIN_LED2);
+
+ // 3V3 Power Rail
+ pinMode(PIN_3V3_EN, OUTPUT);
+ digitalWrite(PIN_3V3_EN, HIGH);
+}
diff --git a/variants/nrf52840/rak_wismeshtag/variant.h b/variants/nrf52840/rak_wismeshtag/variant.h
new file mode 100644
index 000000000..eba910dc1
--- /dev/null
+++ b/variants/nrf52840/rak_wismeshtag/variant.h
@@ -0,0 +1,244 @@
+/*
+ Copyright (c) 2014-2015 Arduino LLC. All right reserved.
+ Copyright (c) 2016 Sandeep Mistry All right reserved.
+ Copyright (c) 2018, Adafruit Industries (adafruit.com)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Lesser General Public License for more details.
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef _VARIANT_RAK4630_
+#define _VARIANT_RAK4630_
+
+#define RAK4630
+
+/** Master clock frequency */
+#define VARIANT_MCK (64000000ul)
+
+#define USE_LFXO // Board uses 32khz crystal for LF
+// define USE_LFRC // Board uses RC for LF
+
+/*----------------------------------------------------------------------------
+ * Headers
+ *----------------------------------------------------------------------------*/
+
+#include "WVariant.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+// Number of pins defined in PinDescription array
+#define PINS_COUNT (48)
+#define NUM_DIGITAL_PINS (48)
+#define NUM_ANALOG_INPUTS (6)
+#define NUM_ANALOG_OUTPUTS (0)
+
+// LEDs
+#define PIN_LED1 (35)
+#define PIN_LED2 (36)
+
+#define LED_BUILTIN PIN_LED1
+#define LED_CONN PIN_LED2
+
+#define LED_GREEN PIN_LED1
+#define LED_BLUE PIN_LED2
+
+#define LED_STATE_ON 1 // State when LED is litted
+
+/*
+ * Buttons
+ */
+
+#define PIN_BUTTON1 9 // Pin for button on E-ink button module or IO expansion
+#define BUTTON_NEED_PULLUP
+#define PIN_BUTTON2 12
+#define PIN_BUTTON3 24
+#define PIN_BUTTON4 25
+
+/*
+ * Analog pins
+ */
+#define PIN_A0 (5)
+#define PIN_A1 (31)
+#define PIN_A2 (28)
+#define PIN_A3 (29)
+#define PIN_A4 (30)
+#define PIN_A5 (31)
+#define PIN_A6 (0xff)
+#define PIN_A7 (0xff)
+
+static const uint8_t A0 = PIN_A0;
+static const uint8_t A1 = PIN_A1;
+static const uint8_t A2 = PIN_A2;
+static const uint8_t A3 = PIN_A3;
+static const uint8_t A4 = PIN_A4;
+static const uint8_t A5 = PIN_A5;
+static const uint8_t A6 = PIN_A6;
+static const uint8_t A7 = PIN_A7;
+#define ADC_RESOLUTION 14
+
+// Other pins
+#define PIN_AREF (2)
+#define PIN_NFC1 (9)
+#define PIN_NFC2 (10)
+
+static const uint8_t AREF = PIN_AREF;
+
+/*
+ * Serial interfaces
+ */
+#define PIN_SERIAL1_RX (15)
+#define PIN_SERIAL1_TX (16)
+
+// Connected to Jlink CDC
+#define PIN_SERIAL2_RX (8)
+#define PIN_SERIAL2_TX (6)
+
+/*
+ * SPI Interfaces
+ */
+#define SPI_INTERFACES_COUNT 2
+
+#define PIN_SPI_MISO (45)
+#define PIN_SPI_MOSI (44)
+#define PIN_SPI_SCK (43)
+
+#define PIN_SPI1_MISO (29) // (0 + 29)
+#define PIN_SPI1_MOSI (30) // (0 + 30)
+#define PIN_SPI1_SCK (3) // (0 + 3)
+
+static const uint8_t SS = 42;
+static const uint8_t MOSI = PIN_SPI_MOSI;
+static const uint8_t MISO = PIN_SPI_MISO;
+static const uint8_t SCK = PIN_SPI_SCK;
+
+/*
+ * eink display pins
+ */
+
+#define PIN_EINK_CS (0 + 26)
+#define PIN_EINK_BUSY (0 + 4)
+#define PIN_EINK_DC (0 + 17)
+#define PIN_EINK_RES (-1)
+#define PIN_EINK_SCLK (0 + 3)
+#define PIN_EINK_MOSI (0 + 30) // also called SDI
+
+/*
+ * Wire Interfaces
+ */
+#define WIRE_INTERFACES_COUNT 1
+
+// RAK WISMESHTAG
+#define PIN_WIRE_SDA (25)
+#define PIN_WIRE_SCL (24)
+
+// QSPI Pins
+#define PIN_QSPI_SCK 3
+#define PIN_QSPI_CS 26
+#define PIN_QSPI_IO0 30
+#define PIN_QSPI_IO1 29
+#define PIN_QSPI_IO2 28
+#define PIN_QSPI_IO3 2
+
+/* @note RAK5005-O GPIO mapping to RAK4631 GPIO ports
+ RAK5005-O <-> nRF52840
+ IO1 <-> P0.17 (Arduino GPIO number 17)
+ IO2 <-> P1.02 (Arduino GPIO number 34)
+ IO3 <-> P0.21 (Arduino GPIO number 21)
+ IO4 <-> P0.04 (Arduino GPIO number 4)
+ IO5 <-> P0.09 (Arduino GPIO number 9)
+ IO6 <-> P0.10 (Arduino GPIO number 10)
+ IO7 <-> P0.28 (Arduino GPIO number 28)
+ SW1 <-> P0.01 (Arduino GPIO number 1)
+ A0 <-> P0.04/AIN2 (Arduino Analog A2
+ A1 <-> P0.31/AIN7 (Arduino Analog A7
+ SPI_CS <-> P0.26 (Arduino GPIO number 26)
+ */
+
+// RAK4630 LoRa module
+
+/* Setup of the SX1262 LoRa module ( https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Datasheet/ )
+
+P1.10 NSS SPI NSS (Arduino GPIO number 42)
+P1.11 SCK SPI CLK (Arduino GPIO number 43)
+P1.12 MOSI SPI MOSI (Arduino GPIO number 44)
+P1.13 MISO SPI MISO (Arduino GPIO number 45)
+P1.14 BUSY BUSY signal (Arduino GPIO number 46)
+P1.15 DIO1 DIO1 event interrupt (Arduino GPIO number 47)
+P1.06 NRESET NRESET manual reset of the SX1262 (Arduino GPIO number 38)
+
+Important for successful SX1262 initialization:
+
+* Setup DIO2 to control the antenna switch
+* Setup DIO3 to control the TCXO power supply
+* Setup the SX1262 to use it's DCDC regulator and not the LDO
+* RAK4630 schematics show GPIO P1.07 connected to the antenna switch, but it should not be initialized, as DIO2 will do the
+control of the antenna switch
+
+SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
+
+*/
+
+#define DETECTION_SENSOR_EN 4
+
+#define USE_SX1262
+#define SX126X_CS (42)
+#define SX126X_DIO1 (47)
+#define SX126X_BUSY (46)
+#define SX126X_RESET (38)
+// #define SX126X_TXEN (39)
+// #define SX126X_RXEN (37)
+#define SX126X_POWER_EN (37)
+// DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3
+#define SX126X_DIO2_AS_RF_SWITCH
+#define SX126X_DIO3_TCXO_VOLTAGE 1.8
+
+// Testing USB detection
+#define NRF_APM
+
+// enables 3.3V periphery like GPS or IO Module
+// Do not toggle this for GPS power savings
+#define PIN_3V3_EN (34)
+
+// RAK WISMESHTAG
+#define PIN_GPS_EN PIN_3V3_EN
+#define PIN_GPS_PPS (17) // Pulse per second input from the GPS
+
+#define GPS_RX_PIN PIN_SERIAL1_RX
+#define GPS_TX_PIN PIN_SERIAL1_TX
+
+// RAK WISMESHTAG
+#define PIN_BUZZER 21
+
+// Battery
+// The battery sense is hooked to pin A0 (5)
+#define BATTERY_PIN PIN_A0
+// and has 12 bit resolution
+#define BATTERY_SENSE_RESOLUTION_BITS 12
+#define BATTERY_SENSE_RESOLUTION 4096.0
+#undef AREF_VOLTAGE
+#define AREF_VOLTAGE 3.0
+#define VBAT_AR_INTERNAL AR_INTERNAL_3_0
+#define ADC_MULTIPLIER 1.73
+
+#define RAK_4631 1
+
+#ifdef __cplusplus
+}
+#endif
+
+/*----------------------------------------------------------------------------
+ * Arduino objects - C++ only
+ *----------------------------------------------------------------------------*/
+
+#endif
\ No newline at end of file
diff --git a/variants/rak_wismeshtap/platformio.ini b/variants/nrf52840/rak_wismeshtap/platformio.ini
similarity index 87%
rename from variants/rak_wismeshtap/platformio.ini
rename to variants/nrf52840/rak_wismeshtap/platformio.ini
index bfb3ea927..f6ee8fd23 100644
--- a/variants/rak_wismeshtap/platformio.ini
+++ b/variants/nrf52840/rak_wismeshtap/platformio.ini
@@ -2,7 +2,10 @@
[env:rak_wismeshtap]
extends = nrf52840_base
board = wiscore_rak4631
-build_flags = ${nrf52840_base.build_flags} -Ivariants/rak_wismeshtap -DWISMESH_TAP -DRAK_4631
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/rak_wismeshtap
+ -DWISMESH_TAP
+ -DRAK_4631
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-DEINK_DISPLAY_MODEL=GxEPD2_213_BN
-DEINK_WIDTH=250
@@ -12,7 +15,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/rak_wismeshtap -DWISMESH_T
-DMESHTASTIC_EXCLUDE_STOREFORWARD=1
-DMESHTASTIC_EXCLUDE_POWER_TELEMETRY=1
-DMESHTASTIC_EXCLUDE_ATAK=1
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak_wismeshtap> + + +
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak_wismeshtap> + + +
lib_deps =
${nrf52840_base.lib_deps}
${networking_base.lib_deps}
diff --git a/variants/rak_wismeshtap/variant.cpp b/variants/nrf52840/rak_wismeshtap/variant.cpp
similarity index 100%
rename from variants/rak_wismeshtap/variant.cpp
rename to variants/nrf52840/rak_wismeshtap/variant.cpp
diff --git a/variants/rak_wismeshtap/variant.h b/variants/nrf52840/rak_wismeshtap/variant.h
similarity index 100%
rename from variants/rak_wismeshtap/variant.h
rename to variants/nrf52840/rak_wismeshtap/variant.h
diff --git a/variants/seeed_solar_node/platformio.ini b/variants/nrf52840/seeed_solar_node/platformio.ini
similarity index 70%
rename from variants/seeed_solar_node/platformio.ini
rename to variants/nrf52840/seeed_solar_node/platformio.ini
index eb91a435f..b2a128c57 100644
--- a/variants/seeed_solar_node/platformio.ini
+++ b/variants/nrf52840/seeed_solar_node/platformio.ini
@@ -3,11 +3,12 @@ board = seeed_solar_node
extends = nrf52840_base
;board_level = extra
build_flags = ${nrf52840_base.build_flags}
- -I $PROJECT_DIR/variants/seeed_solar_node
+ -I variants/nrf52840/seeed_solar_node
-D SEEED_SOLAR_NODE
- -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52
+ -I src/platform/nrf52/softdevice
+ -I src/platform/nrf52/softdevice/nrf52
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/seeed_solar_node>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/seeed_solar_node>
lib_deps =
${nrf52840_base.lib_deps}
debug_tool = jlink
diff --git a/variants/seeed_solar_node/variant.cpp b/variants/nrf52840/seeed_solar_node/variant.cpp
similarity index 100%
rename from variants/seeed_solar_node/variant.cpp
rename to variants/nrf52840/seeed_solar_node/variant.cpp
diff --git a/variants/seeed_solar_node/variant.h b/variants/nrf52840/seeed_solar_node/variant.h
similarity index 100%
rename from variants/seeed_solar_node/variant.h
rename to variants/nrf52840/seeed_solar_node/variant.h
diff --git a/variants/seeed_wio_tracker_L1/platformio.ini b/variants/nrf52840/seeed_wio_tracker_L1/platformio.ini
similarity index 61%
rename from variants/seeed_wio_tracker_L1/platformio.ini
rename to variants/nrf52840/seeed_wio_tracker_L1/platformio.ini
index 3c4653d7e..6c137384d 100644
--- a/variants/seeed_wio_tracker_L1/platformio.ini
+++ b/variants/nrf52840/seeed_wio_tracker_L1/platformio.ini
@@ -1,13 +1,13 @@
[env:seeed_wio_tracker_L1]
board = seeed_wio_tracker_L1
extends = nrf52840_base
-;board_level = extra
build_flags = ${nrf52840_base.build_flags}
- -I $PROJECT_DIR/variants/seeed_wio_tracker_L1
- -D SEEED_WIO_TRACKER_L1
- -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52
+ -I variants/nrf52840/seeed_wio_tracker_L1
+ -D SEEED_WIO_TRACKER_L1
+ -I src/platform/nrf52/softdevice
+ -I src/platform/nrf52/softdevice/nrf52
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/seeed_wio_tracker_L1>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/seeed_wio_tracker_L1>
lib_deps =
${nrf52840_base.lib_deps}
debug_tool = jlink
diff --git a/variants/seeed_wio_tracker_L1/variant.cpp b/variants/nrf52840/seeed_wio_tracker_L1/variant.cpp
similarity index 100%
rename from variants/seeed_wio_tracker_L1/variant.cpp
rename to variants/nrf52840/seeed_wio_tracker_L1/variant.cpp
diff --git a/variants/seeed_wio_tracker_L1/variant.h b/variants/nrf52840/seeed_wio_tracker_L1/variant.h
similarity index 100%
rename from variants/seeed_wio_tracker_L1/variant.h
rename to variants/nrf52840/seeed_wio_tracker_L1/variant.h
diff --git a/variants/seeed_wio_tracker_L1_eink/nicheGraphics.h b/variants/nrf52840/seeed_wio_tracker_L1_eink/nicheGraphics.h
similarity index 97%
rename from variants/seeed_wio_tracker_L1_eink/nicheGraphics.h
rename to variants/nrf52840/seeed_wio_tracker_L1_eink/nicheGraphics.h
index 12ec4479a..a32753343 100644
--- a/variants/seeed_wio_tracker_L1_eink/nicheGraphics.h
+++ b/variants/nrf52840/seeed_wio_tracker_L1_eink/nicheGraphics.h
@@ -57,7 +57,8 @@ void setupNicheGraphics()
inkhud->setDisplayResilience(7, 1.5);
// Select fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Customize default settings
diff --git a/variants/seeed_wio_tracker_L1_eink/platformio.ini b/variants/nrf52840/seeed_wio_tracker_L1_eink/platformio.ini
similarity index 50%
rename from variants/seeed_wio_tracker_L1_eink/platformio.ini
rename to variants/nrf52840/seeed_wio_tracker_L1_eink/platformio.ini
index b84757b9d..52ff39d49 100644
--- a/variants/seeed_wio_tracker_L1_eink/platformio.ini
+++ b/variants/nrf52840/seeed_wio_tracker_L1_eink/platformio.ini
@@ -2,12 +2,15 @@
board = seeed_wio_tracker_L1
extends = nrf52840_base, inkhud
;board_level = extra
-build_flags = ${nrf52840_base.build_flags} ${inkhud.build_flags}
- -I $PROJECT_DIR/variants/seeed_wio_tracker_L1_eink
- -D SEEED_WIO_TRACKER_L1
- -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52
+build_flags = ${nrf52840_base.build_flags}
+ ${inkhud.build_flags}
+ -I variants/nrf52840/seeed_wio_tracker_L1_eink
+ -D SEEED_WIO_TRACKER_L1_EINK
+ -D SEEED_WIO_TRACKER_L1
+ -I src/platform/nrf52/softdevice
+ -I src/platform/nrf52/softdevice/nrf52
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/seeed_wio_tracker_L1_eink> ${inkhud.build_src_filter}
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/seeed_wio_tracker_L1_eink> ${inkhud.build_src_filter}
lib_deps =
${inkhud.lib_deps}
${nrf52840_base.lib_deps}
diff --git a/variants/seeed_wio_tracker_L1_eink/variant.cpp b/variants/nrf52840/seeed_wio_tracker_L1_eink/variant.cpp
similarity index 100%
rename from variants/seeed_wio_tracker_L1_eink/variant.cpp
rename to variants/nrf52840/seeed_wio_tracker_L1_eink/variant.cpp
diff --git a/variants/seeed_wio_tracker_L1_eink/variant.h b/variants/nrf52840/seeed_wio_tracker_L1_eink/variant.h
similarity index 100%
rename from variants/seeed_wio_tracker_L1_eink/variant.h
rename to variants/nrf52840/seeed_wio_tracker_L1_eink/variant.h
diff --git a/variants/seeed_xiao_nrf52840_kit/platformio.ini b/variants/nrf52840/seeed_xiao_nrf52840_kit/platformio.ini
similarity index 56%
rename from variants/seeed_xiao_nrf52840_kit/platformio.ini
rename to variants/nrf52840/seeed_xiao_nrf52840_kit/platformio.ini
index 8c4c5a57b..623eace71 100644
--- a/variants/seeed_xiao_nrf52840_kit/platformio.ini
+++ b/variants/nrf52840/seeed_xiao_nrf52840_kit/platformio.ini
@@ -1,10 +1,16 @@
-; Seeed Xiao BLE: https://www.digikey.com/en/products/detail/seeed-technology-co-ltd/102010448/16652893
+; Seeed Xiao BLE: https://wiki.seeedstudio.com/XIAO_BLE/
[env:seeed_xiao_nrf52840_kit]
extends = nrf52840_base
board = xiao_ble_sense
-build_flags = ${nrf52840_base.build_flags} -Ivariants/seeed_xiao_nrf52840_kit -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DSEEED_XIAO_NRF52840_KIT -DGPS_L76K
+board_level = pr
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/seeed_xiao_nrf52840_kit
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
+ -DSEEED_XIAO_NRF52840_KIT
+ -DGPS_L76K
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/seeed_xiao_nrf52840_kit>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/seeed_xiao_nrf52840_kit>
lib_deps =
${nrf52840_base.lib_deps}
debug_tool = jlink
diff --git a/variants/seeed_xiao_nrf52840_kit/variant.cpp b/variants/nrf52840/seeed_xiao_nrf52840_kit/variant.cpp
similarity index 100%
rename from variants/seeed_xiao_nrf52840_kit/variant.cpp
rename to variants/nrf52840/seeed_xiao_nrf52840_kit/variant.cpp
diff --git a/variants/seeed_xiao_nrf52840_kit/variant.h b/variants/nrf52840/seeed_xiao_nrf52840_kit/variant.h
similarity index 100%
rename from variants/seeed_xiao_nrf52840_kit/variant.h
rename to variants/nrf52840/seeed_xiao_nrf52840_kit/variant.h
diff --git a/variants/t-echo/nicheGraphics.h b/variants/nrf52840/t-echo/nicheGraphics.h
similarity index 97%
rename from variants/t-echo/nicheGraphics.h
rename to variants/nrf52840/t-echo/nicheGraphics.h
index 03185cf5b..c89d816b9 100644
--- a/variants/t-echo/nicheGraphics.h
+++ b/variants/nrf52840/t-echo/nicheGraphics.h
@@ -57,7 +57,8 @@ void setupNicheGraphics()
inkhud->setDisplayResilience(20, 1.5);
// Select fonts
- InkHUD::Applet::fontLarge = FREESANS_9PT_WIN1252;
+ InkHUD::Applet::fontLarge = FREESANS_12PT_WIN1252;
+ InkHUD::Applet::fontMedium = FREESANS_9PT_WIN1252;
InkHUD::Applet::fontSmall = FREESANS_6PT_WIN1252;
// Customize default settings
diff --git a/variants/t-echo/platformio.ini b/variants/nrf52840/t-echo/platformio.ini
similarity index 87%
rename from variants/t-echo/platformio.ini
rename to variants/nrf52840/t-echo/platformio.ini
index 85c3b5799..6541c9796 100644
--- a/variants/t-echo/platformio.ini
+++ b/variants/nrf52840/t-echo/platformio.ini
@@ -2,11 +2,13 @@
[env:t-echo]
extends = nrf52840_base
board = t-echo
+board_level = pr
board_check = true
debug_tool = jlink
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
-build_flags = ${nrf52840_base.build_flags} -Ivariants/t-echo
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/t-echo
-DGPS_POWER_TOGGLE
-DEINK_DISPLAY_MODEL=GxEPD2_154_D67
-DEINK_WIDTH=200
@@ -16,7 +18,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/t-echo
-DEINK_LIMIT_FASTREFRESH=20 ; How many consecutive fast-refreshes are permitted
-DEINK_BACKGROUND_USES_FAST ; (Optional) Use FAST refresh for both BACKGROUND and RESPONSIVE, until a limit is reached.
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/t-echo>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/t-echo>
lib_deps =
${nrf52840_base.lib_deps}
https://github.com/meshtastic/GxEPD2/archive/55f618961db45a23eff0233546430f1e5a80f63a.zip
@@ -26,16 +28,17 @@ lib_deps =
[env:t-echo-inkhud]
extends = nrf52840_base, inkhud
board = t-echo
+board_level = pr
board_check = true
debug_tool = jlink
build_flags =
${nrf52840_base.build_flags}
${inkhud.build_flags}
- -I variants/t-echo
+ -I variants/nrf52840/t-echo
build_src_filter =
${nrf52_base.build_src_filter}
${inkhud.build_src_filter}
- +<../variants/t-echo>
+ +<../variants/nrf52840/t-echo>
lib_deps =
${inkhud.lib_deps} ; InkHUD libs first, so we get GFXRoot instead of AdafruitGFX
${nrf52840_base.lib_deps}
diff --git a/variants/t-echo/variant.cpp b/variants/nrf52840/t-echo/variant.cpp
similarity index 100%
rename from variants/t-echo/variant.cpp
rename to variants/nrf52840/t-echo/variant.cpp
diff --git a/variants/t-echo/variant.h b/variants/nrf52840/t-echo/variant.h
similarity index 100%
rename from variants/t-echo/variant.h
rename to variants/nrf52840/t-echo/variant.h
diff --git a/variants/tracker-t1000-e/platformio.ini b/variants/nrf52840/tracker-t1000-e/platformio.ini
similarity index 76%
rename from variants/tracker-t1000-e/platformio.ini
rename to variants/nrf52840/tracker-t1000-e/platformio.ini
index b1f11d524..c6c3f269c 100644
--- a/variants/tracker-t1000-e/platformio.ini
+++ b/variants/nrf52840/tracker-t1000-e/platformio.ini
@@ -1,7 +1,12 @@
[env:tracker-t1000-e]
extends = nrf52840_base
board = tracker-t1000-e
-build_flags = ${nrf52840_base.build_flags} -Ivariants/tracker-t1000-e -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DTRACKER_T1000_E
+board_level = pr
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/tracker-t1000-e
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
+ -DTRACKER_T1000_E
-DGPS_POWER_TOGGLE
-DMESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR_EXTERNAL=1
-DMESHTASTIC_EXCLUDE_CANNEDMESSAGES=1
@@ -9,7 +14,7 @@ build_flags = ${nrf52840_base.build_flags} -Ivariants/tracker-t1000-e -Isrc/plat
-DMESHTASTIC_EXCLUDE_DETECTIONSENSOR=1
-DMESHTASTIC_EXCLUDE_WIFI=1
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/tracker-t1000-e>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/tracker-t1000-e>
lib_deps =
${nrf52840_base.lib_deps}
https://github.com/meshtastic/QMA6100P_Arduino_Library/archive/14c900b8b2e4feaac5007a7e41e0c1b7f0841136.zip
diff --git a/variants/tracker-t1000-e/rfswitch.h b/variants/nrf52840/tracker-t1000-e/rfswitch.h
similarity index 100%
rename from variants/tracker-t1000-e/rfswitch.h
rename to variants/nrf52840/tracker-t1000-e/rfswitch.h
diff --git a/variants/tracker-t1000-e/variant.cpp b/variants/nrf52840/tracker-t1000-e/variant.cpp
similarity index 100%
rename from variants/tracker-t1000-e/variant.cpp
rename to variants/nrf52840/tracker-t1000-e/variant.cpp
diff --git a/variants/tracker-t1000-e/variant.h b/variants/nrf52840/tracker-t1000-e/variant.h
similarity index 100%
rename from variants/tracker-t1000-e/variant.h
rename to variants/nrf52840/tracker-t1000-e/variant.h
diff --git a/variants/wio-sdk-wm1110/platformio.ini b/variants/nrf52840/wio-sdk-wm1110/platformio.ini
similarity index 80%
rename from variants/wio-sdk-wm1110/platformio.ini
rename to variants/nrf52840/wio-sdk-wm1110/platformio.ini
index 4e1415678..2c65246b8 100644
--- a/variants/wio-sdk-wm1110/platformio.ini
+++ b/variants/nrf52840/wio-sdk-wm1110/platformio.ini
@@ -4,16 +4,20 @@ extends = nrf52840_base
board = wio-sdk-wm1110
extra_scripts =
- bin/platformio-custom.py
+ ${env.extra_scripts}
extra_scripts/disable_adafruit_usb.py
# Remove adafruit USB serial from the build (it is incompatible with using the ch340 serial chip on this board)
build_unflags = ${nrf52840_base:build_unflags} -DUSBCON -DUSE_TINYUSB
-build_flags = ${nrf52840_base.build_flags} -Ivariants/wio-sdk-wm1110 -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DWIO_WM1110
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/wio-sdk-wm1110
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
+ -DWIO_WM1110
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
-DCFG_TUD_CDC=0
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/wio-sdk-wm1110>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/wio-sdk-wm1110>
;debug_tool = jlink
debug_tool = stlink
diff --git a/variants/wio-sdk-wm1110/rfswitch.h b/variants/nrf52840/wio-sdk-wm1110/rfswitch.h
similarity index 100%
rename from variants/wio-sdk-wm1110/rfswitch.h
rename to variants/nrf52840/wio-sdk-wm1110/rfswitch.h
diff --git a/variants/wio-sdk-wm1110/variant.cpp b/variants/nrf52840/wio-sdk-wm1110/variant.cpp
similarity index 100%
rename from variants/wio-sdk-wm1110/variant.cpp
rename to variants/nrf52840/wio-sdk-wm1110/variant.cpp
diff --git a/variants/wio-sdk-wm1110/variant.h b/variants/nrf52840/wio-sdk-wm1110/variant.h
similarity index 100%
rename from variants/wio-sdk-wm1110/variant.h
rename to variants/nrf52840/wio-sdk-wm1110/variant.h
diff --git a/variants/wio-t1000-s/platformio.ini b/variants/nrf52840/wio-t1000-s/platformio.ini
similarity index 77%
rename from variants/wio-t1000-s/platformio.ini
rename to variants/nrf52840/wio-t1000-s/platformio.ini
index 2eab1e1c5..3594bcf07 100644
--- a/variants/wio-t1000-s/platformio.ini
+++ b/variants/nrf52840/wio-t1000-s/platformio.ini
@@ -3,10 +3,14 @@
extends = nrf52840_base
board = wio-t1000-s
board_level = extra
-build_flags = ${nrf52840_base.build_flags} -Ivariants/wio-t1000-s -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DWIO_WM1110
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/wio-t1000-s
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
+ -DWIO_WM1110
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/wio-t1000-s>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/wio-t1000-s>
lib_deps =
${nrf52840_base.lib_deps}
debug_tool = jlink
diff --git a/variants/wio-t1000-s/rfswitch.h b/variants/nrf52840/wio-t1000-s/rfswitch.h
similarity index 100%
rename from variants/wio-t1000-s/rfswitch.h
rename to variants/nrf52840/wio-t1000-s/rfswitch.h
diff --git a/variants/wio-t1000-s/variant.cpp b/variants/nrf52840/wio-t1000-s/variant.cpp
similarity index 100%
rename from variants/wio-t1000-s/variant.cpp
rename to variants/nrf52840/wio-t1000-s/variant.cpp
diff --git a/variants/wio-t1000-s/variant.h b/variants/nrf52840/wio-t1000-s/variant.h
similarity index 100%
rename from variants/wio-t1000-s/variant.h
rename to variants/nrf52840/wio-t1000-s/variant.h
diff --git a/variants/wio-tracker-wm1110/platformio.ini b/variants/nrf52840/wio-tracker-wm1110/platformio.ini
similarity index 73%
rename from variants/wio-tracker-wm1110/platformio.ini
rename to variants/nrf52840/wio-tracker-wm1110/platformio.ini
index a6960b435..b383043bb 100644
--- a/variants/wio-tracker-wm1110/platformio.ini
+++ b/variants/nrf52840/wio-tracker-wm1110/platformio.ini
@@ -2,10 +2,14 @@
[env:wio-tracker-wm1110]
extends = nrf52840_base
board = wio-tracker-wm1110
-build_flags = ${nrf52840_base.build_flags} -Ivariants/wio-tracker-wm1110 -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DWIO_WM1110
+build_flags = ${nrf52840_base.build_flags}
+ -Ivariants/nrf52840/wio-tracker-wm1110
+ -Isrc/platform/nrf52/softdevice
+ -Isrc/platform/nrf52/softdevice/nrf52
+ -DWIO_WM1110
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
-build_src_filter = ${nrf52_base.build_src_filter} +<../variants/wio-tracker-wm1110>
+build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/wio-tracker-wm1110>
lib_deps =
${nrf52840_base.lib_deps}
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
diff --git a/variants/wio-tracker-wm1110/rfswitch.h b/variants/nrf52840/wio-tracker-wm1110/rfswitch.h
similarity index 100%
rename from variants/wio-tracker-wm1110/rfswitch.h
rename to variants/nrf52840/wio-tracker-wm1110/rfswitch.h
diff --git a/variants/wio-tracker-wm1110/variant.cpp b/variants/nrf52840/wio-tracker-wm1110/variant.cpp
similarity index 100%
rename from variants/wio-tracker-wm1110/variant.cpp
rename to variants/nrf52840/wio-tracker-wm1110/variant.cpp
diff --git a/variants/wio-tracker-wm1110/variant.h b/variants/nrf52840/wio-tracker-wm1110/variant.h
similarity index 100%
rename from variants/wio-tracker-wm1110/variant.h
rename to variants/nrf52840/wio-tracker-wm1110/variant.h
diff --git a/variants/rak11200/platformio.ini b/variants/rak11200/platformio.ini
deleted file mode 100644
index eddc3458e..000000000
--- a/variants/rak11200/platformio.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[env:rak11200]
-extends = esp32_base
-board = wiscore_rak11200
-board_check = true
-build_flags =
- ${esp32_base.build_flags} -D RAK_11200 -I variants/rak11200
-upload_speed = 115200
\ No newline at end of file
diff --git a/variants/rak3172/platformio.ini b/variants/rak3172/platformio.ini
deleted file mode 100644
index 456697aef..000000000
--- a/variants/rak3172/platformio.ini
+++ /dev/null
@@ -1,23 +0,0 @@
-[env:rak3172]
-extends = stm32_base
-board = wiscore_rak3172
-board_upload.maximum_size = 233472 ; reserve the last 28KB for filesystem
-build_flags =
- ${stm32_base.build_flags}
- -Ivariants/rak3172
- -DHAL_DAC_MODULE_ONLY
- -DHAL_RNG_MODULE_ENABLED
- -DRADIOLIB_EXCLUDE_SX128X=1
- -DRADIOLIB_EXCLUDE_SX127X=1
- -DRADIOLIB_EXCLUDE_LR11X0=1
- -DMESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR=1
- -DMESHTASTIC_EXCLUDE_I2C=1
- -DMESHTASTIC_EXCLUDE_WIFI=1
- -DMESHTASTIC_EXCLUDE_BLUETOOTH=1
- -DMESHTASTIC_EXCLUDE_GPS=1
- -DMESHTASTIC_EXCLUDE_SCREEN=1
- -DMESHTASTIC_EXCLUDE_MQTT=1
- -DMESHTASTIC_EXCLUDE_POWERMON=1
- ;-DPIO_FRAMEWORK_ARDUINO_NANOLIB_FLOAT_PRINTF
- ;-DCFG_DEBUG
-upload_port = stlink
diff --git a/variants/ec_catsniffer/platformio.ini b/variants/rp2040/ec_catsniffer/platformio.ini
similarity index 50%
rename from variants/ec_catsniffer/platformio.ini
rename to variants/rp2040/ec_catsniffer/platformio.ini
index 6db9abe90..acf19d757 100644
--- a/variants/ec_catsniffer/platformio.ini
+++ b/variants/rp2040/ec_catsniffer/platformio.ini
@@ -2,13 +2,13 @@
extends = rp2040_base
board = rpipico
upload_protocol = picotool
-
-build_flags = ${rp2040_base.build_flags}
- -DRPI_PICO
- -Ivariants/ec_catsniffer
- -DDEBUG_RP2040_PORT=Serial
- # -DHW_SPI1_DEVICE
+build_flags =
+ ${rp2040_base.build_flags}
+ -D RPI_PICO
+ -I variants/rp2040/ec_catsniffer
+ -D DEBUG_RP2040_PORT=Serial
+ ; -D HW_SPI1_DEVICE
lib_deps =
${rp2040_base.lib_deps}
debug_build_flags = ${rp2040_base.build_flags}, -g
-debug_tool = cmsis-dap
\ No newline at end of file
+debug_tool = cmsis-dap
diff --git a/variants/ec_catsniffer/variant.cpp b/variants/rp2040/ec_catsniffer/variant.cpp
similarity index 100%
rename from variants/ec_catsniffer/variant.cpp
rename to variants/rp2040/ec_catsniffer/variant.cpp
diff --git a/variants/ec_catsniffer/variant.h b/variants/rp2040/ec_catsniffer/variant.h
similarity index 100%
rename from variants/ec_catsniffer/variant.h
rename to variants/rp2040/ec_catsniffer/variant.h
diff --git a/variants/feather_rp2040_rfm95/platformio.ini b/variants/rp2040/feather_rp2040_rfm95/platformio.ini
similarity index 53%
rename from variants/feather_rp2040_rfm95/platformio.ini
rename to variants/rp2040/feather_rp2040_rfm95/platformio.ini
index db1eb4f02..ef4118cb0 100644
--- a/variants/feather_rp2040_rfm95/platformio.ini
+++ b/variants/rp2040/feather_rp2040_rfm95/platformio.ini
@@ -2,14 +2,14 @@
extends = rp2040_base
board = adafruit_feather
upload_protocol = picotool
-
# add our variants files to the include and src paths
-build_flags = ${rp2040_base.build_flags}
- -DRP2040_FEATHER_RFM95
- -Ivariants/feather_rp2040_rfm95
- -DDEBUG_RP2040_PORT=Serial
- -DHW_SPI1_DEVICE
+build_flags =
+ ${rp2040_base.build_flags}
+ -D RP2040_FEATHER_RFM95
+ -I variants/rp2040/feather_rp2040_rfm95
+ -D DEBUG_RP2040_PORT=Serial
+ -D HW_SPI1_DEVICE
lib_deps =
${rp2040_base.lib_deps}
debug_build_flags = ${rp2040_base.build_flags}
-debug_tool = cmsis-dap ; for e.g. Picotool
\ No newline at end of file
+debug_tool = cmsis-dap ; for e.g. Picotool
diff --git a/variants/feather_rp2040_rfm95/variant.h b/variants/rp2040/feather_rp2040_rfm95/variant.h
similarity index 100%
rename from variants/feather_rp2040_rfm95/variant.h
rename to variants/rp2040/feather_rp2040_rfm95/variant.h
diff --git a/variants/nibble_rp2040/platformio.ini b/variants/rp2040/nibble_rp2040/platformio.ini
similarity index 56%
rename from variants/nibble_rp2040/platformio.ini
rename to variants/rp2040/nibble_rp2040/platformio.ini
index c3a1923c5..024a72206 100644
--- a/variants/nibble_rp2040/platformio.ini
+++ b/variants/rp2040/nibble_rp2040/platformio.ini
@@ -3,14 +3,14 @@ extends = rp2040_base
board = rpipico
board_level = extra
upload_protocol = picotool
-
# add our variants files to the include and src paths
-build_flags = ${rp2040_base.build_flags}
- -DPRIVATE_HW
- -Ivariants/nibble_rp2040
- -DDEBUG_RP2040_PORT=Serial
- -DHW_SPI1_DEVICE
+build_flags =
+ ${rp2040_base.build_flags}
+ -D PRIVATE_HW
+ -I variants/rp2040/nibble_rp2040
+ -D DEBUG_RP2040_PORT=Serial
+ -D HW_SPI1_DEVICE
lib_deps =
${rp2040_base.lib_deps}
debug_build_flags = ${rp2040_base.build_flags}, -g
-debug_tool = cmsis-dap ; for e.g. Picotool
\ No newline at end of file
+debug_tool = cmsis-dap ; for e.g. Picotool
diff --git a/variants/nibble_rp2040/variant.h b/variants/rp2040/nibble_rp2040/variant.h
similarity index 100%
rename from variants/nibble_rp2040/variant.h
rename to variants/rp2040/nibble_rp2040/variant.h
diff --git a/variants/rak11310/pins_arduino.h b/variants/rp2040/rak11310/pins_arduino.h
similarity index 100%
rename from variants/rak11310/pins_arduino.h
rename to variants/rp2040/rak11310/pins_arduino.h
diff --git a/variants/rak11310/platformio.ini b/variants/rp2040/rak11310/platformio.ini
similarity index 62%
rename from variants/rak11310/platformio.ini
rename to variants/rp2040/rak11310/platformio.ini
index fd7e842cc..f3eaa176e 100644
--- a/variants/rak11310/platformio.ini
+++ b/variants/rp2040/rak11310/platformio.ini
@@ -1,19 +1,20 @@
[env:rak11310]
extends = rp2040_base
board = rakwireless_rak11300
+board_level = pr
upload_protocol = picotool
-
# add our variants files to the include and src paths
-build_flags = ${rp2040_base.build_flags}
- -DRAK11310
- -Ivariants/rak11310
- -DDEBUG_RP2040_PORT=Serial
- -DRV3028_RTC=0x52
-build_src_filter = ${rp2040_base.build_src_filter} +<../variants/rak11310> + + +
+build_flags =
+ ${rp2040_base.build_flags}
+ -D RAK11310
+ -I variants/rp2040/rak11310
+ -D DEBUG_RP2040_PORT=Serial
+ -D RV3028_RTC=0x52
+build_src_filter = ${rp2040_base.build_src_filter} +<../variants/rp2040/rak11310> + + +
lib_deps =
${rp2040_base.lib_deps}
${networking_base.lib_deps}
melopero/Melopero RV3028@^1.1.0
https://github.com/RAKWireless/RAK13800-W5100S/archive/1.0.2.zip
debug_build_flags = ${rp2040_base.build_flags}, -g
-debug_tool = cmsis-dap ; for e.g. Picotool
\ No newline at end of file
+debug_tool = cmsis-dap ; for e.g. Picotool
diff --git a/variants/rak11310/variant.h b/variants/rp2040/rak11310/variant.h
similarity index 100%
rename from variants/rak11310/variant.h
rename to variants/rp2040/rak11310/variant.h
diff --git a/variants/rp2040-lora/platformio.ini b/variants/rp2040/rp2040-lora/platformio.ini
similarity index 54%
rename from variants/rp2040-lora/platformio.ini
rename to variants/rp2040/rp2040-lora/platformio.ini
index 7ac5b2cac..d59e74f20 100644
--- a/variants/rp2040-lora/platformio.ini
+++ b/variants/rp2040/rp2040-lora/platformio.ini
@@ -2,14 +2,14 @@
extends = rp2040_base
board = rpipico
upload_protocol = picotool
-
# add our variants files to the include and src paths
-build_flags = ${rp2040_base.build_flags}
- -DRP2040_LORA
- -Ivariants/rp2040-lora
- -DDEBUG_RP2040_PORT=Serial
- -DHW_SPI1_DEVICE
+build_flags =
+ ${rp2040_base.build_flags}
+ -D RP2040_LORA
+ -I variants/rp2040/rp2040-lora
+ -D DEBUG_RP2040_PORT=Serial
+ -D HW_SPI1_DEVICE
lib_deps =
${rp2040_base.lib_deps}
debug_build_flags = ${rp2040_base.build_flags}, -g
-debug_tool = cmsis-dap ; for e.g. Picotool
\ No newline at end of file
+debug_tool = cmsis-dap ; for e.g. Picotool
diff --git a/variants/rp2040-lora/variant.h b/variants/rp2040/rp2040-lora/variant.h
similarity index 100%
rename from variants/rp2040-lora/variant.h
rename to variants/rp2040/rp2040-lora/variant.h
diff --git a/variants/rpipico-slowclock/platformio.ini b/variants/rp2040/rpipico-slowclock/platformio.ini
similarity index 85%
rename from variants/rpipico-slowclock/platformio.ini
rename to variants/rp2040/rpipico-slowclock/platformio.ini
index c56f9e78c..30928aead 100644
--- a/variants/rpipico-slowclock/platformio.ini
+++ b/variants/rp2040/rpipico-slowclock/platformio.ini
@@ -12,11 +12,11 @@ debug_init_cmds =
$LOAD_CMDS
monitor init
monitor reset halt
-
# add our variants files to the include and src paths
-build_flags = ${rp2040_base.build_flags}
+build_flags =
+ ${rp2040_base.build_flags}
-DRPI_PICO
- -Ivariants/rpipico-slowclock
+ -Ivariants/rp2040/rpipico-slowclock
-DDEBUG_RP2040_PORT=Serial2
-DHW_SPI1_DEVICE
-g
@@ -25,4 +25,4 @@ lib_deps =
${rp2040_base.lib_deps}
debug_build_flags = ${rp2040_base.build_flags}
-g
- -DNO_USB
\ No newline at end of file
+ -DNO_USB
diff --git a/variants/rpipico-slowclock/variant.h b/variants/rp2040/rpipico-slowclock/variant.h
similarity index 100%
rename from variants/rpipico-slowclock/variant.h
rename to variants/rp2040/rpipico-slowclock/variant.h
diff --git a/variants/rpipico/platformio.ini b/variants/rp2040/rpipico/platformio.ini
similarity index 52%
rename from variants/rpipico/platformio.ini
rename to variants/rp2040/rpipico/platformio.ini
index e34cfa43b..a6171bbac 100644
--- a/variants/rpipico/platformio.ini
+++ b/variants/rp2040/rpipico/platformio.ini
@@ -1,15 +1,17 @@
[env:pico]
extends = rp2040_base
board = rpipico
+board_level = pr
upload_protocol = picotool
# add our variants files to the include and src paths
-build_flags = ${rp2040_base.build_flags}
- -DRPI_PICO
- -Ivariants/rpipico
- -DDEBUG_RP2040_PORT=Serial
- -DHW_SPI1_DEVICE
+build_flags =
+ ${rp2040_base.build_flags}
+ -D RPI_PICO
+ -I variants/rp2040/rpipico
+ -D DEBUG_RP2040_PORT=Serial
+ -D HW_SPI1_DEVICE
lib_deps =
${rp2040_base.lib_deps}
debug_build_flags = ${rp2040_base.build_flags}, -g
-debug_tool = cmsis-dap ; for e.g. Picotool
\ No newline at end of file
+debug_tool = cmsis-dap ; for e.g. Picotool
diff --git a/variants/rpipico/variant.h b/variants/rp2040/rpipico/variant.h
similarity index 100%
rename from variants/rpipico/variant.h
rename to variants/rp2040/rpipico/variant.h
diff --git a/variants/rpipicow/platformio.ini b/variants/rp2040/rpipicow/platformio.ini
similarity index 70%
rename from variants/rpipicow/platformio.ini
rename to variants/rp2040/rpipicow/platformio.ini
index e59944b5d..60845ba39 100644
--- a/variants/rpipicow/platformio.ini
+++ b/variants/rp2040/rpipicow/platformio.ini
@@ -1,15 +1,17 @@
[env:picow]
extends = rp2040_base
board = rpipicow
+board_level = pr
+board_check = true
upload_protocol = picotool
-
# add our variants files to the include and src paths
-build_flags = ${rp2040_base.build_flags}
- -DRPI_PICO
- -Ivariants/rpipicow
- -DHW_SPI1_DEVICE
+build_flags =
+ ${rp2040_base.build_flags}
+ -D RPI_PICO
+ -I variants/rp2040/rpipicow
+ -D HW_SPI1_DEVICE
+ -D HAS_UDP_MULTICAST=1
-fexceptions # for exception handling in MQTT
- -DHAS_UDP_MULTICAST=1
build_src_filter = ${rp2040_base.build_src_filter} +
lib_deps =
${rp2040_base.lib_deps}
diff --git a/variants/rpipicow/variant.h b/variants/rp2040/rpipicow/variant.h
similarity index 100%
rename from variants/rpipicow/variant.h
rename to variants/rp2040/rpipicow/variant.h
diff --git a/variants/senselora_rp2040/pins_arduino.h b/variants/rp2040/senselora_rp2040/pins_arduino.h
similarity index 100%
rename from variants/senselora_rp2040/pins_arduino.h
rename to variants/rp2040/senselora_rp2040/pins_arduino.h
diff --git a/variants/senselora_rp2040/platformio.ini b/variants/rp2040/senselora_rp2040/platformio.ini
similarity index 60%
rename from variants/senselora_rp2040/platformio.ini
rename to variants/rp2040/senselora_rp2040/platformio.ini
index b05fc1f8b..3a574d0f9 100644
--- a/variants/senselora_rp2040/platformio.ini
+++ b/variants/rp2040/senselora_rp2040/platformio.ini
@@ -5,9 +5,9 @@ board = rpipico
upload_protocol = picotool
# add our variants files to the include and src paths
-build_flags = ${rp2040_base.build_flags}
- -DSENSELORA_RP2040
- -Ivariants/senselora_rp2040
- -DDEBUG_RP2040_PORT=Serial
+build_flags = ${rp2040_base.build_flags}
+ -D SENSELORA_RP2040
+ -I variants/rp2040/senselora_rp2040
+ -D DEBUG_RP2040_PORT=Serial
lib_deps =
${rp2040_base.lib_deps}
\ No newline at end of file
diff --git a/variants/senselora_rp2040/variant.h b/variants/rp2040/senselora_rp2040/variant.h
similarity index 92%
rename from variants/senselora_rp2040/variant.h
rename to variants/rp2040/senselora_rp2040/variant.h
index 2f68cf034..cc90284b7 100644
--- a/variants/senselora_rp2040/variant.h
+++ b/variants/rp2040/senselora_rp2040/variant.h
@@ -6,6 +6,7 @@
#define BUTTON_NEED_PULLUP
#define LED_PIN PIN_LED
+#define ledOff(pin) pinMode(pin, INPUT)
#undef BATTERY_PIN
#define BATTERY_SENSE_RESOLUTION_BITS ADC_RESOLUTION
diff --git a/variants/rpipico2/platformio.ini b/variants/rp2350/rpipico2/platformio.ini
similarity index 52%
rename from variants/rpipico2/platformio.ini
rename to variants/rp2350/rpipico2/platformio.ini
index 066809a91..ad7a4ce51 100644
--- a/variants/rpipico2/platformio.ini
+++ b/variants/rp2350/rpipico2/platformio.ini
@@ -1,15 +1,17 @@
[env:pico2]
extends = rp2350_base
board = rpipico2
+board_level = pr
upload_protocol = picotool
# add our variants files to the include and src paths
-build_flags = ${rp2350_base.build_flags}
- -DRPI_PICO2
- -Ivariants/rpipico2
- -DDEBUG_RP2040_PORT=Serial
- -DHW_SPI1_DEVICE
+build_flags =
+ ${rp2350_base.build_flags}
+ -D RPI_PICO2
+ -I variants/rp2350/rpipico2
+ -D DEBUG_RP2040_PORT=Serial
+ -D HW_SPI1_DEVICE
lib_deps =
${rp2350_base.lib_deps}
debug_build_flags = ${rp2350_base.build_flags}, -g
-debug_tool = cmsis-dap ; for e.g. Picotool
\ No newline at end of file
+debug_tool = cmsis-dap ; for e.g. Picotool
diff --git a/variants/rpipico2/variant.h b/variants/rp2350/rpipico2/variant.h
similarity index 100%
rename from variants/rpipico2/variant.h
rename to variants/rp2350/rpipico2/variant.h
diff --git a/variants/rpipico2w/platformio.ini b/variants/rp2350/rpipico2w/platformio.ini
similarity index 87%
rename from variants/rpipico2w/platformio.ini
rename to variants/rp2350/rpipico2w/platformio.ini
index 0fac1e9ce..5dbce533b 100644
--- a/variants/rpipico2w/platformio.ini
+++ b/variants/rp2350/rpipico2w/platformio.ini
@@ -1,6 +1,8 @@
[env:pico2w]
extends = rp2350_base
board = rpipico2w
+board_level = pr
+board_check = true
upload_protocol = jlink
# debug settings for external openocd with RP2040 support (custom build)
debug_tool = custom
@@ -13,9 +15,10 @@ debug_init_cmds =
monitor reset halt
# add our variants files to the include and src paths
-build_flags = ${rp2350_base.build_flags}
+build_flags =
+ ${rp2350_base.build_flags}
-DRPI_PICO2
- -Ivariants/rpipico2w
+ -Ivariants/rp2350/rpipico2w
# -DDEBUG_RP2040_PORT=Serial
-DHW_SPI1_DEVICE
-DARDUINO_RASPBERRY_PI_PICO_2W
diff --git a/variants/rpipico2w/variant.h b/variants/rp2350/rpipico2w/variant.h
similarity index 100%
rename from variants/rpipico2w/variant.h
rename to variants/rp2350/rpipico2w/variant.h
diff --git a/variants/CDEBYTE_E77-MBL/platformio.ini b/variants/stm32/CDEBYTE_E77-MBL/platformio.ini
similarity index 58%
rename from variants/CDEBYTE_E77-MBL/platformio.ini
rename to variants/stm32/CDEBYTE_E77-MBL/platformio.ini
index 8a8002086..c011f62c9 100644
--- a/variants/CDEBYTE_E77-MBL/platformio.ini
+++ b/variants/stm32/CDEBYTE_E77-MBL/platformio.ini
@@ -5,23 +5,13 @@ board_upload.maximum_size = 233472 ; reserve the last 28KB for filesystem
board_level = extra
build_flags =
${stm32_base.build_flags}
- -Ivariants/CDEBYTE_E77-MBL
+ -Ivariants/stm32/CDEBYTE_E77-MBL
-DSERIAL_UART_INSTANCE=1
-DPIN_SERIAL_RX=PA3
-DPIN_SERIAL_TX=PA2
- -DHAL_DAC_MODULE_ONLY
- -DHAL_RNG_MODULE_ENABLED
- -DRADIOLIB_EXCLUDE_SX128X=1
- -DRADIOLIB_EXCLUDE_SX127X=1
- -DRADIOLIB_EXCLUDE_LR11X0=1
-DMESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR=1
-DMESHTASTIC_EXCLUDE_I2C=1
- -DMESHTASTIC_EXCLUDE_WIFI=1
- -DMESHTASTIC_EXCLUDE_BLUETOOTH=1
-DMESHTASTIC_EXCLUDE_GPS=1
- -DMESHTASTIC_EXCLUDE_SCREEN=1
- -DMESHTASTIC_EXCLUDE_MQTT=1
- -DMESHTASTIC_EXCLUDE_POWERMON=1
;-DPIO_FRAMEWORK_ARDUINO_NANOLIB_FLOAT_PRINTF
;-DCFG_DEBUG
diff --git a/variants/CDEBYTE_E77-MBL/variant.h b/variants/stm32/CDEBYTE_E77-MBL/variant.h
similarity index 100%
rename from variants/CDEBYTE_E77-MBL/variant.h
rename to variants/stm32/CDEBYTE_E77-MBL/variant.h
diff --git a/variants/stm32/rak3172/platformio.ini b/variants/stm32/rak3172/platformio.ini
new file mode 100644
index 000000000..4f9edbb92
--- /dev/null
+++ b/variants/stm32/rak3172/platformio.ini
@@ -0,0 +1,15 @@
+[env:rak3172]
+extends = stm32_base
+board = wiscore_rak3172
+board_level = pr
+board_upload.maximum_size = 233472 ; reserve the last 28KB for filesystem
+build_flags =
+ ${stm32_base.build_flags}
+ -Ivariants/stm32/rak3172
+ -DPIN_WIRE_SDA=PA11
+ -DPIN_WIRE_SCL=PA12
+ -DMESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR=1
+ -DMESHTASTIC_EXCLUDE_I2C=1
+ -DMESHTASTIC_EXCLUDE_GPS=1
+ ;-DCFG_DEBUG
+upload_port = stlink
diff --git a/variants/rak3172/variant.h b/variants/stm32/rak3172/variant.h
similarity index 100%
rename from variants/rak3172/variant.h
rename to variants/stm32/rak3172/variant.h
diff --git a/variants/stm32/wio-e5/platformio.ini b/variants/stm32/wio-e5/platformio.ini
new file mode 100644
index 000000000..a9fcf51d6
--- /dev/null
+++ b/variants/stm32/wio-e5/platformio.ini
@@ -0,0 +1,25 @@
+[env:wio-e5]
+extends = stm32_base
+board = lora_e5_dev_board
+board_level = pr
+board_upload.maximum_size = 233472 ; reserve the last 28KB for filesystem
+build_flags =
+ ${stm32_base.build_flags}
+ -Ivariants/stm32/wio-e5
+ -DSERIAL_UART_INSTANCE=1
+ -DPIN_SERIAL_RX=PB7
+ -DPIN_SERIAL_TX=PB6
+ -DPIN_WIRE_SDA=PA15
+ -DPIN_WIRE_SCL=PB15
+ -DHAS_SENSOR=1
+ -DENABLE_HWSERIAL2
+ -DPIN_SERIAL2_TX=PA2
+ -DPIN_SERIAL2_RX=PA3
+ -DHAS_GPS=1
+ -DGPS_SERIAL_PORT=Serial2
+
+upload_port = stlink
+
+lib_deps =
+ ${stm32_base.lib_deps}
+ # Add your custom sensor here!
\ No newline at end of file
diff --git a/variants/wio-e5/variant.h b/variants/stm32/wio-e5/variant.h
similarity index 96%
rename from variants/wio-e5/variant.h
rename to variants/stm32/wio-e5/variant.h
index 5421eaeb9..6098b4ce6 100644
--- a/variants/wio-e5/variant.h
+++ b/variants/stm32/wio-e5/variant.h
@@ -17,6 +17,8 @@ Do not expect a working Meshtastic device with this target.
#define LED_PIN PB5
#define LED_STATE_ON 1
+#define WIO_E5
+
#if (defined(LED_BUILTIN) && LED_BUILTIN == PNUM_NOT_DEFINED)
#undef LED_BUILTIN
#define LED_BUILTIN (LED_PIN)
diff --git a/variants/wio-e5/platformio.ini b/variants/wio-e5/platformio.ini
deleted file mode 100644
index e746ae2f0..000000000
--- a/variants/wio-e5/platformio.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-[env:wio-e5]
-extends = stm32_base
-board = lora_e5_dev_board
-board_upload.maximum_size = 233472 ; reserve the last 28KB for filesystem
-build_flags =
- ${stm32_base.build_flags}
- -Ivariants/wio-e5
- -DSERIAL_UART_INSTANCE=1
- -DPIN_SERIAL_RX=PB7
- -DPIN_SERIAL_TX=PB6
- -DHAL_DAC_MODULE_ONLY
- -DHAL_RNG_MODULE_ENABLED
- -DRADIOLIB_EXCLUDE_SX128X=1
- -DRADIOLIB_EXCLUDE_SX127X=1
- -DRADIOLIB_EXCLUDE_LR11X0=1
- -DMESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR=1
- -DMESHTASTIC_EXCLUDE_I2C=1
- -DMESHTASTIC_EXCLUDE_WIFI=1
- -DMESHTASTIC_EXCLUDE_BLUETOOTH=1
- -DMESHTASTIC_EXCLUDE_GPS=1
- -DMESHTASTIC_EXCLUDE_SCREEN=1
- -DMESHTASTIC_EXCLUDE_MQTT=1
- -DMESHTASTIC_EXCLUDE_POWERMON=1
- ;-DPIO_FRAMEWORK_ARDUINO_NANOLIB_FLOAT_PRINTF
- ;-DCFG_DEBUG
-
-upload_port = stlink
\ No newline at end of file
diff --git a/version.properties b/version.properties
index 3fe1aa385..aa959bcac 100644
--- a/version.properties
+++ b/version.properties
@@ -1,4 +1,4 @@
[VERSION]
major = 2
minor = 7
-build = 1
+build = 4