Programming a Kenwood TK-3101 on a too quick machine
I have managed to get the typical Kenwood software KPG54D and KPG48D for their TK-3101 transceiver on one of the fastest Apple MacBook Pro‘s currently on the market, running OSX Lion, using VMWare Fusion, Windows XP and DOSBox. This might also work on any other virtualization environment, such as Parallels or VirtualBox, and even natively on other Windows versions.
For years now, I have had a Kenwood TK-3101 mobile radio which is tuned in to PMR446 frequencies. PMR446 is in Europe a way to use radio communication without the need for a license. If the weather is not to crazy and you are in the open, you should be able to receive PMR46-transmissions from up to 5 kilometer away.
I did not have much use for the radio until I started motorcycling. Riding along, PMR’s distance of a few kilometer apart is more interesting than the few meters you get out of bluetooth of the few dozens of meters out of a wireless helmet kit. Nice to talk to the person behind you on the buddy seat, but not enough to talk to a fellow rider riding in front or behind you.
My brother started riding too and I bought/won a few Kenwood TK-3101’s from eBay, intended to using them while riding. I also bought an aftermarket USB serial cable which the seller claimed would work with TK-3101’s.
Now, everyone on the internet claims 2 things:
- You need a slow machine to run KPG48D or KPG54D, since newer, faster machines are too quick for the radio to respond in the same speed the software on your fast computer is expecting data;
- KPG48D and KPG54D, both native DOS applications, need a pure connection to the serial COM port. USB won’t cut it.
Well, it turns out the above is only partial true.
VMWare Fusion, Windows XP
For starters, I needed something that could understand DOS. I had already VMWare Fusion installed, and set up a 32bit Windows XP Professional installation. Both come right out of the box, so you don’t have to modify anything here.
The USB to serial adapter I have turns out to be the popular Prolific PL-2030 USB to serial adapter, but in my case it ends in a mini- and microjack connector for Kenwood. Install the driver on the virtual Windows XP, connect the USB cable to your Mac and VMWare Fusion asks you to which machine it should connect the USB adapter. The obvious choice for us is the virtualized Windows XP.
The Kenwood software KPG48D and KPG54D only know of COM1 and COM2 so you need to make sure your USB serial adapter impersonates one of these two ports. Dive into the Windows XP Device Manager to disable one of two COM ports, and set the COM port your USB adapter impersonates to the COM port you just disabled.
The Prolific port will be set at 9500 bps, and this will work.
After that, install DOXBox. It is a DOS emulator, which looks just like your regular DOS window, but it isn’t. For starters, it allows you to slow any program ran in it down on the go.
After installation, you should look in your Start menu to change the Options of DOSBox. This link will open the configuration file of DOSBox. Scroll down to [serial] and make sure that the COM-port you are going to use is set to ‘direct’.
In my case, I was using COM2 so modified the following line:
This instructs DOSBox to let any communication from or to the COM2 port in the DOSBox emulator straight to the COM2 port of Windows XP, which in our case is through a virtualized and physical USB port.
Making it all work
Right. Your virtual machine is in place, your COM-port defined and DOSBox installed.
Make sure you have the KPG54D and KPG48D software set up on a easy to reach folder on your Windows XP virtual machine, preferably something like C:KENWOOD. The reason is that when you start DOSBox, it does not know anything about your C:-drive. You need to mount the directory you wish to use to the emulated C:-drive in the emulator.
mount c: c:kenwood
Once you have done this, DOSBox will tell you drive C is mounted to the specified directory. Change to the C: drive and start up KPG54D.
KPG54D will show up. Use the Alt key to activate the menu, and use the arrow keys to navigate to Setup where you make sure you have selected the right COM port.
Now we can slow down the emulated version of DOS. Type in Ctrl+F11 to decrease and Ctrl+F12 to increase the Cpu speed cycles which are displayed in the Title bar of DOSBox. Once you reach about 190 cycles, you can navigate to the Program menu, hook up your Kenwood TK-3101, turn it on and read all channel information from your radio.
UPDATED: Even at 3000 cycles, I managed to read all data.
If for some reason you still get read errors, try to change the CPU cycles or COM port settings in Windows. It should work out of the box at 9500 bps and 3000 cpu cycles, but sometimes you need to power cycle the transceiver and change the speed of COM port or emulated DOS box to get it to work.
It’s probably possible to skip VMWare Fusion and Windows XP with the OSX version of DOSBox, but I will still have to look into that. At least I found a way that allows me to use 1999 technology with 2011 fastest consumer hardware.