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.