{"id":13576076,"url":"https://github.com/Seagate/openSeaChest","last_synced_at":"2025-04-05T05:30:45.212Z","repository":{"id":37561595,"uuid":"110262805","full_name":"Seagate/openSeaChest","owner":"Seagate","description":"Cross platform utilities useful for performing various operations on SATA, SAS, NVMe, and USB storage devices.","archived":false,"fork":false,"pushed_at":"2025-03-24T16:20:49.000Z","size":5831,"stargazers_count":583,"open_issues_count":48,"forks_count":67,"subscribers_count":25,"default_branch":"develop","last_synced_at":"2025-03-24T17:28:57.324Z","etag":null,"topics":["ata","hdd","hdd-health","ide","nvme","openseachest-utilities","sata","scsi","seagate","ssd","storage-device","usb-interface"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Seagate.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-10T15:34:35.000Z","updated_at":"2025-03-24T16:49:21.000Z","dependencies_parsed_at":"2024-01-14T03:50:26.074Z","dependency_job_id":"8223a968-dad4-443f-9669-e45983a760a9","html_url":"https://github.com/Seagate/openSeaChest","commit_stats":null,"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seagate%2FopenSeaChest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seagate%2FopenSeaChest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seagate%2FopenSeaChest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seagate%2FopenSeaChest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Seagate","download_url":"https://codeload.github.com/Seagate/openSeaChest/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294068,"owners_count":20915330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ata","hdd","hdd-health","ide","nvme","openseachest-utilities","sata","scsi","seagate","ssd","storage-device","usb-interface"],"created_at":"2024-08-01T15:01:06.809Z","updated_at":"2025-04-05T05:30:40.198Z","avatar_url":"https://github.com/Seagate.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"\n# openSeaChest\n\n## Cross platform utilities useful for performing various operations on SATA, SAS, NVMe, and USB storage devices\n\n### Copyright (c) 2014-2024 Seagate Technology LLC and/or its Affiliates, All Rights Reserved\n\n[![MSBuild](https://github.com/Seagate/openSeaChest/actions/workflows/msbuild.yml/badge.svg)](https://github.com/Seagate/openSeaChest/actions/workflows/msbuild.yml)\n[![CodeQL](https://github.com/Seagate/openSeaChest/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/Seagate/openSeaChest/actions/workflows/codeql-analysis.yml)\n[![C/C++ CI](https://github.com/Seagate/openSeaChest/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/Seagate/openSeaChest/actions/workflows/c-cpp.yml)\n[![FreeBSD build status](https://api.cirrus-ci.com/github/Seagate/openSeaChest.svg)](https://cirrus-ci.com/github/Seagate/openSeaChest)\n[![License: Mozilla Public License 2.0](https://img.shields.io/badge/License-MPL--2.0-blue.svg?longCache=true)](https://opensource.org/licenses/MPL-2.0)\n![OS](https://img.shields.io/badge/OS-Windows-blue)\n![OS](https://img.shields.io/badge/OS-Linux-blue)\n![OS](https://img.shields.io/badge/OS-FreeBSD-blue)\n\n\nWelcome to the `openSeaChest` open source project!\n\nopenSeaChest is a collection of comprehensive, easy-to-use command line\ndiagnostic tools and programming libraries for storage devices that help you\nquickly determine the health and status of your storage product.  The collection\nincludes several tests that show device information, properties and settings.\nIt includes several tests which may modify the storage product such as power\nmanagement features or firmware download.  It includes various commands to\nexamine the physical media on your storage device.  Close to 200 commands and\nsub-commands are available in the various openSeaChest utilities.  These are described in more detail below.\n\nHere is an overview presentation we gave at the *Storage Networking Industry Association - Storage Developer Conference 2018* that describes the design architecture for the **_opensea API_** and **_openSeaChest_** storage resource management utilities:\n\n[![Video: SDC 2018 - What's better than sg3_utils, hdparm, sdparm?](https://img.youtube.com/vi/LMt8Ztlj5oQ/hqdefault.jpg)][video]\n\n(Note: The openSeaChest team has the utmost respect for the highly regarded [sg3_utils](http://sg.danny.cz/sg/sg3_utils.html), [hdparm](https://sourceforge.net/projects/hdparm/), [sdparm](http://sg.danny.cz/sg/sdparm.html) and [nvme-cli](https://github.com/linux-nvme/nvme-cli) open source projects.  Since this is all pretty low-level stuff, we chose the presentation title *\"What's better than sg3_utils, hdparm, sdparm?\"* only to grab the attention of a few extra people attending the [SNIA SDC 2018 conference](https://www.snia.org/events/storage-developer/presentations18).)\n\n[video]: https://www.youtube.com/watch?v=LMt8Ztlj5oQ\n\n### About openSeaChest Command Line Diagnostics\n\nSeagate offers both graphical user interface (GUI) and command line interface\n(CLI) diagnostic tools for our storage devices.  SeaTools for end users is the\nmost popular GUI tools  These tools support 15 languages.\n\nopenSeaChest diagnostics are command line utilities which are available for\nexpert users.  These command line tools assume the user is knowledgeable about\nrunning software from the operating system command prompt.  CLI tools are in\nthe English language only and use \"command line arguments\" to define the\nvarious tasks and specific devices.  openSeaChest diagnostics are available for\nboth Linux and Windows environments.\n\nLinux versions of openSeaChest tools are available as stand alone 32 or 64-bit\nexecutables you can copy to your own system.  Windows OS versions of\nopenSeaChest diagnostics are also available.\n\nTechnical Support for openSeaChest drive utilities is not available.  If you\nhave the time to send us some feedback about this software, especially if you\nnotice something we should fix or improve, we would greatly appreciate hearing\nfrom you.  To report your comments and suggestions, please use the issue\nreporting feature available in this git repository.  Additionally, you can\ncontact us through this email address seaboard @ seagate.com.  Please let us\nknow the name and version of the tool you are using.\n\nopenSeaChest drive utilities support SATA, SAS, NVMe and USB interface devices.  In some cases openSeaChest has successfully recognized PATA and SCSI legacy devices, although the software is not expected to do so.\n\n**openSeaChest_Basics** - Contains the most important tests and tools.  These include Drive Self Test (DST), Device Information, simple firmware download, and a few of the simple data erasure commands.\n\nOther openSeaChest \"break out\" utilities are available and listed below which\noffer more in-depth functionality in specific areas. These are:\n\n**openSeaChest_Configure** - Tools to control various settings on the drives are\nbrought together into this one tool.  Typical commands, for example, include\nWrite Cache and Read Lookahead Cache enable or disable.  This is where you will find SCSI Mode Page and SCSI Log Page commands.\n\n**openSeaChest_Erase** - The focus is on data erasure.  There are many different\nchoices for erasing data... from simple boot track erase to full cryptographic\nerasure (when supported).  Some commands can take many hours to complete while\nothers may take less than a minute.  This tool is designed to erase data which will\nbe lost forever so be sure to back up important data before using this tool.  Actually, you should **always** maintain ongoing backups of your important data even if you do not intend to erase your drive.  Seagate is not responsible for lost user data.\n\n**openSeaChest_Firmware** - Seagate products are run by firmware.  Having the\nlatest firmware can improve performance and or reliability of your product.\nSeagate recommends applying new firmware to enhance the performance and or\nreliability of your drive.  Most products may see one or two firmware updates\nwithin the early life of the product.\n\n**openSeaChest_Format** - Storage products which utilize the SAS, SCSI or Fibre\nChannel interfaces are able to perform a full low-level media format in the\nfield.  The SCSI Format Unit command offers many specialty options to\naccommodate a variety of conditions and to fine tune the procedure.  This\ncomplex command deserves its own \"break out\" utility.\n\n**openSeaChest_GenericTests** - Read Tests are the original disk drive diagnostic\nwhich is to just read every sector on the drive, sequentially.  This tool\noffers several common read tests which can be defined by either time or range.\nIn addition, the Long Generic test has the ability to repair problem sectors,\npossibly eliminating an unnecessary drive return.\n\n**openSeaChest_Info** - Historical generic activity logs (like total bytes written\nand power on hours) and performance logs (like temperature) are available for\nanalytical review.  Identification and inquiry data stored on the drive is also\nprovided.  A view of SMART and Device Statistics is available when supported by\nthe drive.\n\n**openSeaChest_Logs** - Several binary logs are maintained on disk drives.  These logs are not stored in the user data area. Sometimes these logs are reviewed by\nsupport engineers to help analyze event history on the device.  These binary\ndata logs are saved to filenames using the drive's serial number and date-time.\nSome logs are Seagate-specific while many others are common to the interface\nspecifications.  Several of these binary logs may be parsed into human-readable form by using the openSeaChest_LogParser utility.\n\n**openSeaChest_NVMe** - NVMe interface devices tend to have unique commands and challenges.  Many of these commands are also unique to NVMe SSD products.  This tool gathers the most important commands under one title.  This tool is similar to openSeaChest_Basics but for NVMe.\n\n**openSeaChest_PassThroughTest** - A comprehensive command line tool that can be\nused to identify and analyze the unique quirks which may be present in a\nUSB-to-SATA or USB-to-NVMe bridge adapter.  The findings from this tool are\nstudied to help optimize openSeaChest libraries to send the best and safest\ndevice interface commands, which are passed through to the storage device.\n\n**openSeaChest_PowerControl** - Disk drives offer a multitude of options to\nmanage power.  This tool manipulates the various power modes.  Some power commands are Seagate-specific while many others are common to the interface specifications.\n\n**openSeaChest_Reservations** - A tool to assist with persistent reservations available on SAS drives and supported NVMe drives.\nNOTE: NVMe support under Windows is unavailable. See \u003chttps://docs.microsoft.com/en-us/windows-hardware/drivers/storage/nvme-features-supported-by-stornvme\u003e for detail on which features\nare supported by the StorNVMe Miniport driver in Windows.\n\n**openSeaChest_Security** - Various settings are available on modern Seagate disk\ndrives which may be locked and unlocked.  These settings may interact with the\noperating systems and systems BIOS.  Options also include ATA Security Erase\nfor SATA interface drives.\n\n**openSeaChest_SMART** - This tool provides a closer look at the collected SMART\nattributes data.  SMART stands for Self-Monitoring, Analysis and Reporting\nTechnology.  Short Drive Self Test is included as one of the standard SMART\ncommands. In addition, the DST \u0026 Clean test has the ability to repair problem\nsectors, possibly eliminating an unnecessary drive return.\n\n### Important Notes\n\nIf this is your drive, you should always keep a current backup of your\nimportant data.\n\nMany tests and commands are completely data safe, while others will change the\ndrive (like firmware download or data erasure or setting the maximum capacity,\netc).  Be careful using openSeaChest because some of the features, like the\ndata erasure options, will cause data loss.   Some commands, like setting the\nmaximum LBA, may cause existing data on the drive to become inaccessible.  Some\ncommands, like disabling the read look ahead buffer, may affect the performance\nof the drive.  Seagate is not responsible for lost user data.\n\n**Important note:** Many tests in this tool directly reference storage device data\nsectors, also known as Logical Block Addresses (LBA). Test arguments may\nrequire a starting LBA or an LBA range.  The predefined variable 'maxLBA'\nrefers to the last sector on the drive.  Many older SATA and SAS storage\ncontrollers (also known as Host Bus Adapters [HBA]) have a maximum addressable\nlimit of 4294967295 [FFFFh] LBAs hard wired into their design.  This equates to\n2.1TB using 512 byte sectors.  This also means accessing an LBA beyond the\n2.1TB limitation either will result in an error or simply the last readable LBA\n(usually LBA 4294967295 [FFFFh]) depending on the actual hardware.  This\nlimitation can have important consequences.  For example, if you intended to\nerase a 4TB drive, then only the first 2TB will actually get erased (or maybe\neven twice!) and the last 2TB will remain untouched.  You should carefully\nevaluate your system hardware to understand if your storage controllers provide\nsupport for greater than 2.1TB.\n\n**Note:** One gigabyte, or GB, equals one billion bytes when referring to hard\ndrive capacity. This software may use information provided by the operating\nsystem to display capacity and volume size. The Windows file system uses a\nbinary calculation for gibibyte or GiB (2^30) which causes the abbreviated size\nto appear smaller. The total number of bytes on a disk drive divided by the\ndecimal calculation for gigabyte or GB (10^9) shows the expected abbreviated\nsize. See this FAQ for more information\n\u003chttp://knowledge.seagate.com/articles/en_US/FAQ/172191en?language=en_US\u003e.\n\n### Binary Availability\n\nBINARIES and SOURCE CODE files of the openSeaChest open source project have\nbeen made available to you under the [Mozilla Public License 2.0 (MPL-2.0)](LICENSE.md).  The\nopenSeaChest project repository is maintained at\n[https://github.com/Seagate/openSeaChest](https://github.com/Seagate/openSeaChest).\n\nCompiled binary versions of the openSeaChest utilities for various operating\nsystems may be found at\n[https://github.com/Seagate/ToolBin/tree/master/openSeaChest](https://github.com/Seagate/ToolBin/tree/master/openSeaChest) or in the\nreleases section of this project.\n\nThis collection of storage device utility software is branched (forked) off of\nan original utility collection called the `Seagate SeaChest Utilities` by Seagate\nTechnology LLC.  The original SeaChest Utilities are still available at\n[www.seagate.com](www.seagate.com) or [https://github.com/Seagate/ToolBin/tree/master/SeaChest](https://github.com/Seagate/ToolBin/tree/master/SeaChest).\nBinary versions are available for Linux or Windows, with the Windows versions\nsigned by Seagate Technology LLC.\n\n#### Repository Availability\n\nWith help from various community members across distributions, openSeaChest may be\navailable from within your package manager.\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/openseachest.svg)](https://repology.org/project/openseachest/versions)\n\nPlease be aware this list may not be complete.\nSeagate is happy to work with community members to help make openSeaChest available in\nother package repositories as well. Please reach out through an issue and we will\ndo our best to help make it more available when possible.\n\n### The libraries\n\n**opensea-common**      - Operating System common operations, not specific to\n                      storage standards. Contains functions and defines that\n                      are useful to all other libraries.\n\n**opensea-transport**   - Contains standard ATA/SCSI/NVMe functions based on open\n                      standards for these command sets.  This layer also\n                      supports different transporting these commands through\n                      operating systems to the storage devices. Code depends on\n                      opensea-common.\n\n**opensea-operations**  - Contains common use cases for operations to be performed\n                      on a storage device. This layer encapsulates the nuances\n                      of each command set (ATA/SCSI) and operating systems\n                      (Linux/Windows etc.) Depends on opensea-common and\n                      opensea-transport.\n\n### Source\n\nDepending on your git version \u0026 client you can use either of the following two commands to clone the repository.\n\n`git clone --recurse-submodules -j8 https://github.com/Seagate/openSeaChest.git`\n\nor\n\n`git clone --recursive https://github.com/Seagate/openSeaChest.git`\n\nNote that cloning **_recursively_** is **_important_** as it clones all the necessary submodules.\n\nSee [BUILDING.md](BUILDING.md) for more information about how to use git.\n\n#### Source Compatibility with various OSs\n\nOpenSeaChest strives to be made available on any platform and any processor. Support for platforms has been\nadded upon request from customers and issues that are created on this repository.\nThe following tables illustrate platform support that exists today, at least in source code form, and contains\nnotes about other platforms that are not currently supported, but may be possible to support. The list may not be\ncomplete. Feel free to request other OS support as well, but it may require more research or development in order\nto support.\nPlease create an issue to request support for these other platforms when you need it!\n\n##### SAS/SATA Compatibility\n\n| OS         | Supported? | Notes |\n|------------|------------|-------|\n| Windows    | Yes        | Windows vista and higher are supported |\n| Linux      | Yes        | libATA blocks ATA security commands be default. Can add kernel parameter to disable this block. Only SG_IO IOCTL support implemented for version 3 today. HDIO support is not available. Should work on any 2.6 and later kernel. Earlier kernels may work too, but has not been tested. |\n| FreeBSD    | Yes        | No known limitations at this time |\n| UEFI Shell | Yes, but not currently maintained | While source code support is largely maintained for UEFI, it has not been updated or built due to many significant limitations on shipping systems. Some do not include the ATA driver that can respond to passthrough requests, only a block driver is available to allow booting the system. We are happy to revive this and find a way to add CI for this upon request. |\n| Solaris    | Yes        | This column is for the Oracle release of Solaris. USCSI ioctl support is implemented for passthrough support. No known limitations at this time. |\n| Illumos    | Yes        | This column is for Illumos based distributions/openSolaris. Uses same USCSI ioctl as Solaris. No known limitations at this time. |\n| AIX        | Yes        | Support for SATA and SAS is available. Code was tested on version 7.1, but may work on earlier versions. Some flags may need adjusting for earlier systems. Build was completed using GCC available in AIX toolkit with gmake. Only rhdisk handles are supported. pdisk support is not known since IBM does not appear to provide information on passing requests through RAID with what is normally available. |\n| ESXI       | Yes        | Uses SG_IO v3 like Linux through compatibility layer. Requires complicated build system with special GCC build/VM from VMWare and some other development packges installed to compile. |\n| NetBSD     | No, but possible | |\n| OpenBSD    | No, but possible | |\n\n##### NVMe Compatibility\n\n| OS                | Supported? | Notes |\n|-------------------|------------|-------|\n| Windows 10 \u0026 later| Yes        | Microsoft driver has many limitations, but many are documented online. Sometimes need to use SCSI translation. |\n| Windows 8.1       | Limited    | Mostly limited to SCSI translation except for FW update. |\n| Windows 7         | Limited    | Entirely limited to SCSI translation |\n| Windows openFabrics compatible driver | Yes | Supported, but may be limited to what commands are allowed by the driver (at least in latest openSource code). Some vendor's NVMe drivers reuse the IOCTL for passthrough from this driver and may be supported. |\n| Linux             | Yes        | Using built-in kernel driver and IOCTLs |\n| FreeBSD           | Yes        |       |\n| UEFI Shell        | Yes, but not currently maintained | While source code support is largely maintained for UEFI, it has not been updated or built due to many significant limitations on shipping systems. Some systems do not include an NVMe driver that can respond to passthrough requests, only a block driver is available to allow booting the system.  We are happy to revive this and find a way to add CI for this upon request. |\n| Solaris           | No, but possible | This column is for the Oracle release of Solaris. Possible to support NVMe through UNVME ioctl. |\n| Illumos           | No, but possible | Been a while since last looked at, but appeared limited in what commands were available. |\n| AIX               | Yes, untested | Implemented according to header from AIX 7.2, but support has not been tested |\n| ESXI              | Yes        | Requires complicated build system with special GCC build/VM from VMWare and some other development packges installed to compile. |\n| NetBSD            | No, but possible | |\n| OpenBSD           | No, but possible | |\n\n### Building\n\nSee [BUILDING.md](BUILDING.md) for information on how to build the openSeaChest tools on Windows, Linux, FreeBSD, and Solaris/Illumos.\n\n### Contributions \u0026 Issues\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for more information on contributions that will be accepted.\nThis document also describes how to create an issue, generate a pull request, and licenses that will be accepted.\n\n### Security policy\n\nSee [SECURITY.md](SECURITY.md) for information on Seagate's security policy for details on how to report security vulnerabilities.\n\n### Names, Logos, and Brands\n\nAll product names, logos, and brands are property of their respective owners.\nAll company, product and service names mentioned in the source code are for\nclarification purposes only. Use of these names, logos, and brands does not\nimply endorsement.\n\n### Support and Open Source Statement\n\nSupport from Seagate Technology for open source projects is different than traditional Technical Support.  If possible, please use the **Issues tab** in the individual software projects so that others may benefit from the questions and answers.  Include the output of --version information in the message. See the user guide section 'General Usage Hints' for information about saving output to a log file.\n\nIf you need to contact us through email, please choose one of these\ntwo email addresses:\n\n- opensource@seagate.com   for general questions and bug reports\n- opensea-build@seagate.com   for specific questions about programming and building the software\n\nSeagate offers technical support for 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.\n\n- [http://www.seagate.com/support-home/](http://www.seagate.com/support-home/)\n- Contact Us:\n[http://www.seagate.com/contacts/](http://www.seagate.com/contacts/)\n\nThis software uses open source packages obtained with permission from the\nrelevant parties. For a complete list of open source components, sources and\nlicenses, please see our Linux USB Boot Maker Utility FAQ for additional\ninformation.\n\nThe newest online version of the openSeaChest Utilities documentation, open\nsource usage and acknowledgement licenses, and our Linux USB Boot Maker FAQ can\nbe found at: [https://github.com/Seagate/openSeaChest](https://github.com/Seagate/openSeaChest).\n\nCopyright (c) 2014-2022 Seagate Technology LLC and/or its Affiliates, All Rights Reserved\n\n### License\n\nBINARIES and SOURCE CODE files of the openSeaChest open source project have\nbeen made available to you under the Mozilla Public License 2.0 (MPL).  Mozilla\nis the custodian of the Mozilla Public License (\"MPL\"), an open source/free\nsoftware license.\n\nThe license can be views at [https://www.mozilla.org/en-US/MPL/](https://www.mozilla.org/en-US/MPL/) or [LICENSE.md](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeagate%2FopenSeaChest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSeagate%2FopenSeaChest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeagate%2FopenSeaChest/lists"}