G4KNO.com logo
Get free CGI scripts, PHP scripts, web pages at thesitewizard.com


Software/IT jWinkeyServer

Brief synopsis

Logging programs that only offer cwdaemon to provide CW keying (e.g. TLF) have no direct means of interfacing to the popular Winkeyer devices. jWinkeyServer appears to clients as if it is cwdaemon, interprets the commands and passes them to a Winkeyer device over a standard serial interface. In addition, WinkeyServer provides GUI control of Winkeyer settings and a CW keyboard.

The inspiration for this project was Winkeyer USB server by OK2CQR. This works fine also, but it lacks some of the features I wanted. In particular, TLF implements PTT for SSB modes via cwdaemon, which isn't currently supported. I was also interested in playing with serial port control in Java, so it gave me a project to work on.

In theory, jWinkeyServer works on all platforms that support Java, but I have only tested it on Linux. I would be interested to hear from you if you have tried it out on alternative platforms.


basic.png   cw_control.png   tx_control.png


cwdaemon control commands are interpreted according to the following table:

cwdaemon function
Winkeyer function
Reset to default values.
Unsupported. Set through GUI.
<ESC>'2'<speed value>
Set keying speed.
Set keying speed.
<ESC>'3'<tone value>
Set sidetone (300 ... 1000Hz).
Set closest available sidetone frequency.
Abort message.
Clear buffer (immediately aborts CW).
Stop daemon.
Unsupported. Control through GUI.
Set uninterruptable mode.
<ESC>'7'<weight value>
Set weighting (-50 ... 50).
Set weighting (10-90%). cwdaemon 0 = 50%.
Set device for keying.
Unsupported. Makes no sense for this application.
<ESC>'9'<port number>
PTT keying off|on.
Control Key Out jack or PTT Phono dependent on GUI setting.
Audio from mic|soundcard.
Unsupported. Makes no sense for this application.
Tune x seconds.
Assert Key Out for x seconds (uses 'Key Buffered').
PTT on delay.
Unsupported. Set through GUI.
Parallel port band output.
Unsupported. Makes no sense for this application.
<ESC>'f'<sound system>
Set sound system:
  • c - console buzzer
  • o - OSS
  • a - ALSA
  • p - PulseAudio
  • n - none (no audio)
  • s - soundcard
Partially supported:
  • c - sidetone on
  • n - sidetone off


Set soundcard volume.
Unsupported. Winkeyer can't vary sidetone volume.
<ESC>'h'<opt. text>
cwdaemon debug mode

cwdaemon CW text commands are interpreted according to the following table:

cwdaemon function
Winkeyer mapping
Increase speed by 2wpm (can concatenate).
Buffered speed change +2wpm (can concatenate).
Decrease speed by 2wpm (can concatenate). Buffered speed change  -2wpm (can concatenate).
Half space delay
Half dit delay ( '|' )
SN prosign
SN prosign created using merge character command.
AS prosign
AS prosign created using merge character command.
BK prosign
BK prosign created using merge character command.
SK prosign
SK prosign ( '>' )
AR prosign
AR prosign ( '<' )
BT prosign
BT prosign ( '=' )
KN prosign
KN prosign ( '(' )

Download instructions

Click on the link below to download. Extract the zip file to your chosen location.

Navigate to the contents of the extracted jWinkeyServer_xvx.zip directory, either using a terminal or with the file manager. If using a terminal, the program may be run using "java -jar jWinkeyServer.jar". From the file manager, right click and Open With Java. The terminal method will create a winkeyserver.conf file where you started it from. The file manager method will probably create it in the root of your home directory. Provided you start the program consistently it will pick-up the appropriate configuration file.

When you run the program for the first time it is likely not to be set up for the correct serial port location. Simply click on the 'Serial Port' comboBox, select the correct serial port and then click 'restart winkeyer'.


Bug reports

Please send bug reports or feature suggestions by e-mail to the address on my contact page.