CW tips

From Tučňák Wiki
Jump to: navigation, search

Notes OK1ZIA: Tucnak2 implement own CW keying. Cwdaemon is one of output devices. Informations about kernel settings are usable also for Tucnak.

(http://www.ok1rr.com/view.php?cisloclanku=2007122501) Published on 25. 12. 2007 (212 x viewed)

Regardless of existence of the cwdaemon (many thanks to Joop. PG4I and others) many software developers are intended to use a hardware solution, the WinKey by K1EL. It is sure a good product but there is still no suitable driver for Linux, except winkeydaemon by Rein, PA0R, which is actually a Perl script and, unfortunately, I don't like such interpreted gadgets not very much.

Note: Native Winkey support (still very experimental and basic) will be part of V2.17 and later, read more about it in the Winkey section.


Actually, the cwdaemon is very good software trick which does good job if you build your own kernel and you also don't need to fire it up separately with root privileges if you have an addition in your start-up scripts.


Poor sounding CW

Sloppy CW from the cwdaemon it depends on kernel settings. I tested it thoroughly because I love CW at higher speeds. Latency of 1000 Hz helped a bit, I was able to run at usual contest speeds up to 36 wpm. Since kernel 2.6.23 the problem seems cured with tickless kernel. Here is an excerpt from my config:

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_SMP=y
CONFIG_X86_PC=y

....

Now I can go up to 60 wpm and the resulting CW is excellent, however I'm using cwdaemon 0.9.4beta1. Versions below 0.8 are actually useless, the worst CW I ever heard was produced by cwdaemon 0.5 and an unmodified kernel.

The newest cwdaemon 0.9.4 depends on the unixcw version 2.3 (or above) which won't compile on my Slackware (and I was not patient enough to track all the dependencies), therefore not tested. Let me believe that the new dependency was a bad step back... I hope that new versions of cwdaemon will continue the way set by the 0.9.4beta1 version (source download here). Anyway, with this version of cwdaemon and custom made kernel 2.6.23 (actually I'm using now the latest 2.6.23.12) I am fully satisfied. I am convinced that any development of CW related software should be thoroughly consulted with high speed freaks, it is rather bad if a developer or tester means he did well if he is limited by 25 wpm...

My Slackware package of the best cwdaemon ever issued is here.

Start-up without root privileges

There is no need to start the cwdaemon separately with root privileges. Put a little addition to your start-up script and cwdaemon will start without any keystroke. It is a good solution for a ham radio machine, however you may have some problems if you want to evaluate your parallel port for printing or other purposes.

I added two simple blocks to the /etc/rc.d/rc.local which applies to Slackware GNU/Linux, however your preferred distribution may use another name and location.

The first block is used to load parport and parport_pc modules which are essential to the cwdaemon. The second block actually loads the cwdaemon. First, it stops the module which can occupy your parallel port - here it was cups. cwdaemon also won't work if lp module is loaded, so unload it if necessary. Next, a device node is created and cwdaemon is loaded.

#load parport, parport_pc
modprobe parport
modprobe parport_pc

# Load cwdaemon
echo "starting cwdaemon"
/etc/rc.d/rc.cups stop
# rmmod lp
cd /dev
mknod -m 0660 parport0 c 99 0
/usr/local/sbin/cwdaemon -x n

Remember the cwdaemon options:

Usage: cwdaemon [option]...
       -d    Use a different device
                     (e.g. ttyS0,1,2, parport0,1, etc. default = parport0)
       -h            Display this help and exit
       -n            Do not fork and print debug information to stdout
       -p    Use a different UDP port number (> 1023, default = 6789)
       -P    Set cwdaemon priority (-20 ... 20, default = 0)
       -s    Set morse speed (4 ... 60 wpm, default = 24)
       -t    Set PTT delay (0 ... 50 ms, default = 0)
       -v    Set volume for soundcard output
       -V            Output version information and exit
       -w    Set weighting (-50 ... 50, default = 0)
       -x    Use a different sound device
                     (c = console (default), s = soundcard, b = both, n = none)

I find useful to start the cwdaemon without any sidetone, it seems much better to use the sidetone of your radio rather than the PC speaker.

Enjoy your cwdaemon!