Skip to content

Insufficient Default Backoff Settings: rxdelay, txdelay, direct.txdelay#2310

Closed
KPrivitt wants to merge 86 commits intomeshcore-dev:mainfrom
KPrivitt:2026/Backoff-Defaults
Closed

Insufficient Default Backoff Settings: rxdelay, txdelay, direct.txdelay#2310
KPrivitt wants to merge 86 commits intomeshcore-dev:mainfrom
KPrivitt:2026/Backoff-Defaults

Conversation

@KPrivitt
Copy link
Copy Markdown

The current default values are:
_prefs.rx_delay_base = 0.0f; // turn off by default, was 10.0;
_prefs.tx_delay_factor = 0.5f; // was 0.25f
_prefs.direct_tx_delay_factor = 0.3f; // was 0.2

These control the Random Backoff behavior of a repeater, which reduces the probability of a collision between neighbor repeaters.

Backoff is essential in avoiding collisions. Many repeater owners are not aware of this capability and do not change them, this leaves the mesh under configured in order to avoid collisions. The default values are too low and are not providing any significant backoff for the Mesh.

The default value for rx_delay = 0, which is off. So, this mechanism is not being utilized. A recommended minimum value for rxdelay is 3

The default value for direct.x_delay = 0.3, which is provides 2 backoff slots, which has a high probability of a collision. A recommended minimum value for direct.x_delay is 1 which will provide 5 backoff slots and reduces the probability of a collision.

The default value for tx_delay = 0.5, which is provides 2 backoff slots, additional backoff slots will reduce the probability of a collision. A recommended minimum value for txdelay is 1.6 which provides 8 backoff slots and reduces the probability of a collision.

These all are configurable using CLI commands so users are still free to select their own preferred values and can turn them off.

Enabling some level of backoff will improve the performance of the Mesh.

Quency-D and others added 30 commits February 26, 2026 17:47
Co-authored-by: Wessel <wessel@weebl.me>
Co-authored-by: Wessel <wessel@weebl.me>
Co-authored-by: Wessel <wessel@weebl.me>
Default LNA enabled=true and fix the sleep order
Merge branch 'dev' into dev-heltec-v4.3
Support for R1 Neo hardware. New variant and baseboard class.
* Known issues:
  - power management is not currently supported
  - power off via long button press is not implemented

Add support for Epson Seiko RX8130CE I2C Real-time clock.
We translate to af internally, it's easier to store and doesn't break
stored prefs. Made get/set af command show deprecated, but it still
works fine.
Co-authored-by: ViezeVingertjes <michael.overhorst@gmail.com>
Docs changes are to reflect how it is currently in fw

This adds ability to send datagram data to everyone in channel
liamcottle and others added 28 commits March 24, 2026 14:11
…default-radio-rxgain

Fix default radio.rxgain for Station G2
The companion_radio example was not restoring the GPS enabled/disabled
preference from flash after reboot. The preference was being saved
correctly when toggled via the mobile app, but on boot,
sensors.begin() -> initBasicGPS() unconditionally sets gps_active=false
and nothing subsequently restored the persisted state.

Added applyGpsPrefs() (matching the pattern in simple_repeater,
simple_sensor, and simple_room_server) and call it from main.cpp
after sensors.begin() to ensure the GPS hardware is initialized
before the saved preference is applied.
…o-gps-persistence

fix(companion_radio): apply persisted GPS enabled setting on boot for ui-orig devices
Fix typo for ThinkNode M5 room server environment
ESP-NOW radios (ie, Generic_ESPNOW_* variants) do not compile due to
missing methods

Changes in January 2026 (019bbf7) to add additional stats (receive errors)
to CMD_GET_STATS was not implemented in the ESPNOWRadio() class

Changes in March 2026 (9a95e25) to add setRxBoostedGainMode to all devices
rather than just SX1262/SX1268 were not applied to the ESPNowRadio() driver

Specifically, this change adds the following to ESPNOWRadio()
* getPacketsRecvErrors()    - always returns 0
* getRxBoostedGainMode()    - always returns false
* setRxBoostedGainMode()    - does nothing
…methods

Add missing methods in ESPNOWRadio()
…over-neighbors-public

Move sendNodeDiscoverReq() from private to public to enable post-boot neighbor discovery
Co-authored-by: Wessel <wessel@weebl.me>
Co-authored-by: Wessel <wessel@weebl.me>
Fixed the initialization error of the BME680 sensor.
@KPrivitt KPrivitt closed this Apr 14, 2026
@KPrivitt KPrivitt deleted the 2026/Backoff-Defaults branch April 14, 2026 22:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.