[GUIDE] Flash BIOS with CH341A programmer

UNDER CONSTRUCTION


Special thanks to Lost_N_BIOS for your help.

PART 1 (CH341A details)
This guide is based on the winbond 25Q64 bios chip.


CH341A programmer:


If you need an external 3.3v adapter you can visit this thread or this post


PINs details:








1.8V Adapter:






SOP8 Socket details 8(for new chips):






If you use the SOP8 socket,push on the socket border and place your bios chip according with the SOP8 socket pins details.





PIN 1 on the BIOS chip:









If you receive this error(s) with the CH341A programmer connected to bios chip:




This error(s) is caused by the bad connection of the clip or by the wrong software version.

Try the following steps:
Exit form C341A software.
Disconnect ch341a programmer from USB.
Disconnect the test clip from the bios chip.
Connect the test clip to bios chip.
Connect ch341a programmer to USB.
Run C341A software.
OR
Please try another software version.
2 Likes
UNDER CONSTRUCTION

PART 2

INSTALL DRIVER, READ, VERIFY, SAVE BACKUP:

Download here the CH341A tools (Thanks to Lost_N_BIOS)

Unzip the downloaded pack and install the ch341a drivers (run CH341PAR.EXE)




Remove CMOS battery from your motherboard.
Connect the test clip to bios chip.
Connect ch341a programmer to USB.
Run CH341A_c.exe from CH341A programm v1.29 folder.







Go to "Auto" and uncheck "Erase" and "Blank check" options:



Press "Read button" and wait until the process is finished:







Now press "Verify" and wait until the process is finished:









Attention, before continuing with the PART 3, please check the content of the backup file.

You can compare the backup file with the original bios file from manufacturer site, using one hex editor software.

The contents of the files is not the same but it is very similar.






Backup file examples (OK and wrong):







UNDER CONSTRUCTION



PART 3

ERASE AND FLASH BIOS


After checking and saving your backup press the "Erase" button and wait until the process is finished:






Now press the "Blank" button and wait until the process is finished:




Attention!
If the next window appear, when you press the blank button:







Possible solution:

Please Erase chip again and press Blank check again OR use another software version.

If it does not work, you can try this (you can use a heat shrink tube):







If the “Chip Main Memory are blank” message appear, you can continue with the next step. Press “Open” button and find your new bios file:







After the new bios file is opened press “Auto” button and wait until the process is finished:











PART 3.1

Programming new chips:

If you have new chips,first see the “SOP8 Socket details” (on the part 1 from this guide) and continue with the following steps:

Run CH341A software, set the bios chip type, press “DETECT” (or simply press the “DETECT” button), now press the“BLANK” button and wait until the process is finished:




If the “Chip Main Memory are not null” appear, press the“ERASE” button and wait until the process is finished. Now press the“BLANK” button and wait until the process is finished.




Press “Open” button and open your “*.bin” file:


Go to “Auto” button and leave checked only the “Write” and “Verify “ options:


Now press “Auto” button and wait until the process is finished:


Hi, I am new to this forum. Thank you so much for the detailed info and It is very helpful.

Can you please clear my doubts.

1) I would like to flash my Intel mobo chip. I have only the ".bio" file (955 KB) not the ".bin" file. Can I Use this ".bio" file to flash?
( My mobo is very oldDG35EC, please see the attached image of the chip)

2) Did the device and software support the chip in the image?

IMG_20191011_160246.jpg

@Prasanth - I replied to you over here - [GUIDE] The Beginners Guide to Using a CH341A SPI Programmer/Flasher (With Pictures!) (7)

@junjoo - Thanks for fixing images!!

Hope you have a great New Year!!

Guys, for god sake.
Why are you using this stupid chinesse app for CH341A programmer? Besides that most of us is using cracked and illegal version of this app (which is somehow broken, especially later versions), even paid (10USD) isn’t particullary better.

For bios programming I will recommend using AsProgrammer 1.41 which is free and good enough for most task.
CH341A Programmer (chinesse) won’t let me program GPU bios chip (Winbond 1.8V) because there is nothing similar in his database (Q80 prefix), but there is no such issue with AsProgrammer which detects chip right away and program it in a matter of seconds.
So I assume it would be better to guide new persons to use somewhat better and free alternative.

Hi guys, Just joined the forum after hanging around for a while and learning from this great guide. Thanks @junjoo and @Lost_N_BIOS .

I’m trying to solve a problem with my old motherboard (Z77X-UP5) which decided to go into a power-on boot loop.
The motherboard has 2-digit LED display and also two LED’s to show which BIOS is in play (Main or Backup). There’s a switch to select Main or Backup BIOS.

On power up the LED display pauses with code “15” and then at code “32”, then the bios LED switches from Main to Backup and auto restarts.
The restart is now with Backup BIOS and does the same…15…32…switch to Main BIOS…auto restart forever.
Once I did see a the code “db” which apparently means BIOS flash failed. I assume that the Backup flash was automatically being flashed to Main which failed (???).
So my assumption now is both BIOS’s are bad.

Few weeks ago a had updated the main BIOS to to modded BIOS that has NVME UEFI drivers. This BIOS worked great by booting from the NVMe SSD.

May be that BIOS did not flash right.

So, I followed the guide here. Bought a CH341A programmer with a Clip cable. Installed the drivers for windows (I’m on WIN10) and a separate laptop.

I have disconnected everything (PSU, drives, CMOS battery, GPU, etc) on the motherboard (except the CPU as it’s delidded with liquid thermal paste).

But I just cannot get the CH341A to detect either BIOS chips.
The BIOS chips are MX25L6406E :

IMG_1566.jpg



I have tried position the Clip very carefully making sure the it is sitting over all 8 pins of the BIOS chip.
If I use CH341a_c.exe (v1.29) it will not detect the chip and the green RUN LED on the CH341 board is never active.
v 1.34 also could not detect the BIOS chips:

[[File:Screenshot (2).jpg|none|auto]]

If I use v1.18, it will not detect the chip either but that version lets me click the “READ” button and proceeds to the BIOS (the RUN LED is is green) BUT it reads 8MB of Zero’s.

So…I switched to another PC…running Linux and installed FLASHROM command line app.
It too cannot detect the chip…except once it did manage to read something. The output of the command was:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 

macnb@macnb-eOS:~$ sudo flashrom -V -p ch341a_spi -c MX25L6406E/MX25L6408E -r my-test-main.rom
flashrom v0.9.9-r1954 on Linux 5.3.0-28-generic (x86_64)
flashrom is free software, get the source code at https://flashrom.org
 
flashrom was built with libpci 3.3.1, GCC 5.3.1 20160424, little endian
Command line (7 args): flashrom -V -p ch341a_spi -c MX25L6406E/MX25L6408E -r my-test-main.rom
Calibrating delay loop... OS timer resolution is 1 usecs, 1262M loops per second, 10 myus = 10 us, 100 myus = 99 us, 1000 myus = 993 us, 10000 myus = 9969 us, 4 myus = 4 us, OK.
Initializing ch341a_spi programmer
Device revision is 3.0.4
The following protocols are supported: SPI.
Probing for Macronix MX25L6406E/MX25L6408E, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn't found automatically.
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$ sudo flashrom -V -p ch341a_spi -c MX25L6406E/MX25L6408E -r my-test-main.rom
flashrom v0.9.9-r1954 on Linux 5.3.0-28-generic (x86_64)
flashrom is free software, get the source code at https://flashrom.org
 
flashrom was built with libpci 3.3.1, GCC 5.3.1 20160424, little endian
Command line (7 args): flashrom -V -p ch341a_spi -c MX25L6406E/MX25L6408E -r my-test-main.rom
Calibrating delay loop... OS timer resolution is 1 usecs, 1262M loops per second, 10 myus = 10 us, 100 myus = 99 us, 1000 myus = 1030 us, 10000 myus = 10010 us, 4 myus = 4 us, OK.
Initializing ch341a_spi programmer
Device revision is 3.0.4
The following protocols are supported: SPI.
Probing for Macronix MX25L6406E/MX25L6408E, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on ch341a_spi.
Chip status register is 0x00.
Chip status register: Status Register Write Disable (SRWD, SRP, ...) is not set
Chip status register: Bit 6 is not set
Chip status register: Block Protect 3 (BP3) is not set
Chip status register: Block Protect 2 (BP2) is not set
Chip status register: Block Protect 1 (BP1) is not set
Chip status register: Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
This chip may contain one-time programmable memory. flashrom cannot read
and may never be able to write it, hence it may not be able to completely
clone the contents of this chip (see man page for details).
Reading flash... done.
macnb@macnb-eOS:~$
 


But If I open the BIOS file it read with UEFITool, it is only partial BIOS...the tool says the UEFI modules are missing (GBe region is there and shows my LAN MAC address).

I did try the CH341A programmer on a PCIe USB3.0 adding card - it has a Pm25LD512 flash chip and FLASHROM on Windows manage to read it but not CH341A.EXE (as it does not have that chip in it's database).

So the question is, is my new CH341A USB Programmer faulty or my motherboard BIOS chips dead ?

What can I try ?

UPDATE:

Nevermind. I solved my problem. If anyone is interested then see this post.

Screenshot (2).jpg

Nice guide thanks.

@macnb - Try software 1.30 or ASProgrammer 1.41 (hit unlock/unprotect lock icon first, then read, verify, save)
1.30 is included in this package - http://s000.tinyupload.com/index.php?fil…213094641136166
ASProgrammer is here - https://github.com/nofeletru/UsbAsp-flash/releases/
Although, sounds like you are not getting a good connection, or you need to connect PSU cables to the board if not already (or remove them if so, sometimes you need them connected, sometimes they need to be removed)

Ahh, I see you got it, thanks for posting your solution too! Now, you can try with the above too, if you did not already (PSU cables connected)

Use USB 2.0, standard post, USB 3 may be OK but I wouldn’t try relying on this via USB 3 add-on card.

hello, my laptop (acer aspire 4752z with je40hr motherboard code and windbond bios w25q32bvsig) just stuck in the acer logo and can’t enter the bios. I think it’s because the bios file is broken, so I tried to flash it with ch341a. But unfortunately the chip was not detected in ch341a 1.29 and in the Android app combo tool. stupidly even though not detected I still write the chip and the green LED is still on. after that the laptop is only the power LED that lights up without pressing the button and a few moments turn off then after 5 seconds it lights up again. now the laptop condition doesn’t turn on at all without power led and led charge.

my question is, why can’t my ch341a detect the chip, is it due to a 3.3v problem? I saw someone modify ch341a to produce 3.3v. do i have to modify my ch341a too? if so, like this link [GUIDE] The Beginners Guide to Using a CH341A SPI Programmer/Flasher (With Pictures!) (10) or this one https://www.eevblog.com/forum/repair/ch3…er-supply-fix/?

Zitat von macnb im Beitrag #8
Hi guys, Just joined the forum after hanging around for a while and learning from this great guide. Thanks @junjoo and @Lost_N_BIOS .

I'm trying to solve a problem with my old motherboard (Z77X-UP5) which decided to go into a power-on boot loop.
The motherboard has 2-digit LED display and also two LED's to show which BIOS is in play (Main or Backup). There's a switch to select Main or Backup BIOS.

On power up the LED display pauses with code "15" and then at code "32", then the bios LED switches from Main to Backup and auto restarts.
The restart is now with Backup BIOS and does the same...15..32...switch to Main BIOS...auto restart forever.
Once I did see a the code "db" which apparently means BIOS flash failed. I assume that the Backup flash was automatically being flashed to Main which failed (???).
So my assumption now is both BIOS's are bad.

Few weeks ago a had updated the main BIOS to to modded BIOS that has NVME UEFI drivers. This BIOS worked great by booting from the NVMe SSD.

May be that BIOS did not flash right.

So, I followed the guide here. Bought a CH341A programmer with a Clip cable. Installed the drivers for windows (I'm on WIN10) and a separate laptop.

I have disconnected everything (PSU, drives, CMOS battery, GPU, etc) on the motherboard (except the CPU as it's delidded with liquid thermal paste).

But I just cannot get the CH341A to detect either BIOS chips.
The BIOS chips are MX25L6406E :



I have tried position the Clip very carefully making sure the it is sitting over all 8 pins of the BIOS chip.
If I use CH341a_c.exe (v1.29) it will not detect the chip and the green RUN LED on the CH341 board is never active.
v 1.34 also could not detect the BIOS chips:



If I use v1.18, it will not detect the chip either but that version lets me click the "READ" button and proceeds to the BIOS (the RUN LED is is green) BUT it reads 8MB of Zero's.

So....I switched to another PC...running Linux and installed FLASHROM command line app.
It too cannot detect the chip...except once it did manage to read something. The output of the command was:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 

macnb@macnb-eOS:~$ sudo flashrom -V -p ch341a_spi -c MX25L6406E/MX25L6408E -r my-test-main.rom
flashrom v0.9.9-r1954 on Linux 5.3.0-28-generic (x86_64)
flashrom is free software, get the source code at https://flashrom.org
 
flashrom was built with libpci 3.3.1, GCC 5.3.1 20160424, little endian
Command line (7 args): flashrom -V -p ch341a_spi -c MX25L6406E/MX25L6408E -r my-test-main.rom
Calibrating delay loop... OS timer resolution is 1 usecs, 1262M loops per second, 10 myus = 10 us, 100 myus = 99 us, 1000 myus = 993 us, 10000 myus = 9969 us, 4 myus = 4 us, OK.
Initializing ch341a_spi programmer
Device revision is 3.0.4
The following protocols are supported: SPI.
Probing for Macronix MX25L6406E/MX25L6408E, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn't found automatically.
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$
macnb@macnb-eOS:~$ sudo flashrom -V -p ch341a_spi -c MX25L6406E/MX25L6408E -r my-test-main.rom
flashrom v0.9.9-r1954 on Linux 5.3.0-28-generic (x86_64)
flashrom is free software, get the source code at https://flashrom.org
 
flashrom was built with libpci 3.3.1, GCC 5.3.1 20160424, little endian
Command line (7 args): flashrom -V -p ch341a_spi -c MX25L6406E/MX25L6408E -r my-test-main.rom
Calibrating delay loop... OS timer resolution is 1 usecs, 1262M loops per second, 10 myus = 10 us, 100 myus = 99 us, 1000 myus = 1030 us, 10000 myus = 10010 us, 4 myus = 4 us, OK.
Initializing ch341a_spi programmer
Device revision is 3.0.4
The following protocols are supported: SPI.
Probing for Macronix MX25L6406E/MX25L6408E, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on ch341a_spi.
Chip status register is 0x00.
Chip status register: Status Register Write Disable (SRWD, SRP, ...) is not set
Chip status register: Bit 6 is not set
Chip status register: Block Protect 3 (BP3) is not set
Chip status register: Block Protect 2 (BP2) is not set
Chip status register: Block Protect 1 (BP1) is not set
Chip status register: Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
This chip may contain one-time programmable memory. flashrom cannot read
and may never be able to write it, hence it may not be able to completely
clone the contents of this chip (see man page for details).
Reading flash... done.
macnb@macnb-eOS:~$
 


But If I open the BIOS file it read with UEFITool, it is only partial BIOS...the tool says the UEFI modules are missing (GBe region is there and shows my LAN MAC address).

I did try the CH341A programmer on a PCIe USB3.0 adding card - it has a Pm25LD512 flash chip and FLASHROM on Windows manage to read it but not CH341A.EXE (as it does not have that chip in it's database).

So the question is, is my new CH341A USB Programmer faulty or my motherboard BIOS chips dead ?

What can I try ?

UPDATE:

Nevermind. I solved my problem. If anyone is interested then see this post.



@macnb
I have the same problem and I have followed your thread with the solution. if I power the motherboard the result when reading the chip is FF. If I do it without power it, it is 00. In no case can I get it to read the chip. Can you think of a solution?

UPDATE
new version asprogrammer : [URL=AsProgrammer_v2.1.0.13: https://mega.nz/#!VMR0QQhL!wU4fYzCqjtHfX...gjprG_8RnVJ7N3o]asprogrammer 2[/URL]

@tonimonton @macnb posted a link to his solution, here is that link again (See post #143 if it does not automatically go there) - [GUIDE] The Beginners Guide to Using a CH341A SPI Programmer/Flasher (With Pictures!) (10)





that solution doesn’t work for me. My chip W25Q128JVSQ

@tonimonton - For W25Q128JV - Colibri ver. 1.0.1.62 confirmed read/write OK by members here in forum, it’s included in package below
http://s000.tinyupload.com/index.php?fil…213094641136166

But, software or version is really not the issue here, even bad version that we know fails, would read data but it would just be corrupted (not blank FF or 00)
You either need to get clip perfect still, or you need to add/remove power from board. And, in the end, some rare cases you 100% must remove chip from board to read or write properly (but again, usually at failed corrupted read is still possible, usually)

You can also try fake powering on the board/PSU (short the PSU on pins via paper clip etc, AKA “Jump Start PSU”). DON’T really power on the board, just the PSU
Examples below, but in your case you need to do it from the back-side of the power cable connector
https://bit-tech.net/guides/modding/how-to-jump-a-psu/1/
https://www.silverstonetek.com/downloads…r%20Clip-EN.pdf

Also, what I linked above is NOT chip ID specific, you can use that on any board or any BIOS Chip ID

1.8V adapter section/images added, thanks @junjoo

Socket SOP8 details added (PART 1)

How to program new chips details added (PART 3.1)

Regards.

Hi there,
I am having problem to flash winbond 25Q40EW, when i am using the ch341 (black version with 3.3v mod) with the 1.8v adapter it wont detect the chip but when I try it without the adapter it detect the chip but won’t write to it :’(

PS : this is my second chip and second 1.8v adapter that I ordered thinking that it might be the 1.8v adapter that is faulty but it was not the case

@junjoo - Thanks for keeping this up to date, and for all the added new stuff in latest update!!

@doripto - Sounds like you may have 1.8v adapter setup wrong, please check the updated parts of the guide on page one if you have not already.
You may also need to connect PSU cables, and or main battery if laptop (or remove both, or only one of either etc), keep at it, you will get it.

The chip you mentioned is 1.8V, but only 4mBIT / 512KB, are you sure that is your target chip?
If this is on graphics card, you may need to remove the chip, or put the card in a system with power connected (NOT POWERED ON) and try again

@Lost_N_BIOS Hey help mee, I got the clip placed perfectly but when I go to the ch341a programmer I get all 00000 and FFFFF What do I do
---------------------------

@Lost_N_BIOS http://s000.tinyupload.com/index.php?fil…269987882767428 here’s my bios dumped. check it please