This is the command icom that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
icom - remote control for ICOM transceivers and receivers
icom [ -r radio ] [ -c channel ] [ -m mode ] [-o offset ] [ -g frequency ] [ -f file] [
This program controls ICOM radio transceivers and receivers with the CI-V option. Most
recent ICOM radios already have this option; older radios can be converted with an
appropriate adapter mounted inside the radio. Up to four CI-V radios can be connected to a
single serial port using a level converter such as the CT-17, which includes a MAX232 chip
and not much else.
The program implements a virtual radio with a bank of memory channels corresponding to the
particular radio model. Each channel can hold frequency, mode and, in the case of VHF/UHF
FM radios, transmit duplex offset. The virtual radio also includes a variable-frequency
oscillator (VFO) scratch register, which controls the actual receiver frequency, and
several values used to control the tuning and mode selection functions. Most radios
support USB, LSB, AM, CW and RTTY modes; some support narrow/wide filters and some support
FM modes as well. Additional features that can be controlled on some radios are antenna
selection, scan control, main dial tuning step and several other functions implemented in
the various radio models.
The actual VFO frequency, mode and transmit duplex offset is controlled directly by the
program. All other registers and memory channels are accessed via the VFO, which can be
loaded from a selected memory channel, modified and written back to the same or different
channel. When implemented, the actual secondary VFO is controlled by loading from, or
exchanging contents with, the VFO. Other functions, such as tuning step, tuning rate and
compensation for the actual radio oscillator frequency errors, are performed in software.
The program knows about most early and late model ICOM radios. The program can be told
which model is present or directed to scan for all known models and report each one found.
A number of diagnostic tests are performed on the selected radio to determine which
options are present and to initialize to a known state. The program detects certain
anomalistic behavior of some radios and adjusts its operations to make the behavior
conform to the model virtual radio.
The program operates in one of three modes: keyboard batch, and keypad. In keyboard mode,
commands and arguments are entered from the keyboard following the icom> prompt, one
command per line, and the complete command set is available. In batch mode, the same
commands and arguments are read from the file specified as an option in the command line.
In keypad mode, commands and arguments are entered from the keyboard and numeric keypad
following the > prompt. In this mode, most routine keystrokes use the numeric keypad to
enter arguments, and the arguments are followed by a single character representing the
command name. Shortcut arrow keys on the keyboard (not the numeric keypad) are used to do
routine things like tune up/down or increase/decrease the tuning rate.
Options on the command line can be used to select the radio model and set the frequency
and mode. Using a suitably crafted Unix crontab file, it is possible to tune a radio to
different frequencies used by a shortwave broadcaster throughout the day, for example.
With the minimuf program (available in a separate distribution), it is possible to build
shell scripts that predict the most likely frequencies and tune the radio accordingly.
The program includes features to control scanning on some radios and transmit duplex/split
on others. It also includes an optional feature to control the audio codec on Sun
workstations. This feature can be used in connection with multimedia conferencing programs
developed by the Internet research community. The receiver audio is connected to the
workstation and a MBONE session started with the vat audio tool running. A remote operator
can control the receiver via a telnet session and use the feature to control the gain,
select the input port and mute the speaker as necessary.
Most commands and command line options take arguments, although many arguments can be
defaulted. Unsigned floating-point frequency arguments specify an absolute VFO frequency
in MHz, if less than 1000, and in kHz otherwise. Signed floating-point (preceded by an
explicit + or - character) frequency arguments specify an offset relative to the current
VFO frequency in kHz. Signed or unsigned floating-point offset arguments specify a
transmit duplex, split or beat-frequency oscillator (BFO) frequency offset in kHz. Signed
or unsigned integer step arguments specify a tuning step in Hz. Unsigned integer channel
arguments specify a memory channel number ranging from 1 to the highest available in the
particular radio. A channel number specified as '.' means the currently selected channel
and '$' the highest channel available. Other numeric and character string arguments take
values according to the help menus described below.
Since the most common function is tuning the radio to different frequencies or scanning a
band of frequencies, a compact convention is provided. In either keyboard, keypad or batch
modes, a valid signed or unsigned floating-point number occurring as the first token on a
command line is an implicit command to set the VFO frequency and may be followed by a mode
specification. In addition, for most commands and arguments, a question mark '?' appearing
in either a command or argument position causes help information for that command or
argument to be displayed. The information is in two columns - the first shows a command or
option name string, while the second column shows a brief description of the function.
The program exits when command line options are processed and the command line includes
any option other than -r, -i or -f. This is designed for use in shell scripts where all
functions can be completed using only command line options. Keyboard mode is signalled by
the prefix icom>, while keypad mode is signalled by the prefix > and batch mode has no
prefix. Keyboard and batch commands are terminated by the ENTER key on either the keyboard
or numeric keypad. Keypad commands are terminated by a special character depending on the
A radio must be selected before any command which controls it. This can be done using the
radio command in either keyboard or batch modes and the -r command line option. The
behavior of the radio command with no argument depends on whether a radio has already been
selected. If not, the program scans the CI-V bus for all known radios and for each one
found displays a capability line showing the radio name and tuning range. If a radio has
already been selected, only its capability line is displayed. The radio command with valid
argument can be used at any time to reselect a different radio, but only one can be active
at any given time.
The chan command selects the memory channel and transfers its contents, including the
frequency, mode and transmit duplex offset to the VFO. The freq command sets the VFO
frequency, but does not affect the mode. Likewise, the mode command sets the mode without
affecting the frequency. For VHF/UHF radios, the duplex command sets the offset; however,
at least with the 271, there appears no obvious means to set the sign of this offset. The
write command writes the VFO frequency, mode and offset to the memory channel, destroying
its prior contents. The clear command clears the memory channel for those radios that
Some ICOM radios do not compensate the local oscillator (LO) when the mode is changed and
the BFO is shifted in the passband. This has the unfortunate effect of detuning the radio
by an amount up to 3 kHz when the mode is changed. When one of these radios are detected
during initialization, the program rewrites the frequency each time the mode is set. In
the case of transceivers with general-coverage receivers, care should be given to the
setting of the GENE-HAM switch. If in the HAM position, it is not possible to change to a
frequency outside the ham bands. Since the setting of this switch is saved along with the
frequency and mode in a channel and apparently cannot be changed using radio commands, the
setting may have to be done manually.
The keyboard mode can be very awkward when searching a band for signals, since a new
command must be used every time the frequency is changed. The keypad command puts the
program in keypad mode and changes the prompt string to ">". In this mode, arguments such
as frequency, tuning step, etc., can be entered directly from the keyboard and numeric
keypad. Of course, the keypad must be in Num Lock mode for this to work properly. In
keypad mode, the arguments are given first followed by a single character which identifies
the command and terminates input.
Most ICOM radios tune in 10-Hz steps, while some HF radios tune in 1-Hz steps and some
VHF/UHF radios tune in 100-Hz steps. The program determines the minimum tuning step during
initialization and adjusts the various displays and control ranges accordingly. The
easiest way to tune the radio is using keypad mode and the arrow keys. The UP and DOWN
arrow keys adjust the frequency up or down one step. The LEFT and RIGHT arrow keys
decrease and increase the tuning rate (Hz per step) respectively. The rate values begin at
the minimum tuning step and extend in 1-2.5-5-10 steps to 5 MHz per step.
Each press of the UP and DOWN keys displays the current frequency, mode and either
transmit duplex offset or split offset. The display is also produced by other commands
that change these quantities. Each press of the LEFT and RIGHT keys displays the current
tuning rate. Each press of the ENTER key displays the current VFO frequency and mode. If
preceded by a single + or -, the memory channel is incremented or decremented,
respectively, and the contents of that channel replace the VFO. VFO frequencies can be
entered directly using the keypad +, -, ., digit and ENTER keys. With a little practice,
it is easy to scan a band (say with 1-kHz steps in USB) looking for signals and, when one
is found, change to 100-Hz steps to move closer and then to 10-Hz steps for the final
With the arrow keys, the VFO frequency values are constrained to follow integral multiples
of the rate values. This prevents leaving the radio on some odd frequency, increasing the
tuning rate and finding the actual tuning steps landing on odd values. When necessary, The
step keyboard command or s keypad command can be used to change the tuning step to
arbitrary values. This is useful in some channelized services with non-integral channel
spacings, as in the maritime radio services. The rate keyboard command can be used to set
the rate directly.
TRANSMIT/RECEIVE SPLIT OPERATION
The 775 and 781 HF transceivers have an auxiliary receiver and VFO that can be very useful
in some operating modes, especially for working DX and contests. When split mode is in
effect, the main VFO is used for receiving and the auxiliary VFO for transmitting. When
dual-watch is enabled, the audio from both receivers can be combined in a selectable
ratio. The control program supports both features using keyboard and keypad commands and
one of several operating procedures. Commands are provided to load the transmit VFO from
the receive VFO with selected offset, load the receive VFO from the transmit VFO with
selected offset, and to swap transmit and receive VFO contents. Upon happening on a DX
station, for example, its frequency can be saved temporarily in the transmit VFO by the 0>
keystrokes, then the receive VFO retuned "up ten" to a quiet spot. The VFO contents are
then swapped by the = keystroke. If the DX station requests calls on frequency, the <
keystroke restores the receive VFO from the transmit VFO. The split can be toggled on and
off with the > keystroke. Many variations in these procedures are possible.
FM DUPLEX OPERATION
Ordinarily, FM repeater operations require that the station receiving on a frequency
transmit at a fixed offset relative to that frequency. This operation is automatic with
most VHF/UHF transceivers and keyboard commands are provided to read and write the
transmit duplex offset. Keyboard commands are available to specify the duplex offset and
sign, although some VHF/UHF transceivers apparently have no provision to control the sign
of the offset. However, sometimes it is necessary to listen on the repeater input
frequency, instead of the normal repeater output frequency. To support this feature, the
keypad / keystroke alternates between the repeater input and output frequencies.
For those radios the support scanning, a number of commands are provided to start the
operation in various modes and capture the frequencies found. The general procdure is to
start the scan and wait for scanning to stop, usually when the squelch is broken. At this
time, the frequency that stopped the scan is displayed and can be written to a channel
with the write command.
The band command can be used to set the low and high band edges for software scanning.
This can be used to search a specific band for channelized services, such as the
broadcasting, aviation and marine radio bands. Once the band edges and frequency step have
been selected, the keyboard UP and DOWN arrow keys can be used to step the frequency
through the band. When stepped above the high band edge, the frequency is set to the low
band edge. When stepped below the low band edge, the frequency is set to the high band
Some ICOM radios, including the 775 and 781, synthesize all oscillator signals from a
single master oscillator. Once the master oscillator frequency is accurately calibrated,
the various LO and BFO signals will be exactly on frequency. Other ICOM radios synthesize
the LO signal, but use an independent oscillator for the BFO signal. In these radios, the
BFO frequency is shifted using a varactor and a network of diodes and resistors to
generate the necessary BFO frequencies. This method is not very accurate when remotely
tuning the radio to a narrowband RTTY or packet transmission, for example.
The program has provisions to compensate for the systematic errors in both the synthesized
LO signal and varactor-switched BFO signals. This is done by adjusting the VFO frequency
to compensate for the systematic LO error and individual BFO errors. The LO correction is
provided by the comp command, while the BFO corrections are provided by the USB, LSB, CW,
RTTY, AM and FM mode commands.
The calibration procedure for single-oscillator radios like the 775 and 781 is simple.
Tune the radio to a WWV frequency, preferably the highest one heard and listen for the
500-Hz or 600-Hz modulation tones is present. In keypad mode, switch between USB and LSB
modes and adjust the frequency using the UP and DOWN arrow keys until the tones sound the
same. The difference between the indicated frequency and actual frequency can be read
directly from the display or from the radio. Divide this difference by the actual
frequency to calculate the VFO compensation in PPM.
For two-oscillator radios, the calibration procedure requires two frequencies, such as WWV
on 10 MHz and 20 MHz, for example. First, listen for the tones on the 10 MHz frequency and
use the above procedure, but with AM mode substituted for one of the SSB modes. Then,
listen for the tones on the 20 MHz and do the same thing. The LO error is computed as the
difference between the 20 MHz and 10 MHz differences divided by the difference in the two
WWV frequencies, in this case 10 MHz, is the LO frequency error and the value of the VFO
compensation in PPM.
The calibration procedure continues for each BFO separately. Starting with a WWV signal at
any frequency, use the above procedure to measure the difference between the indicated and
actual frequencies for each of the four BFO modes USB, LSB, CW and RTTY. Enter the
corrections the argument to the mode command of the same name. If desired, the CW and/or
RTTY BFO frequencies can be artificially tweaked to move the center frequency to other
than the standard offset. These offsets will be automatically programmed each time the VFO
frequency is changed.
When using this program to operate more than one radio that covers the same frequency
bands and modes, it may be useful to use a standard set of files, which could be loaded
into any of the radios directly from the file. The program includes the capability to save
and restore a block of memory channels to and from a file using the save and restore
commands. This allows channel blocks to be created by other programs and copied from one
radio to another, for example. The information saved in the file includes the frequency,
mode and offset. The program can also execute a list of commands stored in a file and
interpreted in batch mode.
However, it often happens that individual radios need slightly different frequency
settings to receive the same frequency transmission, especially when narrow filters are in
use. A common example is when selecting from a standard set of frequencies provided by the
minimuf program (described elsewhere) and a Unix cron to automatically tune the radio(s)
throughout the day. The standard frequencies can be maintained in a batch file common to
all radios and loaded by the restore batch command.
However, the cron script can provide both the frequency -g and individual offset -o values
specific to each radio on the command line. The program adds this offset, along with
others provided by the offset and mode commands, if used, as the frequency is transmitted
to the radio. Usually, the offset is characteristic of the radio, as the result of BFO
frequency error, for example, and can be calibrated manually in advance.
Batch mode is designed for cases where a number of radios are to be cloned or programmed
with memory channel data produced by another program. In principle, a Unix shell script
could search an archive for the current VOA transmission schedules and transmitter
locations, another program determine the propagation model and best frequencies for the
receiver location and current time of day, and then program the radio(s) with the results.
The program communicates with one or more radios using the CI-V broadcast bus and serial
asynchronous protocol. The CT-17 level converter can be used to interface the CI-V voltage
levels (TTL) to EIA (RS-232) levels, or a homebrew unit can be made from the MAX232 IC
plus a handful of capacitors. The CT-17 supports up to four radios, but there is no
inherent protocol limitation to this number. The CI-V uses active-low drivers with
resistor pullups, so multiple radios can be connected to the same wire.
Messages are exchanged in the form of frames beginning with two preamble bytes (0xfe) and
ending with one end of message byte (0xfd). In order to handle the older radios, the
control program operates at 1200 bps; however, it can be compiled to operate at higher
speeds. Each radio model is assigned a unique identifier byte, which can be changed if
necessary. The control program sends a frame with that identifier and expects a reply,
either containing data or a single ACK (0xfb) or NAK (0xfa). Most functions implemented by
the control program require an exchange of several frames.
It has been the experience that some radios can occasionally fail to respond to a command
or respond with a mangled frame. Therefore, the control program includes a good deal of
error recovery code and uses timeouts and retransmissions as necessary. Since the CI-V bus
uses a broadcast architecture, every octet transmitted by the control program is read back
for verification. If the readback fails or no reply is received after three
retransmissions, the operation fails and an error message is displayed.
The trace command can be used to watch the protocol interactions between the program and
radios. The argument bus enables packet trace. The trace operates from received octets,
either a readback of a transmitted frame preceded by "T:" or a copy of a received frame
preceded by "R:". Each transmission is repeated up to three times in case of error, after
which the operation fails and is reported as an error. The argument packet enables bus
error messages, which are normally suppressed until the maximum retry limit is reached.
Written by David L. Mills, W3HCF; this update 25 September 1996. This manual page was
created from the original HTML documentation by Hamish Moffatt VK3SB <[email protected]>
for Debian (but may be used by others).
Use icom online using onworks.net services