2010-10-30 14:25:46 +00:00
|
|
|
Elecraft K3 notes and Hamlib errata by Nate Bargmann, N0NB.
|
|
|
|
|
|
|
|
While the K3 uses a large set of commands compatible with the standard Kenwood
|
|
|
|
commands, a number are extended and others have side effects that are peculiar
|
|
|
|
to the K3. As such, a separate set of elecraft.[c|h] files have been written
|
2011-06-07 23:04:58 +00:00
|
|
|
to support the K2 and K3 in the best possible way using shared code when
|
2010-11-03 03:08:33 +00:00
|
|
|
possible. K3 specific code can be found in k3.c
|
|
|
|
|
2011-06-07 23:04:58 +00:00
|
|
|
As always, comments and bug reports should be submitted to
|
2010-11-03 03:08:33 +00:00
|
|
|
hamlib-developer@lists.sourceforge.net
|
|
|
|
|
|
|
|
|
|
|
|
elecraft_open()
|
|
|
|
===============
|
|
|
|
|
|
|
|
The kenwood_open() function fails for the Elecraft radios as the function checks
|
|
|
|
the backend to be certain the ID from the radio matches the backend that called
|
|
|
|
the function. As the ID command of the Elecraft radios returns "017" which
|
2011-06-07 23:04:58 +00:00
|
|
|
corresponds to the TS-570, the backend test fails. Rather than muck up a
|
2010-11-03 03:08:33 +00:00
|
|
|
working function, I chose to implement an independent elecraft_open which not
|
|
|
|
only checks for the existence of a connected radio that returns an ID of "017",
|
|
|
|
it also checks for K2 or K3 extensions and sets a pair of private variables
|
2011-06-07 23:04:58 +00:00
|
|
|
that may be used later for advanced functions. This way the backend should be
|
2010-11-03 03:08:33 +00:00
|
|
|
able to reliably test for either a K2 or K3 (needs more testing with the K2).
|
2010-10-30 14:25:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
k3_set_vfo()
|
|
|
|
============
|
|
|
|
|
2011-06-07 23:04:58 +00:00
|
|
|
The K3's use of VFO A and VFO B differs from other rigs in that VFO A is
|
2010-10-30 14:25:46 +00:00
|
|
|
*always* the main or upper display and VFO B is *always* the sub or lower
|
|
|
|
display. The A/B panel button simply swaps the contents of the two displays.
|
|
|
|
The K3 manual states that VFO A is always the receive frequency and VFO B is
|
|
|
|
the transmit frequency in split mode. This is complicated somewhat when the
|
|
|
|
second receiver is installed and VFO B serves as its display frequency *and*
|
|
|
|
the transmit frequency in split mode. Got that? Good!
|
|
|
|
|
|
|
|
As a result of the above, I found that using the kenwood_set_vfo function had
|
|
|
|
the side effect of clearing the rig out of split mode when the VFO was set to
|
|
|
|
RIG_VFO_B. The Kenwood command 'FT1;' is used to make VFO B the transmitting
|
|
|
|
VFO while this command will cause the K3 to enter split mode. Likewise, the
|
|
|
|
Kenwood command 'FR1;' is used to set VFO B as the receiving VFO while the K3
|
|
|
|
exits split mode when it receives *any* set value for 'FR'. My solution is
|
|
|
|
to simply issue the 'SWT11;' command which emulates tapping the A/B button on
|
|
|
|
the K3's front panel to swap the displays when the k3_set_vfo function is called
|
|
|
|
with RIG_VFO_B. Any other vfo value leaves the display alone. Feedback on
|
|
|
|
improving this function is welcome.
|
|
|
|
|
|
|
|
|
|
|
|
k3_get_mode() k3_get_mode()
|
|
|
|
===========================
|
|
|
|
|
|
|
|
As an extension to the common Kenwood mode definitions, the K3 implements the
|
2011-06-07 23:04:58 +00:00
|
|
|
custom 'DT' command which can query and set its data sub-modes. These are as
|
2010-10-30 14:25:46 +00:00
|
|
|
follows:
|
|
|
|
|
|
|
|
DT0 DATA A
|
|
|
|
DT1 AFSK A
|
|
|
|
DT2 FSK D
|
|
|
|
DT3 PSK D
|
|
|
|
|
2011-06-07 23:04:58 +00:00
|
|
|
The main difference is that DT0 and DT1 are for soundcard audio modes from a
|
2010-10-30 14:25:46 +00:00
|
|
|
computer such as PSK31, MFSK, Olivia, etc. with DT1 being "optimized for RTTY".
|
|
|
|
Conversely, DT2 and DT3 utilize "direct FSK in" on the accessory jack as well
|
|
|
|
as enable the K3's internal encoding/decoding of RTTY and PSK31 modes (outside
|
|
|
|
the realm of Hamlib).
|
|
|
|
|
|
|
|
As implemented the k3_get_mode function will query the data sub-mode when the
|
|
|
|
kenwood_get_mode function returns RIG_MODE_RTTY or RIG_MODE_RTTYR. As of k3
|
|
|
|
backend version 20101027 the following will be returned:
|
|
|
|
|
|
|
|
MD6 MD9
|
|
|
|
DT0 RIG_MODE_PKTUSB RIG_MODE_PKTLSB
|
|
|
|
DT1 RIG_MODE_RTTY RIG_MODE_RTTYR
|
|
|
|
DT2 N/A N/A
|
|
|
|
DT3 N/A N/A
|
|
|
|
|
|
|
|
Perhaps it would be preferable to return the RTTY modes when DT2 is detected.
|
|
|
|
Feedback is requested.
|
|
|
|
|
|
|
|
Mode setting is little different as the MD and DT values will be set as above
|
|
|
|
for the Hamlib RIG_MODE values. Feedback is requested on whether RTTY/RTTYR
|
|
|
|
should map to AFSK A (DT1) or FSK D (DT2).
|
|
|
|
|
|
|
|
The K3 can set any bandwidth in any mode using its custom 'BW' command. Band-
|
|
|
|
width values are sent to the K3 in 10 Hz increments and the K3 will round down
|
2011-06-07 23:04:58 +00:00
|
|
|
to the nearest 100 Hz values from 10 to 40 Hz. It will round down to the
|
2010-10-30 14:25:46 +00:00
|
|
|
nearest 50 Hz values from 50 to 90 Hz. As an example, sending 'BW0236' (2360 in
|
|
|
|
rigctl) will set the bandwidth to 2350 Hz (rounded down by the K3).
|
|
|
|
|
|
|
|
The k3_get_mode function will query and return the actual bandwidth in use in
|
|
|
|
Hertz.
|
|
|
|
|
2011-02-01 00:48:45 +00:00
|
|
|
|
2011-06-07 23:04:58 +00:00
|
|
|
k3_set_ext_level()
|
|
|
|
==================
|
|
|
|
|
|
|
|
This function is used to set the K3 for some extra level functions (rigctl
|
|
|
|
command examples shown).
|
|
|
|
|
|
|
|
To clear the RIT and XIT offset, use the 'L' command with the token name
|
|
|
|
'ritclr' for 'Level' to set in rigctl[d]. The prompted value is not used
|
|
|
|
and can be safely set to 0. Use this level to clear the RIT and XIT offsets
|
|
|
|
when it is not desired to turn RIT|XIT off.
|
|
|
|
|
|
|
|
|
2011-02-01 00:48:45 +00:00
|
|
|
k3_get_ext_level()
|
|
|
|
==================
|
|
|
|
|
2011-06-07 23:04:58 +00:00
|
|
|
This function is used to query the K3 for some extra information (rigctl
|
|
|
|
command examples shown).
|
|
|
|
|
|
|
|
To query the IF center frequency, use the 'l' command with the token name
|
|
|
|
'ifctr' for 'Level' to read in rigctl[d]. Value returned is 8210000.0 +
|
|
|
|
queried value from rig (see K3 Programmers Reference, FI command). Returned
|
|
|
|
type is a floating point value.
|
|
|
|
|
|
|
|
To query the TX status, use the 'l' command with the token name 'txst' for
|
|
|
|
'Level' to read in rigctl[d]. Value returned is 1 for K3 in transmit mode
|
|
|
|
and 0 for receive mode. Returned type is an integer.
|
2011-02-01 00:48:45 +00:00
|
|
|
|
|
|
|
|
|
|
|
kenwood_get/set_ext_parms()
|
|
|
|
===========================
|
|
|
|
|
|
|
|
These functions are used to get and set RIT/XIT on and off. The special token
|
|
|
|
names of 'rit' and 'xit' are used with the P/p commands of rigctl[d] for the
|
|
|
|
'parm'. Set/returned value is 0 or 1 for off or on.
|
|
|
|
|