Date last edit: 22-Feb-2020 About SeaChest Utilities Command Line Diagnostics and Open Source Statement. _Basics _Configure _Erase _Firmware _Format _GenericTests _Info _Lite _NVMe _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 Various Open Source Licenses SeaChest_Basics.txt Revision: 19-Feb-2020 =============================================================================== SeaChest_Basics - Seagate drive utilities Copyright (c) 2014-2020 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Basics Version: 2.9.1 Build Date: Feb 19 2020 =============================================================================== 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 - Linux (run with sudo) ============================= sudo SeaChest_Basics [-d <device>] {arguments} {options} Examples - Linux ================ sudo SeaChest_Basics --scan sudo SeaChest_Basics -d /dev/sg2 -i sudo SeaChest_Basics -d /dev/sg1 --shortDST --poll Usage - Windows (run as administrator) ====================================== SeaChest_Basics [-d <PD_device>] {arguments} {options} Examples - 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 nvme - show only NVMe devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface interfaceNVME - show devices on a NVMe interface Linux: sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping Windows: 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 <device handle> 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. Linux example: -d /dev/sg5 Windows example: -d PD3 -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 option to learn more about the supported phys. --readyLED [info | on | off | default] (SAS Only) Use this option to change the behavior of pin 11, the ready LED. See the SPL spec for full details on how this changes LED behavior. info - gets the current state of the ready LED. on - sets the ready LED to usually off unless processing a command. off - sets the ready LED to usually on unless processing a command default - sets the ready LED to the drive's default value --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. --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. May also be used with the --scan command. --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. --hideLBACounter Use this option to supress the output from options that show LBA counters without turning off all output to the screen. --noTimeLimit Use with utility command arguments which have build in timeout values. For example, --shortDST has a 10 minutes default timeout. In some cases a good drive may need more time to complete the test due to other legitimate system activity. --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. Windows only: --csmiIgnorePort 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 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 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. 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 9 Need Elevated Privileges (sudo, run as administrator) 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 add endianness detection, device statistics support, 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. v2.7.3 21-Sep-2018 1_18_2 libraries Added in reading os-release PRETTY_NAME field to get the OS name under linux; NVMe enabled; fixed a bug in the ATA activate FW command; added in reading ID Data log and Device statistics logs page 0 to check the list of supported pages; fixed a bug in the loop used to read mode pages for -i information on SAS; IDD SAS improvements; fixed a bug in DST & Clean with ATA drives behind SCSI controllers. Fix for --modelMatch that have spaces in the name. Added additional information to the banner and -V data to show support levels. Add general support for NVMe and NVMe specific identify data to "-i" command. v2.7.4 18-Oct-2018 1_18_3 libraries Added NVMe generic read command support. v2.8.0 03-May-2019 1_19_18 libraries added per device verbosity, --deviceInfo adds SAS (not SATA) FastFormat for Features Supported section. v2.8.0 10-Jun-2019 1_19_23 libraries added SNTL (SCSI to NVMe translator), updated software SAT translator to use dataset management XL command, fixes for issuing vendor unique commands under Windows, improved fast format support detection, and refactored verbose output for NVMe commands. v2.8.1 19-Jul-2019 1_19_24 libraries. Added --noTimeLimit. v2.9.1 19-Feb-2020 1_21_30 libraries add in check for Elevated Privileges (sudo, run as administrator) before trying to talk to devices, new exit code 9 if privileges are missing; printing the USB VID/PID in the device info; fix to sg helper to support large systems; many changes in support of dual actuators (example: warning that EPC settings affect multiple LUNs); overhaul to USB device detection and support, incorporating a new USB hacks and workarounds approach which uses a lookup table listing various USB bridge VIDs/PIDs and their specific issues; separate Seagate SAS SN and PCBA SN. SeaChest_Configure.txt Revision: 19-Feb-2020 =============================================================================== SeaChest_Configure - Seagate drive utilities Copyright (c) 2014-2020 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Configure Version: 1.18.1 Build Date: Feb 19 2020 =============================================================================== 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 - Linux (run with sudo) ============================= sudo SeaChest_Configure [-d <sg_device>] {arguments} {options} Examples - Linux ================ sudo SeaChest_Configure --scan sudo SeaChest_Configure -d /dev/sg2 --deviceInfo Usage - Windows (run as administrator) ====================================== SeaChest_Configure [-d <PD_device>] {arguments} {options} Examples - Windows ================== SeaChest_Configure --scan SeaChest_Configure -d PD0 --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. ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices nvme - show only NVMe devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface interfaceNVME - show devices on a NVMe interface Linux: sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping Windows: 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 <device handle> 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. Linux example: -d /dev/sg5 Windows example: -d PD3 -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) --nvCache [info | enable | disable] (SAS Only) Use this option to enable or disable the SCSI Non-Volatile cache on a drive. Use the "info" argument to get the current status of the Non-Volatile Cache setting. WARNING: Changing NV Cache may affect all LUNs/namespaces for devices with multiple logical units or namespaces. --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. SATA Only: ========== --freeFall [info | enable | disable | sensitivity value] (SATA only) Use this option to configure the Free Fall control feature found on some SATA drives. This feature allows the drive to take action if it detects it is in free fall to protect the data from harm due to a drop. info - use this to see the current sensitivity value enable - this option will set the sensitivity to the vendor's recommended value. disable - this will disable the free fall control feature. sensitivity value - set a value between 1 and 255 to control how sensitive the detection is. A value of zero will set the vendor's recommended value. --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. -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 --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. --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. SAS Only: ======== --readyLED [info | on | off | default] (SAS Only) Use this option to change the behavior of pin 11, the ready LED. See the SPL spec for full details on how this changes LED behavior. info - gets the current state of the ready LED. on - sets the ready LED to usually off unless processing a command. off - sets the ready LED to usually on unless processing a command default - sets the ready LED to the drive's default value --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. --scsiLPReset [cumulative | threshold | defCumulative | defThreshold | all] (SAS only) Use this option to reset all SCSI Log Pages. If the device is compliant with SPC4 or later, the --scsiLPResetPage option may be used to specify a specific page to reset. The --volatile option may also be passed to prevent saving changes. cumulative - reset the cumulative values threshold - reset the threshold values defCumulative - reset the cumulative values to default without saving. defThreshold - reset the threshold values to default without saving. all - sends the log page reset command to all of the above control values --scsiLPResetPage [page# | page-subpage#] (SAS only) This option is used to specify a specific page, and/or subpage to be used with the --scsiLPReset option. NOTE: This option will only work on newer drives compliant with the SPC4 specification. --scsiMPReset [page# | page-subpage#] (SAS only) This option will reset the specified mode page(s) to their default settings. Valid page numbers range from 0 to 3Fh. Valid subpage numbers range from 0 to FFh. (MP) Mode page 3Fh specifies all mode pages and can be used to reset all mode pages. (SP) Subpage FFh specifies all subpages of a given page and will reset all those subpages. Using both MP 3Fh and SP FFh will reset all pages and subpages on a device. --scsiMPRestore [page# | page-subpage#] (SAS only) This option will restore the specified mode page(s) to their saved settings. Valid page numbers range from 0 to 3Fh. Valid subpage numbers range from 0 to FFh. (MP) Mode page 3Fh specifies all mode pages and can be used to restore all mode pages. (SP) Subpage FFh specifies all subpages of a given page and will restore all those subpages. Using both MP 3Fh and SP FFh will restore all pages and subpages on a device. --scsiMPSave [page# | page-subpage#] (SAS only) This option will save the current specified mode page(s) to the saved settings. Valid page numbers range from 0 to 3Fh. Valid subpage numbers range from 0 to FFh. (MP) Mode page 3Fh specifies all mode pages and can be used to save all mode pages. (SP) Subpage FFh specifies all subpages of a given page and will save all those subpages. Using both MP 3Fh and SP FFh will save all pages and subpages on a device. --setSCSIMP [ mp[-sp]:byte:highestBit:fieldWidthInBits=value | file=filename.txt ] (SAS only) (Seagate Only) Use this option to set a specific field in a mode page to a value. There are two argument formats to this option: 1. The first format expects a mode page (in hex), optionally a subpage code (in hex), the byte offset that the field starts at (in decimal), the highest bit the field starts at (0-7), the width of the field in as a number of bits (decimal), and the value to set (hex or decimal). A maximum of 64bits can be set at a time with this option. 2. The second format is a text file that contains all bytes of the mode page in hex. Each byte must be separated by a space, new line, or underscore. It is recommended that this file is created by copy-pasting the output of the --showSCSIMP option's default classic view, then modifying after that. Example use of the arguments: 1. Setting WCE to zero on Caching MP 8 from command line: command line: 08:2:2:1=0 2. Setting DLC to one on Control Extension MP from command line: command line: 0A-01:4:3:1=1 3. Setting WCE to zero on Caching MP 8 from a text file: command line: file=cachingModePage.txt File contents: 88 12 10 00 FF FF 00 00 FF FF FF FF 90 20 00 00 00 00 00 00 --showSCSIMP [page# | page-subpage#] (SAS only) This option will display the specified mode page on the screen as raw hexadecimal data bytes. Use --showSCSIMPControl to control the output. If --showSCSIMPControl is not provided, the current values will be shown. (MP) Mode page 3Fh specifies all mode pages and can be used to show all mode pages. (SP) Subpage FFh specifies all subpages of a given page and will show all those subpages. Using both MP 3Fh and SP FFh will show all pages and subpages on a device. Note: page# is a decimal value unless it has the characters A through F, then it is hexadecimal. Page 18, for example, would be 12h so be sure to say 18h if that is the page you want. Example: --showSCSIMP 3F-FF --showSCSIMP 18h --showSCSIMP 24 (shows page 18h) --showSCSIMPControl [current | default | saved | changeable | all] (SAS only) Use this option to control the output of the --showSCSIMP option. current - show the current values of the mode page. default - show the default values of the mode page. saved - show the saved values of the mode page. changeable - show the changeable fields in a mode page. all - show all of the above formats for a given mode page. Example: --showSCSIMP 8 --showSCSIMPControl all --showMPOutputMode [classic | buffer] (SAS Only) Use this option to control the format of the output when displaying a SCSI mode page. Modes: classic - This output is a classic output from old SCSI manuals where the bytes of the page are output in a series of rows across the screen in hexadecimal format. buffer - This output is a formatted buffer showing offsets on the top and side in hex. This will output each row with up to 16 bytes of data before moving to the next row. 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. May also be used with the --scan command. --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. Windows only: --csmiIgnorePort 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 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 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. 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. =============== 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 add endianness detection, device statistics support, 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.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. v1.12.2 21-Sep-2018 1_18_2 libraries Added in reading os-release PRETTY_NAME field to get the OS name under linux; NVMe enabled; fixed a bug in the ATA activate FW command; added in reading ID Data log and Device statistics logs page 0 to check the list of supported pages; fixed a bug in the loop used to read mode pages for -i information on SAS; IDD SAS improvements; fixed a bug in DST & Clean with ATA drives behind SCSI controllers. Fix for --modelMatch that have spaces in the name. Added additional information to the banner and -V data to show support levels. Add general support for NVMe and NVMe specific identify data to "-i" command. Add --freeFall v1.12.2 18-Oct-2018 1_18_3 libraries Added NVMe generic read command support. v1.13.0 07-Jan-2019 1_19_0 libraries added per device verbosity, --deviceInfo adds SAS (not SATA) FastFormat for Features Supported section. v1.14.0 24-Jan-2019 Add Log and Mode Page commands --scsiLPReset, --scsiLPResetPage, --scsiMPReset, --scsiMPRestore, --scsiMPSave, --setSCSIMP, --showMPOutputMode, --showSCSIMP, --showSCSIMPControl v1.15.0 10-Feb-2019 Device information now shows "Low Current Spinup" status v1.16.0 28-Feb-2019 Add ultra to --lowCurrentSpinup v1.17.0 03-May-2019 1_19_18 libraries added per device verbosity, --deviceInfo adds SAS (not SATA) FastFormat for Features Supported section. v1.17.0 10-Jun-2019 1_19_23 libraries added SNTL (SCSI to NVMe translator), updated software SAT translator to use dataset management XL command, fixes for issuing vendor unique commands under Windows, improved fast format support detection, and refactored verbose output for NVMe commands. v1.18.1 19-Feb-2020 1_21_30 libraries add in check for Elevated Privileges (sudo, run as administrator) before trying to talk to devices, new exit code 9 if privileges are missing; printing the USB VID/PID in the device info; fix to sg helper to support large systems; many changes in support of dual actuators (example: warning that EPC settings affect multiple LUNs); overhaul to USB device detection and support, incorporating a new USB hacks and workarounds approach which uses a lookup table listing various USB bridge VIDs/PIDs and their specific issues; separate Seagate SAS SN and PCBA SN. SeaChest_Erase.txt Revision: 19-Feb-2020 =============================================================================== SeaChest_Erase - Seagate drive utilities Copyright (c) 2014-2020 Seagate Technology LLC and/or its Affiliates, All Rights Reserved SeaChest_Erase Version: 2.1.1 Build Date: Feb 19 2020 =============================================================================== 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 - Linux (run with sudo) ============================= sudo SeaChest_Erase [-d <sg_device>] {arguments} {options} Examples - Linux ================ sudo SeaChest_Erase --scan sudo SeaChest_Erase -d /dev/sg2 -i sudo SeaChest_Erase --device /dev/sg1 --sanitize info Usage - Windows (run as administrator) ====================================== SeaChest_Erase [-d <PD_device>] {arguments} {options} Examples - Windows ================== SeaChest_Erase --scan SeaChest_Erase -d PD2 -i SeaChest_Erase --device PD1 --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. ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices nvme - show only NVMe devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface interfaceNVME - show devices on a NVMe interface Linux: sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping Windows: 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 <device handle> 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%. --psid [32-digit alpha numeric code from drive label] This option can be used to specify the value of the PSID. This may be required in order to perform certain TCG operations. 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. 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 --psid 123ALL32DIGITS123ALL32DIGITS123A --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. Example: --revert --sid yourTCGpassword --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. SATA Only ========= --ataSATsecurityProtocol [enable | disable] (SATA only) This option can be used to force enable or disable using the ATA security protocol as specified in the SAT specification. By default, the tool will use this method when it is supported to allow the SATL to understand and manage the security commands being performed and prevent other issues. Use this option to disable an ATA security password. If a drive lost power during an ATA Security Erase in SeaChest, then using the password SeaChest with type 'user' will remove the temporary password set by the utility. Example: --ataSATsecurityProtocol disable --ataSecPassword SeaChest --ataSecPassType user Some commands like --scan and --deviceInfo will still run on a locked drive. 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. See the --ataSecPWMod command below for additional alternatives. --ataSecPassword ["ASCII password" | SeaChest | empty] (SATA only) Use this option to specify a password to use with an ATA security operation. If specifying a password with spaces, quotes must be used. If SeaChest is given, the default SeaChest password will be used. If empty is given, an empty password will be used. Examples: "This is a valid password" ThisIsAlsoValid "This password uses \"quotes\" "This password is \/\/eird" Note: Windows PE offers an ATA Security Erase feature. If the erase is interrupted then a temporary password AutoATAWindowsString12345678901 is still set. Note: See the section below "When drives are reported Security "Frozen" by SeaChest". --ataSecPassType [user | master] (SATA only) Use this option to specify if the password being given with the --ataSecPassword option is a user or a master password. If this option is not provided, user is assumed. --ataSecPWMod [byteswapped | zeropad | spacepad | fpad | leftAlign | rightAlign | uppercase | lowercase | invertcase] (SATA Only) Use this option to have the utility make modifications to the ATA security password to attempt other various ways it may be sent by a system bios. These are not guaranteed to work, but may help unlock a drive that was locked by a BIOS that encoded the password in a unique way. This option can be presented multiple times to select multiple modifications. EX: --ataSecPWMod byteswapped --ataSecPWMod invertcase byteswapped - byteswaps the password. EX: blah -> lbha zeropad - zero pads the password if less than 32 characters spacepad - space pads the password if less than 32 characters fpad - pads the passwords with Fh (all 1's) if less than 32characters leftAlign - left aligns the password in the buffer rightAlign - right aligns the password in the buffer uppercase - sends the password as all uppercase lowercase - sends the password as all lowercase invertcase - switches uppercase for lower, and lowercase for upper Note: Windows PE offers an ATA Security Erase feature. If the erase is interrupted then a temporary password AutoATAWindowsString12345678901 is still set. Note: See the section below "When drives are reported Security "Frozen" by SeaChest". 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. May also be used with the --scan command. --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. --hideLBACounter Use this option to supress the output from options that show LBA counters without turning off all output to the screen. --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. Windows only: --csmiIgnorePort 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 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 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. 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. Consider using the --poll option to monitor % completion. * 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. --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 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 may be marked on the label with the word "SED". Requires the --psid code from the label. Note: To determine if your drive supports cryptographic erase you can run --showEraseSupport --deviceInfo (look for 'Encryption Support: Self Encrypting' and 'TCG'. Example: --revertSP --psid 123ALL32DIGITS123ALL32DIGITS123A Note: If a Secure product does not recognize the --revertSP --psid combination, try --revert --psid as the two commands are closely related. Note: See the section below "Enabling TCG Commands In Linux". --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. SATA Only ========= --ataSecureErase [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". SAS Only ======== --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: See the help topic below: About FastFormat 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 9 Need Elevated Privileges (sudo, run as administrator) Anything else = unknown error When drives are reported Security "Frozen"" by SeaChest ------------------------------------------------------ Note: Your system or the SeaChest software may report that a SATA password cannot be changed because it is "frozen". Many systems BIOS will automatically set the ATA SECURITY FREEZE LOCK command on all SATA drives at start up. The SECURITY FREEZE LOCK command prevents changes to all Security states until a following power-on reset or hardware reset. The purpose of the SECURITY FREEZE LOCK command is to prevent password setting attacks on the security system. The SeaChest --deviceInfo command will display something similar to this: "ATA Security Information: Supported, Frozen". To disable Freeze Lock, first check your BIOS SATA disk options to control the setting at start up. Otherwise, you might pause the boot up shortly after powering on the system and then temporarily remove the power to the security frozen drive (let it completely spin down). When the power is back on the drive it will start without being frozen. Windows systems may also decide not to recognize the drive if it is ATA Security Locked and it will not be listed by the SeaChest --scan command. If the drive remains undetected in Windows, your alternative is to make a bootable USB flash drive and run SeaChest_Erase from the Linux operating system. 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 acro