1.4  piWebCAT specification

Configuration options:

   Using user entered CAT commands:

  • ASCII        ASCII text character configuration system used for Yaesu, Kenwood, Elekraft
  • YAESU5        for the earlier Yaesu radios using a bcd/hexadecimal command structure
                   (FT847, FT818, F920, FT1000, MkVFT1000MP   etcv)
  • CIV                For Icom CI-V control

  Using the Hamlib rigctld AP:

  • HAMLIB        rigctld translates a common set of commands into CAT commands for your selected radio.
                   There are 250 supported radios in the Hamlib database. Each is simply selected by number.

eg: If FTdx101D (#10400) is selected,
         then Hamlib: set_freq VFOA 3744000  will translate to Yaesu: FA003744000;

Extensive,  flexible user configurability.

Configuration stored on RPi server in a MySQL database.
The database can store configurations for multiple radios.


Raspberry Pi 4B computer only ..... if using USB connection to radio.  

+  RS232  or  G3VPX RS232/CI-V GPIO card for serial data connection to radio.


Preconfigured Raspberry Pi system on micro SD card.
Transceiver configuration databases supplied for Modern Yaesu, Yaesu FT920,  Icom IC7000.
Hamlib configurations for FTdx101D, IC7000  and a generic Hamlib transceiver.

Documentation and help
This web site is also built in to piWebCAT (help button)  It is downloadable as a 222 page PDF file.
This includes an 11 page learning guide based a evolving sequence of three configurations.

Frequency control: 

VFOA / VFOB, swap, B to A,  split   (or whatever else you want to configure.)


A  dedicated tuning scale for each band with marker. Touch or click the scale for coarse positioning.

A tuning window with thee horizontal bands:  fast, medium and slow.

Tune by mouse (or finger) drag along these bands

OR three mouse wheel tuning rates according to which band the mouse pointer is in.

( Tuning rates are user definable and stored in the database)

On an android tablet, tune by finger drag or by mouse wheel on bluetooth or OTG mouse.

User configurable Up and Down buttons, eg: -12.5kHz    + 12.5kHz    -25kHz    +25kHz.


A button can be configured to popup a memory selector numeric keypad to select a memory by number'
On clicking OK, the selected memory is sent in a 'memory  to VFO' CAT command..                                


160m, 80m, 60m, 40m, 30m, 20m, 17m, 15m, 12m, 10m, 6m, 4m, 2m and 70cm.

Tuning by UP and DOWN buttons for VHF/UHF channels,  eg: +12.5kHz and -12.5kHz
This is one of a small number of  fixed coded functions   -
but you retain control of frequency shift, button choice and captions and colour.

Slider and button settings for latest band on each VFO are remembered for fast VFO switching.

(same band or cross band)

27 slider controls

- some predefined + some spare for user allocation  ... but you can redefine them all.

Each slider has an adjacent value display (with scaling, dec.point, optional table lookup and units)

Sliders are in three groups:  

  • COMP, Mic Gain, Vox gain, RFpower, AF gain and squelch (probably unchanged) + 2 spare.
  • Nine sliders with a reset to default button  - default defined by you in the database   -
  • Nine sliders with an adjacent button:   mainly on/off.

         - the association of button and slider is database defined and optional.

Using web browser Firefox, Sliders can be slowly moved with the mousewheel (allowing effective RIT tuning)

Sliders as indicators -  Selected sliders can be optionally enabled for frequent periodic update of their
marker position and of their adjacent numeric parameter value.

66 button controls  +  24 extra buttons on a popup window.
A few buttons need to be of fixed function: ie: Band buttons and VFOA and VFOB.
Some are associated with sliders (eg: DNR on/off - DNR level.)  but you can change what they all do.

Five are dedicated TX meter function selectors  - but you choose which five Tx meters to offer.

The rest are under user configuration control for:
  - the CAT commands that they generate.
  - their action:   S = single momentary, T = toggling, G = grouped ( have common  code) etc

  - their captions and the background colour of the button.

Buttons as indicators  - Selected buttons can be enabled for frequent periodic status update.
These can optionally function as 'LED' indicator lamps:  
  - In their OFF state,they are black with dark red text.
  - In their ON state they light up in a bright colour of your choice with black text.

Audio switching on dual receiver transceivers 
Option on VFO swapping to automatically mute background receiver and switch the foreground receiver
 to its last audio level. (needs CAT access to background VFO see section 2.10 Icom --vfo mode)

Default settings of controls:
At start up, frequency and mode and settings for buttons and sliders are loaded from the radio.

Thereafter,  frequency, mode and MOX update on piWebCAT, if changed on the radio.

In addition, every button and slider control has the option to set active=S = sync (instead of just Y = yes).
All  such sync controls are then continually polled in a circular list and updated from their current rig setting.
Sync status thus is restricted by user choice to selected controls to minimise the data bandwidth.
The polling interval for the list is user configurable.
Any such control's update interval = polling interval / total no of sync controls.

A 'Reconnect' button is therefore provided to reload the settings.
However, this is only needed if changes are made on the radio:  
If you use piWebCAT to change band or VFO on the radio, the radio responds immediately and
piWebCAT's controls are updated automatically within 5 seconds.

However, piWebCAT remembers the most recent settings for each VFO and so this 5 second
delay does not occur on repeated swapping between VFO A and VFO B.  

(Needs CAT access to background VFO   see section 2.10 Icom --vfo mode)

S meter / Tx meters
On receive, the meter this is an S meter with an appearance similar to the FTdx101D.
On transmit, the meter displays one of five button selectable options.
 The Tx values for display and their CAT controls are defined in the database for your radio.
I provide five Tx meter backgrounds for Power, ALC, Compression, PA ID and SWR.
These are simple 250 x110 bitmap images ... you can change them (please keep the arc !!)
Accuracy of display is achieved for each of the six installed metering functions by the provision
of  20 point interpolated calibration tables in the database  (and an easy calibration procedure)

Database editing.
piWebCAT has a spreadsheet-like editor grid for each of the database tables.
Editing is directly onto the grid.  Only records for the selected radio are presented.
The table can be exported to a CSV file for import into Excel. They can then be printed.
The database is standard MySQL (MariaDB) and so can be edited by other database editor/toolkits.
For most of the development, I used the free MySQL Front. This can export radio configuration

and so facilitates the exchange of configuration data between users.   (See section 14.1 Downloads )
More recently, I have used HeidiSQL: another excellent, free database editor / toolkit.

Rig duplication - SQL scripts

I provide SQL scripts which include duplicating a whole rig configuration (with a different name!).
This allows you to preserve my existing configurations whilst experimenting on a copy.

Design philosophy

I have attempted to maximise the use of a user editable database in configuring  piWebCAT.
This means that there are very few controls tailored to the features of particular radios.

In the direct ASCII, CI-V and YAESU5 configurations (ie: Not using Hamlib), a small minority of
commands cannot easily be supported. A example of this is Rx clarifier on the Fdx101D.

If we compare the FTdx101D IF shift and clarifier commands.
 - IF shift is not a problem.  A single read/write command is used, eg IS00-0340; for -340Hz (current VFO.)
        piWebCAT can display a centre-zero slider with text -340Hz and a centre zeroing reset button.

 - Rx Clarifier is difficult.   The FTdx101D has an on/off command and a clear command.
      There are separate write-only commands for shift up increment and shift down decrement.
      I combined these into a single control for the FT920 by using a 'rigfix' (See below).
      I can do it for other radios if requested. (But the use of a Hamlib configuration is probably a better solution)

Amateur radio logging system           For auto-time entry needs internet or RPi real time clock (£5)

The log is stored in a table in the RPi MySQL database.     It has the following features:

  • One single button click enters: date, start time, frequency, mode, power and optional contest number.
  • Date picker and time sliders are provided for 'manual' data entry.
  • Optional multiple lines of text with word wrap in the remarks column (automatically expands the row).
  • Searchable label column with three specific label options to highlight the row in a background colour.
  • Search button.    
  • QRZ.com button for selected callsign.
  • Export to CSV button (will launch in Excel for printing etc)
  • Backup and restore of log using third party MySQL editor (eg: MySQL Front  ...free download)
  • Logging system can be be run separate from piWebCAT (No auto-insertion of freq, mode nor power)

I have provided:

  • An SD card image download for the Raspberry Pi 3 or 4.
  • Extensive documentation in a website.
  • FTdx101D, FT847, FT818, FT920 and IC7000 database configurations as examples and as templates.
  • In addition: two sets of three progressively developing learning configurations with a learning guide.


piWebCAT was built using Microsoft's Expression 4  - a free downloadable web development package.

The design was done 100% in code. This kind of web page is too complex for WYSIWYG graphical layout.

You can use an FTP client program (eg: FileZilla) to download the complete piWebCAT code from the
usual Linux  /var/www/html folder on the RPi. You can then edit it and play with it using Expression 4.
You need to keep a copy of the original. Javascript and PHP code can be killed by a single wrong character
which can be very difficult to locate across multiple coded sections!!

The piWebCAT data path is:

      Javascript in the web browser   < LAN >  PHP code in RPi webserver  < serial OR USB >   FTdx101D.

Note that the client javascript makes extensive use of jQuery (open source).

Communication with the server is by jQuery Ajax commands.

The editing grids use phpGrid  - a purchased Chinese product that is licensed to me for OEM distribution.
phpGrid makes extensive use of javascript jqGrid which is open source.


If there are a few commands that cannot be implemented on certain radios, then a rigfix might be needed.

A rigfix is hard coded in PHP server code. A rigfix is applied to a radio by the rigfix  field in the rigs table.

It has drop down selector data entry to select from the currently available options.

At the time of writing, the available options are FT818 and FT920  See:  FT920 and FT818 rigfix

Example: Data is read from the FT920 in large blocks spanning multiple controls. piWebCAT reads for each

control separately. The rigfix provides a caching system to reduce data bandwith requirements by avoiding

repetitive multiple reads of the same large data block.


Mumble is a free, open source. low latency, high quality voice chat application using Voice Over IP (VOIP).

It is not part of piWebCAT. Its installation adds the transmission of Tx and Rx audio to piWebCAT which
allows operation from a location remote from the transceiver using the combination of CAT control and audio.

It is one of a number of VOIP applications that could operate in parallel with piWebCAT.

It appeared to be the most suitable package for this purpose. I have used it in QSOs with piWebCAT.
It does not carry the burden of video transmisison which is a feature of some of the alternatives.