Skip to main content

hdparm command man page

HDPARM(8)            HDPARM(8)

       hdparm - get/set hard disk parameters

       hdparm [ flags ] [device] ..

       hdparm  provides  a  command line interface to various hard disk ioctls
       supported by the stock Linux ATA/IDE  device  driver  subsystem.   Some
       options may  work  correctly  only  with the latest kernels.  For best
       results, compile hdparm with the include files from the latest kernel
       source code.

       When no flags are given, -acdgkmnru is assumed.

       -a     Get/set sector count for filesystem 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.   In  the  current  kernel  version
       (2.0.10) this  has  a default setting of 8 sectors (4KB).  This
       value seems good for most purposes, but in a system  where  most
       file  accesses are random seeks, a smaller setting might provide
       better performance.  Also, many IDE drives also have a  separate
       built-in read-ahead  function,  which alleviates the need for a
       filesystem read-ahead in many situations.

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

       -b     Get/set bus state.

       -B     Set Advanced Power Management feature, if the drive supports it.
       A low value means aggressive power management and a  high  value
       means better performance. A value of 255 will disable apm on the

       -c     Query/enable (E)IDE 32-bit I/O support.  A numeric parameter can
       be  used to  enable/disable  32-bit I/O support: Currently sup-
       ported values include 0 to disable  32-bit  I/O  support,  1  to
       enable 32-bit data transfers, and 3 to enable 32-bit data trans-
       fers 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 card.

       -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  com-
       pletely shut down).  The -S, -y, -Y, and -Z flags can be used to
       manipulate the IDE power modes.

       -d     Disable/enable 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 com-
       bination 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.

       Use  the kernel 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.

       -D     Enable/disable the on-drive defect management  feature,  whereby
       the  drive firmware tries to automatically manage defective sec-
       tors by relocating them to "spare" sectors reserved by the  fac-
       tory for such.

       -E     Set  cdrom  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.

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

       -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).

       -i     Display the identification info that was obtained from the drive
       at boot time, if available.  This is a  feature  of  modern  IDE
       drives,  and  may  not  be supported by older devices.  The data
       returned may or may not be current, depending on activity  since
       booting  the  system.  However, the current multiple sector mode
       count is always shown.  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

       -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 flag.

       This  is a  special  "no seatbelts" 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.

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

       -k     Get/set  the  keep_settings_over_reset flag for the drive.  When
       this flag is set, the driver will preserve the -dmu options over
       a  soft  reset,  (as  done  during the error recovery sequence).
       This flag defaults to off, to prevent drive  reset  loops  which
       could  be  caused by combinations of -dmu settings.  The -k flag
       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/adm/messages on most

       -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 (eg. Syquest,  ZIP,
       Jazz..), and  setting  it  to 0 will unlock the door mechanism.
       Normally, Linux maintains the door locking  mechanism  automati-
       cally, 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 removeable 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 fea-
       ture 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 Dig-
       ital recommends lower settings of  4  to 8  on  many  of  their
       drives,  due tiny (32kB) drive buffers and non-optimized buffer-
       ing algorithms.  The -i flag 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.

       -M     Get/set Automatic Acoustic Management (AAM) setting. Most modern
       harddisk drives have  the ability to speed down the head move-
       ments 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 lev-
       els between 128 and 254. At the moment, most drives  only  sup-
       port  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

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

       -p     Attempt to reprogram the IDE interface chipset for the specified
       PIO mode, or attempt to auto-tune for the "best" PIO  mode  sup-
       ported  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 flag 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  cau-
       tion!  This feature includes zero protection for the unwary, and
       an unsuccessful outcome may result in severe filesystem  corrup-

       -P     Set  the maximum sector count for the drive´s internal prefetch
       mechanism.  Not all drives support this feature.

       -q     Handle the next flag quietly, suppressing normal output.   This
       is  useful  for reducing screen clutter when running from system
       startup scripts. Not applicable to the -i or -v or  -t or  -T

       -Q     Set  tagged  queue  depth (1 or greater), or turn tagged queuing
       off (0). This only works with the newer 2.5.xx (or later)  ker-
       nels, and only with the few drives that currently support it.

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

       -R     Register an IDE interface.  Dangerous.  See the  -U  option  for
       more information.

       -S     Set the standby (spindown) timeout for the drive.  This 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  sec-
       onds  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 cache reads for benchmark and comparison pur-
       poses. 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.  If the -t flag is
       also specified, then a correction factor based on the outcome of
       -T  will be  incorporated  into the result reported for the -t

       -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 mea-
       surement 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 ioctl.
       If the -T flag is also specified, then a correction factor based
       on  the  outcome of  -T will  be  incorporated into the result
       reported for the -t operation.

       -u     Get/set 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  responsive-
       ness and eliminates "serial port overrun" errors.  Use this fea-
       ture 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 par-
       ticular, 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 fea-
       ture of these interfaces (usually a BIOS/CMOS setting)  provides
       a safe fix for the problem for use with earlier kernels.

       -U     Un-register an IDE interface.  Dangerous.  The companion for the
       -R option.  Intended for use with hardware made specifically for
       hot-swapping  (very rare!).  Use with knowledge and extreme cau-
       tion as this can easily hang or damage your system.  The hdparm
       source  distribution  includes  a  ´contrib´ directory with some
       user-donated scripts for hot-swapping  on  the  UltraBay  of  a
       ThinkPad 600E.  Use at your own risk.

       -v     Display all settings, except -i (same as -acdgkmnru for IDE, -gr
       for SCSI or -adgr for XT).  This is also the  default  behaviour
       when no flags are specified.

       -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.

       -W     Disable/enable  the  IDE drive´s write-caching feature (default
       state is undeterminable; manufacturer/model specific).

       -x     Tristate device for hotswap (DANGEROUS).

       -X     Set the IDE transfer mode for newer (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 flag is seldom neces-
       sary 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 flag) 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 multi-
       word DMA, the value used is the desired DMA mode number plus 32.
       for UltraDMA, the value is the desired UltraDMA mode number plus

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

       -Y     Force an IDE drive to immediately enter the  lowest  power  con-
       sumption 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 flag.

       -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

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

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

       Freeze the drive´s security settings.  The drive does not accept
       any security commands until next power-on reset. Use this func-
       tion in combination with --security-unlock to protect drive from
       any attempt to set a new password. Can be used standalone,  too.

       --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

       --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. The applicable drive password is selected with
       the --user-master switch and the applicable security  mode  with
       the  --security-mode  switch.   THIS FEATURE IS EXPERIMENTAL AND

       --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

       --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.  The applicable  drive  password  is  selected  with  the
       --user-master switch.  THIS FEATURE IS EXPERIMENTAL AND NOT WELL

       --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.  THIS FEATURE IS EXPERIMENTAL AND NOT

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

       OWN RISK.

       --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.

       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 (eg. -r for SCSI) may not work with old kernels as neces-
       sary ioctl()´s were not supported.

       Although  this  utility is intended primarily for use with (E)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 inter-

       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 suc-
       ceed 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 com-
       mands that way.

       hdparm has been written by Mark Lord  <>,  the  original
       primary developer  and maintainer of the (E)IDE driver for Linux, with
       suggestions from many netfolk.

       The disable Seagate auto-powersaving code is courtesy of Tomi Leppikan-

       Security freeze command by Benjamin Benz <>, 2005.

       PIO  data  out security commands by Leonard den Ottolander <leonard den
       ottolander nl>, 2005.  Parts by Benjamin Benz <>  and  oth-

SEE ALSO Technical Committee T13 ATA Attachment. Serial ATA International Organization.

Version 6.6     March 2006        HDPARM(8)


Popular posts from this blog

Find and replace with sed command in Linux

Find and replace feature is always handy. It can turn into a torture when it comes to change or delete a simple constant string in a text file. There is a handy tool in linux for doing these kind of tihngs. Actually sed is not a text editor but it is used outside of the text file to make changes.