K3 and KX3 Macros

In response to a question that came up on the Reddit amateur radio IRC channel #reddinet I decided to write-up the macro settings I'm using on my KX3 and K3.

A thread on the Elecraft Mailing List in March of 2013 was discussing the use of self-modifying macros to chain multiple functions on a single button.

The examples given were for operating split (cycling though various split values) and for modifying the TX EQ for various applications.

The original idea creator, Mark Goldberg, added a few more decent examples.

If you are going to modify these for your own needs, you would benefit from having the K3 & KX3 programming manual at hand. Version E11 from page 6 covers some useful ideas.

Update 2015-01-08: Frank, KG6EYC, has found a bug in the sub-rx disabling code and has provided updated, tested macros for the split loop. This involved adding SB0; to the NORM macros. I haven't tested on the KX3 yet, but Frank says it works well on his KRX3 equipped K3.

Update 2016-05-17: NV3Y points out there was an error in the SPLIT+10 macro. Now fixed. His blog post also has some macro tricks on it. Thanks!

Accordingly the sample macros were (for the KX3):

TX EQ Settings


    1 RAGCHEW TE+06+06+00-06+00+04+08+12;MN110;SWT27;DELAY;SWH18;DELAY;MN255;
    2 DX      TE+00+00+00-06+00+04+08+12;MN110;SWT20;DELAY;SWH18;DELAY;MN255;
    3 VERYDX  TE-06-06+00-06+00+04+08+12;MN110;SWT28;DELAY;SWH18;DELAY;MN255;
    4 FLAT    TE+00+00+00+00+00+00+00+00;MN110;SWT19;DELAY;SWH18;DELAY;MN255;


    1  RAGCHEW  TE+06+06+00+06+00+04+08+12;MN110;SWT12;SWH45;MN255;
    2  DX       TE+00+00+00-06+00+04+08+12;MN110;SWT13;SWH45;MN255;
    3  VERYDX   TE-06-06+00-06+00+04+08+12;MN110;SWT24;SWH45;MN255;
    4  FLAT     TE+00+00+00+00+00+00+00+00;MN110;SWT11;SWH45;MN255;

Split Settings


    5 SPLIT+5  SWT25;SWT25;FT0;SB0;FT1;SB1;LK1;UPB7;RT0;XT0;BW$0280;MN110;SWT29;SWH26;MN255;
    6 SPLIT+10 SWT25;SWT25;FT0;SB0;FT1;SB1;LK1;UPB7;UPB7;RT0;XT0;BW$0280;MN110;SWT33;SWH26;MN255;
    7 SPLIT+15 SWT25;SWT25;FT0;SB0;FT1;SB1;LK1;UPB7;UPB7;UPB7;RT0;XT0;BW$0280;MN110;SWT33;SWH26;MN255;
    8 NORM     LK0;FR0;SB0;MN110;SWT21;SWH26;MN255;


    5 SPLIT+5  SWT13;SWT13;FT0;SB0;FT1;SB1;LK1;UPB7;RT0;XT0;BW$0280;MN110;SWT29;SWH47;MN255;
    6 SPLIT+10 SWT13;SWT13;FT0;SB0;FT1;SB1;LK1;UPB7;UPB7;RT0;XT0;BW$0280;MN110;SWT33;SWH47;MN255;
    7 SPLIT+15 SWT13;SWT13;FT0;SB0;FT1;SB1;LK1;UPB7;UPB7;UPB7;RT0;XT0;BW$0280;MN110;SWT34;SWH47;MN255;
    8 NORM     LK0;FR0;SB0;MN110;SWT27;SWH47;MN255;

How do these work?

These RELY on being programmed into the specific memory / macro slots shown above. That is because after setting the transmit EQ (TE.....;) the remainder of the macro is reprogramming the macro button to be the following (or first) macro.

A quick summary of button codes useful in these examples:

Label KX3 K3
PF1 H18 H45
PF2 H26 H47
1 T19 T11
2 T27 T12
3 T20 T13
4 T28 T24
5 T21 T27
6 T29 T29
7 T32 T33
8 T33 T34
A>B T25 T13

Both buttons are accessed with either a hold 'H' action or a tap 'T' so the appropriate macro codes for the PFx buttons are, for example:

Label KX3 K3
PF1 SWH18; SWH45;
PF2 SWH26; SWH47;

The general flow of each of the chained macros is:

  • Set radio configuration desired.
  • Enter macro-set mode.
  • Select the next macro number to assign to PFx
  • Push and hold PFx.

Here it is again - with explanations for each section. If we were to re-write this in slightly more abstract form it would be (note this isn't something the radio understands):

    1 RAGCHEW TE+06+06+00-06+00+04+08+12;MN110;SWT27;DELAY;SWH18;DELAY;MN255;

TE+06+06+00-06+00+04+08+12; : Set the Transmit Eq parameters.

MN110; : Select the Macro Menu funciton.

SWT27; (KX3) or SWT12; (K3)

: Tap numeric keypad '2' (program macro slot 2 into PFx specified below.). This is the effective 'chaining' of macros effect. Slot 2 will program 3, 3 will setup 4 and 4 will cycle back to 1.

DELAY; : Waste some time so you can see the macro name when executing - there is debate over the need for this. I don't do it on the K3.

SWH18; (KX3) or SWH45; (K3) : Push and hold PF1 - putting this on the PF1 loop.

DELAY; : See above.

MN255; : Exit menu mode.

The rest of these should now be natural and obvious.

Admittedly these are the examples from the mailing list without much modification but I wanted to document my experiences here in case someone else wants to try this and really understand what is going on.


The split macros are a bit more complex; let's look deeper:

Note that I don't do CW, so I'm using rather large splits. The programming manual on page 8 shows the values for DN[B]x; and UP[B]x; and you can select them from this table:

| n offsets | |---|-------| | 0 | 1 Hz | | 1 | 10 Hz | | 2 | 20 Hz | | 3 | 50 Hz | | 4 | 1 kHz | | 5 | 2 kHz | | 6 | 3 kHz | | 7 | 5 kHz | | 8 |100 Hz | | 9 |200 Hz |

Example command for the K3:

       5 SPLIT+5  SWT13;SWT13;FT0;SB0;FT1;SB1;LK1;UPB7;RT0;XT0;BW$0280;MN110;SWT29;SWH47;MN255;

SWT13; SWT13; : Press A>B. Twice. This sets \(VFO_B\) to be the same as \(VFO_A\) in all regards.

FT0; : Select transmit on \(VFO_A\).

SB0; : Turn OFF SUB / Dual Watch.

FT1; : Select transmit on \(VFO_B\).

SB1; : Turn ON Sub-RX / Dual-watch.

LK1; : Lock \(VFO_A\). (Protect listening frequency from accidental change.)

UPB7; : Increment \(VFO_B\) by 5 kHZ (see table above).

RT0; : RIT off.

XT0; : XIT off.

BW$0280; : Set \(VFO_B\) bandwidth to 2800 Hz. (Modify to your ear / liking). Since \(VFO_B\) is where you will TX and listening can be useful at times, I set this to 2.8 kHz. If you like, you can set this to the 1.8 kHz narrow SSB filter if you have it installed.

MN110; : Macro menu function start. (Begin chaining the next one).

SWT29; : Tap numeric button 6. (The next macro to execute on PF2 press.)

SWH47; : Hold PF2 to assign macro to PF2.

Exit; : MN255 menu mode.

Initial Button Setup

Once you load these macros, you have to assign PF1 and PF2 to a macro from their loop (respectively). This is done with the following sequence:

  1. CONFIG - Hold until in the configuration menu.
  2. VFO B - Turn \(VFO_B\) until you see MACRO n in the \(VFO_B\) display and Function in \(VFO_A\).
  3. (1) - Press keypad 1 to bring up macro 1 - which is in the PF1 loop.
  4. PF1 - Press and hold PF1 to assign the initial macro to the PF key.

Repeat the above, assigning Macro 5 to PF2 (or any one of the PF2 loop macros).

In Closing

There are endless variants on this but I've been very happy with these. To be honest I don't use the TX ones much and might put the 'norm' setting without chaining onto PF1 and keep the split functionality on PF2. Up to you to play around and decide what you like.

Thanks to Wayne Burdick (N6KR), Mark Goldberg, and Jim Sheldon (W0EB) in the original thread.

2016-05-17 : Also thanks to \@themonkeybutler for pointing out a typo.