Skip to content

Add 2 Meter (~144mhz) Amateur Radio Regions#10623

Merged
vidplace7 merged 1 commit into
developfrom
itu_2m
Jun 3, 2026
Merged

Add 2 Meter (~144mhz) Amateur Radio Regions#10623
vidplace7 merged 1 commit into
developfrom
itu_2m

Conversation

@vidplace7

@vidplace7 vidplace7 commented Jun 3, 2026

Copy link
Copy Markdown
Member

Adds new regions for 2 meter ham bands. With (hopefully) appropriate default channel slots.
🌍🇪🇺 ITU1_2M: Slot 26 (144.510 MHz)
🌎🇺🇸 ITU2_2M: Slot 51 (145.010 MHz)
🌏🇦🇺 ITU3_2M: Slot 33 (144.650 MHz)

These regions all use 15.6 kHz bandwidth, padded to 20kHz to fit cleanly into ham band plans.

This PR was split off of #10558 (T-Beam-BPF). It was getting pretty large. (Merge this PR first to unblock work on T-Beam Supreme and TLora32 144mhz versions).


This pull request adds support for new ITU 2-meter amateur radio regions and standardizes the 15.6 kHz bandwidth value across the codebase. The main changes include introducing region definitions and menu options for ITU Regions 1, 2, and 3 (2m band), updating bandwidth constants and calculations, and ensuring these new regions are selectable in the UI.

Support for new ITU 2m amateur radio regions:

  • Added three new region definitions (ITU1_2M, ITU2_2M, ITU3_2M) for the 144-146/148 MHz amateur bands, including their properties and default slots, in RadioInterface.cpp.
  • Added corresponding menu actions, menu items, and execution logic to allow users to select these new regions from the device UI (MenuAction.h, MenuApplet.cpp, MenuHandler.cpp) [1] [2] [3] [4].

Bandwidth value standardization:

  • Standardized the 15.625 kHz bandwidth value to 15.6 kHz in all calculations, region profiles, and tests (MeshRadio.h, RadioInterface.cpp, test_main.cpp) [1] [2] [3] [4].

RF95 configuration improvements:

  • Improved conditional macro definitions for RF95 pin mappings in RF95Configuration.h to avoid redefinition and ensure flexibility.

🤝 Attestations

  • I have tested that my proposed changes behave as described.
  • I have tested that my proposed changes do not cause any obvious regressions on the following devices:
    • tlora-v2-1-1_6 144mhz version.
    • t-beam-bpf

Default slots:
ITU1_2M: Slot 26 (144.510 MHz)
ITU2_2M: Slot 51 (145.010 MHz)
ITU3_2M: Slot 33 (144.650 MHz)

@NomDeTom NomDeTom left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds new 2-meter amateur radio LoRa region definitions (ITU Regions 1/2/3) to the firmware’s region table and exposes them in the device UIs, while also standardizing the “TINY” preset bandwidth constant to 15.6 kHz across code and tests.

Changes:

  • Add ITU1_2M, ITU2_2M, ITU3_2M region entries (144–146/148 MHz) using the ham 20 kHz profile and TINY_FAST default preset/slots.
  • Expose the new regions in both the classic screen menu and InkHUD menu flows.
  • Standardize 15.625 kHz → 15.6 kHz for TINY bandwidth mapping and update unit tests accordingly; make RF95 pin macro overrides more flexible.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
test/test_radio/test_main.cpp Updates bandwidth mapping test expectation to 15.6 kHz.
src/RF95Configuration.h Wrap RF95 pin macros with #ifndef to allow variant overrides.
src/mesh/RadioInterface.cpp Adds ITU 2m region definitions; adjusts ham profile padding for 15.6 kHz → 20 kHz slot width.
src/mesh/MeshRadio.h Standardizes TINY preset bandwidth and bw-code mapping to 15.6 kHz.
src/graphics/niche/InkHUD/Applets/System/Menu/MenuApplet.cpp Adds InkHUD actions to select the new ITU 2m regions.
src/graphics/niche/InkHUD/Applets/System/Menu/MenuAction.h Adds new menu action enum values for ITU 2m regions.
src/graphics/draw/MenuHandler.cpp Adds the new ITU 2m regions to the on-device LoRa region picker list.

Comment on lines +209 to +211
{"ITU1_2M (144-146)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU1_2M},
{"ITU2_2M (144-148)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU2_2M},
{"ITU3_2M (144-148)", OptionsAction::Select, meshtastic_Config_LoRaConfig_RegionCode_ITU3_2M},
Comment on lines +787 to +797
case SET_REGION_ITU1_2M:
applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU1_2M);
break;

case SET_REGION_ITU2_2M:
applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU2_2M);
break;

case SET_REGION_ITU3_2M:
applyLoRaRegion(meshtastic_Config_LoRaConfig_RegionCode_ITU3_2M);
break;
Comment thread src/mesh/RadioInterface.cpp
Comment thread src/mesh/RadioInterface.cpp
@vidplace7

Copy link
Copy Markdown
Member Author

Merging after chatting with @caveman99

@vidplace7 vidplace7 merged commit ef51c7e into develop Jun 3, 2026
78 checks passed
@vidplace7 vidplace7 deleted the itu_2m branch June 3, 2026 22:05
oscgonfer pushed a commit that referenced this pull request Jun 14, 2026
Default slots:
ITU1_2M: Slot 26 (144.510 MHz)
ITU2_2M: Slot 51 (145.010 MHz)
ITU3_2M: Slot 33 (144.650 MHz)
raghumad pushed a commit to raghumad/mezulla-firmware that referenced this pull request Jun 25, 2026
Default slots:
ITU1_2M: Slot 26 (144.510 MHz)
ITU2_2M: Slot 51 (145.010 MHz)
ITU3_2M: Slot 33 (144.650 MHz)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.8 enhancement New feature or request requires-docs Documentation must be updated

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants