[Discussion] Firmware Update of the Marvell 91xx SATA Controller

Hi everybody,

I don’t know if somebody can help me with my problem that is as follows: I do have an ASUS U3S6 PCIe x 4 card, 2 USB 3.0 ports by NEC and 2 SATA-III ports by Marvell (dev. 9120) on it. I want to use this piece for booting from SSD in my second PC (I know that Intels conrollers are better but it runs in RAID and is only SATA II without TRIM). From time to time I get bluescreens related to the Marvell controller, even with the newer drivers released recently. I found a firmware package at station-drivers but the flash does not succeed. Under Windows (XP x86) I get the message “adapter not found” and under DOS “flash not found”. I searched all the web the last nights and understood that a lot of people did a flash of that PCIe device. But all these threads are very old so the downloadlinks etc. do not work any more. The firmware I downloaded seems to be useable as my device is listed inside an attached txt document. Does somebody know a trick, how to make the flash software finding the adapter? I think the tool is looking for an “onboard device”.

Any help would be appreciated

Regards hanson

Nobody an idea?

I have seen some reports that such a firmware upgrade bricked the SATA part of the board. Maybe it was just an older bugged version.

For your problem. I’m sure you already extracted the IDs from the board itself (like in this picture, the chips have the ID written on them). Next there is the driver part: have you tested all the drivers from Station-Drivers with the same result? And if I’m not going too far, have you really determined that Marvell is the cause of the bluescreen? WhoCrashed or better yet, BlueScreenView could point you to the culprit. Just analyze the dmp file or upload them here. What is the system that has this board, like mainboard, OS, current firmware…

For the firmware part. There is only one posted at Station-Drivers for 91xx, the 2.2.0.1125b version. Download it, create a bootable USB flash with Rufus, place the content of the package on this bootable USB flash (i.e. the flash will have in its root go.bat and bin folder, besides the bootable files). Disable from BIOS any other Marvell controller you may have on the mainboard, boot from this flash, type “go -h” for help, go -v for flashing with full details of the process, or simply go for flashing normally. Post a screenshot with any/all messages you have on the screen. If you can’t disable the internal Marvell controller, flash with “go -aid 0” or “go -aid 1”. If you still have errors, please post the full log of the messages, as it is. My guess is that it detects another incompatible Marvell controller and fails. Also, even the onboard controller is still connected to a PCI port, so it should be detected the same.

There is also a NEC firmware update, one from ASUS and two at Station-Drivers.

If you still have errors, please post the full log of the messages, as it is. My guess is that it detects another incompatible Marvell controller and fails. Also, even the onboard controller is still connected to a PCI port, so it should be detected the same.

Now I put the controller into my ASRock X79 based PC without any other Marvell controllers and I got the same result. Tried the flash under DOS and error is: "flash not found"

There is also a NEC firmware update, one from ASUS and two at Station-Drivers.

Thanks for info, I already use that NEC firmware :wink:

Edit: I tried all the drivers that were released since I bought the card back in early 2012. The system where it normally runs in is as follows: ASUS P5Q3 Deluxe WiFi AP@N with BIOS 2105, Intel Core 2 Extreme QX9650, Leadtek GeForce GTX 280, 8 GB DDR3 G.Skill ARES 1600 MHz CL7, 2 x WD RAID Edition 3 1000 GB RAID-0, SanDisk 64 GB SSD, Soundblaster X-Fi Titanium HD. OS is Win 7 Ultimate x64 and Win XP Pro x86 in Dualboot mode. Everything watercooled.

Regards hanson

That error format is not found in the bat file, which means is not founding the right file to flash. If it didn’t detected the controller, it would have printed "Did not find device! Check connection."

Here is what to try next. Duplicate the content of the folder Image_Creator into bin folder. Add the command “set DEV_ID=912x” to go.bat (where x is 0 or 3, as your chip), right bellow “set DEV_LIST=”. You could also change this (line 10) to "set DEV_LIST=9120,9123"

Another dangerous approach is to try to flash with the command “go -x”, which will only flash the firmware part. With “go - a” will flash the autoload and “go - b” the BIOS part of Marvell chip. But first try to use “go -r”, which should read the chip. If it does, then your chip is detected. Please upload this file to check its component.

Once again, the flash should be done from a bootable USB, which should look like this. Once booted from it, type at the command prompt the values from above, starting with “go -r” and “go -v”. This will give more info.

Tried usin command “go -r”. Error is: “no supported flash found”.

I’m sorry for being undetailed before. That was the same error I get when I use the “go” command. So I think I have to adjust the device ID compatibility?

Regards hanson

So now I altered the 2 lines inside go.bat but same result. I attached a scrrenshot, sorry for the image quality…

IMG_0090.JPG

This means it thinks that the chip is not supported. But it is in the list. Try the following changes to the go.bat

Line 10 to "set DEV_LIST=9120,9123"
Line 46 to "set DEV_ID=912x" // (x is 0 or 3)
Line 47 to "if "%DEV_ID%"=="" goto fail_end

Also change in MVM.bat -newimg to -image

I changed all that but result remains the same :frowning:

What is the ID written on the chip and what is the current firmware?

I have uploaded an older version, 2.2.0.1124, to see if we get something. This time just run p.bat or p

Marvell 91xx Update FW 2.2.0.1124.zip (701 KB)

When I try the flash in a Windows DOS box it says “no adapter found” (see attached image)

so maybe there is a problem with the adapter detection? or is it just because the tool thinks it’s unsupported?

regards hanson

IMG_0091[1].JPG

Thanks a lot. Firmware (BIOS during post) shows 1.0.0.1028. Chip ID is surely 9120 (checked visually).

regards hanson

Ok I tried your firmware but it’s exactly as before without any difference…

Is this DOS prompt from the USB and is the USB connected to a different port then Marvell, like Intel ones?

That band with Marvel Flash Tool means that it is already at DO_Flash step. So what is stopping it?

Please try to remove the @ECHO OFF from go.bat and MVM.bat. Run p.bat from the previous package, leave all files unmodified (just remove @ECHO OFF), remove any Image_Creator folder of you find any. And please put bin folder, p.bat and go.bat in the root of USB, meaning right in C:\ you should type p.bat

Post again a screenshot with the result.

Yes sounds as if this could work. Unfortunately I have to work in less than 5 hours. Thank you very much so far for your help and advice, will try out everything fresh tomorrow :slight_smile:

regards hanson

Once you try the step above, post a screenshot of the error.

If you can’t wait any longer for an answer, I have attached a modded image. It was rebuilt using the 9120.bin, because the original firmware has 9123 ID in both the autoload and the BIOS ROM. I cannot make any guarantee that it will not brick your board, or that it will work. You will also find an extra image2 outside the bin folder, which has latest BIOS 1.0.0.1038 as opposed to original 1.0.0.1033. This image is larger than original and I have no idea how it will behave. Just rename to image and replace the one from bin. First try with smaller image and if it works, you could jump for the bigger one if you still have BSOD.

As always, bin folder, go.bat and p.bat in the root of bootable USB, boot from it, run p.bat.

Marvell_9120_firmware_2.2.0.1125b mod.rar (319 KB)

Hi lordkag,

I tried both, the spi from last night and the modded one executed from the root of my usb stick. Unfortunately without success. I attached an image but it’s the well known same result as before.

Regards hanson

IMG_0093[1].JPG

The problem seems to be around the flasher mvf_mag. It is already loaded and it fails for some reason. Two reason for that: first, they badly coded it, since it doesn’t detect 9120 as valid flash and they don’t offer enough info on the process, like what chip it thinks it is and a less general message than “no supported flash found”. The second would be that the chip is damaged (reason for BSOD) or the access is obstructed by faulty hardware implementation.

For the first reason we have a few pages with the same error, if you search -> Marvell “turn off cpu access” <-, but this page (translated in english) is most useful. It shows the poster as succeeding in updating 9123, but the first comment says that 9120 gives the same error as yours. From the poster’s pictures we see that “Turn off CPU access” is right before chip detection, so either the chip is faulty or the flasher is plain dumb.

There is a way to check the flasher. A first step is the check the exact ID of the chip, serial number like MX25xx and so on (the actual chip and not Marvell ID). Open go.bat and add this between lines 46 and 47 -> echo Device is %DEV_ID% <- then type in prompt “go -w”.
If it shows nothing new, then change to bin folder (cd bin) and run “mvf_mag -h” or “mvf_mag /?” to see the help commands. A screenshot would be nice, as I am interested in either a force flash or a DeviceID override command. If still nothing, type “mvf_mag -image -w”, “mvf_mag -9120 -image -w”, “mvf_mag -aid 0 -image -w” to see what commands it accepts, if it gives you an example to use. For another dangerous approach is to use the mvf_mag from 92xx, download the latest 92xx from Station-Drivers and replace mvf_mag with the new one. Maybe this one is a little more friendly.

For the second reason I would need the dmp files to be analyzed, as it is improbable to have BSOD with numerous drivers without the hardware being somewhat faulty. The exact error code would give us another path to follow.

@lordkag

Hey,

as always first of all thanks a lot again for your kind help. So I tried everything you suggested, also with the MVF_MAG from 92xx firmware - nothing. Just the same error. Also there seems to be no override function as far as I understood. So I attached a couple of pics, maybe ther’re helpful for you… I will disasemble the PC again tomorrow to check the chips serial number (it’s a little bit tricky due to the water cooling system which has to be emptied and partially taken out before)

Regards hanson

IMG_0096[1].JPG

IMG_0097[1].JPG

IMG_0098[1].JPG

IMG_0099[2].JPG

There is no need to check the serial. I had hoped that the chip is detected from spi_info.txt, but looking at some photos online it seems that it has no other IDs than Marvell. So no need to disassembly.

But this is what to do, if you don’t mind the never-ending testing. With the original 91xx mvf_mag and go.bat changed this way: add between lines 46 and 47

1
 
echo Device is %DEV_ID%
 
type in prompt "go -w". Then type "go -r" to check the reading of the chip, then "mvf_mag -h" to check the flasher's parameters, which are different from the new 92xx. A screenshot, if it is not too much.

A second test, with the new 92xx mvf_mag and the new 92xx GO.bat (just change line 3 to: set HBA_ID=9120) replacing the older ones, type "go -ra", and only if not working type "go -r". This should create a new bkimg0.bin if the flasher can read the chip. Do not use simple "go" as this flasher uses a different method for writing. If you do decide to risk, also change line 68 in go.bat like this: set IMAGFILE=image
The new 92xx flasher has ID override which can be set from the new GO.bat. By changing the lines 3 and 68 like the above, you can type "go" and the flasher will do its part.

If the "go -r" command doesn't work with either the old or new mvf_mag, than the chip is beyond our reach, as this should only read its content, the simplest task. Only a new Marvell firmware would sort this thing. But please test each step as it is, without skipping parts or combining them.

///////////////////////////////////////////////////////////////////////////////////

Added later:

Third step. I have just checked what commands it passes to the flasher. With the original firmware&files untouched check the following commands.

mvf_mag image -newImg -w
mvf_mag image -newImg -a
mvf_mag image -newImg -b
mvf_mag image -newImg -x
mvf_mag image -newImg -aid 0
mvf_mag image -newImg -r
mvf_mag image -newImg -v

Post screenshot only if the result changes.