feat: Configurable radio parameters (frequency slots, region, update rate) #48

Open
opened 2026-08-29 20:53:44 +00:00 by time · 2 comments
Contributor

Make the transmit frequency (within designated "slots"), radio region (US vs EU ISM bands), and update rate configurable via the config store.

The RF transmitter is already programmable: the DF register sets the frequency (DF = fRF × 8192 / fXTAL) and the APP register's DA13 bit selects the band. With the board's 26 MHz crystal, band 1 covers 863–870 MHz and 902–928 MHz, so both the US (915 MHz) and EU (868 MHz) ISM bands are reachable. The current firmware hardcodes 915.1 MHz (DF = 288327) in band 1.

"Slots" = a small set of predefined, legal, frequency-accurate frequencies the user picks, rather than an arbitrary frequency (e.g. EU: 868.1/868.3/868.5/868.7; US: 914.9/915.0/915.1/915.2/915.4/915.6/915.8).

Update rate (the sleep period between packets) affects battery life and should be user-configurable. The current firmware uses a software counter (MAX_COUNTER) with a 256 s WDT period.

Open questions:

  • the exact list of frequency slots per region
  • whether to let the user set output power (the APP register has high/low power settings)
  • how to map "update rate" to the WDT/sleep timing (and whether to allow sub-256 s periods)
  • whether region selection should constrain which slots are available
Make the transmit frequency (within designated "slots"), radio region (US vs EU ISM bands), and update rate configurable via the config store. The RF transmitter is already programmable: the DF register sets the frequency (DF = fRF × 8192 / fXTAL) and the APP register's DA13 bit selects the band. With the board's 26 MHz crystal, band 1 covers 863–870 MHz and 902–928 MHz, so both the US (915 MHz) and EU (868 MHz) ISM bands are reachable. The current firmware hardcodes 915.1 MHz (DF = 288327) in band 1. "Slots" = a small set of predefined, legal, frequency-accurate frequencies the user picks, rather than an arbitrary frequency (e.g. EU: 868.1/868.3/868.5/868.7; US: 914.9/915.0/915.1/915.2/915.4/915.6/915.8). Update rate (the sleep period between packets) affects battery life and should be user-configurable. The current firmware uses a software counter (`MAX_COUNTER`) with a 256 s WDT period. Open questions: - the exact list of frequency slots per region - whether to let the user set output power (the APP register has high/low power settings) - how to map "update rate" to the WDT/sleep timing (and whether to allow sub-256 s periods) - whether region selection should constrain which slots are available
Owner

The meshtastic slot map might be worth emulating, just for simplicity. The current version of the firmware uses 922.875 as the default frequency, which matches one of the slots. There are 104 slots in the US band, at least for long-fast.

The meshtastic slot map might be worth emulating, just for simplicity. The current version of the firmware uses 922.875 as the default frequency, which matches one of the slots. There are 104 slots in the US band, at least for long-fast.
Owner

The high power setting is probably desirable. It's only 10dBm, and range is pretty weak on the first rev (though it's likely an antenna match issue, as well.

The high power setting is probably desirable. It's only 10dBm, and range is pretty weak on the first rev (though it's likely an antenna match issue, as well.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
daru/PICsense#48
No description provided.