This article on adding an external keypad to the K3 was created to make it simpler for the next poor sod down the road to add a Genovation CP48USBHID, 48 key keypad, or the Genovation CP24USBHID, 24 key device to their K3/P3 devices. I initially learned about the Genovation keypads on the Elecraft mail list. It sounded to me like several people were talking as if they had them working, so I asked how to set one up, and got nothing back… I asked again a few weeks later, only this time on both the Elecraft, and the Yahoo mail lists. I received several replies, all saying they would like to have one of these working as well. I did get one lone reply from a person who said, “yes, but I did it a year ago, and have now forgotten how”. From that I concluded I was on my own in getting these two devices connected. Given I agreed with the general premise that having a keypad available to send macros to the radio would be good, I decided to move forward with this project and see how far I might get. I contacted the Elecraft support team first, and got, “only the listed keyboards will work”, response. However, in the discussion, I got what would later turn out to be a vital piece of information in making the connection between these two devices work.
What was that vital piece of information– the P3 will not recognize a Multimedia Keyboard, period. If a keyboard identifies itself as multimedia, (which the stock Genovation CPXXUSBHID devices do), the P3 totally ignores the keyboard as if it is not plugged in. That single issue appeared to be the only reason the Genovation keypad was not simply plug and play with the P3/SVGA. I next contacted Genovation support to inquirer about getting the device ID changed. To my delight, I found a support department that was totally willing to go to almost any length to help, up to and including programming a special version of the Genovation software which did not ID itself as a multimedia keyboard.
While this is probably a very small change in the software, the willingness of the support staff at Genovation to help floored me. My hat is off to Genovation and the individuals there. I will recommend a Genovation product to everyone that even hints at needing an external keypad for any reason as a result of this treatment.
Genovation took about two days to create a changed OS for their pads. This file goes into the Genovation CP48USBHUD keypad, using the standard upgrade program they include with each keypad, which changes the IDs of the CP48USBHD to a non multimedia keyboard, thus allowing the CP48USBHID series of devices to simply plug into the Elecraft P3/K3. Genovation is currently working on a file for the CP24, and expects it in a few weeks. I will link below when it is available. The software provided here has released for download on this site by Genovation. Neither Genovation, or myself can be held responsible for any problems this creates on your end… If you are unsure, don’t use it.
Here is what I needed to get this project working, with links to each item:
- Elecraft K3.
- Elecraft P3, with SVGA.
- Genovation CP-48USBHID keypad.
- Software upgrade file from Genovation for the CP48USBHID, or for the CP24USBHID.
- External USB dumb keyboard.
First a bit of history, and a lesson on how each device works, what each device expects, and finally a how to on how I got them working together.
How the P3/SVGA works:
The P3/SVGA can hold at least fifty macros for use with the K3, each macro is programmed into the P3 in advance of use, and each macro has at least the following three details attached to it:
- A memory number within the P3.
- A trigger character to look for, associated with the above memory number.
- The actual macro itself.
You program all macros into the P3 in advance of use and associate a numbered location within the P3 with each macro you program. Assuming the P3 is not in macro program mode, when the P3 sees a character come in on its USB port that character is looked at, and then compared to the list of preprogrammed trigger characters you put in when you programmed the P3. If no match is found between the trigger coming in, and a triggers already programmed in the P3, the incoming character is ignored and nothing happens. If on the other hand a match is found, the P3 knows it has found a valid trigger, and sends out the macro associated with that triggers memory location within the P3. More on this later, with a walk through.
How the Genovation works:
The Genovation keypads have either forty-eight or twenty-four keys on them depending on which model you purchase. Each individual key can be programmed to send a single character, or a series of characters. Further, each key has a removable plastic cover so you can put a label under the plastic. All of this allows you to program a key, then label it, then use it to send a macro trigger to the P3. Like the P3, the Genovation also needs to be programmed in advance of use. Fortunately Genovation provides a rather nice piece of software with each keypad for just this task. Once a key is programmed, if you tap that key, the Genovation sends out the character(s) you pre-programmed into it via the USB port. This lends itself well to the function of sending macro triggers to the P3.
How the the Genovation Keypad, the Elecraft K3, and the P3/SVGA work together:
In short, they don’t work together at all in their stock configurations, you need to download either the 48 key, or 24 key update file above, which was constructed by the Genovation support team and install it into the Genovation keypads prior to anything you do here. Again Genovation has a tool for this, and again, it is included with the keypad when you buy it. Follow the instruction in the Genovation install folder on how to upgrade your keypad, using the file here as the upgrade file. It takes about five minutes to upgrade the keypad. When you are finished, the P3 will recognize the Genovation Keypad as a dumb keyboard.
Now– assuming that the P3 is NOT in macro programming mode, when the P3 sees a trigger character come in on the USB port, (from the Genovation, or a keyboard), the P3 looks at that trigger character, and then fires the macro associated with that trigger character into the K3.
A quick example might be– if you program the letter “a”, as trigger for the macro to change the bandwidth of your K3 into your P3, then later, (with the P3 NOT in macro entry mode), you send an “a” into the P3 via the USB port, the P3 fires off the macro you programmed to change bandwidth of the K3.
All of this means that each key on the Genovation keypad must represent a unique trigger in the P3s macro library, and that each key must also have a unique memory location associated with it. Both the triggers and memory locations need to match what is in the P3 if you want the correct macro sent to the K3. I decided it would be best to program the Genovation keypad just once, so each key got a value of a-z, 1-0, and F1-F12 programmed into it left to right, and wrapping downwards at the end of each row, look in the lower right of each key to see the programmed trigger. At this point I would click on the chart on the left, expand it, then print it and get it in front of you. Looking at Figure 1, you will see that each key has a unique, small number in the upper left corner, this number represents the P3 memory location that single key will trigger. In the lower right corner of each key is the trigger character that will be sent to the P3, when that key is pressed. In the middle of the key is what the macro I want triggered does, in English, so I remember it later. For the moment, lets assume you have a fully programmed, and updated Genovation keypad, and lets say you want to program a key to change the bandwidth of your K3 when you press the “BNDW 2800 HZ” button on the Genovation. This key is in the light blue row on the top. Note it has a number 4 in the upper left corner, and a letter “d”, in the lower right corner. I have previously programmed the P3 to contain a macro to change bandwidth of my K3, at location 4, using a trigger of “d”. Now when I press the “BNDW 2800 HZ” key, the Genovation keypad sends out the character “d”, which can be seen in the lower right of the “BNDW 2800 HZ” key. The P3, (not caring what is connected to it, but seeing a character on the right port), sees this incoming character, (or trigger), and looks up the macro associated with that trigger, the P3 associates that trigger with the macro stored at location 4, (upper left hand corner of the key), and fires off the actual macro programmed in location 4 of the P3 to the K3 and the bandwidth changes.
This all seems overly complicated, and the process of putting it in writing at this detail level is why. The short version of this is in essence– I program the Genovation to send a “d” out the USB port when I press the 4th key from the right on the top row, and when the P3 sees that “d”, it sends the macro I associated with the “d” to the K3.
Keeping your life simple:
Wanting to keep things simple down the road, I decided that all I needed to do was to program the keypad using the triggers in the lower right of each key, once, not every time I wanted a macro changed. Creating the template to the left allowed me to do this. Using the Genovation software I programmed the CP48USBHID, to send the characters shown in the lower right of each key when that key was pressed. I should never need to program the Genovation again… If I decide to change a macro, I look at the chart to the left, decide which key I want to use for the macro, then look up that key on the template, and from the template, I can see both the trigger I need, and the memory location I need to use to program the macro into the P3.
Changes take almost no time:
Once the Genovation and the P3 are programmed, changes take almost no time, I unplug the Genovation, plug-in a keyboard, update the P3 memory location representing the key I decided to use on the Genovation, take the P3 out of programming mode by hitting ESC, and I am done. I then remove the keyboard, and plug the Genovation back into the P3. The template on the left does all the work of keeping things straight. If you click the template, you will get a much larger version you can use as a programming guide. Just right-click the template and select download to get a copy of it. I also use the template for making labels for the keys on the Genovation. Use your favorite graphics program to scale it to the correct size, fill in the labels, and then print it, cut the new label, and insert it under the key top and you are done.
A few hints:
- When you are done with programming the P3, ALWAYS hit ESC. This takes you out of macro programming mode and leaves the P3 in the right mode to allow the P3 to accept incoming triggers. If you don’t nothing will happen when you hit the Genovation key.
- I also created a spreadsheet, CP48-Master-Spreadsheet… I use it to keep track of what I am doing macro and programming wise. I make my changes to the spreadsheet, then program the P3 from that. Trust me, it avoids errors.
- Keep your keyboard handy for the first few days after getting this working, you will suddenly start thinking of more, and more macros to add.
- Make sure the P3 SVGA DATA mode is turned on.
This was a fun project, and one I have wanted to do from the first day I had my K3. You see, I had an iMate for my old 756 Pro III, and it allowed me to trigger four different memories on the 756 PRO III, either voice or CW. I have missed it from the day I switched to the K3, so this is a welcome project to have finished. Here are a few macros I have programmed up for the keypad now:
- Split + 1.
- Split + 5.
- Split Cleanup.
- Band up.
- Band down.
- Bandwidth for each mode.
- Mode select.
- Memory triggers, works for voice and CW. (M1-M4)
- Preset frequencies to go to.
- Fire off memories on the K3, voice or CW.
All single button presses, the list goes on and on, the more I use this the more I find I need it, and the more macros I think of. At this point, I can see where 48 are not enough. Have fun, and if you have questions, please post them here as a comment, I will try to answer your question, that way the next person may find your question and the answer useful and not have to wait.