File format¶
Here is a complete, working file, small enough to read in one go. Everything below explains a piece of it.
{
"data_version": 1,
"updated": "2026-08-09",
"mode_colors": {
"cw": "#0072B2",
"phone": "#009E73",
"digital": "#E69F00",
"beacon": "#56B4E9"
},
"license_classes": {
"Full": {
"80M": [
{"start": 3500000, "end": 3570000, "mode": "cw" },
{"start": 3570000, "end": 3600000, "mode": "digital" },
{"start": 3600000, "end": 3800000, "mode": "phone" }
],
"40M": [
{"start": 7000000, "end": 7040000, "mode": "cw" },
{"start": 7040000, "end": 7100000, "mode": "digital" },
{"start": 7100000, "end": 7200000, "mode": "phone" }
]
},
"Foundation": {
"80M": [
{"start": 3500000, "end": 3570000, "mode": "cw" },
{"start": 3600000, "end": 3700000, "mode": "phone" }
],
"40M": [
{"start": 7000000, "end": 7040000, "mode": "cw" },
{"start": 7100000, "end": 7200000, "mode": "phone" }
]
}
}
}
data_version and updated are optional. They exist for your own record
keeping, so you can tell which revision of your plan you are running.
Modes and colors¶
The mode_colors block is your list of modes and the color each one gets on
the panadapter.
Add as many modes as you like¶
There is no fixed set and no upper limit. If your band plan separates narrow-band digital from wide-band digital, or DX windows from ordinary CW, give each one its own entry.
The shipped IARU files define around twenty modes each, several deliberately sharing a color so related segments read as one family.
Colors are HTML color codes¶
Written as #RRGGBB, the same notation used across the web and in virtually
every image editor. If you have a band chart image whose colors you want to
match, open it in an image editor and use the eyedropper tool to read the code.
The mode name is the label¶
RimuSDR prints the mode name on the bar in capitals, but only when the segment
is wide enough on screen for the text to fit. cw is almost always legible;
narrow_band_digital only appears when you are zoomed well in.
Two to twelve characters is a good target. Black or white text is chosen automatically to suit your color.
A starting palette¶
These are the colors the shipped plans use. They stay distinguishable under the common forms of color vision deficiency, so they are a safe place to begin.
| Code | Color | Typical use |
|---|---|---|
#0072B2 |
Blue | CW |
#009E73 |
Green | Phone |
#E69F00 |
Orange | Digital |
#56B4E9 |
Sky blue | Beacon |
#F0E442 |
Yellow | Special or channelized |
#D55E00 |
Vermillion | Mixed CW and phone |
#CC79A7 |
Purple | Satellite |
License classes and bands¶
Each entry under license_classes is one license class. The names are entirely
yours and appear word for word in the License Class drop-down, so write
them the way your regulator does: Full, Foundation, Class A, Klasse E.
You need at least one.
Band names¶
Use the meter designation. The M suffix is optional and case does not matter,
so 40M, 40m, and 40 are all understood.
The bands available on a standard HF and 6 m radio are 2200M, 630M,
160M, 80M, 60M, 40M, 30M, 20M, 17M, 15M, 12M, 10M, and
6M.
Frequencies are in hertz¶
This is the most common mistake
Frequencies are plain whole numbers of hertz, with no commas, decimal
points, or units. 14.150 MHz is 14150000. Double-check a few values
before you load the file.
Gaps are meaningful¶
RimuSDR paints only where you have defined a range. Anything you leave out has no bar above it, which is exactly what you want for a segment your class may not use.
In the ARRL file, the General class starts 20 m phone at 14225000 rather than
14150000. That 75 kHz gap is how the Extra-only segment shows itself as
unavailable.
Order and overlap¶
Ranges do not need to be listed in frequency order, though keeping them ascending makes the file much easier to maintain. Where two ranges overlap, the one written later is drawn on top.
Keep the bands consistent¶
Give every license class the same set of band names, even where the ranges inside them differ. This keeps the Mode Colors table complete for every class.
The one rule that catches everyone¶
Every mode must exist in both places
Every mode value used in license_classes must also exist as an entry in
mode_colors, spelled identically. This is how RimuSDR knows what color to
paint a segment.
"mode_colors": {
"sat": "#CC79A7"
},
"license_classes": {
"Full": {
"10M": [
{"start": 29300000, "end": 29510000, "mode": "sat"}
]
}
}
- Spelling must match
- The name
sathas to be identical in both places. Writing"mode": "satellite"against a"sat"color entry will not connect. Underscores count too. - Capitalization does not
CWin one place andcwin the other still works. Keeping everything lowercase in both places is the habit least likely to trip you up.- A mismatch turns the segment gray
- If a mode is used but never defined, that segment is drawn plain gray with no other warning, which is easy to miss on a busy display. A gray segment nearly always means a typo in one of the two places.