Some great mods from PH2LB


Lex PH2LB  wrote to 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 :

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:

Latest firmware release v6.00R for BITeensio

W0EB and W2CTX have just completed and released a powerful new set of firmware for their BITeensio card.

Details about the BITeensio and links to the firmware can be found on the website at

Release Announcement

“As of this morning, July 8, we have released a powerful new version of the firmware for our BITeensio card, V6.00R, that utilizes the Teensy 3.6’s capability to utilize USB “Host” mode  and connect a standard USB ASCII keyboard (many wireless ones work too).  PJRC (the people that make the Teensy ) offer a standard USB cable thatcan plug into the Teensy. (You do have to add a 5 pin header to the Teensy 3.6 board) on the same side, and just to the right of the USB “Micro B” connector into which you will be able to plug the standard USB 2.0 cable.  The red wire (+5V) must be plugged into the pin indicated by a white square in the outline on the Teensy 3.6.In this version, we have implemented a comprehensive command list that allows many of the standard “menu” commands, including the operating frequency, to be entered using the keyboard.

“Also included is a brand new Keyboard CW keyer that uses most of the K1EL keyboard keyer’s character/key mapping.  The V6.00R firmware is released as pre-compiled “HEX” files and placed in the appropriate directory of the “Files” link on the website.   We are not denying anyone that wants it the source code, but you will have to ask for it with the understanding that if you cannot compile it or if you modify it, you are on your own as we just don’t have time to troubleshoot it for you.”


KD8CEC firmware hint – CW frequency display

The KD8CEC firmware provides a lot of customisation features through uBITx Manager software.  Many user of Ian’s firmware are not aware of all the built-in features of his firmware.   This is one such instance!

JJ1EPE raised a concern that his display in CW mode was “off frequency”.  Well, it was from his perspective, but then the display was all the time showing the TX frequency not the offset frequency where the station he was listening to.

CW offsets create headaches in how you represent the frequency on a display.  In SSB the frequency you see on the display is the frequency of the suppressed carrier on receive and the same on transmit.   If you tune to the carrier frequency of a received station you won’t hear anything.  To get a sidetone we have to tune off the transmit frequency by a few hundred hertz.  Most people have worked out how to set the offset on the uBITx.

The standard that Ian KD8CEC has applied is to always show the TX frequency  by default (except where RIT or SPLIT mode is selected).

However, if you want to change the approach, do the following in uBITX Manager:

– Enable Adjust CW Frequency

– Shift Display Frequency on CWL, CWU Mode

If you select this function, the LCD will show the frequency at which the radio is being transmitted (the offset you prefer is added or subtracted to the actual RX frequency reflecting the CW-L or CW-U mode selected).   This may be just the thing you were looking for!


KD8CEC releases CEC Beta firmware to support Nextion display

Ian Lee KD8CEC has released Beta firmware for the µBITx that supports Nextion colour touch screens .  He has also released matching files for installing firmware in the Nextion displays for 2.4″ and 2.8″ screen sizes.   No programming is required to use these displays.

The photo above shows the touch panel display.  Pressing on the screen will perform functions like changing band (up/down), changing frequency, adjusting the Attentuator (ATT), IF Shift and RIT, and going into Split mode.

See Ian’s webpage for details about downloading the various firmware options along with detailed instructions.

Michael VE3WMB figured after playing around with the KD8CEC firmware for a while that he  would prefer to have the Main VFO frequency and Mode displayed in the top line, instead of the bottom line of the display and the secondary info (VFO B etc) on the bottom line of his display.

Under ‘User Interface’ of the uBitx Memory Manager application (scroll way down), checking the ‘1/2 Line Toggle’ works to swap the first and 2nd lines on the display.  No coding is required to achieve this.


Display your callsign a bit longer in KD8CEC Firmware

 Jack W8TEE tells you how to make the callsign/version number appear for longer on boot up of KD8CEC firmware:
Near line 1200 in setup(), you will find code similar to:
  if (userCallsignLength > 0 && ((userCallsignLength & 0x80) == 0x80)) {
userCallsignLength = userCallsignLength & 0x7F;
printLineFromEEPRom(0, 0, 0, userCallsignLength -1, 0); //eeprom to lcd use offset (USER_CALLSIGN_DAT)
    delay(2000UL);        // Increase from 500
else {
printLineF(0, F(“uBITX v0.20”));
delay(2000UL);        // Increase from 500
The line in blue text will increase the delay time from a half second to two seconds.

New Release of KD8CEC Firmware v1.08

Ian KD8CEC has formally released version  1.08  of his firmware. This the first major release since 1.061, although there have been a number of Beta versions in between that many constructors will have donwloaded.
Some  key features in this version include:
1.Receive performance is improved compared to the original firmware or version 1.061
2.ATT function has been added to reduce RF gain (This shifts the 45Mhz IF passband down the slope of the filter giving an attenuator effect).
3.Added the ability to connect an inboard or outboard SDR unit after the 45MHz roofing filter (A low cost RTL-SDR is available that can be controlled by computer software providing a full SDR receiver)
4.Added ADC Monitoring in CAT communications
5. Supports several LCD variants including:
  • 16×02 Parallel LCD – i.e. LCD equipped with µBITX
  • the 16×02 LCD display configured to use I2C
  • 20×04 Parallel LCD with existing wiring in the µBITx
  • 20×04 LCD display configured to use I2C
  • Two 16×02 LCD displays configured to use I2C (Dual LCD mode)
6.Added extended switch support (up to 6 switches can be incorporated on your front panel to control various rig functions).
7. S Meter support – Any S-meter should be compatible.  The S-Meter will work on 2 or 4 line displays.
8.Added S-Meter Setting Assistant to uBITX Manager
9.Add recovery mode (that incorporates Factory Reset)
The pictures below show two different displays in operation on the rig:

There have been many other improvements and fixes. More information is available on Ian’s Hamskey blog.
Please see the link below for details of the release version of the software:
You can download HEX file and uBITX Manager from the link above. You can also download the source code at and see all the changes I’ve made so far.   If there is a non-critical bug in the public version, Ian will link to the new firmware from his blog.
A new version of the CEC firmware manual is anticipated shortly.

New base firmware for uBITx under testing

Ashhar Farhan VU2ESE have created a next version of the base software after thinking hard about it. You can download it  here:

Ashhar invites you all to test it. if you are not familiar with C code or Arduino programming, it is suggested you wait for a few days until we get all the bugs sorted out. This is only for Arduino regulars.

Send any bug reports directly to Ashhar’s email box at In the subject line use the word “#ubitx40”. I will try to answer all emails but I can’t promise responses to all.

Ashhar has measured the mood of the BITX20 list and has made the call to substantially borrow from Ian KD8CEC’s code and back port it to the original ubitx code.  The new code has about 10% more lines but it is substantially more robust and useful.

The main features that Ashhar has cherry picked from Ian’s code are:

1. Keyer. You have to choose which keyer type to use, but the keying is much better and robust now. This code is a total copy/paste of Ian’s keyer. The auto-keyer (that sends out preset phrases in CW) is left out. The Iamabic A, Iambic B and the handkey sending works very well.

2. CAT control. Given the popularity of FT8, Ashhar has rewritten the CAT control by following Ian’s code but follows the ubitx coding conventions. It represents a miminal set of controls.

3. Split operation has been included.

4. Rationalised menus: the menu system is now more consistent.

5. Tuning mechanism: The accelerated tuning works, and it doesn’t jump randomly like before, nor does it work at the same speed. For very long band changes, it is recommended to use the menu option to change band.

Among the things left out was support for different types of displays, WSPR, and many other goodies. The EEPROM memory map has been kept consistent with KD8CEC’s plan. You can switch between both code bases easily.

Ashhar has kept usage of English words at a minimum.


Finding a compiled Hex file for the arduino

Jack W8TEE has provided directions on how find a compiled hex file:

1. Go to your Preferences settings (File –> Preferences) and check “Set verbose output during” and check “compilation”
2. Compile the program. Do not upload as that erases all temporary files, including the hex file. In other words, just click on the
check mark icon that appears below the File menu option.
3. Scroll down the long list of output your compile generated until you see: “Linking everything together…” followed by a series of
lines with path and file names. The hex file for you program will be one of them. Just use that path name to find the hex file.

While you’re there, use a text editor to open the *.lst file. It shows a blending of C and assembler generated by the compiler. It’s an interesting way to find if one way of writing a piece of code is “better” (i.e., faster execution, or perhaps using less memory) than an alternative way.


KD8CEC as the factory firmware?

Ashhar Farhan VU2ESE asks:

“Given that Dr.Lee’s software is now pretty stable from 1.06 onwards, what do you all say about using this as the ‘shipped’ firmware?”

The responses have been  varied.

The case for using KD8CEC firmware has supported the suggestion of supplying the KD8CEC version as the default firmware. There is no question that the KD8CEC sketch represents more mature firmware. It runs on an unmodified uBITx, but provides for minor hardware enhancements that add additional functionality.    All other firmware options require hardware changes prior to installation, so there is no obvious contender from other firmware developers at this juncture.  This is not to downgrade the importance and innovation brought by other firmware developers.    Each firmware hack has its merits and brings features that are important to groups of µBITx constructors.   No other firmware, other than the stock firmware, has such a large group of supporters.

The KD8CEC software brings a significant increase in the range of features and reliability of the product.   Manuals are available for both the stable version and the beta version of the firmware.  The factory product does not come with a manual, has not been improved in six months or even had basic bugs removed, and has caused frustration for some constructors.   This is not to say, that the stock firmware is of low quality – it is basically sound, but needs work. Ashhar has not had time to address these issues because of the huge demand for the µBITx and need to resolve other issues as they have arisen.

The case for not using KD8CEC firmware

There are of course arguments against using the KD8CEC version as the factory install.   The feature packed nature of the firmware leaves little room for constructors to hack the firmware to customise it for their own purposes.  This has been largely overcome now through the modularity of the latest firmware design.  Features can be enabled or disabled in the configuration section of the code.   This modularity will become increasingly important as hardware enhancements are combined with code to support the hardware changes.   The addition of uBITx Manager software for the PC expands the potential to customise the firmware in future to reflect different hardware configurations.

Suggestions that the firmware is not a good fit, because the factory alignment procedure is not included by default, is a complete red herring.   Different features can be configured by setting a  few configuration flags in the sketch.  This is a configuration issue, not a practical issue.  The code remains in the sketch and the sketch can be simplified by removing many of the extensions through a simple five minute configuration exercise to produce a stock version.

Some prefer Ashhar Farhan’s unique approach to tuning.  This is a matter of personal preference. Again, this feature could be reincorporated easily, and enabled or disabled through a single configuration setting that chooses the tuning style that suits the user.

The biggest improvements to functionality for just about any modern appliance come as a result of firmware enhancements.   µBITx firmware enhancements come free, but hardware enhancements cost constructors.

Note: This article reflects the personal views of the author (Mike ZL1AXG) and not those of the manufacturer.