3.11  piWebCAT - Memory selection.

The FTdx101D has a  CAT command:  MT to program a memory channel.
It sends channel number, VFO_A frequency, clarifier settings, mode, CTCSS data, simplex/shift.
All this is sent in one command, 50 characters in length.  piWebCAT cannot handle this in any useful way.

(It could send  a fixed long command but cannot edit so many components within the command.)


piWebCAT can select and apply memories that have been pre-programmed in the radio.

There are two ways to do this:

  • Memory channel buttons each having a fixed, single channel assignment.  cmdtype = MECH (fixed)
  • A button to launch a numeric, memory selecting keypad.   cmdtype = MPAD  (fixed)


Both of the above commands are followed one second later by a 'pseudo button' on the client sending
an automatic  'copy selected memory to current VFO' command ( cmdtype = MTOV ).

If MTOV is not needed (eg: Yaesu FTdx101D), then it if it is not configured in the catcodes table it will
simply be lost.


For the IC-7000 (and ? other Icom radios),  the automatic MTOV command is needed because the
'memory select' command selects the memory but does not apply it to the VFO.


Single channel buttons  eg: for calling channels.

These are programmed like any other single press buttons (action = S).

Each such button has a record in the buttons (or buttonsciv) table.

You can configure multiple buttons sharing a common catcodes (or catcodesciv or catcodeshl) record.

Any code can be used,. However, the use of code = MECH will generate a  'copy memory to VFO'

command one second later with code = MTOV. If you don't need the 'copy after one second' feature,

(eg: with Yaesu) then don't configure an MTOV record in catcodes (or catcodesciv or catcodeshl).


Memory Selector     See examples in   IC-7000 - memory channel selection

piWebCAT has a keypad to select memories which have been preprogrammed on the radio.


The command must use  code = MPAD 

- both in the buttons table and the catcodes table  (or buttonsciv and catcodesciv).


The buttons table entry has code = MPAD and

action = S (single momentary action. )

This causes the button to display the keypad.
No data configuration is needed (ie von, voff etc)

The data will be the number of the button selection.


The catcodes table is configured with code = MPAD

and for the radio's memory selector command.


When you click the button, a numeric keypad pops up as shown.  You simply select the memory by number and click OK. The OK button sends an MPAD command to the server.


In the above example, I have configured a spare button RR for this job.
I have set color to navy and caption to MPad.
(Note that the popup keypad appears at a fixed initial position, but can then be dragged around the window.)


When a memory channel is selected using the keypad, a memory indicator appears to the left of the frequency display, eg: M:17 as shown left.

The selected memory needs to quickly applied to the VFO

.. either automatically (Yaesu) or with the MOTV feature. This is because  any consequential frequency change after three seconds will clear the indicator.



ASCII -  eg:  FTdx101D

For the FTdx101D, memory select  is configured as setmask =  MChtu;
( h, t and u  map to hundreds, tens and units of the actual data to be sent    = memory number).

The MC command selects the memory AND applies it to the current VFO.


Fixed channel buttons

You can program one or more buttons to select fixed memories.

Use code = MECH with one buttons record per button.

All buttons share a single catcodes record with code = MECH and configured with the MC command as above.

Only configure a code = MTOV command in catcodes ( as described above) if you radio's memory select command

does not copy the selected memory to the VFO.


Using the memories keypad

Program one button with caption = MPad    code = MPAD to launch the keypad.
Program a catcodes record with code = MPAD and for the MC command as above.


Icom CI-V:   IC7000 and more modern radios


The IC7000 has five memory banks, A to E and 105 memory channels in each bank, 0001 to 0105.

In addition, channels 0106 and 0107 are call channels, C1 and C2.


Important:   data is sent as bcd (binary coded decimal)

If Icom specify data as 0106   that means you must set datadigits = 4, irrespective of the actual number.
(0106 will be sent as hexadecimal bytes 0x01   0x06)


If I select a memory bank, A to E on the radio, then that selection is retained.
I can then use the memory channel CAT command to select the channel.

This is: command = 0x08     sub-command = channel number (or data = channel number on current Icom radios)


I configured three buttons:

See left -  3 spare buttons configured. Described below.  Also in CI-V configuration examples

Two single channel buttons  for channels 106 and 107 (= C1 and C2)

   action = S, vx = X, code = MECH and von = 106 / 107


A single button to launch the memory selecting numeric keypad.
action = S vx = X, code = MPAD. There is no data ... the data will be the number entered.


We need in catcodesciv  

  • a record with code = MECH, cmdtype = C_DATA, command = 08.  datadigits = 4
  • a record with code = MPAD, cmdtype = C_DATA, command = 08.  datadigits = 4



Modern Icom radios

I looked at the Icom IC-7610 advanced manual. It has 100 memory channels with the same CAT command
as the (15 yr old) IC7000.   I could see no mention of memory banks A to E as used on the IC7000.
I have not provided an Icon memory bank selector in piWebCAT.


Note that the CI-V manuals for the two radios specify command 08 differently (but I think they are the same)

- IC-7000 -  command = 08    subcommand  = 0001 to 0105       no data        cmdtype = C_DATA works ok.

- IC-7610 -  command = 08    no subcommand     data = 0001 to 0099          cmdtype = C_DATA should be ok