Topics

Help needed to update QCX firmware #qcx #firmware


Podolsky A
 

Mates:
I have a 30m QCX which I built a while ago. I would like to update the firmware to 1.05 but am not sure how to do it using an Arduino. Can someone give me a step-by-step? I did see some instructions in the files section, but they seem to be for the U3 and do not mention the QCX. Thanks in advance.
73 de Arnie W8DU


Alan G4ZFQ
 

I did see some instructions in the files section, but they seem to be for the U3 and do not mention the QCX.
Arnie,

There is not really any difference, just the .hex file.
BUT to be sure you must first check the fuse settings. Any received from the USA distributor may be wrong. See this https://groups.io/g/QRPLabs/message/47789 and other messages in that topic.

73 Alan G4ZFQ


Podolsky A
 

Thanks Alan. I will check that out. Are fuses an issue if I go the Arduino route?


Alan G4ZFQ
 

Are fuses an issue if I go the Arduino route?
Arnie,

The Arduino is just a link between Avrdudess or whatever programming tool you use and the QCX.
It is the QCX that needs the fuses to be correct whatever way you use to program it.

Perhaps if you detail exactly what you intend to use then someone who uses that method will help.

73 Alan G4ZFQ


Podolsky A
 

So I followed the directions for using the ArduinoISP sketch with AVRDUDESS. This is what I got, and it looks like it did not work:



Does anyone know what I did wrong? Is it the fuses? If so, how do I fix it?
Tnx de Arnie W8DU


Alan G4ZFQ
 

On 17/07/2020 19:57, Podolsky A wrote:
So I followed the directions for using the ArduinoISP sketch with AVRDUDESS. This is what I got, and it looks like it did not work:
Does anyone know what I did wrong? Is it the fuses? If so, how do I fix it?
Arnie,

Please, I said "Check the fuses FIRST"
If the fuses are not correct then that adds a little extra complication.
Luckily for some reason it did not identify the chip and did not flash the .hex. It is probably a m328p.

Here https://sites.google.com/site/g4zfqradio/qrplabs_program_chip_with_USBasp are some instructions that include Avrdudess.

Check and if necessary correct the fuses first. THEN when you are sure they are correct flash the .hex.

73 Alan G4ZFQ


Podolsky A
 

Alan:
Thank you for your patience with me. Please excuse my ignorance, but how to I "check the fuses" and how will I know if they are correct or not?
Also, do I assume correctly that I do not need an eep file for the QCX?
73 de Arnie W8DU


Podolsky A
 

So I did go to the link you included and did set the fuses as set forth in that link. Still, not working. Here is what I got from AVRDUDESS:
-c arduino -p m328 -P COM8 -b 19200 -U flash:w:"C:\Users\w8du\Downloads\Arduino\QCXT1.05.hex":a 
Here is a screen shot:



N3MNT
 

Use detect to let the software determine the cpu.This verifies connection is working.
Let the software read ( check read) the fuses.  Do not click write 
Uncheck write under EEPROM and check read just in case.
DO NOT click program, but rather click GO under flash
DO NOT click go under EEPROM


Podolsky A
 

When I click on DETECT, AVRDUDESS returns this:
ERROR: Unknown signature ffffff

Then, if I check off the -F (force) box then click GO, I get this returned:

avrdude.exe: Device signature = 0xffffff (probably .reduced_core_tiny)
avrdude.exe: Yikes!  Invalid device signature.
avrdude.exe: Expected signature for ATmega328 is 1E 95 14
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "C:\Users\w8du\Downloads\Arduino\QCXT1.05.hex"
avrdude.exe: input file C:\Users\w8du\Downloads\Arduino\QCXT1.05.hex auto detected as Intel Hex
avrdude.exe: writing flash (32678 bytes):
 
Writing | ################################################## | 100% 35.66s
 
avrdude.exe: 32678 bytes of flash written
avrdude.exe: verifying flash memory against C:\Users\w8du\Downloads\Arduino\QCXT1.05.hex:
avrdude.exe: load data flash data from input file C:\Users\w8du\Downloads\Arduino\QCXT1.05.hex:
avrdude.exe: input file C:\Users\w8du\Downloads\Arduino\QCXT1.05.hex auto detected as Intel Hex
avrdude.exe: input file C:\Users\w8du\Downloads\Arduino\QCXT1.05.hex contains 32678 bytes
avrdude.exe: reading on-chip flash data:
 
Reading | ################################################## | 100% 19.93s
 
avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0x00 != 0x0c
avrdude.exe: verification error; content mismatch
 
avrdude.exe done.  Thank you.

Any ideas of what the problem may be?
Tnx de Arnie W8DU
 


N3MNT
 

Try changing device to ATmega328P.

Usually if it cant detect the uP there is a connection problem. 


Shirley Dulcey KE1L
 

Your QCX is not communicating with the programmer. The device signature of 0xffffff shows that. There are a few possible reasons, the most likely being that you are using the wrong serial port.

The EEPROM in an original QRP Labs processor for the QCX has a special signature that the firmware detects. It's a simple form of copy protection to deter people from making QCX clones. You do not need an .EEP file to update the firmware in an original chip.

You would need the .EEP file to program a blank ATMega328P (one that does not contain QCX firmware), Hans has provided it to people who need it because they accidentally erased the signature in their original processor. The reason you should read back the flags from the chip before programming is to make sure they are correct; an incorrect flag setting can erase the EEPROM contents.

On Fri, Jul 17, 2020 at 4:44 PM Podolsky A <w8du@...> wrote:
Alan:
Thank you for your patience with me. Please excuse my ignorance, but how to I "check the fuses" and how will I know if they are correct or not?
Also, do I assume correctly that I do not need an eep file for the QCX?
73 de Arnie W8DU


Kelly Jack
 

Arnie,

I wrote a tutorial for myself on this so that I would save myself time every time I wanted to update the firmware.  I updated it in November 2019 and then decided to sit on it for a few days to "let it ripen" so to speak before reviewing it but then I forgot all about it and 7 months went by!!!

Reading of your problems reminded me of it and so I've attached it here. Hopefully it helps.

Comments and feedback welcome.

It seems as though you have either not programmed the arduino to act as an ISP correctly or there is a wiring error between the arduino and the QCX.

73


Simon
VK3ELH


Alan G4ZFQ
 

Thank you for your patience with me. Please excuse my ignorance, but how to I "check the fuses" and how will I know if they are correct or not?
Also, do I assume correctly that I do not need an eep file for the QCX?
Arnie,

You need to be more patient yourself. Unfortunately most writers of instructions seem to assume everything will go correctly.
A beginner should:-
1] Click "Detect". If there is an error message then find out why. I think you should select the 328p
2] Once that is correct "Read" the fuses. If they are not correct then write the correct values. Read again to confirm.
3] Then, and only then, write the flash using the "Go" button.

It is not clear to me if you have set the fuses. If the high fuse is not D1 not then it seems you have erased the EEPROM which means you will have to contact Hans for the EEP file you have erased. If all goes well the .eep is not required.

Repeat the first two steps. If there are no errors then do step 3.
If there are errors try reducing the Bit clock. I cannot be certain but maybe your programmer is not communicating correctly.

73 Alan G4ZFQ


Alan G4ZFQ
 

Comments and feedback welcome.
Simon

Yes, that's good!
The only minor criticism I have is to use the "Go" buttons then if any other settings have been disturbed they will be ignored. "Program!" is for the confident user:-)

Oh, the wrong fuse settings were in kits supplied by the American distributor up to some time in May 2020

73 Alan G4ZFQ


Alan G4ZFQ
 

If there are errors try reducing the Bit clock.
Ignore that! It's Baud rate with your programmer, Simon's PDF gives the right info.

73 Alan G4ZFQ


Podolsky A
 

Shirley....you did it! You put me on the right track. After reading your post, I went back to inspect the jumpers connecting the QCX to the Arduino. Lo and behold, I discovered that one of the pins on the QCX (it happened to be the MOSI pin) had a bad solder joint. I re-soldered it, reconnected the jumpers and VOILA!!! Now AVRDUDESS correctly detected the atmel chip and then correctly programmed the firmware. Thank you. Thank you. Thank you!
73 de Arnie W8DU


Podolsky A
 

Simon, thank you for the tutorial you wrote. It was extremely helpful and getting the proper connections. Turns out, there was a bad solder joint on the MOSI pin of the QCX. Once I fixed that, it was smooth sailing.
I appreciate your help with this, as well as all who responded on here to my plea for assistance.
73 de Arnie W8DU


Kelly Jack
 

Alan,

Thanks, that is good feedback.

I have changed it.

73


Simon
VK3ELH


Ben Bangerter, K0IKR
 

Another word of thanks to Simon for his writeup on reflashing the ATmega328P in the QCX.  I flashed my QCX from T1.00b to T1.05 yesterday using my “original” Arduino clone.  Initially I tried and failed to communicate with the QCX processor with either that Arduino or a Nano clone.  Then I suspected that it might be a connection problem, as the “Dupont” jumpers I was using did not seem to fit very tightly on the ISP header pins of the QCX.  Jumpers from another set I had were a tighter fit, and that solved the problem.  I still was not successful using the Nano however.  The faulty jumpers are on their way back to Amazon!

73,  Ben  K0IKR