
Yaesu FT-50 data description

RCS $Header: /home/mole/riku/CVS/yaesu/ft50-data.txt,v 1.2 1998/05/08 11:51:40 riku Exp $


Author: Riku Kalinen, OH2LWO / K2LWO, <oh2lwo@sral.fi>

Please read file LICENCE.

Use this information with your own risk !


1.	PROTOCOL


While down- or uploading, radio always echoes back every byte which is sent to
it.


Download (radio -> computer)

Computer			Radio

Start program `ft50get'.
				Press PTT while in CLON mode.
				`SEND' appears to display.
				Sends block 1: total of 10 bytes
Sends ACK (0x06)
				Echoes ACK.
				Sends block 2.
					total of 1+16=17 bytes
Sends ACK
				Echoes ACK.
				Sends block 3.
					total of 1+112=113 bytes
Sends ACK
				Echoes ACK.
				Sends block 4.
					total of 1+16=17 bytes
Sends ACK
				Echoes ACK.
				Sends block 5.
					total of 1+16=17 bytes
Sends ACK
				Echoes ACK.
				Sends block 6.
					total of 1+1776=1777 bytes
Sends ACK
				Echoes ACK.
				Sends block 7.
					total of 1+1776=1777 bytes
Sends ACK
				Echoes ACK.
				Sends block 8.
					total of 1+1=2 bytes
				`CLON' appears to display.


Upload (computer -> radio)

All of the data is transmitted.  For brevity, only transmission of 1st and
last characer of each block is shown in diagram.

Computer			Radio

				Press MONI while in CLON mode.
				`WAIT' appears to display.

Start program `ft50send'.

Sends 1. character of block 1.
				`RCV' appears to display.
				Echoes 1. character of block 1.
Sends 2. character of block 1.
				Echoes 2. character of block 1.
.
.
Sends last character of block 1.
				Echoes last character of block 1.
				Sends ACK.
Sends 1. character of block 2.
				Echoes 1. character of block 2.
.
.
Sends last character of block 2.
				Echoes last character of block 1.
				Sends ACK.
Sends 1. character of block 3.
				Echoes 1. character of block 3.
.
.
Sends last character of block 3.
				Echoes last character of block 3.
				Sends ACK.
Sends 1. character of block 4.
				Echoes 1. character of block 4.
.
.
Sends last character of block 4.
				Echoes last character of block 4.
				Sends ACK.
Sends 1. character of block 5.
				Echoes 1. character of block 5.
.
.
Sends last character of block 5.
				Echoes last character of block 5.
				Sends ACK.
Sends 1. character of block 6.
				Echoes 1. character of block 6.
.
.
Sends last character of block 6.
				Echoes last character of block 6.
				Sends ACK.
Sends 1. character of block 7.
				Echoes 1. character of block 7.
.
.
Sends last character of block 7.
				Echoes last character of block 7.
				Sends ACK.
Sends only character of block 8.
				Echoes only character of block 8.
				Goes back to normal display.



3.	DESCRIPTION OF DATA


Yaesu FT-50 data as downloaded with program `ft50get'.

Block 1: ??
10 bytes

Block 2: ??
16 bytes

Block 3: Channel flags
112 bytes
One byte per channel slot:
bit	meaning
0	Used? (1=yes, 0=no)
1	Masked? (1=no, 0=yes)
2	Skip? (1=yes, 0=no)

Block 4: VHF home
16 bytes
(see block 6)

Block 5: UHF home
16 bytes
(see block 6)

Block 6: Channel data
1776 bytes
111 channel slots, 16 bytes each
Channel order: 1,...,99,L1,U1,L2,U2,L3,U3,L4,U4,L5,U5,??

If channel is flagged unused, channel data may be ff...ff (all bits 1)

Byte	bit	Meaning
0	7	Channel name in use? (1=yes, 0=no)
	6-3	?? (Seems to be always off)
	2-1	?? (Sometimes both on)
	0	?? (Seems to be always off)
1	7-4	Power (0x0=L1, 0x2=L2, 0x4=L3, 0x8=H)
	3-0	Channel step (0x6=50, 0x5=25, 0x4=20, 0x3=15, 0x2=12.5,
		0x1=10, 0=5)
2	7-5	DTMF code memory (0=C, 0x1=P, 0x2=1, 0x3=2, 0x4=3, 0x5=4,
		0x6=5, 0x7=6)
		bit 4 unused ??
	3-2	DTMF paging (0=no, 1=page, 2=t.page, 3=code)
	1-0	Repeater shift (0=sim, 1=-shift, 2=+shift, 3=+-)
3	7-6	CTCSS/DCS (0=no, 1=E, 2=ED, 3=DCS)
	5-0	CTCSS tone (0=67.0,...,38=250.3)
		Tones starting from 0:
		67.0, 69.3, 71.9, 74.4, 77.0, 79.7, 82.5, 85.4,
		88.5, 91.5, 94.8, 97.4, 100.0, 103.5, 107.2, 110.9,
		114.8, 118.8, 123.0, 127.3, 131.8, 136.5, 141.3, 146.2,
		151.4, 156.7, 162.2, 167.9, 173.8, 179.9, 186.2, 192.8,
		203.5, 210.7, 218.1, 225.7, 233.6, 241.8, 250.3
4	7-0	DCS tone (0=023,...,103=754)
		Tones starting from 0:
		23, 25, 26, 31, 32, 36, 43, 47,
		51, 53, 54, 65, 71, 72, 73, 74,
		114, 115, 116, 122, 125, 131, 132, 134,
		143, 145, 152, 155, 156, 162, 165, 172,
		174, 205, 212, 223, 225, 226, 243, 244,
		245, 246, 251, 252, 255, 261, 263, 265,
		266, 271, 274, 306, 311, 315, 325, 331,
		332, 343, 346, 351, 356, 364, 365, 371,
		411, 412, 413, 423, 431, 432, 445, 446,
		452, 454, 455, 462, 464, 465, 466, 503,
		506, 516, 523, 526, 532, 546, 565, 606,
		612, 624, 627, 631, 632, 654, 662, 664,
		703, 712, 723, 731, 732, 734, 743, 754
		bit 7 unused ??
5	7-0	Mode (0=NFM, 0x1=AM, 0x2=WFM)
		bits 7-2 unused ??
6-8	7-0	RX freq (BCD, 6 digits)
9-11	7-0	TX offset (-shift, +shift) OR TX freq (+-)
12-15	7-0	Channel name, if 0/7==1
		if no name, contains 4 x 0x24

Block 7: Various parameters, VFOs, DTMF, autodial, unknown data
1776 bytes

2-113: Channel flags duplicated

116-275: 10 VFOs (A145, A220, A380, A430, A800, B145, ... , B800)
10 slots 16 bytes each, same format as in channel data (see b6).

309-324: ID string (callsign) for CW id
Stored in same format than channel texts, unused spaces filled with 0xff.

330-525: 9 autodial memories (1-8: 20 bytes, 9: 36 bytes)
Every autodial memory starts with 4 bytes:
	0x0d 0x16 0x24 0x0<number>
Unexistent digits are flagged with 0xff.
DTMF characters: 0-D = 0x0<char>, * = 0x0e, # = 0x0f

526-542: 8 DTMF memories: C, P, 1, 2, 3, 4, 5, 6
8 slots, 2 bytes each + 1 flag byte.
Bit from flag byte indicates if decoder is enabled on this memory (_).
Flag bits: bit7 = C, bit6 = P, ... , bit0 = 6
DTMF data is stored on BCD format.

If not otherwise mentioned, alternatives in following data are started with
item 0 and increment by 1.

Byte	Meaning

Band edges are probably updated by radio itself each time a band is changed.

276-278	Lower edge of current band
280-282	Upper edge of current band

301	Sub display: off, on, dc

303	Automatic power off: off, 0.5h, 1h, 3h, 5h, 8h
304	Time-out timer: off, 1m, 2.5m, 5m, 10m
305	Lock: kl, dl, kl+dl, pl, kl+pl, dl+pl, kl+dl+pl
306	Receiver saver: off, 0.2, 0.3, 0.5, 1.0, 2.0
307	Lamp illumination: 5sec, key, tgl
308	Bell: off, 1, 3, 5, 8, rpt

326	ARTS mode: off, rx, tx, trx
327	ARTS beep: off, rang, all

543	Paging speed: 50ms, 100ms
544	Paging delay: 250ms, 450ms, 750ms, 1000ms
545	Paging bell: off, 1, 3, 5, 8, rpt
546	Paging answerback: off, ans, for

'Current' values are what is shown on display.  VFO data (above) is updated
when VFO is changed or memory mode is entered, etc.

1660	Current VFO A (0..4, 0=145, 1=220, 2=380, 3=430, 4=800)
1661	Current VFO B (0..4, 0=145, 1=220, 2=380, 3=430, 4=800)

Bytes 1663-1671 are stored like channel data, except that individual data
items are stored in individual bytes (e.g. several data items are not packed
in same byte).

1663	Current power
1664	Current channel step
1665	Current code memory
1666	Current paging mode
1667	Current repeater shift
1668	Current selective calling mode
1669	Current CTCSS tone
1670	Current DCS tone
1671	Current mode
1672-1674	Current frequency
1676-1678	Current offset

1686	Squelch: 0,1,...,15
1687	W-FM squelch: 0,1,...,15

Bit values are 0=off, 1=on unless otherwise mentioned

Byte	bit	Meaning

1688	7	RPTL, repeater input tracking
	6	AMOD, auto mode
	5	SCNL, scan lamp
	4	RESM, scan resume mode 0=5sec, 1=carr
	3	ARS, automatic repeater shift
	2	BEEP, keypad beep
	1	LCK, lock
	0	Unknown??
1689	7	LGT,
	6	PAGE/AMSG,
	5	Unknown??
	4	BCLO, Busy channel lock out
	3-2	Unknown??
	1	CWID,
	0	TSAV, TX save
1690	7-4	Unknown??
	3	ARTS/SPED: 0=15s, 1=25s
	2	Unknown??
	1	RVHM: 0=home, 1=rev
	0	MON: 0=mon, 1=tcal

Meaning of unmentioned data is unknown.  Some of it seems to be changing even
if no config changes to radio are made.

Block 8: Checksum over all previous data
1 byte
