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

New adapter arrived, has other bios chip MXIC MX24L4006E, still not in support list of both my programmers…

Here’s the info :



Ι think that the MSU utility had an option to save bios image, the new one i installed is in web-format ( opens in browser) and doesn’t have this option.

I’m gonna set up a spare system i have, to do all the backups, flashing etc. to have my main system ready to use.

If i manage to backup the bios from the new one ( i suspect i have to use mangi flash from bootable USB ) all i wiil need would be a bios chip compatible to my programmer.

After i succeed, i say that i can do some testing of your images, @lordkag , and see which has best performance.

@felix

Yes, the first thing is to backup this original image of the new chip. But since the old chip is now more or less useless and you must replace it, maybe you can try what I wrote in the previous message, to erase the chip and flash those test images using only the Marvell flasher. I would avoid recommending this with a working card and chip, but you are already beyond the “working safe” point. It is the last thing to try with this old chip.

But you can also wait until you get this backup image, so I can build a working image for the Marvell flasher and test it. Also as a last step before chip replacing, but with a proper image.

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

Added later:
I think it is better to ignore my test images and wait for the backup from the new chip. I will then turn this into a small image for the Marvell flasher and you will test with it. You will either restore the card if it works, or you will know that the chip is to be replaced. Using my test images could potentially prevent chip detection from the flasher and then you will really be left only with the programmer method. Also, is your programmer’s software capable of manual override, so you could look inside spi_info.txt (from bin folder) and see if it provides anything useful?

The old chip is incompatible with both my programmers.I knew about the old programmer,but the new one had the chip in the compatibility list. The ebay seller admitted the mistake and refunded part of the money.

I am waiting for new compatible chips i ordered, so i can use these.

Tomorrow i will take a backup image from the new controller.


EDIT :


Seems that i can’t find how to take the backup.

From windows, i used marvell cli to run the following command :

1
 
flash -a backup -f c:\backup.bin -i 0 -t bios
 


but i had an errorcode 1, "Flash falied"

I tried with mvf_mag.exe and go.bat from the updater, but there is no obvious command for backup to a fil.

Does anyone know ?

@felix

To backup the image you must use "go -r" from a pure DOS environment. Again, type only "go -r", not any other strange combination. This is taken from go.bat and it means "read back binary file, no flashing".

Since you are committed in replacing the chip, maybe you can try this last step. Remember to use the old card, disable any onboard Marvell controller, remove any device attached to the external card. Download the attached rar and place the content in the root of a bootable USB. Type at the DOS prompt "p" or "p.bat". It will first erase the chip and then flash the new image. If you have any other error besides "wipeout autoload", please post a screenshot.

The image inside has the same components as your newest card; it was also released for an external card with a 9128 controller, so it has high chances of working for your card too.

Marvell 9128 external FW2.2.0.1124.rar (203 KB)

Old card is not recognized, i get the " no adapter found" message. I’ll try again though.

The image i got from the new card is attached. Thank you for all your work & patience.

DL89270.zip (122 KB)

@felix

I really don’t get this erratic behaviour of the flasher. The 512KB chip only stores the image and should have no part in the process of controller detection, otherwise you could not use chip erasing commands (like go -w, go -e, go -b -e) without breaking the controller. So the ID must be read from the controller, rather than chip. This is where Marvell acted weird. Instead of hard-coding the ID as it is labeled on the controller and implement a logic to support compatible IDs, they implemented a volatile storage for the ID, based on the last BIOS/OROM flashed. Once you have a bad flash, you loose this ID and the possibility to restore it from the chip. The only way to recover is to use the programmer with a valid image.

I was right and this image has the same components as the one I already uploaded. Once you get the new chips, flash your backup image to restore and check functionality. Then you can test the images attached. You have incremental steps to find the best image: updating to 2.2.0.1125 firmware; then updating to 1.0.0.1038 BIOS; then replacing ID 9123 with ID 9128 in the autoload; then adding the newest loader (this last one only for debugging, if you have problems with other cards installed).

Marvell 9128 DL89270.rar (462 KB)

The 9128 chip is recognized in more than one modes, 9123 IDE, 9123 AHCI, 9128 RAID etc.

I believe that this was done in order to have more than one product options to sell to the vendors.

Apart from that, there are also other devices that cannot boot when badflashed, so they are not recognized by the flasher program, because they have not stated their presence via FW.


I rechecked the old card, still not recognized…I also tried to boot to dos with new card, then change to old card and flash, but nada…


So…patiently waiting for the ic’s to come…

It would be convenient for testing to have one of those SOP-8 ZIF sockets…i recall finding single @ bios-repair.co.uk and in 15pcs package at dediprog…I may get some to have for other projects also.

@hanson

Here are some test images. If you’re tired of testing, just go with image1 - if you just want to try the new firmware, or go with image2 - if you want to try the new loader + new firmware. The .bin files are for the programmer, the smaller ones for DOS flashing. But if you want to provide some valuable feedback, please try the following method:

- rename imagex (where x is the number) to image, replace the one from bin folder.
- flash this from DOS using “go”
- test if the image works, if you can boot.
- enter DOS again with the same package and use “go -r” to dump the image you just flashed; if this fails, use the programmer to dump the image. Rename this as Imagex_dump.bin
- if the flashing failed for some reason, use the programmer to write Image9.bin, which you currently use.
- post the results and upload the images.

This will help me to determine what those ending bytes stand for, but also check different types of autoload.

Inside images folder:
Image1 = original autoload, original loader, BIOS 1.0.0.1038 (ID 9120), firmware updated to 2.3.0.1007 or 2.2.1.1007 (20-09-2012 11:02:34)
Image2 = original autoload, new loader from SP1813, BIOS 1.0.0.1038 (ID 9120), firmware updated to 2.3.0.1007
Image3 = new autoload 2.0.0.0629, new loader from SP1813, BIOS 1.0.0.1038 (ID 9120), firmware updated to 2.3.0.1007 ----------- this has 99% chances of failing
Image4 = autoload 2.0.0.0612 from external card (ID 9120), new loader from SP1813, BIOS 1.0.0.1038 (ID 9120), firmware updated to 2.2.1.1007 ------------ 60-70% chances of failing

Marvell U3S6R1 New FW.rar (1 MB)

Thanks a lot mate, I’ll try everything according to your instructions tomorrow so that I can give some valuable feedback.

Regards hanson

@lordkag

Hi friend, so a quick reply: Flashing with "go" command has no success. Our old problem: "no supported flash found"

I will use the programmer this afternoon with the 512 KB images and try to dump by software again…

So far hanson

This is getting more and more confusing. How can your card not be detected when you already have a working image, when you can use it? It has the original autoload, it has the same 9120 ID for the components - just as the original image, only that they are updated.

It could be that a special flasher is required, like the one from original package, which I uploaded bellow. One might also think that those ending bytes are important for this task, but the same original U3S6R1 package (which stress generously provided) has some 512KB images with only padding at the end. The last cause I could think of is that a bad flash changes something in the controller, which the flasher cannot overrule.

You could try for a last time with the content I attached, by renaming imagex to image and place it in bin folder. If it reports the same, then just test the .bin images with the programmer and report your findings. There is no need to read back the image written with the programmer, since (I think) it will be the same. Only the flasher changes those ending bytes and it is linked to what blocks and sizes it has flashed.

Marvell U3S6R1 old flasher.rar (88.2 KB)

Winbond 25X40BVSIG arrived today, fortunately it was compatible to my programmer.

I flashed it using the image (DL89270.bin) i dumped from the new Delock card i bought recently. Everything good, image verified.

I used some dual-sided adhesive tape to stick on top of the new chip and the old badflashed chip. That was done in order to have better control when pressing with my finger to keep the IC in the correct location on the PCB.

I pressed the new chip ( 25X40BVSIG) with the DL89270 image on the card and booted to the USB with marvell flash i had prepared. Just to be sure, i ran the “go -r” to see that the chip was recognized by the flasher/card. Everything ok.

After that, i lifted my finger to remove the chip and i took the old badflashed AT26F004 and pressed it with my finger on the board like before. I ran the p.bat command and flashed the bios image that Lycom Support sent me( see attached ).

Everything ok after all, now i’m waiting for the SOIC ZIF sockets to arrive , to test more images, the ones by lordkag and others found…I am also waiting for the hot-air soldering station, because with the soldering iron the chips will be damaged after some time.

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

@lordkag

Hi again,

so even with the old MVF_MAG it was not possible for me to dump the chip… Courious. Your Images 1 and 2 which I flashed by programmer work fine, I stay with the second one. Thanks for your work!! As you expected #3 and 4 don’t work. With #3 I get the possibility to enter the BIOS by hitting STRG+M but nothing happens then (also no further boot) and with #4 the screen stays black…

Again thanks a lot and best regards hanson

I can’t think of any other reason why your board is not detected by the flasher, even though it works. If we had an original image of U3S6R1 to flash and test to see if it is detected, maybe we could point to a firmware component interfering. If you had a different 512KB chip to test, maybe we could point to the chip not being supported. But I think you stressed your card enough and it is good that it works.

As for the conclusions:

- it seems that the autoload.bin, despite being only a few bytes long, it is a critical component
- the autoload is divided in at least 4 categories: RAID or Non-RAID, onboard or external. They are not usually replaceable.
- the others are not really tied to an ID. You can have the same loader (or BootLoader) on different cards or boards, you can have the same BIOS, also the same firmware
- the BIOS ID could be needed only for RAID controllers (like 9128) which can change its ID when switched between AHCI and RAID (felix dixit).

@felix

The images I provided for your card have the ID 9128 inside BIOS/OROM, as opposed to 9123 in original image. If you want to help us with some feedback, you could test them as it is in AHCI and RAID and report if any problems arise. If you don’t want to play with fire, just drop a word and I will provide some images with the same ID as your original image. I’m thinking of updating the loader to the one from SP1813, the OROM to 1.0.0.1038 and the firmware to 2.2.0.1125 or the newer 2.3.0.1007/2.2.1.1007. You could also tell us if the version is right, since your card reports the firmware version.

Yes I also come to the conclusion that it must be the used SPI chip on my card that is not supported. Unfortunately I don’t have another one to test. On the other hand: when I try to flash in a dosa box under windows the error text is “no controller found”. Anyway strange but thanks to you for me it works fine now…

Hello
I bought the U3S6 card last week and would like to update the firmware. I created a bootable USB stick with DOS on it. When I boot the computer and enter DOS, and type "go" I get a line "MVF_MAG v1.0.0.2470" and after a few seconds comes "Adapter Count = 0".
Nothing else happens. I also tried go -e -y , always same result.
What does this mean, is the adapter not detected? This is the only Marvell Adapter in my computer (ASUS F2A55-M).

This happened to other owners of this card. I think the 512KB chip is not supported by the flasher, which should be added to spi_info.txt. Your only chance is to write the image with a programmer.

Hi,

I also have the U3S6 card and managed a Firmware/BIOS update together with our member lordkag by using a programmer. Even now with everything up to date it’s not possible for me to update or read out anything from the card in DOS mode or under Windows. I recommend that you download the image 9 from zhis therad and get it flashed in a local PC shop in your area.

Best regards hanson

Thank you for the fast replies!
That’s bad, but flashing in a local PC shop is too much work for me, or let’s say it’s not worth it for me… I doubt most of the computer shop are really able to do that…
So I will stay with my firmware, as the U3S6 adapter works fine in my system.

@ THZ:

Although you obviously will not follow the tips given by lordkag and hanson due to the risks, I don’t want to forget to welcome you at Win-RAID Forum.

Regards
Fernando