[GUIDE] Flash BIOS with CH341A programmer

@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

@ass9411 - all 00 or all FF means bad connection, or something else not correct.
What model is this about, where is your main thread for this issue??? I only have folder for you from 2019 for something, so I don’t think it’s same issue as today
So, nothing to do here now until you reply, sorry This is why it’s always best to make a thread to get help with any issues
Now we wait some more…

*Edit - Never mind! That is a bad dump, you should have put it in a zip and then you would have seen
This is 100% Blank, all FF

Please make a thread for your model, and in that thread link stock BIOS download page (not direct BIOS download)
And also give me your BIOS chip ID in that thread. Don’t carry on in PM again, that is why were are lost now and I can’t advise more here

@Lost_N_BIOS I don’t need help anymore, man. I managed to fix it here alone hahah. About the bad dump its because I didn’t do the “read” first before saving and send it to you. Everything is good now. This guide has helped me!
--------------------

@Lost_N_BIOS I couldn’t wait because it was too late, I needed to sleep, and I didn’t want to take things apart and try again because I managed to make the program detect the bios chip, it was just a bad contact. Thanks man!

@ass9411 - Great to hear you sorted it out! So, serial, UUID, MAC all that sorted too?
Yes, you have to read then verify, then save, if you are wanting to dump chip contents
Glad you got it all sorted out

Before I ask for help, I just want to say big thanks for this forum and immense help you guys are doing.

So this is first time I am using CH341A(pro?) programmer for my Lenovo 470s laptop which for some reason won’t accept original supervisor password (or maybe we forgot it at all)?!

The thing is next:
- I started to disassemble motherboard and using friend’s help found that chip is under black plastic tape on back not underneath keyboard (u49) and this Chip

1
 
ebay.com/itm/New-WINBOND-IC-Chip-FLASH-128M-BIT-25Q128JVSQ-W25Q128JVSQ-SOP8-Package-/301006935484
 

- Afterwards I have started checking manual and found that this is 25 series, not 24
- I set programmer for 25 series and jumper on pins 2 and 3 [img]https://ibb.co/wcgHg7k[/img]image
- Then I set nippers on chip, and usb in PC (I tried all versions and all programmers but no luck)
- And my programmer show all the time NOT CONNECTED - and I don't know what to do, I tried all possible drivers and all possible ways :/

---

So what else I tried? When I set programmer on 24pin it shows it's connected, when I pull up the handle and move pins to 25, and it is connected, and it can read chip details.

But every time it gives different .bin file. When I compare in hex, It gives every 2 or 3 time different bin file, when I compare it is always different value, not same.

What can I do? What I am doing wrong?
How can I get connected and get every bin file same?

Thank you!

--

See here more images:
1
2
3
4
5
6
7
8
9
 
ibb.co/GWDbXxG
ibb.co/16WSVZb
ibb.co/sq0ngTP
ibb.co/XX87mNS
ibb.co/hFDKMmR
ibb.co/3C97WY3
ibb.co/55149wK
ibb.co/TMH6nVC
ibb.co/X73FY9t
 


Wires there are to drop voltage to 3.3v

I don't have idea.

When it says connected it's when I use 24 series :S and then I move manualy pins to 25 while it's connected, but it is not right.


---

update


friend of mine told me to try on linux with flashrom package, but i am so sceptic if this wont connect on windows 25 series why would it connect on linux?