hdparm



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

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

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

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


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.


AUTHOR

       hdparm has been written by Mark  Lord  <mlord@pobox.com>,  the  primary
       developer  and  maintainer of the (E)IDE driver for Linux, with sugges-
       tions from many netfolk.

       The disable Seagate auto-powersaving code is courtesy of Tomi Leppikan-
       gas(tomilepp@paju.oulu.fi).


SEE ALSO

       AT Attachment Interface for Disk Drives, ANSI ASC X3T9.2 working draft,
       revision 4a, April 19, 1993.

       AT Attachment Interface with Extensions (ATA-2), ANSI ASC X3T9.2  work-
       ing draft, revision 2f, July 26, 1994.

       AT  Attachment with Packet Interface - 5 (ATA/ATAPI-5), T13-1321D work-
       ing draft, revision 3, February 29, 2000.

       AT Attachment with Packet Interface - 6 (ATA/ATAPI-6), T13-1410D  work-
       ing draft, revision 3b, February 26, 2002.

       Western  Digital  Enhanced IDE Implementation Guide, by Western Digital
       Corporation, revision 5.0, November 10, 1993.

       Enhanced Disk Drive Specification, by Phoenix Technologies  Ltd.,  ver-
       sion 1.0, January 25, 1994.



Version 5.9                      February 2005                       HDPARM(8)

Man(1) output converted with man2html