Duty Cycle Budget: count airtime, and make traffic wait #32

Open
opened 2026-10-05 20:07:19 +00:00 by twisla · 0 comments
Owner

What

The share of airtime the Region allows (CONTEXT.md: Duty Cycle Budget): compute each packet's time on air, keep the total over the last hour, and hold outgoing traffic when the budget is used up.

What's known

  • EU868's 869.4 to 869.65 MHz sub-band allows 10 %: 360 s of transmission in any hour. Meshtastic's region table says the same.
  • A LoRa packet's time on air follows from its length, spreading factor, bandwidth, coding rate and preamble: a formula from Semtech's datasheet, pure maths, host-testable against published calculators. On LongFast a short text message takes several hundred milliseconds.
  • Relaying spends the same budget as our own messages: a busy mesh can use it up for us.
  • The budget survives a restart only if it's stored; forgetting it on reboot would let a crash loop exceed it.

Questions

  1. A sliding hour, or fixed windows?
  2. What waits and what's dropped when the budget runs out: our own messages first, relayed ones dropped?
  3. Where it shows: the Status Bar, the Messenger, lora status.
  4. Is the budget kept across restarts (NVS), and how often is it written?

Related

CONTEXT.md (Region, Duty Cycle Budget), lib/meshtastic/src/meshtastic_presets.h, #31, #30.

## What The share of airtime the Region allows (CONTEXT.md: Duty Cycle Budget): compute each packet's time on air, keep the total over the last hour, and hold outgoing traffic when the budget is used up. ## What's known - EU868's 869.4 to 869.65 MHz sub-band allows 10 %: 360 s of transmission in any hour. Meshtastic's region table says the same. - A LoRa packet's time on air follows from its length, spreading factor, bandwidth, coding rate and preamble: a formula from Semtech's datasheet, pure maths, host-testable against published calculators. On LongFast a short text message takes several hundred milliseconds. - Relaying spends the same budget as our own messages: a busy mesh can use it up for us. - The budget survives a restart only if it's stored; forgetting it on reboot would let a crash loop exceed it. ## Questions 1. A sliding hour, or fixed windows? 2. What waits and what's dropped when the budget runs out: our own messages first, relayed ones dropped? 3. Where it shows: the Status Bar, the Messenger, `lora status`. 4. Is the budget kept across restarts (NVS), and how often is it written? ## Related CONTEXT.md (Region, Duty Cycle Budget), `lib/meshtastic/src/meshtastic_presets.h`, #31, #30.
twisla added this to the M5 Mesh transmit milestone 2026-10-05 20:07:19 +00:00
twisla added the
kind
feature
area/lora
status
blocked
priority
medium
labels 2026-10-05 20:07:19 +00:00
twisla added a new dependency 2026-10-05 20:07:19 +00:00
twisla added a new dependency 2026-10-05 20:07:20 +00:00
twisla added a new dependency 2026-10-05 20:07:21 +00:00
twisla added a new dependency 2026-10-05 20:07:22 +00:00
twisla added a new dependency 2026-10-05 20:07:23 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: twisla/roro9stack#32