ASUS A7N8X Deluxe rev 2.0 + Silicon Image 3112 SATA + Vista
Posted: Sun Jul 20, 2008 8:52 pm
Mainboard: ASUS A7N8X Deluxe
Revision: 2.0
BIOS: 1008 (1009 is for rev <2.0)
SATA BIOS [int]: 4.2.47
SATA BIOS [ext]: 4.3.84
Problem:
1) Vista SP1 won't recognize my SATA disk on Silicon Image 3112 SATA-150 controller.
2) Silicon Image added driver support for Vista but requires newest BIOS.
3) SiI BIOS is integrated into ASUS mb BIOS
4) Most recent ASUS mb BIOS is not compatible with new Vista drivers
6) Silicon Image provides a standalone BIOS for inclusion to system mb BIOS
7) I must somehow hack the BIOS image to replace the old SATA BIOS
In Linux at the moment, no problem to detect all my hardware. ;-)
Can use WINE for some windows utilities, but not reliable. Maybe 10-20% success.
What tools do I need?
I think the BIN has an embedded ZIP image. So I wonder, what is the structure and format of this BIN BIOS rom? Exactly 512kb image. Are there multiple ZIP files? Other file data? I may also update the AWDFLASH utility in the Flash Updater section of BIOS image (EZ-Flash, Crash-Free, I forget the vendor specific name for the feature).
Is there a tool kit for me to more easily disassemble and reassemble my BIN images?
What are the BIOS memory dependent locations? How can I find and update any memory dependent locations if files do not align within current size?
Any other suggestions?
----==[ EDIT #1 ]==----
I've found an interesting tool that may trivially do all that I need. CBROM6. But there's a slight bug. OEM BIOS has three PCI bins: PCI[A], PCI and PCI[C]
If I release the old SATA bin and add the new bin, it's added at the end of the list. If I first extract then release all items from the OEM BIOS SATA bin to the end of list, then add again in the extracted order, I get three PCI bins, but all say PCI[A]! Don't know if this would cause a problem or not.
----==[ EDIT #2 ] ==----
Maybe solved, about to flash new BIOS.
Following nForcersHQ post helped a lot with PCI[A] problem, but I can elaborate.
Award BIOS Editor v1.0 or 1.02 do not work for me in WINE, instant app crash. So I use only KHexEdit app and a brain, it's good enough but slower. ;-)
sireebob mentions in his post that he also noticed the same PCI[A] problem with CBROM. Solution, he notice from Award BIOS Editor some numbers assosciated with these 3 PCI location. 4086, 4087, 4088. Now, he has nearly same mainboard, and BIOS, but a little different, so I want to understand where these numbers originate.
Solution:
1) Search for STRING -lh5-.
2) Go ahead some in file and you will see FILENAME text same as output from CBROM.
3) Repeat until reach your PCI area, for me, 4247.BIN.
4) From the first filename character ("4" for me) count back 5 bytes.
5) Ignore first three bytes: 20 01 0C (for first I see 08, 0A, 0B or 0C)
6) 4th byte is the 40, 5th byte is the 86, 87, 88 etc. Little Endian.
So add first PCI BIOS BIN goes to 4086:0000 and is PCI[A] by default. CBROM is broken and should recognize existing PCI[A] as with Extract and Release options.
For remaining, manually specify option with /other 4086:0 and it all appears correct!
So now I try to flash now...
Revision: 2.0
BIOS: 1008 (1009 is for rev <2.0)
SATA BIOS [int]: 4.2.47
SATA BIOS [ext]: 4.3.84
Problem:
1) Vista SP1 won't recognize my SATA disk on Silicon Image 3112 SATA-150 controller.
2) Silicon Image added driver support for Vista but requires newest BIOS.
3) SiI BIOS is integrated into ASUS mb BIOS
4) Most recent ASUS mb BIOS is not compatible with new Vista drivers
6) Silicon Image provides a standalone BIOS for inclusion to system mb BIOS
7) I must somehow hack the BIOS image to replace the old SATA BIOS
In Linux at the moment, no problem to detect all my hardware. ;-)
Can use WINE for some windows utilities, but not reliable. Maybe 10-20% success.
What tools do I need?
I think the BIN has an embedded ZIP image. So I wonder, what is the structure and format of this BIN BIOS rom? Exactly 512kb image. Are there multiple ZIP files? Other file data? I may also update the AWDFLASH utility in the Flash Updater section of BIOS image (EZ-Flash, Crash-Free, I forget the vendor specific name for the feature).
Is there a tool kit for me to more easily disassemble and reassemble my BIN images?
What are the BIOS memory dependent locations? How can I find and update any memory dependent locations if files do not align within current size?
Any other suggestions?
----==[ EDIT #1 ]==----
I've found an interesting tool that may trivially do all that I need. CBROM6. But there's a slight bug. OEM BIOS has three PCI bins: PCI[A], PCI and PCI[C]
If I release the old SATA bin and add the new bin, it's added at the end of the list. If I first extract then release all items from the OEM BIOS SATA bin to the end of list, then add again in the extracted order, I get three PCI bins, but all say PCI[A]! Don't know if this would cause a problem or not.
----==[ EDIT #2 ] ==----
Maybe solved, about to flash new BIOS.
Following nForcersHQ post helped a lot with PCI[A] problem, but I can elaborate.
Award BIOS Editor v1.0 or 1.02 do not work for me in WINE, instant app crash. So I use only KHexEdit app and a brain, it's good enough but slower. ;-)
sireebob mentions in his post that he also noticed the same PCI[A] problem with CBROM. Solution, he notice from Award BIOS Editor some numbers assosciated with these 3 PCI location. 4086, 4087, 4088. Now, he has nearly same mainboard, and BIOS, but a little different, so I want to understand where these numbers originate.
Solution:
1) Search for STRING -lh5-.
2) Go ahead some in file and you will see FILENAME text same as output from CBROM.
3) Repeat until reach your PCI area, for me, 4247.BIN.
4) From the first filename character ("4" for me) count back 5 bytes.
5) Ignore first three bytes: 20 01 0C (for first I see 08, 0A, 0B or 0C)
6) 4th byte is the 40, 5th byte is the 86, 87, 88 etc. Little Endian.
So add first PCI BIOS BIN goes to 4086:0000 and is PCI[A] by default. CBROM is broken and should recognize existing PCI[A] as with Extract and Release options.
For remaining, manually specify option with /other 4086:0 and it all appears correct!
So now I try to flash now...