Fixing Brand New Never Working Nano 3.0 Arduino Modules
Recently several brandnew cheap Arduino Nano v3.0 ATmega328p modules from China arrived through Aliexpress. But I couldn’t communicate with any of these modules when connected to the usb port for programming with the Arduino IDE program on my Windows 10 computer. And they all just uninterrupted blinked on led L and constantly lit the PWR led. And neither did the 6pin ISP port of all Nano boards communicate with Arduino IDE. Even pressing the Nano board button didn’t change this dead communication problem. This article will in great detail explain how to solve this annoying problem with the use of your ISP programmer. I used my TL866II for this.
The bad blocked Nano 3.0 boards were ordered for making the first version Amiga parallelport SDbox reader/writer that uses the 16MHz clocked Nano module. With this SDbox we can simply use a cheap standard micro SD card as external ‘hdd’ for reading and writing programs by using the bidirectional parallelport. Which makes the Amiga unique compared to the only one-directional parallelport of any standard PC that only outputs data. And Amiga SDbox v1a and v2.2b boards were ordered from PCBway that now greatly have improved on their previous very bad order service.
I already made the newer smaller Amiga miniSDbox v2.2B that only used the smd ATmega328p AVR microprocessor instead of the entire Nano module. And that one already worked splendidly after a bad 5 pin smd 74AHCT1G126 buffer chip was replaced that accidentally was blown while successfully programming the 328p with my TL866II programmer. (caused by a bad working pin1 U4 chip disable jumper wire when programming the 328p which caused a MISO wire conflict). And also Amiga SDbox designer Jbilander was a great help in convincing me that v2.2b really does work while searching for this culprit! If you want to know more about the Amiga SDbox just search on Youtube or Google it.
Above screencopy showed that the Nano board is recognized on COM port 16 CH340 but the upload was never starting. No matter if the old 328p bootloader or the newer 328p bootloader was selected. And as said it neither made any positive change when also the Nano board pushbutton was pressed.
I naturally tested these brandnew still useless v3.0 Nano 328p boards on my windows 7 desktop computer in older Arduino IDE version 1.8.12 and also in the newest version 2.1. It didn’t make any difference. All 4 Nano boards simply refused to be programmed. They all only constantly blinked on the L led with lit power led. And that only stopped when the Nano pushbutton was pressed. Which probably means that they do not have any bootloader, and neither do work on the ‘old bootloader’ setting in Arduino IDE either. So it was a kind of Chicken and Egg story. Because we now can’t program these boards the usual way before they are programmed in the correct way first! If I had a good bootloader working Nano 3.0 module that board could be used with the Arduino as ISP programmer method to flash over to the not working boards. But since all my Nano modules were bad and they all needed a fresh new bootloader, reprogramming using that method was no longer an option. Luckily both old 1.8.12 and new Arduino IDE 2.1 version do have the new required good working bootloader hex file inside their program structure and with the right AVR fuse setting we can fix all our dead Arduino Nano boards! Here follows where to find these Optiboot files in Arduino.
But for that we do need the ISP programming method and an external programmer to flash over this Optiboot 328 hex file into every non communicating Arduino board. Only after this is done correctly they all will work in the Arduino IDE programming environment like they are supposed to by simply using their usb port connection. Below screencopy shows the right optiboot_atmega328 boot file we need.
Because I was going to use my TL866II programmer on my Windows 10 Thinkpad laptop where the programmer file was not yet installed I downloaded the newest 1260 version from above website. And next screens show how the TL866II was correctly setup to flash over the optiboot_328 hex file.
On the Arduino Nano boards the 6pin Atmel ICSP connector is used. The marked pin 1 is the MISO pin. With pins 2 and 6 respectively being 5V Vcc and GND. And we use the 6 pin TL-866 ICSP connector as shown in below picture. When the Nano module is correctly connected to the ICSP connector and the connector is 5V fed by activating the READ or PROGRAM over ICSP function, you’ll notice that the Nano board like before blinks on the L led and continuesly lits the Power led. If it doesn’t your connector is placed wrong and you better immediately correct this before your module burns out! Which often results in a defect antipolarity schottky diode that needs to be replaced.
Next screen copy shows our Xgpro 12.60 programmer menu with the right AVR processor chosen and the correct fuses set.
If we now try to read the Nano module over ICSP we however will notice that the TL866II still doesn’t recognize the Nano processor seeing it as being some wrong $FFFFFFFF chip. At first I thought what went wrong ?
But soon I found out that this time pressing the Nano board pushbutton made a big difference! Because now the board was correctly recognized while I was keeping the button pressed in continuously all the time! I now also could read the present fuse setting being $FF, $DA and $FD. And was only letting the button free after every process had completely finished! The same procedure of course had to be followed when the programming phase was activated. And these right fuses Low
Byte, High Byte and Extended Fuse Byte $FF, $DE and $FD were chosen for our bootfile that tested excellently working in Arduino IDE. Below screencopy shows the right fuse selection and the selected ICSP port.
Here a short video can be watched that shows how the not working brandnew Nano modules only flash and never communicate with the Arduino IDE connection: https://youtu.be/eu8XmaltmrU
And this video shows the successfully programming of the Optiboot 328 hex bootloader file into the processor of the Nano board over ICSP with my TL866II: https://youtu.be/ovVRPcq9v8Y
Next screen copy also shows how the Nano 3.0 board was successfully read over ICSP. With the read fuse configuration of the original boot loader from the not communicating over usb Nano modules.
And the screen copy after that again shows the now successfully flashed WORKING Nano module.
This probably also should work with other programmers that support the ICSP method like the much trusted GQ-4×4 (now using v7.32) that was also used to enhance my 2 well over 35 years old Tektronix
oscilloscopes with new firmware in brand new Ferromagnetic Ramtron/Cypress replacement SRams instead of the old battery backupped SRams (to preserve and make sure the scope calibration data never gets lost!). Which can be done with 6 about 20 cm long wires connected to the lower area of the 40 pins ZIF socket. (or longer when a special JTAG adapter socket is placed in the ZIF socket). But I’ve not tested the more expensive GQ-4×4 programmer after the TL866II/XGpro12.60 programmer already successful was used to fix my not over usb programming Nano boards.
And for those who do not have a TL866 or TL866II programmer there is also another ISP programmer option that was tested working! With the cheap easily made or bought and by Arduino IDE fully supported USBtinyISP programmer it is even much easier because that one doesn’t even use a COM port setting! AND is also fully capable in writing the boot loader onto the not working Nano modules over its ISP connection in seconds! The USBtinyISP programmer however is only limited in writing the hex file size and so AVR memory size it can handle like with the larger ATmega2560 that it not completely can flash. Why in such cases – like with my RCT tester board from 8bitmuseum.de – that facilitates the 2560 microcontroller – the Pololu v2.1 will be a better suited programmer. Then used with the Pololu v2.1 programmer configuration program v1.1.0 and with AVRdudess 2.4 (avrdude version 6.1). Sadly the Pololu configured as STK500 v2 failed completely in Arduino IDE programming the boot loader into the Nano modules over ISP for unknown reason.
But both previous given methods, The Optiboot_328p ICSP and the USBtinyISP method, do perfectly work in writing the boot loader over ISP (also called in-circuit-serial-programming or ICSP) into the not over usb working Nano boards.
Which may be of interest to Amiga owners who also want to build one of these SDbox SD card reader/writers. The newer miniSDbox is probably a better choice because it also fits entirely inside a 25 male pin sub-d parallel port shell but requires a steady hand for soldering those tiny smd components. And requires soldering in a 32 pin smd ATmega328p avr processor instead soldering in a complete Nano board like in version 1. Why SDbox version 1 is larger and also requires a 3D printed case.
Those who still do not have a good programmer now maybe see why it may be a good idea to buy or build one too! The only thing that the TL866II still can’t program or read in memory size are the larger ATmega 2560 Arduino AVR microcontrollers. However burning over the very small bootloader file into the larger ATmega 2560 will be no problem. The here used Nano 3.0 board ATmega328p is definitely in its very large device list. Including the standard device list for testing the common CMOS/TTL chips.
Anyway these brand new Nano 3.0 modules are with only +2.30 euro the piece worth it even when they are sold without any (working) boot loader on them.
Albert van Bemmelen, Weert, The Netherlands.
Please give a support by clicking on the social buttons below. Your feedback on the post is welcome. Please leave it in the comments.
P.S- If you enjoyed reading this, click here to subscribe to my blog (free subscription). That way, you’ll never miss a post. You can also forward this website link to your friends and colleagues-thanks!
Note: You can read his previous article on Fixing A Defect Dual Motor Bedspring Unit
Parasuraman S
September 2, 2023 at 9:30 am
My head reeled after reading half way through and I just stopped! Many went above my head! However, what I noticed is that this type of article is what is required for the present generation and it will contribute well towards that! Old timers with blocked brains like me may not be able to imbibe much! Nevertheless, it is a very informative and good article and state of the art! Many thanks for sharing, dear!
Albert van Bemmelen
September 2, 2023 at 1:56 pm
Thanks but that is exactly how I felt when I previously was completely unable to program the 4 brandnew Nano 328p 3.0 boards over the usb connection dear Parasuraman (lol)!
Anyway the USBtinyISP programmer is completely open-source and free to make if you need one too. Here a few internet links to the DIY making. Although the first Github article might seem rather complex. The second link is rather funny, very informative and probably easier to make:
https://alw1746.github.io/projects/usbtinyisp/index.html
https://www.instructables.com/Build-a-USBTINY-ISP-Programmer/
Only if these links to the DIY programmers also share a firmware file to place in the programmer we are able to start using these as working device for our own projects! That may be an Arduino .ino file or a .hex file we first must flash into the tiny avr chip of our USBtinyISP programmer with Arduino IDE or with Avrdude or Avrdudess. Best regards!
Parasuraman S
September 2, 2023 at 9:56 pm
Many thanks!
Yogesh Panchal
September 2, 2023 at 2:21 pm
Albert, Now a days Programming is must for every device because every controller chip is programmed & you cannot repair the equipment by just replacing the chips.
Albert van Bemmelen
September 2, 2023 at 4:06 pm
I completely agree! And that's why I already own more programmers than I ever could think of. Most of those are universal programmers like the RT809H Nand reader, the Genius G540, the older also PAL chips reader/programmer Xeltek SuperPro L, and the modern GQ-4x4 and TL866II with older TL866 mentioned in the article. And probably also the PICkit 3 and 4 are worth mentioning because they apparently support more chips than PIC only. On which the I(C)SP function is also a very important ability!
Waleed Rishmawi
September 2, 2023 at 5:18 pm
I bought the EZP2010 and hardly every used it. sometday I will get to it and make it work somehow. thanks for sharing all this information that most of it went over my head but I appreciate the effort in sharing such valuable information. have a blessed day
Albert van Bemmelen
September 2, 2023 at 11:13 pm
Understood. Your EZP2010 is a special fast Bios chip copier that got newer upgrade models like the EZP2023. It also supports SPI programming mode ideal for reading and flashing monitor Bios chips. Which is something also all universal programmers are able to and more! And they also are really fast like the RT809H and the TL866II. Have a good and blessed Weekend too Waleed!
Albert van Bemmelen
September 3, 2023 at 2:57 am
PS: Because the in the article mentioned GQ-4x4 universal programmer in ICSP mode is limited to only about 20 cm short signal wires at maximum, we need a special adapter to fix that problem. For this the special signal amplifier expansion adapter ADP-56 board is available that can be inserted into the 40 pins socket to buffer and enhance these ICSP signal levels. Like it was sold here on Amazon => https://www.amazon.com/ADP-056-circuit-programming-adapter-GQ-3X/dp/B00HI23S3E
Sadly now sold out on many websites in Europe and only in stock in Hungary from EPROMIROK.HU. Where I recently ordered this special ICSP adapter board so it can be used to program over JTAG, SPI and PIC chip in circuit. Also because ordering from the programmer manufacturer www.mcumall.com in Canada is too costly because import fees and VAT are added for products from outside Europe.
moshe jacobson
September 3, 2023 at 8:38 am
Albert...this article is up to your usual superb standard...great stuff!!
Very useful & full of good hints...thanks for sharing & writing.
Albert van Bemmelen
September 3, 2023 at 4:56 pm
Thanks moshe! I do seem to have written often about programming and flashing stuff which to me is a very interesting and important part of todays modern electronics.
And to be thorough in this respect it is good to know that also the Xgecu/ Minipro or however the TL866II, TL866 with 6 pin ISP connector is named, does have a special amplifier board available. https://nl.aliexpress.com/i/33047996482.html?gatewayAdapt=glo2nld
Although I up to now didn't need it yet. But I suppose I do in case longer wires are used to flash destination boards over longer distances.
Mohamed Kikia
September 4, 2023 at 7:07 pm
Excellent! I have a few nanos which I bought some time ago and have never used. I will more than likely have the same problem. Thanks for the effort put
into explaining the problem and the solution. I do have the TL866 programmer As well as the pick it.
Kind regards
Albert van Bemmelen
September 6, 2023 at 1:21 am
Glad to hear that you now most likely are also able to fix your not communicating Nano boards too Mohamed!
AdamS
September 4, 2023 at 7:29 pm
The solution was ingenious but I don't know why you would waste your time with a non-working brand new item when you should be demanding a refund and/or replacement!
The more people accept the shoddy, badly made rubbish supplied by AliExpress and similar suppliers, the more they will get away with supplying it, whilst laughing all the way to the bank.
Albert van Bemmelen
September 6, 2023 at 1:16 am
Although I could open a dispute which I almost also did, there afterwards was no need anymore to complain about these in general decent made quality Nano 3.0 ATmega328p 'clone' boards.
Afterall they were easily fixed with the given method and are still sold for a very acceptable price. Especially compared to original sold Arduino boards.
Albert van Bemmelen
September 5, 2023 at 12:20 pm
PS: As far I can tell both the ADP-056 and the TL866 ISP amplifier driver boards use a 74HC244 as buffer chip.