FT-857D CAT on an Arduino
06/05/2021 Ph. Lonc - F6CZV 1
Goals
• The goals of this project were:
• To get familiarized with YAESU CAT format and protocol,
• To develop on Arduino an application to display the FT-857 frequency and
main parameters using the CAT exchanges,
• To get a knowledge to implement a FT-1000 MP CAT on a micro-controller.
• The development base is the source code developed by VE3BUX for a
Yaesu FT-857 CAT on Arduino [3]
06/05/2021 Ph. Lonc - F6CZV 2
CAT Tests with the FT-857D
• Configuration :
Pin numbers are those of the FT-857 female mini-DIN 8 socket
Tx Pin 11 Tx Pin 4
Rx Pin 10 Rx Pin 5
Arduino
GND GND pin 3 FT-857D
nano
TTL serial link
06/05/2021 Ph. Lonc - F6CZV 3
Arduino software structure
• Software structure on Arduino :
• The C++ .ino program which makes the calls to the CAT functions, receives
and processes the statuses,
• The FT857D.h library header contains:
• The descriptions in comments of each command or status. Those descriptions are
derived from the documentation and verified/amended through tests,
• The description of constants used in each command or status,
• The description of the C++ class skeleton and of its methods.
• The FT857D.cpp library contains :
• The C++ class description,
• The class methods descriptions (CAT commands et status reception)
06/05/2021 Ph. Lonc - F6CZV 4
Modifications of VE3BUX Arduino source code
• In the library (FT857D.cpp et FT857D.h)
• Bug fix (Tx status)
• Improvement of an existing function (getmode)
• Addition of the getSMeter function from a CAT command
• FT-857 CAT status commands are poor : for example it is not possible to get
the name of the active VFO:
• It is possible to read the radio EEPROM to get some parameters (undocumented by
YAESU). See [3], [4] et [5]
• New functions were added to the library to read some locations of the EEPROM.
• Development of the FT857D_display_test.ino program which calls
periodically the status functions and displays the results on an 4x20
LCD
06/05/2021 Ph. Lonc - F6CZV 5
Display specifications
• Only active options (DBF, DNF, …) are displayed
• Keyer et Break-in options are only displayed if the mode is CW or CWR
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 S s s s S P L e r
1 V F O Y
2 M M M m m m . k k k , d d k H z
3 D B F D N F D N R K Y R B K
s s s 0 to 9+60 e r Rx or Tx K Y R Keyer
M M M mode on 3 chars D B F Band Pass Filter B K Break-in
m m m MegaHertz D N F Notch
k k k kiloHertz D N R Noise reduction
d d decaHertz S P L Split
Y A or B
06/05/2021 Ph. Lonc - F6CZV 6
06/05/2021 Ph. Lonc - F6CZV 7
FT-857D EEPROM map [5]
Address Bits
Function Observations
[hex] used
0000
0068 0 VFO-A/B 0=VFO-A, 1=VFO-B
5 NB (MFl) 0=OFF, 1=ON
006A 2 DISP(MFi) 0=NORMAL, 1=BIG (Double)
1-0 AGC type(MFl) 00=SLOW, 10=FAST, 01=AUTO
5 BK(MFj) 0=OFF, 1=ON
006B 4 KYR(MFj) 0=OFF, 1=ON
1-0 MTR (Mfi) 00=PWR, 01=ALC, 10=SWR, 11=MOD
0078 5 DIG MODE (Menu 38) 0=USER-L, 1=USER-U
008C 7 ARTS(MFf) 0=OFF, 1=ON
6 SCN (MFg) 0=OFF, 1=ON
4-3 PRI/DW(MFg) 00=OFF/OFF, 10=ON/OFF, 11=DW-ON
008D 7 SPLIT(Mfa) 0=OFF, 1=ON
009B 6-0 RF POWER SET (Menu 75) in HF HF RF-Power value (5-100W)
009C 4-3 TUNER/ATAS(Menu 085) 00=OFF, 01=ATAS(HF),
10=ATAS(HF&50),11=ATAS(ALL)
5 AGC(MFl) 0=OFF,1=ON
3-2 DBF 00=OFF, 11=ON
00A8
1 DNR (MFp) 0=OFF, 1=ON
0 DNF(MFp) 0=OFF, 1=ON
00AA 6-0 RF POWER SET (Menu 75) in 6m 6m RF-Power value (5-100W)
00AB 6-0 RF POWER SET (Menu 75) in VHF HF RF-Power value (5-50W)
00AC 6-0 RF POWER SET (Menu 75) in UHF HF RF-Power value (2-20W)
06/05/2021 Ph. Lonc - F6CZV 8
FT-857D EEPROM map
Address Bits
Function Observations
[hex] used
00BB 3 NAR(MFm) (160m) 0=FM, 1=FM-N
5 IPO (MFm) (160m) 0=OFF, 1=ON
00BC
4 ATT (MFm) (160m) 0=OFF, 1=ON
00D7 3 NAR(MFm) (80m) 0=FM, 1=FM-N
5 IPO (MFm) (80m) 0=OFF, 1=ON
00D8
4 ATT (MFm) (80m) 0=OFF, 1=ON
010F 3 NAR(MFm) (40m) 0=FM, 1=FM-N
5 IPO (MFm) (40m) 0=OFF, 1=ON
0110
4 ATT (MFm) (40m) 0=OFF, 1=ON
012B 3 NAR(MFm) (30m) 0=FM, 1=FM-N
5 IPO (MFm) (30m) 0=OFF, 1=ON
012C
4 ATT (MFm) (30m) 0=OFF, 1=ON
0147 3 NAR(MFm) (20m) 0=FM, 1=FM-N
5 IPO (MFm) (20m) 0=OFF, 1=ON
0148
4 ATT (MFm) (20m) 0=OFF, 1=ON
0163 3 NAR(MFm) (17m) 0=FM, 1=FM-N
5 IPO (MFm) (17m) 0=OFF, 1=ON
0164
4 ATT (MFm) (17m) 0=OFF, 1=ON
017F 3 NAR(MFm) (15m) 0=FM, 1=FM-N
06/05/2021 Ph. Lonc - F6CZV 9
FT-857D EEPROM map
Addre
Bits
ss Function Observations
used
[hex]
5 IPO (MFm) (15m) 0=OFF, 1=ON
0180
4 ATT (MFm) (15m) 0=OFF, 1=ON
019B 3 NAR(MFm) (12m) 0=FM, 1=FM-N
5 IPO (MFm) (12m) 0=OFF, 1=ON
019C
4 ATT (MFm) (12m) 0=OFF, 1=ON
01B7 3 NAR(MFm) (10m) 0=FM, 1=FM-N
5 IPO (MFm) (10m) 0=OFF, 1=ON
01B8
4 ATT (MFm) (10m) 0=OFF, 1=ON
01D3 3 NAR(MFm) (10m) 0=FM, 1=FM-N
5 IPO (MFm) (6m) 0=OFF, 1=ON
01D4
4 ATT (MFm) (6m) 0=OFF, 1=ON
0227 3 NAR(MFm) (2m) 0=FM, 1=FM-N
0243 3 NAR(MFm) (70cm) 0=FM, 1=FM-N
025F 3 NAR(MFm) (60m) 0=FM, 1=FM-N
5 IPO (MFm) (60m) 0=OFF, 1=ON
0260
4 ATT (MFm) (60m) 0=OFF, 1=ON
06/05/2021 Ph. Lonc - F6CZV 10
FT-857D EEPROM map : comments
• Remarks on output power coding :
• HF (byte address 9b - bits 0 to 7)
• 50 MHz (byte address aa - bits 0 to 7)
• VHF (byte address ab - bits 0 to 7)
• UHF (byte address ac - bits 0 to 7)
• Up to 19 W a straightforward coding is done on the 2 half bytes : 19 = 0x13
• From 20W to max power bit 7 of the 2nd half byte is set to 1:
• 100 W = 0xe4 in place of 0x64
• So :
• To only read the power take into account the bits 0 to 6
• To write the power into the EEPROM (power update) take into account bits 0 to 7
06/05/2021 Ph. Lonc - F6CZV 11
References
• [1] Yaesu FT-857D user manual : User manual
• [2] Arduino FT-857D CAT Library : http://rfanat.ru/Arduino_projekts/Arduino-
FT-857D-CAT-Library_VE3BUX.html
• [3] The KA7OEI FT-817 pages (CAT et EEPROM interfaces) :
http://www.ka7oei.com/ft817_meow.html
• [4] Pocket Rx-Tx user guide :
https://www.yo3ggx.ro/pocketrxtx/doc30/pocketrxtx_v3.0.pdf
• [5] EEPROM reading of FT-857D, FT-817D and FT-897D : Offline User Guide
FT8x7EE 0.1(EN) : https://www.yo3ggx.ro/ft8x7ee/doc01/index.html
06/05/2021 Ph. Lonc - F6CZV 12