Background
One of the appealing features of the Kenwood TH-D74 is its Bluetooth connection. I used it with a TNC on a computer across the room, with no wires and minimal setup.
After moving to an all-Mac and Apple device environment, I found it difficult to run some ham radio software. I eventually found replacements or improved alternatives for almost all programs except Winlink.
I discovered a well-regarded app called RadioMail available on iPad and iPhone. However, the Kenwood TH-D74 would not work with that app. The root cause is hardware-level incompatibility between Bluetooth implementations on Apple devices and some radios. Apple favors Bluetooth Low Energy (BLE), while the TH-D74 uses classic Bluetooth. BLE is a subset introduced with Bluetooth v4.0 targeted at very low-power devices. Many radio Bluetooth implementations are class 2 devices powered by larger batteries and use classic Bluetooth rather than BLE.
George WH6AZ created an adapter using a TinyPICO ESP32 board that provides both BLE and classic Bluetooth hardware on the same board. His firmware bridges the two protocols so an iPhone can talk to the BLE side while the classic Bluetooth side talks to the Kenwood D74, performing a protocol translation. He published the hardware requirements and software; more information is available at the visible repository URL: https://bitbucket.org/islandmagic/ble-bt-tnc
If you try to use Bluetooth with headphones rather than a serial port, you may encounter different issues. The Kenwood TH-D74 supports only one Bluetooth profile, HSP (Headset Profile). You need to ensure the headset you pair supports that profile. For example, Apple AirPods support Hands-Free profile variants that offer improved audio quality compared with the older headset standard. Hands-Free Profile and Headset Profile are not compatible, so AirPods do not work with the D74 in that role.
Note that the published Kenwood TH-D75 user manual lists Bluetooth specifications identical to the TH-D74; the Bluetooth implementation did not change to improve compatibility with other devices.
While this article focuses on the TH-D74 because it is a handheld with a built-in TNC and Bluetooth, there are other handhelds that offer BLE and Hands-Free Profile support for headsets. The Icom ID-51/52A is an example, though it does not include an accessible TNC.
BLE-to-Classic Bluetooth Adapter
Older radios such as the TH-D74 support classic Bluetooth, while iOS devices support only Bluetooth Low Energy. That prevents direct pairing. The available code provides a way to expose a device that uses the Bluetooth Classic Serial Port Profile to iOS over BLE. Its main purpose is to connect a radio's built-in TNC to apps that use AX.25 packet protocols, such as RadioMail or APRS.fi.
Hardware
The firmware is based on the ESP32. The simplest hardware option is a TinyPICO board: https://www.tinypico.com
Do not use ESP32-S3 based boards such as TinyS3, because the ESP32-S3 does not support classic Bluetooth.
Software
Install the Arduino IDE: https://www.arduino.cc
Install the ESP32 board support package. Follow the Espressif Arduino-ESP32 guide: https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#installing-using-boards-manager
Install the TinyPICO library (not strictly required but used to enable the LED). The TinyPICO Arduino helper library is available in the Arduino IDE Library Manager.
Pairing
Place the TH-D74 into Bluetooth pairing mode.
After a few seconds you will be prompted for a PIN; accept it.
After pairing, the TinyPICO LED should turn green.
Launch RadioMail. Go to Settings -> KISS TNC Modem -> Default TNC.
"TNC Blues" should appear on the discovery screen. Select TNC Blues and finish setup.
Open the connection interface and choose a packet station. When RadioMail connects to TNC Blues, the TinyPICO LED will indicate a blue state.
Limitations
The code is a proof of concept.
The adapter must be paired with the radio, so you need the radio's Bluetooth name. Pairing the radio with the adapter should be feasible but may not always succeed.
Occasional errors occur; restarting the adapter often resolves them.