Wednesday, May 13, 2009

ASUS P5B Deluxe Bios Recovery SPI Flash Cable

UPDATE: Here are some excellent tips from Anthony Quatroni in the comments:

OK let me go into a little more detail. It seems that SPIPGM.EXE by itself, writes a page at a time to the SST chip in the Asus P5B boards. You MUST use either the recompiled SPIPGM.EXE or, even better, use the SPIPGM2.EXE. You can build the cable WITHOUT any resistors or caps as long as you use the orange (3V) output from the surrogate PC's ATX power supply. Then you MUST use the /S switch (SPIPGM2.EXE /S xxxxxx.ROM) to write to the chip AFTER you unlock it with /U and erase with /E. This is the only thing that worked for me and I am back up and running perfectly.

Skip down the HOWTO for the good stuff.

In perhaps a moment of great stupidity and laziness, I reflashed the bios on my ASUS P5B Deluxe using the ASUS windows based flash utility. It wiped it clean, loaded the new one, and then it couldn't verify. At this point your only two options are quit or retry. So I retry, now it won't even try to write the bios. Having no other choice I rebooted the machine and hoped for the best. I got the worst.

The machine wouldn't do anything. The motherboard is supposed to have a built in bios recovery mode, but it seems that was wiped out as well by the Windows flash utility. It was time to send it back to ASUS so they could reflash it. The bios isn't removable, so surely there's some kind of device they plug into to reflash it for you I thought.

It turns out I was right. Next to the BIOS chip, to the left of the south bridge, is an undocumented 7 pin connector labeled SPI_J1. After a lot research I stumbled upon a few pages (linked at the bottom) that documented the type of cable necessary and the software to use this port to reflash the bios.

The cable consists of a parallel connector wired to something you can plug into the pins that also has a 2.7V-3.6V input to power the chip while reflashing it. I made a really bad attempt at using a chopped up parallel cable and the ends from a USB header port thing. This didn't work out well so I found at the local electronics store a parallel connector with a ribbon cable on it. I took it apart and re-soldered the ribbon to the correct pins.

To get the ~3V, I took a pass through power connector from an old case fan and added three diodes to the 5V wire, giving me a little over 3V. I then wired this to the ribbon cable and hooked the power connector into another running machine. I then used my laptop to flash to bios.


A DOS boot cd, usb drive, or floppy
BIOS ROM for the motherboard
SPIPGM (Software that does the flashing)
CWSDPMI (DPMI host process needed by SPIPGM)
Soldering Iron
Male DB25 connector
Header connector of some sort, you'll need 6 pins total.

To make the cable I used a DB25M TO IDC10 SERIAL connector. This really seems like the easiest thing to use. They look like this:

The header is found on the motherboard directly to the left of the south bridge.

Here is how the header pins are numbered:

Here is a table showing which header pins should be connected to what parallel pins. Pin 1 on the header is for +3V.
Header PinParallel Pin

Here's what my cable looks like (Note: it looks like the power lead is connected to the DB25 but in fact it is solder to the ribbon, it goes to pin 1 on the header)

If you use a cable similar to mine, open it up and desolder the ribbon from the connector. Take a paper clip and stick it into the holes in the header connector to determine which lead needs to go to what pin on the DB25 using your multimeter. Solder each lead appropriately.

You then need to get a 5V line from another computer (The Red wire on a molex connector). Solder three diodes in series and connect them to the 5V line. Use your multimeter to ensure the voltage drop gives you between 2.7V and 3.6V. Solder this to the appropriate ribbon lead.

Now that you're ready to flash, boot your flashing computer with your DOS boot media. First, you need to run cwsdpmi.exe, then run spipgm. (Note: you have to run cwsdpmi.exe before SPIPGM each time.)
The command sequence should look like this:
spipgm /u /e p5b-bios.rom
spipgm /p p5b-bios.rom

It will ask for the total size of the flashrom, enter 1024
If SPIPGM reports your chip id as fffffffh then something isn't right. Check all your connections. SPIPGM has several functions, such as erasing the BIOS first. Run SPIPGM without any options to see a list.

Giving credit where credit is due, without these sites I never would have figured this out.


«Oldest   ‹Older   201 – 237 of 237
Oppermafkees said...

Heya, nice job helping out so many :)

now for me...

i bought this P5E Deluxe 2nd hand cos i got a e2200 processor as a gift and it didn't work with my P5LD2 Deluxe.

so i build the rig and... for a brief moment i saw the asus splash screen and then it turned off again..

i 1st started trying other ram, 1 stick ect, didn't work, psu is fine 650w and it works with my other mobo. other gpu, even put my old D820 in nothing made it better.. sometimes it goes to the splash screen sometimes it doenst but it never passes...

so.. then i found this forum and i figured it could be the guy did a windows flash and bricked the board and he 'forgot' to tell me :P

so i made the cable, took me a while but now its working fine, i can erase and flash (used dumps to check all) but its still not working..

well now i did notice 1 thing and that is it seems the chip is never locked again after the flash, i dont know if it should be but at 1st it gave me some numbers with the /i but now it just says:
Status = 00h (bla, bla, bla)
0 0 0 0

shouldnt the numbers change to 1's?

i do have a resistor on the 3.3v (orange one) and i have the 2 aa's on it like in the reflashbios.doc

when i compared the dump with the 0302 bios i put on was is 100% identical, so it should have booted right?

right now i found out it doesn't always flash 100% i did the 1226 bios and it was all wrong :( every 2nd char was missing...

gonna try without the resistor on 3.3v now

i do also thave 3 120 ohm resistors on the data lines, should those be higher?

or should i put a resistor on the return (pin 10) to?

and should there be one on the ground pin (pin 18) ?

Oppermafkees said...

well.. the project is over for me.. the mobo is now officially dead..

as i wanted to desolder the resistor from the 3.3v line my soldering iron blew the fuses in my house taking the chip with it..

yes i know i should probably have disconnected the cable from the mobo but i dint feel like doing that every single time i made a change..

well now i guess i will order a refurbished board or something cos they dont sell anything that takes socket 775 and ddr 2 these days..

there is one last question i would like to ask, is it possible to use this way of flashing on a bios chip that can be removed from its socket?

i got a p5n32-sli that probably has a bad bios to..

Unknown said...

I just had this same thing happen. I am HORRIBLE at the whole building cable thing and was wondering if anyone here had a cable I could use. Figure once you use it it's not like you need it anymore, right? I live in North Eastern CT, please let me know if anyone has one that lives close or are willing to mail.

Anthony Quatroni said...

I have one and I'm in Pawling, NY

Anthony Quatroni said...

I have a cable and I'm in Pawling, NY

David said...

Thank you. It worked.

I used both spipgm and cwsdpmi (last versions) from this site:

I revived a p5b-deluxe using this method:

3V - psu orange cable. (green + black chant to power it on).
ground - pin 18 on the parallel port
CMOS battery - "ON"
Motherboard with no power / PSU cables connected at all.
LPT1 Mode - Bidirectional

It took me several hours to get the cable right. got "0x00000 - parity error" and "ffffffh" errors and it was because of the cable.


spipgm /i //to check if the chip was correctly identified. If not: ITS HARDWARE, go back to it.

spipgm /u //to unlock

spipgm /e //to erase

spipgm /p name_of_the_rom.ROM //to program the bios


Once again, Thanks.

P.S.- Its always a good idea to reflash (with EZflash) the bios once the mobo boots up because of the eventual errors that flashing with this method might cause.

Clear CMOS. Reboot, set date and settings- Enjoy your PC. ;)

Spawnilein said...


also destroyed my P5B Deluxe while Flashing in Windows 7.

A Friend build the cable but we had no luck because the other PC didn't recognize my Chip and always said fffffh.

We used a parallel Addon PCI Card because the Mobo of the other PC didn't had an integrated parallel port.
Is it possible that we have to configure another i/o adress in spipgm2 ? How can i find this adress of my addon parallel card ?

Thank you very much and sorry for my bad english.

WRX said...

For those of you who have or will experience some problems with this, I wanted to share my discoveries from bringing my DFI x48T2RS back to life. When you're building the cable, you have to be aware that some brands' pin-outs are different from other manufactures. (DFI is different than others I've seen posted.) So follow your appropriate manual for building the correct cable. The other potentially important part of using this method is that you may need to insert a "long" delay into the command line, at least for my model md. It took me several failed attempts to figure this out. The SPIPGM2 software has this feature built into it, but no one really talks about it much on the web. I tried a few different delays and finally it worked when I set the delay to 512 micro-sec ( /d=512), and this goes at the end of every command line for the SPIPGM2 program. The resistors and filter cap seem to be important from several other posts. And instead of using an extra power supply, I just tapped into the 3.3V line of the computer doing the programing. I shaved a small section of one of the orange cables going to the working mb and used an alligator clip to connect to it.

Power User said...

Which connecter to connect to laptop?

Which pin to connect to ground for return path of +3V?

How does the connections between the blue connector and black connector look like?


raduu said...

So I managed to build the cable but when I use this spipgm ( ) I get a number EE4000h and unknown manufacturer...and when I use any other spipgm ( for example this: )
it still gives me the same result but additionally it gives an error EEPROM locked (when I use /u comm), although WE is disabled. I don't know what to do...I boot from floppy disk and swap the disk with another one which contains the cwsdpmi,spipgm and rom. Some essential info is that my mobo is a normal P5B with the bios chip W25X80VSIG. Can anyonme please think to a soution? Thank you in advance.

Kent_Diego said...

I just fixed my P5B Deluxe using SPIPGM2.EXE! I have posted a video on youtube showing how to fix. I have uploaded SPIPGM2.exe to several file sharing site. The download links are in description text.
I hope this helps.

abelee said...

Great blog. All posts have something to learn. Your work is very good and i appreciate you and hopping for some more informative posts. Thank you……..
dfw town Car Service

Isabella Kaun said...

I designed a wire, leaving out the energy wire as I considered I would be able to just have the PSU connected in, but the program off.If some one know about the remedy of this issue so please tell me.

Compra Oro Plata

Decept said...

I have a P5B Deluxe. I tried with a 60cm cable with a bios battery as power but no luck. Then switched to 3.3V from another PSU and got the correct chip name about 7/10 times when running spipgm2 /i. I could unlock, erase and flash, but the results were always garbled. I then added 1KOhm resistors to the 4 data lines, but that resulted in no signal.
I removed the resistors and connected the ground from the PSU to pin 18 and also added a capacitor (1000uF 16V) between the 3.3V and ground from the PSU to stabilize the power. That resulted in perfect reading with spipgm2 /i every time. I then flashed and dumped the results. Compared against the original and it was 100% the same.

What worked for me:
60cm cable, no resistors, 3.3V from PSU, ground from PSU to pin 18, capacitor between 3.3V and ground, no power or battery in dead motherboard.
spipgm2 /i (chip identified running 20 times rapidly, now and then is not good enough)
spipgm2 /u
spipgm2 /e
spipgm2 /s p5b.rom

Computer now boots, thank you so much for this info!

Isabella Kaun said...

I just had this same aspect happen. I am HORRIBLE at the whole creating cable aspect and was considering if anyone here had a cable I could use. Figure out once you use it it's not like you need it anymore, right? I live in North Southeast CT, please let me know if anyone has one that way of life near or are willing to e-mail.
dietas saludables

Zé Chavala said...

I just want to say THANK YOU A LOT, guys.
Man... I'm not believing that I could.

Camaradas brasileiros, qquer coisa entrem em contato! Fodí minha P5B Premium Vista Edition com essa merda de ASUS Update no Win7x64.
Graças a esse post, em apenas um dia, R$10 (no cabo paralelo, num desmanche) e um computador de um amigo (que tava encostado) consegui fazer a porra toda. Caralho, que alegria!

Thanks irmãos!

Unknown said...
This comment has been removed by the author.
Unknown said...

I wanted to say thank you to all the people who commented and post solutions. Today I fix my ASUS P5B Deluxe using a very easy method that I wanted to share.

No soldering, No resistor solution, using 2 AA battery and electrical tape.

Use quality cable like the USB or Firewire cable that came with the board. These cable have connector for the SPI port and they are well built.

Here is a picture

Make sure you arrange the wires to the right pin, then strip the other end and just stick it into the DB25 port, just use tape to hold it in.

You can get the cwsdpmi and spipgm2 files here:

Then I just booted up UBCD freedos and I issue these command:

spipgm2 /i
spipgm2 /u
spipgm2 /e
spipgm2 /p bios.rom

Notice I didn't use the /s switch because it did not work with this build. If /p does not work for you, try /s.

Unknown said...

Thanks for sharing your wisdom!
Recovered successfully using notes from the top of this post. Battery off the mainboard. 3.3 power from the same ATX PSU, wire stuffed in orange cut off. Chip was identified as unknown. But after a while, bios became alive! thanks a lot!

Kevin said...

Please, help me. I already tried everything but not work. I used only 2 AA batteries in series (no atx power supply) ~3.4V, already check all a hundred times but not see nothing wrong, but not work.. :((


SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: EE4000h - parity error!
unknown manufacturer, unknown chip
Status = 90h (SRP, AAI, BP3, BP2, BP1, BP0, WEL, BSY)
1 0 0 1 0 0 0 0
Status register is protected, you will need to set WP# pin high


Unknown said...

I noticed everyone is linking to dead download link so sharing a copy of SPIPGM2 that I managed to find via google drive account

Gazer said...

I tried the DB25 model, with and without resitors, shorted the Cable to about 15cm, when I lowered Vcc I got different Chip matches every time, and lower and lower Vcc with higher resistors on SO/SI/WC Cables. Nothing ever worked, sometimes I able to unlock,but when I was going to erase, it changed chip.
Tried with Cmos battery in and out, Power to motherboard, started motherboard, auxilary Power from two 1.5 battery, from Power supply 3.3V, and diodes from moldex. Nothing worked. Always different answers on chip.
Found BlackCat USB for like nothing, and voila, worked immedently. I Think the error was my parallelport on the stationary computer I used, but it works well with BDM programming cars ECU's??

Unknown said...

Worked like a charm. Thank you so much for posting this info.
First couple of tries failed, even though i did get the correct response from the /i command. I succeeded once i replaced my 1.5v batteries to new ones.

Unknown said...

Thanks to everyone who contributed to this topic. Got my board working again following Kent's method (, except using a cable with two AA batteries as power supply (no resistors or diodes were needed). Worked first time for me, no issues whatsoever.


G--P said...

Many thanks for finding this amazing solution.

Used the method described with two brand new AAA batteries and a firm grip on both ends to be sure they were perfectly connected.

No diodes or resistors.

Extra diagram very useful from:

For the DOS, I used a modified Win98 image with SPIPGM2 and the ROM file. With this I was able to start a DOS console and access the needed files in the CD.

Young God said...

Thank You !
It worked.
No resistors or diodes needed for me.
Proper power is necessary (I think best place is from another pc's power supply) and run each command correctly.
I would like to post pictures but I don't know how. lol

Generic viagrabuy said...

such a nice blog please keep sharing!!
Generic Viagra buy
Generic Viagra
Tadalis SX
Generic Viagra
Sildenafil citrate

Generic viagrabuy said...

Great job please keep posting the things!!
Generic Viagra buy
Generic Viagra
Tadalis SX
Generic Viagra

Unknown said...
This comment has been removed by the author.
Unknown said...

I'm very late to the party but I've managed to fix my P5B with an Arduino. The arduino acts as serial programmer to flash the BIOS. More info here.

L said...

Hi there!
I'm wondering what I might be doing wrong, if anything... I can't get it to detect the chip correctly although it doesn't completely fail. I get the chip ID as EE4000h and BPL, AAI and BSY signal are set to 1 while all the others are 0.
The unlock command isn't clear if it works and the erase command doesn't seem to work at all. As for the flashing itself, although the process completes (both with /s and /p), the motherboard never boots to POST.
I've triple checked the cable connections and everything seems to be alright, I'm getting the +3.3V directly from the orange cable from the power supply of the computer used to flash the P5B M/B BIOS.

Here are some screenshots:
- spipgm2.exe /i

- spipgm2.exe /u

- spipgm2.exe /e

- spipgm2.exe /r 0x10000 0x200

- spipgm2.exe /p p5b.rom

- spipgm2.exe /s p5b.rom

Wiring is as follows:
PSU +3.3V <----> SPIP (1)
DB25 (18) <------> SPIP (2)
DB25 (7) <-------> SPIP (3)
DB25 (8) <-------> SPIP (4)
DB25 (10) <-----> SPIP (5)
DB25 (9) <-------> SPIP (6)

- Screenshot of the cable:

Where am I going wrong? Anyone?
Thanks! said...

Flashing ASUS P5B - Need solution please

Good evening.
As suggested by the statement in "" Writing setup for SPI reprogramming cable DB-25 to 6-pin connector "" I managed to create the SPI cable. The power was supplied by two 1 .5V AA batteries.

The whole process was completed successfully, however my board ASUS P5B "does not start.

For file P5B-ROM that i used, the files which are available on the ASUS BIOS.

i was used SPIPGM versions 1.4 and 2.23 but I will try today to version 1.6

I don't know if you just use the ROM files for flashing the BIOS because I couldn't do the initial DUMP.

Has some original DUMP that you can provide?

My last experience:

spipgm2 /i ;# i think my cable show me is good.

SPI FlashROM Programmer 2.23 (C) 2008-2014 by Martin Rehak;
Compiled by GCC 4.8.4 at 23:19:10, Apr 7 2015
(DOS/Win9x compatability)

SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: BF258Eh
Status = 1Ch (SRP, AAI, BP3, BP2, BP1, BP0, WEL, BSY)
0 0 0 1 1 1 0 0
SPIPGM2 /e ; # verified FF all pages

SPI FlashROM Programmer 2.23 (C) 2008-2014 by Martin Rehak;
Compiled by GCC 4.8.4 at 23:19:10, Apr 7 2015
(DOS/Win9x compatability)

SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: BF258Eh
Status = 02h, WE bit is enabled, blocks protection is disabled
Chip Erase, please wait... done.


SPI FlashROM Programmer 2.23 (C) 2008-2014 by Martin Rehak;
Compiled by GCC 4.8.4 at 23:19:10, Apr 7 2015
(DOS/Win9x compatability)

SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: BF258Eh
Status = 00h (SRP, AAI, BP3, BP2, BP1, BP0, WEL, BSY)
0 0 0 0 0 0 0 0

SPI FlashROM Programmer 2.23 (C) 2008-2014 by Martin Rehak;
Compiled by GCC 4.8.4 at 23:19:10, Apr 7 2015
(DOS/Win9x compatability)

SPI connected to LPT port at I/O base address: 378h, SCK pulse width: t+0us
FlashROM JEDEC ID, type: BF258Eh
Status = 02h, WE bit is enabled, blocks protection is disabled
Status = 00h, FlashROM is unlocked now.


With sucessful and compared without any errors: P5B.ROM > P5B-ASUS-2104.ROM


My board still not booting. Do you know wat´s appening?

Many thanks

Unknown said...

Hey Guys,

real nice this tutorial above. After three days of trying different things i finally get it working for me on a MSI P67a-GD55 B3.

The problem:
Using the Manufacturer BIOS Update Tool with Windows my PC was normally restartet by this tool, but didn't come up. Only Hardware runs (cooler, HDDs, optical Drives, PSU)... But no signal on my display. bad bad bad...

- I tested a reset of CMOS in different ways. Don't help
- I tested the way with the BIOS file on an USB Pen and pressing some Keys to get it to load (probably a rescue solution by MSI, get it from the MSI forum) didnt work.
- Then i tested out other possibilities und i found this here with SPI und spipgm (see below)

What i did in solution:
- Removed CMOS Batterie from bad Mainboard
- Let the Jumper stayed to keep CMOS Settings
- Get an other PC with LPT on 378hSetting
- An unused LPT Cable (my was abut 5 meters long. no problems with that length)
- An old Notebook IDE Cable which pins perfectly match my bad Mainboard
- No capacitor
- Only AA Batteries used

The Adapter-Cable (DIFFERENT FROM ASUS, This is for MSI!!!)
- JSPI1 Pin 3 to lpt pin 10 (with 220 Ohms Resistor in Line)
- JSPI1 Pin 4 to lpt pin 9 (with 220 Ohms Resistor in Line)
- JSPI1 Pin 5 to lpt pin 7 (with 220 Ohms Resistor in Line)
- JSPI1 Pin 6 to lpt pin 8 (with 220 Ohms Resistor in Line)
- JSPI1 Pin 8 to lpt pin 18 (Ground)
- JSPI1 Pin 1 to 4,5 Volts(plus) (3x New AA Batteries)
- JSPI1 Pin 7 to 4,5 Volts(minus/ground) (3x New AA Batteries)

1. Boot up the LPT-PC with Ultimate Boot CD Version 5 with Cable plugged in.
2. Check in BIOS the LPT Setting (378h to set)
3. CWSDPMI.exe ##service for spipgm
3.1. spipgm2.exe -i ##you should see the BIOS Code
3.2. CWSDPMI.exe
4. spipgm2.exe -u ##unlock the cjip
5. CWSDPMI.exe
6. spipgm2.exe -e
7. CWSDPMI.exe
8. spipgm2.exe -s E768142.430 ## USE ORIGINAL BIOS FIlE, no AMIBOOT or something, this transfer was about 45 Minutes to complete
9. spipgm2.exe -e 0x00 0x1ff ##check if content was written, if so youre done

My mistakes before:
- From PINs in Usage
- To low Voltage, 3,3 voltages also dont worked for me
- No Resistores on the Data-Lines

After a try which didnt work i build my computer to test but now the BIOS Chip seems to be clean, after a half second of runtime my computer shuts down. There was no hardware destroyed, only BIOS wasent transmitted.

Hope it helps you!
Thanks a lot!!!

End User said...
This comment has been removed by the author.
End User said...

I successfully restored my P5B using information found here and a summary found on Superuser.

I used a USB header cable (10 pin to 10 pin) and a blank DB25 male. The header cable was split into single jumpers at one end so I didn't need to solder anything nor did I need to destroy the cable. I simply needed to strip a little from the power and ground wires.

I made the appropriate jumper connections on my DB25 male and moved the "plastic spacer" from pin 7 to pin 8 on the motherboard end so it would correctly key to SPI_J1. I then stripped some coating from the ground and power wires closest to the DB25 end. I used a multi-meter and stuck the red probe behind the plastic of one of the orange wires coming from my ATX power supply. I stuck the black probe behind the corresponding ground. I made sure I was receiving the correct voltage (3.4 in this case). I then ran a piece of wire from the power/ground on the cable to the corresponding probe after unplugging the probes from the multi-meter.

With my cable complete and the power OFF, I connected the DB25 end to the programming computer and the other end to SPI_J1. I booted into DOS and ran the appropriate commands with SPIPGM2 (with CWSDPMI7 present). It worked first time. I flashed BIOS rev 2101. It also didn't cost me a cent. There was no soldering involved and all parts are reusable with 2 small pieces of electrical tape where I stripped the wire.

Thanks for posting this guide. I also need to credit for the repost and their additional notes.

arsenalanalysis said...

Please help, i got the cable proper and it recognizes my chip macronix but i always get the message: warnig cannot open cwsdpmi swapfile, what can i do?

Callie Edorra said...

This is a very much informative post shared here. Thanks for sharing.
Men Leather Jacket

«Oldest ‹Older   201 – 237 of 237   Newer› Newest»