All SeaChest Utilities User Guides Date last edit: 08-May-2018 About SeaChest Utilities Command Line Diagnostics and Open Source Statement. _Basics _Configure _Erase _Fimrware _Format _GenericTests _Info _PowerControl _Security _SMART Utility Arguments and Options common to all tools Return Codes common to all tools Tool Usage Hints - Linux or Windows General Usage Hints - Linux or Windows Sample Output END USER LICENSE AGREEMENT SeaChest_Basics.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_Basics for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Basics Version: 2.7.2 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest Basics diagnostic software. This User Guide file contains important information about SeaChest Basics. Please read this entire file before using this software. SeaChest is a comprehensive, easy-to-use command line diagnostic tool that helps you quickly determine the health and status of your Seagate storage product. It includes several tests that will examine the physical media on your Seagate, Samsung or Maxtor disk drive. Tests and commands which are completely data safe will run on any disk drive. Tests and commands which change the drive (like firmware download or data erasure or setting the maximum capacity, etc) are limited to Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Be careful using SeaChest because some of the features, like the data erasure options, will cause data loss. Seagate is not responsible for lost user data. If this is your drive, you should always keep a current backup of your important data. Important note: Many tests in this tool directly reference storage device data sectors, also known as Logical Block Addresses (LBA). Test arguments may require a starting LBA or an LBA range. The predefined variable 'maxLBA' refers to the last sector on the drive. Many older SATA and SAS storage controllers (also known as Host Bus Adapters [HBA]) have a maximum addressable limit of 4294967295 [FFFFh] LBAs hard wired into their design. This equates to 2.1TB using 512 byte sectors. This also means accessing an LBA beyond the 2.1TB limitation either will result in an error or simply the last readable LBA (usually LBA 4294967295 [FFFFh]) depending on the actual hardware. This limitation can have important consequences. For example, if you intended to erase a 4TB drive, then only the first 2TB will actually get erased (or maybe even twice!) and the last 2TB will remain untouched. You should carefully evaluate your system hardware to understand if your storage controllers provide support for greater than 2.1TB. NOTE: Windows severely restricts downloading firmware to SATA drives. Please see the section below "Windows Restrictions Over SATA Firmware Downloads". SeaChest_Basics may not be fully functional on non-Seagate drives. Usage ===== SeaChest_Basics [-d ] {arguments} {options} Examples ======== Linux: SeaChest_Basics --scan SeaChest_Basics -d /dev/sg2 -i SeaChest_Basics -d /dev/sg1 --shortDST --poll Windows: SeaChest_Basics --scan SeaChest_Basics -d PD0 -i SeaChest_Basics -d PD1 --shortDST --poll Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Windows only: ignoreCSMI - do not scan for any CSMI devices allowDuplicates - allow drives with both CSMI and PD handles to show up multiple times in the list. Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --displayLBA [LBA | maxLBA] This option will read and display the contents of the specified LBA to the screen. The display format is hexadecimal with an ASCII translation on the side (when available). The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. --poll Use this option to cause another operation to poll for progress until it has completed. This argument does not return to the command prompt and prints ongoing completion percentages (%) and the final test result. Full drive procedures will take a very long time. Used with --shortDST and --longDST. --shortDST Execute a short diagnostic drive self test. This test can take up to 2 minutes to complete. Use with the --poll argument to let SeaChest check for progress and print it to the screen until complete. If the --poll argument is not used then the test begins and immediately returns to the command prompt. Use the --progress DST command to check on the completion percentage (%) and test result. The poll argument does not return to the command prompt and prints ongoing completion percentages (%) until the final test result. Note: Use --progress DST to see details about the last DST run on the drive. --progress [DST] Get the progress for a test that was started quietly (default) specify a test with: DST or sanitize to check progress. The progress counts up from 0% to 100%. --abortDST Abort a diagnostic Drive Self Test that is in progress. --smartCheck Perform a SMART check on a device to see if any internal thresholds have been tripped or if the drive is still operating within specification. --smartAttributes [raw | analyzed] (SATA Only) The drive will display its list of supported SMART attributes. Some attributes names are commonly standard and most others are vendor unique. In either case, the attribute thresholds are always vendor unique. Most attributes are informational and not used to determine a warranty return. Use the --smartCheck command to determine if one of the warranty attributes has been tripped. Seagate Support does not help to analyze SMART attributes. --idd [short | long] (Seagate Only) Start an In Drive Diagnostic (IDD) test on a Seagate SATA drive. Not all tests are supported by all products. If a selected test is not supported, the utility will return an error code meaning "not supported". short: Reset and Recalibration test. Be careful running this test on the boot device. long: Test G list and P list for readability. repair: Reset and Recalibration test and test G list and P list and attempt to repair or reallocate bad sectors. Add --poll to the command line to see periodic status during the test. Otherwise, use --progress DST after 60 seconds to allow the drive time to spin back up after the recalibration test. Example: --idd short --poll --abortIDD (Seagate Only) Abort a Seagate In Drive Diagnostic (IDD) that is in progress. --downloadFW fwfilename (Seagate Only) Download firmware to a Seagate storage product. Use only Seagate authorized firmware data files which are designated for the specific model drive. Improper use of this option may harm a device and or its data. This option will use segmented download by default. Use the --downloadMode option to specify a different download mode. Please see the section below "Windows Restrictions Over SATA Firmware Downloads". --downloadMode [full | segmented | deferred] (Seagate Only) Use this command along with the --downloadFW option to set the firmware download mode. Supported Modes: full - Performs a download in one large transfer to the device. segmented - Downloads the firmware in multiple segments to the device. (Most compatible) deferred - Performs a segmented download to the device, but does not activate the new firmware until a power cycle or activate command is sent. Drives with this feature are not common. See --activateFW. Note: See the --modelMatch and --onlyFW utility options which may assist in creating commands to update multiple similar drives. --activateFW (Seagate Only) Use this option to issue the command to activate code that was sent to the drive using a deferred download command. This will immediately activate the new code on the drive. You can use this along with a --downloadFW and --downloadMode to automatically issue the activate command after the deferred download has completed. --setMaxLBA [newMaxLBA | maxLBA] Set the max accessible address of your drive to any value less than the device's default native size. A power cycle is required after this command before resetting or setting a new max LBA. The final capacity will depend on the logical sector size. If the Logical Block Address (LBA) is set to 1953125 and the sector size is 512, then the capacity is 1,000,000,000 bytes. If the logical sector size is 4096, then the capacity is 8,000,000,000 bytes. If the logical sector size is 512 but the physical sector size is 4096 (called Advanced Format), then normal practice is to pick an LBA value which is divisible by 8. Use the -i, --deviceInfo to show logical and physical sector sizes. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive, otherwise see --restoreMaxLBA. --restoreMaxLBA Restore the max accessible address of your drive to its native size. A power cycle is required after this command before setting a new max LBA. --checkPowerMode Get the current power mode of a drive. On SCSI devices, this will only work if the drive has transitioned from active state to another state. While the popular /dev/sd? device handles can be used in most cases, the --checkPowerMode command with /dev/sd causes the drive to wake up if it is in a reduced power state. Use /dev/sg device handles to avoid this effect. --spinDown Removes power to the disk drive motor with the Standby Immediate for SATA, or standby_z for SAS. Use this before moving a hard disk drive. The drive will spin back up if the operating system selects the drive. This means that an active drive will not stay spun down. In the case of SSD devices, the drive will flush the temporary caches and prepare for shutdown. --phySpeed [0 | 1 | 2 | 3 | 4 | 5] (Seagate Only) Use this option to change the PHY speed to a new maximum value. This change persists over power cycles and resets. On SAS, this option will set all phys to the specified speed unless the --sasPhy option is given to select a specific phy. 0 - allow full negotiation (default drive behavior) 1 - allow negotiation up to 1.5Gb/s 2 - allow negotiation up to 3.0Gb/s 3 - allow negotiation up to 6.0Gb/s 4 - allow negotiation up to 12.0Gb/s (SAS Only) 5 - allow negotiation up to 22.5Gb/s (SAS Only) --sasPhy [identifier value] Use this option to specify a specific phy to use with another option that uses a phy identifier value. Some tool options will assume all SAS Phys when this option is not present. Others will produce an error when a specific phy is needed for an operation. Use the -i command to learn the port identifier and phy speeds for a device. --readyLED [on | off | default] (SAS Only) Use this option to change the behavior of pin 11, the ready LED. Setting to "on" means we are setting the bit to 1 on mode page 19h. See the SPL spec for details on how this changes LED behavior. Setting to "off" sets the ready LED bit to 0. Using "default" reads the drive default setting and sets the bit according to defaults. --readLookAhead [info | enable | disable] Use this option to enable or disable read look-ahead support on a drive. Use the "info" argument to get the current status of the read look ahead feature. This change is not preserved over power cycles. --writeCache [info | enable | disable] Use this option to enable or disable write cache support on a drive. Use the "info" argument to get the current status of the write cache feature. This change is not preserved over power cycles. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --hideLBACounter Use this option to supress the output from options that show LBA counters without turning off all output to the screen. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --hours [hours] Use this option to specify a time in hours for a timed operation to run. --minutes [minutes] Use this option to specify a time in minutes for a timed operation to run. --seconds [seconds] Use this option to specify a time in seconds for a timed operation to run. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Data Destructive Commands (Seagate Only) ======================================== Data destructive commands will require additional command line arguments as confirmation of your understanding that data will be lost on the drive. Seagate is not responsible for lost user data. Note: The time required to erase an entire drive may take several hours. The erase time length is slightly longer than the time it takes to read the entire drive. The SeaChest --deviceInfo command output has a line similar to this example: 'Long Drive Self Test Time: 1 hour 38 minutes'. You can use the reported time for your drive as being less than the time necessary to erase the entire drive. --confirm I-understand-this-command-will-erase ... etc --overwrite [starting LBA | maxLBA] Use this option to start an overwrite erase at the specified starting LBA. Use 0 for the starting LBA to mean the beginning of the drive. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. The overwrite data pattern will be all zeros (0000... etc) for the specified range. You must combine this option with either the --overwriteRange to set the range count of the erasure, or the time settings (--minutes, etc. see above). Example: --overwrite 0 --overwriteRange 1000000 --overwrite 0 --hours 1 --minutes 30 Important: If the end of the drive is reached before the time is up, the operation will continue at the beginning of the drive until the specified time is finished. This means your starting LBA may not be the lowest LBA erased. Use --overwrite and --overwriteRange together instead for more control of the starting and ending LBAs. This test always issues write commands to the drive. No TRIM or UNMAP commands are used during this operation. Note: This erase may be used on HDD (hard disk drive) or SSD (solid state disk) devices, although not advised for SSD because it impacts endurance life due to abnormal write activity. --overwriteRange [LBA count] Use with the --overwrite option to specify a range of LBAs to erase on the selected drive. If the starting LBA and the range count together exceed the MaxLBA (last sector of the drive) then the test will end at the MaxLBA. Also, if this command is omitted then the end of the drive is assumed and the test will end at the MaxLBA. --trim [starting LBA | maxLBA] (SATA only) --unmap [starting LBA | maxLBA] (SAS only) Use this option to start a TRIM (SATA) or UNMAP (SAS) operation at the specified starting LBA. Use 0 for the starting LBA to mean the beginning of the drive. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. These commands are common on SSD devices and less common on HDDs. You must combine this option with the corresponding --trimRange or --unmapRange to set the range of the operation. --trimRange [LBA count] (SATA only) --unmapRange [LBA count] (SAS only) Use one of these options to specify a range of LBAs to TRIM or UNMAP on a drive. A starting point must be specified with the corresponding --trim or --unmap option. If the starting LBA and the range count together exceed the MaxLBA (last sector of the drive) then the test will end at the MaxLBA. Also, if this command is omitted then the end of the drive is assumed and the test will end at the MaxLBA. --provision [newMaxLBA | maxLBA] (Seagate Only) Provision your drive to a new max LBA to any value less than the device's current max LBA. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. A power cycle is required after this command before resetting the max LBA or changing the provisioning again. This command erases all data between the new maxLBA specified and the current maxLBA of the device. TRIM (SATA) or UNMAP (SAS) will be used when supported by the device, including SSDs. For most HDDs this test will write 0's to the device and possibly take a very long time to complete. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error =============== Version History =============== v0.0.6 12-Aug-2014 Added set max capacity (destroke) and restore native max for SATA. v0.0.7 13-Aug-2014 Fixed a bug where -i would crash on an Intel RAID device. Added SMART Trip (MRIE) determination for SAS drives. v0.0.8 30-Sep-2014 Added options to manage drive power settings. Added a spin down command. Added option to set the SATA drive default maximum interface speed. Added SAS drive worldwide number to device information. Added set max capacity (destroke) and restore native max for SAS. Added Sanitize Freezelock for SATA. v0.0.9 06-Oct-2014 Added data erasure options controlled by range of LBA or by time. Added option to manage SAS LED activity on power pin 11. v1.0.0 20-Oct-2014 Activated support for externally attached USB storage devices. This support applies to USB-SATA bridges that support 16 byte SAT Passthrough Command Descriptor Blocks (CDBs). This means that many older USB devices will not be recognized. Added time estimate to Long DST information. Added Write Cache and Read Cache enable disable commands. Added ATA Security Password Disable (see notes above for limitations and details). Added USB child drive information option. Added HDD annualized workload rate (Odometer) for SATA to the device information output. Added SSD provisioning. v1.0.1 30-Oct-2014 Better detection of Seagate products within USB enclosure. SAS Sanitize command completion status fixed. v1.0.2 20-Nov-2014 SATA Sanitize Overwrite fix and new message when the command is not supported. Shortened DeviceInformation to DeviceInfo. Typos fixed. SATA SMART attributes clean up and raw values reorganized. Added Power On Hours to USB devices. eraseRange on SAS SSD now supports the entire device using UNMAP when startLBA is 0 and no endLBA is given. v1.0.3 04-Dec-2014 Added -F, --scanFlags option which allows selection of different device handles and specific interfaces. Added --echoCommandLine v1.0.4 17-Apr-2015 Added --transitionPower for SATA and SAS. Modified --checkPowerMode to not disturb the current power mode of the drive. (Linux only) v1.0.5 14-Jul-2015 Added --testUnitReady for SATA and SAS. New name is SeaChest Basics. Improved device discovery. Added "info" to Read Look Ahead and Write Cache feature management, shows the current setting. v1.0.6 12-Aug-2015 Improved device discovery. Corrections to verbose output. Bug related to setting read look ahead and write cache have been fixed for SAS. v1.1.0 12-Oct-2015 1_7_0 libraries. Added enhanced version information. Modified Short DST command line polling arguments to match those of SeaChest_SMART. Converted Overwrite, Trim and Unmap erase commands to match those in SeaChest_Erase. Removed Sanitize, ATA Security Erase commands and --disableATASecurityPW, see SeaChest_Erase utility for these operations. Removed PowerChoice settings commands, see SeaChest_PowerChoice for these operations. Added --downloadMode to provide greater control over firmware control options. download. Added -sat12byte to increase compatibility. Added --SATInfo to compare ATA vs SCSI identification differences. v1.1.1 22-Mar-2016 1_9_1 libraries. Added new verbosity level. Added --onlySeagate restriction. v2.0.0 02-May-2016 Added --modelMatch and --onlyFW filters. Added logic change for --overwrite and --trim commands to assume Max LBA (end of the drive) as the range when the erase range is not specified. --longDST removed, now only available in SeaChest_SMART. v2.0.2 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. Removed Long DST from Help. Fixed --checkPowerMode always returning "active" on SAT interfaces (SATA over SAS). v2.0.3 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. v2.1.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. Added --displayLBA. v2.1.1 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. Added support for maxLBA keyword. v2.2.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. v2.2.2 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v2.3.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. Added --activateFW. v2.3.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v2.3.1 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v2.3.1 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v2.4.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. Add --hideLBACounter, --sasPhy. v2.4.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. v2.5.0 01-Jun-2017 Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. v2.6.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Bug fix where the "-d all" was not filtering out csmi drives like it is supposed to causing duplicate drives to show up. --idd now supports SAS. --idd [short | long | repair] replaces '70 | 71 | 72' syntax. --abortIDD added. v2.7.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v2.7.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v2.7.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v2.7.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v2.7.1 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. Added showing the SMART trip failure reason when possible. v2.7.1 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v2.7.1 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v2.7.1 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v2.7.1 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v2.7.2 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. SeaChest_Configure.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_Configure for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Configure Version: 1.12.0 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_Configure diagnostic software. SeaChest_Configure is a comprehensive command line tool that can be used to configure, change or set various properties on Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Some commands may cause existing data on the drive to become inaccessible. Some commands may affect the performance of the drive. NOTE: SeaChest_Configure may not be fully functional on non-Seagate drives. This User Guide file contains important information about SeaChest_Configure. Please read this entire file before using this software. If this is your drive, you should always keep a current backup of your important data. Be very careful using SeaChest_Configure. Power failure during a configuration change may cause data loss. Seagate is not responsible for lost user data. Usage ===== SeaChest_Configure [-d ] {arguments} {options} Examples ======== SeaChest_Configure --scan SeaChest_Configure -d /dev/sg2 --downloadFW fwfilename Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --setMaxLBA [newMaxLBA | maxLBA] Set the max accessible address of your drive to any value less than the device's default native size. A power cycle is required after this command before resetting or setting a new max LBA. The final capacity will depend on the logical sector size. If the Logical Block Address (LBA) is set to 1953125 and the sector size is 512, then the capacity is 1,000,000,000 bytes. If the logical sector size is 4096, then the capacity is 8,000,000,000 bytes. If the logical sector size is 512 but the physical sector size is 4096 (called Advanced Format), then normal practice is to pick an LBA value which is divisible by 8. Use the -i, --deviceInfo to show logical and physical sector sizes. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive, otherwise see --restoreMaxLBA. --restoreMaxLBA Restore the max accessible address of your drive to its native size. A power cycle is required after this command before setting a new max LBA. --phySpeed [0 | 1 | 2 | 3 | 4 | 5] (Seagate Only) Use this option to change the PHY speed to a new maximum value. This change persists over power cycles and resets. On SAS, this option will set all phys to the specified speed unless the --sasPhy option is given to select a specific phy. 0 - allow full negotiation (default drive behavior) 1 - allow negotiation up to 1.5Gb/s 2 - allow negotiation up to 3.0Gb/s 3 - allow negotiation up to 6.0Gb/s 4 - allow negotiation up to 12.0Gb/s (SAS Only) 5 - allow negotiation up to 22.5Gb/s (SAS Only) --sasPhy [identifier value] Use this option to specify a specific phy to use with another option that uses a phy identifier value. Some tool options will assume all SAS Phys when this option is not present. Others will produce an error when a specific phy is needed for an operation. Use the -i option to learn more about the supported phys. --readyLED [on | off | default] (SAS Only) Use this option to change the behavior of pin 11, the ready LED. Setting to "on" means we are setting the bit to 1 on mode page 19h. See the SPL spec for details on how this changes LED behavior. Setting to "off" sets the ready LED bit to 0. Using "default" reads the drive default setting and sets the bit according to defaults. --readLookAhead [info | enable | disable] Use this option to enable or disable read look-ahead support on a drive. Use the "info" argument to get the current status of the read look ahead feature. This change is not preserved over power cycles. --sctReadTimer [info | value] (SATA Only) (Seagate Only) Use this option to set the SMART command transport read command timer value for synchronous commands and NCQ commands with in-order data delivery enabled. Note: this timer starts at the time that the drive processes the command, not the time it is received. This timer value is volatile and is cleared at each power cycle. Use the "info" argument to get the current status of the read timer. A value of 0 means that all possible error recovery will be performed before returning status (i.e. the Read Command Timer is disabled). Other values should include a unit to know the time to use. If no unit is provided, it is assumed to be the value * 100 ms. The maximum time that can be specified is 1 hour, 49 minutes, 13 seconds. Note: On some SAT HBAs/bridges, status will not be able to be determined due to HBA/bridge limitations. Ex1: --sctReadTimer 7s for a 7 second timer. Ex2: --sctReadTimer 7000ms for a 7 second timer expressed in milliseconds Ex2: --sctReadTimer 70 for a 7 second timer with no units specified Note: this command is part of SMART Command Transport Error Recovery Control (SCTERC). These commands may also be known as TLER or CCTL. For additional information see https://en.wikipedia.org/wiki/Error_recovery_control . Consult your RAID controller documentation to learn its timeout for determining drive failure and subsequent RAID rebuilding of a spare drive. These SCTERC commands, if supported by the drive firmware, allow setting a drive level timeout which is less than the RAID controller rebuild timeout. For example, 7 seconds on the drive and 8 seconds on the controller. This time difference may allow the RAID to perform error recovery at the file level instead of replacing the device since the timeout may be caused by a sector that is just difficult to read, not an entire failure of the drive. --writeCache [info | enable | disable] Use this option to enable or disable write cache support on a drive. Use the "info" argument to get the current status of the write cache feature. Changes may not be preserved over power cycles. Note: Windows, Device Manager, Disk drives, , Policies tab, Write-caching policy may override this --writeCache setting if the policy is enabled in Device Manager. You can change the Windows policy or you can try --sctWriteCache, if necessary, to control the cache regardless of the policy. --sctWriteCache [info | enable | disable | default] (SATA Only) (Seagate Only) Use this option to enable or disable write cache support on a drive using SMART command transport. When using this option, the setting is non-volatile. Use this with the --volatile flag to make the setting volatile. When using this option, the --writeCache will always return success, but no write cache changes will occur. This follows ATA spec. Using the "default" argument returns the drive to default settings and allowing the --writeCache option to work again. Use the "info" argument to get the current status of the write cache feature. Note: On some SAT HBAs/bridges, status will not be able to be determined due to HBA/bridge limitations. --sctWriteCacheReordering [info | enable | disable | default] (SATA Only) (Seagate Only) Use this option to enable or disable write cache reordering support on a drive using SMART command transport. Write cache reordering allows the drive to reorder moving data out of cache to media for better performance on synchronous commands. Asynchronous commands are only affected when in-order data delivery is enabled. When using this option, the setting is non-volatile. Use this with the --volatile flag to make the setting volatile. Use the "info" argument to get the current status of the write cache reordering feature. Note: On some SAT HBAs/bridges, status will not be able to be determined due to HBA/bridge limitations. --sctWriteTimer [info | value] (SATA Only) (Seagate Only) Use this option to set the SMART command transport write command timer value for synchronous commands and NCQ commands with in-order data delivery enabled. Note: this timer starts at the time that the drive processes the command, not the time it is received. This timer value is volatile and is cleared at each power cycle. Use the "info" argument to get the current status of the write timer. A value of 0 means that all possible error recovery will be performed before returning status (i.e. the Write Command Timer is disabled). Other values should include a unit to know the time to use. If no unit is provided, it is assumed to be the value * 100 ms. The maximum time that can be specified is 1 hour, 49 minutes, 13 seconds. Note: On some SAT HBAs/bridges, status will not be able to be determined due to HBA/bridge limitations. Ex1: --sctWriteTimer 7s for a 7 second timer. Ex2: --sctWriteTimer 7000ms for a 7 second timer expressed in milliseconds Ex2: --sctWriteTimer 70 for a 7 second timer with no units specified Note: see additional information above for --sctReadTimer. --lowCurrentSpinup [ enable | disable ] (SATA Only) (Seagate Only) Use this option to enable or disable the low current spinup feature on Seagate SATA drives. Note: This feature is not available on every drive. --puisFeature [enable | disable] (SATA Only) (Seagate Only) Use this option to enable or disable the Power Up In Standby (PUIS) feature on SATA drives. Note: If this is configured on the drive with a jumper, this command will fail. Note2: Not all products support this feature. --showSupportedSectorSizes This option will show the supported sector sizes of a device if it reports them. If the device does not report supported sector sizes, please consult your product manual. --sscFeature [info | default | enable | disable] (SATA Only) (Seagate Only) Use this option to change or view the SSC (Spread Spectrum Clocking) mode on a Seagate SATA drive. Only change this setting if you are experiencing compatibility problems with the drive in a system. info - show current SSC state default - set to drive default mode enable - enable SSC disable - disable SSC Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Data Destructive Commands (Seagate Only) ======================================== Data destructive commands will require additional command line arguments as confirmation of your understanding that data will be lost on the drive. Seagate is not responsible for lost user data. --confirm I-understand-this-command-will-erase ... etc --provision [newMaxLBA | maxLBA] (Seagate Only) Provision your drive to a new max LBA to any value less than the device's current max LBA. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. A power cycle is required after this command before resetting the max LBA or changing the provisioning again. This command erases all data between the new maxLBA specified and the current maxLBA of the device. TRIM (SATA) or UNMAP (SAS) will be used when supported by the device, including SSDs. For most HDDs this test will write 0's to the device and possibly take a very long time to complete. --setSectorSize [new sector size] (Seagate Only) This option is only available for drives that support sector size changes. On SATA Drives, the Set Sector Configuration command must be supported. On SAS Drives, Fast Format must be supported. A format unit can be used on SAS instead of this option to perform a long format and adjust sector size. Use the --showSupportedSectorSizes option to see the sector sizes the drive reports supporting. If this option doesn't list anything, please consult your product manual. This option should be used to quickly change between 5xxE and 4xxx sector sizes. Using this option to change from 512 to 520 or similar is not recommended at this time due to limited drive support. This option can be used to quickly change the the logical sector size between 5xx emulation and 4xxx native logical block sizes. Resulting LBA (sector) count is either /8 or *8 the current Read Capacity or Identify, depending on the direction of the conversion. In the case of SAS, this is a fast format unit command keeping existing data in the physical sector. The media may be readable, but data may be unspecified or may return errors on read access according to it's error processing algorithms. =============== Version History =============== v1.0.0 02-May-2016 1_9_1 libraries. SeaChest_Configure Windows, initial beta test release. Branched from SeaChest_Basics v2.0.0. Added --lowCurrentSpinup v1.1.1 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. Adjustments to --setSectorSize. Added --sctWriteCache, --sctWriteCacheReordering. v1.1.2 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. Support SATA non-volatile WCE. v1.3.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. Added --puisFeature. v1.3.1 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. Added support for maxLBA keyword. v1.4.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. v1.4.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v1.5.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v1.5.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v1.5.1 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v1.5.1 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v1.7.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. Add --sasPhy, --sscFeature. v1.7.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. v1.8.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. v1.9.0 06-Jul-2017 Added --sctReadTimer, --sctWriteTimer. v1.10.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v1.10.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v1.10.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v1.10.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v1.11.0 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. Removed --setSectorSize now in SeaChest_Format. v1.11.0 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v1.11.0 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v1.11.0 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v1.11.0 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v1.12.0 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. SeaChest_Erase.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_Erase for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Erase Version: 1.7.3 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_Erase diagnostic software. SeaChest_Erase is a comprehensive command line tool that can be used to efficiently erase data on Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). NOTE: SeaChest_Erase may not be fully functional on non-Seagate drives. NOTE: Windows 8, Windows Server 2012 and newer do not support the Sanitize command set. This User Guide file contains important information about SeaChest_Erase. Please read this entire file before using this software. Some of the erase options will require you to enable ATA Trusted Trusted Computing Group (TCG) commands support for your Linux operating system. Please see the section below "Enabling TCG Commands In Linux" for information about this requirement. If this is your drive, you should always keep a current backup of your important data. If this is not your drive and the original owner has no claim of ownership to it or the data stored on it, then you may still be responsible for the data in your possession. To protect yourself from potential liability and to protect the previous owner's privacy, you should remove all data by performing a data erasure on this drive. Be very careful because using SeaChest_Erase will cause data loss. Seagate is not responsible for lost user data. Usage ===== SeaChest_Erase [-d ] {arguments} {options} Examples ======== SeaChest_Erase --scan SeaChest_Erase -d /dev/sg2 -i SeaChest_Erase --device /dev/sg1 --sanitize info Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add--usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --displayLBA [LBA | maxLBA] This option will read and display the contents of the specified LBA to the screen. The display format is hexadecimal with an ASCII translation on the side (when available). The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. --showEraseSupport This option checks the drive to determine which methods of data erasure are supported and lists them, from fastest to slowest. Gives overwrite erase time estimate. --poll Use this option to cause another operation to poll for progress until it has completed. This argument does not return to the command prompt and prints ongoing completion percentages (%) and the final test result. Full drive procedures will take a very long time. Used with --sanitize, --secureErase (SATA), --writeSame (SATA), or --formatUnit (SAS). --progress [sanitize, format] Get the progress for a test that was started quietly (default) specify a test to check progress. The progress counts up from 0% to 100%. --disableATASecurityPW [SeaChest | ASCIIPW] [user | master] Use this option to disable an ATA security password. If a drive lost power during an ATA Security Erase in SeaChest, then using the option "SeaChest" with 'user' will remove the temporary password set by the utility. To disable a password set by a BIOS, the BIOS must have set the password in ASCII. A BIOS may choose to hash the password typed in the configuration however it chooses and this utility has no idea how to match what the BIOS has done so it may not always work to remove a password set by something other than this utility. Some commands like --scan and --deviceInfo and will still run on a locked drive. Note: See the section below "When drives are reported Security "Frozen" by SeaChest". --showPhysicalElementStatus Use this option to see the status/health of the storage elements inside a drive. Use the element # shown with the --removePhysicalElement option to remove that storage element from use. This option can also be used to see if a depopulation is still in progress or if it has completed. See the section below 'Interpreting Head Health and Status' for more information. --forceSeagateDepop (Seagate Only) Use this option to force using Seagate's vendor unique method of seeing and removing storage elements from use. This is a legacy method and the default mode is to use the ACS4 or SBC4 methods when available. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest_Erase in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest_Erase version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --hideLBACounter Use this option to supress the output from options that show LBA counters without turning off all output to the screen. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --hours [hours] Use this option to specify a time in hours for a timed operation to run. --minutes [minutes] Use this option to specify a time in minutes for a timed operation to run. --seconds [seconds] Use this option to specify a time in seconds for a timed operation to run. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Data Destructive Commands (Seagate Only) ======================================== Data destructive commands will require additional command line arguments as confirmation of your understanding that data will be lost on the drive. Seagate is not responsible for lost user data. Note: The time required to erase an entire drive may take several hours. The erase time length is slightly longer than the time it takes to read the entire drive. The SeaChest --deviceInfo command output has a line similar to this example: 'Long Drive Self Test Time: 1 hour 38 minutes'. You can use the reported time for your drive as being less than the time necessary to erase the entire drive. --confirm I-understand-this-command-will-erase ... etc --performQuickestErase (Seagate Only) This option checks the drive to determine which methods of data erasure are supported and determines which is the quickest to erase ALL data on the drive. It then starts the quickest erase. Combine this option with the --poll option to enable polling for progress on the fastest erase. See also --showEraseSupport. Note 1: Some erase methods require polling and will have polling enabled by default. Note 2: If revertSP is the fastest, it will not be started since the drive PSID must be passed in on the command line. Note 3: See the section below "When drives are reported Security "Frozen" by SeaChest". NOTE: Windows 8, Windows Server 2012 and newer do not support the Sanitize command set. --sanitize [info | blockerase | cryptoerase | overwrite | freezelock | antifreezelock] Use the info argument to show supported sanitize operations. Optionally, use blockerase, cryptoerase, or overwrite to start a sanitize operation. Example:--sanitize info Example:--sanitize blockerase * blockerase on some solid state drives (SSD) is very fast at less than one (1) second, while on other SSDs it can take longer than 30 seconds. It performs a physical low level block erase operation on all current, past and potential user data making previous data irretrievable. * cryptoerase is very fast at less than one (1) second. It changes the internal encryption keys that are used for user data causing all previous data to be useless. * overwrite physically overwrites all current, past and potential user data. The ATA specification gives overwrite the option to set a user defined pattern and multiple passes. SeaChest_Erase will use zeros (0) and one pass. Overwrite on hard disk drives (HDD) takes a very long time to complete at approximately three (3) hours per TeraByte. Once this command starts it must finish the overwrite erase before normal use of the drive is returned. Even if a power reset is performed during overwrite erase the drive will continue from where it was stopped until it reaches the end of the of erasure. Automatic sector reallocation (repair) is permitted during the operation of this function. The optional --poll argument does not return to the command prompt and prints ongoing completion percentages (%) and the final test result. Otherwise, the Sanitize command begins and immediately returns to the command prompt. Use the --progress sanitize command to check on the completion percentage (%) and test result. * freezelock is a command to block processing of sanitize operations until a power cycle is performed on a device. It is only available on ATA drives. Once this command has been sent, the freezelock status becomes immediate and cannot be cleared until the drive has been powered off. All sanitize commands, except a sanitize status will be aborted. * antifreezelock is a command which is designed to block a freezelock command from locking out the sanitize feature set. It is only available on ATA drives that support the ACS3, or higher specification. --secureErase [normal | enhanced] (SATA only) Use the normal or enhanced argument to start an ATA security erase on a device. ATA Security Erase on standard drives (non-SED) takes a very long time to complete at approximately three (3) hours per TeraByte. Self Encrypting Drives (SED) may run an quick cryptographic erase by changing the drive's encryption keys. The industry standard command ATA Security Erase begins by locking the drive with a temporary password which is cleared at the end of the erasure. Do not run this command unless you have ample time to allow it to run through to the end. If the procedure is interrupted prior to completion, then the drive will remain in a locked state and you must manually restart it from the beginning. The temporary password to unlock the drive is "SeaChest", plain ASCII letters without the quotes. If the drive reports that it is freezelocked, then this is usually put on by a BIOS command at startup. After the operating system is finished booting you can try removing the power to just the hard drive. This should allow it to restart without the freezelock command. * normal writes binary zeros (0) to all user data areas. * enhanced writes binary zeros (0) to all user data areas, including sectors that are no longer in use due to reallocation. Not all drives support the enhanced mode. For some models (ISE enabled), enhanced mode erase can take seconds because it uses crypto erase internally. Note: See the section below "When drives are reported Security "Frozen" by SeaChest". --overwrite [starting LBA | maxLBA] Use this option to start an overwrite erase at the specified starting LBA. Use 0 for the starting LBA to mean the beginning of the drive. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. The overwrite data pattern will be all zeros (0000... etc) for the specified range. You must combine this option with either the --overwriteRange to set the range count of the erasure, or the time settings (--minutes, etc. see above). Example: --overwrite 0 --overwriteRange 1000000 --overwrite 0 --hours 1 --minutes 30 Important: If the end of the drive is reached before the time is up, the operation will continue at the beginning of the drive until the specified time is finished. This means your starting LBA may not be the lowest LBA erased. Use --overwrite and --overwriteRange together instead for more control of the starting and ending LBAs. This test always issues write commands to the drive. No TRIM or UNMAP commands are used during this operation. Note: This erase may be used on HDD (hard disk drive) or SSD (solid state disk) devices, although not advised for SSD because it impacts endurance life due to abnormal write activity. --overwriteRange [LBA count] Use with the --overwrite option to specify a range of LBAs to erase on the selected drive. If the starting LBA and the range count together exceed the MaxLBA (last sector of the drive) then the test will end at the MaxLBA. Also, if this command is omitted then the end of the drive is assumed and the test will end at the MaxLBA. --trim [starting LBA | maxLBA] (SATA only) --unmap [starting LBA | maxLBA] (SAS only) Use this option to start a TRIM (SATA) or UNMAP (SAS) operation at the specified starting LBA. Use 0 for the starting LBA to mean the beginning of the drive. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. These commands are common on SSD devices and less common on HDDs. You must combine this option with the corresponding --trimRange or --unmapRange to set the range of the operation. --trimRange [LBA count] (SATA only) --unmapRange [LBA count] (SAS only) Use one of these options to specify a range of LBAs to TRIM or UNMAP on a drive. A starting point must be specified with the corresponding --trim or --unmap option. If the starting LBA and the range count together exceed the MaxLBA (last sector of the drive) then the test will end at the MaxLBA. Also, if this command is omitted then the end of the drive is assumed and the test will end at the MaxLBA. --writeSame [starting LBA | maxLBA] Use this option to start a WRITE SAME erase at the specified starting LBA. Use 0 for the starting LBA to mean the beginning of the drive. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. The Write Same data pattern will be all zeros (0000... etc) for the specified range. You must combine this option with the --writeSameRange to set the range of the erasure. On SCSI devices, this uses the writesame16 command. On ATA devices, this uses the SCT writesame feature. Note: For SATA drives, adding the --poll option will cause this operation to poll for progress until complete. This is not available on SAS and SCSI drives because SCSI drives do not report the progress on a Write Same operation. --writeSameRange [LBA count] Use with the --writeSame option to specify a range of LBAs to erase on the selected drive. If the starting LBA and the range count together exceed the MaxLBA (last sector of the drive) then the test will end at the MaxLBA. Also, if this command is omitted then the end of the drive is assumed and the test will end at the MaxLBA. --revert This command is very fast at less than one (1) second. It changes the internal encryption keys that are used for user data causing all previous data to be useless. This operation performs an Opal SSC specification Revert on a Self Encrypting Drive (SED). This operation is only available on Seagate TCG Opal drives. Seagate SED drives are marked on the label with the words "Seagate Secure". No all Seagate SED drives are TCG Opal compliant. In order to complete this operation, the lockingSP must not be activated, as this option will activate it in order to perform the revert. The value of SID, must also be the value of MSID as this operation must authenticate as SID using the value of MSID. Upon completion, the drive will be "like new" with all user data being cryptographically erased and all other settings set to factory defaults. If this operation fails, use --revertSP instead. Note: See the section below "Enabling TCG Commands In Linux". --revertSP DrivePSID This command is very fast at less than one (1) second. It changes the internal encryption keys that are used for user data causing all previous data to be useless. This operation performs an Opal SSC specification revertSP on a Self Encrypting Drive (SED). This operation is available on all Seagate SED drives which are marked on the label with the words "Seagate Secure". The PSID (Physical Security IDentification number) is a 32-digit number & capital letter sequence printed on the label. There is no electronic query for this number, therefore the drive must be removed in order to read the PSID number. Many drives have a PSID code on the label but are NOT marked as "Seagate Secure"; these drives do not support revertSP cryptographic erase. Enter the PSID without spaces. FIVE attempts are allowed before a power cycle is required. It can also be read by 2D barcode reader. Upon completion, the drive will be "like new" with all user data being cryptographically erased and all other settings set to factory defaults. Example: --revertSP 123ALL32DIGITS123ALL32DIGITS123A Note: See the section below "Enabling TCG Commands In Linux". --formatUnit [current | new sector size] (SAS Only) (Seagate Only) This option will start a format unit operation on a SAS drive Use "current" to perform a format unit operation with the Sector size currently being used, otherwise enter a new sector size to use upon format completion. Valid sector sizes are given by the --showSupportedSectorSizes command (see above) or listed in the device Product Manual. This command will erase all data on the drive. The security initialize feature is not used and protection information will not be set. Combine this option with --poll or --progress to check for completion status until the format is complete. Warning: Once a Format Unit command is started it must be allowed to finish in order to calculate the total number of logical blocks (LBAs) at the finish. If the sector size has changed then there will be a corresponding change to the total number of LBAs. If a device stops a Format Unit before it completes then the device will report a "Corrupted Format" sense code, "03-31". Restart the format and allow it to finish to correct this error. --fastFormat [fast format mode] (SAS Only) (SBC4 required) You must use this option with the --formatUnit option to run a fast format. Available fast format modes: 0 - This is a standard format unit command. All logical blocks will be overwritten. This command will take a very long time. 1 - This is a fast format unit command keeping existing data in the physical sector. This option can be used to quickly change the the logical sector size between 5xx emulation and 4xxx native logical block sizes. Resulting LBA (sector) count is either /8 or *8 the current Read Capacity, depending on the direction of the conversion. The media may be readable, but data may be unspecified or may return errors on read access according to it's error processing algorithms. 2 - This is a fast format unit command that can change the logical sector size quickly. Media may or may not be read accessible until a write has been performed to the media. Example: --formatUnit 512 --fastFormat 1 --confirm I-... etc Example: --formatUnit 4096 --fastFormat 1 --confirm I-... etc Note: There is no electronic method to test if a SAS drive supports Fast Format. Refer to the drive product manual to determine if it supports the sub-command. --pattern [repeat:asciinospaces | random | increment:startValue | file:filename] Use this option with overwrite, sanitize, and format unit operations to write a specific pattern to a range of LBAs or the whole drive. * repeat - without spaces, enter an ASCII text string or a hexadecimal string terminated by a lower case "h". This pattern will be repeated until it fills the logical size of the LBA. i.e. helloword or FFFFFFFFh Note: A hexadecimal pattern will be interpreted as a 32bit unsigned integer. 4 hex bytes (8 characters) must be given for a hex value to be used. Ex: 1F037AC8h or 0000FFFFh * random - the entire logical sector size will be filled with random bytes. This pattern will be written to all LBAs in the desired range. * increment - enter the starting numerical value. Starting with this value, each byte will be written with 1 + previous value. * file - user supplied file name to use for a pattern. The file will be truncated or padded with zeros to the logical sector size. Note 1: Each file will be interpreted as a binary file. Note 2: A path must also be provided if the file is not in the local directory. Note 3: Sanitize Overwrite on SATA only supports a 32bit pattern. The file option will get truncated to a 32bit pattern for SATA products. --removePhysicalElement [element #] (Seagate Only) Use this option to remove a storage element from use on a drive. When this is done, the drive will erase all user data and lower the capacity to a new point where the drive is still usable without the provided element #. Use the --showPhysicalElementStatus option to see the status of the depopulation operation. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error Interpreting Head Health and Status ----------------------------------- Beginning in 2016, some Seagate nearline drives started to support the Remanufacture command set which allows a disk drive with a manageable read/write head problem to remain in service at a reduced capacity by "depopulating" the head element. You can check if a drive supports the Remanufacture command set by running --deviceInfo and looking for 'Storage Element Depopulation' in the list of supported features. (Not to be confused with 'SATA Rebuild Assist' which is a feature used to rebuild RAID systems.) A drive failure (due to a head problem) that is easily removed from the system is replaced with a spare drive. A drive that is nearly inaccessible may make sense to remain in the system at a reliable lesser capacity by depopulating the problem head. If supported by the drive, the --showPhysicalElementStatus command will display a simple table showing head number, type, health, and status. The Health level is represented like a percentage, 0-100. 0 is perfectly healthy, 100 = at manufacturer's limit, above this to 207 is above the manufacturer's limit. A report of 254 means a depopulate is in progress. The Status levels are active, in limit, degraded, truncated, truncate failed. If a drive head has developed isolated, degraded performance, and does not affect any other reliability in the system, then the head can be removed from service. A drive with seven platters and fourteen heads would lose 1/14th of its storage capacity, or ~7%. Likewise, a four head drive would lose 25%. If a drive is reported as "degraded" by --showPhysicalElementStatus then it can be depopulated using the --removePhysicalElement command. When a head is depopulated the drive must perform a complete full pack write; this is obviously data destructive and takes a very long time to complete. When disk drives are built the post assembly factory process includes media scanning, any defects mapping, defining sector sizes, and establishing system, cache and data zones. This activity is generically known as a low-level format. During head depopulation (i.e. removing a physical element) the drive performs a kind of 'mid-level format' using Sanitize Overwrite which has the unique behavior that once started it must finish. If power is interrupted during a Sanitize Overwrite it will pick up again where it left off when power returns. ============================== Enabling TCG Commands In Linux ============================== Abstract -------- The SeaChest_Erase --revert and --revertSP commands require specific support be enabled in the Linux kernel. This document describes the process to enable support for sending ATA Trusted Trusted Computing Group (TCG) commands in Linux. The focus is on how to do this through Ubuntu Linux 14.04LTS, however, the process should apply to other Linux’s as well although others may vary slightly. Modifying The GRUB Configuration File (Ubuntu example used) ----------------------------------------------------------- In order to make the change to allow TCG commands persist across reboots, you must modify the kernel boot parameters. In Ubuntu, this is accomplished by modifying the GRUB 2 configuration file. This section references the Grub2 configuration documentation from the Ubuntu Community: https://help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2 Follow these steps to perform this modification in Ubuntu (other Linux’s may be similar). 1. You must modify the file /etc/default/grub. You can do this by running "sudo gedit /etc/default/grub" 2. Once this file is open in the editor of your choice, add "libata.allow_tpm=1" to the line that begins with "GRUB_CMDLINE_LINUX_DEFAULT" (or which ever line in grub is the one you use to boot your kernel, but this is the default). 3. Close your editor 4. Run the command "sudo update-grub" to apply your changes to the grub boot configuration (the file modified in these steps is a config file for the config file). 5. Restart your computer to make this active Temporarily Enabling TCG Commands In Linux ------------------------------------------ You can temporarily enable TCG commands without modifying the kernel boot parameters. This can be accomplished by modifying the libata parameters file. Below is a sample script that can be run to do this. Sample Script: cd /sys/module/libata/parameters sudo chmod 644 allow_tpm echo 1 | sudo dd of=./allow_tpm sudo chmod 444 allow_tpm Tiny Core - Enabling TCG Commands ------------------------------------------ Follow these steps to enable TCG commands on a Tiny Core bootable USB flash drive. 1. Leave the USB flash drive in after you run the Windows-based USB boot maker tool. 2. Using a (Windows) text editor go to USB:/boot/syslinux.cfg and in there, add libata.allow_tpm=1 on the append line with the other kernel boot parameters. 3. Using a (Windows) text editor go to USB:/EFI/boot/refind.conf and add libata.allow_tpm=1 on the options line with the other kernel boot parameters =============== Version History =============== SeaChest_Erase is branched off from SeaChest Basics v1.0.3. v0.0.1 14-Apr-2015 Added --writeSame, --revertSP and TCG --revert. v0.0.2 21-May-2015 Added --testUnitReady. Improved device discovery. v0.0.3 12-Aug-2015 Modified some commands to consist of two parts - starting LBA and LBA range count. Improved device discovery. Corrections to verbose output. v0.0.3 16-Oct-2015 1_7_0 libraries. Added enhanced version information. Added -sat12byte to increase compatibility. Added --SATInfo to compare ATA vs SCSI identification differences. v1.0.0 02-May-2016 1_9_1 libraries. Added new verbosity level. Added --onlySeagate restriction. Added --modelMatch and --onlyFW filters. Added logic change for --overwrite and --trim commands to assume Max LBA (end of the drive) as the range when the erase range is not specified. Added --performQuickestErase, --formatUnit, --fastFormat, --showEraseSupport. v1.0.1 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. Adjustments to --fastFormat. v1.0.2 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. v1.1.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. Added --displayLBA and --pattern. v1.1.1 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. Added support for maxLBA keyword. v1.2.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. v1.2.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v1.3.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v1.3.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v1.3.1 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v1.3.1 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v1.3.2 10-Nov-2016 1_11_8 libraries fixed issue with Sanitize Overwrite patterns. Also improved logic when using the various Range commands. v1.4.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. --showEraseSupport now gives overwrite erase time estimate. --progress support for writesame removed (caused test to abort), use --poll instead. Add --hideLBACounter. v1.4.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. v1.5.0 24-May-2017 1_14_3 libraries. Added "Storage Element Depopulation" if a supported feature. Adds --showPhysicalElementStatus, --forceSeagateDepop, --removePhysicalElement. v1.6.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. Bug fix with --showEraseSupport showing non-ascii characters. Added --showPhysicalElementStatus and --removePhysicalElement. v1.7.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v1.7.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v1.7.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v1.7.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v1.7.1 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. Added remanufacturing time for SCSI. v1.7.3 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. Added detection of current SAS format protection mode. v1.7.3 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v1.7.3 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v1.7.3 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v1.7.3 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. Removed immediate bit from SAS Fast Format. SeaChest_Firmware.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_Firmware for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Firmware Version: 2.5.2 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_Firmware diagnostic software. SeaChest_Firmware is a comprehensive command line tool that can be used to update firmware, also known as microcode, on Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Seagate products are run by firmware. Having the latest firmware can improve performance and or reliability of your product. Seagate recommends applying new firmware to enhance the performance and or reliability of your drive. Like any software, firmware is improved over time and problems are also fixed.  Every drive family has a couple of firmware releases during the life of the product.  Please check in regularly to determine if new firmware is available for your drive. SeaChest_Firmware allows for both single drive and sequential batch mode firmware download. NOTE: SeaChest_Firmware may not be fully functional on non-Seagate drives. NOTE: Windows severely restricts downloading firmware to SATA drives. Please see the section below "Windows Restrictions Over SATA Firmware Downloads". SeaChest_Firmware may not be fully functional on non-Seagate drives. This User Guide file contains important information about SeaChest_Firmware. Please read this entire file before using this software. If this is your drive, you should always keep a current backup of your important data. Be very careful using SeaChest_Firmware. Power failure during a firmware download will cause data loss. Never apply firmware to a drive unless you are certain that the firmware data file is specifically prepared for your drive. Seagate is not responsible for lost user data. Usage ===== SeaChest_Firmware [-d ] {arguments} {options} Examples ======== SeaChest_Firmware --scan SeaChest_Firmware -d /dev/sg2 --downloadFW fwfilename Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --fwdlInfo Use this option to show the firmware download support information for a drive. --downloadFW fwfilename (Seagate Only) Download firmware to a Seagate storage product. Use only Seagate authorized firmware data files which are designated for the specific model drive. Improper use of this option may harm a device and or its data. You may specify the path if the firmware data file is in a different location. This option will use segmented download by default. Use the --downloadMode option to specify a different download mode. Please see the section below "Windows Restrictions Over SATA Firmware Downloads". --downloadMode [full | segmented | deferred] (Seagate Only) Use this command along with the --downloadFW option to set the firmware download mode. Supported Modes: full - Performs a download in one large transfer to the device. segmented - Downloads the firmware in multiple segments to the device. (Most compatible) deferred - Performs a segmented download to the device, but does not activate the new firmware until a power cycle or activate command is sent. Drives with this feature are not common. See --activateFW. Note: See the --modelMatch and --onlyFW utility options which may assist in creating commands to update multiple similar drives. --activateFW (Seagate Only) Use this option to issue the command to activate code that was sent to the drive using a deferred download command. This will immediately activate the new code on the drive. You can use this along with a --downloadFW and --downloadMode to automatically issue the activate command after the deferred download has completed. --fwdlConfig [config file] (Seagate Only) Use this option to specify a configuration file to perform an update based on a firmware match on multiple drives or a single drive in the system. You may specify the path if the file is in a different location. Configuration files consist of model numbers, previous compatible firmware and the appropriate matching new firmware. Configuration files may be written to support multiple models at a time. See the section below "Firmware Configuration Files" for more information on this subject. --fwdlDryRun Use this option to compare a given config file to the drives in a system without performing a firmware update. This can be used to check if any drives in the system require an update. --fwdlSegSize [segment size in 512B blocks] (Seagate Only) Use this option to specify a segment size in 512B blocks to use for a segmented or deferred download. This option will not affect an immediate download (full buffer at once). The default segment size used is 64. Larger segment sizes may be faster, however they may also be incompatible with controllers or drivers in the system. Smaller values are more likely to be compatible, but also slower. Use this option if the default used by the tool is not working correctly for firmware updates. --firmwareSlot/--fwBufferID slot# (Seagate Only) Use this option to specify a firmware slot (NVMe) or a buffer ID (SCSI) along with the --downloadMode (SCSI) or --activateFW (NVMe & SCSI) options. If this option is not used, a value of zero will be used instead, which means the drive will automatically select the slot number. --calculateFileHash [file] Use this option to calculate the hash of a file. The following hashes are computed and shown on the screen: MD5 SHA1 SHA2_224 SHA2_256 SHA2_384 SHA2_512 Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet, 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --newFW [firmware revision] Use this option to skip drives matching the provided firmware revision. This option will only do an exact match. This option should be used to skip performing an update if a drive already has this firmware revision loaded. The option --childNewFW may be used to match drives in USB enclosures. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists ---SeaChest_Firmware specific exit codes--- 32 = Firmware Download Complete 33 = Deferred Firmware Download Complete 34 = Deferred Code Activated 35 = No Drive or Firmware match found 36 = Model number matched, but Firmware mismatched 37 = Firmware File Hash Error 38 = Firmware Already up to date 39 = Firmware Match Found for update 40 = Firmware Match Found for update - deferred update supported Anything else = unknown error ============================ Firmware Configuration Files ============================ There are two types of SeaChest_Firmware configuration (config) files: encrypted CFS and plain text CFG. Seagate-prepared configuration files are encrypted and carry the file extension CFS. Seagate does not decrypt or disclose the contents of its CFS files. Alternatively, you may prepare your own plain text configuration files which must use the file extension CFG. SeaChest_Firmware configuration files are simple text with multiple lines. Each line defines a model and previous firmware match up to a new firmware data file. The structure of each line is this: fullModelNumber;$FWREV$oldFwVersion;fwDataFile;(optional)$FWREV$newFwVersion No spaces, the first $FWREV$ and all three semi-colons (;) are mandatory. Note: The full model number is the ELECTRONIC version. The label shows a shorter version which may not include all of the necessary digits. When you run SeaChest -s or --scan the output will display the full electronic model number. For example the label may show ST4000DX001 but the full model is actually ST4000DX001-1CE168. You must use the full model numbers as given by the --scan command. The --scan commmand also shows the current firmware, such as CC46 or SN03 or 0002 or 0001SDM7. There are several possible variations. This corresponds to the old firmware version. You must precede the old firmware version with these exact characters $FWREV$, like $FWREV$0001SDM7. Seagate is the only authorized source for a firmware data file. The file name and or other documentation should provide the new firmware version for the file. The last section of the data line is optional, the new firmware version. If you include this information correctly, then SeaChest_Firmware may give a message stating that the drive already has the new firmware. If you omit the new firmware details then you must still end the text string with a semi-colon (;). For example, this is a four-line configuration file for three different models and three different firmware data files (not all model numbers have the longer electronic version): ST4000DX001-1CE168;$FWREV$CC42;BarracudaXT-CC44.LOD;$FWREV$CC44 ST4000DX001-1CE168;$FWREV$CC43;BarracudaXT-CC44.LOD;$FWREV$CC44 ST120FP0021;$FWREV$B770;SSD-B775.BIN; ST4000NM0043;$FWREV$0004;Constellation3TB-0005.lod;$FWREV$0005 Remember, no spaces, the first $FWREV$ and all three semi-colons (;) are mandatory. Caution: Firmware download configuration files assume you have knowledge about which models are compatible with the associated firmware files. If you are unsure about the compatibility then you should NOT attempt to download the firmware to the drive. Never apply firmware to a drive unless you are certain that the firmware data file is specifically prepared for your drive. Be very careful using SeaChest_Firmware. Power failure during a firmware download will cause data loss. Seagate is not responsible for lost user data. Finally, you may optionally add a hash check calculation on the firmware data file to the SeaChest_Firmware configuration file. Simply, run the --calculateFileHash option on the firmware data file. For example, run a MD5 calculation on the file and then add "@MD5=61b33014f2d2a4f9553f6ef64fb82e31" (substituting your calculation) immediately following the file name, before the semi-colon (;). For example: ST4000DX001-1CE168;$FWREV$CC43;BarracudaXT-CC44.LOD@MD5=61b33014f2d2a4f9553f6ef64fb82e31;$FWREV$CC44 SeaChest_Firmware will compare its own MD5 calculation to the value in the configuration file and if they do not match then the procedure will abort. Six types of hash calculations are supported up to SHA2_512. =============== Version History =============== v0.0.1 22-Mar-2016 1_9_1 libraries. SeaChest_Firmware Linux, initial beta test release. Branched from SeaChest_Basics v1.1.0. Adds firmware download batch modes by model number and various firmware revision checks. v0.0.2 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. v1.0.0 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. v1.1.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. v1.1.0 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. v2.0.4 23-Aug-2016 Adds --calculateFileHash. v2.0.3 16-Aug-2016 Adds --fwdlInfo, --activateFW, --fwdlConfig and --fwdlSegSize. Add user defined configuration files. v2.1.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. After firmware download messages improved. Logic to exclude using both --fwdlConfig and --downloadFW at the same time. v2.1.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v2.2.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v2.2.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v2.2.2 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v2.2.2 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v2.3.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. Add --fwdlDryRun. v2.3.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. v2.3.2 09-Mar-2017 Fixes to config file processing. v2.3.3 12-Apr-2017 1_13_4 libraries. Fixes issue where tool was not defaulting to segmented download if not specified. Adds several new return exit codes to help manage scripts using configuration files. v2.3.4 10-May-2017 1_13_4 libraries. Fixes issue where where --fwdlInfo command was sometimes missing segmented on SAS products. v2.4.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Bug fix where the "-d all" was not filtering out csmi drives like it is supposed to causing duplicate drives to show up. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. v2.5.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v2.5.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v2.5.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v2.5.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v2.5.1 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. Added option to specify a buffer ID or FW slot, file name added to the output of --showFileHash. Added --firmwareSlot and --fwBufferID. v2.5.1 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v2.5.2 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v2.5.2 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v2.5.2 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v2.5.2 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. SeaChest_Format.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_Format for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Format Version: 1.2.0 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_Format diagnostic software. Storage products which utilize the SAS, SCSI or Fibre Channel interfaces are able to perform a full low-level media format in the field. These three storage interfaces use, in generic terms, the SCSI command set. Unlike SATA, which is low-level formatted only at the factory, SCSI command devices are able to rescan the surface of the media while managing defective sectors (if any) and even change the drive sector size. The SCSI Format Unit command offers many specialty options to accommodate a variety of conditions and to fine tune the procedure. Some RAID adapters, for example, use 520 byte sectors rather than the common 512 size. Because of this ability to change to a new sector size (also called block size), the resulting number of total sectors (Logical Block Addresses or LBAs) on a drive can vary and the actual final count is determined at the end of the format. In simple terms, if the new sector size is twice a large as the previous format then the new count of sectors is half of what it was. The SCSI Format Unit command is a drive background command which means that once the command is accepted by the drive it then goes offline to manage the task with no overhead impact to the host system. The drive will report formatting progress in 1% increments. Important note: Once a Format Unit command has begun on a device then it must be allowed to complete to be usable again. If the format is interrupted then it will subsequently report a corrupted format with Sense Key "03-31". The only way to clear a corrupted format error is to start again and allow it to finish. 03h - Medium error. The command was terminated with a non-recoverable error condition, probably caused by a flaw in the media or an error in the recorded data. 31h - The media format is corrupted. Please see the section below "About the SCSI Format Unit Command" for additional information. NOTE: SeaChest_Format may not be fully functional on non-Seagate drives. This User Guide file contains important information about SeaChest_FormatUnit. Please read this entire file before using this software. If this is your drive, you should always keep a current backup of your important data. If this is not your drive and the original owner has no claim of ownership to it or the data stored on it, then you may still be responsible for the data in your possession. To protect yourself from potential liability and to protect the previous owner's privacy, you should remove all data by performing a data erasure on this drive. Be very careful because using SeaChest_Format will cause data loss. Seagate is not responsible for lost user data. Usage ===== SeaChest_Format [-d ] {arguments} {options} Examples ======== SeaChest_Format --scan SeaChest_Format -d /dev/sg2 -i SeaChest_Format --device /dev/sg1 --showSupportedSectorSizes Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add--usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --displayLBA [LBA | maxLBA] This option will read and display the contents of the specified LBA to the screen. The display format is hexadecimal with an ASCII translation on the side (when available). The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. --poll Use this option to cause another operation to poll for progress until it has completed. This argument does not return to the command prompt and prints ongoing completion percentages (%) and the final test result. Full drive procedures will take a very long time. Used with --sanitize, --secureErase (SATA), --writeSame (SATA), or --formatUnit (SAS). --progress [format] Get the progress for a test that was started quietly (default) specify a test to check progress. The progress counts up from 0% to 100%. --showSupportedSectorSizes This option will show the supported sector sizes of a device if it reports them. These can be used to change the sector size or used with a format unit operation. On SAS, this is the supported block lengths and protection types VPD page. (SBC4 and later) On SATA, this is the sector configuration log. (ACS4 and later) If the device does not report supported sector sizes, please consult your product manual. --showFormatStatusLog (SAS Only) Use this option to view the SCSI format status log. Note: This log is only valid after a successful format unit operation. --showSupportedProtectionTypes (SAS Only) Use this option to view the supported protection types for a device. Run -i or --deviceInfo to see current protection type, if any. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest_Format in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest_Format version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Data Destructive Commands (Seagate Only) ======================================== Data destructive commands will require additional command line arguments as confirmation of your understanding that data will be lost on the drive. Seagate is not responsible for lost user data. Note: The time required to erase an entire drive may take several hours. The erase time length is slightly longer than the time it takes to read the entire drive. The SeaChest --deviceInfo command output has a line similar to this example: 'Long Drive Self Test Time: 1 hour 38 minutes'. You can use the reported time for your drive as being less than the time necessary to erase the entire drive. --confirm I-understand-this-test-command-erase ... etc --formatUnit [current | new sector size] (SAS Only) (Seagate Only) This option will start a format unit operation on a SAS drive Use "current" to perform a format unit operation with the Sector size currently being used, otherwise enter a new sector size to use upon format completion. Valid sector sizes are given by the --showSupportedSectorSizes command (see above) or listed in the device Product Manual. This command will erase all data on the drive. The security initialize feature is not used and protection information will not be set. Combine this option with --poll or --progress to check for completion status until the format is complete. Warning: Once a Format Unit command is started it must be allowed to finish in order to calculate the total number of logical blocks (LBAs) at the finish. If the sector size has changed then there will be a corresponding change to the total number of LBAs. If a device stops a Format Unit before it completes then the device will report a "Corrupted Format" sense code, "03-31". Restart the format and allow it to finish to correct this error. --fastFormat [fast format mode] (SAS Only) (SBC4 required) You must use this option with the --formatUnit option to run a fast format. Available fast format modes: 0 - This is a standard format unit command. All logical blocks will be overwritten. This command will take a very long time. 1 - This is a fast format unit command keeping existing data in the physical sector. This option can be used to quickly change the the logical sector size between 5xx emulation and 4xxx native logical block sizes. Resulting LBA (sector) count is either /8 or *8 the current Read Capacity, depending on the direction of the conversion. The media may be readable, but data may be unspecified or may return errors on read access according to it's error processing algorithms. 2 - This is a fast format unit command that can change the logical sector size quickly. Media may or may not be read accessible until a write has been performed to the media. Example: --formatUnit 512 --fastFormat 1 --confirm I-... etc Example: --formatUnit 4096 --fastFormat 1 --confirm I-... etc Note: There is no electronic method to test if a SAS drive supports Fast Format. Refer to the drive product manual to determine if it supports the sub-command. --disableCertification (SAS Only) Use this option to disable the certification operation when performing a format unit operation. --disablePrimaryList (SAS Only) Use this option to disable using the primary defect list when performing a format unit operation. --discardGList (SAS Only) Use this option to discard the existing grown defect list when performing a format unit operation. Set Complete List bit, this is the name of the bit in the format unit command. It means that a complete defect list was provided in the parameter data. This tells the drive that whatever g-list it knows needs to be discarded and to use the one provided. Because we are not giving a g-list, this means it discards the g-list and will rediscover the defects during the format. --disableImmediateResponse (SAS Only) Use this option to disable the immediate response bit in a format unit operation. This means that the format is run in the foreground and doesn't report any status until it is complete and cannot be polled. Not commonly used. Note: This mode may take a long time to complete. --protectionIntervalExponent [exponent value] (SAS Only) Use this option to specify the protection interval exponent for pretoection types 2 & 3. This option is ignored for all other protection types. --protectionType [ 0 | 1 | 2 | 3 ] (SAS Only) Use this option to specify the protection type to format the medium with. Use with --formatUnit option. Protection type 0 = FMTPINFO=0 AND "Protection Field Usage"=0 Protection type 1 = FMTPINFO=2 AND "Protection Field Usage"=0 Protection type 2 = FMTPINFO=3 AND "Protection Field Usage"=0 Protection type 3 = FMTPINFO=3 AND "Protection Field Usage"=1 Note: Not all devices support protection types. --pattern [repeat:asciinospaces | random | increment:startValue | file:filename] Use this option with overwrite, sanitize, and format unit operations to write a specific pattern to a range of LBAs or the whole drive. * repeat - without spaces, enter an ASCII text string or a hexadecimal string terminated by a lower case "h". This pattern will be repeated until it fills the logical size of the LBA. i.e. helloword or FFFFFFFFh Note: A hexadecimal pattern will be interpreted as a 32bit unsigned integer. 4 hex bytes (8 characters) must be given for a hex value to be used. Ex: 1F037AC8h or 0000FFFFh * random - the entire logical sector size will be filled with random bytes. This pattern will be written to all LBAs in the desired range. * increment - enter the starting numerical value. Starting with this value, each byte will be written with 1 + previous value. * file - user supplied file name to use for a pattern. The file will be truncated or padded with zeros to the logical sector size. Note 1: Each file will be interpreted as a binary file. Note 2: A path must also be provided if the file is not in the local directory. Note 3: Sanitize Overwrite on SATA only supports a 32bit pattern. The file option will get truncated to a 32bit pattern for SATA products. --securityInitialize (SAS Only) Use this option to set the security initialize bit in the initialization pattern for a format unit command. SBC recommends migrating to sanitize to overwrite previously reallocated sectors. Note: Not all products support this option. --stopOnListError (SAS Only) Use this option to set the stop format bit in a format unit. If the device cannot locate or access an existing primary or grown defect list, the format will stop and return with an error. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error ================================== About the SCSI Format Unit Command ================================== (from the Seagate SCSI Commands Reference Manual, 100293068 Rev. H July 2014) http://www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals/100293068h.pdf The FORMAT UNIT command requests that the device server format the medium into application client accessible logical blocks as specified in the number of blocks and block length values received in the last mode parameter block descriptor in a MODE SELECT command. In addition, the device server may certify the medium and create control structures for the management of the medium and defects. The degree that the medium is altered by this command is vendor-specific. If a device server receives a FORMAT UNIT command before receiving a MODE SELECT command with a mode parameter block descriptor the device server shall use the number of blocks and block length at which the logical unit is currently formatted (i.e., no change is made to the number of blocks and the block length of the logical unit during the format operation). The simplest form of the FORMAT UNIT command (i.e., a FORMAT UNIT command with no parameter data) accomplishes medium formatting with little application client control over defect management. The device server implementation determines the degree of defect management that is to be performed. Additional forms of this command increase the application client's control over defect management. The application client may specify: a) defect list(s) to be used; b) defect locations; c) that logical unit certification be enabled; and d) exception handling in the event that defect lists are not accessible. While performing a format operation, the device server shall respond to commands attempting to enter into the task set except INQUIRY commands, REPORT LUNS commands, and REQUEST SENSE commands with CHECK CONDITION status with the sense key set to NOT READY and the additional sense code set to LOGICAL UNIT NOT READY, FORMAT IN PROGRESS. Handling of commands already in the task set is vendor-specific. If the device server receives an INQUIRY command, a REPORT LUNS commands, or a REQUEST SENSE command, then the device server shall process the command. The device server shall return data for an INQUIRY command based on the condition of the SCSI target device before beginning the FORMAT UNIT command (i.e., INQUIRY data shall not change until after successful completion of a format operation). The processing of commands in the task set when a FORMAT UNIT command is received is vendor specific. =============== Version History =============== v0.0.1 23-May-2017 1_14_3 libraries. SeaChest_FormatUnit initial beta test release. Branched from SeaChest_Erase v1.4.0. v0.0.2 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. v1.0.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v1.0.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v1.0.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v1.0.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v1.1.0 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. Added --setSectorSize moved from SeaChest_Configure. Name change from SeaChest_FormatUnit to SeaChest_Format. v1.1.0 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v1.2.0 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. Removed --defaultFormat since that is now the default behavior until other flags are added. v1.2.0 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v1.2.0 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v1.2.0 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. Removed immediate bit from SAS Fast Format. SeaChest_GenericTests.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest GenericTests for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_GenericTests Version: 1.7.2 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_GenericTests diagnostic software. One of the fundamental units of data on a storage device like a disk drive is the sector. In the case of a hard disk drive, a sector is a physical section of a circular magnetized track accessed by read write heads over the rotating media. The original hard drive sectors are 512 bytes each. If you take the number or logical sectors on a disk drive and multiply it by 512 you get the total capacity of the drive in bytes. Since the mid-1990's the term sector has been replaced by an acronym synonym LBA, which stands for Logical Block Address. All drives start with LBA 0 and count up to the full capacity of the drive. In the example above, the physical sector size is 512 bytes and logical sector size is also 512 bytes. Beginning around the year 2010 disk drives have been manufactured with a physical sector size of 4096 bytes but the disk drive delivers these bytes in 8 logical sectors of 512 bytes. The operating system expects 512 and is not concerned about the actual physical size. These drives are said to have 512 byte emulation. Beginning in 2014, some enterprise drives are manufactured with 4096 byte for both physical and logical block sizes. SeaChest_GenericTests reads LBA and reports errors when an LBA is unreadable. It may be possible to repair a problem when a generic read test fails due to failure to read a particular sector (LBA). You might consider the --repairOnFly, --repairAtEnd or (SeaChest_SMART) -dstAndClean command line options. See the sections below "Sector Repair Commands" and "Bad LBA (Sector) Found" for more information on this subject. NOTE: SeaChest_GenericTests may not be fully functional on non-Seagate drives. This User Guide file contains important information about SeaChest. Please read this entire file before using this software. SeaChest is a comprehensive, easy-to-use command line diagnostic tool that helps you quickly determine the health and status of your Seagate storage product. It includes several tests that will examine the physical media on your Seagate, Samsung or Maxtor disk drive. Tests and commands which are completely data safe will run on any disk drive. Tests and commands which change the drive (like firmware download or data erasure or setting the maximum capacity, etc) are limited to Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Be careful using SeaChest because some of the features, like the data erasure options, will cause data loss. Seagate is not responsible for lost user data. Usage ===== SeaChest_GenericTests [-d ] {arguments} {options} Examples ======== SeaChest_GenericTests --scan SeaChest_GenericTests -d /dev/sg2 -i SeaChest_GenericTests -d /dev/sg1 --deviceInfo Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --bufferTest This option will perform a test using the device's echo buffer. The write buffer and read buffer commands are used to send & receive different data patterns. The patterns are compared and interface CRC errors are also checked (when available). Test patterns performed are all 0's, all F's, all 5's, all A's, walking 1's, walking 0's, and random data patterns. At completion, a count of the number of errors will be displayed. --genericMode [ read | write (Seagate Only) | verify ] This options allows selection of the type of commands to use while performing a generic test. If this option is omitted then read is the default mode. Supported modes are: read - performs a generic test using read commands, data safe write - performs a generic test using write commands, any data on sectors written during the test will be lost. Seagate is not responsible for lost user data. --confirm acknowledgment command will be required. (Seagate Only) verify - performs a generic test using verify commands, data safe, sometimes faster than read commands. --shortGeneric This option will run a short generic read test on a specified device. A short generic read test has 3 components. A sequential read at the Outer Diameter (OD) of the drive for 1% the LBAs (sectors), then a sequential read at the Inner Diameter (ID) of the drive for 1% the LBAs, and lastly a random read of 5000 LBAs. This test will stop on the first read error that occurs. --twoMinuteGeneric This option will run a 2 minute generic read test on a specified device. There are 3 components to this test. A read at the Outer Diameter (OD) of the drive for 45 seconds, then a read at the Inner Diameter of the drive for 45 seconds, and lastly a random read test for 30 seconds. This test will stop on the first read error that occurs. --longGeneric This option will run a long generic read test on a specified device. A long generic read test sequentially reads every LBA on the device and gives a report of error LBAs at the end of the test, or when the error limit has been reached. Using the --stopOnError option will make this test stop on the first read error that occurs. The default error limit is 50 x number of logical sectors per physical sector. Example error limits are as follows: 512L/512P: error limit = 50 4096L/4096P: error limit = 50 512L/4096P: error limit = 400 (50 * 8) --userGenericStart [starting LBA | maxLBA] Use this option to specify the starting LBA number for a generic read test. The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. The --userGenericRange or timed (--hours, minutes, seconds) options must be used with this one in order to start the test. Use the --stopOnError repair flag and/or --errorLimit flags to further customize this test. --userGenericRange [LBA count] Use this option to specify the range for a generic read test. See the --userGenericStart help for additional information about using the User Generic Read tests. --diameterTest [O | M | I] Use this option to perform a generic read/write/verify test at the specified diameter of the drive. The different diameters can be combined or run individually. Use the time options to specify a time-based test or the --diameterTestRange option for a range-based test. If --diameterTestRange is omitted the default is a one minute test. O - outer diameter M - middle diameter I - inner diameter Ex1: --diameterTest OMI Ex2: --diameterTest O Ex3: --diameterTest MI --diameterTestRange [range] Use this option with the --diameterTest option to perform a range based test. If a range is specified without any units, it is assumed to be an LBA count. Valid units are KB, KiB, MB, MiB, GB, GiB, TB and TiB. Ex1: "--diameterTestRange 1234567" for an LBA count Ex2: "--diameterTestRange 2GB" for a 2GB range. --stopOnError Use this option to make a generic read test stop on the first error found. Please see the section below "Sector Repair Commands". --errorLimit [limit in number of LBAs] Use this option to specify a different error limit for a user generic or long generic read test. This must be a number of logical LBAs to have errors. If a drive has multiple logical sectors per physical sector, this number will be adjusted for you to reflect the drive architecture. --randomTest Use this option to start a random read test. This is a timed operation. Use the time options to control how long to run this test. The default time for this test is 1 minute. This test should be limited to 1 minute or less. Example: --randomTest --seconds 10 --butterflyTest Use this option to start a butterfly read test. A butterfly read test is a read test that moves back and forth between the OD and ID of the drive over and over again until the time has expired. This is a timed operation. Use the time options to control how long to run this test. The default time for this test is 1 minute. This test should be limited to 1 minute or less. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --hideLBACounter Use this option to supress the output from options that show LBA counters without turning off all output to the screen. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --hours [hours] Use this option to specify a time in hours for a timed operation to run. --minutes [minutes] Use this option to specify a time in minutes for a timed operation to run. --seconds [seconds] Use this option to specify a time in seconds for a timed operation to run. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Sector Repair Commands ====================== Data destructive commands will require additional command line arguments as confirmation of your understanding that data will be lost on the drive. Seagate is not responsible for lost user data. --confirm I-understand-this-command-will-erase ... etc --repairOnFly (Seagate Only) Use this option to repair any bad sectors found during a long or user generic read test as they are found. --repairAtEnd (Seagate Only) Use this option to repair any bad sectors found during a long or user generic read test at the end of the test. See the section below "Bad LBA (Sector) Found" for more information on this subject. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error ====================== Bad LBA (Sector) Found ====================== IMPORTANT: Please read and carefully consider all of the following information about your "Bad LBA (Logical Block Address, or Sector) Found" options. A bad sector is a small 512-byte area on the disk drive that is reporting errors and cannot be accessed properly. New bad sectors, sometimes called grown defects, are often caused by some kind of physical damage. If a file or folder uses this sector, then the file is already incomplete or corrupt because the bytes are not readable. **** NOTE **** The following information applies only to Seagate Technology, Maxtor, Samsung and LaCie brand disk drives: When SeaChest discovers a bad LBA (sector) through reading, it displays a count of the bad sectors. Sectors are often not in use. If a sector is in use, then that file is incomplete or corrupt. When a bad sector happens to align with a folder or directory listing structure, then the links to files and sub-folders it manages may be broken. You should carefully consider the importance of your data. While the sector is currently unreadable, if the file or folder is important to you then you may need professional recovery services to possibly reclaim the data. In this case, select to scan without trying to repair sectors on the drive. If you have decided that the file or folder is replaceable, already backed up or just not important to you, then you can tell SeaChest to attempt to attempt to repair the sector. See the Sector Repair Commands section above. By design, modern disk drives maintain spare sectors for reallocation purposes. Usually, sectors become difficult to read long before they become impossible to read. In this situation the actual data bytes in the sector are preserved and transferred to the new spare during a sector reallocation. Similarly, when a disk drive writes data and encounters a problem, the drive firmware retires the problem sector and activates a replacement before giving successful write status. If you give permission to attempt to repair a bad sector, then SeaChest will attempt to write a 512-byte pattern of zeros to that single error sector. Usually, this action will assist the disk drive firmware in managing the problem by retiring the problem sector and activating a spare in its place. If the attempted repair fails to reallocate the LBA to an available spare, then the test is a FAIL and the drive is bad. Note: Seagate Technology is not responsible for lost user data. =============== Version History =============== SeaChest_GenericTests is branched off from SeaChest Basics v1.0.4. v0.0.1 06-May-2015 Initial ReadTests release. Added Short and Long Generic sequential read tests. Added Random and Butterfly read tests. Added sector repair on Long and user defined generic read tests. v0.0.2 21-May-2015 Added --testUnitReady. Improved device discovery. v0.0.3 12-Aug-2015 Added --twoMinuteGeneric test. Improved device discovery. Corrections to verbose output. v0.0.3 16-Oct-2015 1_7_0 libraries. Added enhanced version information. Added -sat12byte to increase compatibility. Added --SATInfo to compare ATA vs SCSI identification differences. v1.0.0 02-May-2016 1_9_1 libraries. Added new verbosity level. Added --onlySeagate restriction. Added --modelMatch and --onlyFW filters. Added --genericMode. v1.0.1 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. v1.0.2 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. v1.1.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. v1.1.1 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. Added support for maxLBA keyword. v1.2.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. v1.2.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v1.3.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v1.3.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v1.3.1 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v1.3.1 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v1.5.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. Add --hideLBACounter, --diameterTest, --diameterTestRange. v1.5.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. --userGenericStart now able to use timed options. v1.5.1 15-May-2017 1_14_3 libraries. Fixed issue with --userGenericRange. v1.6.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. Bug fix user generic test start LBA gets reset when a defect is encountered. v1.7.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v1.7.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v1.7.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v1.7.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v1.7.1 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. v1.7.1 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v1.7.1 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v1.7.1 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v1.7.1 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v1.7.2 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. Added --bufferTest. SeaChest_Info.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_Info for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Info Version: 1.3.1 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_Info diagnostic software. Disk drives are constantly monitoring and analyzing their own performance, integrity and environment. The current state of this technology is the result of more than 20 years of innovative Seagate engineering focused on self-testing. With the backing of personal computer manufacturers, the disk drive industry adopted an analysis system in the 1990's called Self Monitoring Analysis and Reporting Technology, or SMART. The idea then and today is to predict a failure before it happens. Various attributes are being monitored and measured against certain threshold limits. If any one attribute exceeds a threshold then a general SATA SMART Status test will change from Pass to Fail. Many computers automatically check SATA SMART Status when they start up which is when most people become aware of the issue. If still under warranty, then SMART Status FAIL is a valid condition for warranty replacement. You can use SeaChest_Basics or SeaChest_SMART software with --smartCheck to test the SATA SMART status of the drive. When a SMART Status test has a FAIL it is extremely important that you back up all of your important data. SMART Status FAIL is a near-term prediction of drive failure and the drive usually functions like normal. Unfortunately, there is no way to specifically predict when the failure will occur, so your best response is to back up your data as soon as possible. SMART attributes are also supplemented by SATA Device Statistics Notification (DSN) feature set, including a set of Device Statistics Notifications log pages. This data provides further insight into a drive's performance and can be used to help measure its usage and potentially identify problem areas of concern. Likewise, SAS SCSI and FibreChannel interface products collect ongoing performance data and save this information in many different "vital data" and "log" pages. This data is similar and overlaps most of the same data collection categories as the SATA interface. SeaChest does not interpret attributes or thresholds. As a practical matter, the technology supporting SMART is constantly being improved. Each new design incorporates improvements that increase the accuracy of the SMART prediction. As a matter of policy, Seagate does not publish attributes and thresholds. Seagate Support does not help to analyze SMART attributes. This User Guide file contains important information about SeaChest_Info. Please read this entire file before using this software. SeaChest is a comprehensive, easy-to-use command line diagnostic tool that helps you quickly determine the health and status of your Seagate storage product. It includes several tests that will examine the physical media on your Seagate, Samsung or Maxtor disk drive. Tests and commands which are completely data safe will run on any disk drive. Tests and commands which change the drive (like firmware download or data erasure or setting the maximum capacity, etc) are limited to Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Be careful using SeaChest because some of the features, like the data erasure options, will cause data loss. Seagate is not responsible for lost user data. Usage ===== SeaChest_Info [-d ] {arguments} {options} Examples ======== SeaChest_Info --scan SeaChest_Info -d /dev/sg2 -i SeaChest_Info -d /dev/sg1 --smartAttributes raw Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --smartAttributes [raw | analyzed] The drive will display its list of supported SMART attributes. Some attributes names are commonly standard and most others are vendor unique. In either case, the attribute thresholds are always vendor unique. Most attributes are informational and not used to determine a warranty return. Use the --smartCheck command to determine if one of the warranty attributes has been tripped. Seagate Support does not help to analyze SMART attributes. --deviceStatistics Use this option to display the device statistics reported by the device. On SATA, this uses the Device Statistics log, and the notifications log (if DSN feature is supported) to display these statistics. On SAS, various log pages are read to collect a bunch of equivalent reported parameter information. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error =============== Version History =============== SeaChest_Info is branched off from SeaChest Basics v2.0.3. v0.0.1 02-Jun-2016 Initial SeaChest_Info using 1_9_4 libraries. v0.0.1 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. v0.0.1 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. v0.1.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. v0.1.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v1.0.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v1.0.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v1.0.1 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v1.0.1 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v1.1.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. v1.1.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. v1.2.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. v1.3.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v1.3.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v1.3.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v1.3.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v1.3.1 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. v1.3.1 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v1.3.1 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v1.3.1 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v1.3.1 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v1.3.1 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. SeaChest_PowerControl.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_PowerControl for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_PowerControl Version: 1.9.0 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_PowerControl diagnostic software. Optimization within the framework of a complex company data center requires dynamic technology. As storage capacity demands increase due to virtualization and growing volumes of data, managing power usage in an intelligent way is critical for reducing Total Cost of Ownership (TCO). There are, roughly, three general frameworks for disk drive power management. The earlier specification is part of Advanced Power Management (APM) which provided controls over many devices in a system, including disk drives. APM has since been replaced by a new framework called Extended Power Controls (EPC). Seagate's implementation of EPC began to phase in starting in 2010 and is named by the marketing term "PowerChoice". Seagate PowerChoice technology—specifically developed for enterprise environments—offers more energy efficiency and control over the amount of power hard drives consume. You may need to learn what capabilities for power management your drive offers, such as supporting APM or EPC, and maybe both. See the commands --showEPCSettings or --showAPMLevel(SATA Only) or --deviceInfo for various reports containing power settings and features supported. Most enterprise drives after 2016 only support EPC (PowerChoice). PowerChoice technology improves on earlier technology and allows for energy-saving during periods of command inactivity, allowing for greater power reductions. As idle time increases, the power-saving benefits also increase, and the drives will still quickly respond to commands even after long idling periods. In addition, PowerChoice technology supports four customizable modes to give businesses significantly more control of power usage by allowing for up to a 54% reduction in the amount of energy used. See the section below "How PowerChoice Technology Works" The third and newest drive power management framework exists for SATA drives and is named PowerBalance. Seagate's PowerBalance feature will adjust drive performance during random operations to reduce power consumption of the drive. This User Guide file contains important information about SeaChest_PowerControl. Please read this entire file before using this software. SeaChest is a comprehensive, easy-to-use command line diagnostic tool that helps you quickly determine the status of your Seagate storage product. Tests and commands which are completely data safe will run on any disk drive. Tests and commands which change the drive (like firmware download or data erasure or setting the maximum capacity, etc) are limited to Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Be careful using SeaChest because some of the features, like the data erasure options, will cause data loss. Seagate is not responsible for lost user data. Usage ===== SeaChest_PowerControl [-d ] {arguments} {options} Examples ======== SeaChest_PowerControl --scan SeaChest_PowerControl -d /dev/sg2 -i SeaChest_PowerControl -d /dev/sg1 --deviceInfo Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --checkPowerMode Get the current power mode of a drive. On SCSI devices, this will only work if the drive has transitioned from active state to another state. While the popular /dev/sd? device handles can be used in most cases, the --checkPowerMode command with /dev/sd causes the drive to wake up if it is in a reduced power state. Use /dev/sg device handles to avoid this effect. --spinDown Removes power to the disk drive motor with the Standby Immediate for SATA, or standby_z for SAS. Use this before moving a hard disk drive. The drive will spin back up if the operating system selects the drive. This means that an active drive will not stay spun down. In the case of SSD devices, the drive will flush the temporary caches and prepare for shutdown. --idle This command will transition a drive to the idle power state. This command may flush the cache before the transition to this state. This command is for non-EPC enabled drives. If the drive has the EPC feature enabled, it is recommended that the --transitionPower option be used instead. This option is compatible with EPC enabled drives as well, but offers less control over the transition. If the operating system selects this drive, it will transition it back to an active state. --idleUnload This command will transition a drive to the idle, heads unloaded, power state. This command may flush the cache before the transition to this state. This command is for non-EPC enabled drives. If the drive has the EPC feature enabled, it is recommended that the --transitionPower option be used instead. This option is compatible with EPC enabled drives as well, but offers less control over the transition. If the operating system selects this drive, it will transition it back to an active state. --standby This command will transition a drive to the standby power state. This command will flush the cache before the transition to this state. This command is for non-EPC enabled drives. If the drive has the EPC feature enabled, it is recommended that the --transitionPower option be used instead. This option is compatible with EPC enabled drives as well, but offers less control over the transition. On an HDD, this will cause the spindle motor to stop. If the operating system selects this drive, it will transition it back to an active state. --active This command will transition a drive to the active power state. This uses a ATA read-verify command to a random LBA, or a SCSI start-stop unit command. --showEPCSettings Use this option to show the current Extended Power Conditions (EPC) settings on the screen. Only drives supporting the EPC feature will show this data and only supported power conditions will be shown. --EPCfeature [enable | disable] Enables or disables Extended Power Conditions (EPC) support for devices. To disable EPC use --EPCfeature disable. Note that the EPC Feature Set is not supported on all devices. Use --deviceInfo option to see if EPC is supported. --changePower Use this option to enable or disable certain --powerMode and their timers. You can also use this option to restore default values to the drive. The available power modes are idle_a, idle_b, idle_c, standby_y (SAS only), standby_z, or all. "all" can only be used to enable/disable/default everything. It cannot be used to set a timer. Timer values are specified in milliseconds. Example restore: --changePower --defaultMode --powerMode idle_a Example enable: --changePower --enableMode --powerMode idle_a Example set timer: --changePower --enableMode --powerMode idle_a --modeTimer 5000 --enableMode Use this option with the --changePower mode option to enable a specific --powerMode. --modeTimer [timer value in milliseconds] Use this option to specify a timer value to use with the --changePower mode option. --disableMode Use this option with the --changePower mode option to disable a specific --powerMode. --defaultMode Use this option with the --changePower mode option to restore the default settings for a specific --powerMode. The "all" option is only valid for SAS interface drives. --transitionPower Use this option to actively change --powerMode. The available power modes are idle_a, idle_b, idle_c, standby_y (SAS only), standby_z, or active (SAS only). Note: Hard disk drives require a few seconds time to spin up or down. The drive will report the old power mode until it is fully established in the new mode. The SeaChest --spinDown command is similar. On SAS --spinDown is equivalent to Motor Stop and --transitionPower --powerMode active is equivalent to Motor Start. Example: --transitionPower --powerMode idle_a Example: --transitionPower --powerMode standby_y --powerMode [powermode] Use this option to specify a power mode. This should be used with the --changePower or --transitionPower options. Valid power modes (SAS and SATA): idle_a idle_b idle_c standby_y (SAS only) standby_z active (SAS only, used with --trasitionPower) all (used with --changePower enable, disable or default) Valid power modes (NVMe): 0 - 30 --showPowerConsumption (SAS Only) This option will show the power consumption rates supported by the device and the current power consumption rate of the device. Use a supported watt value with the --setPowerConsumption option to set the power consumption to that value. --setPowerConsumption [default | highest | intermediate | lowest | watt value] (SAS Only) (Seagate Only) This option will set the power consumption rate of the device to the value input. Options: default - sets the device back to default settings highest - sets the active level to "highest" intermediate - sets the active level to "intermediate" lowest - sets the active level to "lowest" watt value - sets the device to a nearest watt value less than or equal to the value entered. Power consumption watt values are listed with the --showPowerConsumption command line option. --showAPMLevel (SATA Only) Use this option to show the current Advanced Power Management (APM) level of a device --setAPMLevel [1 - 254] (SATA Only) Use this option to set the APM level of a device. Valid values are between 1 and 254. 1 = Minimum power consumption with standby mode 2-127 = Intermediate power management with standby mode 128 = Minimum power consumption without standby mode 129-253 = Intermediate power management without standby mode 254 = Maximum Performance --disableAPM (SATA Only) Use this option to disable the current Advanced Power Management (APM) level of a device --powerBalanceFeature [ info | enable | disable ] (SATA Only)(Seagate Only) Use this option to see the state of the Seagate PowerBalance feature or to change its state. Seagate's PowerBalance feature will adjust drive performance during random operations to reduce power consumption of the drive. info - will display the state of the PowerBalance feature on the screen enable - use this to enable PowerBalance disable - use this to disable PowerBalance Note: SAS products should use the --setPowerConsumption option instead. --sataDAPSfeature [info | enable | disable ] (SATA Only) Use this option to enable or disable the SATA Device Automatic Partial To Slumber Transitions (DAPS) feature. Use the "info" option to see the current state of the DIPM feature on the device. The use of this feature requires that the DIPM feature is enabled. NOTE: Please ensure that the host adapter/controller/driver can handle this before enabling it, otherwise the drive link may go down and the device will not be able to communicate. --sataDIPMfeature [info | enable | disable ] (SATA Only) Use this option to enable or disable the SATA Device Initiated Power Management (DIPM) feature. Use the "info" option to see the current state of the DIPM feature on the device. NOTE: Please ensure that the host adapter/controller/driver can handle this before enabling it, otherwise the drive link may go down and the device will not be able to communicate. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error ================================ How PowerChoice Technology Works ================================ See the Seagate technology paper "Seagate® PowerChoice™ Technology Provides Unprecedented Hard Drive Power Savings and Flexibility" http://www.seagate.com/files/docs/pdf/en-GB/whitepaper/tp608-powerchoice-tech-provides-gb.pdf Each individual power condition builds on the capabilities of the previous higher power condition in order to save incrementally more power. The specific energy-saving steps implemented for each power condition are as follows: Idle_A - Disables most of the servo system, reduces processor and channel power consumption - Discs rotating at full speed (7,200 RPM) Idle_B - Disables most of the servo system, reduces processor and channel power consumption - Heads are unloaded to drive ramp. - Discs rotating at full speed (7,200 RPM) Idle_C/Standby_Y (SAS Only) - Disables most of the servo system, reduces processor and channel power consumption - Heads are unloaded to drive ramp. - Drive speed reduced to a lower RPM (reduced RPM) Standby_Z - Heads are unloaded to drive ramp. - Drive motor is spun down. - Drive still responds to non-media access host commands. Flexibility is a key feature of PowerChoice technology, enabling commands from the host side to customize power condition settings and direct a drive into or out of power conditions as required. Two different options are available for the user to modify PowerChoice technology settings, depending on the interface used: SAS Host-definable timers via mode pages Immediate host-commanded power transitions via Start/Stop Unit (SSU) command SATA Host-definable timers via Set Features commands Immediate host-commanded power transitions via Set Features commands =============== Version History =============== SeaChest_PowerChoice is branched off from SeaChest Basics v1.0.3. v0.0.1 14-Apr-2015 Intitial PowerChoice release. v0.0.2 12-Aug-2015 Added --testUnitReady. Improved device discovery. Corrections to verbose output. v0.0.3 28-Aug-2015 Improved device compatibility. v0.0.4 22-Sep-2015 Added --showPowerConsumption and --setPowerConsumption, both are SAS only. v0.0.4 16-Oct-2015 1_7_0 libraries. Added enhanced version information. Added -sat12byte to increase compatibility. Added --SATInfo to compare ATA vs SCSI identification differences. v0.0.6 26-Jan-2016 1_8_1 libraries. Added --EPCfeature for SATA. v1.0.0 02-May-2016 1_9_1 libraries. Added new verbosity level. Added --onlySeagate restriction. Added --modelMatch and --onlyFW filters. v1.0.2 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. Fixed --checkPowerMode always returning "active" on SAT interfaces (SATA over SAS). Fixed --transitionPower always failing (It was trying an incompatible value). v1.0.3 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. v1.2.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. Added --showEPCSettings, --showAPMLevel, and --setAPMLevel. v1.2.1 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. Added --disableAPM. v1.3.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. v1.3.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v1.4.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v1.4.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v1.4.1 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v1.4.2 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v1.5.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. EPCfeature now supports SAS. v1.5.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. v1.6.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. v1.7.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v1.7.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v1.7.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v1.8.1 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. Added --powerBalanceFeature, --sataDAPSfeature and --sataDIPMfeature, all of which are SATA only. v1.8.2 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. Name change from SeaChest_PowerChoice to SeaChest_PowerControl. v1.8.2 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v1.8.2 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v1.8.2 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v1.8.2 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v1.9.0 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. Added --idle (Immediate), --idleUnload, --standby (Immediate), --active. SeaChest_Security.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_Security for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Security Version: 1.6.1 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_Security diagnostic software. SeaChest_Security is a comprehensive command line tool that can be used to configure, change or set various properties on Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Some commands may cause existing data on the drive to become inaccessible. Some commands may affect the performance of the drive. References are made to TCG (Trusted Computing Group), a standards organization formed to promote open standards for hardware-enabled security technologies. You can read about TCG at http://www.trustedcomputinggroup.org/ and https://en.wikipedia.org/wiki/Trusted_Computing_Group. NOTE: SeaChest_Security may not be fully functional on non-Seagate drives. This User Guide file contains important information about SeaChest_Security. Please read this entire file before using this software. Some of the erase options will require you to enable ATA Trusted Trusted Computing Group (TCG) commands support for your Linux operating system. Please see the section below "Enabling TCG Commands In Linux" for information about this requirement. If this is your drive, you should always keep a current backup of your important data. Be very careful using SeaChest_Security. Power failure during a configuration change may cause data loss. Seagate is not responsible for lost user data. Usage ===== SeaChest_Security [-d ] {arguments} {options} Examples ======== SeaChest_Security --scan SeaChest_Security -d /dev/sg2 --downloadFW fwfilename Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --displayLBA [LBA | maxLBA] This option will read and display the contents of the specified LBA to the screen. The display format is hexadecimal with an ASCII translation on the side (when available). The predefined text string "maxLBA" (without quotes) may be entered to indicate the last sector on the drive instead of the specific LBA number. --tcgInfo This option shows information about a TCG device. Displays drive 'Use State'. --fwdlPort [lock | unlock] (Seagate Only) This option will set the logical firmware download port on a TCG drive to the requested state. Use the --sid option to provide SID for this operation. If SID is not provided, MSID will be used. lock - lock the port and prevent its use unlock - unlock the port to allow its use --udsPort [lock | unlock] (Seagate Only) This option will set the logical UDS port on a TCG drive to the requested state. Use the --sid option to provide SID for this operation. If SID is not provided, MSID will be used. lock - lock the port and prevent its use unlock - unlock the port to allow its use --ieee1667Port [lock | unlock] (Seagate Only) This option will set the logical IEEE 1667 port on a TCG drive to the requested state. Use the --sid option to provide SID for this operation. If SID is not provided, MSID will be used. lock - lock the port and prevent its use unlock - unlock the port to allow its use --sid [yourTCGpassword] This option can be used to specify the value of SID. This may be required in order to perform certain TCG operations. If this is not provided, MSID will be used. As a practical matter, if you have implemented TCG boot authentication software tools, then the actual password may be completely different from the drive's point of view. In other words, software and BIOS tools commonly run hash algorithms or use keyboard scan codes as added security instead of plain ASCII characters when saving drive passwords. You may need to cryptographically erase all data on the drive with --revertSP to clear the existing SID before the lock|unlock options can be set before installing the operating system and user data. You should consult you TCG software vendor for instruction and advice about disabling or removing the SID before erasing your data. If the SID or MSID are not set (such as a new drive) then the various lock|unlock commands won't need the --sid option. --disableDataLocking (Seagate Only) Use this option to disable data locking on a TCG drive. This option is only available when the drive has not had SID changed (taken ownership). This prevents locking the drive when it isn't being used with security software. Once this operation is completed, you will not be able to authenticate to SID as MSID. This can be undone with a revertSP Note: Not all Enterprise TCG drives support this feature or they may need a firmware update to enable this capability --showLockedRegions Use this option to show the locked ranges or bands on TCG Opal or TCG Enterprise SED drives. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Data Destructive Commands (Seagate Only) ======================================== Data destructive commands will require additional command line arguments as confirmation of your understanding that data will be lost on the drive. Seagate is not responsible for lost user data. --confirm I-understand-this-command-will-erase ... etc --revert This command is very fast at less than one (1) second. It changes the internal encryption keys that are used for user data causing all previous data to be useless. This operation performs an Opal SSC specification Revert on a Self Encrypting Drive (SED). This operation is only available on Seagate TCG Opal drives. Seagate SED drives are marked on the label with the words "Seagate Secure". No all Seagate SED drives are TCG Opal compliant. In order to complete this operation, the lockingSP must not be activated, as this option will activate it in order to perform the revert. The value of SID, must also be the value of MSID as this operation must authenticate as SID using the value of MSID. Upon completion, the drive will be "like new" with all user data being cryptographically erased and all other settings set to factory defaults. If this operation fails, use --revertSP instead. Note: See the section below "Enabling TCG Commands In Linux". --revertSP DrivePSID This command is very fast at less than one (1) second. It changes the internal encryption keys that are used for user data causing all previous data to be useless. This operation performs an Opal SSC specification revertSP on a Self Encrypting Drive (SED). This operation is available on all Seagate SED drives which are marked on the label with the words "Seagate Secure". The PSID (Physical Security IDentification number) is a 32-digit number & capital letter sequence printed on the label. There is no electronic query for this number, therefore the drive must be removed in order to read the PSID number. Many drives have a PSID code on the label but are NOT marked as "Seagate Secure"; these drives do not support revertSP cryptographic erase. Enter the PSID without spaces. FIVE attempts are allowed before a power cycle is required. It can also be read by 2D barcode reader. Upon completion, the drive will be "like new" with all user data being cryptographically erased and all other settings set to factory defaults. Example: --revertSP 123ALL32DIGITS123ALL32DIGITS123A Note: See the section below "Enabling TCG Commands In Linux". Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error ============================== Enabling TCG Commands In Linux ============================== Abstract -------- The SeaChest_Erase --revert and --revertSP commands require specific support be enabled in the Linux kernel. This document describes the process to enable support for sending ATA Trusted Trusted Computing Group (TCG) commands in Linux. The focus is on how to do this through Ubuntu Linux 14.04LTS, however, the process should apply to other Linux’s as well although others may vary slightly. Modifying The GRUB Configuration File (Ubuntu example used) ----------------------------------------------------------- In order to make the change to allow TCG commands persist across reboots, you must modify the kernel boot parameters. In Ubuntu, this is accomplished by modifying the GRUB 2 configuration file. This section references the Grub2 configuration documentation from the Ubuntu Community: https://help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2 Follow these steps to perform this modification in Ubuntu (other Linux’s may be similar). 1. You must modify the file /etc/default/grub. You can do this by running "sudo gedit /etc/default/grub" 2. Once this file is open in the editor of your choice, add "libata.allow_tpm=1" to the line that begins with "GRUB_CMDLINE_LINUX_DEFAULT" (or which ever line in grub is the one you use to boot your kernel, but this is the default). 3. Close your editor 4. Run the command "sudo update-grub" to apply your changes to the grub boot configuration (the file modified in these steps is a config file for the config file). 5. Restart your computer to make this active Temporarily Enabling TCG Commands In Linux ------------------------------------------ You can temporarily enable TCG commands without modifying the kernel boot parameters. This can be accomplished by modifying the libata parameters file. Below is a sample script that can be run to do this. Sample Script: cd /sys/module/libata/parameters sudo chmod 644 allow_tpm echo 1 | sudo dd of=./allow_tpm sudo chmod 444 allow_tpm Tiny Core - Enabling TCG Commands ------------------------------------------ Follow these steps to enable TCG commands on a Tiny Core bootable USB flash drive. 1. Leave the USB flash drive in after you run the Windows-based USB boot maker tool. 2. Using a (Windows) text editor go to USB:/boot/syslinux.cfg and in there, add libata.allow_tpm=1 on the append line with the other kernel boot parameters. 3. Using a (Windows) text editor go to USB:/EFI/boot/refind.conf and add libata.allow_tpm=1 on the options line with the other kernel boot parameters =============== Version History =============== v1.0.0 02-May-2016 1_9_1 libraries. SeaChest_Security Linux, initial beta test release. Branched from SeaChest_Basics v2.0.0. Added --tcgInfo, --fwdlPort, --udsPort, --ieee1667Port, --sid, --disableDataLocking v1.0.1 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. v1.0.2 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. v1.1.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. Added --displayLBA. v1.1.0 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. v1.2.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. v1.2.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v1.3.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v1.3.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v1.3.1 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v1.3.1 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v1.4.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. v1.4.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. --tcgInfo now reports Use State. v1.5.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. Added "Data Access" to --tcgInfo. Added --showLockedRegions. v1.6.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v1.6.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v1.6.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v1.6.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v1.6.1 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. v1.6.1 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v1.6.1 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v1.6.1 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. v1.6.1 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v1.6.1 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. SeaChest_SMART.Lin.txt Revision: 08-May-2018 =============================================================================== SeaChest_SMART for Linux - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_SMART Version: 1.9.1 Build Date: May 07 2018 =============================================================================== Welcome to Seagate's SeaChest_SMART diagnostic software. Disk drives are constantly monitoring and analyzing their own performance, integrity and environment. The current state of this technology is the result of more than 20 years of innovative Seagate engineering focused on self-testing. With the backing of personal computer manufacturers, the disk drive industry adopted an analysis system in the 1990's called Self Monitoring Analysis and Reporting Technology, or SMART. The idea then and today is to predict a failure before it happens. Various attributes are being monitored and measured against certain threshold limits. If any one attribute exceeds a threshold then a general SATA SMART Status test will change from Pass to Fail. Many computers automatically check SMART Status when they start up which is when most people become aware of the issue. If still under warranty, then SMART Status FAIL is a valid condition for warranty replacement. You can use SeaChest_SMART software with --smartCheck to test the SATA SMART status of the drive. When a SMART Status test has a FAIL it is extremely important that you back up all of your important data. SMART Status FAIL is a near-term prediction of drive failure and the drive usually functions like normal. Unfortunately, there is no way to specifically predict when the failure will occur, so your best response is to back up your data as soon as possible. SeaChest does not interpret attributes or thresholds. As a practical matter, the technology supporting SMART is constantly being improved. Each new design incorporates improvements that increase the accuracy of the SMART prediction. As a matter of policy, Seagate does not publish attributes and thresholds. Seagate Support does not help to analyze SMART attributes. In addition, the SMART command set includes short and long Drive Self Test (Offline Immediate). Seagate drives employ a background media scan (BGMS) during idle activity times. The BGMS is a sequential read of sectors from the beginning to the end the of the drive. If BGMS is interrupted it later restarts where it left off. BGMS has no effect on performance. BGMS collects information about "suspicious" sectors. When the Short DST is run the first step is a review of these "suspicious" sectors. It is possible for Short DST to fail quickly if one of these BGMS sectors is unreadable. It may be possible to repair a problem when Short DST fails due to failure to read a particular sector (LBA). You might consider the --seagateClean or -dstAndClean command line options. See the sections below "Sector Repair Commands" and "Bad LBA (Sector) Found" for more information on this subject. If you wish to test the drive for physical integrity, please use Short Drive Self Test (--shortDST). Because the BGMS has continuously collected information on the entire drive, Short DST is effectively testing the entire drive. This User Guide file contains important information about SeaChest_SMART. Please read this entire file before using this software. SeaChest is a comprehensive, easy-to-use command line diagnostic tool that helps you quickly determine the health and status of your Seagate storage product. It includes several tests that will examine the physical media on your Seagate, Samsung or Maxtor disk drive. Tests and commands which are completely data safe will run on any disk drive. Tests and commands which change the drive (like firmware download or data erasure or setting the maximum capacity, etc) are limited to Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Be careful using SeaChest because some of the features, like the data erasure options, will cause data loss. Seagate is not responsible for lost user data. Usage ===== SeaChest_SMART [-d ] {arguments} {options} Examples ======== SeaChest_SMART --scan SeaChest_SMART -d /dev/sg2 -i SeaChest_SMART -d /dev/sg1 --shortDST --poll Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --poll Use this option to cause another operation to poll for progress until it has completed. This argument does not return to the command prompt and prints ongoing completion percentages (%) and the final test result. Full drive procedures will take a very long time. Used with --shortDST and --longDST. --shortDST Execute a short diagnostic drive self test. This test can take up to 2 minutes to complete. Use with the --poll argument to let SeaChest check for progress and print it to the screen until complete. If the --poll argument is not used then the test begins and immediately returns to the command prompt. Use the --progress DST command to check on the completion percentage (%) and test result. The poll argument does not return to the command prompt and prints ongoing completion percentages (%) until the final test result. Note: Use --progress DST or --showDSTLog to see details about the last DST run on the drive. --conveyanceDST Execute a conveyance diagnostic drive self test. A conveyance test can be used to check if a drive has incurred handling damage. This test can take up to 2 minutes to complete. Use the --poll argument to make this operation poll for progress until complete. Use the --progress dst command to check on the completion percentage (%) and test result. --longDST Execute a long diagnostic drive self test. This test takes hours to finish. A 2TB drive may take six (6) hours to complete. The start argument begins the test and immediately returns to the command prompt. Use the --progress DST command to check on the completion percentage (%) and test result. The poll argument does not return to the command prompt and prints ongoing completion percentages (%) and the final test result. This test stops on the first error. Use --abortDST to manually stop the test. SAS drives give status in 1% increments. SATA drives give status in 10% increments which means more than an hour may elapse between updates on a SATA drive >2TB. Because of the extreme length of time required to run the Long DST command on a large disk drive an additional command line argument is required as confirmation of your understanding that the test will take a very long time to complete. Note: The SeaChest --deviceInfo command output has a line similar to this example: 'Long Drive Self Test Time: 1 hour 38 minutes'. If the --longDST poll option is running and you want to abort the test then you will need to open a second terminal window and run the --abortDST command. Otherwise, it is safe to restart the system while long DST is running which also ends the test. --progress [DST] Get the progress for a test that was started quietly (default). Specify a test with: DST to check progress. The progress counts up from 0% to 100%. --abortDST Abort a diagnostic Drive Self Test that is in progress. --captive or --foreground Use this option to run a DST operation in captive/foreground mode. This mode may allow a device to test more of itself and may be slightly faster than offline/background mode since it does not need to service additional command during the test. When using this mode, the utility must wait the entire time for the DST to complete and progress cannot be indicated during this time. --showDSTLog This option will show the entries in the DST log. Up to 21 entries may be shown (pending drive support) and will be shown with the most recent entry first. --smartInfo (SATA Only) This option will show SMART information reported by a given device. --smartFeature [enable | disable] (SATA Only) (Seagate Only) Use this option to enable or disable the SMART feature on a SATA drive. When disabled, the entire SMART feature set, minus the enable command, is turned off. This includes all SMART logging, attributes, SMART trip ability, and DST ability. Note: This command is declared obsolete in ACS4. --smartCheck Perform a SMART check on a device to see if any internal thresholds have been tripped or if the drive is still operating within specification. --smartAttributes [raw | analyzed] The drive will display its list of supported SMART attributes. Some attributes names are commonly standard and most others are vendor unique. In either case, the attribute thresholds are always vendor unique. Most attributes are informational and not used to determine a warranty return. Use the --smartCheck command to determine if one of the warranty attributes has been tripped. Seagate Support does not help to analyze SMART attributes. --smartAttributeAutosave [enable | disable] (SATA Only) (Seagate Only) Use this option to enable or disable SMART attribute auto-save on an ATA drive. This is the drive's ability to update the attributes on it's own without the "update attributes" command. By default, this is enabled and on new drives may just be a no-op. Note: This command is declared obsolete in ACS4. --smartAutoOffline [enable | disable] (SATA Only) (Seagate Only) Use this option to enable or disable SMART auto-offline feature on an ATA drive. This command was never officially adopted by ATA committee, but was in the original SMART spec from Compaq/HP. This allows the drive to do an offline scan on it's own. This is not quite a background media scan (BGMS described above), nor is it the same as a DST. It's a drive scan that will go check itself for issues and update attributes. Uncommon and not supported on most drives. --idd [short | long] (Seagate Only) Start an In Drive Diagnostic (IDD) test on a Seagate SATA drive. Not all tests are supported by all products. If a selected test is not supported, the utility will return an error code meaning "not supported". short: Reset and Recalibration test. Be careful running this test on the boot device. long: Test G list and P list for readability. repair: Reset and Recalibration test and test G list and P list and attempt to repair or reallocate bad sectors. Add --poll to the command line to see periodic status during the test. Otherwise, use --progress DST after 60 seconds to allow the drive time to spin back up after the recalibration test. Example: --idd short --poll --abortIDD (Seagate Only) Abort a Seagate In Drive Diagnostic (IDD) that is in progress. --setMRIE [ default | 0 - 6 ] (SAS Only) (Seagate Only) Use this option to change the MRIE mode on the informational exceptions mode page. default - set to the drive default 0 - Disable exception reporting 1 - Asynchronous reporting (obsolete) 2 - Establish unit attention condition 3 - Conditionally generate recovered error 4 - Unconditionally generate recovered error 5 - Generate no sense 6 - Report on request --errorLimit [limit in number of LBAs] Use this option to specify a different error limit for DST and Clean. This must be a number of logical LBAs to have errors. If a drive has multiple logical sectors per physical sector, this number will be adjusted for you to reflect the drive architecture. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Sector Repair Commands ====================== Data destructive commands will require additional command line arguments as confirmation of your understanding that data will be lost on the drive. Seagate is not responsible for lost user data. --confirm I-understand-this-command-may-erase ... etc --dstAndClean Runs DST, then checks for an error and repairs the error if possible. This continues until all errors reported by DST are fixed, or when the error limit is reached. The default limit is 50 errors. See --errorLimit to change limit. --seagateClean (Seagate Only) Checks logs for errors and repairs them if possible. After repairing all errors, each error is read around to check for other errors to repair. Finally, a DST & Clean operation is run to verify the drive is good and no more errors exist. Test will stop when the error limit is reached. The default limit is 50 errors. See --errorLimit to change limit. See the section below "Bad LBA (Sector) Found" for more information on this subject. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error ====================== Bad LBA (Sector) Found ====================== IMPORTANT: Please read and carefully consider all of the following information about your "Bad LBA (Logical Block Address, or Sector) Found" options. A bad sector is a small 512-byte area on the disk drive that is reporting errors and cannot be accessed properly. New bad sectors, sometimes called grown defects, are often caused by some kind of physical damage. If a file or folder uses this sector, then the file is already incomplete or corrupt because the bytes are not readable. **** NOTE **** The following information applies only to Seagate Technology, Maxtor, Samsung and LaCie brand disk drives: When SeaChest discovers a bad LBA (sector) through reading, it displays a count of the bad sectors. Sectors are often not in use. If a sector is in use, then that file is incomplete or corrupt. When a bad sector happens to align with a folder or directory listing structure, then the links to files and sub-folders it manages may be broken. You should carefully consider the importance of your data. While the sector is currently unreadable, if the file or folder is important to you then you may need professional recovery services to possibly reclaim the data. In this case, select to scan without trying to repair sectors on the drive. If you have decided that the file or folder is replaceable, already backed up or just not important to you, then you can tell SeaChest to attempt to attempt to repair the sector. See the Sector Repair Commands section above. By design, modern disk drives maintain spare sectors for reallocation purposes. Usually, sectors become difficult to read long before they become impossible to read. In this situation the actual data bytes in the sector are preserved and transferred to the new spare during a sector reallocation. Similarly, when a disk drive writes data and encounters a problem, the drive firmware retires the problem sector and activates a replacement before giving successful write status. If you give permission to attempt to repair a bad sector, then SeaChest will attempt to write a 512-byte pattern of zeros to that single error sector. Usually, this action will assist the disk drive firmware in managing the problem by retiring the problem sector and activating a spare in its place. If the attempted repair fails to reallocate the LBA to an available spare, then the test is a FAIL and the drive is bad. Note: Seagate Technology is not responsible for lost user data. =============== Version History =============== SeaChest_SMART is branched off from SeaChest Basics v1.0.4. v0.0.1 14-Apr-2015 Initial SMART release. Added --poll. v0.0.2 12-Aug-2015 Added --testUnitReady. Improved device discovery. Corrections to verbose output. v0.0.2 16-Oct-2015 1_7_0 libraries. Added enhanced version information. Added -sat12byte to increase compatibility. Added --SATInfo to compare ATA vs SCSI identification differences. v1.0.0 02-May-2016 1_9_1 libraries. Added new verbosity level. Added --onlySeagate restriction. Added --modelMatch and --onlyFW filters. --smartAttributes update, added --errorLimit, --dstAndClean v1.0.2 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. Fixed missing Long DST confirmation. v1.0.3 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. v1.2.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. Added --smartInfo, --showDSTLog, --smartAutoOffline, --conveyanceDST, --smartAttributeAutosave, and --smartFeature v1.2.1 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. Additional checks when SMART is disabled. v1.3.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. v1.3.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v1.4.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v1.4.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v1.4.1 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v1.4.1 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v1.5.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. v1.5.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. v1.6.0 02-May-2017 1_14_3 libraries. Adds --seagateClean. v1.6.1 15-May-2017 Refinements to --seagateClean. Fixed an exit code for unknown options v1.7.0 01-Jun-2017 Adds --seagateClean. v1.8.0 14-Jun-2017 1_15_0 libraries adds bug fix malformed command line should exit with code = 1; added detection of parallel ATA and SCSI speeds; temperature data on ATA now uses the values from the SCT status log or device statistics log. Adds the child drive matching options --childModelMatch, --childOnlyFW, and --childNewFW. --idd now supports SAS. --idd [short | long | repair] replaces '70 | 71 | 72' syntax. --abortIDD added. --setMRIE added. v1.9.0 14-Jul-2017 1_16_1 libraries adds support for ATA drives that have the Sense Data Reporting feature enabled, changes to how we interpret the completion status from the drive, new Sense Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S, note the capital S) aggressive system scan. v1.9.0 27-Jul-2017 1_16_2 libraries enhances Seagate brand detection. v1.9.0 19-Sep-2017 1_16_4 libraries fixes SCSI "--progress format", added reading remanufacture time for SAS when the drive reports a time, fixed SAS --abortDST. v1.9.0 25-Sep-2017 1_17_0 libraries adds improved SATA device discovery on SAS adapters, added NVMe read, write & Flush commands. v1.9.1 10-Oct-2017 1_17_1 libraries adds Better handling of NVMe as a SCSI device, SAT library strings, and fixes to Read-Buffer error history (ISL). Updated copyright notice, invalid command line options now only display an error instead of long help. Added showing the SMART trip failure reason when possible. v1.9.1 12-Oct-2017 1_17_3 libraries improves Fast-Format compatibility on SAS. v1.9.1 26-Oct-2017 1_17_5 libraries fixes SATA drive discovery behind HBAs that don't show as SATA and don't support the SAT VPD page; added Automatic fallback to 12byte CDBs during initial device discovery; integrated fixes for SAS firmware download and fixes for SAS LongDST time calculation; added detection of TCG Pyrite and Opalite drives. v1.9.1 31-Oct-2017 1_17_6 libraries adds ATA Security compatibility with SATL on some LSI adapters, corrects firmware download issue under Windows 10 API. Added --captive or --foreground. v1.9.1 02-Nov-2017 1_17_7 libraries fixes Long DST time on SCSI/SAS products. v1.9.1 19-Apr-2018 1_18_0 libraries improves device detection of CD-ROM and USB flash drives, support for early 90's PATA drives that don't support LBA mode, bug fix where the last digit of the SCSI Unit Serial Number was being dropped, additional logic for deferred download completion status. --scan --onlySeagate for just Seagate drives in a large system, Long Drive Self Test Time in the -i output, write protect status has been added for SCSI and NVMe in the -i output, IDD enhancements for SAS, IDD enhancements to allow captive mode on SATA, added USB Hacks to better support some odd-ball USB devices and prevent crashes and improve performance for some operations on them by issuing test unit ready commands when something fails during device discovery, automatic fall back to SAT 10 byte commands during device discovery to help work with some USB devices, some Legacy SCSI support enhancements (partially from USB hacks development), enhanced SD to SG mapping in Linux. Sections below are common to all tools: Utility arguments ================= -s, --scan Scan the system and list all storage devices with logical /dev/sg? assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. -S, --Scan (note the capital letter S) This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low-level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this diagnostic option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Windows only: ignoreCSMI - do not scan for any CSMI devices allowDuplicates - allow drives with both CSMI and PD handles to show up multiple times in the list. Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001. The option --childModelMatch may be used to match drives in USB enclosures. Note: See the section below 'Tool Usage Hints' for information about defining multiple device handles. --onlyFW [firmware revision] Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match. The option --childOnlyFW may be used to match drives in USB enclosures. --hours [hours] Use this option to specify a time in hours for a timed operation to run. --minutes [minutes] Use this option to specify a time in minutes for a timed operation to run. --seconds [seconds] Use this option to specify a time in seconds for a timed operation to run. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. --csmiIgnorePort (Windows only) Use this option to force setting the "ignore Port" flag for the port identifier in a CSMI passthrough command. This option can be combined with --csmiUsePort which will force the passthrough to rely on only the SAS address. This flag is intended to help troubleshoot or improve CSMI compatibility on systems that are otherwise not functional. --csmiUsePort (Windows only) Use this option to force setting the "Use Port" flag for the PHY identifier in a CSMI passthrough command. This option can be combined with --csmiIgnorePort which will force the passthrough to rely on only the SAS address. This flag is intended to help troubleshoot or improve CSMI compatibility on systems that are otherwise not functional. --csmiVerbose (Windows only) Use this option to show some verbose output when running the tool on a CSMI handle. The debugging information shown will be specific to the CSMI passthrough mechanism and may be useful when troubleshooting system/driver compatibility issues. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error ================ Tool Usage Hints - Linux ================ See Sample Output examples below. First, run the SeaChest -s option to determine what /dev/sg? device handle assignment lines up to your disk drive. This option will also show you other details about the drive including the current firmware revision. Like this: Vendor Handle Model Number Serial Number FwRev ATA /dev/sg0 ST94813AS 3AA043KP 3.03 SEAGATE /dev/sg1 ST1000NM0011 ZAA15VAS SN03 You can use SeaChest -s --onlySeagate to limit the display to just Seagate. All utility arguments will require you to identify the specific drive by providing the sg device handle (-d, --device). For example, SeaChest_Basics -d /dev/sg1 --shortDST --poll You may combine multiple tests with a single command line. For example, SeaChest_Basics -d /dev/sg0 -i --smartCheck runs both identify and SMART. Multiple device handles can be given by adding -d /dev/sg# for each additional handle. Devices are processed in sequential order. For example, SeaChest_Basics -d /dev/sg0 -d /dev/sg3 -i runs identify on these two devices. Caution: All device handles may be specified. However, great care should be taken to fully anticipate the consequences of running a command on all storage devices in a system. For example, a command to erase data on all drives could be catastrophic or exactly what you want. The shortcut to select all devices is -d all. Seagate is not responsible for lost user data. Along with the designation for all devices, you can narrow the tasks to specific types of drives by using the --onlySeagate, --modelMatch and --onlyFW filters. All Windows version tools support finding CSMI devices and talking to them like you would a normal device. The scan output will show all drives it detects ONCE. CSMI device handles have a structure like SCSI0:1. If a drive has both a PD? and SCSI?:? handle, then SeaChest will show the PD handle instead of the SCSI (CSMI) handle. When drives are in a RAID, the PD device handle is usually not available and the CSMI handle may provide an alternate way to talk to the drive. Just because a device has a CSMI handle doesn't mean it is part of a RAID. If you want to see both handles, add --scanFlags allowDuplicates to the command line. If you don't want to see any CSMI devices, add --scanFlags ignoreCSMI to the command line. SeaChest_Info -d SCSI?:? --csmiInfo is useful when troubleshooting CSMI device handles questions. Tests which alter the firmware or erase user data on the drive are limited to Seagate-only products which include Seagate, Maxtor, Samsung and LaCie. Tests which take a very long time to complete or erase all user data on the drive will require a longer command line argument than indicated in the --help output to the screen. This approach is taken to eliminate the possibility of accidental data loss or the commitment of long test times. The longer command arguments are similar to -I-understand-this-command-will-take-a-long-time or -I-understand-this-command-will-erase-all-data. Advanced SAS installations may use dual ports. These are listed as Port 0 and Port 1 on the device information report. When both ports are active, each one may have a unique /dev/sg designation. The scan option may indicate that there are two drives in the system with the same serial number. Dual port installations will also report two different Worldwide Numbers (WWN). =================== General Usage Hints - Linux =================== Remember that Linux file names and command line arguments are cAsE SeNsiTiVe. Display a file listing with the Linux command: ls -lah The tool will require root privileges to run using either sudo or su commands. Also, verify that the tool has executable rights. A dot slash is a dot followed immediately by a forward slash (./). It is used in Linux to execute a compiled program in the current directory when it is not a built-in command or found in your path. For example, ./SeaChest -d /dev/sg0 --shortDST --poll or, sudo ./SeaChest -d /dev/sg0 --shortDST --poll Shut down the files system and remove the power with the command: poweroff See previous screen history with the key combination: Shift+PgUp or Shift+PgDn Save a log file by redirecting the screen output to a text file by adding space &>test.log at the end of your command line. Choose your own file name. To append the screen output to an existing log file use >>test.log. To save a log and display results at the conclusion of the tests, you can use the "tee" command. Tee command writes to the STDOUT and to a file. For example, SeaChest --echoCommandLine -d /dev/sg0 -i --smartCheck | tee -a mySeaChestLog.txt Display a log or text file with the Linux "less" command: less myfile.log Press the letter q to quit displaying the file. Similarly, you can easily read the Seagate License agreement by piping the output to the less command with SeaChest --license |less Display a list of sg (SCSI generic) devices with the command: cat /sys/class/scsi_generic/sg*/device/model or ls /dev/sg* sg devices include the following interfaces: SATA, USB, SCSI (SCSI, SAS and FC) Add the command word 'time' on the same command line before the SeaChest command to see how much time it takes to run a test. For example, time ./SeaChest -d /dev/sg0 --shortDST --poll When drives are not detected by SeaChest ---------------------------------------- The problem is that the sg driver isn't loaded on the system on boot. You can test if it is loaded by doing "ls /dev/sg*" and see if anything shows up. If nothing shows up then the SG driver is missing (which is required by SeaChest to issue commands). You need to do "modprobe sg" as root to load the sg module (since it wasn't compiled into the kernel), then you will get sg devices that we can scan and find. Once you run the modprobe command and sg is successfully loaded, then you can re-run "ls /dev/sg*" and see SG device nodes. SeaChest tools should then be able to find devices once again. How to control the amount of runtime kernel messages ---------------------------------------------------- When testing more drives than a system can hold, careful use of host adapters and hot-plugging batches of drives (but never to direct motherboard connections!) can help speed the process. The Linux operating system will display various system error messages, or none, when storage devices are powered down and exchanged with the next drives. The amount of information contained in the OS error messages can be reviewed using the Linux utility command "sysctl kernel.printk". The default setting is defined by the particular distro. Tiny Core Linux, for example may set "4 4 1 7". To hide hot-plugging messages try "3 4 1 7", to increase the messaging to include device details like model numbers try "6 4 1 7". The command to set is 'sudo sysctl -w kernel.printk="6 4 1 7"'. See man sysctl - "configure kernel parameters at runtime" for more. ================ Tool Usage Hints - Windows ================ See Sample Output examples below. First, run the SeaChest -s option to determine what physical device assignment lines up to your disk drive. This option will also show you other details about the drive including the current firmware revision. Like this: Vendor Handle Model Number Serial Number FwRev IDE PD0 ST94813AS 3AA043KP 3.03 SEAGATE PD1 ST1000NM0011 ZAA15VAS SN03 You can use SeaChest -s --onlySeagate to limit the display to just Seagate. All utility arguments will require you to identify the specific drive by providing the physical device handle (-d, --device). For example, SeaChest -d PD2 --shortDST --poll You may combine multiple tests with a single command line. For example, SeaChest_Basics -d PD0 -i --smartCheck runs both identify and SMART. Multiple device handles can be given by adding -d PD# for each additional handle. Devices are processed in sequential order. For example, SeaChest_Basics -d PD0 -d PD3 -i runs identify on these two devices. Caution: All device handles may be specified. However, great care should be taken to fully anticipate the consequences of running a command on all storage devices in a system. For example, a command to erase data on all drives could be catastrophic or exactly what you want. The shortcut to select all devices is -d all. Seagate is not responsible for lost user data. Along with the designation for all devices, you can narrow the tasks to specific types of drives by using the --onlySeagate, --modelMatch and --onlyFW filters. All Windows version tools support finding CSMI devices and talking to them like you would a normal device. The scan output will show all drives it detects ONCE. CSMI device handles have a structure like SCSI0:1. If a drive has both a PD? and SCSI?:? handle, then SeaChest will show the PD handle instead of the SCSI (CSMI) handle. When drives are in a RAID, the PD device handle is usually not available and the CSMI handle may provide an alternate way to talk to the drive. Just because a device has a CSMI handle doesn't mean it is part of a RAID. If you want to see both handles, add --scanFlags allowDuplicates to the command line. If you don't want to see any CSMI devices, add --scanFlags ignoreCSMI to the command line. SeaChest_Info -d SCSI?:? --csmiInfo is useful when troubleshooting CSMI device handles questions. Tests which alter the firmware or erase user data on the drive are limited to Seagate-only products which include Seagate, Maxtor, Samsung and LaCie. Tests which take a very long time to complete or erase all user data on the drive will require a longer command line argument than indicated in the --help output to the screen. This approach is taken to eliminate the possibility of accidental data loss or the commitment of long test times. The longer command arguments are similar to "I-understand-this-command-will-take-a-long-time" or "I-understand-this-command-will-erase-all-data". Advanced SAS installations may use dual ports. These are listed as Port 0 and Port 1 on the device information report. When both ports are active, each one may have a unique /dev/sg designation. The scan option may indicate that there are two drives in the system with the same serial number. Dual port installations will also report two different Worldwide Numbers (WWN). Windows Restrictions Over SATA Firmware Downloads ------------------------------------------------- You should not attempt downloading firmware to a SATA disk drive in the Windows operating system unless the drive supports the 'deferred' mode. You define the mode with the SeaChest command line option '--downloadMode deferred'. If the drive does not support deferred mode then the command will be aborted. Windows may not be so restrictive on secondary, non-boot SATA drives or SATA drives attached to host bus adapters (HBAs, controllers, USB, etc). If you force a primary SATA boot drive to download firmware in Windows using a different --downloadMode setting, then the result will likely be a BSOD (blue screen of death) system crash. This is because the legacy SATA firmware download modes require the drive to spin down and then back up and the momentary disappearance of the drive causes the operating system to crash. Windows is actually protecting the system when it thinks the drive has stopped responding (see wikis about Ring 0 Protection). The 'deferred' mode does not spin down the drive. Instead, the drive waits for a future reboot of the system and self-activates the firmware at that time. Other operating systems may utilize the SeaChest --activateFW command to trigger the switch to the new firmware version. =================== General Usage Hints - Windows =================== The tool will require Administrative privileges to run. Also, verify that the tool has executable rights. Remember that the command line arguments are cAsE SeNsiTiVe. Save a log file by redirecting the screen output to a text file by adding space &>test.log at the end of your command line. Choose your own file name. To append the screen output to an existing log file use >>test.log. To save a log and display results at the conclusion of the tests, you can use the powershell "tee" command. Tee command writes to the STDOUT and to a file. For example: powershell ".\SeaChest --echoCommandLine -d PD1 --smartCheck | tee -append mySeaChestLog.txt" Setup for Windows ----------------- The SeaChest Utilities Setup places all of the files at "C:\Program Files\Seagate\SeaChest" and adds an icon on the Desktop. Clicking the icon will open a Windows command prompt in Administrator mode at this location. From there you will need to type the full command line for the tool and device and options to run the test you require. See the various SeaChest Help documentation for descriptions and examples of the various commands. Manual Launch for Windows ------------------------- An individual SeaChest utility for Windows cannot be launched by just clicking on the file name. If started that way, the SeaChest utility will briefly show a black window box and quickly close. That is what happens when trying to run it from the Windows File Manager. This is a command line tool and the requirement is to open a Command Prompt as Administrator. There are two easy ways to do this: 1. Windows Accessories, right-click the Command Prompt icon and select Run as Administrator. 2. Click Windows Start. In the Start Search box, type cmd, and then press CTRL+SHIFT+ENTER. Then change drives or directory to where the SeaChest utility is located and run the tool file name from there. ============= Sample Output ============= SATA HDD Device Information: [sysop@localhost ~]$ sudo ./SeaChest_Basics -i -d /dev/sg1 =============================================================================== SeaChest - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved =============================================================================== Model Number: ST4000DX001-1CE168 Serial Number: ZQ3034X7R Firmware Revision: CC44 World Wide Name: 500Q0C5007A5FCF19 Drive Capacity (TB/TiB): 4.00/3.64 Native Drive Capacity (TB/TiB): 4.00/3.64 Temperature Data: Current Temperature (C): 25 Highest Temperature (C): 40 Lowest Temperature (C): 18 Humidity Data: Current Humidity (%): Not Reported Highest Humidity (%): Not Reported Lowest Humidity (%): Not Reported Power On Time: 4 days 1 hour Power On Hours: 97.00 MaxLBA: 7814037167 Native MaxLBA: 7814037167 Logical Sector Size (B): 512 Physical Sector Size (B): 4096 Sector Alignment: 0 Rotation Rate (RPM): 5900 Form Factor (inch): 3.5 Last DST information: Time since last DST (hours): 0.00 DST Status/Result: 0x0 DST Test run: 0x1 Interface speed: Max Speed (Gb/s): 6.0 Negotiated Speed (Gb/s): 6.0 Annualized Workload Rate (TB/yr): 2.51 Total Bytes Read (GB): 6.65 Total Bytes Written (GB): 21.27 Drive Reported Utilization (%): Not Reported Encryption Support: Not Supported Cache Size (MiB): 64.00 Read Look-Ahead: Enabled Write Cache: Enabled SMART Status: Good ATA Security Information: Supported, Frozen Zoned Device Type: Not a Zoned Device Firmware Download Support: Immediate, Segmented Specifications Supported: ACS-2 ATA8-ACS ATA/ATAPI-7 ATA/ATAPI-6 ATA/ATAPI-5 ATA/ATAPI-4 SATA 3.1 SATA 3.0 SATA 2.6 SATA 2.5 SATA II: Extensions SATA 1.0a Features Supported: NCQ HPA Power Management Security SMART DCO 48bit Address APM GPL Free-fall Control Write-Read-Verify SATA SSD Device Information: [sysop@localhost ~]$ sudo ./SeaChest_Basics -d /dev/sg1 -i =============================================================================== SeaChest - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved =============================================================================== Model Number: ST120FP0021 Serial Number: PQ57011BD Firmware Revision: B770 World Wide Name: 5000C501005A16633 Drive Capacity (GB/GiB): 120.03/111.79 Native Drive Capacity (GB/GiB): 120.03/111.79 Temperature Data: Current Temperature (C): 26 Highest Temperature (C): 0 Lowest Temperature (C): 17 Humidity Data: Current Humidity (%): Not Reported Highest Humidity (%): Not Reported Lowest Humidity (%): Not Reported Power On Time: 2 days 23 hours Power On Hours: 71.00 MaxLBA: 234441647 Native MaxLBA: 234441647 Logical Sector Size (B): 512 Physical Sector Size (B): 4096 Sector Alignment: 0 Rotation Rate (RPM): SSD Form Factor (inch): 2.5 Last DST information: Not supported Interface speed: Max Speed (Gb/s): 6.0 Negotiated Speed (Gb/s): 3.0 Annualized Workload Rate (TB/yr): 299.80 Total Bytes Read (TB): 2.35 Total Bytes Written (GB): 90.19 Drive Reported Utilization (%): Not Reported Encryption Support: Not Supported Cache Size (MiB): Not Reported Percentage Used Endurance Indicator (%): 1.00437 Read Look-Ahead: Enabled Write Cache: Enabled SMART Status: Good ATA Security Information: Supported, Frozen Zoned Device Type: Not a Zoned Device Firmware Download Support: Immediate, Segmented Specifications Supported: ATA8-ACS ATA/ATAPI-7 ATA/ATAPI-6 ATA/ATAPI-5 ATA/ATAPI-4 SATA 3.0 Features Supported: Sanitize NCQ HPA Power Management Security SMART 48bit Address GPL TRIM SAS HDD Device Information: [sysop@localhost ~]$ sudo ./SeaChest_Basics -i -d /dev/sg2 =============================================================================== SeaChest - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved =============================================================================== Model Number: ST4000NM0043 Serial Number: Z1QZ04KVG Firmware Revision: 0004 World Wide Name: 500Q0C5005594AEFB Copyright: Copyright (c) 2014 Seagate All rights reserved Drive Capacity (TB/TiB): 4.00/3.64 Temperature Data: Current Temperature (C): 28 Highest Temperature (C): Not Reported Lowest Temperature (C): Not Reported Humidity Data: Current Humidity (%): Not Reported Highest Humidity (%): Not Reported Lowest Humidity (%): Not Reported Power On Time: 61 days 11 hours 14 minutes Power On Hours: 1475.23 MaxLBA: 7814037167 Native MaxLBA: Not Reported Logical Sector Size (B): 512 Physical Sector Size (B): 512 Sector Alignment: 0 Rotation Rate (RPM): 7200 Form Factor (inch): 3.5 Last DST information: Time since last DST (hours): 548.23 DST Status/Result: 0x0 DST Test run: 0x1 Interface speed: Port 0 (Current Port) Max Speed (GB/s): 6.0 Negotiated Speed (Gb/s): 3.0 Port 1 Max Speed (GB/s): 6.0 Negotiated Speed (Gb/s): Not Reported Annualized Workload Rate (TB/yr): 0.02 Total Bytes Read (GB): 2.27 Total Bytes Written (GB): 2.39 Drive Reported Utilization (%): Not Reported Encryption Support: Self Encrypting Cache Size (MiB): Not Reported Read Look-Ahead: Enabled Write Cache: Enabled SMART Status: Good ATA Security Information: Not Supported Zoned Device Type: Not a Zoned Device Firmware Download Support: Immediate Specifications Supported: SPC-4 Features Supported: EPC TCG Self Test Informational Exceptions Format Unit Sanitize SAS SSD: Device Information [sysop@localhost ~]$ sudo ./SeaChest_Basics -d /dev/sg3 -i =============================================================================== SeaChest - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved =============================================================================== Model Number: ST400FM0053 Serial Number: P3QF13026 Firmware Revision: 0006 World Wide Name: 5000QC50069010B4B Copyright: Copyright (c) 2014 Seagate All rights reserved - Drive Capacity (GB/GiB): 400.09/372.61 Temperature Data: Current Temperature (C): 34 Highest Temperature (C): Not Reported Lowest Temperature (C): Not Reported Humidity Data: Current Humidity (%): Not Reported Highest Humidity (%): Not Reported Lowest Humidity (%): Not Reported Power On Time: 30 days 21 hours 29 minutes Power On Hours: 741.48 MaxLBA: 781422767 Native MaxLBA: Not Reported Logical Sector Size (B): 512 Physical Sector Size (B): 4096 Sector Alignment: 0 Rotation Rate (RPM): SSD Form Factor (inch): 2.5 Last DST information: Time since last DST (hours): 434.48 DST Status/Result: 0x0 DST Test run: 0x1 Interface speed: Port 0 (Current Port) Max Speed (GB/s): 12.0 Negotiated Speed (Gb/s): 3.0 Port 1 Max Speed (GB/s): 12.0 Negotiated Speed (Gb/s): Not Reported Annualized Workload Rate (TB/yr): 9.48 Total Bytes Read (GB): 24.62 Total Bytes Written (GB): 837.41 Drive Reported Utilization (%): Not Reported Encryption Support: Not Supported Cache Size (MiB): Not Reported Percentage Used Endurance Indicator (%): 1.00000 Read Look-Ahead: Enabled Write Cache: Enabled SMART Status: Good ATA Security Information: Not Supported Zoned Device Type: Not a Zoned Device Firmware Download Support: Immediate, Segmented, Deferred Specifications Supported: SPC-4 Features Supported: EPC Power Comsumption UNMAP Self Test Informational Exceptions Format Unit Sanitize SATA SSD SMART Attributes example. The drive will display its list of supported SMART attributes. Some attributes are industry standard and most others are vendor unique. Most attributes are informational and not used to determine a warranty return. Use the --smartCheck command to determine if one of the warranty attributes has been tripped. Reminder: Seagate Support does not help to analyze SMART attributes. [sysop@localhost ~]$ sudo ./SeaChest_x64 -d /dev/sg0 --smartAttributes =============================================================================== SeaChest - Seagate drive utilities Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved =============================================================================== Attribute Name: Status: Nominal: Worst: Raw (hex): 1 Read Error Rate 0x000F 0x75 0x63 0x0000000969AFB4 3 Spin Up Time 0x0003 0x61 0x61 0x00000000000000 4 Start/Stop Count 0x0032 0x63 0x63 0x0000000000079E 5 Retired Sectors Count 0x0033 0x64 0x64 0x00000000000000 7 Seek Error Rate 0x000F 0x52 0x3C 0x0000000A4D0DAA 9 Power On Hours 0x0032 0x5D 0x5D 0x00000000001A84 10 Spin Retry Count 0x0013 0x64 0x64 0x00000000000000 12 Drive Power Cycle Count 0x0032 0x63 0x63 0x000000000007A5 184 IOEDC Count 0x0032 0x55 0x55 0x0000000000000F 187 Reported Un-correctable 0x0032 0x64 0x64 0x00000000000000 188 Command Timeout 0x0032 0x64 0xFD 0x00000000000000 189 High Fly Writes 0x003A 0x64 0x64 0x00000000000000 190 Airflow Temperature 0x0022 0x40 0x2E 0x00000026110024 191 Shock Sensor Counter 0x0032 0x64 0x64 0x00000000000000 192 Emergency Retract Count 0x0032 0x64 0x64 0x00000000000042 193 Load-Unlock Count 0x0032 0x44 0x44 0x0000000000FA61 194 Temperature 0x0022 0x24 0x36 0x00000A00000024 195 ECC On The Fly Count 0x001A 0x2D 0x29 0x0000000969AFB4 197 Pending-Sparing Count 0x0012 0x64 0x64 0x00000000000000 198 Offline Uncorrectable Sectors 0x0010 0x64 0x64 0x00000000000000 199 Ultra DMA CRC Error 0x003E 0xC8 0xC8 0x00000000000000 ======================================= About SeaChest Command Line Diagnostics ======================================= Seagate offers both graphical user interface (GUI) and command line interface (CLI) diagnostic tools for our storage devices. SeaTools for Windows and SeaTools Bootable for end users are the two most popular GUI tools. These tools support 15 languages. SeaChest diagnostics are command line utilities which are available for expert users. These command line tools assume the user is knowledgeable about running software from the operating system command prompt. CLI tools are in the English language only and use "command line arguments" to define the various tasks and specific devices. SeaChest diagnostics are available for both Linux and Windows environments. Linux versions of SeaChest tools are available as stand alone 32 or 64-bit executables you can copy to your own system. Windows OS versions of SeaChest diagnostics are installed through a typical setup wizard and can be removed via the Control Panel. In addition, Seagate offers a tool to build a bootable USB SeaChest flash drive which boots to a 32-bit Linux command prompt. This is a Windows executable file which formats a USB Flash drive you provide. It copies over all the files needed to use it as a bootable device for the SeaChest diagnostic software. All data on the USB Flash drive will be erased so be sure to protect any valuable files. Technical Support for SeaChest drive utilities is not available. If you have the time to send us some feedback about this software, especially if you notice something we should fix or improve, we would greatly appreciate hearing from you. To report your comments and suggestions, please use this email seaboard@seagate.com. Please let us know the name and version of the tool you are using. SeaChest drive utilities support SATA, SAS and USB interface devices. SeaChest Basics - Contains the most important tests and tools. Other SeaChest "break out" utilities are available and listed below which offer more in-depth functionality in specific areas. These are: SeaChest Configure - Tools to control various settings on the drives are brought together into this one tool. Typical commands, for example, include Write Cache and Read Lookahead Cache enable or disable. SeaChest Erase - The focus is on data erasure. There are many different choices for erasing data from simple boot track erase to full cryptographic erasure (when supported). Be sure to back up important data before using this tool. Seagate is not responsible for lost user data. This tool only works on Seagate drives. SeaChest Firmware - Seagate products are run by firmware. Having the latest firmware can improve performance and or reliability of your product. Seagate recommends applying new firmware to enhance the performance and or reliability of your drive. Most products may see one or two firmware updates within the early life of the product. SeaChest Format - Storage products which utilize the SAS, SCSI or Fibre Channel interfaces are able to perform a full low-level media format in the field. The SCSI Format Unit command offers many specialty options to accommodate a variety of conditions and to fine tune the procedure. This complex command deserves its own "break out" utility. SeaChest GenericTests - Read Tests are the original disk drive diagnostic which is to just read every sector on the drive, sequentially. This tool offers several common read tests which can be defined by either time or range. In addition, the Long Generic test has the ability to repair problem sectors, possibly eliminating an unnecessary drive return. SeaChest Info - Historical generic activity logs (like total bytes written and power on hours) and performance logs (like temperature) are available for analytical review. Identification and inquiry data stored on the drive is also provided. A view of SMART and device statistics is available when supported by the drive. SeaChest PowerChoice - Seagate disk drives offer a multitude of options to manage power. This tool manipulates the various power modes. SeaChest Security - Various settings are available on modern Seagate disk drives which may be locked and unlocked. These settings may interact with the operating systems and systems BIOS. Options also include cryptographic erase for Self-Encrypting Drives (SED). SeaChest SMART - This tool provides a closer look at the collected SMART attributes data. SMART stands for Self-Monitoring, Analysis and Reporting Technology. Short Drive Self Test is included as one of the standard SMART commands. In addition, the DST & Clean test has the ability to repair problem sectors, possibly eliminating an unnecessary drive return. ================================= Support and Open Source Statement ================================= Seagate offers technical support for disk drive installation. If you have any questions related to Seagate products and technologies, feel free to submit your request on our web site. See the web site for a list of world-wide telephone numbers. Seagate Support: http://www.seagate.com/support-home/ Contact Us: http://www.seagate.com/contacts/ Please report bugs/suggestions to seaboard@seagate.com. Include the output of --version information in the email. See the user guide section 'General Usage Hints' for information about saving output to a log file. This software uses open source packages obtained with permission from the relevant parties. For a complete list of open source components, sources and licenses, please see our Linux USB Boot Maker Utility FAQ for additional information. SeaChest Utilities use libraries from the opensea source code projects. These projects are maintained at http://github.com/seagate. The libraries in use are opensea-common, opensea-transport and opensea-operations. These libraries are available under the Mozilla Public License 2.0, license shown below. The newest online version of the SeaChest Utilities documentation, open source usage and acknowledgement licenses can be found at: http://support.seagate.com/seachest/SeaChest_Combo_UserGuides.html The USB Boot Maker Utility for Windows utilizes the NSIS Installer v2.46.5-Unicode (http://nsis.sourceforge.net). All Linux versions of the SeaChest Utilities are compiled using GCC, the GNU Compiler Collection, license shown below. All Windows versions of the SeaChest Utilities uses an open source project named wingetopt, license shown below. SeaChest_Firmware uses two open source projects named mbedtls and zlib.h, licenses shown below. Copyright (c) 2014-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved ====================================================================== END USER LICENSE AGREEMENT FOR SEAGATE SOFTWARE PLEASE READ THIS END USER LICENSE AGREEMENT ("EULA") CAREFULLY. BY CLICKING "I AGREE" OR TAKING ANY STEP TO DOWNLOAD, SET-UP, INSTALL OR USE ALL OR ANY PORTION OF THIS PRODUCT (INCLUDING, BUT NOT LIMITED TO, THE SOFTWARE AND ASSOCIATED FILES (THE "SOFTWARE"), HARDWARE ("HARDWARE"), DISK (S), OR OTHER MEDIA) (COLLECTIVELY, THE "PRODUCT") YOU AND YOUR COMPANY ACCEPT ALL THE TERMS AND CONDITIONS OF THIS EULA. IF YOU ACQUIRE THIS PRODUCT FOR YOUR COMPANY’S USE, YOU REPRESENT THAT YOU ARE AN AUTHORIZED REPRESENTATIVE WHO HAS THE AUTHORITY TO LEGALLY BIND YOUR COMPANY TO THIS EULA. IF YOU DO NOT AGREE, DO NOT CLICK "I AGREE" AND DO NOT DOWNLOAD, SET-UP, INSTALL OR USE THE SOFTWARE. 1. Ownership. This EULA applies to the Software and Products of Seagate Technology LLC and the affiliates controlled by, under common control with, or controlling Seagate Technology LLC, including but not limited to affiliates operating under the LaCie name or brand, (collectively, "Seagate", "we", "us", "our"). Seagate and its suppliers own all right, title, and interest in and to the Software, including all intellectual property rights therein. The Software is licensed, not sold. The structure, organization, and code of the Software are the valuable trade secrets and confidential information of Seagate and its suppliers. The Software is protected by copyright and other intellectual property laws and treaties, including, without limitation, the copyright laws of the United States and other countries. The term "Software" does not refer to or include "Third-Party Software". "Third-Party Software" means certain software licensed by Seagate from third parties that may be provided with the specific version of Software that you have licensed. The Third-Party Software is generally not governed by the terms set forth below but is subject to different terms and conditions imposed by the licensors of such Third-Party Software. The terms of your use of the Third-Party Software are subject to and governed by the respective license terms, except that this Section 1 and Sections 5 and 6 of this Agreement also govern your use of the Third-Party Software. You may identify and view the relevant licenses and/or notices for such Third-Party Software for the Software you have received pursuant to this EULA at http://www.seagate.com/support/by-topic/downloads/ , or at http://www.lacie.com/support/ for LaCie branded product. You agree to comply with the terms and conditions contained in all such Third-Party Software licenses with respect to the applicable Third-Party Software. Where applicable, the URLs for sites where you may obtain source code for the Third Party Software can be found at http://www.seagate.com/support/by-topic/downloads/, or at http://www.lacie.com/support/ for LaCie branded product. 2. Product License. Subject to your compliance with the terms of this EULA, Seagate grants you a personal, non-exclusive, non-transferable, limited license to install and use one (1) copy of the Software on one (1) device residing on your premises, internally and only for the purposes described in the associated documentation. Use of some third party software included on the media provided with the Product may be subject to terms and conditions of a separate license agreement; this license agreement may be contained in a "Read Me" file located on the media that accompanies that Product. The Software includes components that enable you to link to and use certain services provided by third parties ("Third Party Services"). Your use of the Third Party Services is subject to your agreement with the applicable third party service provider. Except as expressly stated herein, this EULA does not grant you any intellectual property rights in the Product. Seagate and its suppliers reserve all rights not expressly granted to you. There are no implied rights. 2.1 Software. You are also permitted to make a single copy of the Software strictly for backup and disaster recovery purposes. You may not alter or modify the Software or create a new installer for the Software. The Software is licensed and distributed by Seagate for use with its storage products only, and may not be used with non-Seagate storage product. 3. Restrictions. You are not licensed to do any of the following: a. Create derivative works based on the Product or any part or component thereof, including, but not limited to, the Software; b. Reproduce the Product, in whole or in part; c. Except as expressly authorized by Section 11 below, sell, assign, license, disclose, or otherwise transfer or make available the Product, in whole or in part, to any third party; d. Alter, translate, decompile, or attempt to reverse engineer the Product or any part or component thereof, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this contractual prohibition; e. Use the Product to provide services to third parties; f. Take any actions that would cause the Software to become subject to any open source license agreement if it is not already subject to such an agreement; and g. Remove or alter any proprietary notices or marks on the Product. 4. Updates. If you receive an update or an upgrade to, or a new version of, any Software ("Update") you must possess a valid license to the previous version in order to use the Update. All Updates provided to you shall be subject to the terms and conditions of this EULA. If you receive an Update, you may continue to use the previous version(s) of the Software in your possession, custody or control. Seagate shall have no obligation to support the previous versions of the Software upon availability of an Update. Seagate has no obligation to provide support, maintenance, Updates, or modifications under this EULA. 5. NO WARRANTY. THE PRODUCT AND THE THIRD-PARTY SOFTWARE ARE OFFERED ON AN "AS-IS" BASIS AND NO WARRANTY, EITHER EXPRESS OR IMPLIED, IS GIVEN. SEAGATE AND ITS SUPPLIERS EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND, WHETHER STATUTORY, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. SEAGATE DOES NOT PROVIDE THE THIRD PARTY SERVICES AND MAKES NO WARRANTIES WITH RESPECT TO THE THIRD PARTY SERVICES. YOUR USE OF THE THIRD PARTY SERVICES IS AT YOUR RISK. 6. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL, AND CERTAIN OTHER DAMAGES. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL SEAGATE OR ITS LICENSORS OR SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS OR CONFIDENTIAL OR OTHER INFORMATION, FOR BUSINESS INTERRUPTION, FOR PERSONAL INJURY, FOR LOSS OF PRIVACY, FOR FAILURE TO MEET ANY DUTY INCLUDING OF GOOD FAITH OR REASONABLE CARE, FOR NEGLIGENCE, AND FOR ANY OTHER PECUNIARY OR OTHER LOSS WHATSOEVER) ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OF OR INABILITY TO USE THE PRODUCT OR ANY PART OR COMPONENT THEREOF OR RELATED SERVICE OR ANY THIRD PARTY SERVICES, OR OTHERWISE UNDER OR IN CONNECTION WITH ANY PROVISION OF THE EULA, EVEN IN THE EVENT OF THE FAULT, TORT (INCLUDING NEGLIGENCE), MISREPRESENTATION, STRICT LIABILITY, BREACH OF CONTRACT, OR BREACH OF WARRANTY OF SEAGATE OR ITS LICENSORS OR SUPPLIERS, AND EVEN IF SEAGATE OR ITS LICENSOR OR SUPPLIER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING ANY FAILURE OF THE ESSENTIAL PURPOSE OF THIS AGREEMENT OR ANY REMEDY. 7. LIMITATION OF LIABILITY. NOTWITHSTANDING ANY DAMAGES THAT YOU MIGHT INCUR FOR ANY REASON WHATSOEVER, THE ENTIRE LIABILITY OF SEAGATE UNDER ANY PROVISION OF THIS EULA AND YOUR EXCLUSIVE REMEDY HEREUNDER SHALL BE LIMITED TO, AND IN NO EVENT WILL SEAGATE'S TOTAL CUMULATIVE DAMAGES EXCEED, THE FEES PAID BY THE LICENSEE TO SEAGATE FOR THE PRODUCT. ADDITIONALLY, IN NO EVENT SHALL SEAGATE'S LICENSORS OR SUPPLIERS BE LIABLE FOR ANY DAMAGES OF ANY KIND. 8. Privacy. Seagate’s collection, use and disclosure of personally identifiable information in connection with your use of the Product is governed by Seagate’s Privacy Policy which is located at http://www.seagate.com/legal-privacy/privacy-policy/As further described in Seagate’s Privacy Policy, certain Products may include a Product dashboard which allows users to manage Product settings, including but not limited to use of anonymous statistical usage data in connection with personally identifiable information. You agree to Seagate’s collection, use, and disclosure of your data in accordance with the Product dashboard settings selected by you for the Product, or in the case of transfer as described in Section 11, you agree to the settings selected by the prior licensee unless or until you make changes to the settings. 9. Indemnification. By accepting the EULA, you agree to indemnify and otherwise hold harmless Seagate, its officers, employees, agents, subsidiaries, affiliates, and other partners from any direct, indirect, incidental, special, consequential or exemplary damages arising out of, relating to, or resulting from your use of the Product or any other matter relating to the Product, including, without limitation, use of any of the Third Party Services. 10. International Trade Compliance. The Software and any related technical data made available for download under this EULA are subject to the customs and export control laws and regulations of the United States ("U.S.") and may also be subject to the customs and export laws and regulations of the country in which the download is contemplated. Further, under U.S. law, the Software and any related technical data made available for download under this EULA may not be sold, leased or otherwise transferred to restricted countries, or used by a restricted end-user (as determined on any one of the U.S. government restricted parties lists, found at http://www.bis.doc.gov/complianceandenforcement/liststocheck.htm) or an end-user engaged in activities related to weapons of mass destruction including, without limitation, activities related to designing, developing, producing or using nuclear weapons, materials, or facilities, missiles or supporting missile projects, or chemical or biological weapons. You acknowledge that you are not a citizen, national, or resident of, and are not under control of the governments of Cuba, Iran, North Korea, Sudan or Syria; are not otherwise a restricted end-user as defined by U.S. export control laws; and are not engaged in proliferation activities. Further, you acknowledge that you will not download or otherwise export or re-export the Software or any related technical data directly or indirectly to the above-mentioned countries or to citizens, nationals, or residents of those countries, or to any other restricted end user or for any restricted end-use. 11. General. This EULA between Licensee and Seagate is governed by and construed in accordance with the laws of the State of California without regard to conflict of laws principles. The EULA constitutes the entire agreement between Seagate and you relating to the Product and governs your use of the Product, superseding any prior agreement between you and Seagate relating to the subject matter hereof. If any provision of this EULA is held by a court of competent jurisdiction to be contrary to law, such provision will be changed and interpreted so as to best accomplish the objectives of the original provision to the fullest extent allowed by law and the remaining provisions of the EULA will remain in force and effect. The Product and any related technical data are provided with restricted rights. Use, duplication, or disclosure by the U.S. government is subject to the restrictions as set forth in subparagraph (c)(1)(iii) of DFARS 252.227-7013 (The Rights in Technical Data and Computer Product) or subparagraphs (c)(1) and (2) of 48 CFR 52.227-19 (Commercial Computer Product - Restricted Rights), as applicable. The manufacturer is Seagate. You may not transfer or assign this EULA or any rights under this EULA, except that you may make a one-time, permanent transfer of this EULA and the Software to another end user, provided that (i) you do not retain any copies of the Software, the Hardware, the media and printed materials, Upgrades (if any), and this EULA, and (ii) prior to the transfer, the end user receiving this EULA and the Software agrees to all the EULA terms. Any attempted assignment in violation of this Section is void. Seagate, the Seagate logo, and other Seagate names and logos are the trademarks of Seagate. 5.4.2016 =========================================================================== GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (c) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: * a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or * b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: * a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. * b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: * a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. * b) Accompany the Combined Work with a copy of the GNU GPL and this license document. * c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. * d) Do one of the following: o 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. o 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. * e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: * a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. * b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. =========================================================================== mbedtls - An open source, portable, easy to use, readable and flexible SSL library https://tls.mbed.org Modifications: -added DES & 3DES CFB cipher encryption and decryption support Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source,and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. =========================================================================== zlib.h -- interface of the 'zlib' general purpose compression library version 1.2.8, April 28th, 2013 Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jean-loup Gailly Mark Adler jloup@gzip.org madler@alumni.caltech.edu =========================================================================== SeaChest tools for Windows utilize wingetopt (https://github.com/alex85k/wingetopt). getopt library for Windows compilers This library was created to allow compilation linux-based software on Windows. http://en.wikipedia.org/wiki/Getopt The sources were taken from MinGW-runtime project. AUTHORS: Todd C. Miller Todd.Miller@courtesan.com The NetBSD Foundation, Inc. LICENSE Copyright (c) 2002 Todd C. Miller Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Sponsored in part by the Defense Advanced Research Projects Agency (DARPA) and Air Force Research Laboratory, Air Force Materiel Command, USAF, under agreement number F39502-99-1-0512. Copyright (c) 2000 The NetBSD Foundation, Inc. All rights reserved. This code is derived from software contributed to The NetBSD Foundation by Dieter Baron and Thomas Klausner. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ====================================================================== SOURCE CODE files of the opensea open source project have been made available to you under the Mozilla Public License 2.0 (MPL). Mozilla is the custodian of the Mozilla Public License ("MPL"), an open source/free software license. https://www.mozilla.org/en-US/MPL/ Mozilla Public License Version 2.0 ================================== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. 1.5. "Incompatible With Secondary Licenses" means (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License. 1.6. "Executable Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. 1.10. "Modifications" means any of the following: (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. 1.13. "Source Code Form" means the form of the work preferred for making modifications. 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants and Conditions -------------------------------- 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. 2.2. Effective Date The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution. 2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: (a) for any code that a Contributor has removed from Covered Software; or (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or (c) under Patent Claims infringed by Covered Software in the absence of its Contributions. This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4). 2.4. Subsequent Licenses No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). 2.5. Representation Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. 2.6. Fair Use This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. 2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. 3. Responsibilities ------------------- 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. 3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then: (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. 3.3. Distribution of a Larger Work You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). 3.4. Notices You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. 3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction. 4. Inability to Comply Due to Statute or Regulation --------------------------------------------------- If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Termination -------------- 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. ************************************************************************ * * * 6. Disclaimer of Warranty * * ------------------------- * * * * Covered Software is provided under this License on an "as is" * * basis, without warranty of any kind, either expressed, implied, or * * statutory, including, without limitation, warranties that the * * Covered Software is free of defects, merchantable, fit for a * * particular purpose or non-infringing. The entire risk as to the * * quality and performance of the Covered Software is with You. * * Should any Covered Software prove defective in any respect, You * * (not any Contributor) assume the cost of any necessary servicing, * * repair, or correction. This disclaimer of warranty constitutes an * * essential part of this License. No use of any Covered Software is * * authorized under this License except under this disclaimer. * * * ************************************************************************ ************************************************************************ * * * 7. Limitation of Liability * * -------------------------- * * * * Under no circumstances and under no legal theory, whether tort * * (including negligence), contract, or otherwise, shall any * * Contributor, or anyone who distributes Covered Software as * * permitted above, be liable to You for any direct, indirect, * * special, incidental, or consequential damages of any character * * including, without limitation, damages for lost profits, loss of * * goodwill, work stoppage, computer failure or malfunction, or any * * and all other commercial damages or losses, even if such party * * shall have been informed of the possibility of such damages. This * * limitation of liability shall not apply to liability for death or * * personal injury resulting from such party's negligence to the * * extent applicable law prohibits such limitation. Some * * jurisdictions do not allow the exclusion or limitation of * * incidental or consequential damages, so this exclusion and * * limitation may not apply to You. * * * ************************************************************************ 8. Litigation ------------- Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. 9. Miscellaneous ---------------- This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. 10. Versions of the License --------------------------- 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. 10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. 10.3. Modified Versions If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. Exhibit A - Source Code Form License Notice ------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice --------------------------------------------------------- This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.