Skip to content

HaliKey Status: 2025 Q4

HaliKey has been one of my best selling products over the last few years. It’s simplicity and small size, doing one thing and doing it well, has made it a favorite for remote operators. Flex even gave them out with purchases of Pre-Loved Flex radios for a while. But they’ve been on back-order for several months now. What gives?

tldr:

The new version, HaliKey MIDI, will be available again soon, with more features than before:

  • Still works as a PTT and Morse Key interface for all ham-radio-apps.com tools: SmartSDR (Flex), SDR-Control (Icom), FT-Control (Yaesu), TS-Control (Kenwood), and K4-Control (Elecraft) on MacOS.
  • Works with NetKeyer (available soon), a software based PTT and full Iambic Keyer on Windows.
  • Now works with SmartSDR for iPhone and iPad, and web based tools like Remote Ham Radio.

This post explains why it’s taken me so long.

What is HaliKey?

HaliKey lets you connect a PTT and/or CW morse paddles to a computer running SmartSDR connected to a remote radio, like a Flex. This lets you use your favorite physical PTT and paddles, while operating your radio remotely. (I don’t know about your laptop, but mine doesn’t have a Morse Key input socket on it.)

How does it work?

To do this, HaliKey is “just” and FTDI USB to serial chip and a 3.5mm TRS socket, with Tip wired to CTS and Ring wired to DSR and DCD. This lets it work as a PTT in SmartSDR for Windows, and a PTT and CW paddle interface for SmartSDR for MacOS (and the other apps from Marcus), since both of those can use serial port flow control signals to trigger key-down events.

That’s cool, can I use it with SmartSDR on my phone?

iOS (and iPadOS) don’t provide an API to access the flow control signals on a serial port, so SmartSDR for iOS can’t use HaliKey. Similarly, any web application such as Remote Ham Radio can’t use HaliKey either. And I’m not aware of any Flex software for Android.

That’s a bummer, is there a way around this?

MIDI (Musical Instrument Digital Interface) however IS available on both iOS and web applications. And also Windows and MacOS. SmartSDR for MacOS and iOS, and Remote Ham Radio, already know how to trigger PTT and CW events using MIDI. The CTR2-MIDI device from Lynovations also uses MIDI.

The FTDI serial chip used in HaliKey can ONLY do serial, not MIDI. So for the next version of HaliKey, I’ve replaced the FTDI chip with a microcontroller, an RP2040, and wrote my own firmware to generate both serial flow control signals, like the FTDI chip, and also MIDI events to support all the new platforms as well! I had this tested and working earlier this year (2025).

I call it HaliKey MIDI.

That’s cool, so HaliKey MIDI is for sale now?

Almost. This is where the story gets a little WTF?-y.

For starters, the TinyUSB library that implements USB in microcontrollers, does not implement sending flow control signals from the device (HaliKey) to the host (the computer.) So I implemented it and submitted my improvements back to the community. Cool.

BUT! Turns out, the USB spec’s standard protocol for serial ports, called CDC-ACM, does not include all the flow control signals in RS-232. Notably, it does not include CTS, Clear To Send. It’s just missing from the standard entirely. I did confirm that my code correctly generates all the other flow control signals: DSR, DCD, and RI. (The DTR and RTS host-to-device signals were already implemented. I only had to implement the device-to-host signals.)

Fun Fact! This is why you need to install drivers on your OS to get your FTDI, or PL2102, or CH341 based USB to Serial devices to work. They don’t use the USB standard protocols. They implement their own proprietary USB protocol so they can retain full “serial port” functionality that doesn’t exist in the USB spec. For Linux users, this is the difference between /dev/ttyACM0 (a device using the USB CDC ACM spec), and /dev/ttyUSB0 (a device using an FTDI or similar chip with their own driver.)

Guess which flow control signal SmartSDR for Windows uses to trigger PTT? Yep! CTS! It is PHYSICALLY IMPOSSIBLE for HaliKey MIDI to trigger a PTT in SmartSDR for Windows. In works in every other use case: PTT and Morse in SmartSDR for MacOS and iOS, and Remote Ham Radio. But not the one primary use case: PTT on Windows.

This is what’s been holding up the release of HaliKey v2. And I’ve been loath to order more v1 boards when I know I’m about to release a much more functional HaliKey MIDI.

Can our friends at Flex Radio fix this?

I’ve been chatting with Mike, Steve, and some developers at Flex about this all year, but they’ve had very little time for anything not related to Aurora or SmartSDR v4. They couldn’t tell me why they had no time because they hadn’t announced anything yet. But in hindsight, I understand. Finally, in October, a developer at Flex had some time to hack at my request to get SmartSDR to use any other flow control signal to trigger PTT.

…only to find out that the CDC serial driver that comes with Windows doesn’t implement flow control signals…

WhaAaAat?!

I know, right? My RP2040 sends them, but the application code on Windows never sees them. They work on Linux and MacOS, but Windows is all “Nah. Do flow control at the USB layer, we don’t need these old RS232 signals.”

So even if Flex makes the change I requested (and have since canceled), HaliKey MIDI would STILL not work with SmartSDR for Windows. Flex would need to switch over to MIDI, which is a much bigger change than just “accept either CTS or DSR to trigger a PTT, instead of only CTS.”

Have you tried any other solutions?

Several. Seriously Nerdy Explanation follows: The most promising is this patch to emulate a CH341 chip in TinyUSB. However, the Arduino TinyUSB library requires a CDC driver for the Serial console device, and the CH341 OS drivers require a very specific USB Device Descriptor, with the CH341 in the spot where the CDC device goes. In short, they are mutually exclusive, and the Arduino TinyUSB library requires CDC therefore excludes the CH341.

I tried to use the non-Arduino version of the TinyUSB library, but the Arduino version is built-in to the RP2040 PlatformIO build platform, and two different copies of TinyUSB don’t play nicely with each other.

I spent several days hacking at low level USB driver code trying to make this work and couldn’t.

What about something other than SmartSDR?

To quote Ringo Start Billy Shears, I’ll get by with a little help from my friends. Andrew Rodland is working on an application to run beside SmartSDR for Windows, that talks MIDI to HaliKey, and will trigger PTT on your Flex. He also implemented a software keyer, so you can use HaliKey for morse code in Windows, which wasn’t available before! This bridges the gap left behind by the combined deficiencies of: TinyUSB library, USB CDC ACM spec, Windows drivers, and Flex Radio’s lack of spare time.

It’s tentatively called NetKeyer. It’s a simple app, open source, and cross platform on Windows, MacOS, and Linux. It talks to HaliKey (any serial or MIDI device) on one side, and talks over the network to a Flex Radio on the other. It triggers PTT in voice modes, and is an Iambic Keyer in CW mode. (It’ll also do straight key.) It generates side-tone locally for very low latency.

In short, NetKeyer does everything we want in Windows.

Great! Where can I download it?

Not so fast, it’s still in development. ACTIVE development, but it’s not ready for publication yet. I’ve been testing it and it works great! Like all “in active development” projects, it still has a few rough edges to sand down, and some of the features I mention haven’t been implemented yet. But the basic functionality is there, enough to prove that it will work.

Ok, fine. When can I download it?

…soon? Maybe by the end of December, or some time in January? Believe me, no one wants this more than I do. It’s still not QUITE entirely in my control, but it’s getting a lot closer.

I’m writing this blog post because I FINALLY feel like I have a light at the end of this tunnel.

I don’t use Windows, can I get a HaliKey MIDI now?

Yes! Well, very soon. I have been holding off until I had an answer to the SmartSDR on Windows question, and I think I have that now. Expect https://electronics.halibut.com/halikey/ to get updated soon.

Until then, thank you for reading. Please let me know if you have any questions about any of this.

Cheers, 73 de N6MTS
-Mark

Leave a Reply

Your email address will not be published. Required fields are marked *