
Yaesu VX-1 data description

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


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

Please read file LICENCE.

Use this information with your own risk !


1.	PROTOCOL


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


Download (radio -> computer)

Computer			Radio

Start program `vx1get'.
				Press DWN while in CLONE mode.
				`C-OUT' appears to display.
				Sends block 1: total of 4818 bytes
				`CLONE' appears to display.


Upload (computer -> radio)

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

Computer			Radio

				Press UP while in CLONE mode.
				`C-IN' appears to display.

Start program `vx1send'.

Sends 1. character of block 1.
				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 0x21.
				Goes back to normal display.



2.	DESCRIPTION OF DATA

Yaesu VX-1 data as downloaded with program `vx1get'.

Block 1:
4818 bytes

Frequencies are stored BCD coded in 3 bytes, but bytes are reversed.
Eg. frequency 123450 KHz would encode as 0x50 0x34 0x12

Names are 6 bytes.  They are stored with the following character generator.
Empty name is signalled by filling these bytes with 0x3f.

Bands are ordered as follows (BCBAND is not part of these):
FM, AIR, V-HAM, VHF-TV, ACT1, U-HAM, UHF-TV, ACT 2

Channel steps:
5 kHz - 0, 10 - 1, 12.5 - 2, 15 - 3, 20 - 4, 25 - 5, 50 - 6, 100 - 7

Mode: fm-n - 0, fm-w - 1, am - 2

Repeater shift: SI - 0, -R - 1, +R - 2, +- - 3

Selcal modes: none - 0x0, E - 0x1, E+D - 0x2, DCS - 0x3

Power out: low - 0, high - 1

Name flag: freq - 0, alpha - 1

Skip: no - 0, skip - 1

Clock shift: off - 0, on - 1

8-byte memory slot (BC band):

	Offset	Meaning
	0	Frequency (500 kHz - 0x00, ... , 1.7 MHz - 0xfe)
	1	Unknown (always 0x40 ???)
	2-7	Name

12-byte memory slot (CG2 memories):

	Offset	Meaning
	0-2	RX Freq
	3	Unknown
	4	Flags
		Bit	Meaning
		7	Skip
		6	Name flag
		5-4	Mode
		3-2	Repeater shift
		1-0	Selcal mode
	5	Flags
		Bit	Meaning
		7-5	Unknown
		4	Power out
		3	Clock shift
		2-0	Channel step
	6-11	Name

16-byte memory slot (others):

	Offset	Meaning
	0-2	RX freq
	3-5	Offset/TX freq
	6	Flags
		Bit	Meaning
		7	Skip
		6	Name flag
		5-4	Mode
		3-2	Repeater shift
		1-0	Selcal mode
	7	Flags
		Bit	Meaning
		7-5	Unknown
		4	Power out
		3	Clock shift
		2-0	Channel step
	8	Flags
		Bit	Meaning
		7-6	Unknown
		5-0	CTCSS tone (67.0 - 0x00, ... , 250.3 - 0x26)
	9	DCS tone (023 - 0x00, ... , 754 - 0x67)
	10-15	Name

Offset		Meaning

0x0000 - 0x0001	Unknown data (2 bytes)

0x0002		Flags

	Bit	Meaning

	7-4	Unknown
	3-0	Band (BCBAND - 0x00 , ... , ACT-2 - 0x08)

0x0003 - 0x0006	Unknown data (4 bytes)

0x0007		Flags
	Bit	Meaning
	7	Unknown
	6	Busy/tx led: 0 - off, 1 - on
	5	Busy ch lock out: 0 - off, 1 - on
	4	Keypad beeper: 0 - off, 1 - on
	3	Scan lamp: 0 - off, 1 - on
	2	Scan resume: 0 - 5sec, 1 - carr
	1	Auto mode: manual - 0, auto - 1
	0	ARS: off - 0, on - 1

0x0008		Flags
	Bit	Meaning
	7-6	Lamp: key - 0, 5sec - 1, tgl - 2
	5-3	APO: off - 0, 0.5h, 1h, 3h, 5h, 8h - 5
	2-0	Receive battery saver: 0 - off, 0.2, 0.3, 0.5, 1, 2sec - 5

0x0009		Flags
	Bit	Meaning
	7	Lk (lock): off - 0, on - 1
	6-4	Lock: key - 0, dial, k+d, ptt, k+p, d+p, all - 6
	3	Unknown
	2-0	Bell: off - 0, 1 - 1, 3 - 2, 5 - 3, 8 - 4, rpeat - 5

0x000a		Flags
	Bit	Meaning
	7-6	ARTS Beep: 0 - off, 1 - rang, 2 - all
	5	SMT MD: single - 0, conti - 1
	4-2	TOT: off - 0, 1min - 1, 2min - 2, 5min - 3, 10min - 4
	1	Dial's function: dial - 0, volsql - 1
	0	Monitor/t-call: moni - 0, tcall - 1

0x000b		Flags
	Bit	Meaning
	7-3	Unknown
	2	Channel Group: CG2 - 0, CG1 - 1
	1	CWID: off - 0, on - 1
	0	Unknown

0x000c - 0x000d	Unknown data (2 bytes)

0x000e		Flags
	Bit	Meaning
	7-4	Unknown
	3-0	DTMF memory: dtmf-0 - 0, ... , dtmf-f - 7, manu - 8

0x000f		VOL (mute - 0x00, 1 - 0x01, ... , 31 - 0x1f)
0x0010		SQL (aut - 0x00, opn - 0x01, 1 - 0x02, ... , 10 - 0x0b)

0x0011 - 0x0020	Current settings (16 bytes)

	One slot

0x0021 - 0x009f	Unknown data (127 bytes)

0x00a0		Second checksum (1 byte)

	Cheksum is made by adding all previous bytes to unsigned char with
	overflow and adding the result to 0x10 .

0x00a1 - 0x00f0	Unknown data (80 bytes)

0x00f1 - 0x02e0	Smart Search memories (496 bytes = 31 slots of 16 bytes each)

	Slot for each memory (31)

	-15, -14, ... , 14, 15

0x02e1 - 0x02f0	Unknown data

0x02f1 - 0x02f9	Call sign, CWID (9 bytes)

	Terminated with 0x3d, excess characters filled with 0x00 .

0x02fa - 0x0301	Unknown data

0x0302		Band duplicated from 0x0002 ???

0x0303 - 0x0306	Unknown data (4 bytes)

0x0307 - 0x0308	Flags duplicated from 0x0007 - 0x0008 ??? (2 bytes)

0x0308 - 0x030a	Unknown data (3 bytes)

0x030a - 0x030b	Flags duplicated from 0x000a - 0x000b ??? (2 bytes)

0x030c - 0x030d	Unknown data (2 bytes)

0x030e		Flags duplicated from 0x000e ???
0x030f		VOL duplicated from 0x000f ???
0x0310		SQL duplicated from 0x0010 ???

0x0311 - 0x0318	BC band VFO (8 bytes)

0x0319 - 0x0320	Unknown data (8 bytes)

0x0321 - 0x03a0	VFOs (128 bytes = 8 slots of 16 bytes each)

	Slot for each band (8)

0x03a1		Priority channel (channel number + 7)

0x03a2 - 0x03d0	Unknown data (47 bytes)

0x03d1 - 0x0bc8	Channel data, CG2 (2040 bytes = 170 slots of 12 bytes each)

	Homes for all bands (8)

	Memories 1-142 (142)

	1L, 1U, 2L, 2U, ... , 10L, 10U (20)

0x0bc9 - 0x0bd0	Unknown data (8 bytes)

0x0bd1 - 0x10d0	Channel data, CG1 (1280 bytes = 80 slots of 16 bytes each)

	Homes for all bands (8)

	Memories 1-52 (52)

	1L, 1U, 2L, 2U, ... , 10L, 10U (20)

0x10d1 - 0x11d0	Channel/band flags (256 bytes = 8 slots of 32 bytes each)

	One slot for all bands (8)

	Slot contents:

	Offset	Meaning
	0	Band byte, CG2 (FM - 0x00, AIR - 0x01, V-HAM - 0x02,
		VHF-TV - 0x04, ... , ACT-2 - 0x80), e.g. band bit
	1	Channel bit flags, CG2 1-8 CG2 (1 - bit0, 2 - bit1, ...)
	2	Channel bit flags, CG2 9-16
	3-21	Channel bit flags, CG2
	22	Band byte, CG1
	23-31	Channel bit flags, CG1

0x11d1 - 0x11f0	Unknown data (32 bytes)

0x11f1 - 0x1240	BC band data (80 bytes = 10 slots of 8 bytes each)

	One slot for each BC memory (H, 1, ... , 9)

0x1241 - 0x1250 Unknown data (16 bytes)

0x1251 - 0x12d0 DTMF autodialer (128 bytes = 8 slots of 16 bytes each)

	DTMF 1 - DTMF 8 (8)

	Every autodialer is terminated with 0x3d, and padded with 0x00:s if
	necessary.  Empty autodialer then is 0x3d and 15 0x00:s.

	Mapping goes as follows:

	0 - 0x00, 1 - 0x01, ... , D - 0x0d, *(E) - 0x0e, #(F) - 0x0f, - - 0x28
	

0x12d1		Checksum (1 byte)

	Cheksum is made by adding all other bytes to unsigned char with
	overflow and subtracting the result from 0xf0 .



