Tuesday, March 28, 2017


BITX CW Update
By Don Cantrell, ND6T

Since the last post (February 25, 2017 “Putting the BITX Raduino on CW”) I have made a few changes in the sketches, added a variable keying speed control, and added a Straight Key mode. In the ensuing weeks it has performed nicely on the air, superb reports from everyone.

The primary reason for the initial sluggishness in calling up the original keying routine was that the display updating necessitated a sizable delay to keep it from flickering. By moving the display update out of the loop() and putting the CW into a “while()” structure made the delay essentially disappear. It also cleaned up the code, modularizing it to make it easier to re-configure and to steal whole sections to use in other sketches. I decided to use iteration counts (how many times the subroutine ran) to create the time-out to return from CW transmit to receive. This is called “semi-break in” operation and is used on many rigs. This is still primarily a 'phone rig, after all. I was reminded about how fast the Arduino works by the number of iterations it performed in 1.5 seconds...100,000! Zoom! Yes, it read the paddle inputs 100,000 times in one and a half seconds.

The next big change was a speed control. I am not a fan of menus. I want to turn a knob and go. So I drilled another hole in the front panel of the BITX and mounted another 10K linear taper pot. I wired it like the tuning control: +5 volts to one side, chassis ground to the other, and the wiper to an unused A/D pin on the Raduino. Since the new speed control was right near the tuning control, I just wired from that for the end connectors.

The CW function reads the value and converts directly to Words Per Minute. The display shows the two-digit speed at the end of line 1 right after the “Idle” indicator on my program. I have it set for 10 to 35 WPM, pretty much my normal range. It can be changed to cover whatever range the operator would like by a couple of simple changes in the code. That code is still extremely short, small, and in simple Arduino.

I am not a person that shuns Straight Key mode, though. In fact, I rather prefer it. It is simple, understandable, and has character. Much like a persons' hand-written messages. An operator's fist is as distinctive as his call. And who can send CW slower than 10 WPM on a paddle?

With the current sketch, turning the keyer speed control to less than 10 WPM replaces the speed indication with “SK” and directs the program flow to the straight key function. Again, after 1.5 seconds of no key closure, the BITX returns to receive.

The only glitch occurs if the straight key uses a 2-conductor plug or has the sleeve and ring conductors shorted and is plugged into the 3-conductor key jack. Do that and the Raduino sees it as a request for a “dash” from paddle. This is handled by reading the speed control. If the control is set for “SK” then all is well. Leave it on a keyer speed position with such a straight key plugged in then you can expect the BITX to start transmitting “ DAH DAH DAH...” until you realize your error.

Although I was initially worried about key clicks due to the fast rise time of the keying envelope I don't see much difference from my other CW rigs. My Icom 746pro is not bothered just 100 Hz away from the 50dB over S9 signal when using a 50Hz receive filter. No one I have worked notices a problem. One operator using my conversion thought it had some chirp but it turned out to be receiver overload instead. Not the BITX, another receiver, relax.

Dmitry, EI3JQ, reported that he had to use a lower value series resistor at the signal injection point at C132. He says that the 470 ohm resistor resulted in low output. Further reports are still pending but I expect that different builds will show variation. It is my opinion that the CW output should be no more than the SSB PEP level to maintain signal purity and lessen component strain. The average power difference is nearly 10 dB and should be taken into account. Dmitry had much lower power, though. He reports nice CW contacts both in Europe and Russia now.

I also re-wrote the sketches to reduce the number of synthesizer and display refreshes. The newer versions of the etherkit Si5351 libraries ( v 2.0.2  and v 2.0.3) shut off the synthesizer outputs for a brief time when programmed for frequency. This creates a clicking in the audio. My earlier sketches were constantly updating so it was particularly irritating. Jerry, N5KYD, found this problem. I suggest using v 2.0.1 until the library is further corrected but my newer sketches have profitted from the experience.

If anyone wants a copy of the current sketch with CW, for either the 40m Raduino BITX or the 60 meter version, just write me at: ND6T@ARRL.NET  for a copy. There are changes made almost daily, lots to improve. The fun is in the innovation, after all!

de ND6T


  1. I am new to radio and just ordered my BitX40 today. Any guide to implementing the hardware changes for this mod? Uploading a new sketch to the arduino is simple enough. I would love to have CW on the Bitx40. Thank you

    1. Hi Avery, That info is in the Feb. 25th blog mentioned above but you can write me at ND6T@ARRL.net for more info. I could answer any and all questions that way. 73, Don,ND6T

  2. Hi Don,
    My names Dave call G0AYD,Ive been left a bitx 40 v3 from a SK,Would it be possible please if you could furnish mre how to add cw to the radio my email is daveg0ayd@gmail.com Regards Dave..