CEC Firmware Release v1.200 for all versions of uBITX

Ian KD8CEC has released his latest firmware.  This requires a minor configuration flag to be set to your µBITx version (3, 4 or 5) in the sketch before compiling and uploading the code to your µBITx.

Earlier µBITx versions do not require upgrading as no new features have been added to the firmware other than compatibility with the new v5 board.

CEC beta release for v5 board


Ian KD8CEC has announced a beta version of his firmware (Version 1.12) for the uBITX V5 board.  He has written an article about it here.

All existing firmware functions for V3 and V4 are available on the V5 beta.

The same version of uBITX Manager will work with the v5 Board.

Only the LPF control and the frequency control part are changed in the V5 code.  Ian has released firmware V1.121 for V5.


Release of CEC firmware v1.1 (non-Beta)

Ian KD8CEC has released version 1.1 of his CEC firmware.  This the first major release since Beta version 1.097.    He has also released new versions of uBITx Manager (for Windows) and Nextion screen firmware.

Version 1.1 includes all additions or improvements from the last non-Beta release version 1.08.   This includes features and bug fixes addressed in Beta versions 1.09, 1.093, 1.095,  and 1.097.   No further changes have been made to the Version 1.097 Beta version.

You do not need to upgrade if you are using Version 1.097. This is the version with only the version number changed.

Major Changes since the last official release

  •  The firmware supports additional features for the Nextion  and TJC LCDs
  •  Read & Backup uBITX, ADC Monitoring, ATT, IF-Shift and more on Nextion LCD (TJC LCD)
  •  Factory Reset (Both Character LCD and Nextion LCD are applicable)
  • Signal Meter using ADC (A7 Port)
  • I2C Signal Meter
  • Spectrum display
  • Band Scan
  • Memory Control on Nextion LCD (TJC LCD)
  • Speed Change CW-Option on Nextion LCD
  • Fixed Band Change Bug (Both Character LCD and Nextion LCD are applicable)
  •  uBITX Manager removed the Encode and Decode buttons. The procedure has become a bit easier.
  • I2C Device Scan on uBITX Manager ( Both Character LCD and Nextion LCD are applicable)
  • Si5351 I2C Address can be changed
  • Recovery using QR-Code Data from Server
  • Nextion LCD and TJC LCD can display Spectrum and CW Decode (using Stand alone S-Meter)
  • Fixes for other Minor Bugs

Please refer to the link below for details.

Please download the related files from the link below.

Nextion LCD or TJC LCD’s GUI have not changes since the 1.097 (Beta) distribution. If you are using a different GUI that is customized by other helpful developers, you should not need to upgrade the firmware.  Some screen sizes are still not supported in ver 1.097 (and therefore in version 1.1).

For further details see Ian’s blog at www.hamskey.com

Why has KD8CEC’s firmware been so successful?

There are several alternative firmware versions available for use with the µBITx transceiver.   So why has the KD8CEC firmware been so successful with uBITx owners?

Some key reasons put forward by uBITx.net:

  1. KD8CEC firmware is fully compatible with the standard issue kit.  No hardware changes are required to make it work.  This is a critical point of difference with all of the other variants, and probably the most important factor associated with the success of CEC firmware.
  2. No custom wiring changes are required when using the firmware.  This is a further significant factor in widespread adoption.
  3. The firmware fixes problems that come with the factory firmware – although some argue that CW modes are still not fully addressed in the CEC firmware.
  4. Using CEC firmware means no loss of features from the default factory firmware.   Other alternatives offer fewer or different features from the factory firmware.
  5. Users are familiar with the  user interface, as it reflects the default firmware’s “look and feel” with the standard display supplied with the kit.
  6. It is easy to upload a hex file to the Raduino. Constructors without a working knowledge of the Arduino IDE can upload files easily.
  7. All full releases of CEC Firmware are available as open source firmware.  This follows the same structure as the original code, although most of the code has been replaced.  Open source is not released for beta versions (and for good reason).
  8. No additional processor is required, unlike other firmware variants.  A mechanism for adding additional processors has been added in ver 1.097 (Beta).   This promises a future where multiple processor support will be available.  You won’t be locked into a single processor type.
  9. Addition of a Nextion display or additional processor is relatively straightforward.
  10. The firmware on the Nextion display can be edited by others to provide a different “look and feel” or to add or subtract features.   This is independent of the firmware for the transceiver.

Using uBITx Memory Manager with the HF Signals v4.3 Firmware

Remi F1MQJ has modified the manufacturer’s v4.3 original firmware (published on may 23 2018) to include communication with KD8CEC memory manager.  

This could be very useful for those wanting to stick with the HF Signals latest firmware, while making it easier to view or update initialisation settings, such as calibration of frequency or setting the BFO injection point, in the original firmware.

Modifications are the same as those described by Ian KD8CEC  here but are adapted to the HF Signals V4.3 original firmware.

The file removes all text after .ino in your firmware directory replacing the original ubitx_cat.ino file.   

You can access this file at the following URL:

KD8CEC v1.097 Beta will be released shortly

Ian KD8CEC has been busy again in conjuring up new features in his CEC firmware.   He is tempting us with descriptions of two new features:

  • Nextion display update that makes it easy to adjust keying speed and to select the keyer type (Iambic A, Iambic B or Straight Key) even while in TX
  • Adding an additional arduino, connected to the Raduino via i2c, to provide an S-meter function.

The first feature is well explained by the photo above. The second feature is a bit more difficult to describe.   By adding a US$3 additional arduino the µBITx now has double the number of analogue and digital ports and another 32K of program space.   This could be a fun ride!  The first function is a basic one, but an important one.   A much more sensitive S-meter.   But wait there’s more, as yet to be fully described.  If you already have a Nextion screen, it looks like you may be in line for a half decent signal analyser function.

Connecting up the arduino

The circuit is pretty straight forward, and involves just a couple of resistors and a capacitor, along with wiring to +5v and ground, and the two i2c lines.

Freeing up a pin on the arduino

Previously Don ND6T used pins D0 and D1 as a means of accessing two additional digital pins on the Raduino for other purposes. These are used in USB and serial communications and are mostly available for use (except when programming the arduino or using CAT).

Another interesting approach is to use another arduino nano as an i2c slave while at the same time functioning as a backpack to your 1602 display.

 Allison KB1GMX has come up with another way of reclaiming pins. 

Looking at the relay tree it is notable there are only 4 used states and one that is “don’t care”.  That “don’t care” state allowed me to remove C155, R151, and Q17. That is replaced with two diodes to the collector of both Q18 and Q19 (cathode to the collectors) and anodes to the formerQ17 collector.

What that does is any time Q18 or Q19 is active KT1 is activated.  If that seems odd the relays are a partial decoding tree so if we encode the controls correctly we get the needed result and one free IO pin. To make it work Relay KT1 must be activated when we leave the 20-30mhz region for 20/17M or lower. Since to go lower than 20mhz we must have a signal the TXC is used as that controls the 40/80M relay KT3 but means nothing unless KT2 is activated Using two diodes as a logical OR we can then use Q18 and Q19 to force KT1 to be active. So for 20M and down KT1 is active and the other three select what bands below that. I got the IO pin and the firmware got simpler.

The code changes from:
* Select the properly tx harmonic filters
* The four harmonic filters use only three relays
* the four LPFs cover 30-21 Mhz, 18 – 14 Mhz, 7-10 MHz and 3.5 to 5 Mhz
* Briefly, it works like this,
* – When KT1 is OFF, the ‘off’ position routes the PA output through the 30 MHz LPF
* – When KT1 is ON, it routes the PA output to KT2. Which is why you will see that
* the KT1 is on for the three other cases.
* – When the KT1 is ON and KT2 is off, the off position of KT2 routes the PA output
* to 18 MHz LPF (That also works for 14 Mhz)
* – When KT1 is On, KT2 is On, it routes the PA output to KT3
* – KT3, when switched on selects the 7-10 Mhz filter
* – KT3 when switched off selects the 3.5-5 Mhz filter
* See the circuit to understand this
void setTXFilters(unsigned long freq){
if (freq >= 21000000L){
digitalWrite(TX_LPF_A, 0);
digitalWrite(TX_LPF_B, 0);
digitalWrite(TX_LPF_C, 0);
else if (freq >= 14000000L){
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 0);
digitalWrite(TX_LPF_C, 0);
else if (freq >= 7000000L){
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 0);
else {
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 1);

To this.

* this version version uses two diodes to get rid of needing TX-A
* and takes advantage of TX_LPF_C having an meaningless state
* unless KT2 is active (TX_LPF_B=1).
* tx-b tx-c band
* 0 0 10m
* 0 1 20M we enable TX-A, and get 20m, KT2 is not active.
* 1 0 40m make KT2 active and KT3 selects 40 or 80m.
* 1 1 80m
void setTXFilters(unsigned long freq){

if (freq >= 20000000L){
digitalWrite(TX_LPF_B, 0); // 10m
digitalWrite(TX_LPF_C, 0);
else if (freq >= 14000000L){
digitalWrite(TX_LPF_B, 0); // 20M
digitalWrite(TX_LPF_C, 1);
else if (freq >= 7000000L){
digitalWrite(TX_LPF_B, 1); // 40m
digitalWrite(TX_LPF_C, 0);
else {
digitalWrite(TX_LPF_B, 1); // 80m
digitalWrite(TX_LPF_C, 1);


Some great mods from PH2LB


Lex PH2LB  wrote to uBITx.net to tell us about a page on his website where he describes his uBitx (V3) mods.   This is a very nice build, and he has some good ideas.   Check his page out here


In particular Lex has developed some custom firmware that firmware geeks may be quite interested in …

“Second mod : custom firmware”

Originally based on the v2 software but merged to v4.3 and updated to code to have a lower RAM footprint (usage of F(…) macro and strcpy_P) with about 50%.

Source files can be found here : https://github.com/ph2lb/ubitx4

Over the last few months there have been a range of ideas to boost mic drive output or to add compression.  Here’s a mod designed to work with a dynamic microphone …

“Fourth mod : dynamic microphone amplifier.”

Because I like to work with dynamic microphones, I added a dynamic microphone amplifier based on the microphone preamp designed by Javier Solans Badia, EA3GCY for his ILER transceivers.

There are a whole bunch of ways to add buttons. KD8CEC does this through paralleling up buttons with different series resistor values on the encoder analogue port).   Lex has taken a different approach that will be of interest to some constructors.   He uses a PCF8574 I2C encoder (like the backpacks for a 16×2 or 20×4 LCD display) and uses the existing I2C bus…

“Fifth mod : again adding extra buttons.”

Using a PCF8574AP I2C IO Extender and hooked it up to the all-ready existing I2C bus on the Raduino for more direct menu buttons. Needs the custom firmware to direct switch between bands with a PA bandplan limitation (also has FULL option) and Step size up and down.


Something that a number of constructors have done is to remove the 7805  and supply 5v to the Raduio using a separate 5v supply.  Most are using buck or buck boost modules, but Lex has used a P-MOSFET.   There’s a good description of his approach on his website …

“Sixth mod : removing 7805 from Raduino and reverse power protection.”

Relocating the 7805 is a good idea, but adding a reversed voltage polarity to a uBitx is a must. I used a P-MOSFETs for that (also link to good video about using P-MOSFETS for reverse power protection).

Finally, you may be interested in Lex’s use of the Manhattan style technique for PCB layout.  It can look very professional as per this example: