Kenwood TH-D74 with Upward-Facing Display and Yaesu FT-817ND Chest Rig

Although I really like the Kenwood TH-D74 for its long list of features, being an HT, the user interface is not well suited to satellite operations. In particular, for linear satellites where I may need to continuously vary the tuning throughout the pass, it is tough to come up with a good mounting scheme on my chest rig so that the tuning knob is accessible and the screen is viewable. To try to solve this problem, I thought I could somehow build an upward facing display so I can mount the radio vertically and have access to the knobs and a good display. The photo above shows the final product for this project which is built around a Raspberry Pi Zero W and the USB interface the TH-D74 supports.

One of the early complaints I heard about this radio was its lack of control over USB outside of the official Kenwood application. While it works fine with Kenwood’s program, it doesn’t let you interface it with other pieces of software like standard CAT control on most ham radios because they command structure is not published by Kenwood. A few hams worked around this and figured out the commands and posted them online. This makes it very easy to control the radio, although there are some limitations such as memory channel names not being sent as a part of this interface (I found a way around this which I cover later in the post).

To make the display, I took a Raspberry Pi Zero W and 16×2 LCD I have laying around, and started writing a Python script to get everything talking. I bought a few more parts and stuck everything in a plastic electrical enclosure. Using some zip ties, I mounted a USB battery on the side to power it while in the field. I then created a scheme to mount it on front of the MOLLE pouch that holds my FT-817 in my chest rig using some spare 1″ webbing and some nuts and bolts. The TH-D74 sits comfortably next to it hooked by its belt clip.

The operation is fairly simple: Connect the D74 to the USB OTG cable, connect the USB OTG cable to the micro USB port on the enclosure and the USB battery, turn on the D74, and turn on the USB battery pack. The Pi will boot and start running the program automatically. The display will first show the approximately battery status of the D74 before showing the current frequency with mode (LSB, USB, AM, FM, NFM, WFM, DV or DR, CW, or R-CW) or memory name (depending on radio mode) as well as the UTC date and time. The program polls the radio ten times per second for any updates, so there should be little lag between a change on the radio and the display showing it. Once everything is running, simply use the tuning knob on the D74 to change frequency or scroll through memory channels. To change VFO/memory mode or the modulation mode, simply use the regular front-facing buttons on the D74 (I don’t anticipate making these changes during the pass, so it’s fine to do this before donning the chest rig). To shut everything down, just disconnect or turn off the D74 and the program will automatically shut down the Pi. No buttons or switches required! The power consumption is very low – less than 200 mA – so even a 18650-based USB battery can run it for several hours.

This project is largely made of parts I had on hand, so you could certainly use a different enclosure and clean up some of the wiring and other hardware into a much more polished product.

Here is a list of the main electrical parts needed to get this running:

I’ll go through the high-level steps to get this running. To keep this brief, I’m assuming you’re familiar with basic Linux commands and installing and running programs in Raspbian. Here are the rough directions of how to get the software up and running:

  1. Download Raspbian (I chose the lightest version) and flash your micro SD card. Power up the Raspberry Pi, go through initial setup (configure wi-fi and ssh access so you don’t need a monitor), make sure everything is updated.
  2. Following this guide, connect the 16×2 LCD, install the Adafruit library, and use the included examples to test the connection. Instead of a potentiometer, I used a single resistor. Experiment a bit and see what works for you. Also, be sure to check the datasheet for the LCD on the LED backlight voltage – it may be 3.3V rather than 5V, so you might need to connect it to the 3.3V rail on the Raspberry Pi unlike in the guide. This is the case for the LCD I linked above!
  3. Create the directory /home/pi/d74_display/ to store the program (if you change this, the next step will fail), and download my Python program. You may want to comment out the line “os.system(‘sudo poweroff’)” at the end of the program until you know everything is working properly; otherwise, the program will shutdown the Pi if something goes wrong.
  4. If you wish to have memory channel names displayed when you are in MR mode, you will need to export a .hmk file from the MCP-D74 software tool. This creates a .csv file that we can associate the channel number (which is sent over the serial connection) to the memory name for display. If you do not supply this file, the display will just show the frequency like in VFO mode. If you do supply it, make sure it is named “d74_memory.hmk” and in the same directory unless you wish to modify my program. My example file can be found here.
  5. Connect the D74 to the Pi via USB (use the port marked J10/USB since it supports power and data), turn it on, and make sure menu option 980 “USB Function” is set to COM+AF/IF Output.
  6. Test the program by running the program.
  7. If all is well, you’ll need to setup crontab for the program to automatically start on boot. To do this, type “sudo crontab -e” and add the line below:

    @reboot sudo python /home/pi/d74_display/

  8. Reboot the Pi, make sure the D74 is connected and on, and the program should start automatically! To shut it down, simply turn off or disconnect the D74.

This seems to work reliably. I have noticed that sometimes, if there was an error (like you disconnected the D74 from the Pi), you may need to restart the D74 for it to connect again.

Let me know if you try this and something isn’t working. I wrote these instructions after the fact, so it’s possible you may need to download or configure something I forgot. I’ll update this if anyone reaches out.

Here are a few photos of the finished product: