Background
PR #3050 (closes #2649) added a `license_classes` JSON block to the bandplan schema. `arrl-us.json` shipped with it populated:
```json
"license_classes": {
"T": "Technician",
"G": "General",
"E": "Extra"
}
```
Combined with per-segment `license` codes, this lets the ATU pre-tune dialog filter scan centers to only the frequencies the operator's class authorizes — preventing accidental TX into a sub-band the operator isn't licensed for.
Other regional bandplans don't yet have the block populated, so operators on those plans see the no-filter behavior (combobox hidden, all segments treated as authorized).
Bandplans currently missing the block
| File |
Region |
Class structure to add |
| `resources/bandplans/iaru-region1.json` |
EMEA |
IARU R1 doesn't actually have class structure — leave empty / unchanged |
| `resources/bandplans/iaru-region2.json` |
Americas |
Same — leave empty |
| `resources/bandplans/iaru-region3.json` |
APAC |
Same — leave empty |
| `resources/bandplans/rac-canada.json` |
Canada |
Basic, Basic-with-Honours, Advanced |
| `resources/bandplans/ssa-sweden.json` |
Sweden |
(research — SSA has Cept Class 1 / Class 2 in some references) |
For IARU regional plans the answer is "no change needed" because the IARU recommendations are band-allocation-by-mode, not by license class — the underlying national regulators apply class restrictions. Operators on those plans should select their national plan (e.g. `arrl-us.json` for US ops on R2, or a future `rsgb-uk.json` for UK ops on R1) to get class filtering.
Bandplans worth adding fresh (not in repo today)
- `rsgb-uk.json` — UK / RSGB Foundation / Intermediate / Full
- `jarl-japan.json` — JARL 1st / 2nd / 3rd / 4th class
- `dxcc-iaru-r1-de.json` (DARC Germany) — German Class A / Class E
- `acma-australia.json` — ACMA Foundation / Standard / Advanced
These are good first-contribution targets for international operators who hit the project — the data is publicly available in each regulator's documentation.
Schema reminder
For each plan that adopts class structure:
- Add a top-level `license_classes` object: `{"
": "", ...}`
- Annotate each segment's `license` field with comma-separated class codes (e.g. `"E,G"`)
- Segments with empty `license: ""` always pass through (BCN markers, general-purpose)
The dialog code at `AtuPreTuneDialog.cpp:populateLicenseClassRow()` auto-detects whether the active plan declares classes and shows/hides the combobox accordingly. Zero code change needed for new plans — pure data contribution.
Eligibility
Per-bandplan additions are great good-first-issue targets for community contributors with local-jurisdiction knowledge. `aetherclaude-eligible` for Canada (the bot can read the RAC docs and produce a defensible mapping); not eligible for jurisdictions where the data isn't unambiguously public.
Stats
- Per plan: ~5-20 lines added to JSON file + ~5-15 lines of comma-prefix updates on segments
- No code change required
- Each plan can be its own micro-PR
Spotted by
Review of PR #3050 — the schema landed but only ARRL US was populated. Other regions deserve the same operator-safety floor.
Background
PR #3050 (closes #2649) added a `license_classes` JSON block to the bandplan schema. `arrl-us.json` shipped with it populated:
```json
"license_classes": {
"T": "Technician",
"G": "General",
"E": "Extra"
}
```
Combined with per-segment `license` codes, this lets the ATU pre-tune dialog filter scan centers to only the frequencies the operator's class authorizes — preventing accidental TX into a sub-band the operator isn't licensed for.
Other regional bandplans don't yet have the block populated, so operators on those plans see the no-filter behavior (combobox hidden, all segments treated as authorized).
Bandplans currently missing the block
For IARU regional plans the answer is "no change needed" because the IARU recommendations are band-allocation-by-mode, not by license class — the underlying national regulators apply class restrictions. Operators on those plans should select their national plan (e.g. `arrl-us.json` for US ops on R2, or a future `rsgb-uk.json` for UK ops on R1) to get class filtering.
Bandplans worth adding fresh (not in repo today)
These are good first-contribution targets for international operators who hit the project — the data is publicly available in each regulator's documentation.
Schema reminder
For each plan that adopts class structure:
": "", ...}`The dialog code at `AtuPreTuneDialog.cpp:populateLicenseClassRow()` auto-detects whether the active plan declares classes and shows/hides the combobox accordingly. Zero code change needed for new plans — pure data contribution.
Eligibility
Per-bandplan additions are great good-first-issue targets for community contributors with local-jurisdiction knowledge. `aetherclaude-eligible` for Canada (the bot can read the RAC docs and produce a defensible mapping); not eligible for jurisdictions where the data isn't unambiguously public.
Stats
Spotted by
Review of PR #3050 — the schema landed but only ARRL US was populated. Other regions deserve the same operator-safety floor.