Skip to content

Instantly share code, notes, and snippets.

@ast
Last active April 4, 2023 14:51
Show Gist options
  • Save ast/cc62dff65d35c857c3a2bd8dfb40051f to your computer and use it in GitHub Desktop.
Save ast/cc62dff65d35c857c3a2bd8dfb40051f to your computer and use it in GitHub Desktop.
Reverse engineering the Yaesu FC-30 antenna tuner protocol

Reverse engineering the Yaesu FC-30

Notes about the Yaesu FC-30 tuner connected to the FT-891 radio. I have not been able to find any information online at all about the propriatry protocol used, so I’m compiling this from my observations.

The ultimate goal of this project is to connect an Icom AH-4 tuner to Yaesu radios.

Data shown is hex. Data in [brackets] are from tuner. Data without brackets are from radio.

Seems tuning is done in three steps:

  1. First a command is sent to disengage the tuner, then a a high(er) power carrier is sent to detect SWR. If the SWR is too high the tuner won’t start tuning.
  2. Then the command to start tuning is sent and a lower power carrier is sent.
  3. A higher power carrier is sent

The TX INH line is used to supress RF while switching the tuning circuit in/out.

Connector

  • 8-pin mini DIN connector on radio.
  • 8-pin mini DIN connector on tuner.
  • Cable is straight through (meaning TX D/RX D are swapped in the tuner)
  1. +13V OUT (not fused I’ve heard, so be careful)
  2. TX GND (pulled low by radio on TX)
  3. GND
  4. TX D (5v logic)
  5. RX D (5v logic)
  6. Sense (this is connected to GND in the tuner, most likely for detection)
  7. Reset (this is held high by the radio when on)
  8. TX INH (Tx inhibit, pulled low by tuner to inhibit tx)

Before you connect the tuner you need to select menu 16-15 TUNER SELECT = EXTERNAL, then you need to switch of radio, connect tuner and switchb it on.

Radio detects presence of tuner based on Sense pulled to GND and also tuner sends serial data after being turned on.

Commands as observed

  • Serial is normal UART (idle high 5v) 4800bps 8N1.
  • All commands from radio are 4 bytes, with first byte beeing sent about 50ms before the last 3 (wake up?).
  • Command from radio always begins with 0xff.
  • Frequency is transmitted as 4 bit BCD. Example: 0x0722 = 7.22MHz.
  • Radio turn on tuner disabled:

(200ms) [a0] (800ms) [a1] ff e0 01 00 ff e0 00 01 ff f1 00 00 [a0] [a1]

  • Radio turn on tuner enabled:

(200ms) [a0] (800ms) [a1] ff e0 01 00 ff e0 00 01 ff f0 00 00 [a0] [a1] ff f0 07 16 [a0] [a1]

  • Tuner enable:
  • ff f0 07 06 [a0] [a1]
  • Tuner disable:
  • ff f1 00 00 [a0] [a1]
  • Tuning:

ff f1 00 00 [a0] [a1] ff f2 07 06 [a0] [a1]

  • Seems first tuner is disabled. A carrier is sent to check SWR. Then Tuning starts. Final a1 sent when tuner is finshed. After this a test carrier is sent.
  • Changing VFO frequency to 7.16MHz (example). This is sent for every 10KHz when tuner is engaged.
  • ff f0 07 16 [a0] [a1]
@ast
Copy link
Author

ast commented Sep 1, 2020

It's most likely a sync byte to synchronize the uart.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment