The CH340 (and its cousins CH341, CH340G, CH340C) is the USB-to-serial chip inside millions of cheap Arduino clones, ESP boards and USB-TTL adapters. When Windows shows the board as “Unknown Device” or the COM port never appears, you need this driver. Here’s the official WCH driver, hosted below, plus the install and troubleshooting steps.

⬇ CH340 / CH341 driver (official WCH)

Windows 10 / 11 · CH340G, CH340C, CH341 · WCH installer 4.0, unmodified

Download CH340 driver (wch-ic.com)

Official download: CH341SER.EXE version 4.0 (24 Jun 2026) from wch-ic.com, digitally signed by Nanjing Qinheng Microelectronics (WCH); EXE SHA-256 458c37bdafbe4ce3cd0baf728c232b4b765b36d7463956e9b94cdf099212cad1

The single package covers CH340 and CH341. macOS and Linux usually have this built in — this driver is for Windows; what binds the chip on each Mac and Linux system, and the Ubuntu brltty conflict, are in the CH340 on macOS and Linux guide.

Installing (the right order matters)

  1. Unplug the board/adapter first;
  2. Extract the ZIP and run SETUP.EXE → click INSTALL. A success dialog confirms it;
  3. Now plug in the board. Windows binds the driver and a COM port appears under Device Manager → Ports (COM & LPT);
  4. In the Arduino IDE (or your tool), select that COM port. Done.

Troubleshooting

Board shows as “USB2.0-Serial” with a yellow ⚠ in Device Manager? Driver missing or mismatched. Run SETUP.EXE → UNINSTALL first, then INSTALL again, replug. If the yellow mark is on a device that is not called CH340 at all, read its Hardware Ids first: the USB VID/PID lookup table names 53 bench devices and the driver each one needs.

COM port appears then vanishes / random disconnects? Almost always a charge-only USB cable or a weak hub. Swap to a known data cable, plug into a rear port.

Using it with the Arduino IDE and the port never appears in Tools > Port? A CH340 board is always an “Unknown” device to the IDE, because its USB ID is in no boards.txt — see why the Arduino IDE 2 port does not show up, which lists the USB ID of every official board and the five things that actually take a port away.

Wrong or very high COM number, or “port in use”? Device Manager → the CH340 port → Properties → Port Settings → Advanced → assign a lower free COM number.

Uploads fail even with the port selected (esp. on ESP boards)? The driver’s fine — that’s usually baud rate or the board’s boot mode. Different topic, but the CH340 itself is working if the port shows up.

Counterfeit-chip lockout? Unlike the PL2303 “Phased Out” saga or the FTDI “non-genuine device” lockout, WCH has never bricked clones — the CH340 is refreshingly drama-free, which is a big reason it took over the low-cost market.

The CH340 family

CH340G The classic, needs an external crystal — most Arduino Nano clones;
CH340C Crystal built in — newer, cleaner boards;
CH341 Also does parallel/I2C/SPI — same driver; it’s the chip on the CH341A programmer too.

Device Manager says “USB-Enhanced-SERIAL” instead of “USB-SERIAL CH340”? Then this package is the wrong one. The CH343, CH9102 and friends are a newer WCH family with their own driver and their own product IDs — and one of them, the CH343C, reports the very same 1a86:7523 ID as the CH340. See the CH9102 and CH343 driver guide for the full VID:PID table.

Which driver version you get, and why it matters

WCH has shipped this package under one name since 2009, so “the CH340 driver” says little on its own. Dates are per the Driver Fusion database, the last column per the Microsoft Update Catalog.

Version Released On Windows Update
4.0.2026.2 11 Feb 2026 —
3.9.2025.4 29 Apr 2025 —
3.9.2024.9 16 Sep 2024 Yes — 15 Sep 2024, 185 KB
3.8.2023.2 11 Feb 2023 —
3.7.2022.1 18 Jan 2022 —
3.6.2021.12 1 Dec 2021 —
3.5.2019.1 30 Jan 2019 Yes — 29 Jan 2019, 96 KB

Note the gap: between January 2019 and September 2024 the catalog lists no new CH341 driver. Machines sat on 3.5.2019.1 for five and a half years, then all moved at once.

Counterfeit CH340s: the failure the driver really causes

From 3.8.2023.2 (11 Feb 2023) onward the WCH driver no longer drives cloned chips; 3.5.2019.1 is the last one a counterfeit runs on, per the SimHub wiki. Two tells: the fake 16-pin package arrives with no part marking, and Device Manager shows CH340 where a genuine part reports CH340G. Nothing is bricked — rolling back brings the board back. On Windows 11:

  1. Device Manager → Ports (COM & LPT) → right-click the port → Properties → Driver tab → Roll Back Driver, if offered;
  2. If greyed out: Update Driver → Browse my computer for drivers → Let me pick from a list of available drivers on my computer, and take the 3.5.2019.1 entry;
  3. Control Panel → System → Advanced system settings → Hardware → Device Installation Settings → No (your device might not work as expected).

The rollback follows the port you did it on — “if you plug into a different COM port you will need to repeat the procedure”, per this Windows 11 write-up. Step 3 answers the worry in this HyperHDR thread: “Windows Update will probably reinstall the new driver”.

Common problems, with the exact message

“avrdude: ser_open(): can’t set com-state for \\.\COM5” — the port opens, then refuses its settings; on a clone with a 2023-or-later driver this is the signature failure (source). Other avrdude messages: the AVRDUDE for Windows guide.

“A fatal esptool.py error occurred: Cannot configure port” — same fault from the ESP side, same fix (source). Once the port configures, what is left is offsets and boot mode — see the esptool.py walkthrough.

Port present, software says “device not available” — reported by 100+ users after updates KB5046613 and KB5046542 in this Microsoft Q&A thread; the answer is the 30-01-2019 driver plus blocking the update.

Device Manager stuck on “USB-Serial”, no driver will take — in this Windows 11 thread, hardware-ID matching, browsing to the INF and a full reinstall all failed; the answer pointed at other yellow-flagged motherboard drivers. Clear those first.

FAQ

Why does my CH341A programmer give no COM port? It is not strapped for serial. Per WCH’s CH341 datasheet (English, version 2D, §5.3) the chip reads its own SCL and SDA pins to pick a function: both suspended → serial, 5523H; SDA low with SCL suspended → EPP/MEM parallel, 5512H; SDA tied to SCL → USB printer, 5584H. Strapped for parallel, it never shows a port — see the CH341A programmer guide.

Do I need this driver on Linux? No. The kernel’s own ch341 driver (ch341-uart) binds 1a86:5523, 1a86:7522, 1a86:7523, 2184:0057, 4348:5523 and 9986:7523 — but not 1a86:5512, by the rule above. Those non-WCH vendor IDs are legitimate — the datasheet lets a 24Cxx EEPROM redefine them, default 1A86H; see 24Cxx EEPROM with a CH341A.

Is it safe to stay on the 2019 driver? It is still what Microsoft distributes for older Windows, and it drives genuine and cloned chips alike. WCH publishes no English release notes for 3.6 through 4.0, so what you give up is unclear.

Verdict

One driver, one install, and the most common “my Arduino won’t connect” problem is gone. With the port finally visible, that ESP32 board is ready for the Flash Download Tool. If your adapter uses a Silicon Labs chip instead, you need the CP2102 driver; if it’s a Prolific chip on Windows 11, brace for the “Phased Out” fix. And if the thing on the other end of that cable is an STC 8051, the CH340 is all the programmer you need — see the STC-ISP guide and its cold-start rule.