Codeplugs and projects
A codeplug is everything your radio has been programmed with: channels, zones, scan lists, contacts and the hundreds of settings behind the menu. The radio holds exactly one, and writing a new one replaces it.
A project here is one codeplug for one radio model. It lives on the server, attached to your account, not in a file on your computer. You edit it in the browser, then send it to a radio with Write to Radio or take a copy away with Build .rdt for the factory Windows CPS.
Most of the editor has no Save button, and there is no undo
This is the biggest surprise coming from the Windows CPS. There you open a file, change it and save; until you save, nothing has happened. In the row-and-column grids here it is the other way round: the change has already happened.
Those grids write to the server as you go. Confirm a row in its editing form and it is stored before the form closes. Delete rows and they are gone. Drag a row to a new position and the new order is stored on the drop. Nothing is queued waiting for a save, so:
- Closing the tab, or losing your connection, costs you nothing you had already confirmed.
- There is no undo. Nothing keeps the previous value of what you just changed.
- If the project is open in two places at once — two of your own tabs, or you and an administrator — both are editing it live. People you share the link with cannot edit it at all.
The rule for the rest of the editor is visible on screen: where a tab or a card inside one has its own Save button, nothing is stored until you press it, and switching tab or closing the browser first loses what you typed. That covers the Settings tab, its APRS and Band Plan sub-tabs, the Master ID card and the 2-Tone, 5-Tone and DTMF settings cards, and — where your radio has them — the alert-tone, quick-call and QDC1200 tabs. On the AT-D168UV, APRS is a tab of its own with a Save APRS button rather than a sub-tab of Settings.
Inside a single action there is one safety net: an edit applied to many channels at once is one transaction, so if any row is rejected the whole request is rolled back rather than half your selection.
There is no way back from a bad edit inside the project. Recovery means importing the original .rdt again, or reading the radio again — and both create a new project rather than repairing this one. Before anything drastic, build a .rdt and keep it.
Zone and scan-list membership lives on the channel
In the factory CPS you open a zone and pull channels into it. The primary direction here is the opposite: you open a channel and tick the zones it belongs to. The channel editing form carries a Zones picker and a Scan Lists picker.
So create the zone on the Zones tab first — a name is all it needs — then go to Channels, select the channels, one or fifty at a time, and tick that zone.
The reverse direction exists and stays in step: a zone's own editing form has a Member Channels picker, and a scan list has the same. Use whichever is less work: filling a new zone from the zone, putting one repeater into six zones from the channel.
A zone you created but never ticked anywhere stays empty, and an empty zone is not simply harmless. It never appears in the CSV export, and it is skipped in the exported zone list that the start-up, MEM and priority zone settings are numbered against. Whether it reaches the radio depends on the model: on the D890 every zone the project holds is written, empty ones included, and an empty one shows on the radio as an empty zone.
Numbers, gaps and order
Deleting a row never renumbers the rows below it, in any list. Delete the channel at 40 and the one at 41 stays at 41. Delete zone 2 of three and the grid shows 1 and 3. What differs between the lists is what you can do about the hole.
Channels, Radio IDs and RX Groups carry the controls for working with slots: Insert at No… puts a new row in a chosen slot and Move to No… relocates one, both refusing an occupied slot rather than shoving anything aside. Channels also offer Renumber 1…N, which closes every gap in one pass.
Zones, scan lists and talk groups have none of those. You set their order by dragging rows, and the order is stored on the drop.
A channel gap is real: the slot stays empty, exactly as the radio and the factory CPS see it. A gap in the zone or scan-list grid is cosmetic — those lists are numbered again from 1, in order, when the codeplug is built.
Why renumbering is mostly safe
Most references are held here by name. ChannelBuddy resolves them into the numbers the codeplug format actually stores when it builds the file, so a name survives any amount of renumbering. A channel's membership of a zone or scan list is resolved by its name plus its RX and TX frequencies — which is why that triple must be unique in a project, and why the same name may repeat on different frequencies. A channel's DMR Contact and Radio ID, and a zone's A Channel and B Channel, are held by name too; rename a channel and a zone's A/B selection follows it.
A few references are stored as a number, and those shift when the list beneath them shifts. ChannelBuddy repairs two of them on every radio: delete an auto-repeater offset or a roaming channel and the list is renumbered with everything that indexes it re-pointed to the same row.
The zone-index settings are the gap
The start-up, MEM and priority zone settings do not store a zone name. They store the zone's place in the exported zone list — the list that counts only zones with members. Reordering zones re-points them on the AT-D878UVII. On the other radios nothing re-points them, because they are different settings there. And on every radio the repair covers a reorder only.
After you add, delete, empty or fill a zone, open the Settings tab and check the start-up, MEM and priority zone settings before you write. A zone arriving or leaving earlier in the list moves every number after it, and the radio obeys the number, not the name you picked.
Saved here is not the same as written to the radio
Most of what you edit reaches the .rdt you build, and most of it reaches the radio over the cable. Neither path carries everything, and which one is narrower depends on the section and on the radio.
Two write paths sit behind the cable. On the models programmed from the vendor's .rdt format, the radio is programmed from the same file the download produces. The image-native models are programmed from a raw memory image, assembled section by section over a fresh backup read from the radio first, and a section with no encoder yet is skipped — the radio keeps the bytes it already had.
The editor marks both kinds of gap where they exist. A USB only badge beside a setting means the value is saved and written over the cable, but the .rdt format has nowhere to put it, so a downloaded file will not carry it. Where a section cannot travel over the cable on your radio, the hint under the tab heading says so and tells you what to do instead, which is to build the .rdt and write it with the factory CPS.
The codeplug behind the editor
ChannelBuddy does not model every byte a radio holds, and does not need to. When you import a .rdt or read a radio, the original is kept; a build or a write splices your edits into that retained copy, so every region nobody has modelled comes through unchanged.
The line under the project name says which base you are on: your imported .rdt (unmodeled sections preserved), or bundled base for a project started from scratch. Where there is anything to list, a what's not editable here? link beside it opens the preserved features.
The Settings tab works the same way one field at a time: it stores only the values you changed and takes the rest from the base. That is what Use template values undoes — it drops that tab's overrides so the build keeps the base's own bytes.
Throwing the retained codeplug away cannot be undone, and it changes what your next build produces: every unmodelled section reverts to the model's bundled defaults. That is the use bundled instead link on the same line, and it asks first.
Who can see it
A project is private (you, and an administrator), shared (anyone with the link, account or not) or public (the same, plus a listing under Browse public).
A non-owner gets the same view read-only — every tab except Encryption Keys, which is not rendered for them at all — with the create, edit and delete controls gone and the server refusing those requests in any case. Three things are held back: your Radio ID list, which is your DMR IDs and call signs, your Master ID, and your AES and ARC4 key values.
A viewer taking your codeplug away must supply their own DMR ID and call sign, and it is stamped into the file in place of yours; the server refuses the download or the write otherwise. On radios where ChannelBuddy cannot stamp an identity yet, downloads and writes are owner-only, and the page says so where the button would have been.
Which radios are supported, and what your plan allows, is on the about page.
Next
Once the codeplug looks right, read writing it to your radio: what the write does, why a backup is the only undo you get, and what state the radio is left in if a write stops partway.