FLDIGI Users Manual  3.21
Rig Xml How to

This document describes the contents of the rig definition file "rig.xml".

A number of transceivers have rig definition files written and tested which you may use. These are found in the xmls directory on this site: xml archives. You will find subdirectories by manufacturer which contain files named by rig type, ie: TS-850.xml. If you create, test and verify the proper operation for a transceiver not yet posted please share that with others by sending it as an attachment to w1hkj.nosp@m.@w1h.nosp@m.kj.co.nosp@m.m and I will post it on the web site. You are encouraged to study the various rig definition files to learn more about how they are organized.

Comments are contained within the tag pair:

<!-
–>

and may appear anywhere in the rig definition file The entire rig definition must be contained within the tag pair

<RIGDEF>
</RIGDEF>

The text within the tag pair <RIG></RIG> specifies the transceiver to which this file applies, as in:

<RIG>Icom 746 PRO</RIG>

The text within the tag pair <PROGRAMMER></PROGRAMMER> is not used by the parser, but should as a minimum say who created and who tested the definition file, as in:

<PROGRAMMER>

Dave Freese W1HKJ Tested by: W1HKJ, Dave
</PROGRAMMER>

The text within the tag pair

<STATUS>
</STATUS>

is not used by the parser, but should as a minimum state whether the definition file has been "Verified", is "Alpha&", what the Version and Date of creation or update, as in:

<STATUS> Verified Version: 1.0 Date: 2007 Jan 5 </STATUS>

The <TITLE>
</TITLE>

tag pair contains the text which will be displayed on the window decoration bar, as in:

<TITLE>Rig Control - IC-746 PRO</TITLE>

The serial port parameters may be preset in the xml file and also set or changed on the rigcat configuration tab.
<!–
default settings for initial setup
–>

xml tag
parameter
<TIMEOUT>TT</TIMEOUT> TT in milliseconds
<RETRIES>NN</RETRIES> NN integer
<WRITE_DELAY>TT</WRITE_DELAY> TT in milliseconds
<POST_WRITE_DELAY>TT</POST_WRITE_DELAY> TT in milliseconds
<BAUDRATE>BAUD</BAUDRATE> BAUD = 1200, 2400, 4800, 9600, 19200, 38400 ...
<STOPBITS>B</STOPBITS> B = 1 or 2
<RTSCTS>BOOL</RTSCTS> BOOL = true, false; h/w handshake used for data flow control
<RTSPLUS>BOOL</RTSPLUS> BOOL = true, false; set RTS signal line to +12 V
<RTSPTT>BOOL</RTSPTT> BOOL = true, false; toggle RTS signal line for PTT
<DTRPLUS>BOOL</DTRPLUS> BOOL = true, false; set DTR signal line to + 12 V
<DTRPTT>BOOL</DTRPTT> BOOL = true, false; toggle DTR signal line for PTT
<ECHO>BOOL</ECHO> BOOL = true, false; xcvr/interface echoes all chars (typical of CI-V interface)
<CMDPTT>BOOL</CMDPTT> BOOL = true, false; use command string for PTT (not supported by all rigs)


The transceiver modes are specified within the <MODES></MODES> tag pair. Each entry or element associated with a mode has a symbol name (text) and a way to specify what the data transfer consists of. The data transfer might be a single byte, multiple bytes, or aa string

Example 1, for the Icom-746PRO

<MODES>
<ELEMENT><SYMBOL>LSB</SYMBOL><BYTE>00</BYTE></ELEMENT>
<ELEMENT><SYMBOL>USB</SYMBOL><BYTE>01</BYTE></ELEMENT>
<ELEMENT><SYMBOL>AM</SYMBOL><BYTE>02</BYTE></ELEMENT>
<ELEMENT><SYMBOL>CW</SYMBOL><BYTE>03</BYTE></ELEMENT>
<ELEMENT><SYMBOL>RTTY</SYMBOL><BYTE>04</BYTE></ELEMENT>
<ELEMENT><SYMBOL>FM</SYMBOL><BYTE>05</BYTE></ELEMENT>
<ELEMENT><SYMBOL>CW-R</SYMBOL><BYTE>07</BYTE></ELEMENT>
<ELEMENT><SYMBOL>RTTY-R</SYMBOL><BYTE>08</BYTE></ELEMENT>
</MODES>

Example 2, for the Kenwood 850

<MODES>
<ELEMENT><SYMBOL>LSB</SYMBOL><BYTE>31</BYTE></ELEMENT>
<ELEMENT><SYMBOL>USB</SYMBOL><BYTE>32</BYTE></ELEMENT>
<ELEMENT><SYMBOL>CW</SYMBOL><BYTE>33</BYTE></ELEMENT>
<ELEMENT><SYMBOL>FM</SYMBOL><BYTE>34</BYTE></ELEMENT>
<ELEMENT><SYMBOL>AM</SYMBOL><BYTE>35</BYTE></ELEMENT>
<ELEMENT><SYMBOL>FSK</SYMBOL><BYTE>36</BYTE></ELEMENT>
<ELEMENT><SYMBOL>CW-R</SYMBOL><BYTE>37</BYTE></ELEMENT>

<ELEMENT><SYMBOL>FSK-R</SYMBOL><BYTE>39</BYTE></ELEMENT>
</MODES>

Example 3, for the FT-100
<MODES>
<ELEMENT><SYMBOL>LSB</SYMBOL><BYTE>00</BYTE></ELEMENT>
<ELEMENT><SYMBOL>USB</SYMBOL><BYTE>01</BYTE></ELEMENT>
<ELEMENT><SYMBOL>CW</SYMBOL><BYTE>02</BYTE></ELEMENT>
<ELEMENT><SYMBOL>CW-R</SYMBOL><BYTE>03</BYTE></ELEMENT>
<ELEMENT><SYMBOL>AM</SYMBOL><BYTE>04</BYTE></ELEMENT>
<ELEMENT><SYMBOL>DIG</SYMBOL><BYTE>05</BYTE></ELEMENT>
<ELEMENT><SYMBOL>FM</SYMBOL><BYTE>06</BYTE></ELEMENT>
<ELEMENT><SYMBOL>W-FM</SYMBOL><BYTE>07</BYTE></ELEMENT>
</MODES>

The modes which are supported by lower sideband in the transceiver are specified in the <LSBMODES></LSBMODES> tar pair. The string data for the LSB modes must match those given in the modes id specifier For example in the Icom 746 Pro:

<LSBMODES>
<STRING>LSB</STRING>
<STRING>RTTY</STRING>
<STRING>CW-R</STRING>
</LSBMODES>

If the transceiver data stream uses identically the same format for the bandwidth data then it is specified in the <BANDWIDTHS></BANDWIDTHS> tag pair

Example for the Icom 746 Pro:

<BANDWIDTHS>
<ELEMENT><SYMBOL>50</SYMBOL><BYTE>00</BYTE></ELEMENT>
<ELEMENT><SYMBOL>100</SYMBOL><BYTE>01</BYTE></ELEMENT>
<ELEMENT><SYMBOL>150</SYMBOL><BYTE>02</BYTE></ELEMENT>
<ELEMENT><SYMBOL>200</SYMBOL><BYTE>03</BYTE></ELEMENT>
<ELEMENT><SYMBOL>250</SYMBOL><BYTE>04</BYTE></ELEMENT>
<ELEMENT><SYMBOL>300</SYMBOL><BYTE>05</BYTE></ELEMENT>
<ELEMENT><SYMBOL>350</SYMBOL><BYTE>06</BYTE></ELEMENT>
<ELEMENT><SYMBOL>400</SYMBOL><BYTE>07</BYTE></ELEMENT>
<ELEMENT><SYMBOL>450</SYMBOL><BYTE>08</BYTE></ELEMENT>
<ELEMENT><SYMBOL>500</SYMBOL><BYTE>09</BYTE></ELEMENT>
<ELEMENT><SYMBOL>600</SYMBOL><BYTE>10</BYTE></ELEMENT>
<ELEMENT><SYMBOL>700</SYMBOL><BYTE>11</BYTE></ELEMENT>
<ELEMENT><SYMBOL>800</SYMBOL><BYTE>12</BYTE></ELEMENT>
<ELEMENT><SYMBOL>900</SYMBOL><BYTE>13</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1000</SYMBOL><BYTE>14</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1100</SYMBOL><BYTE>15</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1200</SYMBOL><BYTE>16</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1300</SYMBOL><BYTE>17</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1400</SYMBOL><BYTE>18</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1500</SYMBOL><BYTE>19</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1600</SYMBOL><BYTE>20</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1700</SYMBOL><BYTE>21</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1800</SYMBOL><BYTE>22</BYTE></ELEMENT>
<ELEMENT><SYMBOL>1900</SYMBOL><BYTE>23</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2000</SYMBOL><BYTE>24</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2100</SYMBOL><BYTE>25</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2200</SYMBOL><BYTE>26</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2300</SYMBOL><BYTE>27</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2400</SYMBOL><BYTE>28</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2500</SYMBOL><BYTE>29</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2600</SYMBOL><BYTE>30</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2700</SYMBOL><BYTE>31</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2800</SYMBOL><BYTE>32</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2900</SYMBOL><BYTE>33</BYTE></ELEMENT>
<ELEMENT><SYMBOL>3000</SYMBOL><BYTE>34</BYTE></ELEMENT>
<ELEMENT><SYMBOL>3100</SYMBOL><BYTE>35</BYTE></ELEMENT>
<ELEMENT><SYMBOL>3200</SYMBOL><BYTE>36</BYTE></ELEMENT>
<ELEMENT><SYMBOL>3300</SYMBOL><BYTE>37</BYTE></ELEMENT>
<ELEMENT><SYMBOL>3400</SYMBOL><BYTE>38</BYTE></ELEMENT>
<ELEMENT><SYMBOL>3500</SYMBOL><BYTE>39</BYTE></ELEMENT>
<ELEMENT><SYMBOL>3600</SYMBOL><BYTE>40</BYTE></ELEMENT>
</BANDWIDTHS>

If the bandwidth data stream is unique for send and receive data streams then they are specified separately with the <BW-CMD></BW-CMD> tag pair for data sent to the transceiver, and the <BW-REPLY></BW-REPLY> tag pair for data returned to the computer.

Example: FT-100:

<BW-CMD>
<ELEMENT><SYMBOL>300</SYMBOL><BYTE>00</BYTE></ELEMENT>
<ELEMENT><SYMBOL>500</SYMBOL><BYTE>01</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2400</SYMBOL><BYTE>02</BYTE></ELEMENT>
<ELEMENT><SYMBOL>6000</SYMBOL><BYTE>03</BYTE></ELEMENT>
</BW-CMD>

<BW-REPLY>
<ELEMENT><SYMBOL>300</SYMBOL><BYTE>03</BYTE></ELEMENT>
<ELEMENT><SYMBOL>500</SYMBOL><BYTE>02</BYTE></ELEMENT>
<ELEMENT><SYMBOL>2400</SYMBOL><BYTE>01</BYTE></ELEMENT>
<ELEMENT><SYMBOL>6000</SYMBOL><BYTE>00</BYTE></ELEMENT>
</BW-REPLY>

Fldigi can parse and decode message returned from the transceiver that define 4 aspects of the transceiver operation:

OK data accepted by the transceiver
BAD data rejected by the transceiver
MODE current operating mode of the transceiver
BW current bandwidth setting of the transceiver
FREQ frequency of the active VFO (might be either A or B for example)


These are all contained within multiple <REPLY></REPLY> tag pairs. This is an example of a fixed format message with no variable fields. It is the OK message sent back by the Icom-746 PRO:

<REPLY>
<SYMBOL>OK</SYMBOL>
<SIZE>6</SIZE>
<BYTES>FE FE E0 66</BYTES>
<BYTE>FB</BYTE>
<BYTE>FD</BYTE>
</REPLY>

The <SYMBOL></SYMBOL> pair and the command definition are mandatory. The <SIZE></SIZE> field is mandatory and specifies the number of bytes contained in this reply. The above definition could also have been coded as:

<REPLY>
<SYMBOL>OK</SYMBOL>
<SIZE>6</SIZE>
<BYTES>FE FE E0 66 FB FD</BYTES>
</REPLY>

When the reply contains variable data it is specified in a contained tag pair <DATA></DATA>. This data field contains specifiers that describe the kind and size of the data. The <DTYPE></DTYPE> tag pair may be one of:

BINARY or
DECIMAL

This is an example for the reply to a mode query that is returned by the Icom-746 PRO:

<REPLY>
<SYMBOL>MODE</SYMBOL> specifies the response name
<SIZE>8</SIZE> 8 bytes of data returned
<BYTES>FE FE E0 66</BYTES> 4 bytes of preamble

<BYTE>04</BYTE> 1 additional byte for preample
<DATA>

<DTYPE>BINARY</DTYPE> binary data field of 1 byte
<SIZE>1</SIZE>
</DATA>

<FILL>1</FILL> a variable field (data) not used

<BYTE>FD</BYTE> 1 byte postamble
</REPLY>

Fldigi rigcat will check for both the preample and postamble to insure that a valid reply has been sent by the transceiver.

Return to Top of Page
Return to Main Page