All times are UTC - 5 hours [ DST ]




Post new topic Reply to topic  [ 26 posts ]  Go to page Previous  1, 2
Author Message
 Post subject: Re: Generic Seagate HDD to NetApp HDD
PostPosted: March 29th, 2019, 14:46 
Offline

Joined: March 19th, 2019, 0:40
Posts: 5
Location: Los Angeles
updated seagate_fw_info v0.7.0: http://ghosttoast.com/hdd_tools/seagate_fw_info_0.7.0_g4651937.zip
    fixed end byte printing being +1
    added header checksum calculation

firmware:

flashing using
Code:
./SeaChest_Firmware_254_1183_64 -d /dev/sg70 --downloadFW NETAPP_ESERIES_SEAGATE_ST9900805SS_MS07.lod


is CFS included in the firmware file? I thought it was just a directive file that guided the flashing tool to run like:
Code:
./SeaChest_Firmware --modelMatch ST9900805SS --onlyFW MS04 --downloadFW MS07.lod


also tried sg_write_buffer, but mode 5 would fail:
Code:
sg_write_buffer --in=newfw.lod --length=881152 --mode=5 /dev/sg70

used mode 7 and it behaved the same as SeaChest_Firmware, found mode 7 from the old "fwdl" utility
Code:
sg_write_buffer --in=newfw.lod --length=881152 --mode=7 /dev/sg70


if you want to create a lod to flash just the CFW(0x26) section, is the CTPM(0x41) section required? are any other sections required?


Top
 Profile  
 
 Post subject: Re: Generic Seagate HDD to NetApp HDD
PostPosted: March 30th, 2019, 3:52 
Offline
User avatar

Joined: September 8th, 2009, 18:21
Posts: 15529
Location: Australia
The format of the [unencrypted] CFS file is described in the SeaChest documentation. Some distributions use the CFS file for their "directives", as you point out. Others specify the parameters in an XML file, or they may explicitly select the family, model and payload (LOD) in a BAT file. Since you appear to have been unsuccessful when explicitly specifying the parameters, it would appear that the drive itself is rejecting the payload, rather than the updater rejecting the directives. Does that make sense? :-)

I was wondering whether there was any point in deciphering the structure of the DLP header. We could add our own desired firmware versions, but we would need to know how to recalculate the header's CRC/checksum. Assuming we could do this, I suspect that the update would still fail (because the drive is rejecting the payload?).

FWIW, here is my take on the header format.

AISI, there are actually two headers, a Drive_Download_File_Header and an Action_Descriptor.

Code:
Offset(h) 00       04       08       0C

00000000  44726976 655F446F 776E6C6F 61645F46  Drive_Download_F    0x20-byte
00000010  696C655F 48656164 65720000 00000000  ile_Header......    text string

00000020  01000000 C0000000 58671100 B97488FD
                   ^^^^^^^^ -------- ^^^^^^^^
  size of header = 0xC0         :     CRC/checksum ???
         DLP file size = 0x116758

00000030  53454147 41544500 00000000 00000000  SEAGATE.........    manufacturer
00000040  53543939 30303830 35535300 00000000  ST9900805SS.....    model (40 bytes)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
00000050  00000000 00000000 00000000 00000000
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
00000060  00000000 00000000 4D533034 20202020  ........MS04        updated f/w version
          ^^^^^^^^^^^^^^^^^ -----------------
00000070  01000000 00000000 00000000 00000000
00000080  00000000 00000000 00000000 00000000
00000090  00000000 05000000 4D533030 00000000  ........MS00....    5 candidate f/w versions
                   ^^^^^^^^ -----------------
number of f/w candidates = 5

000000A0  4D533031 00000000 4D533032 00000000  MS01....MS02....
          ^^^^^^^^^^^^^^^^^ -----------------
000000B0  4D533033 00000000 4D533034 00000000  MS03....MS04....
          ^^^^^^^^^^^^^^^^^ -----------------

Code:
Offset(h) 00       04       08       0C

000000C0  41637469 6F6E5F44 65736372 6970746F  Action_Descripto    0x20-byte
000000D0  72000000 00000000 00000000 00000000  r...............    text string
000000E0  01000000 98000000 00000000 00000000
                   ^^^^^^^^
size of header = 0x98 bytes

000000F0  00000000 00000000 00000000 00000000
00000100  00000000 00000000 03000000 00661100
                                     ^^^^^^^^
                   size of payload = 0x116600              = size of DLP file - DLP header

00000110  00000000 0A000000 3B050000 00001166
                                         ^^^^
size of payload / 0x100 (big-endian) = 0x1166

00000120  00000000 00000000 00000000 00000000
00000130  00000000 00000000 00000000 00000000
00000140  00000000 00000000 00000000 00000000
00000150  00000000 00000000

_________________
A backup a day keeps DR away.


Top
 Profile  
 
 Post subject: Re: Generic Seagate HDD to NetApp HDD
PostPosted: March 30th, 2019, 5:15 
Offline

Joined: March 19th, 2019, 0:40
Posts: 5
Location: Los Angeles
I've tried modding the DLP files to it to support flashing from 0004 to MS07 and it tries downloading the firmware to the drive and fails.
the array DLP download looks like its just doing a sg_write_buffer or equivalent.

files goes DLP header, then Action header, then payload.

Code:
SIGNATURE types:  "Drive_Download_File_Header      " and "Action_Descriptor               "
DLP Header format
F 1 - 32 bytes - SIGNATURE - "Drive_Download_File_Header      "
F 2 -  4 bytes - HEADER_VERSION - always 1
F 3 -  4 bytes - HEADER_SIZE - size of this header
F 4 -  4 bytes - FILE_SIZE - size of entire DLP file
F 5 -  4 bytes - FILE_CRC - CRC of entire DLP file with these 4 bytes as 0's
F 6 - 16 bytes - DRIVE_VENDOR - i.e. SEAGATE
F 7 - 40 bytes - DRIVE_MODEL - i.e. STXXXXXXXSS
F 8 -  8 bytes - FW_REVISION - i.e. MS00
F 9 -  4 bytes - ACTION_COUNT - number of payloads? I've only ever seen action count of 1.
F10 - 32 bytes - RESERVED
F11 -  4 bytes - COMPATIBLE_COUNT - number of compatible firmware revisions to follow this field
F12 -  8 bytes per COMPATIBLE_COUNT - COMPATIBLE_REVISION - firmware revisions that can be upgraded to this version


Top
 Profile  
 
 Post subject: Re: Generic Seagate HDD to NetApp HDD
PostPosted: March 30th, 2019, 19:31 
Offline
User avatar

Joined: September 8th, 2009, 18:21
Posts: 15529
Location: Australia
It probably won't work, but you could try patching an MSxx payload into Dell's CS05 firmware update. Dell's fwh header does not appear to require a CRC ...

https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=jd7t1
Code:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  20 20 20 20 44 45 4C 4C 09 43 53 30 35 43 53 30      DELL.CS05CS0
00000010  30 78 01 00 00 00 00 00 00 00 00 00 00 00 00 00  0x..............
00000020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03  ................
00000040  20 20 20 32 35 38 34 32 20 20 20 20 20 20 20 20     25842       
00000050  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                 
00000060  20 20 20 20 20 53 54 39 39 30 30 38 30 35 53 53       ST9900805SS
00000070  20 20 20 32 35 38 34 30 20 20 20 20 20 20 20 20     25840       
00000080  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                 
00000090  20 20 20 20 20 53 54 39 36 30 30 32 30 35 53 53       ST9600205SS
000000A0  20 20 20 32 35 38 34 31 20 20 20 20 20 20 20 20     25841       
000000B0  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                 
000000C0  20 20 20 20 20 53 54 39 33 30 30 36 30 35 53 53       ST9300605SS

_________________
A backup a day keeps DR away.


Top
 Profile  
 
 Post subject: Re: Generic Seagate HDD to NetApp HDD
PostPosted: April 1st, 2019, 17:52 
Offline
User avatar

Joined: September 8th, 2009, 18:21
Posts: 15529
Location: Australia
How about …

    - take the NetApp LOD file (strip the DLP header)
    - retain all the NetApp MSxx 0x40-byte headers for each section
    - replace each NetApp code section with the corresponding Seagate retail code
    - adjust header parameters affecting size, if necessary
    - download LOD file to drive

Hopefully the drive will check each of the 0x40-byte headers for compatibility, and then proceed to apply each of the payloads without further scrutiny.

_________________
A backup a day keeps DR away.


Top
 Profile  
 
 Post subject: Re: Generic Seagate HDD to NetApp HDD
PostPosted: April 3rd, 2019, 17:15 
Offline
User avatar

Joined: September 8th, 2009, 18:21
Posts: 15529
Location: Australia
LODEDIT by @E123
http://forum.ru-board.com/topic.cgi?forum=84&topic=5124&start=1727&limit=1&m=1#1
http://forum.ru-board.com/topic.cgi?forum=84&topic=5386&start=118&limit=1&m=1#1
https://yadi.sk/d/ps0J3Kns3A3KY9

_________________
A backup a day keeps DR away.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 26 posts ]  Go to page Previous  1, 2

All times are UTC - 5 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 76 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group