Wednesday, September 18, 2013

Turning Dell PERC H310 to dumb biosless SAS / SATA controller

After realizing that LSI SAS1078 based controller wouldn't do what I want I ended up purchasing card from eBay, 65€ including shipping for unused, new in box Dell PERC H310. Prices are bit higher than I like, but this was acceptable knowing it will do exactly what I need. Despite trying hard card will still show up as DELL after making these changes but it's in IT-mode and accepts generic LSI firmware.



Step 1: Disable SMBus, we have no need for it.
I did this by simply cutting PCIe bus traces B5 and B6. They're 5th and 6th from left when looking board from top (component side). If you're a coward you might resort to covering them with kapton tape or using yo momma's nail polish.

Step 2: Erase on board flash. This will also erase your controller SAS address. Which I couldn't care less, we can simply invent our own. Or you could check what it's currently, write it down, erase flash, restore yada yada. Who cares.

Step 3: Flash LSI Firmware but skip flashing LSI BIOS. This way card does not show up during BIOS checks and can't be used for booting nor fakeraid, but does work fine in Linux.

Step 5: Profit!


Ok, let's go. We start by creating bootable FreeDOS USB stick with required tools.
# Below assumes your USB stick is /dev/sde. DOUBLE CHECK THIS!
# Unmount any partitions OS might have automounted from this USB device
mkdir -p /tmp/foo
cd /tmp/foo

# Get FreeDOS image, unpack, write to USB
wget http://dump.asiantuntijakaveri.fi/le_bueno_dumpo/FreeDOS-1.1-USB-Boot.img.bz2
bunzip2 FreeDOS-1.1-USB-Boot.img.bz2
dd if=FreeDOS-1.1-USB-Boot.img of=/dev/sde bs=4k

# Refresh Linux partition table list and mount USB
# This WILL fail if you didn't unmount automounted filesystem first
partprobe
mkdir mnt
mount /dev/sde1 mnt

# Download LSI tools
wget http://dump.asiantuntijakaveri.fi/le_bueno_dumpo/lsi/lsitool.zip

# Unpack tools to USB
unzip lsitool.zip -d mnt

# Unmount USB
umount mnt

Next boot computer from this USB stick and execute following magical commands. These are destructive, just so you know.

megarec -writesbr 0 sbrempty.bin
megarec -cleanflash 0

Reboot.

sas2flsh -o -f 6gbpsas.fw
sas2flsh -o -sasadd 500605b0deadbabe

Reboot.

sas2flsh -o -f 2118it2.bin

Check results.

sas2flsh -listall


P.S. If you want to revert back to regular firmware, enable LSI BIOS etc. you're on your own. Google-fu, thou shalt find.

4 comments:

  1. How is write speed after flashing to LSI firmware?

    I have read forums that original Dell BIOS have major performance issues. Have you experienced any?

    ReplyDelete
  2. found typo with - megarec -writesb 0 sbrempty.bin
    should be - megarec -writesbr 0 sbrempty.bin
    otherwise thanks, the other guides were not working for me

    ReplyDelete
  3. I had to boot FreeDOS using the fourth option (no drivers). Otherwise megarec kept crashing for unhandled exception errors. And as a side note, if you have whatever issues with the flashing process, don't try to update the sas2flsh binary. Newer versions seem to dislike H310s and fails to flash. I also got timeout kind of error while emptying SBR with megarec on my second PERC H310. I just re-issued the command and tried again. No problemos after that. The instructions gets you to the P17 version of the firmware. P18 is the newest (as of writing this). Go figure yourself if you want the newest and greatest.

    ReplyDelete

Got something to say?!