Flash Dell Firmware to non Dell branded drives?

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

opensourcefan

Member
Aug 24, 2022
65
22
8
I have a bucket load of 300gb 10k SAS drives that I want to use in my MD3220 however they aren't Dell branded and show as incompatible.

I would like to flash the equivalent Dell firmware for the particular drives so I can use them.

Is there anyone with experience doing this or any major pitfalls I need to worry about? I don't mind bricking a couple drives things go bad.
 

opensourcefan

Member
Aug 24, 2022
65
22
8
Thought I would just keep track of my progress here.

I have a pile of drives that are all HP branded and part numbered (EG0300FCSPH) versions of Toshiba AL13SEB300. They are running HPD0 firmware and the newest Dell firmware for the AL13SEB300 is DE11.

As per the eblend post link curtesy of @CyklonDX I have modified (Find and Replace) the fw via Frhed Hex Editor to show the minimum fw being HPD0 and the Device ID with 00000 instead of 29747.

The DE11 firmware was found within this app - Toshiba AL13SEB300, AL13SEB600 and AL13SEB900 firmware version DE11. | Driver Details | Dell Canada

I'm running the SASDUPIE executable with the following command, I added the help contents below for good measure:

Code:
 ./SASDUPIE.exe -u -f -o test -debug
========================================================================
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.
===========================================================================


This creates a "test" output that looks like the following:

Code:
<?xml version="1.0" encoding="UTF-8"?>

<SVMExecution lang="en">

<Device componentID="00000" enum="CtrlId 2000000 DeviceId 0" display="EG0300FCSPH"><Application componentType="FRMW" version="HPD0" display="EG0300FCSPH Firmware"><Package version="DE11"/><SPStatus result="false"><Message id="2">The operation failed due to an invalid image file.</Message></SPStatus></Application></Device>

<RebootRequired>0</RebootRequired></SVMExecution>
The command also produces a debug log which is the most helpful. My output after the mods looks like the following. Even though it failed I'm getting close I think.

<Sun Mar 19 05:01:08 PM>DoesFilenameMatchTemplate:filename=13SEDE11.fwh filepattern=*.fwh
<Sun Mar 19 05:01:08 PM>DoesFilenameMatchTemplate:lowercase_filename=13sede11.fwh lowercase_filepattern=*.fwh
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: filepattern length = 5
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: wildcard index = 0
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: have last part
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: FPart=
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: LPart=.fwh
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: lowercase_filename.length()c
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: pLPart.length()4
<Sun Mar 19 05:01:08 PM>getImage: End - Found
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice: Online Download Enabled
<Sun Mar 19 05:01:08 PM>m_D_Method = 1
<Sun Mar 19 05:01:08 PM>Image version = DE11
<Sun Mar 19 05:01:08 PM>Min Image version = HPD0

<Sun Mar 19 05:01:08 PM>m_ProcessTime(byte) = x
<Sun Mar 19 05:01:08 PM>m_ProcessTime = x
<Sun Mar 19 05:01:08 PM># of devices = 3
<Sun Mar 19 05:01:08 PM>deviceID [000000
<Sun Mar 19 05:01:08 PM>deviceName [0 AL13SEB300

<Sun Mar 19 05:01:08 PM>deviceID [129748
<Sun Mar 19 05:01:08 PM>deviceName [1 AL13SEB600
<Sun Mar 19 05:01:08 PM>deviceID [229749
<Sun Mar 19 05:01:08 PM>deviceName [2 AL13SEB900F
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice: Image version set: DE11
<Sun Mar 19 05:01:08 PM>DUPWrapper: populate rc=f
<Sun Mar 19 05:01:08 PM>Comparing device ID:00000 with 00000
<Sun Mar 19 05:01:08 PM>depCheck: Found matching device
<Sun Mar 19 05:01:08 PM>Comparing device ID:29748 with 00000
<Sun Mar 19 05:01:08 PM>Comparing device ID:29749 with 00000
<Sun Mar 19 05:01:08 PM>toLowerCase: begin
<Sun Mar 19 05:01:08 PM>toLowerCase: begin
<Sun Mar 19 05:01:08 PM>toLowerCase: begin
<Sun Mar 19 05:01:08 PM>toLowerCase: begin
<Sun Mar 19 05:01:08 PM>Starting ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: StoreLibIR Gen 2
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Is a StoreLib loaded?
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: After Calling LSI
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::CheckDrivePreReqs: Vendor ID = 1000 Device ID = 72 SubDevID = 1f1c SubVenID = 1028
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::CheckDrivePreReqs: Matched SAS6 GPBS or 12GBPS, No Need to Check LD

<Sun Mar 19 05:01:08 PM>DUPWrapper: after depCheck
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::preUpdateActions: Begin
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::stop_PR: Getting controller list
<Sun Mar 19 05:01:08 PM>doProcessLibCommand: Calling ProcessLibCommand
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 calling ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>Starting ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: StoreLib
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Is a StoreLib loaded?
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: After Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 Exit
<Sun Mar 19 05:01:08 PM>doProcessLibCommand: After Calling ProcessLibCommand
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::stop_PR: Controller:0
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::stop_PR: Getting Patrol Read status
<Sun Mar 19 05:01:08 PM>doProcessLibCommand: Calling ProcessLibCommand
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 calling ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>Starting ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: StoreLib
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Is a StoreLib loaded?
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: After Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 Exit
<Sun Mar 19 05:01:08 PM>doProcessLibCommand: After Calling ProcessLibCommand
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: Getting controller list
<Sun Mar 19 05:01:08 PM>doProcessLibCommand: Calling ProcessLibCommand
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 calling ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>Starting ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: StoreLib
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Is a StoreLib loaded?
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: After Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 Exit
<Sun Mar 19 05:01:08 PM>doProcessLibCommand: After Calling ProcessLibCommand
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: After get controller list
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: #controller=1
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: nResult=0
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: Starting conmtroller loop
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: #controller=1
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: Controller index:0
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: CtrlId:0
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 calling ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>Starting ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: StoreLib
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Is a StoreLib loaded?
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: After Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 Exit
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: SL_GET_PATROL_READ_PROPERTIES success: rc = 0
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::Disable_PR_If_enabled: enabling ctrlId:0
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 calling ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>Starting ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: StoreLib
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Is a StoreLib loaded?
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: After Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 Exit
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 calling ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>Starting ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: StoreLib
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Is a StoreLib loaded?
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: After Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 Exit
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::preUpdateActions: Exit
<Sun Mar 19 05:01:08 PM>DUPSWRAIDLibTalker::GetCoreInfo here at 1
<Sun Mar 19 05:01:08 PM>DUPSWRAIDLibTalker::GetCoreInfo: No SWRAID Controllers found
<Sun Mar 19 05:01:08 PM>swrSASHardDriveDUPDevice::reload_config: m_SWRAIDLibTalker->GetCoreInfo rc =1869f
<Sun Mar 19 05:01:08 PM>DUPWrapper: before update
<Sun Mar 19 05:01:08 PM>getImage: Begin
<Sun Mar 19 05:01:08 PM>getImage: filepattern:*.fwh
<Sun Mar 19 05:01:08 PM>getImage: filename:[<Sun Mar 19 05:01:08 PM>13SEDE11.fwh<Sun Mar 19 05:01:08 PM>] size<Sun Mar 19 05:01:08 PM>d1ffe<Sun Mar 19 05:01:08 PM>ImageFiles::DoesFilenameMatchTemplate: Begin
<Sun Mar 19 05:01:08 PM>DoesFilenameMatchTemplate:filename=13SEDE11.fwh filepattern=*.fwh
<Sun Mar 19 05:01:08 PM>DoesFilenameMatchTemplate:lowercase_filename=13sede11.fwh lowercase_filepattern=*.fwh
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: filepattern length = 5
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: wildcard index = 0
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: have last part
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: FPart=
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: LPart=.fwh
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: lowercase_filename.length()c
<Sun Mar 19 05:01:08 PM>ImageFiles:DoesFilenameMatchTemplate: pLPart.length()4
<Sun Mar 19 05:01:08 PM>getImage: End - Found
<Sun Mar 19 05:01:08 PM>Calling writeBuffer
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::updateDevice: Using Full Download
<Sun Mar 19 05:01:08 PM>BufferSize=5f5e100
<Sun Mar 19 05:01:08 PM>BufferSize=5f5e100
<Sun Mar 19 05:01:08 PM>bufferSize=d1ffe bufPointer=0
<Sun Mar 19 05:01:08 PM>bufferSize=d1ffe bufPointer=0 BufferSize=5f5e100
<Sun Mar 19 05:01:08 PM>@2 bufferBytesToSend=d1ffe
<Sun Mar 19 05:01:08 PM>Sending d1ffe bytes --- 0 to go
<Sun Mar 19 05:01:08 PM>bufPointer=0
<Sun Mar 19 05:01:08 PM>bufferBytesToSend=d1ffe
<Sun Mar 19 05:01:08 PM>doProcessLibCommand: Calling ProcessLibCommand
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 calling ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>Starting ProcessLibCommand 1
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: StoreLibIR Gen 2
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Is a StoreLib loaded?
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 1: After Calling LSI
<Sun Mar 19 05:01:08 PM>ProcessLibCommand 2 Exit
<Sun Mar 19 05:01:08 PM>doProcessLibCommand: After Calling ProcessLibCommand
<Sun Mar 19 05:01:08 PM>WriteBuffer: Return code from ProcessLibCommand = 0
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::writeBuffer 1: GOOD RC: but non-zero SCSIStatus=
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice::writeBuffer 1: SenseData=<Sun Mar 19 05:01:08 PM>70:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>5:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>28:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>26:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>3b:<Sun Mar 19 05:01:08 PM>11:<Sun Mar 19 05:01:08 PM>1:<Sun Mar 19 05:01:08 PM>3:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>0:<Sun Mar 19 05:01:08 PM>
<Sun Mar 19 05:01:08 PM>Got an error from writebuffer
<Sun Mar 19 05:01:08 PM>Finished writeBuffer
<Sun Mar 19 05:01:08 PM>DUPWrapper: updateDevice complete
<Sun Mar 19 05:01:08 PM><Sun Mar 19 05:01:08 PM>DUPWrapper:Device failed to update successfully
<Sun Mar 19 05:01:08 PM>XMLWriter::addUpdateDeviceInfo: 1
<Sun Mar 19 05:01:08 PM>XMLWriter::addUpdateDeviceInfo: 2
<Sun Mar 19 05:01:08 PM>XMLWriter::addUpdateDeviceInfo: 3
<Sun Mar 19 05:01:08 PM>XMLWriter::addUpdateDeviceInfo: 4
<Sun Mar 19 05:01:08 PM>XMLWriter::addUpdateDeviceInfo: 5
<Sun Mar 19 05:01:08 PM>XMLWriter::addUpdateDeviceInfo: 6
<Sun Mar 19 05:01:08 PM>XMLWriter::addUpdateDeviceInfo: 7
<Sun Mar 19 05:01:08 PM>XMLWriter::addLCLUpdateDeviceInfo: 1
<Sun Mar 19 05:01:08 PM>LCL UPDATE str =
<Sun Mar 19 05:01:08 PM>DUPWrapper: addLCLUpdateDeviceInfo xmlStr =
<Sun Mar 19 05:01:08 PM>DUPWrapper: LCLUpdateDevice complete 6
<Sun Mar 19 05:01:08 PM>DUPWrapper: Begin Device update ------------------
<Sun Mar 19 05:01:08 PM><Sun Mar 19 05:01:08 PM>DUPWrapper: Begin Device name=<Sun Mar 19 05:01:08 PM>DUPWrapper: checking Device 4 update ctrlid:2000000 deviceid:1
<Sun Mar 19 05:01:08 PM>DUPWrapper: after setting DeviceID
<Sun Mar 19 05:01:08 PM>SASHardDriveDUPDevice: Enter populateFileVersion
<Sun Mar 19 05:01:08 PM>ImageFiles::getCount count = 1

Curious if anyone sees anything obvious in why it's still failing??

I'll keep messing about.

I should note that I didn't have any previous success with Dell Nautilus but haven't tried with my latest fw revision.

I used the following version with all but the needed fw files removed. NautilusDOSA49_ZPE