A potential Radiolib derived library for the Heltec ESP32 LoRa v3 board

I created a comprehensive library for those that would prefer to use the Heltec ESP32 LoRa v3 board with RadioLib. Working examples, no more figuring out which half-mandarin repo to use, everything easy-to-use and properly documented. LoRaWAN TTN example with deep sleep between sends, using RTC RAM for medium-term persistence (meaning mostly FCntUp), so the flash doesn’t die on you.

github page

@rop meet Steve @stevencellist , Steve meet Rop…perhaps you might explain what you have been up to wrt RadioLib, LoRaWAN & Heltec boards :wink: :rofl:

2 Likes

We’ve met, but thanks!

1 Like

LOL… we’ve… uh… ‘met’ indeed! :rofl:

It doesn’t compile …

Eh… Does here, just now. Any further info?

Ah, you may need to briefly uninstall RadioLib because this one (for a limited time only) includes my fork and that might confuse the compiler.

Please do not post pictures that can be copied and pasted - see How do I format my forum post? [HowTo]

This is not my first rodeo:

Processing HeltecV3 (platform: espressif32; board: heltec_wifi_kit_32_V3; framework: arduino)
-------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/heltec_wifi_kit_32_V3.html
PLATFORM: Espressif 32 (6.4.0) > Heltec WiFi Kit 32 (V3)
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20011.230801 (2.0.11) 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - tool-openocd-esp32 @ 2.1100.20220706 (11.0) 
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
Converting LoRaWAN_TTN.ino
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 36 compatible libraries
Scanning dependencies...
Dependency Graph
|-- MultiButton @ 1.2.0
|-- Heltec_ESP32_LoRa_v3 @ 0.3.1
Building in release mode
Compiling .pio/build/HeltecV3/src/LoRaWAN_TTN.ino.cpp.o
Building .pio/build/HeltecV3/bootloader.bin
Generating partitions .pio/build/HeltecV3/partitions.bin
esptool.py v4.5.1
Creating esp32s3 image...
Merged 1 ELF section
Successfully created esp32s3 image.
Compiling .pio/build/HeltecV3/lib130/SPI/SPI.cpp.o
In file included from lib/heltec_esp32_lora_v3-main/src/heltec.h:18,
                 from /Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:55:
lib/heltec_esp32_lora_v3-main/src/RadioLib_convenience.h:20:53: warning: backslash and newline separated by space
   Serial.printf("[RadioLib] %s returned %i (%s)\n", \
                                                      
Compiling .pio/build/HeltecV3/lib728/Wire/Wire.cpp.o
In file included from /Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:55:
lib/heltec_esp32_lora_v3-main/src/heltec.h:43:39: error: 'RST_LoRa' was not declared in this scope
   SX1262 radio = new Module(SS, DIO1, RST_LoRa, BUSY_LoRa);
                                       ^~~~~~~~
lib/heltec_esp32_lora_v3-main/src/heltec.h:43:39: note: suggested alternative: 'RST_OLED'
   SX1262 radio = new Module(SS, DIO1, RST_LoRa, BUSY_LoRa);
                                       ^~~~~~~~
                                       RST_OLED
lib/heltec_esp32_lora_v3-main/src/heltec.h:43:49: error: 'BUSY_LoRa' was not declared in this scope
   SX1262 radio = new Module(SS, DIO1, RST_LoRa, BUSY_LoRa);
                                                 ^~~~~~~~~
In file included from lib/heltec_esp32_lora_v3-main/src/heltec.h:18,
                 from /Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:55:
/Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino: In function 'void setup()':
/Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:96:29: error: 'joinEUI' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey, RADIOLIB_LORAWAN_DATA_RATE_UNUSED, true));
                             ^~~~~~~
lib/heltec_esp32_lora_v3-main/src/RadioLib_convenience.h:19:22: note: in definition of macro 'RADIOLIB'
   _radiolib_status = action; \
                      ^~~~~~
/Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:96:38: error: 'devEUI' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey, RADIOLIB_LORAWAN_DATA_RATE_UNUSED, true));
                                      ^~~~~~
lib/heltec_esp32_lora_v3-main/src/RadioLib_convenience.h:19:22: note: in definition of macro 'RADIOLIB'
   _radiolib_status = action; \
                      ^~~~~~
/Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:96:38: note: suggested alternative: 'dev_t'
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey, RADIOLIB_LORAWAN_DATA_RATE_UNUSED, true));
                                      ^~~~~~
lib/heltec_esp32_lora_v3-main/src/RadioLib_convenience.h:19:22: note: in definition of macro 'RADIOLIB'
   _radiolib_status = action; \
                      ^~~~~~
/Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:99:29: error: 'joinEUI' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey));
                             ^~~~~~~
lib/heltec_esp32_lora_v3-main/src/RadioLib_convenience.h:19:22: note: in definition of macro 'RADIOLIB'
   _radiolib_status = action; \
                      ^~~~~~
/Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:99:38: error: 'devEUI' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey));
                                      ^~~~~~
lib/heltec_esp32_lora_v3-main/src/RadioLib_convenience.h:19:22: note: in definition of macro 'RADIOLIB'
   _radiolib_status = action; \
                      ^~~~~~
/Users/smoketest/Documents/Projects/LW/Heltec/ropg/src/LoRaWAN_TTN.ino:99:38: note: suggested alternative: 'dev_t'
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey));
                                      ^~~~~~
lib/heltec_esp32_lora_v3-main/src/RadioLib_convenience.h:19:22: note: in definition of macro 'RADIOLIB'
   _radiolib_status = action; \
                      ^~~~~~
*** [.pio/build/HeltecV3/src/LoRaWAN_TTN.ino.cpp.o] Error 1
Compiling .pio/build/HeltecV3/lib0fc/heltec_esp32_lora_v3-main/RadioLib/ArduinoHal.cpp.o
=============================== [FAILED] Took 8.80 seconds ===============================

Environment    Status    Duration
-------------  --------  ------------
HeltecV3       FAILED    00:00:08.804
========================== 1 failed, 0 succeeded in 00:00:08.804 ==========================

A pin definition for the radio is missing, as are the EUI’s.

Need to uninstall the Heltec BSP:

FQBN: Heltec-esp32:esp32:WIFI_LoRa_32_V3
Using board 'WIFI_LoRa_32_V3' from platform in folder: /Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0
Using core 'esp32' from platform in folder: /Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0

Compiling sketch...

In file included from /Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0/cores/esp32/esp32-hal-gpio.h:29,
                 from /Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0/cores/esp32/esp32-hal.h:79,
                 from /Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0/cores/esp32/Arduino.h:36,
                 from /private/var/folders/nr/gn/T/arduino/sketches/5679CF073A4279ABFEBD2489904489EA/sketch/LoRaWAN_TTN.ino.cpp:1:
/Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0/variants/wifi_lora_32_v3/pins_arduino.h:7: warning: "WIFI_LORA_32_V3" redefined
 #define WIFI_LORA_32_V3 true
 
<command-line>: note: this is the location of the previous definition
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:59:1: error: 'LoRaWANNode' does not name a type
 LoRaWANNode node(&radio, &EU868);
 ^~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino: In function 'void setup()':
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:72:3: error: 'heltec_setup' was not declared in this scope
   heltec_setup();
   ^~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:72:3: note: suggested alternative: 'Heltec_ESP32'
   heltec_setup();
   ^~~~~~~~~~~~
   Heltec_ESP32
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:82:3: error: 'both' was not declared in this scope
   both.println("Radio init");
   ^~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:82:3: note: suggested alternative: 'byte'
   both.println("Radio init");
   ^~~~
   byte
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:83:12: error: 'radio' was not declared in this scope
   RADIOLIB(radio.begin());
            ^~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:83:12: note: suggested alternative: 'rmdir'
   RADIOLIB(radio.begin());
            ^~~~~
            rmdir
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:83:3: error: 'RADIOLIB' was not declared in this scope
   RADIOLIB(radio.begin());
   ^~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:84:7: error: '_radiolib_status' was not declared in this scope
   if (_radiolib_status != RADIOLIB_ERR_NONE) {
       ^~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:84:27: error: 'RADIOLIB_ERR_NONE' was not declared in this scope
   if (_radiolib_status != RADIOLIB_ERR_NONE) {
                           ^~~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:89:3: error: 'node' was not declared in this scope
   node.setDutyCycle(true, 1250);
   ^~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:89:3: note: suggested alternative: 'tone'
   node.setDutyCycle(true, 1250);
   ^~~~
   tone
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:94:29: error: 'joinEUI' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey, RADIOLIB_LORAWAN_DATA_RATE_UNUSED, true));
                             ^~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:94:38: error: 'devEUI' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey, RADIOLIB_LORAWAN_DATA_RATE_UNUSED, true));
                                      ^~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:94:38: note: suggested alternative: 'dev_t'
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey, RADIOLIB_LORAWAN_DATA_RATE_UNUSED, true));
                                      ^~~~~~
                                      dev_t
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:94:62: error: 'RADIOLIB_LORAWAN_DATA_RATE_UNUSED' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey, RADIOLIB_LORAWAN_DATA_RATE_UNUSED, true));
                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:97:29: error: 'joinEUI' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey));
                             ^~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:97:38: error: 'devEUI' was not declared in this scope
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey));
                                      ^~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:97:38: note: suggested alternative: 'dev_t'
     RADIOLIB(node.beginOTAA(joinEUI, devEUI, nwkKey, appKey));
                                      ^~~~~~
                                      dev_t
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:99:7: error: '_radiolib_status' was not declared in this scope
   if (_radiolib_status == RADIOLIB_ERR_NONE) {
       ^~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:99:27: error: 'RADIOLIB_ERR_NONE' was not declared in this scope
   if (_radiolib_status == RADIOLIB_ERR_NONE) {
                           ^~~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:100:5: error: 'display' was not declared in this scope
     display.println("Joined network");
     ^~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:100:5: note: suggested alternative: 'delay'
     display.println("Joined network");
     ^~~~~~~
     delay
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:101:34: error: 'RADIOLIB_LORAWAN_MODE_OTAA' was not declared in this scope
   } else if (_radiolib_status == RADIOLIB_LORAWAN_MODE_OTAA){
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:102:5: error: 'display' was not declared in this scope
     display.println("Was still joined");
     ^~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:102:5: note: suggested alternative: 'delay'
     display.println("Was still joined");
     ^~~~~~~
     delay
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:104:5: error: 'display' was not declared in this scope
     display.printf("Join fail: %i\n", _radiolib_status);
     ^~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:104:5: note: suggested alternative: 'delay'
     display.printf("Join fail: %i\n", _radiolib_status);
     ^~~~~~~
     delay
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:112:6: error: '_radiolib_status' was not declared in this scope
   if(_radiolib_status == RADIOLIB_ERR_NONE) {
      ^~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:112:26: error: 'RADIOLIB_ERR_NONE' was not declared in this scope
   if(_radiolib_status == RADIOLIB_ERR_NONE) {
                          ^~~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:131:33: error: 'RADIOLIB_ERR_RX_TIMEOUT' was not declared in this scope
   } else if(_radiolib_status == RADIOLIB_ERR_RX_TIMEOUT) {
                                 ^~~~~~~~~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:131:33: note: suggested alternative: 'ESP_ERR_TIMEOUT'
   } else if(_radiolib_status == RADIOLIB_ERR_RX_TIMEOUT) {
                                 ^~~~~~~~~~~~~~~~~~~~~~~
                                 ESP_ERR_TIMEOUT
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:145:5: error: 'EEPROM' was not declared in this scope
     EEPROM.toNVS();
     ^~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:145:5: note: suggested alternative: 'EIDRM'
     EEPROM.toNVS();
     ^~~~~~
     EIDRM
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:161:3: error: 'heltec_deep_sleep' was not declared in this scope
   heltec_deep_sleep((delayMs / 1000) - 5);
   ^~~~~~~~~~~~~~~~~
/private/var/folders/nr/gn/T/.arduinoIDE/LoRaWAN_TTN/LoRaWAN_TTN.ino:161:3: note: suggested alternative: 'esp_deep_sleep'
   heltec_deep_sleep((delayMs / 1000) - 5);
   ^~~~~~~~~~~~~~~~~
   esp_deep_sleep
Multiple libraries were found for "heltec.h"
  Used: /Users/smoketest/Documents/Arduino/libraries/Heltec_ESP32_Dev-Boards
  Not used: /Users/smoketest/Documents/Arduino/libraries/Heltec_ESP32_LoRa_v3
  Not used: /Users/smoketest/Documents/Arduino/libraries/Heltec_ESP8266_Dev-Boards
  Not used: /Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0/libraries/HeltecExample
Using library Heltec ESP32 Dev-Boards at version 1.1.5 in folder: /Users/smoketest/Documents/Arduino/libraries/Heltec_ESP32_Dev-Boards 
Using library Wire at version 2.0.0 in folder: /Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0/libraries/Wire 
Using library SPI at version 2.0.0 in folder: /Users/smoketest/Library/Arduino15/packages/Heltec-esp32/hardware/esp32/1.0.0/libraries/SPI 

Ah, I’ve only tested with Arduino IDE, not with PlatformIO. RST_LoRa should come from Heltec’s boatrd definitions’ pins_arduino.h if you selected this board. I guess I should just #define these pins and not depend on that. Will fix.

As for the EUI placeholders: They must have fallen off in my last copy-paste, put them back in now.

See if what’s in the repo now works better: I defined the GPIO pins locally, added the EUI placeholders back into the example

Whats the deep sleep current ?

“Ultimate” library is a bold claim given work that needs doing and testing required, plus all the work still being done under the hood by RadioLib team and LW specifics being implemented by others on TTN. Forgive me if title amended as a minuimum…… as Google et al have a habit of picking up incomplete implementations or ones with flaws/incomplete functionality and propagating so considering with team how best to handle whilst not dampening enthusiasm for such efforts and projects.

To be honest I am only really set up here to measure USB power, where the ESP32 deep sleep power would be negligible compared to the USB serial converter and the battery charging IC. I would love to have something like the cheap and simple power-over-time tool I have for USB to exist for 3.7V LiPo.

That said, I was curious also, so I just now hooked up my multimeter in series with the LiPo and am measuring 622 µA with the ESP32 in deep sleep. So that would discharge my 2000 mAh LiPo in 19 weeks. I’ve never before really played with ESPs in deep sleep, but there’s all these peripherals one can keep alive or turn off, so there may be more we can do. I’ll leave it all hooked up so I can maybe play a little.

I’ve had some time with a couple of different Heltec boards - powering them down completely needs a bit of trickery, but I have had their V3 boards down to 19 uA!
Unfortunately, that trick only works when the clock is the only wake-up source; using GPIO wake-up sources so far got me down to about 120 uA. A select few pin & level configurations should allow for powering down the ESP’s peripheral manager and maybe get it below 120 uA, but that’s a theory I did not test yet.

@Jeff-UK

Sure, I’m a bit enthusiastic about it. But seriously, what’s there not to like? This library will get people to working stuff faster than anything else, is far, far, far better documented than what’s out there for this board, has working examples, and includes a working LoRaWAN / TTN example that has deep sleep and doesn’t eat the flash. (The existing examples for ESP32 that use flash write the entire flash “EEPROM” image to NVS storage every send, doing a 400-something byte write every send and a 4k page erase every eight sends.)

I have no ambitions of maintaining a RadioLib fork for long, and will go back to depending on stock RadioLib instead as soon as there’s the mechanism to deal with state with more granularity, which is in the works. The only difference now is the inclusion of my own RTC RAM EEPROM-emulation.

I think that if you want to use RadioLib on this board and get things actually working, this library kicks ass. IMHO it deserves a title that reflects the fact that I did a ton of work to make things easier to use and that it finally properly documents this hardware in one place? Current title sounds a bit bland to be honest. How about:

Well-documented Arduino library for Heltec ESP32 v3, RadioLib, TTN deep sleep example

The use of goto & the setup() as the main function along with the preprocessor constructs are likely to catch out a number of people.

Additionally, RadioLib LoRaWAN support is marked as being in beta and you appear to have copied a version that the developers say have some issues that are being resolved. They appear to be slowed down by your ‘contributions’ that haven’t been accepted so you appear to have gone your own way - this is not how we roll on TTN, we are a community.

By your own admission you are new to LW - perhaps read a bit more, learn a bit more, deploy lots and let things cook before making such bold claims.

I’d be happy to save me some work if you send how you did that as a starting point. Library has #define HELTEC_POWER_BUTTON if people want to use the button for power (long-press to turn off). So if that’s not set, like in the TTN example, I can turn off the GPIO hardware and only wake up on clock.

Responding on iPad so not best environment to give careful considered responses with longer reasoning, let me get to PC later…. But for now I would discourage this as its clear your enthusiasm is running a way with you and whilst I don’t doubt good intent supporting individual requests rather than the core developers focussing on dev/test cycles then doing proper releases for all to consider vs individual information not most efficient way and no doubt, Given you draw on others work in your release, will maybe then see a rushed release from you with “ultimate deep sleep” or some such that is not (by Steve’s admission) yet fully implemented and tested! :wink:

Note have been testing in the background on behalf of the team for 4+ months - not a softie or dev, but good at testing/breaking things! - and am in process of doing controlled battery life tests under different modes for Steve at moment and consider it still early days and not yet fully baked with foibles we need to confirm and understand/fix….

Looking back at the complete discussion over on GitHub, I do not see a single “thank you” or “great work, guys!”.
Would you like to take a guess how much time Mr. Gromes spent building RadioLib’s LoRaWAN stack? Would you like to take a guess how much time Mr. Nick here spent testing RadioLib’s LoRaWAN stack? Would you like to take a guess at how much time I spent building RadioLib’s LoRaWAN stack? No, I’m not even going to try to estimate that, because I would go cry in a corner, if not throw my PC out of the attic window.
This is just the roughest of rough indications…:

Yet you come barging in here, claiming to have “the ultimate” library, having hijacked RadioLib into a personal fork because you can do it better, asking for me to send you more stuff. Nah bro.

Maybe consider actually using Heltec forum’s Search button. Oh, no, you wouldn’t know, because you only just signed up there…

I have been trying my best to keep my s**t together, in combined effort with @descartes. And as you can see, this here has been my tipping point.

2 Likes