Using non-certified hard drives in Dell MD3220 storage array

Is it possible to use non-certified hard drives in a Dell MD3220 storage array? I ended up getting 3 new drives that were the EXACT same model number as the existing ones. Then I bought the drive caddies to go with them.

The drives I'm working with:

Manufacturer: TOSHIBA
Product ID: AL13SEB600
Serial number: (varies)
Speed: 10,500 RPM
Current data rate: 6 Gbps
Logical sector size: 512 bytes
Physical sector size: 512 bytes
Physical Disk firmware version: (varies)
Date of manufacture: Not Available

Once the new drives arrived I mounted them on the caddies and inserted them into my storage array to see an Incompatible status. They have all the same specs. The only difference is the firmware. Still oblivious as to what was going on I started the standard process of upgrading the firmware. The firmware on the drives I received was 1701 and all my other existing drives were DE09.

During the Upgrade Physical Disk Firmware process...

enter image description here

I end up getting this error...

enter image description here

After looking into it on the web it seems that it's a common practice for vendors like Dell to lock down their software to only support DELL BRANDED hardware! Even though the drives are the exact same drive (same model and everything both made by Toshiba).

Now I'm stuck with these three drives that I only bought because Dell wouldn't sell them to me (I guess they no longer make them). Not to mention the caddies I bought elsewhere. My question is, is it possible to somehow flash the firmware on these drives so that Dell's software/hardware will accept them?

UPDATE 2019.01.24

Just to add if it helps others, I wanted to post where I was able to find the firmware for my drives. Dell does not make it easy to get to. I had to check each version release of the firmware packs to find the firmware I needed for my drive. Suggestion, don't download each one, use the README (they include for each firmware pack) to search for the firmware you are looking for then download the large pack of firmware. Mine happen to be A19 that contained the DE09 firmware I was looking for.

Go to (this page) and note the red boxes... enter image description here

After clicking on older versions it opens another window showing you the following... enter image description here

You will need to look at each one to determine what package (in my case A19) that you need to download.

UPDATE 2019.01.29

Well it has been a few days now and my struggle continues. Even with the help of @Freddy's answer I'm still trying to make this a reality.

I have managed to get over a few hurtles but now I'm not able to move forward. I have edited the firmware (DE09.fwh) enough so that it does two important things...

  1. It gets past the device ID check to green light my disk. Before, the firmware would check for id 29747 (AL13SEB300) or id 29748 (AL13SEB600) or id 29749 (AL13SEB900). My drive was showing up as id 00000 (AL13SEB600). So I edited the FW to account for the 00000 id. This worked great!
  2. It bypasses the minimum required firmware version (because my new drives have version 1701 on them) before it tries to update. So now instead of looking at drives with firmware DE01 and above, it looks for drives with 1701 and above (because version 1701 is lower than DE01).

So after trying many different approaches. I have found that there are really three tools to use to flash the drive's firmware...

  1. SASDUPIE.exe
  2. The Dell Powervault Modular Disk Storage Manager
  3. The Dell SAS Hard Drive Firmware Utility

SASDUPIE.exe

When trying to use SASDUPIE.exe on (*.fwh) files such as DE09.fwh, I get a new error (since I have hacked the firmware) when trying to flash...

The operation failed due to an invalid image file.

and

Error Code: "WriteBuffer: Return code from ProcessLibCommand = 2d."

Dell Powervault Modular Disk Storage Manager

This is the normal way that Dell wants you to update the firmware. It takes firmware packages (*.df) such as Toshiba_AL13SEB600_DE09.df. I thought that I could try to just hack the firmware and use this tool to update the drives. But with this tool it first reads the drives and determines that are in Bypassed or Offline status and make the drives inaccessible. This happens before you can even get to the Download Physical Disk Firmware window. So unfortunately this was a bust.

Dell SAS Hard Drive Firmware Utility

This is a tool that can be downloaded from here. It allows you to create a bootable CD or USB thumb drive. You can then boot the CD/USB up to upgrade the drives in a non windows environment. Unfortunately this would not work for me either. When I booted up my R630 Dell server which has a boot drive that's mirrored (2 x 600GB drives), and a data drive (not currently used) that is running a raid 5 array from 4 drives, and has connections to my MD3220 storage unit of course. That makes a total of 6 drives mounted into the R630 server and then I have one I inserted (then set as a NON-RAID drive) to flash the firmware on. When booting up this utility it seems to only show me 4 drives, and two of those drives are the same drives just from different controllers. I have no clue why it's not showing me all the drives. But this does not seem to be working for me at all.


Solution 1:

I found a tutorial. Please read Flash Dell Firmware into Seagate Generic Drives.

The procedure should be the same for your Toshiba drive as the same tools are used.

Dell download page: Toshiba SAS AL13SEB300, AL13SEB600 and AL13SEB900 firmware version DE09.

FYI: There is also a newer firmware DE11 available (not tested by me).

I tried to install the 64bit windows package which successfully failed on my lenovo laptop, but I could find the extracted files in my win10 temp dir (C:\Users\ibm\AppData\Local\Temp...).

Command line options of SASDUPIE.exe:

C:\Users\ibm\AppData\Local\Temp\d2a071e4-aa46-4096-8e37-a0359bbdd672>SASDUPIE.exe /?
========================================================================
Firmware Download Program
Dell Inc - All Rights Reserved.  2005-2007
========================================================================

Usage: -h
        Provides detailed help information

Usage: -v
        Provides program version information

Usage: -i [-o <output filename>] [-debug]
        Provides inventory information of all identified devices.
        -o Specifies the output filename.
        -debug Specifies to create a debug log file.

Usage: -u [-s <image folder>] [-f] [-o <output filename>] [-debug [filename]]
        Downloads the firmware to all devices which are compatible with
        the image file.
        -s Specifies the folder containing the firmware image files. Current
            folder is default Ex. c:    mp (win) or //tmp (linux)
        -f Specifies to download if the same or a newer version is installed.
        -o Specifies the output filename.
        -debug [filename] Specifies to create a debug log file. The default
           filename is debug.log in the current folder.
===========================================================================

Hexdump of the first 256 bytes of the firmware binary payload/DE09.fwh:

ibm@x250:/mnt/c/Users/ibm/AppData/Local/Temp/d2a071e4-aa46-4096-8e37-a0359bbdd672$ xxd -l256 payload/DE09.fwh
00000000: 2020 2020 2020 2020 0144 4530 3944 4530          .DE09DE0
00000010: 3178 0200 0000 0000 0000 0000 0000 0000  1x..............
00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0003  ................
00000040: 2020 2032 3937 3437 2020 2020 2020 2020     29747
00000050: 2020 2020 2020 2020 2020 2020 2020 2020
00000060: 2020 2020 2020 414c 3133 5345 4233 3030        AL13SEB300
00000070: 2020 2032 3937 3438 2020 2020 2020 2020     29748
00000080: 2020 2020 2020 2020 2020 2020 2020 2020
00000090: 2020 2020 2020 414c 3133 5345 4236 3030        AL13SEB600
000000a0: 2020 2032 3937 3439 2020 2020 2020 2020     29749
000000b0: 2020 2020 2020 2020 2020 2020 2020 2020
000000c0: 2020 2020 2020 414c 3133 5345 4239 3030        AL13SEB900
000000d0: 464d 434c 2020 414c 4441 2020 2020 2020  FMCL  ALDA
000000e0: 2020 2020 4445 4c4c 200d 0a43 6f70 7972      DELL ..Copyr
000000f0: 6967 6874 2843 2954 6f73 6869 6261 2043  ight(C)Toshiba C

According to Dmitri Bobko's manual you should replace "29748" (for AL13SEB600) with the hardware id detected by SASDUPIE.exe -u -s "%cd%\payload" -f -o update.xml -debug debug.log (edit: make sure you run cmd using "Run as administrator") and also replace "DE01" (bytes 14-17=minimum required fw version) with your current firmware revision "1701".

After running the command I could find in debug.log where the fw update would have been triggered (if I had matching hardware).

Snippet of debug.log:

...
<Thu Jan 24 01:32:48 AM>loadImageFile: Match: name:*.fwh dirfilename:DE09.fwh
<Thu Jan 24 01:32:48 AM>ImageFiles::DoesFilenameMatchTemplate: Begin
<Thu Jan 24 01:32:48 AM>DoesFilenameMatchTemplate:filename=DE09.fwh filepattern=*.fwh
<Thu Jan 24 01:32:48 AM>DoesFilenameMatchTemplate:lowercase_filename=de09.fwh lowercase_filepattern=*.fwh
<Thu Jan 24 01:32:48 AM>ImageFiles:DoesFilenameMatchTemplate: filepattern length = 5
<Thu Jan 24 01:32:48 AM>ImageFiles:DoesFilenameMatchTemplate: wildcard index = 0
<Thu Jan 24 01:32:48 AM>ImageFiles:DoesFilenameMatchTemplate: have last part
<Thu Jan 24 01:32:48 AM>ImageFiles:DoesFilenameMatchTemplate: FPart=
<Thu Jan 24 01:32:48 AM>ImageFiles:DoesFilenameMatchTemplate: LPart=.fwh
<Thu Jan 24 01:32:48 AM>ImageFiles:DoesFilenameMatchTemplate: lowercase_filename.length()8
<Thu Jan 24 01:32:48 AM>ImageFiles:DoesFilenameMatchTemplate: pLPart.length()4
<Thu Jan 24 01:32:48 AM>filename=C:\Users\ibm\AppData\Local\Temp\d2a071e4-aa46-4096-8e37-a0359bbdd672\payload
<Thu Jan 24 01:32:48 AM>adding file seperator charatcter
<Thu Jan 24 01:32:48 AM>filename=C:\Users\ibm\AppData\Local\Temp\d2a071e4-aa46-4096-8e37-a0359bbdd672\payload\DE09.fwh
<Thu Jan 24 01:32:48 AM>loadImageFile: filename=C:\Users\ibm\AppData\Local\Temp\d2a071e4-aa46-4096-8e37-a0359bbdd672\payload\DE09.fwh
<Thu Jan 24 01:32:48 AM>FWSize=831488
<Thu Jan 24 01:32:48 AM>dirFileName=DE09.fwh
<Thu Jan 24 01:32:48 AM>filename=C:\Users\ibm\AppData\Local\Temp\d2a071e4-aa46-4096-8e37-a0359bbdd672\payload\DE09.fwh
<Thu Jan 24 01:32:48 AM>loadImageFile: imageFile.m_size=831488
<Thu Jan 24 01:32:48 AM>loadImageFile: imageFile.m_name=DE09.fwh
<Thu Jan 24 01:32:48 AM>loadImageFile: imageFile.m_fullPath=C:\Users\ibm\AppData\Local\Temp\d2a071e4-aa46-4096-8e37-a0359bbdd672\payload\DE09.fwh
<Thu Jan 24 01:32:48 AM>addImage: Creating m_imageFileVector
<Thu Jan 24 01:32:48 AM>loadImageFile: End
<Thu Jan 24 01:32:48 AM>SASHardDriveDUPDevice: Loading file(s) rc =0
<Thu Jan 24 01:32:48 AM>DUPWrapper: Begin loop thru SAS devices
<Thu Jan 24 01:32:48 AM>DUPWrapper:No devicea updated.
<Thu Jan 24 01:32:48 AM>DUPWrapper:Deleting ImageLoader.
...

The generated update.xml only contains info if a reboot is required after the update process:

<?xml version="1.0" encoding="UTF-8"?><SVMExecution lang="en"><RebootRequired>0</RebootRequired></SVMExecution>

Happy hacking!