home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 1329.ICOMCT.DOC < prev    next >
Text File  |  1991-03-27  |  15KB  |  518 lines

  1.            Computer Control of ICOM Amateur Gear
  2.  
  3.                     Carl Clawson, N7KBV
  4.  
  5.  
  6.  
  7.                     General Description
  8.  
  9.  
  10.      Several ICOM products feature a built-in computer
  11. interface connected to a 1/8" phone jack on the rear panel.
  12. However, ICOM gives no information about this interface in
  13. the instruction manuals that I've seen.  The information
  14. exists within ICOM, and my dealer managed to get it for me.
  15.  
  16.      This interface, called the "CI-V" by ICOM, is standard
  17. on the following models:  735, 761, 275, 375, 475, and
  18. R7000.  Earlier models used the CI-IV parallel interface,
  19. which can be connected to CI-V by ICOM's UX-14 converter.
  20. Models using the CI-IV are the 751, 271, 471, 1271, and R71.
  21. The information I got from ICOM was written with the 735 in
  22. mind, but a listing of a BASIC program to control the R7000
  23. was appended.  I believe it will help with the other models,
  24. too.  The control codes and data format should be the same
  25. for all of them.
  26.  
  27.      The computer interface allows you to do such things as:
  28.  
  29. -    Set and read the frequency and modulation mode
  30.  
  31. -    Set VFO A, VFO B, or memory mode
  32.  
  33. -    Select memory channel
  34.  
  35. -    Store displayed frequency into memory
  36.  
  37. -    Transfer displayed memory-mode frequency to a VFO
  38.  
  39.      Even without a computer, you can run a cable between
  40. the remote control jacks of two rigs, and whenever the fre-
  41. quency or modulation mode of either is changed, the other
  42. will track it if possible.  (If the rigs have incompatible
  43. frequency coverages, like the 735 and R7000, funny things
  44. can happen.)
  45.  
  46.      The interface is bi-directional, using TTL levels on a
  47. single line for sending and receiving serial ASCII data.
  48. You may need an appropriate hardware interface to convert,
  49. for example, RS232 to TTL.  (I understand that Commodore
  50. computers have TTL inputs and outputs so that no interface
  51. is needed with them.) I used the Motorola MC1488 and MC1489
  52. chips powered by two 9-volt batteries to interface to my
  53. RS232 line.  Appendix 1 lists the pinouts used for this
  54. interface.  If you'd rather buy something, ICOM sells the
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                            - 2 -
  64.  
  65.  
  66.  
  67. model CT-17 level converter for RS232.
  68.  
  69.      The interface uses a "carrier-sense, multiple-access
  70. with collision detection" local area network protocol, so
  71. that multiple rigs can be connected in parallel without dif-
  72. ficulty.  Thus, you can use the same RS232 line and level-
  73. converter interface to control many rigs.  Each rig must
  74. have a unique address, which is set by internal jumpers.
  75. Each model comes factory preset to its own address, which is
  76. 04 for the 735 and 08 for the R7000.  Appendix 2 has infor-
  77. mation on the jumper settings.
  78.  
  79.      I will use the words "receive" and "send" to refer to
  80. data transmission.  Thus a "receiver" isn't necessarily an
  81. R7000; it's any device receiving data from the CI-V bus.  I
  82. will use the word "rig" to mean an ICOM product using the
  83. CI-V interface.
  84.  
  85.  
  86.  
  87.                         Data Format
  88.  
  89.  
  90.      The rigs send and receive data in variable length pack-
  91. ets, which are formatted as follows:
  92.  
  93.         Byte #    Contents
  94.  
  95.         1         hex 'FE' (i.e. 11111110 binary, 254 decimal)
  96.         2         hex 'FE'
  97.         3         <RX>
  98.         4         <TX>
  99.         5         <Code>
  100.         6-n       <BCD data of variable length>
  101.         n+1       hex 'FD'
  102.  
  103. The two hexadecimal FE bytes signal the beginning of a
  104. packet, and the FD byte signals the end.  <Code> is the con-
  105. trol code sent by the computer to the rig, which determines
  106. the action that the rig will take.  In some cases, the
  107. receiving rig will include a control code in its response to
  108. the sender; see the section "Control Codes and Responses"
  109. below.  <TX> is the address of the device sending the data,
  110. and <RX> is the address to which the data is being sent.
  111. When a rig responds to a data packet, it addresses that
  112. response to the <TX> in the packet.  Thus, if your computer
  113. requests a rig to report its frequency, it will address that
  114. report to the computer and other rigs will ignore the data.
  115. (Of course, the computer can lie about its address and trick
  116. one rig into talking to another!) Your computer should use
  117. its own unique, non-zero address on the network.  I will
  118. assume in the examples that the computer is at address 02.
  119. There are two control codes that can cause any rig on the
  120. network to respond when sent with <RX>=0; I discuss these
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                            - 3 -
  130.  
  131.  
  132.  
  133. below.
  134.  
  135.      Bytes #6 through #n contain any data required by the
  136. control code, in BCD format with 2 decimal digits per byte.
  137. Frequency data is sent starting with the byte containing the
  138. 1-Hz and 10-Hz digits.  These digits are sent even if they
  139. are not used by the rig, so that the data format is the same
  140. for all rigs regardless of their frequency coverage and
  141. resolution.  For example, consider the frequency 25.13244
  142. MHz.  This is broken up into two-digit groups:
  143.  
  144.                        25  13  24  40
  145.  
  146. It is then coded in BCD.  In other words, consider each
  147. digit group to be a hexadecimal number instead of decimal.
  148. The decimal values of these BCD digit groups are 2x16+5=37,
  149. 1x16+3=19, 2x16+4=36, and 4x16+0=64.  Now send these groups,
  150. starting with the least significant.  The complete data
  151. packet will be, in hexadecimal,
  152.  
  153.        FE  FE  <RX>  <TX>  <Code>  40  24  13  25  FD
  154.  
  155.  
  156.      If you have more than one rig on the network you may
  157. occasionally receive a sequence of 5 bytes of hex 'FC'.
  158. This is the "jammer code" used by a rig to indicate that a
  159. collision has occurred.  Each rig, when sending, monitors
  160. the interface.  If it does not receive exactly what it sent,
  161. then a collision occurred, i.e., another rig was sending
  162. data at the same time.  If a rig detects a collision when
  163. sending a packet, it will wait until the network is idle,
  164. then send the jammer code.  A rig that receives this code
  165. will realize that a collision has occurred and ignore the
  166. previously received packet.  Because the ICOM remote control
  167. ports are bi-directional, your computer will receive every-
  168. thing it sends, so you can check for collisions from your
  169. computer, too.
  170.  
  171.  
  172.  
  173.                 Control Codes and Responses
  174.  
  175.  
  176.      Most of the following codes are addressed to a specific
  177. rig, which addresses an acknowledgement packet to the <TX>
  178. contained in the control packet.  The first two codes, 00
  179. and 01, can be sent to the "group call address" of 00, in
  180. which case any rig will receive them without sending an ack-
  181. nowledgement.  These two codes are sent in this way by any
  182. rig when its mode or frequency is changed by manual control,
  183. and are received by any rig on the network.  This allows a
  184. number of rigs to track each other in frequency and mode
  185. without computer intervention.  Rigs can be inhibited from
  186. sending and receiving group call packets by an internal
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                            - 4 -
  196.  
  197.  
  198.  
  199. jumper.  See Appendix 2 for more details.  These codes can
  200. also be sent with a specific, non-zero <RX>, in which case
  201. they will be received by the addressed rig even if the group
  202. call function is disabled.
  203.  
  204. 00   Set frequency.  See above for format of frequency data.
  205.      See code 05 below for more details.
  206.  
  207. 01   Set modulation mode.  One or two data bytes are
  208.      required to indicate the mode desired.
  209.  
  210.                       Data      Mode
  211.  
  212.                       00        LSB
  213.                       01        USB
  214.                       02        AM
  215.                       03        CW
  216.                       04        RTTY
  217.                       05        FM
  218.                       05 00     SSB (R7000)
  219.  
  220.  
  221. 02   Report tuning range.  No data required.  The rig will
  222.      report its frequency limits in the format
  223.  
  224.       FE FE <RX> <TX> 02 <upper limit> 2D <lower limit> FD
  225.  
  226.      (Hex 2D is the ASCII hyphen.) According to ICOM, some
  227.      rigs report the lower limit first.
  228.  
  229. 03   Report frequency.  No data required.  The addressed rig
  230.      returns its displayed frequency to the sender in the
  231.      format
  232.  
  233.                 FE FE <RX> <TX> 03 <Frequency> FD
  234.  
  235.  
  236. 04   Report modulation mode.  No data required.  The
  237.      addressed rig returns its mode to the sender using the
  238.      codes listed above.  Rigs with selectable bandwidth
  239.      return an additional byte indicating the bandwidth.
  240.      The format of the response is
  241.  
  242.             FE FE <RX> <TX> 04 <Mode> <Bandwidth> FD
  243.  
  244.      The bandwidth codes are:
  245.  
  246.                   Data      Bandwidth
  247.  
  248.                   01        Width 1 (widest)
  249.                   02        Width 2 (narrower)
  250.                   03        Width 3 (narrowest)
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                            - 5 -
  262.  
  263.  
  264.  
  265. 05   Set frequency.  The data format is given above.  If the
  266.      data contains fewer digits than the rig uses, the
  267.      digits sent will be changed and the rest will remain
  268.      the same.  If the rig receives valid frequency data
  269.      within its tuning range, it responds with a packet con-
  270.      taining the data "FB":
  271.  
  272.                       FE FE <RX> <TX> FB FD
  273.  
  274.      If it didn't like the data, it responds with the data
  275.      "FA":
  276.  
  277.                       FE FE <RX> <TX> FA FD
  278.  
  279.      These acknowledgement codes are used by all following
  280.      commands.
  281.  
  282.      The 735 responds to out-of-range frequency data by
  283.      sending the "FA" acknowledgement and: 1) If the fre-
  284.      quency it receives is less than 0.1 MHz, it sets its
  285.      frequency to 0.1 MHz, 2) If it received 4 bytes of fre-
  286.      quency data that is more than 30 MHz, it sets itself to
  287.      30 MHz, and 3) If it received more than 4 bytes of fre-
  288.      quency data, the data is ignored.
  289.  
  290. 06   Set modulation mode.  If one byte is sent, it sets the
  291.      mode per the above table.  If two bytes are sent, the
  292.      second is the IF bandwidth.
  293.  
  294. 07   Set VFO status.  If no data is sent, the rig changes
  295.      from MEMORY mode to VFO mode.  If data 00 or 01 is
  296.      sent, the rig sets VFO A or VFO B respectively.
  297.  
  298. 08   Set memory channel.  If no data is sent, the rig
  299.      changes from VFO mode to MEMORY mode.  If BCD channel
  300.      data is sent, the rig changes to that memory channel.
  301.  
  302. 09   Store displayed frequency and mode into displayed
  303.      memory channel.  No data required.
  304.  
  305. 0A   Write frequency and mode from displayed memory channel
  306.      to a VFO.  No data required.
  307.  
  308.  
  309.  
  310.                             Examples
  311.  
  312.  
  313.      I will give a few examples of codes and responses for
  314. the 735.  The 735 is at address 04 and the computer is at
  315. 02.  First, let's find out what's in memory channel 1 (code
  316. 08 to set the channel, and code 03 to read the frequency).
  317. Assume the 735 has the frequency 7.12750 MHz stored in
  318. memory #1.
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                            - 6 -
  328.  
  329.  
  330.  
  331. Computer to 735:
  332.  
  333.         FE FE 04 02 08 01 FD
  334.  
  335. 735 to computer:
  336.  
  337.         FE FE 02 04 FB FD
  338.  
  339. Computer to 735:
  340.  
  341.         FE FE 04 02 03 FD
  342.  
  343. 735 to computer:
  344.  
  345.         FE FE 02 04 03 00 75 12 07 FD
  346.  
  347. Now let's change the frequency and mode to 14.02500 MHz USB
  348. (codes 05 and 06).
  349.  
  350. Computer to 735:
  351.  
  352.         FE FE 04 02 05 00 50 02 14 FD
  353.  
  354. 735 to computer:
  355.  
  356.         FE FE 02 04 FB FD
  357.  
  358. Computer to 735:
  359.  
  360.         FE FE 04 02 06 01 FD
  361.  
  362. 735 to computer:
  363.  
  364.         FE FE 02 04 FB FD
  365.  
  366. Now store the changed result back into memory #1.  This
  367. channel is already displayed, so we need only the store com-
  368. mand, code 09.
  369.  
  370. Computer to 735:
  371.  
  372.         FE FE 04 02 09 FD
  373.  
  374. 735 to computer:
  375.  
  376.         FE FE 02 04 FB FD
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                            - 7 -
  394.  
  395.  
  396.  
  397.  
  398.             Appendix 1 -- RS232 to TTL converter
  399.  
  400.  
  401.      This is an easily built converter that will run your
  402. ICOM gear from a standard RS232 line.  It can be built in an
  403. hour or two for about $10.  The converter uses two inexpen-
  404. sive, widely-available chips -- the Motorola MC1488 line
  405. driver and MC1489 line receiver.  The only other components
  406. needed are a box, connectors, a power switch, and a couple
  407. .01 or .1 capacitors to bypass the power supply leads.  I
  408. used two 9V batteries for power.  Power for the 1488 can be
  409. +-9 to +-15 volts, and the 1489 requires +5 to +10 volts.
  410. With a suitable DC-DC converter chip and a 78L05 or 78L08,
  411. you could power the circuit off of your 13.8-V supply.  Or,
  412. if you're clever, figure out a way to trickle charge two 9V
  413. nicads off of your RS232 line.
  414.  
  415.      The pinouts are as follows:
  416.  
  417. For the 1488 -
  418.  
  419.         Pin       Connect to
  420.  
  421.         1         -V
  422.         2         ICOM remote jack center conductor
  423.         3         RS232 pin 3 (RD)
  424.         7         Ground
  425.         14        +V
  426.  
  427.  
  428. For the 1489 -
  429.  
  430.         Pin       Connect to
  431.  
  432.         1         RS232 pin 2 (TD)
  433.         3         ICOM remote jack center conductor
  434.         7         Ground
  435.         14        +V
  436.  
  437. Ground pin 7 of the RS232 line and the outer conductor of
  438. the ICOM remote jack, and you're on line.
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                            - 8 -
  460.  
  461.  
  462.  
  463.  
  464.               Appendix 2 -- Jumper Selections
  465.  
  466.  
  467.      There are jumpers in the ICOM rigs to set the device
  468. address, baud rate, and to enable the group call feature.
  469. You must look on the schematic to find them.  The jumper to
  470. enable the group call feature is called the "transceive" bit
  471. by ICOM, and may be labeled with "TRV" on the schematic.
  472. The others are labeled "DBn" on the 735 and R7000; look for
  473. something similar.  The rigs are factory-set to 1200 baud,
  474. transceive enabled.
  475.  
  476.      I have specific information from ICOM on the 735
  477. jumpers, and for the R7000 I have a likely guess based on
  478. the 735 codes and the schematic.
  479.  
  480. For the 735 -
  481.  
  482.      The jumpers use lines labeled DB0 through DB5 at con-
  483. nector J22 on the PL board.  Lines DB0 through DB2 set the
  484. device address.  Line DB3 is the transceive enable.  The
  485. baud rate is controlled by DB4 and DB5 according to
  486.  
  487.         DB4  DB5  Baud
  488.  
  489.         0    0    undefined
  490.         1    0    9600
  491.         0    1    1200
  492.         1    1    300
  493.  
  494. The 735 is set at the factory to address 04.
  495.  
  496. For the R7000 -
  497.  
  498.      The jumpers use lines DB0 through DB7 at connector J17
  499. on the logic board.  The address is set by DB0 through DB4,
  500. DB5 is the transceive enable, and the baud rate is set by
  501. DB6 and DB7.  The factory address is 08.
  502.  
  503.      If you have any other rig, you can determine its
  504. address by hooking it up to your computer and changing the
  505. frequency or modulation mode manually.  You will receive a
  506. group call packet that contains as its 4th byte the address
  507. of the rig.
  508.  
  509.  
  510. .oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.
  511. Thomas Brown, KA2UGQ       BITNET: twb0@lehigh.bitnet
  512. Lehigh University Box 855  ARPA: twb0%lehigh@ibm1.cc.lehigh.edu
  513. Bethlehem, PA  18015       UUCP: ..!att!twb0@lehigh.bitnet
  514. (215) 758-1200             AX.25: ka2ugq@ka2ugq.nj.usa.na (145.01 MHz)
  515.  
  516. Stress: The confusion caused when one's mind overrides the desire to
  517.         choke the life out of someone who desperately deserves it.
  518.