Provided by: icom_20120228-3_amd64 bug


       icom - remote control for ICOM transceivers and receivers


       icom  [  -r  radio ] [ -c channel ] [ -m mode ] [-o offset ] [ -g frequency ] [ -f file] [
       -adk ]


       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
       support it.

       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.


       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.


       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 <>
       for Debian (but may be used by others).


       This is a work in progress. Many idiosyncrasies  of  various  ICOM  radios  remain  to  be

                                        25 September 1996                                 icom(1)