Sub-Bands Customization Guide

Customizing Sub-Bands for Your Region

RimuSDR draws a color-coded band privilege bar across the top of the panadapter, so you can see at a glance where the CW, phone, digital, and beacon segments fall on the band you are listening to. RimuSDR ships with the ARRL US plan and IARU Regions 1, 2, and 3 - and if none of those match your country, you can write your own. No programming experience required.

RimuSDR · Band plans · License classes · Mode colors · Plain text file

RimuSDR panadapter with the sub-band privilege bar above the spectrum, showing a blue CW segment and an orange DIGITAL segment either side of the tuned slice

What a Band Plan File Contains

A band plan is a single plain-text .json file with two parts. You can edit it with Notepad, TextEdit, gedit, or any text editor.

Mode colors

mode_colors

Your list of operating modes, and the color each one is drawn in.

  • Define as many modes as you need
  • Colors are standard HTML color codes
  • The mode name becomes the on-screen label
License classes

license_classes

Each license class in your country, and the frequency ranges it is allowed.

  • Name the classes as your regulator does
  • One class, or a dozen - your choice
  • Each class lists its own band segments

The ARRL US file is the best one to copy from, because it is the only shipped plan whose license classes have genuinely different privileges. If your country issues a single class of license, the IARU Region files are a simpler starting point, since each defines exactly one.

Step 1 - Start From a Copy

Do not edit the files that came with RimuSDR. Installing an update replaces them, and your edits would be lost. Start from a fresh copy instead: download one below, save it somewhere you can write to such as your Documents folder, give it a name of your own, and edit that.

Download a starting plan

These are the same four plans that ship with RimuSDR. Pick the one closest to your country's band plan and edit it from there.

Or copy one from your installation
  • WindowsC:\Program Files\RimuSDR\resources\band-privileges\
  • Linux (.deb or .rpm)/usr/share/rimusdr/band-privileges/
  • Linux (AppImage)The files are inside the bundle. Extract them with ./RimuSDR-x.y.z.AppImage --appimage-extract, then look in squashfs-root/usr/share/rimusdr/band-privileges/
  • Keep it writableOn Windows you will not be able to save changes inside C:\Program Files. This is another reason to keep your own file in Documents.

Step 2 - Load Your File Into RimuSDR

Once your file exists, point RimuSDR at it. The panadapter picks up the change immediately - no restart, and no need to reconnect to the radio.

Setup steps
  • a. Open the settingsGo to Settings › Display Settings and choose the Sub-bands tab.
  • b. Choose CustomSet Band Privileges File to Custom.... A file box and a Browse... button appear underneath.
  • c. Select your fileClick Browse... and pick your .json file.
  • d. Pick your license classChoose your class from the License Class list. This list is filled in from your file, so if your class names appear here, your file loaded correctly.
  • e. Turn the display onTick Show Sub-Bands, then click OK. Note that Show Sub-Bands cannot be enabled while License Class is set to None, because privileges depend on the class.
RimuSDR Display Settings on the Sub-bands tab, with Custom selected, a band plan file chosen, and the mode colors from that file listed with their swatches
The edit-and-check loop
While you are working on your file, save your changes in the text editor, then open Display Settings and click OK. RimuSDR re-reads the file from disk every time, so your latest edits appear right away.
Check your colors
The Mode Colors table on the Sub-bands tab lists every mode your selected class uses, with a swatch of the color you gave it. It is the quickest way to confirm your colors came through as intended.
Keep the file where it is
RimuSDR remembers the full path to your file. If you later move, rename, or delete it, RimuSDR quietly falls back to the ARRL US plan. If your sub-bands suddenly look American again, check that the file is still where it was.

The File, Part by Part

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, and exist for your own record keeping so you can tell which revision of your plan you are running.

Defining Your 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 any image editor and use the eyedropper or color picker tool - it will show you the code to paste in.
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 will almost always be 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 are chosen to stay distinguishable under the common forms of color vision deficiency, so they are a safe place to begin.

  • #0072B2Blue - CW
  • #009E73Green - Phone
  • #E69F00Orange - Digital
  • #56B4E9Sky blue - Beacon
  • #F0E442Yellow - Special or channelized
  • #D55E00Vermillion - Mixed CW and phone
  • #CC79A7Purple - Satellite

Defining Your 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 dropdown, so write them the way your regulator does: Full, Foundation, Class A, Klasse E. You need at least one.

Inside each class
  • Band namesUse 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 hertzWritten as plain whole numbers, with no commas, decimal points, or units. 14.150 MHz is 14150000. This is the single most common mistake, so it is worth double-checking a few values before you load the file.
  • Gaps are meaningfulRimuSDR paints only where you have defined a range. Anything you leave out simply 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, and that 75 kHz gap is how the Extra-only segment shows itself as unavailable.
  • Order is up to youRanges 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 consistentGive 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 value you use 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 sat has to be identical in both places. Writing "mode": "satellite" against a "sat" color entry will not connect. Underscores count too.
Capitalization does not
CW in one place and cw in the other will still work, but 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.

Worked Example - Adding a Mode

Say your national plan sets aside 10.130 to 10.150 MHz for FT8 specifically, and you want it in its own color rather than lumped in with digital.

Three steps
  • 1. Add the mode and a colorAdd a new entry to mode_colors, for example "ft8": "#B44AC0".
  • 2. Use that exact nameReference it in the range: {"start": 10130000, "end": 10150000, "mode": "ft8"} under the 30M band.
  • 3. Reload and checkSave the file, then open Display Settings and click OK. ft8 now appears in the Mode Colors table with a purple swatch, and the segment appears on 30 m labeled FT8.
"mode_colors": {
  "cw": "#0072B2",
  "phone": "#009E73",
  "digital": "#E69F00",
  "ft8": "#B44AC0"
},

"30M": [
  {"start": 10100000, "end": 10130000, "mode": "cw"  },
  {"start": 10130000, "end": 10150000, "mode": "ft8" }
]

Adding a whole license class works the same way. Add another entry under license_classes with its own bands and ranges, and it appears in the License Class dropdown next time the file is loaded.

Checklist before you load
  • Valid JSONEvery { has a matching }, every [ a matching ], and there is no comma after the last item in any list or block. JSON does not allow comments.
  • Frequencies in hertzPlain whole numbers, with start lower than end in every range.
  • Every mode definedEach mode used under license_classes appears in mode_colors, spelled the same way.
  • Colors well formedEvery color is a #RRGGBB code, including the #.
  • At least one classA file with no license classes will not load.
  • Check the syntaxPaste the file into any online JSON validator, or run python3 -m json.tool your-file.json. If it prints your file back, the syntax is good. If not, it tells you which line to look at.

Troubleshooting

The most common results when something is not quite right, and what to check first.

No bar at all
Confirm Show Sub-Bands is ticked and License Class is not set to None.
License Class list is empty
If nothing but None appears, the file failed to load. Validate the JSON and confirm there is at least one entry under license_classes.
A segment is gray
Its mode is not defined in mode_colors, or is spelled differently there.
A segment is missing
The band name does not match, or the start and end values are wrong. Remember they are in hertz.
Segments have no text
This is normal. The label is drawn only when the segment is wide enough on screen. Zoom in, or use a shorter mode name.
The US plan came back
RimuSDR could not find your custom file and fell back to the default. Confirm it has not been moved, renamed, or deleted.

Share Your Band Plan

If you build a band plan for a country RimuSDR does not yet ship, we would like to see it.

Send it to us
  • Where to send itEmail your file to support@rimusystems.com with a note about which country it covers and which regulator's plan it follows. It may be included as a built-in option in a later release.
Need Help?
×