• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Sil3112 flashing (SATA)

dougg3

Well-known member
I've been trying to help CC_333 with his missing firmware problem.

I see exactly what you're talking about with the weird "every 9 bytes" thing, trag. I can't figure out what's going on either. I've gone so far as to play around with debugging and disassembling the FirmTek 1S2 5.1.3 firmware update utility, but I haven't really gotten anywhere. I've found where it loads the firmware update file into RAM, but I can't find any decoding routine or anything. I was thinking maybe it could be compressed with something like LZSS compression, but I just don't know. Nothing jumps out as obvious. :-(

I found a FirmTek 1S2 card on eBay and bought it. I'll desolder and dump the chip to figure out what is actually flashed to it. This problem has me stumped enough that I have to figure out what's going on for real :)

 

CC_333

Well-known member
Thank you very much, dougg3!

Your help (and speculation) have been extremely useful, and I learn a lot just reading your posts!

Anyway, since my card's useless to me in its current state, would you like me to send it to you for experimentation?

It seems I have little to lose at this point...

So let me know via PM!

c

 

dougg3

Well-known member
I'd be glad to have you ship it to me to fix (if worse comes to worse I can simply copy the flash contents of a known working card to your card manually with my chip programmer).

Before we go that far though, let's wait until my eBay purchase arrives. I might be able to get the info needed to get you up and running with the Windows flasher tool. (Also see your other thread where I discovered there's an OS 9 version of the update program you might want to try)

 

dougg3

Well-known member
Back onto here with my results. Here's the deal.

The FirmTek 5.1.3 updater contains a file called ROMFILE.1S2. It looks like it's compressed or something as trag pointed out. That's because somehow during the boot process, Mac OS X extracts two compressed kexts from it and installs them into /System/Library/Caches/com.apple.romextensions. However, it *is* the firmware file that needs to flashed onto the chip. No weird encodings, weird data line hookups, or anything like that.

The FirmTek updater will only update a card that already has FirmTek firmware on it, because it checks to see if its own driver is associated with the card. The WiebeTech updater can fail because it doesn't support all of the chips that FirmTek used. It may be possible, given a copy of the two kexts, to manually load them when a card has blank firmware and then get the FirmTek updater to work. Initial experimentation with that was successful for me...but you need the kext files first, so it's kind of a catch-22 unless you can figure out how to extract them from the firmware file or get them from someone else.

Silicon Image's DOS-based UPDFLASH.EXE utility seems to do the trick when booted from a FreeDOS boot floppy, but it is notoriously unreliable. I don't trust it. But if you give it enough tries, it should succeed. I had a TON of problems trying to run it direct from Windows 98 DOS mode though. I'd stick with the FreeDOS floppy. I would also make sure to put the firmware into it as a 256 KB file padded with 0xFF bytes at the end to make it a power of two. It appears maybe UPDFLASH won't correctly flash the end of the file otherwise.

Most importantly: the FirmTek firmware checks the ID of the flash chip on the card. It has a whitelist of allowed flash chips. If it's not a PMC Pm39LV040 or a Macronix MX29LV040, it won't load. There may be other possible chips, but I found the IDs of those two for sure, and I know the SST39VF040 is not supported.

 

dougg3

Well-known member
Forget what I said about getting the FirmTek updater to work. If you have a partially flashed card, the FirmTek updater might be able to recover if you manually load the kext, but if you have a blank chip, you will have to resort to a different flashing method.

 

CC_333

Well-known member
How about a card with a partial flash by UPDFLASH?

Also, do you know how I can get the kexts so I can try the FirmTek updater "hack"?

Thanks for your help!

c

 

dougg3

Well-known member
It might work if the partial flash was the ROMFILE.1S2 file...

Check your PMs, I'll set you up with the kexts in a minute.

P.S. in case anyone is interested it looks like the Am29LV040B is also supported by the firmware.

Edit: This project looks interesting too...it claims to support the Sil3112:

http://flashrom.org/Flashrom

 

dougg3

Well-known member
Well, one last thing to share. I got some MX29LV040 chips and can confirm they work with the FirmTek firmware too, but since those chips are not compatible with the WiebeTech flasher you will need to use the DOS flasher and a FreeDOS boot disk to put the initial flash image onto them.

So again, for clarity: if you want to use the FirmTek firmware, you need one of these three chips that I know of:

  • Pm39LV040
  • MX29LV040
  • Am29LV040B

The only one I can find readily available is the MX29LV040 which also happens to be the one not compatible with the WiebeTech flasher :-( Maybe my next task will be to figure out how to patch the WiebeTech flasher (if possible) to make it compatible with that chip. Dunno.

 

max1zzz

Well-known member
Don't suppose anyone knows anyware in the UK that stocks those chips? can't find them for the life of me, between farnell, CPC and mouser i can find most parts, just not these...

might just order a few from digikey in the US if all else fails

 

MacJunky

Well-known member
Pretty sure the seritek 1v4 is based on the Vitesse VSC-7174. It is supposedly OS 9 and /possibly/ lower compatible but do not hold me to that.

And there is some other OS X-only card that I think was seritek 2se4 based on the SIL3124.

The reason I started different threads in the first place 3112/3512/0680/etc is because each chipset is going to have different stuff going on. Once everything is established and worked through then a single mega-thread should be made; until then mixing the chipsets might cause problems with people getting conversations mixed up.

As far as I remember I am not currently aware of a Mac compatible Sil3114 card.

 

max1zzz

Well-known member
Would it be difficult to modify the firmware to support other flash chips? just i'm having a huge amount of trouble finding a uk stockist of supported chips, the closest i found was a chip with a part number close to the Am29LV040B one, but it is Am29F040B so i guess it is no good.

if not i will just have to order some in from the US or China...

Edit, found one stockist on ebay, but £9 a chip... vs £1.50 form the US or china

 

dougg3

Well-known member
I think modding the firmware would be a bit too difficult for me to handle, sorry! The Am29F040B won't work because it's a 5V chip and these chips are 3.3V.

 

max1zzz

Well-known member
yeah, i guessed that would bee too difficult to do...

i'll have one last hunt around, but i think i am just gonna order a load form the US or china and hope for the best, hopeing my sil 3112 pc card will finally come good

 

dougg3

Well-known member
Good luck! I ordered a few cheapo Sil3112 cards on eBay, I'll be testing mine out with known good chips too :)

 

max1zzz

Well-known member
and i wish you good luck too ;)

think i actually will just see if i can get a few quid knocked of the chip and order one to try, if it works i plan to make myself 5 cards or so....

 

max1zzz

Well-known member
ok, i have a question, you say the Am29F040B won't work as it is a 5v chip (which i don't for one second dispute on the seritek cards) but i just cheacked the original chip off my PC sil3112 card, and it is a Am29F010 which is a 5v chip

So would the Am29F040B work as i actually need a 5v chip and not a 3.3v one?

 

dougg3

Well-known member
Hmm, that's an interesting discovery! If the original flash chip was a 5V chip I have no idea how it even worked. I guess it's possible that they added level shifting between the 5V flash chip and the 3.3V Sil3112 chip, but I find that unlikely...I would think it would be far easier for them to just use a 3.3V chip. If you want to check what the card wants for sure, I would put the card into a system, power it on, and measure the voltage on the VCC pin of the flash chip (pin 32, the one just to the right of the dot marking pin 1).

 
Top