I fought the Silicon Image 3114 with Solaris and won!

The battle
My latest battle has been against a 4-port SATA-I PCI RAID card powered by the Silicon Image 3114 chipset (it shows up as a pci1095,3114 device). As luck would have it, the card did not work out of the box with Solaris, but some Google searches did provide some hints.
In my research, I found that the card is not a true hardware RAID card as there is no actual RAID magic happening in the chip. It is all in the provided software driver (hense the Windows only drivers). The chip basically allows the computer to “understand” how the drives get sliced and diced, and does the appropriate translation so the machine can speak to the drives. Nothing else. No wonder Solaris didn’t like it. Myself, I don’t at all care that the RAID is less than functional as I plan to use ZFS+raidz for my filesystems anyway.
For Solaris to recognize the drives, the card must be flashed with the IDE version of the BIOS (see the Silicon Image link above). If one has a DOS floppy around, this process should be a piece of cake. Considering I don’t own a floppy drive anymore, and also don’t have a CDROM in my server, the process turned out to be more challenging. In the end I was successful, but it took me about 6hrs of fiddling to get it done. (The Ultimate Boot CD was a lifesaver.)
The real sticking point for me was a simple command I ran the previous night in an attempt to get the card to work. According to OpenSolaris Bug ID 6595150, all I had to do was run an update_drv command to get things going. It added an entry to the bottom of /etc/driver_aliases to indicate that the RAID card was in fact associated with the ata driver, something that made complete sense to me at the time. Turns out, this bug is from an older version of OpenSolaris, and I never should have run this command. Of course the OS was never nice enough to tell me anything, so I was flying in the dark trying to figure out why nothing was working. After literally hours of debugging – this after the many hours already spent trying to flash the annoying little card – I removed the line and everything started working. Yay!
Moral of the story
When everyone else on Internet says you need to flash the BIOS with the IDE version for this particular card, listen to their wisdom. You don’t need to fiddle with things.
The system I got the card running on
OS: Nexenta 2.0RC3 (based on OpenSolaris b104+)
CPU: VIA Samuel 2 @800MHz
What I got running
For those who care, here is a semi-complete list of items I purchased. My goal was adding ~900G of redundant storage to my little Nexenta based Solaris server. I had practically no space free in the case as there is only a single 3.5″ drive bay, and a single 5.25″ drive bay. And, as the motherboard itself is pretty old, it only has two PATA connectors, USB 1.1, and a single PCI slot. In other words, not much to work with. As such, I felt that filling the single PCI slot with a 4-port SATA card and adding a special drive enclosure that would hold four 2.5″ drives was the way to go. My server sits in a closet and all of my machines connect via wireless, so high disk I/O bandwidth was not one of my design goals.
4-bay 2.5″ SATA HDD in 5.25″ drive enclosure
4-port SATA-I PCI card
This seems to be a generic card as I have seen pictures that look exactly the same from other venders, such a LINDY in the US.

4x Western Digital 320G Scorpio 2.5″ SATA HDD

11 thoughts on “I fought the Silicon Image 3114 with Solaris and won!”

  1. Can you describe how you got the Silicon Image 3114 chipset card working in more detail? How do I remove the entry from etc/driver_alias? Does the Device Driver Utility say that your card is correctly installed, or does it list it as "misconfigured?"

  2. How did you remove the line from the /etc/driver_alias file?

    # update_drv -a -i ' "pci1095,3114" ' ata

    Is the Silicon Image 3114 card listed as misconfigured in the device driver utility?

  3. The /etc/driver_aliases file is a simple text file. I just used 'vi', went to the bottom, and deleted the lines I didn't want (the ones referencing the pci1095,3114 PCI device. Nothing more than that.

  4. Great post, but what am I missing, have flashed cards to IDE Bios vers 5403, installation sees card, /var/log/message shows
    "Disk0: Vendor 'Gen-ATA ' Product 'ST31500341AS ' "
    but format doesnt see the disk?

  5. Success after lots of hours.
    Flashed a dawicontrol 154 card using the bios from silicon image but using the flash tool from dawicontrol.

    Thanks!
    longtermarchive.com

  6. So which driver is being used for the controller if not ata? I have an onboard sil3114 and get stuck with "misconfigured" divice if I force the ata driver on it (after flashing the latest BIOS). If I don't force the ata driver, no driver is assigned to the controller.

  7. thank you. thank you. thank you. I just had a string of bad luck and this really saved my skin. First my MB got fried, so I had to get a new MB, but they didn't have theprevious one in stock, so new MB, then had to get a pci-sata card. I put it all together, and I can't find my drives. I'm like WTF mate. Then I read your post, got ubcd, got the drivers, made some stupid mistakes with my ubcd config that didn't make the config run. Got it working off USB though, removed the lines from the driver_aliases file. although it was called si 3124,xxx. and nexenta saw my drives. What happened next was a different story, but thank you very much. My NAS is now, once again, running 100%. And now I know how to upgrade next time.

  8. I had a similar battle, I couldn't get my Sil3114 working correctly (I had accidentally bought it instead of a Sil3124, but that's my screwup & i realised AFTER purchase, so no refundies due to my error) in opensolaris.

    This & other blog entries helped me fix the problem. I got a copy of sysreccd and installed it onto a thumbdrive, i then copied the SATA-only firmware (b5500.bin) & the msdos flashwriter to the root of the bootable flashdrive. wrote the new firmware from the freedos on the flash drive (the instructions aren't straightforward/obvious, I put in the firmware name, and from the menu I hit q, and instead of quitting like expected it seems it queried the flash type & wrote it correctly) and i then after a reboot into opensolais "touch /reconfigure" and another boot it was all correctly detected.

    I found a gotcha was my card wouldn't work correctly when the PCI bus was set to manual IRQ assignment instead of automatic.
    I also got caught with that ata/sil3114 /etc/path_to_inst quirk early on in trying to sort this too.

  9. wow, this was a great find. not sure i would have succeeded without it.

    i tried everything i could, included cfgadm commands and update_drv commands in order to get solaris to recognize either my sil 3114 or my jmicron jmb363.

    nothing worked.

    i finally did as this post suggested, worked like a charm.

    i did find that freedos worked like a charm, i didn't use the ultimate boot cd.

    would have loved to find a way to configure an rpool mirror during the installation process, but can't have everything.

    finally have an zfs home file server up and running with more than 6 ports now 😉

    thanks for posting your tribulations

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.