From f4519b19c8ddfd8c147a0281dbc23c3fb0d32269 Mon Sep 17 00:00:00 2001 From: jirogit Date: Wed, 25 Mar 2026 00:41:21 -0700 Subject: [PATCH] JP_STRICT: use absolute -80dBm RSSI threshold for LBT (ARIB STD-T108) Replace relative threshold (_noise_floor + _threshold) with absolute -80dBm as specified by ARIB STD-T108 for carrier sense detection. Previous relative threshold (~-99dBm) caused false busy detection from environmental noise. -80dBm matches the legal requirement and reduces spurious backoff. --- src/helpers/radiolib/RadioLibWrappers.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/helpers/radiolib/RadioLibWrappers.cpp b/src/helpers/radiolib/RadioLibWrappers.cpp index 97fdb4ab..5ef5a076 100644 --- a/src/helpers/radiolib/RadioLibWrappers.cpp +++ b/src/helpers/radiolib/RadioLibWrappers.cpp @@ -168,6 +168,10 @@ bool RadioLibWrapper::isSendComplete() { void RadioLibWrapper::onSendFinished() { _radio->finishTransmit(); _board->onAfterTransmit(); +#ifdef JP_STRICT + // ARIB STD-T108: wait >= 50ms after TX before next transmission + delay(50); +#endif state = STATE_IDLE; } @@ -184,7 +188,7 @@ bool RadioLibWrapper::isChannelActive() { uint32_t sense_start = millis(); uint32_t sense_duration_ms = 5; while (millis() - sense_start < sense_duration_ms) { - if (getCurrentRSSI() > _noise_floor + _threshold) { + if (getCurrentRSSI() > -80.0f) { // Channel busy detected during 5ms sensing window uint32_t backoff_until = millis() + random(8000, 22000); while (millis() < backoff_until) {