Switch to full style
Data recovery and disk repair questions and discussions related to old-fashioned SATA, SAS, SCSI, IDE, MFM hard drives - any type of storage device that has moving parts
Post a reply

Generic Seagate HDD to NetApp HDD

March 14th, 2019, 11:27

The Seagate Drives I have are model ST33000651SS and i'm trying to use them in a NetApp Drive Enclosure. The drives in the NetApp are exactly the same model with 2 differences.

1) Firmware on my “generic” Seagate drives are 0003. The Firmware that should be on the drive is anything between MS00 – MS05 for NetApp
2) The Block size is on my “generic” Seagate drive is 512 bytes and for NetApp to use it, it should be 520bytes. (i have tried formatting the drive with 520 but i set a sense error. i assume its because of the firmware)

My issue is getting the other “new” firmware on the device. I have a copy of the correct firmware. however, it's in a format called DLP and I need it in the LOD format to flash.

Does anyone know how to download firmware from another drive or convert the NetApp DLP firmware file to an LOD file?


I was able to get this done a few years ago, but I don’t remember what I did and the Websites I used have been taken down since then ☹

Re: Generic Seagate HDD to NetApp HDD

March 14th, 2019, 16:45

Can you upload examples, or provide links to examples, of LOD and DLP files for Seagate's SAS drives?

Re: Generic Seagate HDD to NetApp HDD

March 14th, 2019, 17:00

what command are you using to format @ 520 bps? If you haven’t already done it, You may need to change blocksize to 520 before format.

Re: Generic Seagate HDD to NetApp HDD

March 14th, 2019, 17:27

I have tried 2 utilities.

With this command i get a sense error / invalid command.
sg_format --format --size=520

with this utility, it works for about 2 hours and then quits with errors. Then i have media errors on the drive. which are corrected if i reformat.
http://micha.freeshell.org/scsi/


attached is the NetApp Firmware file.
Attachments
ConstellationES3-Megalodon-SATA-StdOEM-SN06.zip
EXAMPLE SEAGATE FIRMWARE - NOT FOR THIS DRIVE
(969.21 KiB) Downloaded 410 times
D_ST33000651SS_4775003_MS05_1600_009.zip
NetApp Firmware - FOR THIS DRIVE
(906.12 KiB) Downloaded 467 times

Re: Generic Seagate HDD to NetApp HDD

March 14th, 2019, 17:31

xdvst8x wrote:Does anyone know how to download firmware from another drive or convert the NetApp DLP firmware file to an LOD file?

I'm not 100% sure but I think cross-platform FW update is blocked by FW on those drives. In other words you't be able to update FW to NetApp even with LOD format.
But I don't know how DLP is different from LOD

Re: Generic Seagate HDD to NetApp HDD

March 15th, 2019, 4:00

xdvst8x,
convert the NetApp DLP firmware file to an LOD file

I can, but not for free. If interested, write PM.

Re: Generic Seagate HDD to NetApp HDD

March 15th, 2019, 5:35

ISTM that, to convert DLP to LOD, one would only need to strip the first 0x1A0 bytes from the DLP file (NetApp's header ?). Or am I missing something?

Re: Generic Seagate HDD to NetApp HDD

March 15th, 2019, 5:46

Hello, Frank. 99 to 1 which is not enough. FW is usually checks what is being loaded into hard. Enterprise segment ... big bucks.

Re: Generic Seagate HDD to NetApp HDD

March 15th, 2019, 10:45

i stripped off the first 0x1A0 bytes of the file. Tried flashing and got these errors;

ubuntu@ubuntu:~/Downloads$ sudo hdparm --fwdownload D_ST33000651SS.LOD --yes-i-know-what-i-am-doing --please-destroy-my-drive /dev/sda
/dev/sda:
SG_IO: bad/missing sense data, sb[]: 72 05 20 00 00 00 00 1c 02 06 00 00 cf 00 00 00 03 02 00 01 80 0e 00 00 00 00 00 00 00 00 00 00
SG_IO: bad/missing sense data, sb[]: 72 05 20 00 00 00 00 1c 02 06 00 00 cf 00 00 00 03 02 00 01 80 0e 00 00 00 00 00 00 00 00 00 00

AND

ubuntu@ubuntu:~/Downloads$ sudo sg_write_buffer -v -m 5 -I D_ST33000651SS.LOD /dev/sg0
tried to read 8388608 bytes from D_ST33000651SS.LOD, got 990640 bytes
will write 990640 bytes
sending single write buffer, mode=0x5, mpsec=0, id=0, offset=0, len=990640
Write buffer cmd: 3b 05 00 00 00 00 0f 1d b0 00
Write buffer:
Descriptor format, current; Sense key: Illegal Request
ASC=26, vendor specific qualification ASCQ=98 (hex)
Descriptor type: Field replaceable unit code: 0x0
Descriptor type: Vendor specific [0x80]
00 00 00 00 00 00 00 00 00 00 00 00 00 00
Write buffer failed: Illegal request sense key, apart from Invalid opcode

Re: Generic Seagate HDD to NetApp HDD

March 15th, 2019, 19:21

Checksum mismatch error

Re: Generic Seagate HDD to NetApp HDD

March 18th, 2019, 20:18

i had removed the first 0x1A0 bytes from the dlp file. guys that isnt correct...

Re: Generic Seagate HDD to NetApp HDD

March 19th, 2019, 1:52

I am in the same boat trying to get some referb 900GB ST9900805SS drives to work in a NetApp E5400 array.
the array only accepts drive firmware that start with MS or NE
I can clear the drive lockout in the array manually on the array serial console, but once one of the controllers reboots it relocks out the drive (it also will not write a DacStore to the drive because it is uncertified) [if interested i can give instructions on how to do this, but it seems like a bad idea to use outside a test lab]

I'm have been unsucessful in moding the ST9900805SS stock 0004 firmware to report MS04 or getting the NetApp MS04/MS07 dlp firmware flashed.
I've pulled off the NetApp header from the dlp files but the drive does not accept the firmware.
I've tried modifiying the DLP file to match the 0004 firmware and try to have the NetApp array download the firmware and it fails.

I did get my drive to Protection Type 2 (NetApp calls this "Data Assurance") using
Code:
SeaChest_Format -d /dev/sgXX --protectionType 2 --formatUnit 512


does anyone have any experience or guidance in modifying the seagate LOD to report a different firmware revision?
is there a way to modify the firmware revision using the drive ttl console?
preferably I'd love a way to flash the official MS07 firmware onto the drive.

Re: Generic Seagate HDD to NetApp HDD

March 19th, 2019, 4:38

Everything is possible... It is possible to make a patch that can be loaded in hard by free utilites. There is no free way to do this patch by free utilities.

Re: Generic Seagate HDD to NetApp HDD

March 19th, 2019, 16:08

what non-free tools are needed to modify a LOD file?
hdparm does not seem to be usable to hard load firmware on these drives because they are SAS and do not talk AHCI/SATA, what tools would you use to hard load the firmware?

Re: Generic Seagate HDD to NetApp HDD

March 20th, 2019, 2:15

cypher497,
Well, let me teach you. Ask the google: seagate+firmware+update+for+sas.
First link.
What non-free utility need to patch loader? You misunderstood me. I don't know commercial utilities either. I wanted to say: do not try to look for freebies in this matter. There is not. 100%. But... With knowledge of how the firmware is arranged, you can get patch by free WinHex.

Re: Generic Seagate HDD to NetApp HDD

March 20th, 2019, 5:49

Some light reading (for SATA, but may be relevant to SAS also) …

Analysis of Seagate F3 Firmware Update:
http://www.hddoracle.com/viewtopic.php?f=59&t=816

Analysis of Seagate F3 ROM:
http://www.hddoracle.com/viewtopic.php?f=59&t=2173

ZOC scripts - Seagate LOD files parsing :
http://www.hddoracle.com/viewtopic.php?f=113&t=815

Seagate CRC calculator:
http://www.hddoracle.com/download/file.php?id=5842

Python Script to Calculate Seagate F3 Checksums :
http://www.hddoracle.com/viewtopic.php?f=109&t=1821

Seagate F3 loader tool :
http://www.hddoracle.com/viewtopic.php?f=22&t=1809

F3romExplorer :
http://www.hddoracle.com/viewtopic.php?f=22&t=2534

Re: Generic Seagate HDD to NetApp HDD

March 26th, 2019, 3:52

xdvst8x wrote:Sense key: Illegal Request
ASC=26, vendor specific qualification ASCQ=98 (hex)
Write buffer failed: Illegal request sense key, apart from Invalid opcode

Just to elaborate on what has already been stated …

SCSI Commands Reference Manual, Fibre Channel (FC), Serial Attached SCSI (SAS):
https://www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals/100293068k.pdf

Code:
ASC (byte 12)  ASCQ (byte 13)  Description                         Sense Key

26             98              Invalid Field Parameter—Check Sum   5
Attachments
ASC_ASCQ_Sense_Key.GIF

Re: Generic Seagate HDD to NetApp HDD

March 26th, 2019, 19:10

I have stripped the 0x1A0-byte header from the DLP file to create a LOD file. I have then extracted all the individual components from the LOD file. Each of these LOD components is preceded by a 0x40-byte header. I have then verified that the checksums for each of these headers are valid.

See attachment.

This is the tool I used for the analysis:

http://www.users.on.net/~fzabkar/temp/STLODPA2.bas
http://www.users.on.net/~fzabkar/temp/STLODPA2.exe
Attachments
Netapp_fw_components.7z
(906.14 KiB) Downloaded 422 times

Re: Generic Seagate HDD to NetApp HDD

March 27th, 2019, 16:01

tool to unpack dlp (win64 cmd line): http://ghosttoast.com/hdd_tools/dlp_drive_unpacker_0.6.0_g4591b30.zip

for the drive I have the only difference between the NetAppOEM and the stdOEM firmware is the sections 0x22[DL_BFWCTNR_0] and 0x26[DL_CFWDISC].
I've been able to flash the DL_BFWCTNR_0.
The CFW will attempt to download if I change header bytes 08-14 from 0x00004E20 [in NetAppOEM] to 0x00004E80 [in stdOEM], but the drives issuses LED cold reset asc/ascq. not sure what bytes 08-14 in the CFW lod header mean yet.

I do have a tool for patching the firmware revision to report a different ID. on a side note seagate started signing all SAS firmware updates starting with 10K v8 drives, even the STD non Self Encrypting Drives.

seagate_fw_info (win64 cmd line): http://ghosttoast.com/hdd_tools/seagate_fw_info_0.6.0_g4591b30.zip
still trying to understand the seagate checksum header calculation, python reduce/lambda functions are still confusing to me.
Attachments
SEAGATE_ST9900805SS_MS07.lod.txt
NetApp E-Series fw info
(15.83 KiB) Downloaded 658 times
CP-SAS-0004.LOD.txt
stdOEM fw info
(15.79 KiB) Downloaded 611 times

Re: Generic Seagate HDD to NetApp HDD

March 29th, 2019, 5:13

The following command line uploads a loader file into the drive's RAM, but how can we be sure that this file will be processed as a firmware update?

    sudo sg_write_buffer -v -m 5 -I D_ST33000651SS.LOD /dev/sg0

@cypher497, do you have links to Seagate's ST9900805SS stock 0004 firmware and NetApp's MS04/MS07 dlp?

Which command lines are used by Seagate's (SeaFlash?) and NetApp's flash utilities? Seagate's SeaFlash utility can specify the model number and family ID of the target drive, thereby overriding any configuration file (CFS). The CFS file normally filters out unsuitable candidates for the update. Perhaps this could be the solution.

As for your report files, they seem to have a few formatting errors.

Code:
B00-B04[           ?] 0x1314100E, 320081934
    ^^^
    B03 <-- shouldn't this be the byte range, ie byte 0 to byte 3 ?

B04-B08[           ?] 0x10030002, 268632066
    ^^^
    B07 <-- shouldn't this be 7, etc ?

B08-B12[           ?] 0x00000000, 0
B12-B14[subtype     ]     0x10FF, 4351
B14-B16[section type]     0x0041, 65
B16-B20[section size] 0x00002000, 8192
B20-B24[sfw ver    ?] 0x00300385, 3146629
B26-B28[fw ver      ]     0xF01B, 61467
B24-B26[fw time     ]     0x0817, 2071
B28-B32[fw date     ] 0x20091708, 537466632, 2009-08-17
B32-B36[           ?] 0x00000000, 0
B36-B40[size+hdr    ] 0x00002040, 8256
B40-B44[           ?] 0x00000000, 0
B44-B48[           ?] 0x00000000, 0
B48-B52[           ?] 0x00000000, 0
B52-B56[           ?] 0x00000000, 0
B56-B60[           ?] 0x00000000, 0
B60-B62[           ?]     0x0000, 0
B60-B62[hdr cksum   ]     0x4861, 18529
^^^^^^^
shouldn't this be B62-B63 ?

[module crc             ] 0xD281, 53889
[module crc bytes       ] 0x81D2
[module crc check       ] GOOD
[module crc regen       ] 0xD281, 53889
[module crc regen bytes ] 0x81D2

I'm not sure I understand what you mean by the "the seagate checksum header calculation". If you are referring to the 0x40-byte headers for each section of the LOD file, then the checksum is chosen so that the sum of the 0x20 words that comprise the header is 0x0000.
Post a reply