Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

WKFlex - CW remote with SmartSDR and Winkeyer

I’m a CW guy and a SmartSDR remote user.

I’m very happy with the performances of SmartSDR but I was missing both the CW sidetone and sending code from my paddle/keyer.

I understand it can be achieved in different ways, using a Maestro is one of those. I also understand there are software applications which can do that, but I was looking for a light, simple, and elegant solution. I spoke about my idea with Dave, N1BIT and we came out with a working prototype written in Python and, eventually, a graphical app written in C#.

The prerequisite for the system is to have a Winkeyer by K1EL, nothing else. Also, the app works ONLY with a Winkeyer or devices which emulate the Winkeyer, no other devices are supported.

WKFlex creates a tunnel between the local Winkeyer and SmartSDR, allowing to send CW without extra cables, interfaces, or difficult configurations.

The following steps should keep you up and running in minutes:

Step 1) Add a dedicated Winkeyer interface to SmartSDRCAT

Step 2) Check your Winkeyer COM port. If you don’t know it already, open Windows device manager.

Step 3) Download WKFlex from this link:


The software is not signed, so Windows will complain. If you trust me download it, if you trust Windows don’t!

Step 4) Unzip WKFlex in a folder of your choice. It doesn’t require to be installed, just unpack it. If you want to remove it just delete the folder.

Double click on WKFlex.exe to run the app.

Click on SETTINGS.

Enter the COM ports parameters, and the speed range for the Winkeyer ****, click on SAVE and CLOSE.

Now click on START and enjoy your paddle!

Nothing happens? Check your Flex is in CW.

The Speed Offset control in the main window can be helpful for high latency, low speed network connection. You are sending at higher speed than the Flex radio, avoiding gaps between letters.

Feel free to contact me or Dave if you need help.


73 de Max, N5NHJ (I8NHJ)

one of EL2PP, 1A0KM, JT1Y, E30GA, T77V, TT8MM, T32R, K5K, XR0X, S05X, 4O3T, BS7H, K4M, PJ7E, PJ7DX, 6Y1V, C6ANA, VP5/I8NHJ, ZF2NH and...



  • Dan Trainor
    Dan Trainor Member ✭✭
    edited July 29

    This is great! Nice Work. Question: When you say "Winkeyer by K1EL" , do you mean the physical hardware keyer by K1EL? I have the K44 CW Keyer & Reader w/Keyboard I/F sitting here on desk. Thank you. dan WA1QZX.

  • N5NHJ
    N5NHJ Member ✭✭

    Hi Dan, I'm reading the K44 specs. It looks like the K44 DOESN'T works like a Winkeyer, that is, doesn't provide a USB/Serial port to connect to a computer. I don't think it will work, sorry.

  • Joe N3HEE
    Joe N3HEE Member ✭✭

    Very cool ! Any latency issues ?

  • N5NHJ
    N5NHJ Member ✭✭

    Which latency?

    The sidetone is generated locally by the Winkeyer, no radio or software involved.

    Computer lack of power or overloaded CPU can create a gap between some of the characters transmitted by the radio; the ASCII string must be analyzed by the virtual Winkeyer embedded in SmartSDR before being transmitted. This is the case of a sequence like N5NHJ where a gap can be found between N5NH and the J.

    This is addressed by the speed offset.

  • Val  DM1TX
    Val DM1TX Member ✭✭

    Thank you Max. I have been waiting for something like this for ages. Will give it a try. God bless you!

    73 de DM1TX Val

  • Dan Trainor
    Dan Trainor Member ✭✭

    Max, Thank you. Your correct K44 has no USB. I am thinking I need: WKUSB-SMT CW Keyer

  • W9DP
    W9DP Member
    I am not sure how you hear the sidetone, my WInkeyer USB has very low sidetone audio and the sidetone coming from my PC speakers (headphones) is delayed by a several hundred milliseconds. Did I do something wrong?

    Danny W9DP
  • N5NHJ
    N5NHJ Member ✭✭
    edited July 30

    Hi Danny. The WK3 has a volume control setting, mine is actually louder than what I need. Please use the WK3demo and WK3tools (K1EL apps) to check on the volume settings.

    From the WKUSB manual, page 37:

    "Sidetone Volume Command A somewhat limited volume control has been added to WK3. As it turns out that only when the level is set to either 1 or 2 that the level actually decreases noticeably."

    I'm not sure why you are mentioning PC speakers or headphones considering the PC audio doesn't play any role here.

  • W9DP
    W9DP Member
    I have the sidetone volume set for 4, maxed out, and still very low even if I am not wearing headphones. Whether I am using the radio locally or remotely, I use headphones and when using my laptop to remote, my headphone audio comes out of the PC. If I cannot hear the Winkeyer sidetone in my headphones in real time, I have a terrible time sending with my paddles.
  • N5NHJ
    N5NHJ Member ✭✭

    OK, pull out a cable from the WK speaker and connect it to the audio card of your PC.

  • N5NHJ
    N5NHJ Member ✭✭

    I have an interesting update on the WKFlex. I just tested it with N1MM and SmartSDR and it works perfectly addressing another major problem about hearing the sidetone for the CW generated by N1MM.

    We are already thinking about programming a specific port configuration for N1MM, to connect directly to WKFlex but, so far, the workaround is like this:

    1) Create a Virtual splitter serial port. I'm using VSPE, I have the Winkeyer physical port (COM3 in my case) linked to the virtual port COM33

    2) Configure N1MM to use the Winkeyer on COM33 and enable the sidetone

    3) Configure WKFlex to use COM33 as the local Winkeyer.

    You should be now able to use N1MM and the paddle with the local Winkeyer, which controls SmartSDR via WKFlex, and hear the sidetone from it.

  • Luis - K1PLL
    Luis - K1PLL Member ✭✭
    Hi Max,
    Is this compatible with Winkeyer serial by K1EL ?
    K1PLL - Luis !!
  • N5NHJ
    N5NHJ Member ✭✭

    Hi Louis,

    Yes it should be 100% compatible.

    What firmware is installed? If you like I can remote to your computer and debug the issue.

    Email me directly, if you don't mind.

  • N5NHJ
    N5NHJ Member ✭✭

    Hi All,

    I just got an e-mail about using the WKMini in conjunction with WKFlex.

    The software works with the WKMini but, unfortunately, there is no way to change the speed because the WKMini doesn't have any physical speed control. WKFlex was intended for a scenario where the local WinKeyer is in control.

    Anyway, it is technically possible to have SmartSDR controlling the speed of the WKMini via WKFlex, at the present time we just discharge any feedback coming from SmartSDR. If there is a specific interest in this configuration, we can certainly look at the code. In meantime, a trick like the one proposed for N1MM, using one of the dedicated software from K1EL, should do the job just fine.

  • SM3RAB
    SM3RAB Member ✭✭
    edited September 19
    Oh! Very interesting! I have a WKMini and would like it to work as described, but I have one question: How do I add a dedicated Winkeyer interface to SmartSDRCAT, remote, using SmartLink? The Flex 6400 is not located near me.
  • N5NHJ
    N5NHJ Member ✭✭


    From the SmartSDRCAT main window click ADD, select Winkeyer from the Port Protocol drop down menu..

  • SM3RAB
    SM3RAB Member ✭✭

    @N5NHJ Thanks, yes I got everything to work now except the sidetone. Tried both N1MM and DXLog but haven´t figured it out yet how to make them play the sidetone...they are both keying the WKmini though.

  • N5NHJ
    N5NHJ Member ✭✭
    edited September 20


    Great, if you need extra help in setting up N1MM feel free to reach out to me directly.

    Anyway, the WKMini doesn't have any internal speaker for sidetone, you have to add some extra parts to it.

    73, Max

  • SM3RAB
    SM3RAB Member ✭✭

    @N5NHJ Thank you for excellent support 👍️ Well, if the aim is just to be able to use the ever beloved Bencher with SmartSDR remote I guess the use of a simple audio generator/"morse-tutor" connected to the WKMini:s Out would be the simpliest but not the prettiest way to go. Anyway, if you do find a way to control speed through WKFlex, please let me know :-)

  • N5NHJ
    N5NHJ Member ✭✭

    OK... I'll work on controlling the Winkeyer/WKmini speed from the SmartSDR interface.

  • N5NHJ
    N5NHJ Member ✭✭

    WKFlex V1.1 (2021-11-09)

    A cursor has been added on the main screen to control the speed for both the WKmini and the Winkeyer.

    The WKmini is automatically recognized, and the appropriate initialization sequence is sent over the serial line. If your WKMini is not recognized, try to rise the Command Delay (It doesn’t affect the sending speed, it is just a delay between commands sent during the initialization sequence).

    I have noticed that sometimes a dirty Winkeyer **** can send undesired Speed Change commands overriding the speed set with the virtual cursor. Clean it up with a contact cleaner or just move it back and forth all the way few times.

    Playing with the speed offset, I found that going up 35/40 WPM requires at least 5 WPM of speed offset to achieve a good synchronization and remove the gap between some characters. Sending N5NHJ is a perfect example to calibrate the speed offset.

    WKFlex has been designed with Flex SmartSDR in mind, but it can be used to synchronize and use remotely any device which emulates the Winkeyer protocol, let me know about your set-up!

    VKFlex V1.1 can be downloaded from:


    To update, just copy the new files over the existing installation.

    To install, follow the steps described in the V1.0 installation

    Enjoy CWing

    73 de Max, N5NHJ and David, N1BIT 

  • Steven Linley
    Steven Linley Member ✭✭

    Thanks to Max for re-publishing your article David (for WKFlex in the CWops online magazine, Solid Copy Nov 21 issue).

    I've just order the WKUSB-SMT model.

    73, Steve WA8Y

  • Mike-VA3MW
    Mike-VA3MW Administrator, FlexRadio Employee, Community Manager, Super Elmer, Moderator admin


    Hi Max

    This is very good. I set it up in a few seconds on my Aurdino emulating WinKeyer from www.hamshop.cz.

    And, thanks for the debug mode as it really helps to show what is going on. I will also admit I am a terrible CW operator. :)

    Sometimes, the WinKeyer does not decode my keying correctly and then no CW comes out. Which, I guess makes sense since no character is passed from the actual hardware Winkeyer to your software.

    I just mention that in case others are seeing something similar.

    Again, thanks for the great work.


Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.