FT-817 []

Outils pour utilisateurs

Outils du site


FT-817

FT-817

The KA7OEI FT-817 pages
CAT (tm) Interface Programming using the FT-817

 

Notes:

- For a program that utilizes the CAT commands (both documented and undocumented) to a very large extent, look at HB9DRV's FT-817 Commander program.
 
- Also note that I do NOT own an FT-817ND and have not had the opportunity to examine one carefully to note the subtle differences between it and the original '817, especially when it comes to CAT programming and memory locations.

- The EEPROM memory map has been moved to a separate page - refer to the link near the bottom of the page.

Important:  This document details aspects of CAT interface commands that are specific to the FT-817.  Furthermore, some of these parameters (specifically memory locations) may be pertinent only to the version of the software in my radio and may not apply to other software versions!  Finally, careless use of these commands may result in an unusable radio, requiring complete recalibration!  You have been warned!

Comment:  The Japanese domestic version of the FT-817 apparently has a different CPU which is "hardcoded" to limit its frequency coverage.  It would be interesting to know if the EEPROM addresses below are the same for this (and other) versions.

Note:   For reference, the first four characters of the serial number on my '817 are:  1D21


Computer control of the FT-817:

Most modern HF transceivers are capable of remote control via the serial interface (called the CAT interface by Yaesu) and the FT-817 is no exception.  Ideally, it should be possible to glean enough information to do everything remotely that it is possible to do from the radio's front panel.  Unfortunately, this isn't always the case:  Almost inevitably, some minor feature or piece of information is omitted and a "remote simulation" just is not possible.
 

"Why is this page here?"

The simple answer:  Because the '817 has a serial port. 

It occurred to me that there must be a few undocumented commands in the interface protocol to allow Yaesu to perform a semi-automated calibration of the radio, so I began to poke around in the interface.  After a few minutes, I was able to discern the presence of several previously undocumented commands.  Soon after this (and after throwing together some "sniffer" software) I was accumulating a large pile of notes as to which address did what. 

The real reason why I did this was to be able to interface the '817 to a computer to do some field strength measurements (documented here) - and I needed the '817 to do more than it could "officially" do. 

Since I was already documenting this information, I decided to make this information available to others who might want to use it. 

Such is the case of the FT-817:  While it is possible to perform most functions (such as setting frequency and mode) and display a few of the displayed parameters (such as the S-meter,) while the status of a few other items (such as attenuator, AGC, preamplifier, and transmitter power settings, to name a few) does not seem to be available via the interface.

Not with documented commands, anyway...

As it turns out, there are a number of very powerful undocumented commands specific to the FT-817 that allow access to most of this sort of data - both to read and change this data - but more on this later. These commands are no doubt what allows Yaesu to have an automated test fixture for most calibration points in the radio.

The FT-817's command structure consists of a 5 byte command sent at the baud rate specified in menu item 14.  The format is 8 data bits, no parity, 1 start bit, and 2 stop bits with the command sent to the FT-817 being formatted as follows:

[Data 1][Data 2][Data 3][Data 4][Command]
Note:  It is specified in the manual that these 5 bytes are to be sent in quick succession - within 200 milliseconds of each other.  Experimentation reveals, however, that this would be too slow - it is more likely that all 5 bytes must be sent within a 200 millisecond period.

Not all commands "look" at all 4 data bytes, but in all cases, all 4 bytes must be sent.  On those commands where not all 4 data bytes are required, those unused bytes may contain anything.

Comment:

  • The initial version of the FT-817 Operating Manual has the labeling of the format of the TX and RX status swapped on page 73.

The command set is as follows in (the commands are in numerical order.)  The bytes designated with X may contain any data:
 

Command
Description
Data
Byte
1
Data
Byte
2
Data
Byte
3
Data
Byte
4
Command
(in HEX)
Remarks
Lock On
X
X
X
X
00
This command is equivalent to turning the dial/panel lock on.  This precise effect of this setting depends on the state of submenu item #32 (stored at memory location 5E HEX - see below.) 

This command returns 00 if it was unlocked, and F0 if already locked.

Set Frequency
100/10 MHz
1 MHz/100 kHz
10/1 kHz
100/10 Hz
01
This commands sets the current frequency (see below)
Split On
X
X
X
X
02
This command enables split operation.  Use the Read Transmitter Status command (below) to determine current split status. 

This command returns 00 if not already on, and F0 (HEX) if already on.

Read Frequency 
and mode
X
X
X
X
03
This command returns five bytes (see below)
Clarifier On
X
X
X
X
05
This command turns the clarifier (a.k.a. RIT) on. 

This command returns 00 if not already on, and F0 (HEX) if already on.

Set Operating 
Mode
Mode 
Byte
X
X
X
07
The mode byte is described below
Set PTT ON
X
X
X
X
08
This "keys" the FT-817.  In CW, this sets the radio to transmit mode, but does key the transmitter. 

Note that keying and unkeying the radio's PTT line will cancel the transmit mode (i.e. put it back into receive) and effectively override this command

This command returns 00 if the '817 was unkeyed, and F0 if already keyed.

Set Repeater 
Offset Direction
Offset
X
X
X
09
The byte "Offset" has the following function: 
09 = - (minus) shift    49 = + (positive) shift    89 = simplex
Set DCS/CTCSS 
mode
Mode
X
X
X
0A
The byte "Mode" has the following function: 
0A = DCS Enable    2A = CTCSS Enable    4A = DCS/CTCSS Encoder  enable    8A = DCS/CTCSS Encoder Disable
Set CTCSS 
Tone Frequency
100/10 Hz
1/0.1 Hz
X
X
0B
This command sets the CTCSS frequency (see below) *
Set DCS Code
DCS MSB
DCS LSB
X
X
0C
This command sets the DCS code.  This is a 16 bit word containing the DCS code using two bytes (see below) *
Turn on FT-817
X
X
X
X
0F
This can be used to turn the FT-817 on - only if the corresponding off command was used and if power is being supplied via the rear connector.  See the notes concerning the off  command below.
Read TX keyed state (Undocumented)
X
X
X
X
10
This command returns 00 if the FT-817 is unkeyed, and nonzero (F0 HEX) if it is keyed.
Lock Off
X
X
X
X
80
This command is equivalent to turning the dial/panel lock off. 

This command returns 00 if the '817 was already locked, and F0 (HEX) if already unlocked.

Toggle VFO
X
X
X
X
81
This command toggles between VFO-A and VFO-B
Split Off
X
X
X
X
82
This command disables split operation.  Use the Read Transmitter Status command (below) to determine current split status. 

This command returns 00 if previously on, and F0 (HEX) if already off.

Clarifier Off
X
X
X
X
85
This command turns the clarifier (a.k.a. RIT) off. 

This command returns 00 if previously on, and F0 (HEX) if already off.

Set PTT Off
X
X
X
X
88
This command puts the FT-817 into receive mode. 

This command returns 00 if the '817 was keyed, and F0 if already unkeyed.

Turn off FT-817
X
X
X
X
8F
This command can be used to turn the FT-817 off, but ONLY when the FT-817 is powered from the rear connection and the "on" command (above) was used.  Note that approx. 10 mA is consumed when the radio is turned "off" using this command - See notes below.
Radio Configuration (Undocumented)
X
X
X
X
A7
This command causes a string of several bytes indicating the radio's configuration to be dumped.  (See below)
Unknown Status?  (Undocumented)
?
?
?
?
BA
This command causes one byte (usually 00?) to be returned.  Its function is unknown (see below)
Read FT-817 EEPROM Data  (Undocumented)
Address 
MSB
Address 
LSB
X
X
BB
This command causes two bytes of EEPROM data to be returned, beginning with the address in data bytes 1 and 2.  (Approximately 6.25k of EEPROM data may be accessed - See below)
Write FT-817 EEPROM Data  (Undocumented)
Address 
MSB
Address 
LSB
Data for Address
Data for Address + 1
BC
This command writes two bytes to the EEPROM at the address in data bytes 1 and 2.  (USE WITH CARE - See below)
Read TX metering  (Undocumented)
X
X
X
X
BD
This command returns one byte (00) when in receive.  When in transmit, this command returns two bytes (in BCD format) indicating Forward power, VSWR, ALC, and Modulation.  (See below)
Reset FT-817 to factory defaults and blow away all "soft" calibration settings!  Use with extreme care! (Undocumented)
X
X
X
X
BE
This command completely resets all configuration settings and factory calibration parameters to their factory (pre-alignment) values as well as erasing all channel memories.

Be very careful when using this command!  (See below)
Read Receiver Status
X
X
X
X
E7
This command returns one byte containing receiver status (see below)
Set Clarifier Frequency
Clarifier Direction
X
10/1 kHz
100/10 Hz
F5
This command sets the clarifier (a.k.a. RIT) direction and offset amount (see below)
Read Transmitter Status
X
X
X
X
F7
This command returns one byte containing transmitter status (see below)
Set Repeater Offset Amount
10/1 MHz
100/10 kHz
00
00
F9
This command sets the magnitude of the repeater offset.  It may range from 0 to 99.99 MHz (see below)

Note:  An asterisk (*) in the Notes column indicates that further study of that particular command is warranted, as its specific format may be unclear and/or it may do more than is immediately apparent.
Notes on the above commands:

Warning:
It is imperative that you record the value of all 76 "factory calibration settings" in the "Soft Calibration" menu before you start sending commands to the FT-817!  Because some of the commands below can overwrite or erase these calibration settings, saving this data beforehand will allow you to restore your FT-817 back to proper working order without having to either send it off to be re-aligned or your needing to follow the calibration procedure outlined in the service manual.

You have been warned!

  • Command 01 - Set frequency:  The current frequency is set using 4 BCD bytes.  To set a frequency such as 435.12345 MHz, data bytes 1-4 would be [43][51][23][45] followed by the the set frequency command [01]
  • Command 03 - Read frequency and mode:  This command returns 5 bytes with the first 4 bytes containing the current frequency in the same format as the Set frequency command (above) while the last byte contains the current mode as follows:
    • 00 - LSB, 01 - USB, 02 - CW, 03 - CWR, 04 - AM, 06 - WFM, 08 - FM, 0A - DIG, 0C - PKT
  • Command 07 - Set operation mode:
    • 00 - LSB, 01 - USB, 02 - CW, 03 - CWR, 04 - AM, 08 - FM, 0A - DIG, 0C - PKT.
    • Note:  Setting other than one of the listed modes can "crash" the FT-817, necessitating removal of power.  Note that the WFM mode (08) cannot be set using this command, rather that the mode is implicit when selecting the frequency in the range correlating with the FM broadcast band (i.e. 76-108 MHz.)
  • Command 0B - Set CTCSS Tone Frequency:  Bytes 1 and 2 contain the tone frequency in BCD format.  For a frequency of 192.8, the two bytes would be [19][28].  Note:  This format needs to be verified.
  • Command 0C - Set DCS Code:  Bytes 1 and 2 contain the DCS code in BCD format.  For a DCS code of 546, the two bytes would be [05][46]. Note:  This format needs to be verified.
  • Command 8F - Turn Off FT-817:  Note that when this command is used, the CPU remains active in order to be able to detect the "On" command (0F) and a small amount of current is continuously drawn it should be used with caution when operating the FT-817 from via the rear power connector as noted several times below:
    • That the FT-817 will respond to some commands after the OFF command is executed and the '817 is powered from the rear power connector.
    • Repeatedly sending the OFF command will cause the FT-817 to send a string of unknown data - only if the '817 is powered from the rear power connector.
    • When this command is executed using internal batteries the '817 will shut completely down and will not respond to an ON command.  If, after an OFF command was sent with the '817 operating on internal batteries, the configuration is changed such that power is supplied via the rear connector, the '817 will begin to consume 10 milliamps when off (having been shut off with the OFF command) and it will respond to the ON command.
    • Note that even if the OFF command was used, the '817 will not consume 10 milliamps when off if running on internal batteries only.  (Remember, again, that the ON command won't work when on internal batteries.)
    • When this command is executed using with power supplied at the rear power connector the current consumption will be approximately 10 milliamps, depending on battery voltage.
  • Command A7 - Radio Configuration:  This command causes a 9 bytes to be sent by the FT-817.  The purpose of some of these bytes is unknown, but several of them appear to indicate the configuration of J4001-J4009.  The purposes of this data (starting with the first byte) as far as known, is as follows:
    • Byte 1 - 0xA7 - This appears to be an echo of the command itself
    • Byte 2 - 0x02 - Unknown
    • Byte 3 - 0x00 - Unknown
    • Byte 4 - 0x04 - Unknown
    • Byte 5 - 0x67 - Unknown
    • Byte 6 - Byte indicating actual "solder ball" configuration
    • Byte 7 - Another byte indicating actual "solder ball" configuration
    • Byte 8 - Contents of EEPROM address 4
    • Byte 9 - Contents of EEPROM address 5
    •  The bytes dumped (in HEX) by my '817 (with "blobs" on J4005-J4009) are as follows: A7 02 00 04 67 D8 BF D8 BF.
  • Command BA - Unknown Status?:  This command causes one byte to be returned.  Preliminary investigations have shown that this only returns a 00.  Further investigation should be carried out, possibly with different data in bytes 1-4.
  • Command BB - Read EEPROM Data:  The FT-817 uses an 64 kbit (8 Kbyte) EEPROM to store internal configuration and memories and most bytes in this EEPROM may be read with this command, 2 bytes at a time.  The address to be read is a 16 bit address with the upper 8 bits in the first byte and the lower 8 bits in the second byte.  The first of the two bytes to be returned contains the data at the address in bytes 1 and 2 while the second of the two bytes returns the data at the next address up from that specified.  Addresses from 0 to 1925 (HEX) (just over 6.25k bytes) are valid and attempts to retrieve addresses out of this range appear to return one byte - a zero.  Currently known EEPROM data and addresses are detailed below.  (Note:  I received information from someone who actually read the EEPROM with an outboard programmer, and he reports that the EEPROM contained nothing in the addresses above 1925 HEX.)
  • Command BC - Write EEPROM Data:  The first two bytes specify the EEPROM address to be written (in the same format as the Read EEPROM Data command above) while the third byte contains the data to be written at that address, and the forth byte contains the data to be written at the next address up from that specified.  Because this command writes two bytes to EEPROM, the user must know what should be written to both addresses.  Note that careless use of this command can cause the FT-817's CPU to crash and/or cause a complete wipe of all EEPROM data including configuration, software calibration/alignment, and memories - the effect being similar to that of the "Reset to Factory Defaults" command (below!)  If you insist on using this command without first recording the 76 "soft calibration" settings and noting what is in your radio's memories, you are an idiot!   (Am I clear on this point?)  A reset of this type can occur if you carelessly write to addresses 0-3 of the EEPROM.
  • Command BD - Read TX Metering:  This command returns one byte (always 00) when the FT-817 is in receive mode (and should thus be ignored) but it returns two bytes (each containing two BCD digits) when it is transmitting.  The first byte contains the current status of the PWR and VSWR meters (upper and lower 4 bits respectively) while the second byte contains the current status of the ALC and MOD meters (upper and lower 4 bits respectively.)
  • Command BE - Reset to Factory Defaults:  Note that this command completely resets all configuration settings and factory calibration parameters to their factory (pre-alignment) values as well as erasing all channel memories.  This may even require that you send the radio back to Yaesu if you didn't note all calibration settings!  If you insist on using this command, it is strongly recommended that you record each of the 76 factory calibration settings in the alignment menu.  You have been warned!!!  If you insist on using this command without first recording the 76 "soft calibration" values as well as recording what is in your radio's memories, you get what you deserve (i.e. a poorly-calibrated radio with empty memories...)
  • Command E7 - Read Receiver Status:  This command returns one byte.  Its contents are valid only when the '817 is in receive mode and it should be ignored when transmitting.
    • The lower 4 bits (0-3) of this byte indicate the current S-meter reading.  00 refers to an S-Zero reading, 04 = S4, 09 = S9, 0A = "10 over," 0B = "20 over" and so on up to 0F.
    • Bit 4  contains no useful information.
    • Bit 5 is 0 in non-FM modes, and it is 0 if the discriminator is centered (within 3.5 kHz for standard FM) when in the FM, FMN, or PKT modes, and 1 if the receiver is off-frequency.
    • Bit 6 is 0 if the CTCSS or DCS is turned off (or in a mode where it is not available.)  It is also 0 if there is a signal being receive and the correct CTCSS tone or DCS code is being decoded.  It is 1 if there is a signal and the CTCSS/DCS decoding is enable, but the wrong CTCSS tone, DCS code, or no CTCSS/DCS is present.
    • Bit 7 is 0 if there is a signal present, or 1 if the receiver is squelched.
  • Command F5 - Set Clarifier Frequency:  This command sets the clarifier (a.k.a. RIT) parameters (but it does not turn it on or off.)  The data to be sent is as follows:
    • Byte 1:  00 = Positive (+) offset  Any other value sets a negative (-) offset.
    • Byte 2:  Note used
    • Bytes 3 and 4:  These are BCD bytes containing the 10 and 1 kHz digits (in byte 3) and 100 and 10 Hz digits (in byte 4.)  For setting a clarifier offset frequency of 9.87 Khz (negative) these bytes would be [01][00][09][87], with the last byte being [F5] of course.
  • Command F7 - Read Transmitter Status:  This command returns one byte containing the current transmitter status.  This data is invalid when the radio is in receive mode.  This data is as follows:
    • The lower 4 bits (0-3) of this byte contain the current "Power Output" reading, regardless of the display meter setting.
    • Bit 4 contains no known useful information.
    • * Bit 5 is 0 if the SPLIT mode is on, 1 if the SPLIT mode is off.  This appears to reflect the current status of the split mode only when in transmit.
    • Bit 6 is 0 if the SWR is acceptably low, and 1 if it is too high. Note:  Investigation is warranted to determine how this SWR status correlates with the reading obtained using the Read TX Metering command (above.)
    • * Bit 7 indicates the current PTT status:  0 = Unkeyed, 1 = Keyed
    • * NOTE:  It is reported that bits 5 and 7 in the above description should be swapped:  I have yet to verify this for myself, but given the source I'm inclined to believe that they should be.
"Won't I wear out my EEPROM?"

The '817 uses an EEPROM to store nonvolatile data. This means that every time you change a setting or a band, updated information is written to the EEPROM. 

As it turns out, EEPROMs have a limited number of "write" cycles before they literally "wear out."  Typically, the lifetime is 1 million writes.  Under "good" conditions, however (i.e. normal room temperature, normal voltage conditions) typical EEPROMs will withstand 10 million or more writes before they start to fail... According to the manufacturer, at least... 

What does this mean, then? 

For 1 million writes to occur, you would have to do the same thing to cause a write to the same address, once per second for 11 days:  You are likely to wear out the button before you wear out the EEPROM.  Since the lifetime of the EEPROM in the typical '817 is likely to be closer to 10 million writes, the actual figure is likely to be more like 4 months of constant rewriting. 

A computer, however, won't get tired as easily.  If your program does 10 writes per second, you may want to reconsider how it operates if you are concerned about the EEPROM's lifetime:  Do the math!

Additional notes:

  • No checksum is used on any of the data, so it is impossible to be absolutely certain that the data read back (or transmitted to the FT-817) is absolutely correct.
    • For certain potentially "dangerous" commands (such as EEPROM Write) remember that two bytes must be written:  The byte at the address that you wish to change, and the byte at that address plus one.
    • Additionally, when modifying single bits at an specific address, one must know what the data was prior to modification. This requires that both bytes be read prior to writing them.
    • It is strongly recommended that before writing any EEPROM data, you read the two potentially affected bytes several times to make absolutely certain that they are correct.  Keep in mind that it is possible to completely blow away the radio's memories and configuration (including "software calibration" parameters) with the EEPROM write command!  Once you write the new data, it is also recommended that you re-read it to make absolutely certain that it was received correctly by the FT-817.
  • When the radio is "busy" (i.e. changing modes, bands, writing memories, someone is pushing buttons, etc.) it can occasionally "miss" a command or corrupt the transmitted data.  When querying the radio one should be aware of this and be prepared to re-read the data.  When sending a command that involves the radio changing its configuration, it is a good idea to wait a couple of hundred milliseconds before sending another command.  This is particularly true of commands that involve several bytes of data - such as reading the receive frequency and mode.  It is always a good idea to read the status of the radio back (after having modified it) to make certain that the changes "stick."
  • If your computer program is keeping the serial port very "busy" (i.e. requesting a lot of data) the radio may respond to commands sluggishly, or it may even miss certain button presses entirely.  To be fair, you must really keep the radio busy to cause this.
  • I have noticed that the FT-817 will occasionally stop responding to serial port commands when the LOCK function has been enabled from the front panel.  Power-cycling the radio will restore communications.  I have not determined if this will also happen if the LOCK was software commanded, or if pressing the LOCK button (to unlock the radio) will restore communications.
  • Some commands (such as frequency entry) may take a few 10's of milliseconds to take effect, so be prepared to simply wait for the radio to finish.

The EEPROM Memory Map:

All of the nonvolatile parameters in the FT-817 are stored in the EEPROM (which is why there is no lithium battery in it).  The content of all of the memory locations is yet to be determined (and probably can never be) but a few that are known for certain are listed below.  For a list of EEPROM memory locations listed in address order, go to the Memory Map page.

The "factory calibration settings" (i.e. those obtained by pressing the A, B, and C keys while powering up the radio - and these parameters are variously referred to as "soft calibration settings" and the like) are stored in EEPROM.  Addresses 7 through 82 correlate with menu items 1 through 76 (i.e. add 6 to the menu item to calculate the EEPROM address.)  Most of these parameters range from 0-255 - a parameter which correlates directly with the value stored in memory.  A few known exceptions are as follows:

  • Menu item 17 (VCC calibration) contains a representation of the voltage present at the moment that item was selected in the "Soft Calibration" menu.  The actual calibration value is stored in memory location 53 (HEX.)
  • Menu items 75 and 76 (LSB and USB CP)  This is represented by a signed digit, with the MSB (highest bit) representing a negative number when it is set.  In this way a 1 = 1, and FF (hex) = -1.
Writing new values immediately affects the specified parameter.  That is, they take effect instantly!  In the case of VFOs and memories, however, you won't see any effect until you select that VFO/Band/Memory combination that you have written.

Very important:

  • Again, it is imperative that you record the value of each of the 76 "factory calibration settings" prior to messing with them!  Failure to do so may result in a poorly-functioning radio that needs to be sent back for recalibration!

Additionally, many of the selectable menu items are stored in EEPROM as well.  When these values are written/updated, the change is immediate.  These are stored as follows.  Note -  These locations are believed to be correct, but since there are so many, I may have made a mistake.  Please let me know of errors that you may find.

Memory locations for Menu items
(Not it any particular order)

Function
Byte
Address
(HEX)
Bit(s)
used
(7-0)
Remarks (bit status)
VFO-A/B 55 0 0 = VFO-A, 1 = VFO-B
IPO On/Off Base address + 2

Refer to VFO Memory record format (farther down the page)

5 0 = IPO off, 1 = IPO on 
Note:  The "Phantom" band is that "extra" HF band that exists to allow tuning outside of amateur bands. 
Note:  IPO, ATT, etc aren't actually available on FM BCB, Air, 2 M, and UHF bands.)
ATT On/Off (Same addresses as IPO, except that bit 4 is used) 4 0 = ATT off, 1 = ATT on  ("Attenuator")
Clar On/Off (Same addresses as IPO, except that bit 6 is used) 6 0 = Clar off, 1 = Clar on  ("Clarifier" a.k.a. BFO)
NB On/Off 57 5 0 = NB off, 1 = NB on  (Noise Blanker)
AGC Mode 57 1, 0 00 = Auto,  01 = Fast, 10 = Slow, 11 = Off
TX Power 79 (All bands) 1, 0 00 = High, 01 = L3, 10 = L2, 11 = L1
DW On/Off 79 3 0 = Off, 1 = On  ("Dual Watch)
PRI On/Off 79 4 0 = PRI off, 1 = PRI on  (Priority scan)
SCN (Scan) Mode 79 6,5 00 = No scan, 10 = Scan up, 11 = Scan down
ART On/Off 79 7 0 = Off, 1 = On  (Auto-Range Transponder)
Pwr Meter 58 1, 0 00 = PWR, 01 = ALC, 10 = SWR, 11 = MOD
BK On/Off 58 5 0 = BK off, 1 = BK on (Semi Break-In for CW)
KYR On/Off 58 4 0 = KYR off, 1 = KYR on (Keyer)
VLT On/Off 58 6 0 = VLT off, 1 = VLT on (Voltmeter display)
DSP On/Off 57 2 0 = DSP off, 1 = DSP on (Display format)
CHG On/Off 7B 4 0 = Off, 1 = On (Charge enable)
VOX On/Off 58 7 0 = VOX off, 1 = VOX on
NAR On/Off 
(CW, CWN, DIG Mode)
Base address + 1

Refer to VFO Memory record format (farther down the page)


4
0 = Off, 1 = On
Note:  The "Phantom" band is that "extra" HF band that exists to allow tuning outside of amateur bands. 
Note that bits are allocated for this function even on bands where they are not used.
NAR On/Off 
(FM, FMN Mode)
Same addresses as NAR On/Off - CW Mode (above) 3 0 = Off, 1 = On
SPL On/Off 7A 7 0 = Off, 1 = On ("Split" mode)
RPT Offset Same addresses as NAR On/Off - CW Mode (above) 7-6 0 = Simplex, 01 = Minus, 10 = Plus, 11 = Nonstandard Split

Submenu Memory Locations:


Menu #
(Description)
Byte
Address
(HEX)
Bit(s)
used
(7-0)
Remarks (bit status)
1 - 144 ARS 5F 6 0 = ARS off, 1 = on  (Auto repeater shift)
2 - 430 ARS 5F 5 0 = ARS off, 1 = on (Auto repeater shift)
3 - 9600 Mic (0-100) 6C 6-0 Contains 0-100 (decimal) as displayed
4 - Disable AM/FM Dial 63 7 0 = enable, 1 = disable
5 - AM Mic (0-100) 68 6-0 Contains 0-100 (decimal) as displayed
6 - AM Step Base address + 3

Refer to VFO Memory record format (farther down the page)

5-3 000 = 2.5 kHz, 001 = 5 kHz, 010 = 9 kHz, 011 = 10 kHz, 100 = 12.5 kHz, 101 = 25 kHz
Note:  The "Phantom" band is that "extra" HF band that exists to allow tuning outside of amateur bands. 
Note that bits are allocated for this function even on bands where they are not used.
7 - Front/Rear Antenna 7A 0 - HF 
1 - 6m 
2 - FM 
3 - Air 
4 - 2m 
5 - UHF
0 = Front, 1 = Rear antenna 

(Note:  Different "bands" are stored in different bit locations as noted.)

8 - APO Time 65 2-0 000 = Off, 001 = 1 Hour, 010 = 2 Hours, etc.  (i.e. a 3 bit number from 0 to 6)  (Auto power-off)
9 - ARTS Beep Off/Range/All 5D 7-6 00 = Off, 01 = Range , 10  = All
10 - Backlight Off/On/Auto 5B 7-6 00 = Off, 01 = On, 10 = Auto
11 - Batt-Chg 6/8/10 Hours 62 7-6 00 = 6 Hours, 01 = 8 Hours, 10 = 10 Hours
12 - Beep Freq 440/880 Hz 5C 7 0 = 440 Hz, 1 = 880 Hz
13 - Beep Volume (0-100)  5C 6-0 Contains 0-100 as displayed
14 - CAT Rate (4800, 9600, 38400) 64  7-6 00 = 4800 Baud, 01 = 9600 Baud, 10 = 38400 Baud. 
Note:  If you can read this address, you probably already know what the baud rate is...
15 - Color Color1/Color2 5B 4 0 = Color1 (Blue)  1 = Color2 (Amber)
16 - Contrast (1-12) 5B 3-0 0010 = 1 through 1101 = 12
17 - CW Delay (10-2500 ms) 60 (all) From 1 to 250 (decimal) with each step representing 10 ms
18 - CW ID Off/On 5D 4 0 = Off, 1 = On
19 - CW Paddle Normal/Reverse 58 2 0 = Normal, 1 = Reverse
20 - CW Pitch (300-1000 Hz) 5E 3-0 From 0 to E (hex) with 0 = 300 Hz and each step representing 50 Hz
21 - CW Speed (4-60 WPM) 62 5-0 From 0 to 38 (hex) with 0 = 4 WPM and 38 = 60 WPM (each step = 1 WPM)
22 - CW Weight (1:2.5 - 1:4.5) 5F 4-0 From 0 to 14 (hex) with 0 = 1:2.5, incrementing in 0.1 weight steps
23 - DCS Code Base address + 9

Refer to VFO Memory record format (farther down the page)

5-0 From 0 to 67 (hex) with 0 = DCS code 023 and 67 (hex) = DCS code 754 
Note:  The "Phantom" band is that "extra" HF band that exists to allow tuning outside of amateur bands. 
Note that bits are allocated for this function even on bands where they are not used.
24 - Dig Disp (-3000 to +3000 Hz) 6F-70 (all) 6F is MSB and 70 is LSB with sign in bit 7 of the MSB, in 10 Hz steps.  I.e. 
0000 = 0 Hz, 0001 = +10 Hz, FF01 = -10 Hz, 012C = +3000 Hz, FED4 = -3000 Hz
25 - Dig Mic (0-100) 6A 6-0 Contains 0-100 (decimal) as displayed
26 - Dig Mode 65 7-5 000 = RTTY, 001 = PSK31-L, 010 = PSK31-U, 011 = USER-L, 100 = USER-U
27 - Dig Shift 6D-6E (all) 6D is MSB, 6E is LSB.  Same format as #24
28 - Emergency 64 5 0 = Off, 1 = On
29 - FM Mic (0-100) 69 6-0 Contains 0-100 (decimal) as displayed
30 - FM Step Base address + 3

Refer to VFO Memory record format (farther down the page)

2-0 000 = 5 kHz, 001 = 6.25 kHz, 010 = 10 kHz, 011 = 12.5 kHz, 100 = 15 kHz, 101 = 20 kHz, 110 = 25 kHz, 111 = 50 kHz
Note:  The "Phantom" band is that "extra" HF band that exists to allow tuning outside of amateur bands.
31 - ID This value does not appear to be stored in "reachable" EEPROM.    
32 - Lock Mode 5E 5-4 00 = Dial, 01 = Freq, 10 = Panel
33 - Main Step 5D 5 0 = Fine, 1 = Coarse
34 - Mem Group 65 4 0 = Off, 1 = On
35 - Mem Tag To Be Determined    
36 - Mic Key 68 7 0 = Off, 1 = On
37 - Mic Scan 69 7 0 = Off, 1 = On
38 - Op Filter 5E 7-6 00 = Off, 01 = SSB, 10 = CW
39 - Pkt Mic (0-100) 6B 6-0 Contains 0-100 (decimal) as displayed
40 - Pkt Rate 5D 2 0 = 1200, 1 = 9600
41 - Resume 5D 1-0 00 = Off, 01 = 3 Sec, 10 = 5 Sec, 11 = 10 Sec
42 - Rpt Shift Base address + addresses F-11 (HEX)

Refer to VFO Memory record format (farther down the page)

(all) A 24 bit number from with each count representing a 10 Hz  step (i.e. 10 Hz = 1, 10 kHz = 1000) representing up to a 99.99 MHz shift. 
Note:  The "Phantom" band is that "extra" HF band that exists to allow tuning outside of amateur bands. 
Note that bits are allocated for this function even on bands where they are not used.
43 - Scope 5D 3 0 = Cont, 1 = Chk
44 - Sidetone 61 6-0 Contains 0-100 (decimal) as displayed
45 - Sql/RF-G 5F 7 0 = RF-Gain, 1 = Squelch
46 - SSB Mic 67 6-0 Contains 0-100 (decimal) as displayed
47 - SSB Step Base address + 3

Refer to VFO Memory record format (farther down the page)

7-6 00 = 1 kHz, 01 = 2.5 kHz, 10 = 5 kHz
Note that bits are allocated for this function even on bands where they are not used.
48 - Tone Freq Base address + 6

Refer to VFO Memory record format (farther down the page)

4-0 Contains 0-31 with 0 = 67.0 Hz and 31 = 254.1 Hz representing each of the standard 32 CTCSS tones. 
Note:  The "Phantom" band is that "extra" HF band that exists to allow tuning outside of amateur bands. 
Note that bits are allocated for this function even on bands where they are not used.
49 - TOT Time 66 4-0 Contains 0-20 (with 0 = TOT Off)
50 - VOX Delay 64 4-0 0 = 100 Ms with each step representing 100 Ms, up to 24 = 2500 Ms
51 - VOX Gain 63 6-0 Contains 1-100 (decimal) as displayed
52 - Extend 6B 7 0 = Off, 1 = On
53 - DCS INV 66 7-6 00 = Tn-Rn, 01 = Tn-Riv, 10 = Tiv-Rn, 11 = Tiv-Riv
54 - R LSB Car 71 (all) Each step represents 10 Hz with the MSB indicating a negative value.  (From -300 to +300 Hz)
55 - R USB Car 72 (all) Same format as #54
56 - T LSB Car 73 (all) Same format as #54
57 - T USB Car 74 (all) Same format as #54

Miscellaneous memory locations:

Description
Byte
Address
(HEX)
Bit(s)
Used
(7-0)
Remarks
VFO A/B, HOME, MTUNE, QMB,  MTQMB, and memory frequency storage Base address + addresses A-D (HEX) (all)  Refer to VFO Memory and Memory record formats (farther down the page)
VFO A/B, HOME, MTUNE, QMB, MTQMB, and memory mode Storage Base address + 0 2-0 Refer to VFO Memory and Memory record formats (farther down the page)
Display menu (toggled using the "F" key) 76 3-0 0000 = VFO A/B, A=B, SPL;  0001 = MW, MC, TAG;  0010 = STO, RCL, PMS;  0011 = RPT, REV, TON;  0100 = SCN, PRI, DW;  0101 = SSM, SCH, ART;  0110 = IPO, ATT, NAR;  0111 = NB, AGC;  1000 = PWR, MTR;  1001 = VOX, BK, KYR;  1010 = CHG, VLT, DSP;  1011 = TCH, DCH
Submenu selection (displayed holding the "F" key) 75 5-0 Range from 0 to 38 (Hex) for menu items 1-57
FST (Fast Tuning) On/Off 57 7 0 = On, 1 = Off
PBT On/Off 57 4 0 = Off, 1 = On
Lock On/Off 57 6 0 = On, 1 = Off
Band Selection - VFO A 59 3-0 0000 = 160 M, 0001 = 75 M, 0010 = 40 M, 0011 = 30 M, 0100 = 20 M, 0101 = 17 M, 0110 = 15 M, 0111 = 12 M, 1000 = 10 M, 1001 = 6 M, 1010 = FM BCB, 1011 = Air, 1100 = 2 M, 1101  = UHF, 1110 = (Phantom)
Band Selection - VFO B 59 7-4 Same as above
Mem/VFO status 55 7 0 = Memory, 1 = VFO A or B
Memory/MTUNE 55 5 0 = Memory, 1 = MTUNE
HOME select 55 4 0 = (Not home)  1 = HOME memory selected
QMB Select 55 2 0 = (Not QMB)  1 = QMB
MTQMB Select 55 1 0 = (Not MTQMB)  1 = MTQMB
Voltmeter Calibration Factor 53 (all) This is an "internal" value used to calibrate the voltmeter display.
"Current" Memory Channel saved in EEPROM.  This is the memory channel that will be "remembered" when the radio is powered-up next time -  This is not necessarily the current memory. 44F (all) 0 = Memory 1, C7 (HEX) =  Memory 200, M-PL = C8, M-PU = C9
Radio "version" configuration 4-5 (all) These two bytes contain the configuration of jumpers J4001-J4009.  These bytes do not contain the bits relating to these jumpers directly, but some sort of calculated number indicating jumper configuration.  Known configurations are as follows: 
J4005-J4009 jumpered:  0xD8, 0xBF
EEPROM integrity "checksums" 0-3 (all) When a "hard reset" is done, these addresses contain something akin to a checksum.  If the contents of these addresses is disturbed, the CPU will do a complete initialization of the EEPROM, erasing all configuration, "soft calibration" values, and memories.  You have been warned!

VFO Memory Record Format (Preliminary):

VFO Memory records:

  • For a list of EEPROM memory locations listed in address order, go to the Memory Map page.
  • The first "VFO" memory record is at 7D (HEX) with the first 15 VFO A memories followed by the 15 VFO B memories, separated by 26 bytes.
  • Each record is 26 bytes long.  There are 15 "bands" for each VFO (A and B) as follows:
    • 160 M, 75 M, 40 M, 30 M, 20 M, 17 M, 15 M, 12 M, 10 M, 6 M, FM BCB, Air, 2 M, UHF
    • Phantom (This is an extra "HF" band to allow tuning outside an HF amateur band)
    • Again, the "base addresses" of the VFO memory records may be found on the Memory Map page.
  • "MTQMB" "VFO memory" may be found at 40B (HEX)
  • MTUNE "VFO memory" may be found at 425 (HEX).  This memory seems to be "transient" - usually the "working" value is that of the associated VFOA/B and band combination.
  • Note that the "tuning memories" (i.e. MTUNE, MTQMB) seem to follow the VFO Memory Record Format (see table below) rather than the Memory Record format above.
  • Important:  Do not write frequency information to the currently-selected VFO.  Because changes take effect immediately, whilst you are writing the new frequency - one or two bytes at a time, it may - for an instant - be an invalid frequency for that VFO/band combination.  At this instant, the '817 may see it as invalid and overwrite it with a default frequency.  To update a VFO memory record with any information, it is suggested that you switch to a different VFO while you do it.  Use bit 0 at 0x55 to determine/change which VFO you are using before writing to it.
VFO records are stored in the following format:
 
Description
Offset
from
base
(HEX)
Bit(s)
Used
(7-0)
Remarks
Mode 0 2-0 000 = LSB, 001 = USB, 010 = CW, 011 = CWR, 100 = AM, 101 = FM, 110 = DIG, 111 = PKT (Note:  WFM is represented as "FM" when in the FM-BCB range.)
Unknown 0 7-3 Unknown - probably unused
Unknown 1 2-0 Unknown - probably unused
Nar On/Off (FM, FMN Mode) 1 3 0 = Off, 1 = On
Nar On/Off (CW, CWN, DIG mode) 1 4 0 = Off, 1 = On
Unknown 1 5 Unknown - probably unused
RPT Offset 1 7-6 00 = Simplex, 01 = Minus, 10 = Plus, 11 = Nonstandard Split (using separate TX freq)
Tone/DCS Select 2 1-0 00 = Off, 01 = Tone (tx), 10 = Tone + Tone Squelch, 11 = DCS - Probably incorrect - see offset 4, below
Unknown 2 3-2 Unknown
Att On/Off 2 4 0 = Att Off, 1 = Att On
IPO On/Off 2 5 0 = IPO Off, 1 = IPO On
Unknown 2 7-6 Unknown - probably unused
FM Step (Menu # 30) 3 2-0 000 = 5 kHz, 001 = 6.25 kHz, 010 = 10 kHz, 011 = 12.5 kHz, 100 = 15 kHz, 101 = 20 kHz, 110 = 25 kHz, 111 = 50 kHz
AM Step (Menu #6) 3 5-3 000 = 2.5 kHz, 001 = 5 kHz, 010 = 9 kHz, 011 = 10 kHz, 100 = 12.5 kHz, 101 = 25 kHz
SSB Step (Menu # 47) 3 7-6 00 = 1 kHz, 01 = 2.5 kHz, 10 = 5 kHz
Tone/DCS Select 4  1-0 00 = Off, 01 = Tone (tx), 10 = Tone + Tone Squelch, 11 = DCS
Unknown
4
7-2
Unknown
Unknown 5   Unknown
CTCSS Tone Freq (Menu #48) 6 5-0 Contains 0-31 with 0 = 67.0 Hz, representing 50 CTCSS tones.
Unknown 6 7-5 Unknown
DCS Code 7 6-0  Contains 0-67 (HEX) with 0 = DCS Code 023, 67 (HEX) = DCS code 754
Unknown 7 Unknown
RIT Offset 8-9 (all) The RIT offset is stored as a signed number in two bytes ranging from -999 to 999 representing -9.99 to +9.99 kHz offset.  The MSB (with the sign) is stored in the lower byte (8) and the LSB is in the upper byte (9.)
RX Frequency A-D (all) Frequency is stored in a binary format with the MSB in the lower byte (A) and the LSB in the upper byte (D) 
Example:  A value of 02 97 F2 19 (HEX) translates to 43512345 (decimal) and thus a display frequency of 435.12345 MHz.
Unknown E   Unknown - probably unused
Repeater offset (Menu #42) F-11 (all) A 24 bit number with each count representing a 10 Hz step (i.e. 10 Hz = 1, 10 kHz = 1000, etc.) representing up to a 99.99 MHz shift.
Unknown 12-19   Unknown - probably unused

Memory (not VFO) Record Format (Preliminary):

Memory records:

  • For a list of EEPROM memory locations listed in address order, go to the Memory Map page.
  • Memory 1 begins at 484 (HEX) and each memory contains 26 bytes.  There are 202 memories - 200 memories plus "M-PL" and "M-PU".  To find the address of a memory, us the following procedure:
    • The base address of the desired memory may be calculated by taking the memory number, subtracting one, multiplying by 1A (HEX) and then adding 484 (HEX.)  Refer to the chart below for the offset to the desired information.
  • There are 4 "HOME" memories:
    • HF:  389 (HEX)
    • 6 M:  3A3
    • 2 M:  3BD
    • UHF:  3D7
  • "QMB" Memory may be found at 3F1 (HEX)
  • Important:  Do not write information to the currently-selected Memory.  Because changes take effect immediately, whilst you are writing the new frequency - one or two bytes at a time, it may - for an instant - be an invalid frequency for that VFO/band combination.  At this instant, the '817 may see it as invalid and overwrite it with a default frequency.  When modifying a memory, it is best two switch to VFO mode, as there is no known way to accurately determine which memory us currently in use.
  • Note that the "tuning memories" (i.e. MTUNE, MTQMB) seem to follow the VFO Memory Record Format (see below) rather than the Memory Record format.
  • Beginning at 0x450, there is a bitmap, one memory per bit, indicating which memories are used, and which are hidden.  For example, the bit corresponding with memory 1 is bit 0 at 0x450, memory 2 is bit 1 at 0x450, etc.  The bit is set (1) if it is to be visible, and clear (0) if it is to be hidden.  For a memory to show up, this bit must be set.
Memory records are stored in the following format:
 
Description
Offset
from
base
(HEX)
Bit(s)
Used
(7-0)
Remarks
Mode 0 2-0 000 = LSB, 001 = USB, 010 = CW, 011 = CWR, 100 = AM, 101 = FM, 110 = DIG, 111 = PKT  (Note:  WFM is represented as "FM" when in the FM-BCB range.)
Unknown 0 4-3 Unknown
HF/VHF (?) 0 5 0 = 6 Meters and above, 1 = Below 6 meters (Note:  Exact purpose of this bit is unknown)
Unknown 0 6 Purpose unknown, but occasionally used
TAG On/Off 0 7 0 = Memory frequency displayed, 1 = Memory Tag (Label) Displayed
Frequency Range 1 2-0 000 = HF, 001 = 6 M, 010 = FM BCB, 011 = Air, 100 = 2 Meters, 101 = UHF.  Note:  These bits must be appropriately set when loading the frequency.
NAR On/Off 
(FM, FMN Mode)
1 3 0 = Off, 1 = On
NAR On/Off 
(CW, CWN, DIG Mode)
1 4 0 = Off, 1 = On
UHF/Not UHF (?) 1 5 0 = < UHF, 1 = UHF (Note:  Exact purpose of this bit is unknown)
RPT Offset 1 7-6 0 = Simplex, 01 = Minus,  10 = Plus,11 = Nonstandard Split (using separate TX freq)
Tone/DCS Select 2 1-0 00 = Off, 01 = Tone (tx), 10 = Tone + Tone Squelch, 11 = DCS - Probably incorrect - see offset 4, below.
Unknown 2 3-2 Unknown
ATT On/Off 2 4 0 = ATT Off, 1 = ATT On
IPO On/Off 2 5 0 = IPO Off, 1 = IPO On
Unknown 2 6 Unknown
Memory Skip 2 7 0 = Memory Active, 1 = Memory Skip
FM Step 3 2-0 000 = 5 kHz, 001 = 6.25 kHz, 010 = 10 kHz, 011 = 12.5 kHz, 100 = 15 kHz, 101 = 20 kHz, 110 = 25 kHz, 111 = 50 kHz
AM Step 3 5-3 000 = 2.5 kHz, 001 = 5 kHz, 010 = 9 kHz, 011 = 10 kHz, 100 = 12.5 kHz, 101 = 25 kHz 
SSB Step 3 7-6 00 = 1 kHz, 01 = 2.5 kHz, 10 = 5 kHz
Tone/DCS Select 4  1-0 00 = Off, 01 = Tone (tx), 10 = Tone + Tone Squelch, 11 = DCS
Unknown
4
7-2
Unknown
Unknown 5   Purpose unknown, but occasionally used
CTCSS Tone Freq. 6 5-0 Contains 0-31 with 0 = 67.0 Hz, representing 50 CTCSS tones.
DCS Code 7 6-0  Contains 0-67 (HEX) with 0 = DCS Code 023, 67 (HEX) = DCS code 754
Unknown 7 Unknown
RIT Offset 8-9 (all) The RIT offset is stored as a signed number in two bytes ranging from -999 to 999 representing -9.99 to +9.99 kHz offset.  The MSB (with the sign) is stored in the lower byte (8) and the LSB is in the upper byte (9.)
RX Frequency A-D (all) Frequency is stored in a binary format with the MSB in the lower byte (A) and the LSB in the upper byte (D) 
Example:  A value of 02 97 F2 19 (HEX) translates to 43512345 (decimal) and thus a display frequency of 435.12345 MHz.
TX Frequency OR Repeater offset E-11 (all) When a nonstandard split is used, these bytes contain the transmit frequency in the same format as above. 
When a standard (or no) offset is used, these bytes contain the offset specified in menu item #42 in that same format in bytes F-11 (HEX). 
(Refer to RPT Offset - bits 7-6 in byte 1 of the memory record)
Label 12-19 (all) 8 ASCII Character label.  Unused memories contain 0xff.
Notes:
  • There are a few parameters that aren't used in all instances.  Case in point:  Memory locations are reserved for AM step size even in the FM BCB, even though AM mode is not possible.  Other instances are bits for the setting of IPO and ATT status on bands above 6 meters.  These bits have no effect on those band for which they do not apply.
  • Various parameters may be stored in several places for different bands and it is believed that most of these parameters are represented.
  • Setting values outside the specified ranges may have unpredictable results.
  • If you determined that any of the above data is incorrect or incomplete (very likely...) please let me know.
  • Those entries marked with an asterisk (*) are suspect in their function - further investigation is warranted.
  • Attempts to write frequencies into memory that are invalid will result in that memory's content being set to a default value (e.g. 7.00000 MHz, LSB for HF, etc.)
  • All entries in an unused (blank) memory contain FF (HEX)
  • Attempts to change to a memory containing no information will result in memory 1 being selected instead.
  • Frequency ranges are as follows:
    • HF:  33 MHz and below
    • 6 M:  From 33 MHz to 56 MHz
    • FM-BCB:  76-108 MHz
    • Air:  108-137 MHz
    • 2 M:  137-154 MHz
    • UHF:  420-470 MHz
For an EEPROM Memory Map of the FT-817, go to the EEPROM Memory Map page.  This list shows known EEPROM addresses in ascending order.

To be included in the future:

  • How the CLONE mode works?  It should be pointed out that with the above information, using the CLONE mode with a computer is really pointless!  Nevertheless, maybe I'll figure out the format some day...
Wish list:
  • I'm looking for a command that can "peek" at various internal CPU parameters, such as RAM locations, etc.  I have yet to find a way to do this.
  • It would be nice to be able to directly read the "raw" A/D converter values for things like RF power (forward and reverse) as well as voltage, PA current, and the S-meter with better than 4 bit resolution.  Again, I have yet to find a way to do this.
Miscellany:
  • The CLONE mode always operates at 9600 baud, no matter what the interface baud rate is set to.
  • Note:  The PBT (IF Shift) does NOT appear to be stored in EEPROM memory and there does not appear to be any sort of command available to change/read it.
  • It does not appear to be possible to read the voltmeter via the serial port.


Known Issues (as of 28 January, 2002):

  • Bits that control/switch various VFO and Memory modes are not well documented.  The truth table/logic of their operation needs to be further examined.
  • The memory location containing the bits showing which memories are used/erased is known, but yet to be documented here.
  • There is no known way to tell which memory is currently selected.  Memory 0x44F only tells which memory will be selected when the radio powers up next time (i.e. it is updated when the radio is powered down.)
  • The setting of menu item #31 (The CW ID) doesn't seem to be stored anywhere in the EEPROM - it was not to be found even in an EEPROM read via an outboard programmer.  It is possible that this is stored in an available on-CPU EEPROM.

projets/ez8x7/cat/ft817/index.txt · Dernière modification : de f1sls