Computer Control of ICOM Amateur Gear
          
                              Carl Clawson, N7KBV
          
          
          
                              General Description
          
          
               Several ICOM products feature a built-in computer
          interface connected to a 1/8" phone jack on the rear panel.
          However, ICOM gives no information about this interface in
          the instruction manuals that I've seen.  The information
          exists within ICOM, and my dealer managed to get it for me.
          
               This interface, called the "CI-V" by ICOM, is standard
          on the following models:  735, 761, 275, 375, 475, and
          R7000.  Earlier models used the CI-IV parallel interface,
          which can be connected to CI-V by ICOM's UX-14 converter.
          Models using the CI-IV are the 751, 271, 471, 1271, and R71.
          The information I got from ICOM was written with the 735 in
          mind, but a listing of a BASIC program to control the R7000
          was appended.  I believe it will help with the other models,
          too.  The control codes and data format should be the same
          for all of them.

          
               The computer interface allows you to do such things as:
          
          -    Set and read the frequency and modulation mode
          
          -    Set VFO A, VFO B, or memory mode
          
          -    Select memory channel
          
          -    Store displayed frequency into memory
          
          -    Transfer displayed memory-mode frequency to a VFO
          
               Even without a computer, you can run a cable between
          the remote control jacks of two rigs, and whenever the fre-
          quency or modulation mode of either is changed, the other
          will track it if possible.  (If the rigs have incompatible
          frequency coverages, like the 735 and R7000, funny things
          can happen.)
          
               The interface is bi-directional, using TTL levels on a
          single line for sending and receiving serial ASCII data.
          You may need an appropriate hardware interface to convert,
          for example, RS232 to TTL.  (I understand that Commodore
          computers have TTL inputs and outputs so that no interface
          is needed with them.) I used the Motorola MC1488 and MC1489
          chips powered by two 9-volt batteries to interface to my
          RS232 line.  Appendix 1 lists the pinouts used for this
          interface.  If you'd rather buy something, ICOM sells the
          model CT-17 level converter for RS232.
          
               The interface uses a "carrier-sense, multiple-access
          with collision detection" local area network protocol, so
          that multiple rigs can be connected in parallel without dif-
          ficulty.  Thus, you can use the same RS232 line and level-
          converter interface to control many rigs.  Each rig must
          have a unique address, which is set by internal jumpers.
          Each model comes factory preset to its own address, which is
          04 for the 735 and 08 for the R7000.  Appendix 2 has infor-
          mation on the jumper settings.
          
               I will use the words "receive" and "send" to refer to
          data transmissionhe word "rig" to mean an ICOM product using the
          CI-V interface.
        
          
          
               The rigs send and receive data in variable length pack-
          ets, which are formatted as follows:
          
                  Byte #    Contents
          
                  1         hex 'FE' (i.e. 11111110 binary, 254 decimal)
                  2         hex 'FE'
                  3         <RX>
                  4         <TX>
                  5         <Code>
                  6-n       <BCD data of variable length>
                  n+1       hex 'FD'
        
          The two hexadecimal FE bytes signal the beginning of a
          packet, and the FD byte signals the end.  <Code> is the con-
          trol code sent by the computer to the rig, which determines
          the action that the rig will take.  In some cases, the
          receiving rig will include a control code in its response to
          the sender; see the section "Control Codes and Responses"
          below.  <TX> is the address of thng sent.
          When a rig responds to a data packet, it addresses that
          response to the <TX> in the packet.  Thus, if your computer
                   (Of course, the computer can lie about its address and trick
          one rig into talking to another!) Your computer should use
          its own uniqu          There are two control codes that can cause any rig on the
          network to respond when sent with <RX>=0; I discuss these below.
          
               Bytes #6 through #n contain any data required by the
          control code, in BCD format with 2 decimal digits per byte.
       ing the
          1-Hz and 10-Hz digits.  These digits are sent even if they
          are not used by the rig, so that the data format is the same
          for all rigs regardless of their frequency coverage and
            MHz.  This is broken up into two-digit groups:
          
                                 25  13  24  40
          
          It is then coded in BCD.  In other words, consider each
          digit group to be a hexadecimal number instead of decimal.
          ,
          
                 FE  FE  <RX>                 If you have more than one 
         rig on the network you may
         collision has occurred.  Each rig, when sending, monitors
          the interface.  If it does not receive exactly what it sent,
          then a collision occurred,          sending a packet, it will 
          wait until the network is idle,
          then send the jammer code.  A rig that receives this code
          will realize that a collision has occurred and ignore the
          previouontrol
          ports are bi-directional, your computer wi          

               Control Codes and Responses
          
          
               Most of the following codes are adesses an acknowledgement packet to the <TX>
          contained in the control packet.  The first two codes, 00
          and 01, can be sent to the "group call addres          nowledgement.           without computer intervention.  Rigs can be inhibited from
          sending and receiving group call packets by an internal

          jumper.  See Appendix 2 for more details.  These codes can
          also be sent with a specific, non-zero <RX>, in which case
          they will be recei          
          00   Set frequency.  See above foode desired.
          
                                Data      Mode
          
                                0          
          
          02   Report tuning range.  No data required.  The rig will
               report its frequency limits in the format
          
                FE FE <RX> <TX> 02 <upper limit> 2D <lower limit> FD
          
               (Hex 2D is the ASCII hyphen.) According to ICOM, some
               rig               format
          
                     
          04   Report modulation mode.  No data required.  The
  
               return an additional byte indicating the bandwidth.
 h> FD
          
               The bandwidth codes are:
          
                            Data      Bandwidth
          
                            01        Width 1 (widest)
                            02        Width 2 (narr          

          
          
          
          05   Set frequency.  The data format is given above.  If the
               data contains fewer digits than the rig uses, the
               digits sent will be changed and the rest will remain
                            within its tuning range, it responds with a packet con-
               taining the d               If it didn't like the data, it responds with the data
               "FA":
          
                                  
               These acknowledgement codes are used by all following
               commands.
          
         cy data by
               sending the "FA" acknowledgement and: 1) If the        quency data that is more than 30 MHzne byte is sent, it sets the
               mode per the above table.  If tw          07   Set VFO status.  If no data is sent, the rig changes
               from MEMORY mode to VFO mode.  If data 00 or 01 is
               sent, the          08   Set memory channel.  If no data is sent, the rig
               changes from VFO mode to MEMORY mode.  If BCD channel
               data is sent, the rig changes to that memory channel.
          
          09   Store displayed frequency and mode into displayed
               memory channel.  No dat     to a VFO.  No data required.
          
          
          
                 I will give a few examples of codes and responses for
          the 735.  The 735 is at address 04 and the computer nnel, and code 03 to read the frequency).
          Assume the 735 has the frequency 7.12750 MHz stored in
          memory #1.
          
          
                     
          Computer to 735:
                  FE FE 04 02 08 01 FD
          
          735 to computer:
                  FE FE 02 04 FB FD
          
          Computer to 735:
                  FE FE 04 02 03 FD
          
          735 to computer:
                  FE FE 02 04 03 00 75 12 07 FD
          
          Now let's change the frequency and mode to 14.02500 MHz USB
          (codes 05 and 06).
          
          Computer to 735:
                  FE FE 04 02 05 00 50 02 14 FD
          
          735 to computer:
                  FE FE 02 04 FB FD
             
          735 to computer:
      hanged result back into memory #1.  This
          channel is already displa          
                  FE FE 02 04 FB FD
          
              
               This is an easily built converter that will run           
       hour or two for about $10.  The converter uses two inexpen-
          sive,          needed are a box, connectors, a power 
          nicads off of your RS232 line.
          
               The pinouts are as follows:
          
          For e 1488 -
          
                  Pin       Connect to
          
                  1             ICOM remote jack center conductor
                  3         RS232 pin 3 (RD)
              For the 1489 -
                    3         ICOM remote jack center conductor
                  7         Ground
                  14        +V
          
          Ground pin           
    
          
          
          
                        Appendix 2 -- Jumper Selections
          
          
               There are jumpers in the ICOM rigs to set the device
          address, baud rate, and to enable the group call feature.
          You must look on the schematic to find them.  The jumper to
          enable the gr          transceive enabled.
          
               I have specific information           the 735 codes and the schematic.
          
          For the 735 -
          
               The jumpers use lines labeled DB0 through DB5 a          nector J22 on the PL board.  Lines DB0 through DB2 set the
          device address.  Line DB3 is the transceive enable.  The
                       DB4  DB5  Baud
          
                  0                    1    1    300
          
          The 735 is set at the factory to add    frequency or modulation mode manually.  You will receive a
          group call packet that contains as its 4th byte the address
          of the rig.