Deze website maakt gebruik van zogeheten cookies. Klik op [OK] om deze melding te verbergen. Klik hier om meer informatie te lezen over de gebruikte cookies.
P O L Y T E C H . N U
Click here fore my surplus stuff sale!!!
Nederlands

Yaesu FT-8x7 CAT port

Nederlandse inleiding
De Yaesu FT-8x7 zendontvangers zijn uitgerust met een CAT (Computer Aided Transceiver) poort. Dat wil zeggen dat door middel van een dataverbinding informatie naar de zendontvanger is te sturen en vanaf de zendontvanger is te ontvangen. Dit heeft geen betrekking op uitgezonden en ontvangen packet berichten, uitsluitend voor bediening en status informatie van de zendontvanger. Aanvankelijk is het ontworpen om de zendontvanger (anno 2001) met een antenne tuner of computer te kunnen verbinden, maar gezien de nieuwere ontwikkelingen met Arduino controllers is het ook mogelijk om de status van de zendontvanger op een groter scherm weer te laten geven door een Arduino met scherm aan de CAT poort te verbinden.

De Yaesu FT-817, FT-857 en FT-897 hebben nagenoeg dezelfde systeem architectuur, dus het is aannemelijk dat onderstaande informatie op deze drie modellen van toepassing is. In de handleiding worden ook een aantal gemeenschappelijke instructies beschreven, maar opgemerkt moet worden dat niet in elke handleiding alle instructies staan. Wel is het aannemelijk dat de instructies voor de drie modellen van toepassing zijn.

Informatie zoals de gewenste frequentie, DCS toon, CTCSS toon, split, PTT, vergrendeling tot aan de geheugen informatie is via de CAT poort uit te wisselen. Enkele instructies staan in de handleiding beschreven, maar diverse amateurs hebben nog meer mogelijkheden zoals het uitlezen en programmeren van de EEPROM uitgeplozen. Er is veel informatie te vinden, maar vaak is het onoverzichtelijk en incompleet. Ik probeer hierbij een beknopt overzicht te geven van de beschikbare informatie. Houd er rekening mee dat er héél veel meer te vinden is op het internet als er naar gezocht wordt.

Let op! De CAT poort is direct met de microprocessor verbonden! Zorg dat er geen piekspanningen en dergelijke op de CAT poort terecht komt omdat dit de microprocessor kan beschadigen! Het is verstandig om bij zelfbouw elektronica op strategische plaatsen zener diodes in de schakeling op te nemen om overspanning op de CAT ingang te voorkomen. Het vervangen van een CPU is vaak lastig en economisch al niet meer aantrekkelijk.

Nederlandse verbinding
De eerste stap is om het protocol goed te begrijpen. De data verbinding bestaat uit "enen en nullen" ofwel "bits". Op hardware niveau betekent dit dat een laag (0) signaal overeen komt met 0 VDC ofwel massaverbinding en hoog (1) overeenkomt met + 5 VDC ofwel Vcc van de microprocessor. Er wordt gebruik gemaakt van één start bit, acht data bits, twee stop bits, geen pariteit bit en geen "handshake". De snelheid van communiceren is op 4.800, 9.600 of 38.400 baud (bits per seconde) in te stellen via menu item 14.

baudrate: 4.800, 9.600 of 38.400 baud (in te stellen via menu item 14)
start bit: 1
data bits: 8
stop bits: 2
parity: 0
handshake: geen
levels: TTL (0/5 VDC)

image

Nederlandse structuur
Om met Yaesu FT-8x7 zendontvanger te kunnen communiceren wordt er gebruik gemaakt van een data structuur van 5 byte instructies. Acht data bits vormen één byte. De eerste vier byte's bevatten inhoudelijk informatie en de laatste byte van de reeks bevatten het commando. Tussen elke byte zou volgens de handleiding 200 ms tijd moeten zitten, naar verluid blijkt dit niet te werken en zou de tijd tussen de byte's kleiner moeten zijn...

bits, byte's en nibbles
De data structuur bestaat dus uit 5 bytes. Eén byte bestaat uit acht bits, ofwel acht nullen of enen zoals bijvoorbeeld: "00000000". Voor de acht data bits wordt een start bit (1) geplaatst en na de acht data bits worden twee stop bits (11) geplaatst. Er is geen pariteit bit van toepassing. Een pariteit bit is een controle bit om te controleren of de ontvangen informatie klopt. Als de pariteit bit niet overeen komt met de data bits, dan is er informatie verloren gegaan en daarmee de data onbetrouwbaar. Deze pariteit bit is niet toegepast omdat de mate van betrouwbaarheid bij het CAT protocol niet van belang is geacht. Wanneer de data reeks "00000000" is, dan wordt er dus "10000000011" verzonden voor één byte. Elke CAT instructie bestaat dus uit vijf blokken van elf bits.

De laagste data byte (acht bits) waarde is binair "00000000". De grootste waarde is "11111111". Eén byte is in tweeën te splitsen. Beide delen heten een "nibble". Nibble is de engelse vertaling voor "een klein hapje", ofwel een een "hapje" (nibble) van een "grote hap" (byte). Elke nibble heeft een waarde van 0000 tot en met 1111. Met vier posities één of nul zijn 16 verschillende mogelijkheden te maken. Elke opcode instructie bestaat uit twee karakters waardoor gebruik wordt gemaakt van hexadecimale weergave. In het hexadecimale stelsel zijn er 16 mogelijkheden weer te geven in één karakter. Elke opcode bestaat uit twee hexadecimale karakters van 00 tot en met FF. Voor de verduidelijking staat hieronder een tabel met de relatie tussen de binaire, decimale en hexadecimale waarde weergegeven. In de praktijk worden hexadecimale waarden aangeduid met 0x als "prefix". "0x" heeft dus niets met de inhoudelijke waarde te maken, maar is alleen een aanduiding dat het een hexadecimale waarde betreft. Het getal 255 [DEC] wordt binair weergegevens als 11111111 [BIN en hexadeximaal als 0xFF [HEX].


decimaal
binair
hexadecimaal
0
0000
0x0
1
0001
0x1
2
0010
0x2
3
0011
0x3
4
0100
0x4
5
0101
0x5
6
0110
0x6
7
0111
0x7
8
1000
0x8
9
1001
0x9
10
1010
0xA
11
1011
0xB
12
1100
0xC
13
1101
0xD
14
1110
0xE
15
1111
0xF




[data1][data2][data3][data4][commando]


Waarschijnlijk is het volgende voorbeeld inzichtelijker. Wanneer "43 02 75 00 01" naar de zendontvanger wordt gestuurd, dan is de laatste byte (01 in dit geval) het commando. Commando "01" zorgt ervoor dat de zendontvanger op de gewenste frequentie wordt ingesteld. In dit geval is de gewenste frequentie 430,2750 MHz. De frequentie informatie is in dit geval opgenomen in de eerste vier data byte's.

In de praktijk zal de data stroom er dus uit zien zoals hieronder weergegeven. De groene bits representeren de daadwerkelijke informatie. De zwarte bits zijn de start en stop bits.

43 02 75 00 01 = 10100001011 10000001011 10111010111 10000000011 10000000111


Het is ook mogelijk om een instructie te sturen naar de zendontvanger waarbij de data byte's niet relevant zijn zoals bij het in en uitgschakelen van de PTT. De zendontvanger gaat zenden met het commando "00 00 00 00 08" en stopt met zenden met instructie "00 00 00 00 88". "08" bekekent PTT inschakelen en "88" betekent PTT uitschakelen. De nullen zijn niet relevant voor het schakelen van de PTT, maar deze "dummy" data moet wel mee gestuurd worden omdat er altijd vijf byte's worden verwacht door de zendontvanger.

Er kan ook informatie van de zendontvanger op worden gevraagd. Met commando "00 00 00 00 E7" wordt bijvoorbeeld de status van ontvangst opgevraagd zoals de s-meter waarde, CTCSS/DCS informatie en squelch toestand. Met commando "00 00 00 00 F7" wordt de status van zenden opgevraagd zoals de PTT stand, melding van hoge reflectie (VSWR) en split.

In de handleiding van de betreffende FT-8x7 zijn 17, door Yaesu beschikbaar gemaakte, commando's te vinden.

Nederlandse TTL en RS232 signalen
Houd er rekening mee dat de signalen van de CAT poort TTL niveau (transistor-transistor level) hebben, dus hoog (1) = 5 VDC en laag (0) = 0 VDC. Het is mogelijk om de zendontvanger met een seriële poort van een computer te verbinden. Een RS232 poort werkt met andere spanningen, namelijk hoog (1) = -3...-25 VDC en laag (0) = +3...+25 VDC. De spanningen verschillen dus en het signaal is "omgekeerd"; een 1 = 0 en 0 = 1. Er is een Yaesu CT-62 kabel nodig om deze signalen te kunnen converteren. Maar het is uiteraard ook mogelijk om zelf een schakeling te maken zoals met een MAX232 chip om de signalen aan te passen. Ik heb ooit een kabel zelf gebouwd, maar zonder succes. Omdat de CAT signalen direct aan de microprocessor zitten is de kans op kostbare schade door "een foute" reëel. Vandaar dat ik de originele (seriële) CT-62 kabel heb gekocht om risico's te vermijden.

Nederlandse officiële instructie codes (opcodes)


command line
data byte 1
data byte 2
data byte 3
data byte 4
opcode
[/splittd]
notes
power on/off
×
×
×
×
8F
power off
Likely only for the FT-817. Certainly not for FT-857.
×
×
×
×
0F
power on
Likely only for the FT-817. Certainly not for FT-857.
set panel lock
×
×
×
×
00
LOCK ON
[00] respond = changed as desired / [F0] respond = unchanged; already in desired state
×
×
×
×
80
LOCK OFF
[00] respond = changed as desired / [F0] respond = unchanged; already in desired state
set TX/RX (PTT)
×
×
×
×
08
TX
[00] respond = changed as desired / [F0] respond = unchanged; already in desired state
×
×
×
×
88
RX
[00] respond = changed as desired / [F0] respond = unchanged; already in desired state
set frequency
P1
P2
P3
P4
01
P1...P4: frequency digits (0...9)
12,34,56,78,(01) = 123,456.78 MHz
[00] respond as confirmation
set operating mode
00
×
×
×
07
LSB
01
×
×
×
07
USB
02
×
×
×
07
CW
03
×
×
×
07
CWR
04
×
×
×
07
AM
08
×
×
×
07
FM (wide)
0A
×
×
×
07
DIG
0C
×
×
×
07
PKT
88
×
×
×
07
FMN (narrow FM)
set clarifier
×
×
×
×
05
clarifier ON
[00] respond = changed as desired / [F0] respond = unchanged; already in desired state
×
×
×
×
85
clarifier OFF
[00] respond = changed as desired / [F0] respond = unchanged; already in desired state
set clarifier frequency
P1
×
P3
P4
F5
P1 = 00: positive offset
P1 = not 00: negative offset
P3 = nn,00 kHz / P4 = 00,nn kHz
(P3, P4 = 12,34 = 12,34 kHz
set VFO A/B
×
×
×
×
81
toggle between VFO A and B
[00] respond as confirmation
set split
×
×
×
×
02
split ON
[00] respond = split changed / [F0] respond = split was inready in the desired state
×
×
×
×
82
split OFF
[00] respond = split changed / [F0] respond = split was inready in the desired state
set repeater shift
89
×
×
×
09
simplex
[00] respond as confirmation
09
×
×
×
09
negative (-) shift
[00] respond as confirmation
49
×
×
×
09
positive (+) shift
[00] respond as confirmation
set repeater offset frequency
P1
P2
P3
P4
F9
P1...P4: frequency digits (0...9)
12,34,56,78,(F9) = 12,345.678 MHz
set tone mode
8A
×
×
×
0A
tone off
0A
×
×
×
0A
DCS ON
0B
×
×
×
0A
DCS DECODER ON
0C
×
×
×
0A
DCS ENCODER ON
2A
×
×
×
0A
CTCSS ON
3A
×
×
×
0A
CTCSS DECODER ON
4A
×
×
×
0A
CTCSS ENCODER ON
set CTCSS tone
P1
P2
P3
P4
0B
P1 = nn,00 Hz TX CTCSS tone
P2 = 00,nn Hz TX CTCSS tone
P3 = nn,00 Hz RX CTCSS tone
P4 = 00,nn Hz RX CTCSS tone
Note: P3 and P4 are not used for the FT-817.
set DCS tone
P1
P2
P3
P4
0C
P1 = nn,00 Hz TX DCS tone
P2 = 00,nn Hz TX DCStone
P3 = nn,00 Hz RX DCStone
P4 = 00,nn Hz RX DCS tone
Note: P3 and P4 are not used for the FT-817.
send RX status request
×
×
×
×
E7
See note 1 below for response. Replies 1 byte.
send TX status request
×
×
×
×
F7
See note 2 below for response. Replies 1 byte.
send frequency/mode request
×
×
×
×
03
See note 3 below for response. Replies 5 byte.
TX metering information request
×
×
×
×
BD
See note 4 below for response. Replies 2 bytes.
Master reset
×
×
×
×
BE
This will reset your rig fully to factory defaults! This will also erase all the memory information service menu settings. Don't use this unless you're realy sure what you're doing. Always make a service menu backup first! After reset, the rig isn't aligned anymore!
× = Any value between 00 and FF hexadecimal. Normally 00 and never empty!


Note 1: RX status reques response bits
7
6
5
4
3
2
1
0
squelch status
0 = off
1 = on
tone squelch
0 = matched or off
1 = unmatched
discriminator
0 = centered
1 = off center
dummy datas-meter reading


Note 2: TX status reques response bits
7
6
5
4
3
2
1
0
PTT status
0 = RX
1 = TX
SWR status
0 = no HI SWR
1 = HI SWR
split status
0 = split ON
1 = split OFF
dummy dataPO-meter reading


Note 3: frequency and mode status reques response bits
byte 1
byte 2
byte 3
byte 4
byte 5
nn0 MHzn,n MHznn kHz0,nn kHz00 = LSB
01 = USB
02 = CW
03 = CWR
04 = AM
06 = WFM
08 = FM(N)
0A = DIG
0C = PKT
43,21,09,87,0C = 432,10987 MHz PKT



Note 4: TX metering information request response bits
nibble 1
nibble 2
nibble 3
nibble 4
first four bits of first byte
second four bits of first byte
first four bits of zecond byte
second four bits of second byte
PWR (Power) meter value.VSWR (Vertical Standing Wave Ratio) meter value.ALC (Auto Level Control) meter value.MOD (modulation) meter value.
In RX mode "0x00" is replied. In TX mode the response above is replied.


KA7OEI did a lot of research about the commands above!

Nederlandse fouten in documentatie
Let op! In de officiële documentatie is onjuiste en tegenstrijdige informatie te vinden. Dit kan verwarring opleveren. Ter opheldering zijn de volgende onvolkomenheden te benoemen:

- In de "CAT tabel" van de Yaesu FT-817 manual staat bij "CLAR frequency" vermeld dat de offset positief is als P1 "00" is en negatief als P1 "00" is. Dit klopt niet. Als P1 "00" is, dan is de offset positief, in alle andere situaties (01...FF) is de offset negatief.

- In het paragraaf "CAT data protocol" van de Yaesu FT-817 manual staan twee grafische weergaven van de data structuur. De rechter weergave laat de 5-byte commando structuur zien. Echter zijn er zes blokken afgebeeld. Het eerste "Command Data" blok dient te worden weggelaten omdat de juiste structuur begint met vier parameter byte's gevolgd door één opcode byte.

- In de CAT instructie staat dat er 200 ms tussen de bytes aanwezig moet zijn. Dit blijkt in de praktijk niet te functioneren. Aannemelijk is het dat alle vijf bytes binnen 200 ms ontvangen moeten worden.

Nederlandse praktijk testen
Voorheen heb ik naar vaker volle tevredenheid gewerkt met de (betaalde) FTBasicMMO applicatie om geheugenkanalen te programmeren en uit te lezen. Met een computer en een Excel lijst de frequenties en kanaalnamen instellen gaat namelijk véél makkelijker dan karakter voor karakter. Ook zijn er diverse applicatie voor CAT besturing zoals "Hamradio Deluxe" (HRD) en "FT-817 commander". Maar het is lastig gebleken om informatie te vinden hoe de communicatie op bit niveau werkelijk werkt. Vandaar dat ik hiermee aan het experimenteren gegaan ben. In november 2019 heb ik voor het eerst getest met het manueel aansturen van een Yaesu FT-857. Aanvankelijk gebruikte ik Puttytel voor seriële verbindingen, maar de Yaesu CAT poort heeft HEX code nodig en geen leesbare ASCII, dus Puttytel is onbruikbaar. (Daarbij is Puttytel "lastig" omdat bij veranderen van de parameters de applicatie elke keer herstart moet worden...) Na een "speurtocht" naar handige software ben ik bij Termite en Realterm uitgekomen. Termite werkt prettiger dan Puttytel, maar kan alsnog alleen leesbare ASCII tekens versturen. Termite is alleen bruikbaar voor seriële verbindingen, dus beperkter dan Puttytel, maar voor RS232 data prettiger in gebruik. De fijnste applicatie is Relaterm. Met Realterm is het ook mogelijk om hexadecimale (HEX) code te versturen en te ontvangen zoals voor de CAT poort nodig is. Ook kan de ontvangen data weergegeven worden als binaire (BIN) data, dat soms ook handig kan zijn. Ook kunnen de poort parameters worden gewijzigd zonder de applicatie te herstarten. (Voor werken met een TNC is Realterm ook handiger omdat niet (ASCII) leesbare code wel als binaire of hexadecimale zichtbaar is.) Hieronder staan enkele hints voor het gebruik van Realterm voor CAT besturing.

image

Hierboven is zichtbaar dat de weergave van de informatie (in het zwarte veld) als Hexadecimale data moet worden weergegeven. Binaire (EN: Binary) weergave kan ook handig zijn. De standaard ASCII weergave (All Chars) is niet werkbaar voor CAT control omdat niet alle verstuurde/ontvangen data leesbaar is. Voor de rest hoeven er geen instellingen te worden gewijzigd.

image

Op het tweede (Port) tabblad moeten de hardware instellingen van de seriële poort worden ingesteld. De data snelheid moet overeenkomen met die van de CAT poort en dat is in de meeste gevallen 9600 baud. De snelheid is in het menu van de zendontvanger te variëren van 4.800, 9.600 tot 38.400 baud. Mijn voorkeur is 9.600 baud omdat dit vrij standaard is voor soortgelijke toepassingen en snel genoeg is. Let er trouwens ook op dat de poort op "CAT" gezet wordt en niet op "LIN" of "TUNER" in het menu van de zendontvanger. De pariteit, data bits en vooral stop bits (!) moeten juist worden ingesteld op 8N2. Meestal is één stop bit toegepast, maar bij de CAT poort zijn dit er twee! Met de knop [Change] kunnen de instellingen worden geactualiseerd.

image

Na het instellen van Realterm kan daadwerkelijk data worden verzonden. In de basis zendt de zendontvanger nooit CAT data uit, tenzij er door een extern apparaat om gevraagd wordt. Het is verstandig om te testen met commando "0x0000000081". De data is binair als volgt "0000.0000 0000.0000 0000.0000 0000.0000 1000.0001. (De punt middenin de byte is om de twee nibbles visueel beter leesbaar te maken.) De verzonden bits zijn dan "10000000011 10000000011 10000000011 10000000011 11000000111 omdat de start bits en stop bits aan de data zijn toegevoegd. Deze verzonden data is met een oscilloscoop zichtbaar te maken. De vier data bytes zijn hiermee "00" en de (instructie) opcode is "81". Opcode "81" is de code voor het schakelen tussen VFO A en B. Door op [as Hex] te klikken, wordt de ingevoerde HEX code uitgezonden. En als het goed is, schakelt de zendontvanger nu van de ene naar de andere VFO. Handig is het om per VFO een andere band te kiezen zodat het schakelen tussen de VFO's duidelijk zichtbaar is en een band relais klikt voor een auditieve indicatie van omschakelen. Elke data regel uit de CAT tabel is op deze wijze te versturen. Wanneer "00000000E7" (RX informatie) of "00000000F7" (TX informatie) verstuurd wordt, wordt er (binaire) data teruggezonden over de status. Het antwoord van de zendontvanger is één byte zoals bijvoorbeeld "0xFF" ofwel binair "1111.1111". Als de TX informatie wordt opgevraagd tijdens ontvangen wordt "0xFF" teruggezonden en wanneer de RX informatie wordt opgevraagd tijdens zenden wordt "0xFF" teruggezonden ter indicatie van een onlogische vraag. De TX info kan alleen bij zenden worden opgevraagd en vice versa voor RX informatie. Handig is het om de ontvangen data binair te bekijken omdat elke losse bit vaak een aparte betekenis heeft zoals in de CAT opcode tabel hierboven zichtbaar is.
Een mooie mogelijkheid is om (via het oranje vlak) een hexadecimaal bestand te laden en herhaaldelijk uit te laten zenden. Door Repeate op "0" te zetten wordt het zenden herhaald totdat het zenden handmatig wordt gestopt. Selecteer een hexadecimaal (!) bestand met het gewenste CAT commando (zoals 0x00000000E7) en klik op [Send file] om het automatisch uitzenden te starten. Met overige parameters is ook de snelheid van herhalen in te stellen, maar dat is vast zelf uit te vinden en gaat te ver voor deze verklarende uitleg.

image

Via https://hexed.it is een gewenst hexadecimaal bestand te maken. Op bovenstaande weergave is het bestand gemaakt om de RX informatie op te vragen. Door dit hexadecimale bestand herhaaldelijk door Realterm uit te zenden, wordt de ontvangst informatie zoals signaalsterkte en squelch status continu opgevraagd en het antwoord van de zendontvanger wordt vervolgend weergegeven.

Bovenstaande heeft geen directe toepassing, anders dan het protocol en de mogelijkheden testen en begrijpen. Wel is het bijvoorbeeld hiermee mogelijk om een Arduino (met een scherm) te programmeren zodat interessante informatie uitgebreid kan worden weergegeven. Zo kan op een extern scherm de frequentie, modus, signaalsterkte en meer relevante informatie worden weergegeven dat niet op het scherm van een FT-817 past. Ook is het denkbaar om een Racal Cougar afstandbediening om te bouwen naar een FT-8x7 remote. De Racal Cougar afstandbediening is zeer robuust en hier kan een Arduino in worden gebouwd voor de besturing. Zo kan met de kanaalkeuzeknop bijvoorbeeld keuze gemaakt worden uit tien instellingen zoals frequentie, subtoon, modus en meer dat via CAT in te stellen is. Zo is een robuuste bediening mogelijk voor een vrij kwetsbare Yaesu FT-8x7. Kortom, bovenstaande kan dienen als inspiratie voor mooie projecten. ;-)