The Kenwood TK-790

The Kenwood TK-x90 series of radios are discontinued land-mobile radios used extensively in public safety (police/fire) in the US and which are currently available used for under $100. The VHF models can be converted to work on the 2m band, making them an inexpensive option for a dedicated APRS radio. They are also capable of 9600 baud FSK.

This article is about repurposing Kenwood TK-790 land-mobile radios for amateur packet radio. It is geared towards radio amateurs that have access to a 3D printer. In this article we will discuss the benefits of this radio as well its challenges. We will provide an overview of the various models that are available and point out which ones are suitable for ham use. We will then go into the process of powering on the radio, connecting a speaker, programming it, connecting it to a TNC, configuring the hardware for 9600 baud use, and building custom programmers and microphones with the aid of a 3D printer.

Making these work isn’t for everyone. You have to be a little technically adventurous. But if you want a mil-spec grade mobile packet radio for very little money, this could be for you.

Read more here:

We may also have some Kenwood TK-790s for sale (North America only) at our online store:


The NucleoTNC is a breadboard implementation of our commercial product, the Mobilinkd TNC3, designed to encourage experimentation and learning in amateur radio, electronics, digital signal processing and software engineering.

The TNC can be built with about $25 in parts. Build instructions, schematics in KiCAD format, and source code are available from our public GitHub repo.

Go here to see how to make your own TNC for $25:

Meet the NucleoTNC

If you make this project, we would love to see photos of your build on the Mobilinkd group:

Update August, 2020: We have recently made available both a PCB and an enclosure for the NucleoTNC. There are just a few small part changes to make the project work better on a PCB. But you can take almost all of the parts from the breadboard and solder them onto a PCB and give your project a more permanent home.


Interactive BOM

Schematic for Rev C of PCB

Purchase PCBs and Enclosures

Just released in early 2021 is experimental support for 9600 baud G3RUH/GFSK and M17 Project streaming and packet modes. This firmware release is meant for those wanting to contribute the development of the M17 protocol and need a baseband implementation to experiment with.

KT-8900D Review Follow-up #1

This is a follow up to A Brief Review of the KT-8900D

Testing Turn-around Time

One of the key metrics when evaluating a radio for packet use is turn-around time.  This is the time it takes for the radio to switch from transmit to receive.  The turn-around time for a packet radio needs to be fast in order to hear responses from the other packet stations.  Most packet stations and digipeaters will reply within a few tens to a few hundred milliseconds from the time it received the packet.  When a radio takes more than 50-100ms to turn around, it will be difficult to catch the start of the packet,  sync with the preamble and decode.

Turn-around time has not been an issue for ham radios for quite some time.  The turn-around time for most modern ham rigs is very fast, typically well under 100ms.  For reference, the turn-around time for the Kenwood TM-V71A is about 20ms.

Turn-around time has only become an issue again recently with the advent of RDA1846-based radios.

Test Setup

To test turn-around time, the KT-8900D was connected to a dummy load and to a Jetstream power supply.  It was powered on and set to low power.  STE, RP-STE and RPT-DL were turned off.  The unit’s microphone was plugged into its RJ-45 socket.

To perform the test I set up a test harness on a breadboard.  I plugged one end of a cable into the radio’s rear 3.5mm speaker/mic connector and the other end into a jack mounted on the breadboard.  I connected the sleeve of the jack to ground and connected the scope’s channel 1 to the audio output and channel 2 to the PTT line.

The PTT line sits at -3.3V and is grounded to trigger PTT.  I set the scope to trigger on the downward edge of the PTT signal (CH2).  I triggered PTT by manually shorting the PTT signal to ground and by using the hand-held mic.  The hand-held mic gave the best results, with no bounce and lower turn-around time.

I steadily increased the time base on the oscilloscope starting from 1ms until I was able to capture the start of the audio signal.

The Results

So here is the horrible truth about the KT-8900D turn-around time.

700ms turnaround time.  This radio isn’t going to just miss the start of a packet — it’s going to miss the entire thing.  This is bad.  Really bad.

This is worse than the Baofeng UV-5R, which has a measured turn-around time of 300ms.

This radio is wholly unsuitable for packet work, including APRS.

Connection Tracking Hack

This page provides instructions on how to modify the Mobilinkd TNC1 to allow it to track the Bluetooth connection state and to configure the TNC to drop packets when Bluetooth is disconnected.  This is necessary when using the TNC as a digipeater and iGate.

Please note: all TNCs that we currently sell include this feature.  This page exists to help those that purchased their TNC before May 2014.

The Challenge

The Mobilinkd TNC from the factory queues packets indefinitely. That’s great when you walk away from the TNC with your smartphone in your pocket, and then come back a few minutes later. All the packets that were received by the radio and decoded by the TNC get queued in the Bluetooth module and then downloaded to your phone when you return. The only downside is that the packet times are a bit off.

Georg Lukas, DO1GL, the author of APRSdroid, mentioned that, in order to use the TNC as a digipeater, it is important that old packets are discarded. Otherwise it is possible that old packets are digipeated and iGated. This is bad behavior on APRS and affects everyone in range of the radio and possibly the world if acting as an iGate.

It has certainly happened to me while performing routine station maintenance on WX9O-4. I forgot to turn off the TNC while doing an hour of maintenance. When I brought up the APRS system, to my chagrin, a bunch of outdated packets were digipeated and iGated.

How do we make this work?  This wasn’t a consideration when the TNC was designed.

The Solution

It turns out the Bluetooth module toggles one of its pins as the Bluetooth connection is established and dropped. But this pin is not connected to the TNC’s MCU (microcontroller). To make this work, we are going to need to break out the soldering iron!

The BT module uses PIO9 to indicate connection status.  It normally takes the pin high when connected and low when disconnected.

The TNC has an exposed ISP (in-system programming) pad that makes it possible to connect to three otherwise unused I/O pins on the MCU (MOSI, MISO and SCK, or PB3, PB4 and PB5).  We just need to connect the PIO9 pin from the BT module to one of the pads.

After a bit of work on the TNC firmware and the Bluetooth module configuration, I found that it is possible to configure the pin on the MCU to read high when not connected and to configure the BT module to hold its pin high when the BT link is disconnected and set it low when connected.  In this way, the only way the pin on the MCU goes low is when both connected to the BT module and the BT link is established.  That allows the TNC to easily detect that it has been modified.

The Upgrade!

To make this work,a few things need to happen:

  1. A 4.7kΩ resistor needs to be soldered be soldered between the PIO9 pin on the Bluetooth module and the SCK pad on the ISP connector.
  2. The TNC firmware needs to be updated to a version that supports connection tracking.
  3. The Connection Tracking option in the firmware needs to be enabled.ConnTrackBoardConTrackFirmwareAnnotated.jpg


You will need a Mobilinkd TNC of course.


  1. 4.7kΩ resistor (1/8 watt)
  2. 2.5mm (.098″) shrink tubing cut to 37mm
  3. TNC shrink wrap


  1. X-acto knife
  2. Soldering iron with temperature control and a very fine tip
  3. Hot air gun (or a hot-air rework station)
  4. Solder braid
  5. Fine solder (.5mm/.020″) or solder paste
  6. Helping hands soldering stand
  7. Diagonal cutter
  8. Needle-nose pliers
  9. Electrical Tape
  10. ESD mat and wrist strap

Please do not attempt this modification if you do not have a good, temperature-controlled soldering iron.


Be very careful of ESD (electro-static discharge).  The TNC can be damaged if proper care is not taken.  Perform the work on and ESD mat and use and grounded wrist strap.


Start by upgrading the firmware to build 464 or later. (A more detailed post on upgrading the TNC firmware will follow.)



Start by removing the plastic wrap from the TNC. Be very careful not to cut yourself or the battery.


Use a sharp X-acto knife.  Start with the hole by the slide switch.  Work the blade toward the near end first.  Then work the blade slowly and carefully towards the far end.  A sharp blade should cut through the plastic fairly easily.  Angle the blade towards the board and away from the battery.


Peel the plastic away from the TNC and discard it.


Unplug the battery from the TNC.  Pull on the plug or pull on the wires near the plug.  Do not pull on the battery.  Put the battery aside.



You will be soldering a 4.7kΩ resistor from PIO9 on the Bluetooth module to the SCK pad on the ISP pad.  The resistor must be sheathed in shrink tubing to insulate it from the circuit board.  Both ends of the resistor will be soldered from the top of the board.


Install a fine tip on your soldering iron and set the temperature to 315°C (600°F).

The amount of solder on the pads connecting the Bluetooth module varies.  You may wish to remove some solder from the PIO9 pad before soldering the resistor to the pad.  Use the solder braid to remove any excess solder on the pad.

Put a 2mm bend at one end of the resistor to form an “L”.  Use the helping hands to hold the resistor on the PIO9 pad.  This is the third pad from the end by the antenna, near the outer edge of the TNC circuit board.  (Refer to the diagram above if unclear which pad to use.)


Solder the resistor to the pad.


Slide the shrink tubing over the resistor.


Bend the resistor over the circuit board and slide the free resistor lead through the SCK hole.


Solder the resistor to the hole from the top.  Do not solder the resistor from the bottom of the circuit board.  And do not use so much solder that it flows through to the other side of the through-hole. Doing either may later damage the battery.


Cut the lead flush to the bottom of the circuit board. It is important that the lead does not protrude through the hole.


Cover the bottom of the pad with electrical tape to help protect the battery when reassembled.  Press down firmly.


If the resistor lead pokes through the tape, the resistor lead is too long.  Do not reassemble the unit in this condition.  Remove the tape and cut the resistor lead flush and try again.


Set your heat gun to 155°C (310°F).  Shrink the tubing.


Attach the battery.  Wait at least 5 seconds then power on the device.

Start the Mobilinkd Configuration program and connect to the TNC.  You should see the “Conn Track” button active.  If it is not, verify that you have the latest version of the firmware installed and the lastest version of the configuration utility.  (The Android verions 0.8.3 is known to work.)

Enable “Conn Track” on the TNC and then exit the configuration program.  You should now find that the TNC receives packets only when the Bluetooth link is established.


The best option for re-assembly is to print or purchase a case!

The Mobilinkd TNC1 case is now a Thing on Thingiverse!  If you have access to a 3D printer, you can print your very own.  If not, we sell freshly printed cases in your choice of Black or White in the store: