hdparm(8) — Linux manual page


HDPARM(8)                  System Manager's Manual                 HDPARM(8)

NAME         top

       hdparm - get/set SATA/IDE device parameters

SYNOPSIS         top

       hdparm [options] [device ...]

DESCRIPTION         top

       hdparm provides a command line interface to various kernel interfaces
       supported by the Linux SATA/PATA/SAS "libata" subsystem and the older
       IDE driver subsystem.  Many newer (2008 and later) USB drive
       enclosures now also support "SAT" (SCSI-ATA Command Translation) and
       therefore may also work with hdparm.  E.g. recent WD "Passport"
       models and recent NexStar-3 enclosures.  Some options may work
       correctly only with the latest kernels.

OPTIONS         top

       When no options are given, -acdgkmur is assumed.  For "Get/set"
       options, a query without the optional parameter (e.g. -d) will query
       (get) the device state, and with a parameter (e.g., -d0) will set the
       device state.

       -a     Get/set sector count for filesystem (software) read-ahead.
              This is used to improve performance in sequential reads of
              large files, by prefetching additional blocks in anticipation
              of them being needed by the running task.  Many IDE drives
              also have a separate built-in read-ahead function, which
              augments this filesystem (software) read-ahead function.

       -A     Get/set the IDE drive´s read-lookahead feature (usually ON by
              default).  Usage: -A0 (disable) or -A1 (enable).

       -b     Get/set bus state.

       -B     Get/set Advanced Power Management feature, if the drive
              supports it. A low value means aggressive power management and
              a high value means better performance.  Possible settings
              range from values 1 through 127 (which permit spin-down), and
              values 128 through 254 (which do not permit spin-down).  The
              highest degree of power management is attained with a setting
              of 1, and the highest I/O performance with a setting of 254.
              A value of 255 tells hdparm to disable Advanced Power
              Management altogether on the drive (not all drives support
              disabling it, but most do).

       -c     Get/set (E)IDE 32-bit I/O support.  A numeric parameter can be
              used to enable/disable 32-bit I/O support.  Currently
              supported values include 0 to disable 32-bit I/O support, 1 to
              enable 32-bit data transfers, and 3 to enable 32-bit data
              transfers with a special sync sequence required by many
              chipsets.  The value 3 works with nearly all 32-bit IDE
              chipsets, but incurs slightly more overhead.  Note that
              "32-bit" refers to data transfers across a PCI or VLB bus to
              the interface card only; all (E)IDE drives still have only a
              16-bit connection over the ribbon cable from the interface

       -C     Check the current IDE power mode status, which will always be
              one of unknown (drive does not support this command),
              active/idle (normal operation), standby (low power mode, drive
              has spun down), or sleeping (lowest power mode, drive is
              completely shut down).  The -S, -y, -Y, and -Z options can be
              used to manipulate the IDE power modes.

       -d     Get/set the "using_dma" flag for this drive.  This option now
              works with most combinations of drives and PCI interfaces
              which support DMA and which are known to the kernel IDE
              driver.  It is also a good idea to use the appropriate -X
              option in combination with -d1 to ensure that the drive itself
              is programmed for the correct DMA mode, although most BIOSs
              should do this for you at boot time.  Using DMA nearly always
              gives the best performance, with fast I/O throughput and low
              CPU usage.  But there are at least a few configurations of
              chipsets and drives for which DMA does not make much of a
              difference, or may even slow things down (on really messed up
              hardware!).  Your mileage may vary.

              DCO stands for Device Configuration Overlay, a way for vendors
              to selectively disable certain features of a drive.  The
              --dco-freeze option will freeze/lock the current drive
              configuration, thereby preventing software (or malware) from
              changing any DCO settings until after the next power-on reset.

              Query and dump information regarding drive configuration
              settings which can be disabled by the vendor or OEM installer.
              These settings show capabilities of the drive which might be
              disabled by the vendor for "enhanced compatibility".  When
              disabled, they are otherwise hidden and will not show in the
              -I identify output.  For example, system vendors sometimes
              disable 48_bit addressing on large drives, for compatibility
              (and loss of capacity) with a specific BIOS.  In such cases,
              --dco-identify will show that the drive is 48_bit capable, but
              -I will not show it, and nor will the drive accept 48_bit

              Reset all drive settings, features, and accessible capacities
              back to factory defaults and full capabilities.  This command
              will fail if DCO is frozen/locked, or if a -Np maximum size
              restriction has also been set.  This is EXTREMELY DANGEROUS
              and will very likely cause massive loss of data.  DO NOT USE
              THIS COMMAND.

              Use the kernel´s "O_DIRECT" flag when performing a -t timing
              test.  This bypasses the page cache, causing the reads to go
              directly from the drive into hdparm's buffers, using so-called
              "raw" I/O.  In many cases, this can produce results that
              appear much faster than the usual page cache method, giving a
              better indication of raw device and driver performance.

              causes hdparm to issue an IDENTIFY command to the kernel, but
              incorrectly marked as a "non-data" command.  This results in
              the drive being left with its DataReQust(DRQ) line "stuck"
              high.  This confuses the kernel drivers, and may crash the
              system immediately with massive data loss.  The option exists
              to help in testing and fortifying the kernel against similar
              real-world drive malfunctions.  VERY DANGEROUS, DO NOT USE!!

       -D     Enable/disable the on-drive defect management feature, whereby
              the drive firmware tries to automatically manage defective
              sectors by relocating them to "spare" sectors reserved by the
              factory for such.  Control of this feature via the -D option
              is not supported for most modern drives since ATA-4; thus this
              command may fail.

       -E     Set cd/dvd drive speed.  This is NOT necessary for regular
              operation, as the drive will automatically switch speeds on
              its own.  But if you want to play with it, just supply a speed
              number after the option, usually a number like 2 or 4.  This
              can be useful in some cases, though, to smooth out DVD video

       -f     Sync and flush the buffer cache for the device on exit.  This
              operation is also performed internally as part of the -t and
              -T timings and other options.

              This option currently works only on ext4 and xfs filesystem
              types.  When used, this must be the only option given.  It
              requires two parameters: the desired file size in kilo-bytes
              (byte count divided by 1024), followed by the pathname for the
              new file.  It will create a new file of the specified size,
              but without actually having to write any data to the file.
              This will normally complete very quickly, and without
              thrashing the storage device.

              E.g. Create a 10KByte file: hdparm --fallocate 10 temp_file

              When used, this must be the only option given.  It requires a
              file path as a parameter, and will print out a list of the
              block extents (sector ranges) occupied by that file on disk.
              Sector numbers are given as absolute LBA numbers, referenced
              from sector 0 of the physical device rather than from the
              partition or filesystem.  This information can then be used
              for a variety of purposes, such as examining the degree of
              fragmenation of larger files, or determining appropriate
              sectors to deliberately corrupt during fault-injection testing

              This option uses the new FIEMAP (file extent map) ioctl() when
              available, and falls back to the older FIBMAP (file block map)
              ioctl() otherwise.  Note that FIBMAP suffers from a 32-bit
              block-number interface, and thus not work beyond 8TB or 16TB.
              FIBMAP is also very slow, and does not deal well with
              preallocated uncommitted extents in ext4/xfs filesystems,
              unless a sync() is done before using this option.

              When used, this should be the only option given.  It requires
              a file path immediately after the option, indicating where the
              new drive firmware should be read from.  The contents of this
              file will be sent to the drive using the (S)ATA DOWNLOAD
              MICROCODE command, using either transfer protocol 7 (entire
              file at once), or, if the drive supports it, transfer protocol
              3 (segmented download).  This command is EXTREMELY DANGEROUS
              and could destroy both the drive and all data on it.  DO NOT
              USE THIS COMMAND.  The --fwdownload-mode3 , --fwdownload-
              mode3-max , and --fwdownload-mode7 variations on basic
              --fwdownload allow overriding automatic protocol detection in
              favour of forcing hdparm to use a specific transfer protocol,
              for testing purposes only.

       -F     Flush the on-drive write cache buffer (older drives may not
              implement this).

       -g     Display the drive geometry (cylinders, heads, sectors), the
              size (in sectors) of the device, and the starting offset (in
              sectors) of the device from the beginning of the drive.

       -h     Display terse usage information (help).

       -H     Read the temperature from some (mostly Hitachi) drives.  Also
              reports if the temperature is within operating condition range
              (this may not be reliable). Does not cause the drive to spin
              up if idle.

       -i     Display the identification info which the kernel drivers (IDE,
              libata) have stored from boot/configuration time.  This may
              differ from the current information obtainable directly from
              the drive itself with the -I option.  The data returned may or
              may not be current, depending on activity since booting the
              system.  For a more detailed interpretation of the
              identification info, refer to AT Attachment Interface for Disk
              Drives, ANSI ASC X3T9.2 working draft, revision 4a, April
              19/93, and later editions.

              Issue an ATA IDLE_IMMEDIATE command, to put the drive into a
              lower power state.  Usually the device remains spun-up.

              Issue an ATA IDLE_IMMEDIATE_WITH_UNLOAD command, to unload or
              park the heads and put the drive into a lower power state.
              Usually the device remains spun-up.

       -I     Request identification info directly from the drive, which is
              displayed in a new expanded format with considerably more
              detail than with the older -i option.

       --Iraw <pathname>
              This option dumps the drive's identify data in raw binary to
              the specified file.

              This is a special variation on the -I option, which accepts a
              drive identification block as standard input instead of using
              a /dev/hd* parameter.  The format of this block must be
              exactly the same as that found in the /proc/ide/*/hd*/identify
              "files", or that produced by the --Istdout option described
              below.  This variation is designed for use with collected
              "libraries" of drive identification information, and can also
              be used on ATAPI drives which may give media errors with the
              standard mechanism.  When --Istdin is used, it must be the
              *only* parameter given.

              This option dumps the drive's identify data in hex to stdout,
              in a format similar to that from /proc/ide/*/identify, and
              suitable for later use with the --Istdin option.

       -J     Get/set the Western Digital (WD) Green Drive's "idle3" timeout
              value.  This timeout controls how often the drive parks its
              heads and enters a low power consumption state.  The factory
              default is eight (8) seconds, which is a very poor choice for
              use with Linux.  Leaving it at the default will result in
              hundreds of thousands of head load/unload cycles in a very
              short period of time.  The drive mechanism is only rated for
              300,000 to 1,000,000 cycles, so leaving it at the default
              could result in premature failure, not to mention the
              performance impact of the drive often having to wake-up before
              doing routine I/O.

              WD supply a WDIDLE3.EXE DOS utility for tweaking this setting,
              and you should use that program instead of hdparm if at all
              possible.  The reverse-engineered implementation in hdparm is
              not as complete as the original official program, even though
              it does seem to work on at a least a few drives.  A full power
              cycle is required for any change in setting to take effect,
              regardless of which program is used to tweak things.

              A setting of 30 seconds is recommended for Linux use.
              Permitted values are from 8 to 12 seconds, and from 30 to 300
              seconds in 30-second increments.  Specify a value of zero (0)
              to disable the WD idle3 timer completely (NOT RECOMMENDED!).

       -k     Get/set the "keep_settings_over_reset" flag for the drive.
              When this flag is set, the drive will preserve the -dmu
              settings over a soft reset, (as done during the error recovery
              sequence).  This option defaults to off, to prevent drive
              reset loops which could be caused by combinations of -dmu
              settings.  The -k option should therefore only be set after
              one has achieved confidence in correct system operation with a
              chosen set of configuration settings.  In practice, all that
              is typically necessary to test a configuration (prior to using
              -k) is to verify that the drive can be read/written, and that
              no error logs (kernel messages) are generated in the process
              (look in /var/log/messages on most systems).

       -K     Set the drive´s "keep_features_over_reset" flag.  Setting this
              enables the drive to retain the settings for -APSWXZ over a
              soft reset (as done during the error recovery sequence).  Not
              all drives support this feature.

       -L     Set the drive´s doorlock flag.  Setting this to 1 will lock
              the door mechanism of some removable hard drives (e.g.
              Syquest, ZIP, Jazz..), and setting it to 0 will unlock the
              door mechanism.  Normally, Linux maintains the door locking
              mechanism automatically, depending on drive usage (locked
              whenever a filesystem is mounted).  But on system shutdown,
              this can be a nuisance if the root partition is on a removable
              disk, since the root partition is left mounted (read-only)
              after shutdown.  So, by using this command to unlock the door
              after the root filesystem is remounted read-only, one can then
              remove the cartridge from the drive after shutdown.

       -m     Get/set sector count for multiple sector I/O on the drive.  A
              setting of 0 disables this feature.  Multiple sector mode (aka
              IDE Block Mode), is a feature of most modern IDE hard drives,
              permitting the transfer of multiple sectors per I/O interrupt,
              rather than the usual one sector per interrupt.  When this
              feature is enabled, it typically reduces operating system
              overhead for disk I/O by 30-50%.  On many systems, it also
              provides increased data throughput of anywhere from 5% to 50%.
              Some drives, however (most notably the WD Caviar series), seem
              to run slower with multiple mode enabled.  Your mileage may
              vary.  Most drives support the minimum settings of 2, 4, 8, or
              16 (sectors).  Larger settings may also be possible, depending
              on the drive.  A setting of 16 or 32 seems optimal on many
              systems.  Western Digital recommends lower settings of 4 to 8
              on many of their drives, due tiny (32kB) drive buffers and
              non-optimized buffering algorithms.  The -i option can be used
              to find the maximum setting supported by an installed drive
              (look for MaxMultSect in the output).  Some drives claim to
              support multiple mode, but lose data at some settings.  Under
              rare circumstances, such failures can result in massive
              filesystem corruption.

              Deliberately create a bad sector (aka. "media error") on the
              can be useful for testing of device/RAID error recovery
              mechanisms.  The sector number is given as a (base10)
              parameter after the option.  Depending on the device, hdparm
              will choose one of two possible ATA commands for corrupting
              the sector.  The WRITE_LONG works on most drives, but only up
              to the 28-bit sector boundary.  Some very recent drives (2008)
              may support the new WRITE_UNCORRECTABLE_EXT command, which
              works for any LBA48 sector.  If available, hdparm will use
              that in preference to WRITE_LONG.  The WRITE_UNCORRECTABLE_EXT
              command itself presents a choice of how the new bad sector
              should behave.  By default, it will look like any other bad
              sector, and the drive may take some time to retry and fail on
              subsequent READs of the sector.  However, if a single letter f
              is prepended immediately in front of the first digit of the
              sector number parameter, then hdparm will issue a "flagged"
              WRITE_UNCORRECTABLE_EXT, which causes the drive to merely flag
              the sector as bad (rather than genuinely corrupt it), and
              subsequent READs of the sector will fail immediately (rather
              than after several retries).  Note also that the --repair-
              sector option can be used to restore (any) bad sectors when
              they are no longer needed, including sectors that were
              genuinely bad (the drive will likely remap those to a fresh
              area on the media).

       -M     Get/set Automatic Acoustic Management (AAM) setting. Most
              modern harddisk drives have the ability to speed down the head
              movements to reduce their noise output.  The possible values
              are between 0 and 254. 128 is the most quiet (and therefore
              slowest) setting and 254 the fastest (and loudest). Some
              drives have only two levels (quiet / fast), while others may
              have different levels between 128 and 254.  At the moment,
              most drives only support 3 options, off, quiet, and fast.
              These have been assigned the values 0, 128, and 254 at
              present, respectively, but integer space has been incorporated
              for future expansion, should this change.

       -n     Get or set the "ignore_write_errors" flag in the driver.  Do
              NOT play with this without grokking the driver source code

       -N     Get/set max visible number of sectors, also known as the Host
              Protected Area setting.  Without a parameter, -N displays the
              current setting, which is reported as two values: the first
              gives the current max sectors setting, and the second shows
              the native (real) hardware limit for the disk.  The difference
              between these two values indicates how many sectors of the
              disk are currently hidden from the operating system, in the
              form of a Host Protected Area (HPA).  This area is often used
              by computer makers to hold diagnostic software, and/or a copy
              of the originally provided operating system for recovery
              purposes.  Another possible use is to hide the true capacity
              of a very large disk from a BIOS/system that cannot normally
              cope with drives of that size (eg. most current {2010} BIOSs
              cannot deal with drives larger than 2TB, so an HPA could be
              used to cause a 3TB drive to report itself as a 2TB drive).
              To change the current max (VERY DANGEROUS, DATA LOSS IS
              EXTREMELY LIKELY), a new value should be provided (in base10)
              immediately following the -N option.  This value is specified
              as a count of sectors, rather than the "max sector address" of
              the drive.  Drives have the concept of a temporary (volatile)
              setting which is lost on the next hardware reset, as well as a
              more permanent (non-volatile) value which survives resets and
              power cycles.  By default, -N affects only the temporary
              (volatile) setting.  To change the permanent (non-volatile)
              value, prepend a leading p character immediately before the
              first digit of the value.  Drives are supposed to allow only a
              single permanent change per session.  A hardware reset (or
              power cycle) is required before another permanent -N operation
              can succeed.  Note that any attempt to set this value may fail
              if the disk is being accessed by other software at the same
              time.  This is because setting the value requires a pair of
              back-to-back drive commands, but there is no way to prevent
              some other command from being inserted between them by the
              kernel.  So if it fails initially, just try again.  Kernel
              support for -N is buggy for many adapter types across many
              kernel versions, in that an incorrect (too small) max size
              value is sometimes reported.  As of the 2.6.27 kernel, this
              does finally seem to be working on most hardware.

              Offsets to given number of GiB (1024*1024*1024) when
              performing -t timings of device reads.  Speed changes (about
              twice) along many mechanical drives.  Usually the maximum is
              at the beginning, but not always.  Solid-state drives (SSDs)
              should show similar timings regardless of offset.

       -p     Attempt to reprogram the IDE interface chipset for the
              specified PIO mode, or attempt to auto-tune for the "best" PIO
              mode supported by the drive.  This feature is supported in the
              kernel for only a few "known" chipsets, and even then the
              support is iffy at best.  Some IDE chipsets are unable to
              alter the PIO mode for a single drive, in which case this
              option may cause the PIO mode for both drives to be set.  Many
              IDE chipsets support either fewer or more than the standard
              six (0 to 5) PIO modes, so the exact speed setting that is
              actually implemented will vary by chipset/driver
              sophistication.  Use with extreme caution!  This feature
              includes zero protection for the unwary, and an unsuccessful
              outcome may result in severe filesystem corruption!

       -P     Set the maximum sector count for the drive´s internal prefetch
              mechanism.  Not all drives support this feature, and it was
              dropped from the official spec as of ATA-4.

              When using the SAT (SCSI ATA Translation) protocol, hdparm
              normally prefers to use the 16-byte command format whenever
              possible.  But some USB drive enclosures don't work correctly
              with 16-byte commands.  This option can be used to force use
              of the smaller 12-byte command format with such drives.
              hdparm will still revert to 16-byte commands for things that
              cannot be done with the 12-byte format (e.g. sector accesses
              beyond 28-bits).

       -q     Handle the next option quietly, suppressing normal output (but
              not error messages).  This is useful for reducing screen
              clutter when running from system startup scripts.  Not
              applicable to the -i or -v or -t or -T options.

       -Q     Get or set the device's command queue_depth, if supported by
              the hardware.  This only works with 2.6.xx (or later) kernels,
              and only with device and driver combinations which support
              changing the queue_depth.  For SATA disks, this is the Native
              Command Queuing (NCQ) queue depth.

       -r     Get/set read-only flag for the device.  When set, Linux
              disallows write operations on the device.

       -R     Get/set Write-Read-Verify feature, if the drive supports it.
              Usage: -R0 (disable) or -R1 (enable).  This feature is
              intended to have the drive firmware automatically read-back
              any data that is written by software, to verify that the data
              was successfully written.  This is generally overkill, and can
              slow down disk writes by as much as a factor of two (or more).

              Reads from the specified sector number, and dumps the contents
              in hex to standard output.  The sector number must be given
              (base10) after this option.  hdparm will issue a low-level
              read (completely bypassing the usual block layer read/write
              mechanisms) for the specified sector.  This can be used to
              definitively check whether a given sector is bad (media error)
              or not (doing so through the usual mechanisms can sometimes
              give false positives).

              This is an alias for the --write-sector option.  VERY

       -s     Enable/disable the power-on in standby feature, if supported
              by the drive.  VERY DANGEROUS.  Do not use unless you are
              absolutely certain that both the system BIOS (or firmware) and
              the operating system kernel (Linux >= 2.6.22) support probing
              for drives that use this feature.  When enabled, the drive is
              powered-up in the standby mode to allow the controller to
              sequence the spin-up of devices, reducing the instantaneous
              current draw burden when many drives share a power supply.
              Primarily for use in large RAID setups.  This feature is
              usually disabled and the drive is powered-up in the active
              mode (see -C above).  Note that a drive may also allow
              enabling this feature by a jumper.  Some SATA drives support
              the control of this feature by pin 11 of the SATA power
              connector. In these cases, this command may be unsupported or
              may have no effect.

       -S     Put the drive into idle (low-power) mode, and also set the
              standby (spindown) timeout for the drive.  This timeout value
              is used by the drive to determine how long to wait (with no
              disk activity) before turning off the spindle motor to save
              power.  Under such circumstances, the drive may take as long
              as 30 seconds to respond to a subsequent disk access, though
              most drives are much quicker.  The encoding of the timeout
              value is somewhat peculiar.  A value of zero means "timeouts
              are disabled": the device will not automatically enter standby
              mode.  Values from 1 to 240 specify multiples of 5 seconds,
              yielding timeouts from 5 seconds to 20 minutes.  Values from
              241 to 251 specify from 1 to 11 units of 30 minutes, yielding
              timeouts from 30 minutes to 5.5 hours.  A value of 252
              signifies a timeout of 21 minutes. A value of 253 sets a
              vendor-defined timeout period between 8 and 12 hours, and the
              value 254 is reserved.  255 is interpreted as 21 minutes plus
              15 seconds.  Note that some older drives may have very
              different interpretations of these values.

       -t     Perform timings of device reads for benchmark and comparison
              purposes.  For meaningful results, this operation should be
              repeated 2-3 times on an otherwise inactive system (no other
              active processes) with at least a couple of megabytes of free
              memory.  This displays the speed of reading through the buffer
              cache to the disk without any prior caching of data.  This
              measurement is an indication of how fast the drive can sustain
              sequential data reads under Linux, without any filesystem
              overhead.  To ensure accurate measurements, the buffer cache
              is flushed during the processing of -t using the BLKFLSBUF

       -T     Perform timings of cache reads for benchmark and comparison
              purposes.  For meaningful results, this operation should be
              repeated 2-3 times on an otherwise inactive system (no other
              active processes) with at least a couple of megabytes of free
              memory.  This displays the speed of reading directly from the
              Linux buffer cache without disk access.  This measurement is
              essentially an indication of the throughput of the processor,
              cache, and memory of the system under test.

              For Solid State Drives (SSDs).  EXCEPTIONALLY DANGEROUS. DO
              NOT USE THIS OPTION!!  Tells the drive firmware to discard
              unneeded data sectors, destroying any data that may have been
              present within them.  This makes those sectors available for
              immediate use by the firmware's garbage collection mechanism,
              to improve scheduling for wear-leveling of the flash media.
              This option expects one or more sector range pairs immediately
              after the option: an LBA starting address, a colon, and a
              sector count (max 65535), with no intervening spaces.

              E.g.  hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz

              Identical to --trim-sector-ranges above, except the list of
              lba:count pairs is read from stdin rather than being specified
              on the command line.  This can be used to avoid problems with
              excessively long command lines.  It also permits batching of
              many more sector ranges into single commands to the drive, up
              to the currently configured transfer limit (max_sectors_kb).

       -u     Get/set the interrupt-unmask flag for the drive.  A setting of
              1 permits the driver to unmask other interrupts during
              processing of a disk interrupt, which greatly improves Linux´s
              responsiveness and eliminates "serial port overrun" errors.
              Use this feature with caution: some drive/controller
              combinations do not tolerate the increased I/O latencies
              possible when this feature is enabled, resulting in massive
              filesystem corruption.  In particular, CMD-640B and RZ1000
              (E)IDE interfaces can be unreliable (due to a hardware flaw)
              when this option is used with kernel versions earlier than
              2.0.13.  Disabling the IDE prefetch feature of these
              interfaces (usually a BIOS/CMOS setting) provides a safe fix
              for the problem for use with earlier kernels.

       -v     Display some basic settings, similar to -acdgkmur for IDE.
              This is also the default behaviour when no options are

       -V     Display program version and exit immediately.

              Display extra diagnostics from some commands.

       -w     Perform a device reset (DANGEROUS).  Do NOT use this option.
              It exists for unlikely situations where a reboot might
              otherwise be required to get a confused drive back into a
              useable state.

              Writes zeros to the specified sector number.  VERY DANGEROUS.
              The sector number must be given (base10) after this option.
              hdparm will issue a low-level write (completely bypassing the
              usual block layer read/write mechanisms) to the specified
              sector.  This can be used to force a drive to repair a bad
              sector (media error).

       -W     Get/set the IDE/SATA drive´s write-caching feature.

       -X     Set the IDE transfer mode for (E)IDE/ATA drives.  This is
              typically used in combination with -d1 when enabling DMA
              to/from a drive on a supported interface chipset, where -X
              mdma2 is used to select multiword DMA mode2 transfers and -X
              sdma1 is used to select simple mode 1 DMA transfers.  With
              systems which support UltraDMA burst timings, -X udma2 is used
              to select UltraDMA mode2 transfers (you´ll need to prepare the
              chipset for UltraDMA beforehand).  Apart from that, use of
              this option is seldom necessary since most/all modern IDE
              drives default to their fastest PIO transfer mode at power-on.
              Fiddling with this can be both needless and risky.  On drives
              which support alternate transfer modes, -X can be used to
              switch the mode of the drive only.  Prior to changing the
              transfer mode, the IDE interface should be jumpered or
              programmed (see -p option) for the new mode setting to prevent
              loss and/or corruption of data.  Use this with extreme
              caution!  For the PIO (Programmed Input/Output) transfer modes
              used by Linux, this value is simply the desired PIO mode
              number plus 8.  Thus, a value of 09 sets PIO mode1, 10 enables
              PIO mode2, and 11 selects PIO mode3.  Setting 00 restores the
              drive´s "default" PIO mode, and 01 disables IORDY.  For
              multiword DMA, the value used is the desired DMA mode number
              plus 32.  for UltraDMA, the value is the desired UltraDMA mode
              number plus 64.

       -y     Force an IDE drive to immediately enter the low power
              consumption standby mode, usually causing it to spin down.
              The current power mode status can be checked using the -C

       -Y     Force an IDE drive to immediately enter the lowest power
              consumption sleep mode, causing it to shut down completely.  A
              hard or soft reset is required before the drive can be
              accessed again (the Linux IDE driver will automatically handle
              issuing a reset if/when needed).  The current power mode
              status can be checked using the -C option.

       -z     Force a kernel re-read of the partition table of the specified

       -Z     Disable the automatic power-saving function of certain Seagate
              drives (ST3xxx models?), to prevent them from idling/spinning-
              down at inconvenient times.

ATA Security Feature Set         top

       These switches are DANGEROUS to experiment with, and might not work
       with some kernels.  USE AT YOUR OWN RISK.

              Display terse usage info for all of the --security-* options.

              Freeze the drive´s security settings.  The drive does not
              accept any security commands until next power-on reset.  Use
              this function in combination with --security-unlock to protect
              drive from any attempt to set a new password. Can be used
              standalone, too.  No other options are permitted on the
              command line with this one.

              Prompt for the --security PWD rather than getting from the
              command line args.  This avoids having passwords show up in
              shell history or in /proc/self/cmdline during execution.

       --security-unlock PWD
              Unlock the drive, using password PWD.  Password is given as an
              ASCII string and is padded with NULs to reach 32 bytes.  The
              applicable drive password is selected with the --user-master
              switch (default is "user" password).  No other options are
              permitted on the command line with this one.

       --security-set-pass PWD
              Lock the drive, using password PWD (Set Password) (DANGEROUS).
              Password is given as an ASCII string and is padded with NULs
              to reach 32 bytes.  Use the special password NULL to set an
              empty password.  The applicable drive password is selected
              with the --user-master switch (default is "user" password) and
              the applicable security mode with the --security-mode switch.
              No other options are permitted on the command line with this

       --security-disable PWD
              Disable drive locking, using password PWD.  Password is given
              as an ASCII string and is padded with NULs to reach 32 bytes.
              The applicable drive password is selected with the --user-
              master switch (default is "user" password).  No other options
              are permitted on the command line with this one.

       --security-erase PWD
              Erase (locked) drive, using password PWD (DANGEROUS).
              Password is given as an ASCII string and is padded with NULs
              to reach 32 bytes.  Use the special password NULL to represent
              an empty password.  The applicable drive password is selected
              with the --user-master switch (default is "user" password).
              No other options are permitted on the command line with this

       --security-erase-enhanced PWD
              Enhanced erase (locked) drive, using password PWD (DANGEROUS).
              Password is given as an ASCII string and is padded with NULs
              to reach 32 bytes.  The applicable drive password is selected
              with the --user-master switch (default is "user" password).
              No other options are permitted on the command line with this

       --user-master USER
              Specifies which password (user/master) to select.  Defaults to
              user password.  Only useful in combination with --security-
              unlock, --security-set-pass, --security-disable, --security-
              erase or --security-erase-enhanced.
                      u       user password
                      m       master password

       --security-mode MODE
              Specifies which security mode (high/maximum) to set.  Defaults
              to high.  Only useful in combination with --security-set-pass.
                      h       high security
                      m       maximum security

              OWN RISK.

FILES         top


BUGS         top

       As noted above, the -m sectcount and -u 1 options should be used with
       caution at first, preferably on a read-only filesystem.  Most drives
       work well with these features, but a few drive/controller
       combinations are not 100% compatible.  Filesystem corruption may
       result.  Backup everything before experimenting!

       Some options (e.g. -r for SCSI) may not work with old kernels as
       necessary ioctl()´s were not supported.

       Although this utility is intended primarily for use with SATA/IDE
       hard disk devices, several of the options are also valid (and
       permitted) for use with SCSI hard disk devices and MFM/RLL hard disks
       with XT interfaces.

       The Linux kernel up until 2.6.12 (and probably later) doesn´t handle
       the security unlock and disable commands gracefully and will segfault
       and in some cases even panic. The security commands however might
       indeed have been executed by the drive. This poor kernel behaviour
       makes the PIO data security commands rather useless at the moment.

       Note that the "security erase" and "security disable" commands have
       been implemented as two consecutive PIO data commands and will not
       succeed on a locked drive because the second command will not be
       issued after the segfault.  See the code for hints how patch it to
       work around this problem. Despite the segfault it is often still
       possible to run two instances of hdparm consecutively and issue the
       two necessary commands that way.

AUTHOR         top

       hdparm has been written by Mark Lord <mlord@pobox.com>, the original
       primary developer and maintainer of the (E)IDE driver for Linux, and
       current contributor to the libata subsystem, along with suggestions
       and patches from many netfolk.

       The disable Seagate auto-powersaving code is courtesy of Tomi

       Security freeze command by Benjamin Benz, 2005.

       PIO data out security commands by Leonard den Ottolander, 2005.  Some
       other parts by Benjamin Benz and others.

SEE ALSO         top

       http://www.t13.org/ Technical Committee T13 AT Attachment (ATA/ATAPI)

       http://www.serialata.org/ Serial ATA International Organization.

       http://www.compactflash.org/ CompactFlash Association.

COLOPHON         top

       This page is part of the hdparm (get/set ATA/SATA drive parameters
       under Linux) project.  Information about the project can be found at
       ⟨http://hdparm.sourceforge.net/⟩.  It is not known how to report bugs
       for this man page; if you know, please send a mail to
       man-pages@man7.org.  This page was obtained from the tarball
       hdparm-9.56.tar.gz fetched from
       on 2020-08-13.  If you discover any rendering problems in this HTML
       version of the page, or you believe there is a better or more up-to-
       date source for the page, or you have corrections or improvements to
       the information in this COLOPHON (which is not part of the original
       manual page), send a mail to man-pages@man7.org

Version 9.55                     March 2018                        HDPARM(8)

Pages that refer to this page: fdatasync(2)fsync(2)proc(5)procfs(5)