An unmodified black CH341A drives its data lines to about 4.5 V while the socket feeds the flash chip 3.3 V. Against the chip’s own datasheet that stops being vague: a Winbond W25Q80DV on a 3.3 V rail has an absolute maximum of 3.70 V on any pin — so the programmer sits 0.80 V over the limit, to deliver a logic 1 that only needed 2.31 V.

⬇ AsProgrammer 2.1.2 and the CH341 driver (Windows)

Windows 7 → 11 · unmodified upstream packages · install the driver before plugging the programmer in

Download AsProgrammer 2.1.2
Download CH341 driver

AsProgrammer_2.1.2.zip · 20.4 MB · SHA-256: 7921dcaa0296e73eb4cc66f91698ca879ce2164790fce335e64afb89597a152f
CH341PAR_Driver.zip · 519 KB · SHA-256: 6d8284cfe12ffebfd42a8ca9f0a867bacca4c5bcf70bd08b16eec673ed9cab1d
Mirrors of the official AsProgrammer releases and the official WCH CH341PAR driver page.

No software fixes the problem below. It is hardware, and it is on the board before any chip goes in the socket. Install walkthrough: our CH341A and AsProgrammer guide.

What the 5 V actually violates

The fault is visible in the schematic. The board has an AMS1117-3.3 regulator, but it only powers the socket; the CH341A keeps its own VCC pin (pin 28) on the USB 5 V rail. As One Transistor’s teardown puts it, “the chip is powered from 5V, so its I/O ports will also use 5V.” Their scope capture of the clock reads 4.5 V; the EEVblog thread on the same board reports “over 4.7V” on CS, MOSI and CLK.

Here is what that means for the part most people are flashing. Every limit below is from the Winbond W25Q80DV datasheet, Revision J (13 May 2021), §9.1 and §9.3, socket rail at 3.3 V.

Datasheet limit Formula At VCC = 3.3 V Where 4.5 V lands
Input high voltage, VIH min VCC × 0.7 2.31 V 2.19 V more than the chip needs
Operating supply, VCC — 2.7 – 3.6 V —
Voltage applied to any pin, VIO −0.6 to VCC + 0.4 3.70 V 0.80 V over, continuously
Transient voltage, VIOT −2.0 to VCC + 2.0 5.30 V Inside it — but only for pulses under 20 ns

That last row is why the internet argues about this. A 4.5 V spike would be legal; a 4.5 V level is not. The datasheet says exposure beyond absolute maximum ratings “may cause permanent damage”, while exposure to them “may affect device reliability” — a reliability problem, not an instant kill, which is why one person reads fifty chips without incident and the next bricks a board.

Voltage ladder comparing a stock CH341A output of 4.5 V against W25Q80DV limits: 2.31 V VIH minimum, 3.3 V rail, 3.70 V absolute maximum, 5.30 V transient ceiling
The argument on one axis. Running the CH341A at 3.3 V gives up 0.99 V of drive the flash never used, and buys back 0.80 V of margin. Diagram: TechBenchLab, from the W25Q80DV Rev J datasheet.

Which board do you have? Don’t trust the version number

The silkscreen revision settles nothing — OpenIPC’s wiki blames versions “prior ver. 1.7”, while boards marked V1.7 are sold both with and without on-board level conversion. Judge by what you can see.

What you have Data lines What to do
Matte black board, capacitor C4 on the opposite side of the crystal ≈4.5–4.7 V Mod it, or add a level shifter
Black board with gold trim edges, C4 beside the crystal (units shipping by 2025) 3.3 V by default Nothing — it was redesigned
Blue CH341A/B board Set by two jumpers Set them to 3.3 V before anything else
Board sold as “1.8 V level conversion” 1.8 V at the socket Use it for W-suffix parts only
Any board plus a separate 1.8 V adapter 1.8 V Mandatory for 1.8 V flash — 3.3 V will not do

The 30-second check that settles it: plug the programmer into USB with the socket empty and measure from GND to the MISO and MOSI pins. Around 5 V means unfixed; around 3.3 V means there is nothing to do.

The fix, three ways

All three move the CH341A’s own supply to the 3.3 V the board already makes. Pin 9 (V3) has to come along, which is why every version touches capacitor C4.

Flashing a GPU or motherboard BIOS

Read the chip marking first. Winbond puts the voltage in one letter: in W25Q80DVSNIG the V means 2.7–3.6 V, and a W there (W25Q80EW, W25Q128FW) means a 1.8 V part and a mandatory adapter. The trap is that the top-side marking is not the ordering number — the datasheet’s own table marks W25Q80DVSNIG as 25Q80DVNIG, dropping the W prefix and the package letter, so searching for what you read under the microscope returns nothing.

Then strip the target: Tom’s Hardware’s recovery guide says to “take everything off the board (all components and all connectors, even the 3v cell if it is detachable)”, so nothing back-feeds the rail you are about to drive. Red stripe to pin 1, the end with the dot. Read twice and compare before writing — if the dumps differ it is contact, not the chip, and our SOIC-8 clip guide works through that.

Problems people actually hit

“File size larger than IC size.” Auto-detect chose the wrong part; pick the chip manually from AsProgrammer’s list.

Reads fine, writes fail verification. Check that WP# and HOLD# are not held low by the target, and see the in-circuit caveats — on a populated board the flash shares its rail with everything else.

The ID reads but the dump is all FF. The clip has power and clock but not data. Reseat it; on an assembled board, remember the programmer is feeding the whole 3.3 V rail through eight tiny contacts.

Questions people ask

Mine has read dozens of chips unmodified — is this a myth? No. The EEVblog thread documenting the fault runs 24 posts from October 2017 to May 2020 and contains both outcomes: “I fried the PCB — its dead now” and “Nothing got short circuited, the world didn’t come to an end, and it just worked.” Reliability damage does not announce itself.

Doesn’t the 3.3 V jumper fix it? No. That jumper sets the socket rail; the CH341A’s own supply is untouched, which is why OpenIPC describes levels that “remain at 5V despite the programmer being set to 3.3V.”

Should I buy a different programmer instead? For 25-series SOIC-8 only, a fixed CH341A is fine. For NAND, eMMC or 48-pin parts see RT809H vs RT809F; for scripted work, flashrom drives the CH341A directly.

Absolute Maximum Ratings table from the Winbond W25Q80DV datasheet showing Voltage Applied to Any Pin at minus 0.6 to VCC plus 0.4 volts
§9.1 of the Winbond W25Q80DV datasheet, Revision J (13 May 2021) — the row the 5 V breaks, and the transient row that explains the argument about it. Source: Winbond.

Sources