Thursday, February 2, 2023

How to update the firmware on the QCX

This is based on the tutorial by Simon, VK3ELH found here.

1. Hardware requirements 

a. QCX built and operational 
b. Arduino Uno 
c. Computer capable of running the Arduino IDE and AVRDUDE 
d. USB cable to connect Uno to computer
e. Jumper leads to connect the Arduino Uno to the ISP header in the QCX – female one end, male other end. 

2. Software requirements 

a. Arduino IDE – Arduino IDE Link
b. AVRDUDESS – Go to Zak Kembles blog and download avrdudess - A GUI for avrdude
c. Download the version of the QCX firmware you want to install. 

To get the version of firmware you need you will have to be a subscriber to the QRP Labs email list on groups.io.  You can join groups.io here

This is what you'll see at the top of their main groups.io page.  Click on the 'SignUp' link to join.

If you're already on groups.io (or just joined and logged in), search for the QRP Labs group.  You should find this page where you can subscribe to the list:

 

After you subscribe and are allowed in ( may take a day for approval), click the files link on the left.  Find the 'Firmware for QCX kits' folder and look inside.  Here is where you will find the hex files (or links to them) for each release.

Important:  Once downloaded, be sure to unzip the file if it is zipped.

3. Preparations 

a. Prepare the Arduino Uno

The Arduino needs to be programmed to act as an In System Programmer (“ISP”).

There is a sketch(program) that comes with the Arduino IDE called “ArduinoISP”.

In the Arduino IDE program menus click File>Examples>ArduinoISP>ArduinoISP. 

Connect your Arduino to your computer and select the correct board and port from the Select Board Drop-Down Menu (or the Tools menu).

Select Board drop-down menu

 Upload the ArduinoISP sketch. 

 b. Connect the Arduino to the QCX’s ISP pins as follows:

Arduino Pin Number QCX ISP Pin
10 RESET
11 MOSI
12 MISO
13 SCK
GND GND

 

 

Power the QCX normally via the 13.8V supply rather than powering it from the Arduino to ensure it gets enough power. 

Note:  The 5V pin on the QCX is not connected to the Arduino.

4. Flash the new firmware to the QCX 

a. Start AVRDUDESS 
b. Select “Arduino” as the programmer 
c. Select the COM port the Arduino is connected to 
d. Enter BAUD rate 19200 
e. Select ATmega328P as the MCU 
f. Select the path where the new firmware is located 
g. Press the Program button.


As shown in the picture, you'll know when it is done programming the chip.

This 'modified' procedure worked for me when programming a circa 2017 QCX radio.  Your mileage may vary. 

Thanks!
Mike Dooley 
N5BGZ

3 comments:

  1. Can this procedure be used to program a blank/new ATMega328P into a QCX+ capable chip, or does it assume there's a base layer of memory that never changes and layers new firmware on top of that?
    We burned out our 328P during debug of a newly constructed QCX+, but have 328Ps laying around that I'd like to substitute in to avoid the shipping wait from overseas for the new QRP Labs 328Ps I ordered yesterday.

    ReplyDelete
    Replies
    1. Hamilton, The programming I did was on a couple of ATMega328P chips that came in the radios. I've never tried this on a blank one. However, if you have everything you need to do the programming I'd suggest giving it a try. Worst case, it won't work. Best case it will and you'll be back on the air sooner! Let me know how it goes.... and thanks! Mike

      Delete
  2. You make a really good point! The kids and I will try it out tonight. Thank you!

    ReplyDelete