Unable to rewrite sketch on a non-genuine UNO

Board details:
UNO R3 SMD ATMEGA328PB FT232RL TYPE C

When trying to upload a sketch, this is what it spits out:

Here's what I've tried:

  • Installing the CH340 driver (until the port is recognized)
  • Checking the port connection (Device Manager check & driver check)
  • Changing the COM number port (Device Manager -> Ports -> COM5 (Right-click) -> Properties -> Port Settings -> Advanced... -> COM Port Number)
  • Reconnecting the cable to different ports (I've tried every port on my laptop and also on my computer just to make sure)
  • Uploading it on Windows and also Linux (similar error message)
  • Trying to burn the bootloader using another (Genuine) Arduino Board using ICSP connection (burning the bootloader fails)

The code I uploaded before the board started become unresponsive, this code is stuck in my board and it's still spitting out data on the Serial Monitor:
myrfid.ino from this website

I'm hitting a roadblock, I have no idea what to do next :frowning:

According the signature your board has an Atmega32

not an Atmega328PB

Oh, I just copied the information from the web page I got the board from, I suppose I've been somewhat lied to?

With this information though, I still am confused at what steps I can try

Maybe first post a sharp picture of the markings on the processor.

And if it appears to be a Atmega32, you can install the MightyCore package to add Atmega32 support to your IDE.


Tried installing it, this is what it's outputting, I'll try to take a picture of the board and the processor markings

But your card have the FT232 chip not the CH340, so the driver is incorrect.

1 Like

Hi @ReDarkTechnology.

There is a known bug in Arduino IDE 2.x that causes uploads to fail with this "Access is denied" error if you try uploading to a board using an FTDI FT232R USB chip while the Arduino IDE Serial Monitor or Serial Plotter is open.

A port can only be used by one process at a time, so Arduino IDE must automatically close the port in Serial Monitor and Serial Plotter during an upload, automatically opening it again after. For some reason, that juggling of the port control is not working with boards that have the FTDI USB chip.

If that bug is the cause of the problem you are having, the workaround will be to manually close the port in Serial Monitor/Serial Plotter before doing an upload. Please give that a try and then let me know if you still have the error while uploading:

Serial Monitor

  1. Click the X icon on the "Serial Monitor" tab in the bottom panel of the Arduino IDE window to close the tab:
  2. Upload the sketch.
  3. Open Serial Monitor again if needed (by clicking the icon on the IDE toolbar or the Tools > Serial Monitor menu item) after the upload is finished.

Serial Plotter

If you have the "Serial Plotter" window open, the procedure is a bit different from closing the Serial Monitor connection:

  1. Close the "Serial Plotter" window.
  2. If the "Serial Monitor" view is not already open, select Tools > Serial Monitor from the Arduino IDE menus to open it.
    We must do an open/close cycle on Serial Monitor as a workaround for a bug in Serial Plotter
  3. Click the X icon on the "Serial Monitor" tab in the bottom panel of the Arduino IDE window to close the tab:
  4. Upload the sketch.
  5. Open Serial Monitor and/or Serial Plotter again if needed after the upload is finished.

Please let me know if you have any questions or problems while following those instructions.

1 Like

Okay, thank you! I've installed both drivers now
Also followed @ptillisch steps, it does get rid of the Access Denied error now but now, when I upload my sketch, it doesn't throw an error, it just resets and keep the old sketch


Here I uploaded the blink sketch but:

Here it seems like it's still using the RFID sensor code (I've cleared the console after the blink upload) then pressed the reset button


This is the best focus my phone can get

That is progress at least!

Please try this experiment and then report back with the results:


:exclamation: This procedure is not intended to solve the problem. The purpose is to gather more information.


  1. Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
    The "Preferences" dialog will open.
  2. Uncheck the box next to Show verbose output during: compile in the "Preferences" dialog.
  3. Check the box next to Show verbose output during: ☐ upload.
  4. Check the box next to ☐ Verify code after upload.
  5. Click the "OK" button.
    The "Preferences" dialog will close.
  6. Attempt an upload, as you did before.

Now please reply here on the forum thread with the following information:

  • Did the upload process succeed this time?
  • If the upload failed, the full text of the upload output, as shown in the "Output" panel at the bottom of the Arduino IDE window.

Okay, I changed my settings to

Trying to reupload it and now it shows some additional stuff?

When the "Verify code after upload" preference is enabled, after finishing an upload Arduino IDE reads the memory on the Arduino board and compares the read data against the data of the compiled sketch binary file on your computer that was uploaded to the board. When it did that, it found that the data on the Arduino board did not match what should have been there. This means the uploaded program was not written to the memory in the Arduino board during the upload process as expected.

It is possible that a short or external circuitry connected to the Arduino board could cause this type of problem by interfering with the upload process.

Make sure the board is not sitting on anything conductive that could short the contacts on the bottom of the board. Make sure there isn't any conductive debris (e.g., strands of wire or component leads) on the board or on the surface the board is sitting on.

If you have another USB cable on hand, try changing the cable. Maybe a damaged or defective USB cable could be the cause. Make sure the USB cable is fully inserted into the USB socket on the board and computer.

If you have a shield or any external circuitry or components connected to your Arduino board, try this experiment:

  1. Disconnect the USB cable of the Arduino board from your computer.
  2. Disconnect any shields, modules, external circuitry, etc. from your board.
  3. Connect the Arduino board to your computer with a USB cable.

Now try uploading a sketch to the board again. Does the upload succeed?

This experiment will determine whether the upload error was caused by interference from your external circuitry. If so, you can then focus your attention on identifying the specific problem with the circuit and resolving it.

Okay, so here's what I've tried

  • Putting the board on top of non-conductive materials (wood, plastic/PLAs, wool, cardboard)
  • Changed the USB Cable (3 different cables)
  • Cleaned the board to make sure there's nothing interfering the bottom or the top of the circuitry
  • Gently push the cables into either port of the board and the computer
  • Trying out connecting it with my laptop again just in case it's my computer's problem

Well, sadly, same result :frowning:

Some users who experienced unexplained upload failures at the verification step reported that the problem was resolved by performing a "Burn Bootloader" operation on the board.

A program called a "bootloader" is stored in a special area in the microcontroller's memory. This program receives the sketch program upload data from the computer and writes the data to the program memory. When you perform a "Burn Bootloader" operation, you upload a new copy of the bootloader program to the microcontroller.

It is not clear what could cause the bootloader program to be corrupted in a manner that allows it to communicate with the computer as usual, but fail to write to program memory, without the microcontroller having suffered physical damage (which can not be fixed by a "Burn Bootloader" operation). However, if it has apparently helped others to restore their boards to a usable condition, burning the bootloader might be worth a try.

I know that unfortunately you have been experiencing some strange failures when you tried to perform a "Burn Bootloader" operation. However, I saw that the last time you tried it, the chip was correctly identified as an ATmega328P, and the upload only failed because you had the IDE configured for ATmega32 (which was reasonable since the chip had been identified as ATmega32 previously).

So I suggest you connect your "Arduino as ISP" programmer back to the non-functional board, select Tools > Board > Arduino AVR Boards > Arduino UNO from the Arduino IDE menus, and try another attempt at "Burn Bootloader". Hopefully whatever problem (possibly a corruption of the communication between the boards caused by a poor connection in the wiring?) caused the chip to be misidentified the last time you tried that has somehow been resolved since then and the "Burn Bootloader" operation will succeed this time.

1 Like

Very odd that you get a signature from a Atmega32 out of that TQFP-32 package. The Atmega32 has 44 pins, not 32. Yours looks like the normal Atmega328P.

Maybe its just bad serial (SPI) communication and the last byte gets changed. But that's just a wild guess and you tried different cables, USB ports, etc. already.

1 Like

Sorry for the long response, I have to sleep

I tried another attempt at burning the bootloader and I think it shows a similar error?

Here's my setup (sorry I don't have any Female to Female cables ww)

I followed this forum, and it probably succeeded?

Okay this fixes it but now I can't use Board > Arduino UNO as it's Board configuration and I have to use MiniCore > ATmega328 with Variant 328PB

Here it is using Arduino AVR Boards -> Arduino UNO

and here is the one using MiniCore configuration (it finally successfully uploaded the blink sketch):

My question now is how do I fix the bootloader so it would accept the sketch when I'm using Board > Arduino AVR Boards > Arduino UNO, or do I have to rely on this MiniCore library whenever I want to upload to this specific board?

It's not a library, it's a board package. And yes, you have to rely on that.

There is no reason to be adverse to the use of Minicore. And the 328PB is actually a better processor. But of the manufacturer of your board is aware of that is another question.