How to Fix Bad Chinese Arduino Clones




Introduction: How to Fix Bad Chinese Arduino Clones

About: I like to make stuff in my free time. Especially programming, cooking, electronics etc. Lately I'm making tutorials about stuff I made the last few years.

Have you ever wondered if a cheap Chinese Arduino clone will actually work?
You pay only a few bucks and get the same product. Sounds to good to be true right?

The truth is that some work and some won't. Follow the rest of this instructable and I'll explain you how to make them all work in no time.

Here is where I got my Cheap Arduino clone

Step 1: Genuine Arduino and Chinese Clone - the CH340 Chip Problem

I use an Arduino Uno for this example but it is the same process for most Arduino models.
So here we have a genuine Arduino and a Chinese clone. Let's do the test.

My Arduino environment has been installed and is working properly. First I plug in the genuine Arduino. Everything works just fine. Now I use my cheap Chinese copy and.... the computer does not recognise the hardware.

The problem is that the clone does not use the standard serial to usb chip but a chip marked CH340. Your computer will not recognize these CH340 chips on your computer. To fix this is very easy.

Step 2: Download Software

Download the manufacturer software and istall it on your computer. This software will work for all versions of windows.
Here is the link:

This instructable is based on pc but here is a link for a solution for Mac users:

Now plug in your Chinese clone and try again. It should work just fine.

The board should be visible now in the Arduino IDE and ready to use.

I upload the blink sketch to the board and it all works.

In some cases the board might still not work. This is because there is no bootloader installed on the Atmel microcontroller ship. To solve this problem we need a working Arduino and the clone Arduino we want to fix.

Step 3: Make an ISP Programmer From Your Working Arduino

First we connect the working Arduino to our computer and open the Arduino IDE.

We go to File -> Examples and click ArduinoISP and upload this to the Arduino. Ones uploaded disconnect the Arduino.

Step 4: Connecting the Wires

Next we connect the wires from the working Arduino to the clone as follows.

Pin 10 goes to reset pin 11 goes to 11,

pin 12 to 12,

pin 13 to pin 13.

5v to 5v and ground to ground.

Connect a 10 uF capacitor between reset and ground on the working Arduino.

Step 5: Burn the Bootloader

Next we connect the working Arduino with a usb to the computer.

Go to Tools -> Board and select the chinese board that is not working. in my case it's an Arduino Uno.

Next we go to Tools again -> Programmer and select Arduino as ISP.

Go to Tools again and select "Burn Bootloader".

Go back to Tools -> Programmer and set back to ArduinoISP.

Your clone should work just fine now.

Step 6: Contribute

Arduino is great software an completely free to use.

If you are buying Chinese copies of the Arduino controller, consider making a donation to support the Arduino software. Here is a link.

Step 7: Final

If this instructable was helpfull for you, please click the favorite button.

Comments and suggestions below.

Also check out my 2$ ARDUINO INSTRUCTABLE here.

See you in the next instructable.

Tom Heylen


Donate to help me keep doing this work:

2 People Made This Project!


  • Creative Misuse Contest

    Creative Misuse Contest
  • Metalworking Contest

    Metalworking Contest
  • Water Contest

    Water Contest

138 Discussions

These are the direct words of Mazzimo Banzi, co-founder of Arduino in his book, page 1: "Getting Started with Arduino, 2nd Edition":

"Arduino is different from other platforms on the market because of these


>> It is open source hardware and software—if you wish, you can

download the circuit diagram, buy all the components, and make your

own, without paying anything to the makers of Arduino."

I do not need to say anything further.

2 replies

You are correct that one need not pay them anything. The suggestion to contribute to them was that in supporting them in their open source will hopefully insure that they will be able continue to give such great quality projects in the future.

Thanks for your post. This should make things clear.

For those who want to support The Arduino software.
Step 6 in this instructable contains a link to make a donation to the Arduino software.

Thanks for this info. My UNO clone now is working perfectly!

I have just spent half an hour trying to get access to my CH340-based Arduino clone from Windows 10. I finally got it to work by setting the baud rate in the driver.

Open device manager, find the correct port, right-click it and open Properties. Select the Port Settings tab.

In my case, the Baud rate was 9600. I set it to 115200 and could finally access my device. See attached screenshot.


Tom - a BIG thanks for this info. I got a 5-pack, none are working. Will use you procedure and should be up in no time!

Best Regard - Alan R.

Has anyone gotten the CH430's to run on FreeBSD?

Thx for the great tutorial.

Hello, I purchase Leonardo clones from Ebay. I need your help to make it work. The board is not recognized when connected to PC. I installed CH341SER and still I cannot find the board in Device manager. Please help me.


I bought several clones on AliExpress. Installing
CH341SER.EXE fixed my problems with COM port uploading.
Win 10 Pro x64

1 reply

Simply download CH341SER.EXE, install, enjoy.


11 months ago

I tried both instructions and neither worked - is ther a particular polarity that should be used with the capacitor?

1 reply

Since capacitors are polarized, yes, there is a mounting side. Anyway, if you don't use it, it should work.

Thank you for the valuable article. I figured out that the CH340 seems to be very sensitive to distortions caused by bad USB cables or USB cables that are too long. It should be the first step to check your cable before you dig deeper with the advises above. After I changed the cable I didn't even need the extra drivers from the manufacturer - the sketches load up without any problems. Happy hacking.

Hello. Where can I find driver for my clone Arduino Uno R3 with mega16u2 USB controller? ID: USB\VID_2341&PID_0043&REV_0001

hey tom

i do the same like you

but i get the error code :

ik doe het zelfde zo als je uitlegt

maar ik krijg de fout melding :

avrdude: WARNING: invalid value for unused bits in fuse "efuse", should be set to 1 according to datasheet

This behaviour is deprecated and will result in an error in future version

You probably want to use 0xfd instead of 0x05 (double check with your datasheet first).

kun je mij hier bij helpen ?

can you help me with this problem ?

2 replies

HI musti,

I have the same problem, if you have fixed it, please help me.

Hurrah! I solved my problem, after installing driver and uploading boot-loader, my cable was not working well. By exchanging cable, Now it's working.

Oddly enough, the CH340G chip has proven to be a solution to a problem plaguing people building controllers/cockpits for Kerbal Space Program. The stock standard Atmel 16U2 based Arduinos were not properly communicating under Windows 10, and we STILL have not found a solution. It was discovered that communication is fine when using the CH340G and it's different drivers.

Weird, but hey, whatever works, right! Still trying to track down the 16U2 communication issue with Windows 10 though. For the time being... I'm simply not gonna use an Arduino that uses a 16U2 for my build.

Now the fun part... Finding an eBay listing that doesn't annoyingly put BOTH 16U2 and CH340G in the listing title to stage extra hits.


2 replies

i'm not sure if this will help but i have a 16u2, and after much wrestling, i'm now quite proficient at moving it between acting as a legit clone of the atmel AVRISP MKii, and it's old role. i don't run windows generally, but i am heavy in to vmware, so i set up an XP vm (if i have to run something in an MS environment, XP is about where my trust ends with MS, plus, it gets the job done reliably so i'm not going to upgrade a system that i essentially knock off throwaway instances of for one singular purpose anyway), installed flip, it's dependencies, and this part seemed to matter, atmel studio 6.2. then , downloaded a bootloader firmware i found on the web which i would be happy to put up for anyone needing it, that's basically a clone of the AVRISP mkii firmware you can use the extra ISP header on the Uno to burn. you have to solder one wire to the part hat lacks pins, for the reset, but after having no joy with SPI on the god given SPI header i was able to jump the 16u2 in to DFU mode, and use Flip to load the MKii firmware. from there, you - and this is the part that might benefit you yourself, even using another programming solution - install something that allows you to switch the atmel USB driver to libusb. apparently, the newer atmel drivers have a problem where the software expects them to install libusb support but they don't, also from another forum, i installed something i think it was callled "zadig", and after connecting my newly flashed uno/avrisp mkii clone, you open zadig and have it replace whatever usb device your atmel appears as with a usb version. i went from getting all kinds of lockups and errors in atmel studio to burning internally oscillating 328ps with no problem and now i love being able to switch the atmega16u2 firmware around, and use it to program bootloaders without a shield, etc...why use a shield when you have a perfectly good programmer right at your disposal? anyhow i may have missed something but would be happy to help, just know, i bashed my head in to that 16u2 for hours, but when you make it work you have turned your $7 uno in to a $50 AVRISP MKii that not only programs SPI, but JTAG and debugwire, and that weird tiny mode i can't remember the name of that muxes miso and mosi for the real tiny attinys, which incidentally nothing else on the market programs. and you can switch it by shorting a pin and running flip which takes all of 30 seconds...all you need to do, probably, is fix your USB. i know i said i used XP, but the problem was supposed to be across the board. is where i got the fix and this tutorial is pretty much spot on, if you want to try using the 16u2 as an ISP, i highly reccommend it. there's another method that uses a TTL to USB adapter to achieve the same end but don't waste your time on that one it's a lot of extra work and overly complicated when the 16u2 has a perfectly good DFU mode

Sadly, most of that flew right over my head... I'm a hardware guy, TTL, logic gates, CPLDs. etc. It's someone else who's been maintaining the software plugin for KSP to do the communication. Amazingly enough, we now have THREE different plugins that do this, all in different ways.

The one thing I got out of your info... Our temporary solution was to use clone Arduinos with the CH340G chip... Or to use a USB to TTL serial adapter! XD

I think the person maintaining that plugin did eventually get the stock Arduino devices working natively again, but yeah... Hats off to guys like you, and the guy that maintains that plugin for actually knowing how to do all this type of stuff! I'm using a custom mechanical keyboard and this Kerbal Space Program controller as an excuse to force myself to learn C... SO far, i just keep building hardware... O_o Oh well, eventually I HAVE to learn, or I'll have very expensive paperweights!