Saturday, February 16, 2013

Import TravelPlus (TPE) files into the Kenwood TS-2000

So it is probably pretty obvious that I prefer Kenwood radios.  I have made a lot of changes here in the shack, one of the coolest being that I have added some new radios!  As you probably guessed by the title of this post, one of those radios is a Kenwood TS-2000!

I also have another new radio, an absolutely awesome Kenwood TS-590S that I use for HF, so the TS-2000's main role is VHF/UHF and Satellite work.  I treat the higher bands a little differently than HF in that I use a lot of memories for local repeaters, FM calling, SSB calling, etc.  This lets me do memory scans and monitor several repeaters and simplex at the same time.

The ARRL has a great (well, okay, workable) software package called Travel Plus that tracks repeater frequencies, etc.  While I don't use the software because I feel that it is too expensive for the 1990's style programming, it does serve to help the hobby by introducing a file format standard that several of the other providers of this information have picked up and used.  I like RFinder and use it for finding repeaters in my area.  Don't get me wrong, all of these services have issues, but I think that RFinder is the best of a sad lot.  In their defense, it has got to be like herding cats trying to get hams to use the same standard for data input when adding their repeaters to the services.

Anyhow, I wanted to import this database of repeaters into my TS-2000, only to sadly find that the MCP-2000 program offered by Kenwood doesn't allow you to import anything other than files in its own format.  Well that sucked, to put it mildly.  I was all happy to find this MCP 2000 program to begin with.  Then to have those hopes dashed...  Enter this XKCD comic:


This comic accurately describes how I feel.  Thank God I sort-of know PERL.  So let me break down how I fixed this problem, and maybe save you the trouble.

First off.  Kenwood's File Format.  Kenwood likes to use some random obscure string of numbers and letters to represent information like input frequency and offset and what mode you are using and whether or not you are using positive or negative shifts.

It looks like this:

000000147120000402081300001000600000000N4LGH

Or, a whole bunch of them:


000000147120000402081300001000600000000N4LGH
000100442450000402081300001005000000000KG4RPH
000200444950000402081900001005000000000WC4PEM
000300444900000402081300001005000000000KC4VBZ
000400444725000402081300001005000000000G4ZPZ
000500444400000402081300001005000000000W4JAZ
000600444675000402081300001005000000000WB4OEZ
000700443050000402081400001005000000000W9TT
000800443750000402081300001005000000000K4KCJ
000900443550000402081300001005000000000KD4MBN
001000443975000402081300001005000000000AG4AN
001100444100000402081800001005000000000AG4AN
001200444450000402081300001005000000000K4SLB
001300443900000402080600001005000000000N4JMY
001400444300000402081900001005000000000WP3BC
001500444550000402081300001005000000000N1KDO
001600444775000402080300001005000000000N4KEG
001700443700000402081300001005000000000KD4JYD
001800444500000402081300001005000000000KC4VBZ
001900444425000402081400001005000000000W4MLB
002000443925000402081300001005000000000K4AJM
002100443325000402081300001005000000000WD4IXD
002200442000000402081300001005000000000WD4WDW
002300442075000402081300001005000000000KC4SGG
002400442100000402081300001005000000000KE4TTE
002500442175000402081300001005000000000WR4BS

Isn't that easy to read?  Give you a warm fuzzy feeling?  Yeah, right, me neither...

So here is a break-down of what that awesome string means:

000000147120000402081300001000600000000N4LGH

MEM - First four characters are the memory position that will be used in your radio:


0000


FREQ - The next string is the frequency, padded with leading and trailing zeros, and no dot

00147120000


MODE - This next character is the mode (FM, AM, SSB, etc)

4


PL - Then the PL tone type (Tone, CTCSS, DCS)

02


TONE - Now the tone itself, as referenced in a table in the program

08


CTCSS - Then the CTCSS, also as referenced in a table in the program

13


DCS - After that is the DCS, you guessed it, it is also as referenced in a table in the program

000


REV - Then whether or not to create a reverse entry also:

0


SHIFT - Now what kind of shift to use (positive, negative, or simplex)

1


??? - Not sure about this one, it may be an additional leading zero for the frequency offset

0


OFFSET - And now the offset frequency, this represents 600kHz with a lot of leading and trailing zeros

0060000000


MB - Now it would like to know what memory bank to store this memory item in

0


CALL - And finally, the call of the repeater, or whatever you want displayed up to six characters.

N4LGH




Well now, was that fun boys and girls?  I know that I had a blast figuring it out.  Sorry if I'm snarky, that is what dredging up long unused PERL skills will do to a person...

So, how about some information on some of those more cryptic fields above?  Here you go:


Mode

  • 1 LSB
  • 2 USB
  • 3 CW
  • 4 FM
  • 5 AM
  • 6 FSK
  • 7 CW-R
  • 8 FSK-R

PL

  • 1 Tone
  • 2 CTCSS
  • 3 DCS
  • 13 LOCKOUT

Tone, CTCSS, DCS

  • Correspond to position in dropdown in MCP 2000

Mem

  • Group number (0-9)

Shift

  • 0 Simplex
  • 1 Plus Shift
  • 2 Minus Shift


So there you have a quick run down on the file format used for the TS-2000's memory manager.

Using that information, I wrote a PERL script to take a TPE file, parse it out, and output that unGodly block of numbers and text that I was able to paste into the file that MCP-2000 uses for import into the radio.  I'm not sure how to post such a file to this blog, but email me if you would like a copy and I will happily share it with you!

I hope that this has been as much fun for you to read as it has been for me to blearily type...  ;-)

73,

Richard, KK4JDO