How AesApp WebCPS works

The handful of ideas the rest of the app assumes you already have: what a codeplug is, why there is no Save button, where zones and scan lists are really set, and why some numbers close up when you delete a row and others leave a hole.

On this page

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, rather than in a file on your computer — which is why you can pick it up on another machine and carry on. 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, and it is worth ten seconds of your attention. 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: by the time you are looking at the change, it 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 sits queued waiting for a save, which cuts both ways:

  • Closing the tab, or losing your connection, costs you nothing you had already confirmed.
  • There is no undo. Nothing anywhere 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 — you are both 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.

There is one safety net inside a single action: an edit applied to many channels at once succeeds or fails as a whole, so a rejected row never leaves you with half your selection changed.

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. It takes a few seconds and it is the difference between a mistake and an evening.

Zone and scan-list membership lives on the channel

In the factory CPS you open a zone and pull channels into it. Here the main direction 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.

Membership is not the same thing as a channel's start scan list, the Start Scan List field on the channel form: that is the one list the radio scans when you start scanning on that channel. The radio keeps the two ideas apart, so a channel can start a list it is not in, and being in a list never makes it the start list. A new channel starts at None. To make a list the start list of all its members at once, select it on the Scan Lists tab and use Start on members; Clear as start list puts those channels back to None, and the tab's Started by column counts them. A channel from a project imported before this field existed shows Unknown until you choose, and quietly keeps whatever start list its codeplug already had.

A zone you created but never ticked anywhere stays empty, and an empty zone is not as harmless as it looks. 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 it 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 here are held by name, and turned into numbers only when the file is built — 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 has to be unique in a project, and why the same name may happily repeat on different frequencies. A channel's DMR Contact, Radio ID and Start Scan List, 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, rename a scan list and the channels that start it follow, delete it and they fall back to None.

A few references are stored as a plain number, and those shift when the list beneath them shifts. Two of them are repaired for you on every radio: delete an auto-repeater offset or a roaming channel and everything pointing into that list is re-pointed at 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 that repair covers a reorder only.

So 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. It is thirty seconds of checking against a radio that boots into the wrong zone.

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 absolutely everything, and which one is narrower depends on the section and on your radio.

You do not have to keep a table of that in your head, because 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 — build the .rdt and write it with the factory CPS.

The codeplug behind the editor

AesApp WebCPS does not model every byte a radio holds, and it does not need to. When you import a .rdt or read a radio, the original is kept; a build or a write lays your edits into that retained copy, so every region nobody has modelled comes through unchanged. It is the reason an imported codeplug does not quietly lose the parts of itself the editor has no screen for.

The line under the project name tells you 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. A Baofeng DM-32UV or Radtel RT-4D project has no such line: neither radio has a file to retain, and its write is built over the project's copy of the radio (Write to radio).

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 Public Projects). The Projects page lists yours under My Projects; All Projects adds every public project and each shared one you have opened by its link while signed in, for as long as it stays shared. Networks are shared the same way.

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. Five things are held back rather than shown: your Radio ID list, which is your DMR IDs and call signs, your Master ID, your AES and ARC4 key values, the passwords among your radio's settings, and your APRS call signs, sending text and beacon position (the fixed location and the Fix points), which read (withheld).

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; your APRS position and sending text are left out of it. That is not bureaucracy — it is what stops someone else's radio transmitting as you. On radios where AesApp WebCPS 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 About AesApp WebCPS.

Next

Once the codeplug looks right, read writing it to your radio: what the write does, how to keep a way back before you write, and what state the radio is left in if a write stops partway.