Arduino UNO driver issue

I've been using my Arduino UNO board for a while know, successfully uploading projects and communicating through the serial monitor; at some point I wanted to read an EEPROM board using CH341A, so I installed the device driver.
After I finished with it and went back to my Arduino board, it is now being recognized as CH340 instead of an Arduino Uno.
I uninstalled the device from the Device Manager, I uninstalled the CH341A driver, I manually deleted the driver DLL from windows drivers folder, I manually forced it to install Arduino driver, I uninstalled and reinstalled Arduino IDE, I deleted some registry entries, I restarted the computer, but none of that seem to work, as soon as I unplug and replug the board, it automatically installs the CH340 driver even though I deleted it, how can I fix this?

Hi @sufianetouil. Does your "Arduino UNO" board have a CH340 USB chip? If so, then it is expected that plugging it in will trigger an installation of the CH340 driver.

The chip in question is a black chip near the USB socket.

The chip will usually be identified by writing on the top. This might say something like "Atmel MEGA16U2" or "WCH CH340G" or "SILABS CP2102".

Examples:

Microchip ATmega16U2

ATmega16U2

📷

MakeMagazinDE - CC BY-SA 4.0 (cropped)

WCH CH340

CH340

📷

SparkFun - CC BY-SA 4.0 (cropped)


If it isn't clear, alternatively you can provide the link to where you bought the board from and we'll see if we can determine the chip from the product listing.

Are you experiencing some problem when attempting to use the UNO board?

Hi @ptillisch,

I appreciate your assistance.

Chip on my board is an "Atmel MEGA328P", here is the link where I got it from:

The problem is that it is not being detected by Arduino IDE, it shows "UNKNOWN COM6" and I can't connect to it.

I also tried from VS Code with the Arduino extension, same thing I can't upload anything and the serial monitor fails to connect.

You are looking at the wrong chip. As I explained in my previous comment, the chip in question is the one next to the USB socket:

image

Your Chinese UNO derivative board has a WCH CH340 USB chip so it is normal and expected that plugging it in causes the installation of the CH340 driver.

This is normal and expected when using an UNO derivative board that has the cheap CH340 chip. The IDE can only identify the serial port when you are using an official UNO (or a clone board) that uses the ATmega16U2 USB chip instead of the CH340.

But the port identification is only a convenience feature. You can still use this type of board without difficulty. You simply need to select Tools > Board > Arduino AVR Boards > Arduino Uno from the Arduino IDE menus.

Please add a forum reply here that provides a detailed explanation of what you mean by this, including:

  • What did you do?
  • What were the results you expected from doing that thing?
  • What were the results you observed that did not match your expectations?

Make sure to include the full and exact text of any error or warning messages you might have encountered.

  • What did you do? - I uninstalled the device from the device manager and removed the CH340 driver from every location including registers, I then uninstalled and reinstalled the Arduino IDE

  • What were the results you expected from doing that thing? - I was expecting that reinstalling the IDE after removing every "conflicting" driver will result in installing the correct drivers and thus the board being correctly detected.

  • What were the results you observed that did not match your expectations? The device is now recognized as "USB2.0-Ser!" in the device manager.

Within the IDE, the device is coming up is "UKNOWN", so I selected it and chose "Arduino Uno" as board, then I tried to upload the default script, and I get the following output:

Sketch uses 444 bytes (1%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
avrdude: ser_open(): can't open device "\\.\COM3": The system cannot find the file specified.


Failed uploading: uploading error: exit status 1

Thanks for the clarification.

I think that, because you went to such lengths to remove the driver, you managed to get Windows to a state where it won't automatically install the driver. But that is no problem, you only need to manually install the driver. I'll provide instructions:

  1. Open the driver download page on the website of WCH, the manufacturer of the CH340 chip:
    http://www.wch-ic.com/downloads/CH341SER_ZIP.html
  2. Click the button with the cloud and downward pointing arrow to download the driver.
  3. Wait for the download to finish.
  4. Unzip the downloaded file.
  5. Open the Windows "Device Manager".
  6. Connect the Arduino board to your computer with a USB cable.
  7. You should see a "USB2.0-Ser!" device appear under the "Other devices" section of the device tree. Right click on it.
    The context menu will open.
  8. Select "Update driver from the context menu.
    An "Update Drivers" dialog will open.
  9. Click "Browse my computer for drivers" in the "Update Drivers" dialog.
    The dialog will progress to the "Browse for drivers on your computer" step.
  10. Click the "Browse..." button to the right of the location field in the dialog.
    The "Browse For Folder" dialog will open.
  11. Select the folder you unzipped in the previous step of these instructions in the "Browse For Folder" dialog.
  12. Click the "OK" button.
    The "Browse For Folder" dialog will close.
  13. Click the "Next" button in the "Update Drivers" dialog.
  14. The dialog should now show the message "Windows has successfully updated your drivers". Click the "Close" button.
    The "Update Drivers" dialog will close.
  15. Click the X icon in the Device Manager window to close it.

You should now see a port for your Arduino board under the Tools > Port menu in Arduino IDE. Select that port and try uploading a sketch to the board.

If the upload fails, then reply here with the full and exact text of the error message from the upload attempt and we'll help you out. Please do not attempt to remove the driver again as that will be counterproductive to the support efforts.

I appreciate your patience and assistance.

Here is what I get after entering the folder path in the update driver wizard:

image

What I tried afterwards is to install from the "setup.exe" within the folder I unzipped, but I got the following:
image

Even the windows automatic update fails:
|
image

I believe I messed up when I deleted the register keys, but I have no way of restoring them now, any ideas?

There is something distinctive about your report:

Normally the device name of the CH340 is "USB2.0-Serial" when the driver is not installed. But apparently certain batches of CH340 chips instead produce a device with this "USB2.0-Ser!" name. I saw some reports that people with those chips have trouble with the latest version of the CH340 driver (which is what you got when you followed the instructions from my post above. These people found that the previous version of the driver (3.7) works fine with their chip. So you might try installing that 3.7 version:

  1. Click the following link to download version 3.7 of the driver from the chip manufacturer's website:
    https://www.wch-ic.com/downloads/file/65.html?time=2023-03-16%2022:57:59
  2. Wait for the download to finish.
  3. Run the downloaded CH341SER.EXE file.
  4. A "User Account Control" dialog may now appear asking "Do you want to allow this app to make changes to your device?". Click the "Yes" button.
  5. A "DriverSetup(X64)" dialog will appear. Click the "INSTALL" button in the dialog.
  6. Wait for the driver installation to finish, as indicated by the appearance of a "Driver install success!" dialog.
  7. Click the "OK" button in the "Driver install success!" dialog.
  8. Click the X icon at the top right of the "DriverSetup(X64)" dialog to close it.

Hopefully that will be successful and everything will work fine once you have it installed.

It is possible that Windows will later automatically update the driver from 3.7 to 3.8, at which time there might be some problem. If so, it is possible to use Device Manager to do a "roll back" procedure, which will reinstall 3.7. I can provide instructions for doing that if it happens, but wouldn't worry about it unless the update actually happens.

Here s the result of the install operation:

image

In your reply you said:

But apparently certain batches of CH340 chips instead produce a device with this "USB2.0-Ser!" name

I want to specify that this was not the behavior before I mess with the drivers, it was CH340 indeed, even after I uninstalled the device and deleted the driver files manually, it kept reinstalling itself as CH340, only after I deleted some registry keys that it began coming up as USB2.0-SER!

That is unfortunate. The only thing I can think of to suggest is to roll your system back to a restore point from before the registry changes:

I see, does the Arduino Mega uses the same chip? If not maybe buying one can save me from the trouble of restoring the system?

None of the official Arduino boards use the CH340 so you should not have any problems with drivers when using a real Arduino Mega or any other official board.

Official Arduino boards are available from these sources:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.