Off the deep end …

Dennis KG4RUL has gone off the deep end with his µBITX.  His current configuration, basically a rats nest on the bench, comprises:

  • Main CPU (Teensy 3.5) – handling the SI5351 control (I2C), the 20×4 LCD Display (I2c), input from the front panel controller (I2C), control of an AF DSP (I2C), control of a CW Keyer (I2C), monitoring of an SWR bridge, control of an RF Digital Attenuator (SPI)
  • Front Panel Controller (Pro-Mini) – interfaces with a rotary encoder w/switch and seventeen push buttons
  • AF DSP (Teensy 3.5) – implementing Low Pass, High Pass, Band Pass, Notch Filter and pass-through
  • CW Keyer (Pro-Mini)
  • SWR Bridge for tuning and power monitoring
  • RF Digital Attenuator from SV1AFN used to adjust drive power to PA for tuning and adjusting power by band to keep the power output more consistent

This is Dennis’ front panel design:

Jack W8TEE has let the cat out of the bag

In an earlier news item on, we speculated about projects under development by various teams.   We speculated that Jack W8TEE was up to something that involved a touch screen display and a processor upgrade.  Well the cat is now out of the bag.  The photo below was post by Jack on the BITX20 list.  This is the display panel of the JackAl board that the team will release shortly.

Al (AC8GY) and Jack picked the Teensy 3.6 because of its horsepower, good FFT library, and audio processing board. Al’s doing an info piece on JackAl which should answer most questions about it in an effort not to chew up the BITX20 group’s bandwidth.

There was no “target date” originally for announcement of the project. However, when Jack was asked to speak at FDIM, the project team thought it would be “kinda cool to show it off” at the Homebrew Show-and-tell on Friday night (8-10PM), so the target became real.

Al and Jack are starting to look like slugs who haven’t seen daylight in about six months.  JackAl should be a fun board for a lot of people because its heart is the Teensy 3.6 which has lots of resources associated with it. Currently, we are using less than 10% of both flash and SRAM.

Jack says, “I hope to see a bunch of you at FDIM …”



Add front panel switches to your uBITX

KD8CEC Firmware Version 1.073 will be released within a day or two when testing is complete.  You can download it right now and use it, but it may be further modified before final release.

Ian KD8CEC, in uBITX Firmware CEC Version 1.073 Beta, is supporting the use of up to 4 additional front-panel switches to control a range of functions normally only accessible via the menu system.

Preparations for adding additional function switches

Step 1:  You will need four push switches and four resistors.

The value of the resistors is not particularly important, but a spread of resistance values is helpful.    Ian recommends that the value of each resistance exceeds 100k ohms.   This will allow the addition of more switches at a later date.

Ian uses 470k, 330k, 200k, and 150k in his example.

Step 2: Identify the wires on your function switch

Your rotary encoder will probably have a red wire and a yellow wire currently  connected to the switch (not the three way connector on the encoder, but the two way connector).   These wires connect to Pin 4 and Pin 5 of the raduino connector respectively.

When you press the function switch on the rotary encoder the red wire (which connects to an analogue input on the arduino nano) becomes grounded to the yellow wire.

3. Install your switches and connect up resistors in series with the switches

Install up to four switches with connections paralleled with the encoder switch.   One side of each switch should be connected to the red wire on the encoder switch.   The other side of each switch should be connected to a resistor that is in turn connected to the yellow wire on the encoder as illustrated in the photo below.

All resistors should be of a different value.   A good starting point would be the values that Ian used, but if you don’t have these in the junk box, choose values you do have – as separated in value as possible.

4.Setting the switch values in the KD8CEC firmware.

You now need to save the switch information in Ian’s uBITX firmware.  To do this you need to have installed and run the KD8CEC uBITX Manager software.  This runs on virtually any version of Windows, and on Linux.  See Ian’s website for further details. and to download the current version of uBITx manager.

Extended switch settings are supported in uBITX Manager Version 1.03 or later.  Go through the following steps:

A) Connect -> Read

B) ‘Decode =>’ -> Scroll down
You will see a screen that manages the ‘Extended Key’ as shown below.

C) Press the Read ADC button.

It will probably have a value of around 254.   This is the Analogue to Digital conversion value being read by the Arduino Nano on Analogue Pin A6 to which the function key is connected and then divided by 4.

The reason for dividing by 4 is to reduce the number of bytes required for storage of the value in EEPROM.  Accuracy  of the analogue read means that greater precision is unnecessary.

Setting the mode button value

You should now measure the value when you press a button.  Click ‘Read ADC’ while holding the switch you have chosen to be used as ‘Select Mode’.

Try one or two more times and average your results.

Enter the measured value into the ‘Mode’ value on the left.

Ian connected a 470k resistor to the ‘Select Mode’ switch, so the ADC result was 235.   He set the range to -1 to +1 to prevent the switch from malfunctioning.

The values vary depending on the resistance you have used, the state of the switch, and the length of the cable.

Enter values for Band Up, Band down and Tune Step functions

In this way, enter values for the ‘Band Up’, ‘Band Down’ and ‘Tune Step’ switches

At the end of this process you should have something like this in the table in uBITx Manager:

If the switch is not installed (i.e. it is free floating while you try out this concept) it may be difficult to click on the ‘Read ADC’ at the same time as holding down the switch.   In this case, select ‘5 Sec Delay’ and click the ‘Read ADC’ button to see the count down:

When you have finished setting up the ADC ranges for each switch, you should select “encode” and then write the data to the µBITx.    Reboot your µBITx and you should now have four new switches on your front panel to avoid having to delve into the menu system to control everything on your rig.

Below is the link to a video that Ian has provided to help illustrate how to wire up the switches and set the ADC values in uBITx Manager.

uBITx assembly wiki page

After pointing out an out-of-date reference on to wire up diagram faults on the HF Signals website, Patrick W7PEA has set out to develop the Wiki (already on the BITX20 IO GROUP website), starting with a more fully developed Wire Up and Assembly Guide.

Because this is a Wiki anybody can contribute to the effort.

Wire up diagram

uBITX_wireup V1.7

This immediately revealed a PDF developed by Bob W4RJP.  This began as a simple wiring diagram to assist in wiring up the uBitX and was never intended for publication. While Bob’s µBitX is still mostly stock, over time I did revise the diagram to include a few options as well as beneficial corrective actions identified by other builders.


An alternative processor to replace the nano

Gary AG5TX  observes in a post to the BITX20 list that Protoneer has a NANO-ARM board offering for $10 + $5 (US) shipping.  This may be a viable low cost pin compatible upgrade to the nano board on the Radunio with a direct board swap out.  This will give more headroom for coding +more features and still work in the Arduino IDE environment.

The NANO-ARM has the following features:

  • Runs at 48MHz (Atmel SAMD21)
  • 256KB FLASH Memory
  • 32KB RAM
  • Pin compatible with Arduino Nano but runs at 3.3V
  • SAMD21 micro-controller same as used on a Arduino Zero’s.
  • Built in USB
  • Arduino Zero bootloader pre-loaded.
  • 20 I/O pins with 5 extra pins that can be used for I2C/SPI or I/O
  • 6 Analog Pins(ADC) with 12-bit resolution (4096 resolution point vs Arduino Uno’s 1024)
  • 1 Digital to Analog(DAC) pin with 10-bit resolution.
  • Designed and Manufactured in New Zealand

Why the Protoneer?

Gary’s selection criteria were:

  1. More Flash, so people don’t have to choose which options from the already developed software they could load, and more headroom for further development.
  2. More SRAM.
  3. Supported by the familiar Arduino IDE, where the software work is being done.

The Protoneer is:

  1. Pin compatible with the Nano for direct replacement on the Raduino board without the need to spin an adapter board (cost with shipping adder)
  2. Reasonable total cost of the complete upgrade, so it is an option more aligned to Farhan’s goal of a $100 radio.
  3. Can be changed over in a timely manner.

Gary has ordered a board, but has not yet received it or even begun to look at the software changes that will be necessary.  I do know that there will be small changes needed on which serial object is called. There may be other quirks.

The board is 3.3V so the impact of that will need to be vetted. (I see 3.3V as being beneficial).   There’s also a Real Time Clock, but he didn’t spot the familiar Vbat for a coin cell.

Adafruit seems to be doing a lot of development with the SAMD21, there could be trickle down from that, or at least re-assuring of the SAMD21 core.


GPS and digital modes

Many digital modes (such as WSPR and FT8) require reasonably price clocks which may be assisted by GPS technology.

Hans G0UPL  observes that WSPR does not require GPS. However:

1) WSPR requires precise frequency, the transmission must be within the 200Hz WSPR sub-band.

2) WSPR requires precise timing: transmissions start on the 2nd second of even minutes, +/- a few seconds. An ordinary crystal or worse still, the ceramic resonator on some Arduinos, will not provide sufficient timing accuracy to run WSPR for long.

A GPS is a very convenient and easy way to achieve both of these objectives. On the Ultimate3S kit the latitude and longitude are also converted to Maidenhead Locator which is encoded live, into each WSPR transmission. Something that is necessary if you want to use WSPR for tracking something (ship, balloon) for example the Canadian C3 expedition

Speaking of which: Jim N2NXZ’s U3S-22 balloon (running modified Ultimate3S firmware) reached Kazakhstan today. For the second time! It’s already been flying for 23 days, at a little over 9,000m altitude, and completed one world circumnavigation! See for details and live tracking (using WSPR) during daytime. Big congratulations to Jim!


W0EB build

Jim Sheldon W0EB says, “Finally I have this one where it will get it’s top cover put on and the radio goes into the ‘go box’.

“With the addition of one of our RadI2Cino cards, an I2C 4 line by 20 character display, a Teensy 3.6 adapted to plug in place of the NANO, this one is on the air in what will be it’s final configuration except for software updates when we release them. (External USB connector in place so the cover need not be removed for remote control or Teensy 3.6 programming. One nice thing about using the Teensy is the built-in Real Time Clock! UTC time displayed on the screen and with a backup coin cell battery, the clock stays active even when no +12V is applied to the radio.Also, I added Don, ND6T’s neat little AGC mod and boy does that work nicely.”

Here are a few pix of Jim’s radio as it now stands.

The panel showing the real time clock & voltage monitor on the screen — that V308b is a beta version of software and even though it was compiled on 04/01, it isn’t an April Fool’s Day joke.     This radio has a Teensy 3.6 processor, not the NANO.  RadI2Cino is available for sale in kit form, but the Teensy adapter is still prototype (and may never be offered) and without the Teensy you won’t see all the info on that display.

V is on/off for the input voltage (+12 rail) monitor, R is either N or R and indicates paddle interface normal (Tip=dot) or reverse (Tip=dash) and B indicates Iambic Keyer, mode B (A or B is selectable. T800 = CW side tone frequency – adjustable from 400Hz to 1KHz and S25 = built in Iambic keyer speed adjustable from 5 to 50 WPM. FUN=Function (same as encoder switch) the other one is the A/B VFO select and a hold gives you “Split”.

And inside … The filter on standoffs is a broadcast band interference filter. Jim has a 500 watt AM station less than a mile from the house and also KFDI’s AM station (10KW) 3.5 miles from the house. This filter is very necessary to keep them out or no ham signals could be heard.

And a close up of the interface to the 2004 display:


Microphones galore

Constructors have been uploading their microphones.  These are included in a single gallery called “microphones” and will be separated out into their own group with a separate link shortly.


uBITx is a performer from Day 1

Dave K0MBT says “I wasn’t really trying but this is still only the 4th day that I have had my µBITx.

“Using phone I was able to work stations from coast to coast of the United states. I did it on the 80 meter band using a homemade trap 80/40 dipole. My radio put out about 25 watts PEP. My power source is a 10 amp linear 13.8v Tripp-Lite. I am using the stock electret microphone.

“I logged stations in Maryland, Florida, New York, Montana, Utah, California and states in between. Most gave me signal reports of 5/4 to 5/9.  I got a couple of 4s and a 3/3 I got a 2/1 when working a Missouri station, but then I am located in Missouri. The longest contact was 1500 miles in Northern California.

“Have also done some CQ ing on 7277. I did find two Hams with bitx radios: One that had his radio out of the box but had not put it together. The other was N3GO Gary in Raleigh NC. He has a BITx40 that was modified. I talked to him on both my µbitx and my Bitx40. He said that there was not much difference in signal. I definitely hear better on the µBITx.”


VK2ETA automatic L-match using separate arduino nano

John VK2ETA has uploaded an updated folder to the BITX20 IO Group list files section.   This adds new schematics for his Antenna Tuning Unit (ATU).

ATU Design objective

1. Fits in the limited space of my Jameco case (Jaycar case here in Oz), on my second level board.

2. Tunes long wire and EFHW (worst case with the help of a 9:1 balun).

3. Works 80m to 10M.

4. Memory tune to save power and time.

5. Negligible power consumption when not tuning.

6. Must integrate with the extra (planned) features like SWR measurements, Finals’ current limiting, and power supply monitoring, and more


John settled on using a second Arduino and an L-Tuner network despite some limitations when compared to T or Z-match networks that seem to require three adjustable elements for 80 to 10M coverage.

The 2nd Arduino has the following advantages: at around US$3-5 it is much cheaper than extra I2C analogue and digital I/Os, plus it gives another 30K of programming space and 1K of EEPROM for memory tuning. It can be put in low power mode when not tuning,  as John uses the Mini Pro version (no USB port), and communication is via the I2C bus to the Raduino.

John needed an SWR meter.  He chose the Don Cantrell (ND6T) circuit as a perfect match.  He made it on a daughter board that plugs directly into the connector after the LPFs.

Browsing the internet and looking at previous solutions like the SLT+ and the Altoid Long Wire Tuner, I settled on 6 inductance values.

Switching the inductance could be done with relays, but that means 5 bi-stable relays and ten digital outputs. Same issue with the variable capacitors.

I decided to use an RC servo controlling a mylar variable capacitor and another one controlling a rotary switch for the coils.

The first challenge was to have a way of switching the capacitor from the antenna side to the transceiver side to match both high and low impedance antenna loads.  One option was a bi-stable relay.   The solution John settled on was to use a double wafer rotary switch with 12 positions and dedicated 6 of them to the capacitor on the input and 6 on the output.

He needed two digital outputs for the PWM generation for the servos and one for cutting the power off to the servos (using a common positive supply).

His main concern was the possibility of the servos not handling RFI. But in the end they were easy to tame.

The next challenge was to find a servo that could do 360 degree rotation (or at least 345 degrees) to cover all 12 contacts on the rotary switch.  There are quite a few servos that manage 180 degrees, but he was unable to find one that did a full 360 degrees. Please note there are many so-called “360 degree” servos available but they are “continuous rotation” servos and do not move to a position, just rotate at a certain speed, with no position feedback.

The first solution he tried was to use a 2:1 gearing and a 180 degree servo. It worked but was not very reliable due to the additional backlash, even with a larger servo to compensate for the power loss in the gears.

Luckily there are now “Sail Winch Servos” available in 1, 1.5, 2 and more turns, but that retain a position control. John chose the 1 turn version, which worked successfully.  It is a “GWS S125 1Turn 2BB Sail Winch Servo”.

The key challenge he faced was to ensure that the servo would settle pretty much centred on the rotary switch contacts. The angular resolution of the servo is sufficient for this but he needed repeatability. Otherwise he would destroy the contacts through arcing.

Since John controls the supply of RF power to the antenna, he can cut the power off when he changes contacts on the rotary switch.   He used a digital input on the Arduino to measure whether the contacts had been established or not, and thereby form a map of the location of the contacts relative to the angular position of the servo. When the contact is established you should get a short to ground through the coils. A pair of 1 M Ohm resistors to feed the 5V and connect to the Arduino pin,  worked very well.

He  builds the contact map once, at first tune, and uses it thereafter until the rig is powered down. It may be possible to store the map in EEPROM, but stability over time and with temperature changes hasn’t been checked.

When the servo is moved from one contact to the next you can again check at what angle the contact is established or lost to compensate exactly for the backlash. A bit of software does this, and it works quite reliably.

John has shielded the ATU with sides made from PCU board to prevent stray RF.  Apart from the capacitor servo, which occasionally displayed small jitters, the rest did not really need shielding and worked quite well without additional effort.

The main components are:

  • Arduino mini pro or nano
  • Variable capacitor and micro servo’
  • Rotary switch 12 positions with two wafers (it could be one wafer and less positions and a bi-stable relay)
  • A “one turn sail servo”
  • a P-Channel Mosfet for servo supply
  • a 5V regulator dedicated to the servos’ power,
  • the components for the ND6T SWR and Power bridge.
John uses the following I/Os on the 2nd Arduino:
  • 4 digital I/Os of which 2 are PWM
  • two analogue inputs
  • the I2C (A4/A5) lines.

John found he had enough I/Os left for the other functions that he wanted to implement on the second arduino.

Performance: With a 21m (69′) long wire and a 10m (33′) counterpoise on the ground John found he coul  tune all bands ( 60M wasn’t tested, as VK still doesn’t have access to this band), with an SWR of under 2 at all times.

A full tune sequence takes 32 seconds if the matching coil is in position 12, and a memory tune is around 3 seconds. At first tune after power-up, there is an additional delay of 15 seconds for the rotary switch contact mapping process to complete.

Total parts cost is around AU$130 (US$100 approx.), but a lot cheaper in the USA and other countries I am sure and quite a few items could already be in the junk box.


1. A complete view of the unit with the shields in place. Also the Android hands free headset (with modified software for push-on/push-off PTT).

2. Second Board (double sided fibreglass as a ground plane, plus sections of vero board) with the MAX9814 AGC, the SSM2167 mic compressor, the ATU circuit and Arduino.

3. The back of the unit with the ATU toroids, variable capacitor (the angling is to align it with the servo’s angular range), the SWR/Power bridge. Note that three toroids are used to minimise losses and prevent high voltages since the unused turns are not shorted out as in some designs.

4. A top view of the coupling of the micro servo and mylar variable capacitor.

5. A top view of the rotary switch, toroids and the contact detection circuit.

6. The SWR bridge daughter board’s back with it’s female header to provide solid ground connection and mechanical rigidity.

7. Tuning completed . P = forward power, R = SWR …. front panel labels to come!

A critique  

John provides his own crritique of the design, now that is is completed:

  • the winch servo adds 50g plus coupling of around 30g, which is a fair amount of weight, but the total build is still under 2Kg at 1.25Kg or 2.8 Pounds.
  • a single bi-stable relay instead of the second wafer for switching the capacitor over may be a simpler solution, and leave more steps for the inductance.


John has now also provided the two parts of the schematic. Part 1, the L-Network:

And the Control part:

The software can be found separately.

Reference #1
Reference #2