From a8f81c85cec7d31d319ca9661d5e000f7cb28428 Mon Sep 17 00:00:00 2001 From: Michal Konopinski Date: Thu, 29 Jan 2026 17:06:08 +0100 Subject: [PATCH 1/5] Add E22P to Ikoka-nano variants --- variants/ikoka_nano_nrf/platformio.ini | 95 ++++++++++++++++++++++++++ variants/ikoka_nano_nrf/target.cpp | 5 ++ 2 files changed, 100 insertions(+) diff --git a/variants/ikoka_nano_nrf/platformio.ini b/variants/ikoka_nano_nrf/platformio.ini index e72f83ce0d..768d1652e5 100644 --- a/variants/ikoka_nano_nrf/platformio.ini +++ b/variants/ikoka_nano_nrf/platformio.ini @@ -32,6 +32,40 @@ upload_protocol = nrfutil lib_deps = ${nrf52_base.lib_deps} ${sensor_base.lib_deps} +[ikoka_nano_nrf_e22p] +extends = nrf52_base +board = seeed-xiao-afruitnrf52-nrf52840 +board_build.ldscript = boards/nrf52840_s140_v7.ld +build_flags = ${nrf52_base.build_flags} + ${sensor_base.build_flags} + -D NRF52_PLATFORM -D XIAO_NRF52 + -I lib/nrf52/s140_nrf52_7.3.0_API/include + -I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52 + -I variants/ikoka_nano_nrf + -I src/helpers/nrf52 + -D P_LORA_TX_LED=11 + -D DISPLAY_CLASS=NullDisplayDriver + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D P_LORA_DIO_1=D1 + -D P_LORA_BUSY=D2 + -D P_LORA_RESET=D3 + -D P_LORA_NSS=D0 + -D P_LORA_EN=D7 + -D SX126X_RXEN=RADIOLIB_NC + -D SX126X_TXEN=RADIOLIB_NC + -D SX126X_DIO2_AS_RF_SWITCH=1 + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=140 + -D SX126X_RX_BOOSTED_GAIN=1 + -D PIN_WIRE_SCL=5 + -D PIN_WIRE_SDA=4 + -UENV_INCLUDE_GPS +debug_tool = jlink +upload_protocol = nrfutil +lib_deps = ${nrf52_base.lib_deps} + ${sensor_base.lib_deps} + [ikoka_nano_nrf_e22_22dbm] extends = ikoka_nano_nrf ; No PA in this model, full 22dBm @@ -59,6 +93,20 @@ build_src_filter = ${ikoka_nano_nrf.build_src_filter} + +<../variants/ikoka_nano_nrf> +[ikoka_nano_nrf_e22p_30dbm] +extends = ikoka_nano_nrf_e22p +; limit txpower to 20dBm on E22p-900M30S. Anything higher will +; cause distortion in the PA output. 20dBm in -> 30dBm out +build_flags = + ${ikoka_nano_nrf_e22p.build_flags} + -D MANUFACTURER_STRING='"Ikoka Nano-E22p-30dBm (Xiao_nrf52)"' + -D LORA_TX_POWER=20 +build_src_filter = ${ikoka_nano_nrf_e22p.build_src_filter} + + + + + + + +<../variants/ikoka_nano_nrf> + [ikoka_nano_nrf_e22_33dbm] extends = ikoka_nano_nrf ; limit txpower to 9dBm on E22-900M33S to avoid hardware damage @@ -235,6 +283,53 @@ build_src_filter = ${ikoka_nano_nrf_e22_30dbm.build_src_filter} +;;; 30dBm EBYTE E22P-868M30/E22P-915M30 variants + +[env:ikoka_nano_nrf_e22p_30dbm_companion_radio_usb] +extends = + ikoka_nano_nrf_e22p_30dbm + ikoka_nano_nrf_companion_radio_usb +build_flags = + ${ikoka_nano_nrf_companion_radio_usb.build_flags} + ${ikoka_nano_nrf_e22p_30dbm.build_flags} +build_src_filter = + ${ikoka_nano_nrf_companion_radio_usb.build_src_filter} + ${ikoka_nano_nrf_e22p_30dbm.build_src_filter} + +[env:ikoka_nano_nrf_e22p_30dbm_companion_radio_ble] +extends = + ikoka_nano_nrf_e22p_30dbm + ikoka_nano_nrf_companion_radio_ble +build_flags = + ${ikoka_nano_nrf_companion_radio_ble.build_flags} + ${ikoka_nano_nrf_e22p_30dbm.build_flags} +build_src_filter = + ${ikoka_nano_nrf_companion_radio_ble.build_src_filter} + ${ikoka_nano_nrf_e22p_30dbm.build_src_filter} + +[env:ikoka_nano_nrf_e22p_30dbm_repeater] +extends = + ikoka_nano_nrf_e22p_30dbm + ikoka_nano_nrf_repeater +build_flags = + ${ikoka_nano_nrf_repeater.build_flags} + ${ikoka_nano_nrf_e22p_30dbm.build_flags} +build_src_filter = + ${ikoka_nano_nrf_repeater.build_src_filter} + ${ikoka_nano_nrf_e22p_30dbm.build_src_filter} + +[env:ikoka_nano_nrf_e22p_30dbm_room_server] +extends = + ikoka_nano_nrf_e22p_30dbm + ikoka_nano_nrf_room_server +build_flags = + ${ikoka_nano_nrf_room_server.build_flags} + ${ikoka_nano_nrf_e22p_30dbm.build_flags} +build_src_filter = + ${ikoka_nano_nrf_room_server.build_src_filter} + ${ikoka_nano_nrf_e22p_30dbm.build_src_filter} + + ;;; 33dBm EBYTE E22-900M33 variants [env:ikoka_nano_nrf_33dbm_companion_radio_usb] extends = diff --git a/variants/ikoka_nano_nrf/target.cpp b/variants/ikoka_nano_nrf/target.cpp index baf02c3d12..57b13b6105 100644 --- a/variants/ikoka_nano_nrf/target.cpp +++ b/variants/ikoka_nano_nrf/target.cpp @@ -20,6 +20,11 @@ EnvironmentSensorManager sensors; bool radio_init() { rtc_clock.begin(Wire); +#ifdef P_LORA_EN + pinMode(P_LORA_EN, OUTPUT); + digitalWrite(P_LORA_EN, HIGH); +#endif + return radio.std_init(&SPI); } From 5a066d12f4d15cda0e74fab458bcc65b8e58f585 Mon Sep 17 00:00:00 2001 From: Michal Konopinski Date: Mon, 16 Feb 2026 18:37:53 +0100 Subject: [PATCH 2/5] set SX126X_REGISTER_PATCH for e22p --- variants/ikoka_nano_nrf/platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/ikoka_nano_nrf/platformio.ini b/variants/ikoka_nano_nrf/platformio.ini index 768d1652e5..0a71df650b 100644 --- a/variants/ikoka_nano_nrf/platformio.ini +++ b/variants/ikoka_nano_nrf/platformio.ini @@ -55,6 +55,7 @@ build_flags = ${nrf52_base.build_flags} -D SX126X_RXEN=RADIOLIB_NC -D SX126X_TXEN=RADIOLIB_NC -D SX126X_DIO2_AS_RF_SWITCH=1 + -D SX126X_REGISTER_PATCH=1 ; Patch register 0x8B5 for improved RX -D SX126X_DIO3_TCXO_VOLTAGE=1.8 -D SX126X_CURRENT_LIMIT=140 -D SX126X_RX_BOOSTED_GAIN=1 From a0d95bb48e87e1128bfd1ddd781370be8d65a269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Konopi=C5=84ski?= Date: Thu, 5 Mar 2026 23:34:19 +0100 Subject: [PATCH 3/5] =?UTF-8?q?EBYTE=20uses=20all-caps=20"E22P"=20?= =?UTF-8?q?=E2=80=94=20consistent=20with=20the=20existing=20E22=20sections?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wessel --- variants/ikoka_nano_nrf/platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/ikoka_nano_nrf/platformio.ini b/variants/ikoka_nano_nrf/platformio.ini index 0a71df650b..559a9fe40a 100644 --- a/variants/ikoka_nano_nrf/platformio.ini +++ b/variants/ikoka_nano_nrf/platformio.ini @@ -100,7 +100,7 @@ extends = ikoka_nano_nrf_e22p ; cause distortion in the PA output. 20dBm in -> 30dBm out build_flags = ${ikoka_nano_nrf_e22p.build_flags} - -D MANUFACTURER_STRING='"Ikoka Nano-E22p-30dBm (Xiao_nrf52)"' + -D MANUFACTURER_STRING='"Ikoka Nano-E22P-30dBm (Xiao_nrf52)"' -D LORA_TX_POWER=20 build_src_filter = ${ikoka_nano_nrf_e22p.build_src_filter} + From 9b8f9ed3f70c0cb140c867d6c21cfefc756450ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Konopi=C5=84ski?= Date: Thu, 5 Mar 2026 23:36:11 +0100 Subject: [PATCH 4/5] Avoid define duplicates Co-authored-by: Wessel --- variants/ikoka_nano_nrf/platformio.ini | 39 +++++--------------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/variants/ikoka_nano_nrf/platformio.ini b/variants/ikoka_nano_nrf/platformio.ini index 559a9fe40a..bd1e8623e5 100644 --- a/variants/ikoka_nano_nrf/platformio.ini +++ b/variants/ikoka_nano_nrf/platformio.ini @@ -33,39 +33,14 @@ lib_deps = ${nrf52_base.lib_deps} ${sensor_base.lib_deps} [ikoka_nano_nrf_e22p] -extends = nrf52_base -board = seeed-xiao-afruitnrf52-nrf52840 -board_build.ldscript = boards/nrf52840_s140_v7.ld -build_flags = ${nrf52_base.build_flags} - ${sensor_base.build_flags} - -D NRF52_PLATFORM -D XIAO_NRF52 - -I lib/nrf52/s140_nrf52_7.3.0_API/include - -I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52 - -I variants/ikoka_nano_nrf - -I src/helpers/nrf52 - -D P_LORA_TX_LED=11 - -D DISPLAY_CLASS=NullDisplayDriver - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D P_LORA_DIO_1=D1 - -D P_LORA_BUSY=D2 - -D P_LORA_RESET=D3 - -D P_LORA_NSS=D0 - -D P_LORA_EN=D7 +extends = ikoka_nano_nrf +; E22P: integrated PA/LNA via DIO2. D7 = module power enable (not RXEN) +build_flags = + ${ikoka_nano_nrf.build_flags} + -USX126X_RXEN -D SX126X_RXEN=RADIOLIB_NC - -D SX126X_TXEN=RADIOLIB_NC - -D SX126X_DIO2_AS_RF_SWITCH=1 - -D SX126X_REGISTER_PATCH=1 ; Patch register 0x8B5 for improved RX - -D SX126X_DIO3_TCXO_VOLTAGE=1.8 - -D SX126X_CURRENT_LIMIT=140 - -D SX126X_RX_BOOSTED_GAIN=1 - -D PIN_WIRE_SCL=5 - -D PIN_WIRE_SDA=4 - -UENV_INCLUDE_GPS -debug_tool = jlink -upload_protocol = nrfutil -lib_deps = ${nrf52_base.lib_deps} - ${sensor_base.lib_deps} + -D P_LORA_EN=D7 + -D SX126X_REGISTER_PATCH=1 [ikoka_nano_nrf_e22_22dbm] extends = ikoka_nano_nrf From 1024e500614130066c5c589a47e49de7d2587c7c Mon Sep 17 00:00:00 2001 From: Michal Konopinski Date: Thu, 5 Mar 2026 23:45:45 +0100 Subject: [PATCH 5/5] replacing -U by build_unflags to avoid warnings about define duplicates --- variants/ikoka_nano_nrf/platformio.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/variants/ikoka_nano_nrf/platformio.ini b/variants/ikoka_nano_nrf/platformio.ini index bd1e8623e5..139248894c 100644 --- a/variants/ikoka_nano_nrf/platformio.ini +++ b/variants/ikoka_nano_nrf/platformio.ini @@ -35,9 +35,10 @@ lib_deps = ${nrf52_base.lib_deps} [ikoka_nano_nrf_e22p] extends = ikoka_nano_nrf ; E22P: integrated PA/LNA via DIO2. D7 = module power enable (not RXEN) +build_unflags = + -DSX126X_RXEN=D7 build_flags = ${ikoka_nano_nrf.build_flags} - -USX126X_RXEN -D SX126X_RXEN=RADIOLIB_NC -D P_LORA_EN=D7 -D SX126X_REGISTER_PATCH=1