[Guide] Using CH341A-based programmer to flash SPI EEPROM

I’m trying to flash a board with a Winbond 25Q128FWSQ, I have a CH341A flasher with a Pomona 5250 clip. I have a 1.8v adapter, which I’ve measured with a multimeter to make sure it’s 1.8v

I’ve tried various softwares, they either read nothing or don’t detect the chip. I’ve tried clipping the clip on multiple times and still got nothing. Anyone know what is wrong?

… a "board", nice we learned a lot.
Different "boards" have different behave, especially on laptop.
The clip contact in all pins is very sensitive, its often needing several attempts.

That was with my X470 Gaming Pro Carbon system, I was wanting to downgrade my BIOS, but I’ve temporary paused that idea to see if my flasher even works.

I’m now trying to flash a Winbond W25Q128FV on a Lenovo Flex 3 1580 just so if something doesn’t work, it wouldn’t be as destructive as bricking my main PC. I’ve figured out how to get the clip on there and have it recognize the majority of the time, I was doing it wrong before. However, no matter what I do now, the chip doesn’t properly flash and I get a “Chip Main Memory with the contents are in disagreement” error.

Usually "Chip Main Memory with the contents are in disagreement" its a software problem, try other versions or Neo.

X470 Gaming Pro Carbon might have an SPI header, there’s a header JSP11 right besides a 16 MB Winbond chip?

Could you read the firmware of the Winbond W25Q128FV (3V?) on the Lenovo? Were you able to read the chip content several times with a 100% identical result? (It’s useless to try to write if you’re not 100% sure that you can read properly)

What’s Neo?

I thought I might as well just try writing until it works because the BIOS is fucked anyways. I’ll try reading the chip a few times when I get time, which could be a few days from now. I’ll also try on Linux, I’ve heard that works better than Windows, and I’ve got an old, small netbook that I could stick Linux on and use.

I’ll also look at that header, but I have doubts.

I dunno when I will try flashing the BIOS again, feeling pretty lazy rn, and the timing with the forum shutting down kinda sucks.

When I do attempt this again, if Win-Raid is down by that time, I’ll be on board.eclipse.cx, under the name K4sum1.

Hello, I’m new here.
I had an issue when officialy flashing this bios file into my Shuttle slim DH02U5 computer (mini bare bone pc)
official bios : as I’m new here I cannot submit links but you can google it and find it easily , it’s on Shuttle Global (DH02U SERIES) website : DH02U000.103.ZIP
As I couldn’t boot anymore into this computer, I bought a CH341A programmer to flash DH02U000.103 bin file into the bios chipset (chipset: 25B64CSIG) ,
flashing with the CH341A was fine after verification but the computer still doesn’t boot up (blue led on and fan starting then stopping and this cycles every 5 seconds)
- the official bios bin file appears to be an INTEL image (I can see that with UEFItool).

My question is: should I write this whole .bin file into the flash rom ship (with CH341A) or maybe extract only the “BIOS region” with UEFItool and then flash this region ?

I’m a bit lost now after a lot of tries (with older bios bin files or newer) always the same : the computer does not boot up, no image , nothing, just blue led and cpu fan on then off, every 5 seconds)

No, ull have to flash the whole Intel image as it contains the FD and ME regions, this is part of the whole system bios.
The use of the UEFI tool in this case is not necessary as its a non-capsule bios file.
Keep in mind that any original/oem data will be lost if not transferred/edited when flashing a blank bios/update file like this one on Shuttle website.
Only possible from a spi backup/dump before any SPI programming.

possible read ch341a w/o desoldering asrock z370 taichi w25q128fv bios ?
or too much power need MB ? example some led lighting etc


Usually not needed in desktop motherboards.

EDIT: Ur about to burn the spi or the spi flasher.
This is no easy task for unskilled users and many do not succeed at first tryouts, watch videos and read a lot.
Some models can use the JPS1 header on the motherboard, maybe urs use this for access the SPI.
[Guide] Using CH341A-based programmer to flash SPI EEPROM
[GUIDE] The Beginners Guide to Using a CH341A SPI Programmer/Flasher (With Pictures!)

ok and how to read ?
i try using clip but not possible full read try many ch341 program version
i connect clip MB led light up
only few sec possible ident chip and after not found or wrong and readed file wrong

your edited added link really not help
i not only ch341 i have better eeprom flasher but not read

i think problem 3 volt not enough Amp
maybe need min 1Amp the MB the flasher only make 100nA

Hi guys,

I am having some issues with Intel ME on a HP elitebook I bough off ebay and wanted to fix it, which requires reflashing the bios. I got myself a black CH341A off aliexpress. I’m using the supplied clip to read the bios image, which actually clamps pretty reliably to the chip on the laptop board.

When everything is correctly connected the red POWER light on the programmer is on, which is fine. If I immediately run flashrom the bios chip is correctly detected as W25Q128.V. The thing is that after a second or so the amber RUN light also turns on and stays on forever as long as everything is connected. When this happens no communication with the bios chip is possible and can also not be detected anymore (No EEPROM/flash device found). If I reconnect the programmer or reclamp I again get it working for a second then the amber light comes on again. Obviously, I cannot run any operation on the bios chip in less that a second (except detect the model). The same behavior is observed on different PCs with linux of win or even if I just supply 5V to the programmer w/o PC.

I think the CH341A works fine since it can detect the chip in that first second. Could this be a voltage/current issue? (I did remove the main laptop battery as well as the bios battery) I don’t want to start soldering unless absolutely necessary since I’m not very (at all) skilled at it. Although I did get a new heat gun for SMD work just in case Anyone else experiencing such behavior? Should I get a new CH341A or solder the bios chip directly to my current CH341A?



Hi guys,

I have an issue relate to my Panasonic Let’s note CF-SX4. I forgot bios password and can not access to PC now.
I used CH341A and already got the BIOS .bin file from BIOS chip (25Q128FVSQ).
I have another [Let’s note CF-SX4] without password and i plan to get the BIOS file from this one to write the broken one (with password). But i worry about serial number, UUID and LAN MAC ID could be same at both PC. Does it work?

Do you have any idea to find password from BIOS .bin file?

CH341A FlashROM for Windows

Version: 1.2-1094-g748575ab (2022-12-02)

I bought a device where the flash chip onboard happens to be an XM25QH128C by XMC from the now world-famous Wuhan. Since FlashROM support for this chip was only added recently, none of the existing Windows builds around come with it. So I built the latest current version for my own use. Sharing it below for the benefit of the community.

Download: flashrom-1.2-1094-outsyde-20221202-ch341a_spi-win64.zip (Mirror: Mega.nz)

Usage Notes

  • Works with the usual “driver” (really just an .inf file for VID:PID 1A86:5512), which is included in the ZIP as well. Credit for it goes to @flashrom I think, who also shared several builds here in the past. Might need to temporarily disable signature enforcement to install if you don’t already have it.
    • For driver installation issues, check the earlier posts in the thread: it’s been discussed extensively, and nothing’s changed since.
  • Only dependency is on libwinpthread-1.dll, which should be in the same directory. If you get an error: “The application was unable to start correctly (0xc000007b)”, it means this DLL file is missing.
    • Other libraries (libusb) are linked statically.
  • Output is verbose. Most warnings can be ignored unless there is an actual error. In particular: “Cannot detach the existing USB driver. Claiming the interface may fail.” is benign.
    • Note that the best practice is to connect directly to a USB port on the system board, not shared with any other devices, and especially not through any USB hub.
  • This build hasn’t been extensively tested, and since it’s just a snapshot cloned as-is from GitHub, it’s certainly not guaranteed to be stable. That being said, I tried reading and writing with a loose Winbond W25Q64FV I have lying around, and all worked fine (verifying too). For the record, I couldn’t check with an actual XM25QH128C as I don’t have the device yet. Still:
    • I won’t be responsible if you run into issues. If you don’t need support for any of the newer chips (see below), consider using any of the earlier builds already battle-proven in many scenarios.
  • Also included in the ZIP is the ich_descriptors_tool.exe tool, which builds together.

Updated Chip List

Over the version I was previously using (the one built and shared here by @flashrom), support has been added or expanded for over 60 chips:

  • Atmel AT25SF128A
  • Boya/BoHong Microelectronics B.25D16A B.25Q128AS
  • Eon EN25F10 EN25QH128 EN25QH32B EN25QH64A EN25S64
  • Fudan FM25F005 FM25F01 FM25F02(A) FM25F04(A) FM25Q08 FM25Q16 FM25Q32
  • GigaDevice GD25LQ128C/GD25LQ128D/GD25LQ128E GD25Q256D/GD25Q256E GD25Q40(B)
  • ISSI IS25LP064
  • Intel 25F640S33B8 AT82802AB
  • Macronix MX25L12833F/MX25L12835F/MX25L12865E/MX25L12873F MX25L1635D
  • Macronix MX25L3233F/MX25L3273E MX25L5121E/MX25L6465E MX25L6473E MX25L6473F MX25U25635F MX66L1G45G
  • Micron MT25QL256 MT25QU256
  • Spansion S25FL128L S25FL128S_UL S25FL128S_US S25FL256L S25FL512S S25FS128S (Large & Small Sectors)
  • Winbond W25Q32BV/W25Q32CV/W25Q32DV W25Q32FV W25Q32JV
  • Winbond W25Q32BW/W25Q32CW/W25Q32DW W25Q32FW W25Q32JW…Q W25Q32JW…M
  • Winbond W25Q64BV/W25Q64CV/W25Q64FV W25Q64JV-.Q W25Q64JV-.M W25Q64JW…M
  • Winbond W25Q256FV W25Q256JV_Q W25Q256JW W25Q256JW_DTR W25Q512NW-IM W25X05
  • XMC XM25QH64C XM25QU64C XM25QH128C XM25QU128C XM25QH256C XM25QU256C

Building from Source

I also couldn’t find any comprehensive and current build instructions for Windows, so here they are. To build, get MSys2 and run the following in the MSys2 MinGW64 shell:

pacman -Syu
pacman -S base-devel binutils git pactoys
pacboy -S cc libusb meson pkg-config
git clone https://github.com/flashrom/flashrom.git
cd flashrom && meson setup \
    --auto-features=enabled --buildtype=plain \
    -Ddefault_programmer_name=ch341a_spi \
    -Dprogrammer=ch341a_spi,dummy -Dtests=disabled \
    --default-library=static --prefer-static \
    --prefix="${MINGW_PREFIX}" --wrap-mode=nodownload \
cd build && meson compile
  • After building, remember to copy libwinpthread-1.dll you can find in mingw64/bin directory together with flashrom.exe if you want to use this build of FlashROM outside the MSys2 MinGW64 shell, or on another device.
  • Note: it’s almost certainly not necessary to install the whole cc meta-package, just faster to grab it all rather than figure out which parts are needed (if you’re a lazy person with a fast connection at least). As a matter of fact, binutils might not be required either.


PS Massive thanks to @flashrom for providing the earlier builds, which kept me going for years, without having to build it on my own.


Sorry to bug. I’m in exactly the same situation as you were with this motherboard. Is there any chance you could share that Manufacturer file: 30528.BIN you got from them. They not answering me unfortunately. Will much appreciate your kind help.

Does this programmer work with bios chip of asus b450m-a prime. I’m a newbie and I appreciate any help.

P.S. Does anybody know if there is a pin on Ryzen 2600 not making proper contact with the socket not saving date and time? CMOS is good btw. BIOS/UEFI Settings are being saved.

Flashrom v1.2-1186 for Windows + CH341A WinUSB driver.

flashrom_v1.2-1186.zip (224.0 KB)


An updated FlashROM for Windows build 1.4.0-devel (git:v1.2-1345-gd534100c) is attached.

The Winbond W25Q128.V (16M) chip, which was previously experimental, is now fully supported, as are many others too I guess.

The build process now also has Sphinx as a dependency. Add python-sphinx to pacboy -S.

flashrom-1.4-devel-1345-outsyde-20230826-ch341a_spi-win64.zip (381.0 KB)

1 Like