HDPARM(8)                                                            HDPARM(8)



NAME
       hdparm - get/set hard disk parameters

SYNOPSIS
       hdparm [ flags ] [device] ..

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

OPTIONS
       When no flags are given, -acdgkmnru is assumed.

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

       -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  per-
              formance, 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.

       --direct
              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
              19/93).

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

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

       --Istdout
              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
              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 (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
              change.

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

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

       -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     Enable/disable  the power-on in standby feature, if supported by
              the drive. If enabled, the drive is powered-up  in  the  standby
              mode to allow the controller to sequence the spin-up of devices.
              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 to enable this feature by a jumper.  Some SATA drives sup-
              port  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     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.  The cache read
              testing time can be specified by an optional numeric  parameter.
              The default is 2 seconds.

       -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  over-
              head.   To  ensure  accurate  measurements,  the buffer cache is
              flushed during the processing of -t using the  BLKFLSBUF  ioctl.
              The  maximum  read  testing time can be specified by an optional
              numeric parameter. The default is 3 seconds.

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

       -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
              device(s).

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

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


       ATA Security Feature Set

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

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

       --security-freeze
              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
              switch.   THIS  FEATURE IS EXPERIMENTAL AND NOT WELL TESTED. USE
              AT YOUR OWN RISK.

       --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
              NOT WELL TESTED. USE AT YOUR OWN RISK.

       --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.  THIS FEATURE IS EXPERIMENTAL AND NOT WELL  TESTED.  USE
              AT YOUR OWN RISK.

       --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
              TESTED. USE AT YOUR OWN RISK.

       --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
              WELL TESTED. USE AT YOUR OWN RISK.

       --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
              --security-erase-enhanced.
                      u       user password
                      m       master password

              THIS FEATURE IS EXPERIMENTAL AND NOT WELL TESTED.  USE  AT  YOUR
              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

              THIS FEATURE IS EXPERIMENTAL AND NOT WELL TESTED.  USE  AT  YOUR
              OWN RISK.

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

       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.

AUTHOR
       hdparm  has  been  written by Mark Lord <mlord@pobox.com>, 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-
       gas(tomilepp@paju.oulu.fi).

       Security freeze command by Benjamin Benz <bbe@heise.de>, 2005.

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

       Windows version by Christian Franke  <chrfranke@users.sourceforge.net>,
       2006.

SEE ALSO
       http://www.t13.org/ Technical Committee T13 ATA Attachment.

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



Version 6.9                      October 2006                        HDPARM(8)
