With some programming, I can read the stored frequencies from the IC-R20 and an ICF file.
Cool!
Can I add custom columns, for example, a column named "SSB TS" for SSB Tune Step?
No. Is there a separate setting for the tuning step on SSB channels in the radio?
You probably want to declare features.has_nostep_tuning=True, which will tell the UI not to validate frequencies against the set of supported tuning steps.
Some comments:
TMODES = ["", "TSQL", "DTCS", "VSC"]
"VSC" isn't a valid tone mode. You'll get an error when you try to download a channel if you do memory.tmode = "VSC".
I think it would be best to place a RadioSetting into memory.extra for enabling that function.
DTCS_POLARITY = ["Normal", "Reverse"]
This should be "NN" and "RR".
TUNING_STEPS = [0.01, 0.1, 1.0, 5.0, 6.25, 8.33, 10.0, 12.5, 15.0, 20.0, 25.0, 30.0, 50.0, 100.0]
The steps below 5.0 aren't in chirp's global list, and thus you'll get a similar error if you try to set memory.tuning_step=0.01. Is it reasonable to ignore these in get_memory() and set_memory() or is there a reason to add support for them in chirp's core?
mem.tuning_step = TUNING_STEPS[_mem.ts & 0x0F]
You probably know this, but the definition of _mem.ts should just be narrowed to only include the low nibble if that's the intent.
However, nice job on the first pass!