SeaChest_Firmware.Lin.txt Revision: 09-Mar-2017 =============================================================================== SeaChest_Firmware for Linux - Seagate drive utilities Copyright (c) 2017 Seagate Technology LLC, All Rights Reserved SeaChest_Firmware Version: 2.3.2 Build Date: Mar 09 2017 =============================================================================== Welcome to Seagate's SeaChest_Firmware diagnostic software. SeaChest_Firmware is a comprehensive command line tool that can be used to update firmware, also known as microcode, on Seagate disk drives (this includes Seagate, Maxtor, Samsung and LaCie). Seagate products are run by firmware. Having the latest firmware can improve performance and or reliability of your product. Seagate recommends applying new firmware to enhance the performance and or reliability of your drive. Like any software, firmware is improved over time and problems are also fixed.  Every drive family has a couple of firmware releases during the life of the product.  Please check in regularly to determine if new firmware is available for your drive. SeaChest_Firmware allows for both single drive and sequential batch mode firmware download. NOTE: SeaChest_Firmware may not be fully functional on non-Seagate drives. This User Guide file contains important information about SeaChest_Firmware. Please read this entire file before using this software. If this is your drive, you should always keep a current backup of your important data. Be very careful using SeaChest_Firmware. Power failure during a firmware download will cause data loss. Never apply firmware to a drive unless you are certain that the firmware data file is specifically prepared for your drive. Seagate is not responsible for lost user data. Usage ===== SeaChest_Firmware [-d ] {arguments} {options} Examples ======== SeaChest_Firmware --scan SeaChest_Firmware -d /dev/sg2 -i SeaChest_Firmware -d /dev/sg2 --fwdlInfo SeaChest_Firmware -d /dev/sg2 --downloadFW fwfilename SeaChest_Firmware -d /dev/sg2 --fwdlConfig configfile.cfs 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. -F, --scanFlags [option list] Use this option with -s to control the output from scan with the options listed below. Multiple options can be combined. sd - show /dev/sd? device handles sgtosd - show the sd and sg device handle mapping ata - show only ATA (SATA) devices usb - show only USB devices scsi - show only SCSI (SAS)) devices interfaceATA - show devices on an ATA interface interfaceUSB - show devices on a USB interface interfaceSCSI - show devices on a SCSI or SAS interface Examples of combining two options: -s --scanFlags usb scsi - show only USB and SAS devices --scan -F ata interfaceSCSI - show only SATA nearline drives on a SAS adapter -d, --device Use this option with all commands, except --scan, to specify the sg device handle (target drive) on which to perform an operation. See the section below 'Tool Usage Hints' for information about defining multiple device handles. Example: -d /dev/sg5 -i, --deviceInfo Show information and features for the storage device. USB devices will show the product name, serial and firmware numbers as communicated by the USB-SATA bridge. Add --usbChildInfo to display details about the drive within the USB enclosure. --SATInfo (SATA only) Displays SATA device information on any interface using both SCSI Inquiry/VPD/Log reported data (translated according to SAT) and the ATA Identify/Log reported data. --testUnitReady A simple check to see if the device responds to commands from interface. Ready or Not Ready are the outputs. Not Ready results will also include the full SCSI Sense Code. --fwdlInfo Use this option to show the firmware download support information for a drive. --downloadFW [fwfilename] (Seagate Only) Download firmware to a Seagate storage product. Use only Seagate authorized firmware data files which are designated for the specific model drive. Improper use of this option may harm a device and or its data. You may specify the path if the firmware data file is in a different location. This option will use segmented download by default. Use the --downloadMode option to specify a different download mode. --downloadMode [full | segmented | deferred] (Seagate Only) Use this command along with the --downloadFW option to set the firmware download mode. Supported Modes: full - Performs a download in one large transfer to the device. segmented - Downloads the firmware in multiple segments to the device. (Most compatible) deferred - Performs a segmented download to the device, but does not activate the new firmware until a power cycle or activate command is sent. Drives with this feature are not common. See --activateFW. Note: See the --modelMatch and --onlyFW utility options which may assist in creating commands to update multiple similar drives. --activateFW (Seagate Only) Use this option to issue the command to activate code that was sent to the drive using a deferred download command. This will immediately activate the new code on the drive. You can use this along with a --downloadFW and --downloadMode to automatically issue the activate command after the deferred download has completed. --fwdlConfig [config file] (SEAGATE ONLY) Use this option to specify a configuration file to perform an update based on a firmware match on multiple drives or a single drive in the system. You may specify the path if the file is in a different location. Configuration files consist of model numbers, previous compatible firmware and the appropriate matching new firmware. Configuration files may be written to support multiple models at a time. See the section below "Firmware Configuration Files" for more information on this subject. --fwdlDryRun Use this option to compare a given config file to the drives in a system without performing a firmware update. This can be used to check if any drives in the system require an update. --fwdlSegSize [segment size in 512B blocks] (SEAGATE ONLY) Use this option to specify a segment size in 512B blocks to use for a segmented or deferred download. This option will not affect an immediate download (full buffer at once). The default segment size used is 64. Larger segment sizes may be faster, however they may also be incompatible with controllers or drivers in the system. Smaller values are more likely to be compatible, but also slower. Use this option if the default used by the tool is not working correctly for firmware updates. Utility Options =============== -h, --help Show utility options and example usage (this output you see now) -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] Show verbose information. Verbosity levels are 0 - quiet, 1 - default 2 - command descriptions 3 - command descriptions and values 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3 -q, --quiet Run SeaChest in quiet mode. This is the same as -v0 or --verbose 0 -V, --version Show SeaChest version and copyright information & exit --license Display the Seagate End User License Agreement (EULA). --echoCommandLine Shows the command line above the banner in the standard output. Useful when saving output to logs. --enableLegacyUSBPassthrough Only use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. --sat12byte This forces the lower layer code to issue SAT spec ATA Pass-through 12-byte commands when possible instead of 16-byte commands. By default, 16-byte commands are always used for ATA Pass-through. USB products may need this option as a workaround if the default does not perform. --onlySeagate Use this option to match only Seagate drives for the options provided. --modelMatch [model Number] Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001 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. --newFW [firmware revision] Use this option to skip drives matching the provided firmware revision. This option will only do an exact match. This option should be used to skip performing an update if a drive already has this firmware revision loaded. --forceATA Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive. --forceATADMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceATAPIO (SATA Only) Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA. --forceATAUDMA (SATA Only) Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA. --forceSCSI Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive. Return codes ============ 0 No Error Found 1 Error in command line options 2 Invalid Device Handle or Missing Device Handle 3 Operation Failure 4 Operation not supported 5 Operation Aborted 6 File Path Not Found 7 Cannot Open File 8 File Already Exists Anything else = unknown error ================ Tool Usage Hints ================ See Sample Output examples below. First, run the SeaChest -s option to determine what /dev/sg? device handle assignment lines up to your disk drive. This option will also show you other details about the drive including the current firmware revision. Like this: Vendor Handle Model Number Serial Number FwRev ATA /dev/sg0 ST94813AS 3AA043KP 3.03 SEAGATE /dev/sg1 ST1000NM0011 ZAA15VAS SN03 All utility arguments will require you to identify the specific drive by providing the sg device handle (-d, --device). For example, SeaChest_Firmware -d /dev/sg1 --shortDST poll You may combine multiple tests with a single command line. For example, SeaChest_Firmware -d /dev/sg0 -i --smartCheck runs both identify and SMART. Multiple device handles can be given by adding -d /dev/sg# for each additional handle. Devices are processed in sequential order. For example, SeaChest_Basics -d /dev/sg0 -d /dev/sg3 -i runs identify on these two devices. Caution: All device handles may be specified. However, great care should be taken to fully anticipate the consequences of running a command on all storage devices in a system. For example, a command to erase data on all drives could be catastrophic or exactly what you want. The shortcut to select all devices is -d all. Seagate is not responsible for lost user data. Along with the designation for all devices, you can narrow the tasks to specific types of drives by using the --onlySeagate, --modelMatch and --onlyFW filters. Tests which alter the firmware or erase user data on the drive are limited to Seagate-only products which include Seagate, Maxtor, Samsung and LaCie. Tests which take a very long time to complete or erase all user data on the drive will require a longer command line argument than indicated in the --help output to the screen. This approach is taken to eliminate the possibility of accidental data loss or the commitment of long test times. The longer command arguments are similar to -I-understand-this-command-will-take-a-long-time or -I-understand-this-command-will-erase-all-data. Advanced SAS installations may use dual ports. These are listed as Port 0 and Port 1 on the device information report. When both ports are active, each one may have a unique /dev/sg designation. The scan option may indicate that there are two drives in the system with the same serial number. Dual port installations will also report two different Worldwide Numbers (WWN). ============================ Firmware Configuration Files ============================ There are two types of SeaChest_Firmware configuration (config) files: encrypted CFS and plain text CFG. Seagate-prepared configuration files are encrypted and carry the file extension CFS. Seagate does not decrypt or disclose the contents of its CFS files. Alternatively, you may prepare your own plain text configuration files which must use the file extension CFG. SeaChest_Firmware configuration files are simple text with multiple lines. Each line defines a model and previous firmware match up to a new firmware data file. The structure of each line is this: fullModelNumber;$FWREV$oldFwVersion;fwDataFile;(optional)$FWREV$newFwVersion No spaces, the first $FWREV$ and all three semi-colons (;) are mandatory. Note: The full model number is the ELECTRONIC version. The label shows a shorter version which may not include all of the necessary digits. When you run SeaChest -s or --scan the output will display the full electronic model number. For example the label may show ST4000DX001 but the full model is actually ST4000DX001-1CE168. You must use the full model numbers as given by the --scan command. The --scan commmand also shows the current firmware, such as CC46 or SN03 or 0002 or 0001SDM7. There are several possible variations. This corresponds to the old firmware version. You must precede the old firmware version with these exact characters $FWREV$, like $FWREV$0001SDM7. Seagate is the only authorized source for a firmware data file. The file name and or other documentation should provide the new firmware version for the file. The last section of the data line is optional, the new firmware version. If you include this information correctly, then SeaChest_Firmware may give a message stating that the drive already has the new firmware. If you omit the new firmware details then you must still end the text string with a semi-colon (;). For example, this is a four-line configuration file for three different models and three different firmware data files (not all model numbers have the longer electronic version): ST4000DX001-1CE168;$FWREV$CC42;BarracudaXT-CC44.LOD;$FWREV$CC44 ST4000DX001-1CE168;$FWREV$CC43;BarracudaXT-CC44.LOD;$FWREV$CC44 ST120FP0021;$FWREV$B770;SSD-B775.BIN; ST4000NM0043;$FWREV$0004;Constellation3TB-0005.lod;$FWREV$0005 Remember, no spaces, the first $FWREV$ and all three semi-colons (;) are mandatory. Caution: Firmware download configuration files assume you have knowledge about which models are compatible with the associated firmware files. If you are unsure about the compatibility then you should NOT attempt to download the firmware to the drive. Never apply firmware to a drive unless you are certain that the firmware data file is specifically prepared for your drive. Be very careful using SeaChest_Firmware. Power failure during a firmware download will cause data loss. Seagate is not responsible for lost user data. Finally, you may optionally add a hash check calculation on the firmware data file to the SeaChest_Firmware configuration file. Simply, run a MD5 calculation on the file and then add "@MD5=61b33014f2d2a4f9553f6ef64fb82e31" (substituting your calculation) immediately following the file name, before the semi-colon (;). For example: ST4000DX001-1CE168;$FWREV$CC43;BarracudaXT-CC44.LOD@MD5=61b33014f2d2a4f9553f6ef64fb82e31;$FWREV$CC44 SeaChest_Firmware will compare its own MD5 calculation to the value in the configuration file and if they do not match then the procedure will abort. =================== General Usage Hints =================== Remember that Linux file names and command line arguments are cAsE SeNsiTiVe. Display a file listing with the Linux command: ls -lah The tool will require root privileges to run using either sudo or su commands. Also, verify that the tool has executable rights. A dot slash is a dot followed immediately by a forward slash (./). It is used in Linux to execute a compiled program in the current directory when it is not a built-in command or found in your path. For example, ./SeaChest -d /dev/sg0 --shortDST poll or, sudo ./SeaChest -d /dev/sg0 --shortDST poll Shut down the files system and remove the power with the command: poweroff See previous screen history with the key combination: shift+pgup or shift+pgdn Save a log file by redirecting the screen output to a text file by adding space &>test.log at the end of your command line. Choose your own file name. To append the screen output to an existing log file use >>test.log. To save a log and display results at the conclusion of the tests, you can use the "tee" command. Tee command writes to the STDOUT and to a file. For example, SeaChest --echoCommandLine -d /dev/sg0 -i --smartCheck | tee -a mySeaChestLog.txt Display a log or text file with the Linux "less" command: less myfile.log Press the letter q to quit displaying the file. Similarly, you can easily read the Seagate License agreement by piping the output to the less command with SeaChest --license |less Display a list of sg (SCSI generic) devices with the command: cat /sys/class/scsi_generic/sg*/device/model or ls /dev/sg* sg devices include the following interfaces: SATA, USB, SCSI (SCSI, SAS and FC) Add the command word 'time' on the same command line before the SeaChest command to see how much time it takes to run a test. For example, time ./SeaChest -d /dev/sg0 --shortDST poll When drives are not detected by SeaChest ---------------------------------------- The problem is that the sg driver isn't loaded on the system on boot. You can test if it is loaded by doing "ls /dev/sg*" and see if anything shows up. If nothing shows up then the SG driver is missing (which is required by SeaChest to issue commands). You need to do "modprobe sg" as root to load the sg module (since it wasn't compiled into the kernel), then you will get sg devices that we can scan and find. Once you run the modprobe command and sg is successfully loaded, then you can re-run "ls /dev/sg*" and see SG device nodes. SeaChest tools should then be able to find devices once again. ============= Sample Output ============= SATA HDD Device Information: [sysop@localhost ~]$ sudo ./SeaChest_Firmware -i -d /dev/sg1 =============================================================================== SeaChest_Firmware - Seagate drive utilities Copyright (c) 2017 Seagate Technology LLC, All Rights Reserved =============================================================================== Model Number: ST4000DX001-1CE168 Serial Number: ZQ3034X7R Firmware Revision: CC44 World Wide Name: 500Q0C5007A5FCF19 Drive Capacity (TB/TiB): 4.00/3.64 Native Drive Capacity (TB/TiB): 4.00/3.64 Temperature Data: Current Temperature (C): 25 Highest Temperature (C): 40 Lowest Temperature (C): 18 Humidity Data: Current Humidity (%): Not Reported Highest Humidity (%): Not Reported Lowest Humidity (%): Not Reported Power On Time: 4 days 1 hour Power On Hours: 97.00 MaxLBA: 7814037167 Native MaxLBA: 7814037167 Logical Sector Size (B): 512 Physical Sector Size (B): 4096 Sector Alignment: 0 Rotation Rate (RPM): 5900 Form Factor (inch): 3.5 Last DST information: Time since last DST (hours): 0.00 DST Status/Result: 0x0 DST Test run: 0x1 Interface speed: Max Speed (Gb/s): 6.0 Negotiated Speed (Gb/s): 6.0 Annualized Workload Rate (TB/yr): 2.51 Total Bytes Read (GB): 6.65 Total Bytes Written (GB): 21.27 Drive Reported Utilization (%): Not Reported Encryption Support: Not Supported Cache Size (MiB): 64.00 Read Look-Ahead: Enabled Write Cache: Enabled SMART Status: Good ATA Security Information: Supported, Frozen Zoned Device Type: Not a Zoned Device Firmware Download Support: Immediate, Segmented Specifications Supported: ACS-2 ATA8-ACS ATA/ATAPI-7 ATA/ATAPI-6 ATA/ATAPI-5 ATA/ATAPI-4 SATA 3.1 SATA 3.0 SATA 2.6 SATA 2.5 SATA II: Extensions SATA 1.0a Features Supported: NCQ HPA Power Management Security SMART DCO 48bit Address APM GPL Free-fall Control Write-Read-Verify SATA SSD Device Information: [sysop@localhost ~]$ sudo ./SeaChest_Firmware -d /dev/sg1 -i =============================================================================== SeaChest_Firmware - Seagate drive utilities Copyright (c) 2017 Seagate Technology LLC, All Rights Reserved =============================================================================== Model Number: ST120FP0021 Serial Number: PQ57011BD Firmware Revision: B770 World Wide Name: 5000C501005A16633 Drive Capacity (GB/GiB): 120.03/111.79 Native Drive Capacity (GB/GiB): 120.03/111.79 Temperature Data: Current Temperature (C): 26 Highest Temperature (C): 0 Lowest Temperature (C): 17 Humidity Data: Current Humidity (%): Not Reported Highest Humidity (%): Not Reported Lowest Humidity (%): Not Reported Power On Time: 2 days 23 hours Power On Hours: 71.00 MaxLBA: 234441647 Native MaxLBA: 234441647 Logical Sector Size (B): 512 Physical Sector Size (B): 4096 Sector Alignment: 0 Rotation Rate (RPM): SSD Form Factor (inch): 2.5 Last DST information: Not supported Interface speed: Max Speed (Gb/s): 6.0 Negotiated Speed (Gb/s): 3.0 Annualized Workload Rate (TB/yr): 299.80 Total Bytes Read (TB): 2.35 Total Bytes Written (GB): 90.19 Drive Reported Utilization (%): Not Reported Encryption Support: Not Supported Cache Size (MiB): Not Reported Percentage Used Endurance Indicator (%): 1.00437 Read Look-Ahead: Enabled Write Cache: Enabled SMART Status: Good ATA Security Information: Supported, Frozen Zoned Device Type: Not a Zoned Device Firmware Download Support: Immediate, Segmented Specifications Supported: ATA8-ACS ATA/ATAPI-7 ATA/ATAPI-6 ATA/ATAPI-5 ATA/ATAPI-4 SATA 3.0 Features Supported: Sanitize NCQ HPA Power Management Security SMART 48bit Address GPL TRIM SAS HDD Device Information: [sysop@localhost ~]$ sudo ./SeaChest_Firmware -i -d /dev/sg2 =============================================================================== SeaChest_Firmware - Seagate drive utilities Copyright (c) 2017 Seagate Technology LLC, All Rights Reserved =============================================================================== Model Number: ST4000NM0043 Serial Number: Z1QZ04KVG Firmware Revision: 0004 World Wide Name: 500Q0C5005594AEFB Copyright: Copyright (c) 2014 Seagate All rights reserved Drive Capacity (TB/TiB): 4.00/3.64 Temperature Data: Current Temperature (C): 28 Highest Temperature (C): Not Reported Lowest Temperature (C): Not Reported Humidity Data: Current Humidity (%): Not Reported Highest Humidity (%): Not Reported Lowest Humidity (%): Not Reported Power On Time: 61 days 11 hours 14 minutes Power On Hours: 1475.23 MaxLBA: 7814037167 Native MaxLBA: Not Reported Logical Sector Size (B): 512 Physical Sector Size (B): 512 Sector Alignment: 0 Rotation Rate (RPM): 7200 Form Factor (inch): 3.5 Last DST information: Time since last DST (hours): 548.23 DST Status/Result: 0x0 DST Test run: 0x1 Interface speed: Port 0 (Current Port) Max Speed (GB/s): 6.0 Negotiated Speed (Gb/s): 3.0 Port 1 Max Speed (GB/s): 6.0 Negotiated Speed (Gb/s): Not Reported Annualized Workload Rate (TB/yr): 0.02 Total Bytes Read (GB): 2.27 Total Bytes Written (GB): 2.39 Drive Reported Utilization (%): Not Reported Encryption Support: Self Encrypting Cache Size (MiB): Not Reported Read Look-Ahead: Enabled Write Cache: Enabled SMART Status: Good ATA Security Information: Not Supported Zoned Device Type: Not a Zoned Device Firmware Download Support: Immediate Specifications Supported: SPC-4 Features Supported: EPC TCG Self Test Informational Exceptions Format Unit Sanitize SAS SSD: Device Information [sysop@localhost ~]$ sudo ./SeaChest_Firmware -d /dev/sg3 -i =============================================================================== SeaChest_Firmware - Seagate drive utilities Copyright (c) 2017 Seagate Technology LLC, All Rights Reserved =============================================================================== Model Number: ST400FM0053 Serial Number: P3QF13026 Firmware Revision: 0006 World Wide Name: 5000QC50069010B4B Copyright: Copyright (c) 2014 Seagate All rights reserved - Drive Capacity (GB/GiB): 400.09/372.61 Temperature Data: Current Temperature (C): 34 Highest Temperature (C): Not Reported Lowest Temperature (C): Not Reported Humidity Data: Current Humidity (%): Not Reported Highest Humidity (%): Not Reported Lowest Humidity (%): Not Reported Power On Time: 30 days 21 hours 29 minutes Power On Hours: 741.48 MaxLBA: 781422767 Native MaxLBA: Not Reported Logical Sector Size (B): 512 Physical Sector Size (B): 4096 Sector Alignment: 0 Rotation Rate (RPM): SSD Form Factor (inch): 2.5 Last DST information: Time since last DST (hours): 434.48 DST Status/Result: 0x0 DST Test run: 0x1 Interface speed: Port 0 (Current Port) Max Speed (GB/s): 12.0 Negotiated Speed (Gb/s): 3.0 Port 1 Max Speed (GB/s): 12.0 Negotiated Speed (Gb/s): Not Reported Annualized Workload Rate (TB/yr): 9.48 Total Bytes Read (GB): 24.62 Total Bytes Written (GB): 837.41 Drive Reported Utilization (%): Not Reported Encryption Support: Not Supported Cache Size (MiB): Not Reported Percentage Used Endurance Indicator (%): 1.00000 Read Look-Ahead: Enabled Write Cache: Enabled SMART Status: Good ATA Security Information: Not Supported Zoned Device Type: Not a Zoned Device Firmware Download Support: Immediate, Segmented, Deferred Specifications Supported: SPC-4 Features Supported: EPC Power Comsumption UNMAP Self Test Informational Exceptions Format Unit Sanitize =============== Version History =============== v0.0.1 22-Mar-2016 1_9_1 libraries. SeaChest_Firmware Linux, initial beta test release. Branched from SeaChest_Basics v1.1.0. Adds firmware download batch modes by model number and various firmware revision checks. v0.0.2 19-May-2016 1_9_2 libraries fixed scan information from ATAPI devices. Fixed a bug where we could accidentally clear some stored identify data from the device structure. Fixed continuing on when there was a permission denied error opening a drive. v1.0.0 15-Jun-2016 1_9_3 libraries fixed issues with ATA secure erase commands. Fixed bugs with --modelMatch and --onlyFW filters. v1.1.0 06-Jul-2016 1_10_0 libraries add --forceATA and --forceSCSI. v1.1.0 14-Jul-2016 1_10_1 libraries adds SMART and power management functions, format polling, endianess detection, buffer size fixes, SAS device statistics, Win32 IOCTL pass-through fix on Win8 and higher. v2.0.3 16-Aug-2016 Adds --fwdlInfo, --activateFW, --fwdlConfig and --fwdlSegSize. Add user defined configuration files. v2.1.0 01-Sep-2016 1_11_1 libraries updates to various printed message, minor bug fixes. Fixed --SATInfo command. After firmware download messages improved. Logic to exclude using both --fwdlConfig and --downloadFW at the same time. v2.1.0 21-Sep-2016 1_11_2 libraries updates adds --forceATADMA, --forceATAPIO and --forceATAUDMA (SATA Only). v2.2.0 10-Oct-2016 1_11_4 libraries updates. Support for multiple devices. v2.2.0 25-Oct-2016 1_11_5 libraries updates improved LaCie detection, adds SAT Vendor ID, SAT Product ID, and SAT Product Revision to the -i --SATInfo output. v2.2.2 27-Oct-2016 1_11_6 libraries updates WWN detection. Added --enableLegacyUSBPassthrough v2.2.2 03-Nov-2016 1_11_7 libraries fixed issue with SAS EPC power mode settings. v2.2.2 13-Dec-2016 1_11_10 libraries fixes a problem when using maxLBA without the corresponding command range option, SAS power mode setting, and Sanitize erase patterns. v2.3.0 23-Feb-2017 1_13_0 libraries adds support for SAS 12.0Gb/s and 22.5Gb/s physical bus speeds, support for double buffered passthrough IOCTLs. Add --fwdlDryRun. v2.3.0 06-Mar-2017 1_13_2 libraries adds Enhanced device information output for SAS features. v2.3.2 09-Mar-2017 Fixes to config file processing. ======================================= About SeaChest Command Line Diagnostics ======================================= Seagate offers both graphical user interface (GUI) and command line interface (CLI) diagnostic tools for our storage devices. SeaTools for Windows and SeaTools Bootable for end users are the two most popular GUI tools. These tools support 15 languages. SeaChest diagnostics are command line utilities which are available for expert users. These command line tools assume the user is knowledgeable about running software from the operating system command prompt. CLI tools are in the English language only and use "command line arguments" to define the various tasks and specific devices. SeaChest diagnostics are available for both Linux and Windows environments. Linux versions of SeaChest tools are available as stand alone 32 or 64-bit executables you can copy to your own system. Windows OS versions of SeaChest diagnostics are installed through a typical setup wizard and can be removed via the Control Panel. In addition, Seagate offers a tool to build a bootable USB SeaChest flash drive which boots to a 32-bit Linux command prompt. This is a Windows executable file which formats a USB Flash drive you provide. It copies over all the files needed to use it as a bootable device for the SeaChest diagnostic software. All data on the USB Flash drive will be erased so be sure to protect any valuable files. Technical Support for SeaChest drive utilities is not available. If you have the time to send us some feedback about this software, especially if you notice something we should fix or improve, we would greatly appreciate hearing from you. To report your comments and suggestions, please use this email seaboard@seagate.com. Please let us know the name and version of the tool you are using. SeaChest drive utilities support SATA, SAS and USB interface devices. SeaChest Basics - Contains the most important tests and tools. Other SeaChest "break out" utilities are available and listed below which offer more in-depth functionality in specific areas. These are: SeaChest Configure - Tools to control various settings on the drives are brought together into this one tool. Typical commands, for example, include Write Cache and Read Lookahead Cache enable or disable. SeaChest Erase - The focus is on data erasure. There are many different choices for erasing data from simple boot track erase to full cryptographic erasure (when supported). Be sure to back up important data before using this tool. Seagate is not responsible for lost user data. This tool only works on Seagate drives. SeaChest Firmware - Seagate products are run by firmware. Having the latest firmware can improve performance and or reliability of your product. Seagate recommends applying new firmware to enhance the performance and or reliability of your drive. Most products may see one or two firmware updates within the early life of the product. SeaChest GenericTests - Read Tests are the original disk drive diagnostic which is to just read every sector on the drive, sequentially. This tool offers several common read tests which can be defined by either time or range. In addition, the Long Generic test has the ability to repair problem sectors, possibly eliminating an unnecessary drive return. SeaChest Info - Historical generic activity logs (like total bytes written and power on hours) and performance logs (like temperature) are available for analytical review. Identification and inquiry data stored on the drive is also provided. A view of SMART and device statistics is available when supported by the drive. SeaChest PowerChoice - Seagate disk drives offer a multitude of options to manage power. This tool manipulates the various power modes. SeaChest Security - Various settings are available on modern Seagate disk drives which may be locked and unlocked. These settings may interact with the operating systems and systems BIOS. Options also include cryptographic erase for Self-Encrypting Drives (SED). SeaChest SMART - This tool provides a closer look at the collected SMART attributes data. SMART stands for Self-Monitoring, Analysis and Reporting Technology. Short Drive Self Test is included as one of the standard SMART commands. In addition, the DST & Clean test has the ability to repair problem sectors, possibly eliminating an unnecessary drive return. ================================= Support and Open Source Statement ================================= Seagate offers technical support for disk drive installation. If you have any questions related to Seagate products and technologies, feel free to submit your request on our web site. See the web site for a list of world-wide telephone numbers. Seagate Support: http://www.seagate.com/support-home/ Contact Us: http://www.seagate.com/contacts/ Please report bugs/suggestions to seaboard@seagate.com. Include the output of --version information in the email. See the user guide section 'General Usage Hints' for information about saving output to a log file. This software uses open source packages obtained with permission from the relevant parties. For a complete list of open source components, sources and licenses, please see our Linux USB Boot Maker Utility FAQ for additional information. The newest online version of the SeaChest Utilities documentation, open source usage and acknowledgement licenses, and our Linux USB Boot Maker FAQ can be found at: http://support.seagate.com/firmware/usbbootmaker_faq.html SeaChest_Firmware uses two open source projects named mbedtls and zlib.h, licenses shown below. Copyright (c) 2017 Seagate Technology LLC. All rights reserved. ====================================================================== END USER LICENSE AGREEMENT FOR SEAGATE SOFTWARE PLEASE READ THIS END USER LICENSE AGREEMENT ("EULA") CAREFULLY. BY CLICKING "I AGREE" OR TAKING ANY STEP TO DOWNLOAD, SET-UP, INSTALL OR USE ALL OR ANY PORTION OF THIS PRODUCT (INCLUDING, BUT NOT LIMITED TO, THE SOFTWARE AND ASSOCIATED FILES (THE "SOFTWARE"), HARDWARE ("HARDWARE"), DISK (S), OR OTHER MEDIA) (COLLECTIVELY, THE "PRODUCT") YOU AND YOUR COMPANY ACCEPT ALL THE TERMS AND CONDITIONS OF THIS EULA. IF YOU ACQUIRE THIS PRODUCT FOR YOUR COMPANY’S USE, YOU REPRESENT THAT YOU ARE AN AUTHORIZED REPRESENTATIVE WHO HAS THE AUTHORITY TO LEGALLY BIND YOUR COMPANY TO THIS EULA. IF YOU DO NOT AGREE, DO NOT CLICK "I AGREE" AND DO NOT DOWNLOAD, SET-UP, INSTALL OR USE THE SOFTWARE. 1. Ownership. This EULA applies to the Software and Products of Seagate Technology LLC and the affiliates controlled by, under common control with, or controlling Seagate Technology LLC, including but not limited to affiliates operating under the LaCie name or brand, (collectively, "Seagate", "we", "us", "our"). Seagate and its suppliers own all right, title, and interest in and to the Software, including all intellectual property rights therein. The Software is licensed, not sold. The structure, organization, and code of the Software are the valuable trade secrets and confidential information of Seagate and its suppliers. The Software is protected by copyright and other intellectual property laws and treaties, including, without limitation, the copyright laws of the United States and other countries. The term "Software" does not refer to or include "Third-Party Software". "Third-Party Software" means certain software licensed by Seagate from third parties that may be provided with the specific version of Software that you have licensed. The Third-Party Software is generally not governed by the terms set forth below but is subject to different terms and conditions imposed by the licensors of such Third-Party Software. The terms of your use of the Third-Party Software are subject to and governed by the respective license terms, except that this Section 1 and Sections 5 and 6 of this Agreement also govern your use of the Third-Party Software. You may identify and view the relevant licenses and/or notices for such Third-Party Software for the Software you have received pursuant to this EULA at http://www.seagate.com/support/by-topic/downloads/ , or at http://www.lacie.com/support/ for LaCie branded product. You agree to comply with the terms and conditions contained in all such Third-Party Software licenses with respect to the applicable Third-Party Software. Where applicable, the URLs for sites where you may obtain source code for the Third Party Software can be found at http://www.seagate.com/support/by-topic/downloads/, or at http://www.lacie.com/support/ for LaCie branded product. 2. Product License. Subject to your compliance with the terms of this EULA, Seagate grants you a personal, non-exclusive, non-transferable, limited license to install and use one (1) copy of the Software on one (1) device residing on your premises, internally and only for the purposes described in the associated documentation. Use of some third party software included on the media provided with the Product may be subject to terms and conditions of a separate license agreement; this license agreement may be contained in a "Read Me" file located on the media that accompanies that Product. The Software includes components that enable you to link to and use certain services provided by third parties ("Third Party Services"). Your use of the Third Party Services is subject to your agreement with the applicable third party service provider. Except as expressly stated herein, this EULA does not grant you any intellectual property rights in the Product. Seagate and its suppliers reserve all rights not expressly granted to you. There are no implied rights. 2.1 Software. You are also permitted to make a single copy of the Software strictly for backup and disaster recovery purposes. You may not alter or modify the Software or create a new installer for the Software. The Software is licensed and distributed by Seagate for use with its storage products only, and may not be used with non-Seagate storage product. 3. Restrictions. You are not licensed to do any of the following: a. Create derivative works based on the Product or any part or component thereof, including, but not limited to, the Software; b. Reproduce the Product, in whole or in part; c. Except as expressly authorized by Section 11 below, sell, assign, license, disclose, or otherwise transfer or make available the Product, in whole or in part, to any third party; d. Alter, translate, decompile, or attempt to reverse engineer the Product or any part or component thereof, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this contractual prohibition; e. Use the Product to provide services to third parties; f. Take any actions that would cause the Software to become subject to any open source license agreement if it is not already subject to such an agreement; and g. Remove or alter any proprietary notices or marks on the Product. 4. Updates. If you receive an update or an upgrade to, or a new version of, any Software ("Update") you must possess a valid license to the previous version in order to use the Update. All Updates provided to you shall be subject to the terms and conditions of this EULA. If you receive an Update, you may continue to use the previous version(s) of the Software in your possession, custody or control. Seagate shall have no obligation to support the previous versions of the Software upon availability of an Update. Seagate has no obligation to provide support, maintenance, Updates, or modifications under this EULA. 5. NO WARRANTY. THE PRODUCT AND THE THIRD-PARTY SOFTWARE ARE OFFERED ON AN "AS-IS" BASIS AND NO WARRANTY, EITHER EXPRESS OR IMPLIED, IS GIVEN. SEAGATE AND ITS SUPPLIERS EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND, WHETHER STATUTORY, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. SEAGATE DOES NOT PROVIDE THE THIRD PARTY SERVICES AND MAKES NO WARRANTIES WITH RESPECT TO THE THIRD PARTY SERVICES. YOUR USE OF THE THIRD PARTY SERVICES IS AT YOUR RISK. 6. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL, AND CERTAIN OTHER DAMAGES. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL SEAGATE OR ITS LICENSORS OR SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS OR CONFIDENTIAL OR OTHER INFORMATION, FOR BUSINESS INTERRUPTION, FOR PERSONAL INJURY, FOR LOSS OF PRIVACY, FOR FAILURE TO MEET ANY DUTY INCLUDING OF GOOD FAITH OR REASONABLE CARE, FOR NEGLIGENCE, AND FOR ANY OTHER PECUNIARY OR OTHER LOSS WHATSOEVER) ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OF OR INABILITY TO USE THE PRODUCT OR ANY PART OR COMPONENT THEREOF OR RELATED SERVICE OR ANY THIRD PARTY SERVICES, OR OTHERWISE UNDER OR IN CONNECTION WITH ANY PROVISION OF THE EULA, EVEN IN THE EVENT OF THE FAULT, TORT (INCLUDING NEGLIGENCE), MISREPRESENTATION, STRICT LIABILITY, BREACH OF CONTRACT, OR BREACH OF WARRANTY OF SEAGATE OR ITS LICENSORS OR SUPPLIERS, AND EVEN IF SEAGATE OR ITS LICENSOR OR SUPPLIER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING ANY FAILURE OF THE ESSENTIAL PURPOSE OF THIS AGREEMENT OR ANY REMEDY. 7. LIMITATION OF LIABILITY. NOTWITHSTANDING ANY DAMAGES THAT YOU MIGHT INCUR FOR ANY REASON WHATSOEVER, THE ENTIRE LIABILITY OF SEAGATE UNDER ANY PROVISION OF THIS EULA AND YOUR EXCLUSIVE REMEDY HEREUNDER SHALL BE LIMITED TO, AND IN NO EVENT WILL SEAGATE'S TOTAL CUMULATIVE DAMAGES EXCEED, THE FEES PAID BY THE LICENSEE TO SEAGATE FOR THE PRODUCT. ADDITIONALLY, IN NO EVENT SHALL SEAGATE'S LICENSORS OR SUPPLIERS BE LIABLE FOR ANY DAMAGES OF ANY KIND. 8. Privacy. Seagate’s collection, use and disclosure of personally identifiable information in connection with your use of the Product is governed by Seagate’s Privacy Policy which is located at http://www.seagate.com/legal-privacy/privacy-policy/As further described in Seagate’s Privacy Policy, certain Products may include a Product dashboard which allows users to manage Product settings, including but not limited to use of anonymous statistical usage data in connection with personally identifiable information. You agree to Seagate’s collection, use, and disclosure of your data in accordance with the Product dashboard settings selected by you for the Product, or in the case of transfer as described in Section 11, you agree to the settings selected by the prior licensee unless or until you make changes to the settings. 9. Indemnification. By accepting the EULA, you agree to indemnify and otherwise hold harmless Seagate, its officers, employees, agents, subsidiaries, affiliates, and other partners from any direct, indirect, incidental, special, consequential or exemplary damages arising out of, relating to, or resulting from your use of the Product or any other matter relating to the Product, including, without limitation, use of any of the Third Party Services. 10. International Trade Compliance. The Software and any related technical data made available for download under this EULA are subject to the customs and export control laws and regulations of the United States ("U.S.") and may also be subject to the customs and export laws and regulations of the country in which the download is contemplated. Further, under U.S. law, the Software and any related technical data made available for download under this EULA may not be sold, leased or otherwise transferred to restricted countries, or used by a restricted end-user (as determined on any one of the U.S. government restricted parties lists, found at http://www.bis.doc.gov/complianceandenforcement/liststocheck.htm) or an end-user engaged in activities related to weapons of mass destruction including, without limitation, activities related to designing, developing, producing or using nuclear weapons, materials, or facilities, missiles or supporting missile projects, or chemical or biological weapons. You acknowledge that you are not a citizen, national, or resident of, and are not under control of the governments of Cuba, Iran, North Korea, Sudan or Syria; are not otherwise a restricted end-user as defined by U.S. export control laws; and are not engaged in proliferation activities. Further, you acknowledge that you will not download or otherwise export or re-export the Software or any related technical data directly or indirectly to the above-mentioned countries or to citizens, nationals, or residents of those countries, or to any other restricted end user or for any restricted end-use. 11. General. This EULA between Licensee and Seagate is governed by and construed in accordance with the laws of the State of California without regard to conflict of laws principles. The EULA constitutes the entire agreement between Seagate and you relating to the Product and governs your use of the Product, superseding any prior agreement between you and Seagate relating to the subject matter hereof. If any provision of this EULA is held by a court of competent jurisdiction to be contrary to law, such provision will be changed and interpreted so as to best accomplish the objectives of the original provision to the fullest extent allowed by law and the remaining provisions of the EULA will remain in force and effect. The Product and any related technical data are provided with restricted rights. Use, duplication, or disclosure by the U.S. government is subject to the restrictions as set forth in subparagraph (c)(1)(iii) of DFARS 252.227-7013 (The Rights in Technical Data and Computer Product) or subparagraphs (c)(1) and (2) of 48 CFR 52.227-19 (Commercial Computer Product - Restricted Rights), as applicable. The manufacturer is Seagate. You may not transfer or assign this EULA or any rights under this EULA, except that you may make a one-time, permanent transfer of this EULA and the Software to another end user, provided that (i) you do not retain any copies of the Software, the Hardware, the media and printed materials, Upgrades (if any), and this EULA, and (ii) prior to the transfer, the end user receiving this EULA and the Software agrees to all the EULA terms. Any attempted assignment in violation of this Section is void. Seagate, the Seagate logo, and other Seagate names and logos are the trademarks of Seagate. 5.4.2016 =========================================================================== GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (c) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: * a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or * b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: * a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. * b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: * a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. * b) Accompany the Combined Work with a copy of the GNU GPL and this license document. * c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. * d) Do one of the following: o 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. o 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. * e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: * a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. * b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. =========================================================================== mbedtls - An open source, portable, easy to use, readable and flexible SSL library https://tls.mbed.org Modifications: -added DES & 3DES CFB cipher encryption and decryption support Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source,and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. =========================================================================== zlib.h -- interface of the 'zlib' general purpose compression library version 1.2.8, April 28th, 2013 Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jean-loup Gailly Mark Adler jloup@gzip.org madler@alumni.caltech.edu