Skip to content

hdparm | Cheatsheet

hdparm is a command line program for Linux to set and view ATA hard disk drive hardware parameters and test performance.

It can set parameters such as drive caches, sleep mode, power management, acoustic management, and DMA settings. GParted and Parted Magic both include hdparm


Get/set fs readahead

hdparm -a /dev/sdb

Get/set the drive look-ahead flag (0/1)

hdparm -A  /dev/sdb

Get/set bus state (0 == off, 1 == on, 2 == tristate)

hdparm -b /dev/sdb

Set Advanced Power Management setting (1-255)

hdparm -B /dev/sdb

Get/set IDE 32-bit IO setting

hdparm -c /dev/sdb

Check drive power mode status

hdparm -C /dev/sdb

Get/set using_dma flag

hdparm -d /dev/sdb

Enable/disable drive defect management

hdparm -D /dev/sdb

Set cd/dvd drive speed

hdparm -E /dev/sdb

Flush buffer cache for device on exit

hdparm -f /dev/sdb

Flush drive write cache

hdparm -F /dev/sdb

Display drive geometry

hdparm -g /dev/sdb

Display terse usage information

hdparm -h /dev/sdb

Read temperature from drive (Hitachi only)

hdparm -H /dev/sdb

Display drive identification

hdparm -i /dev/sdb

Detailed/current information directly from drive

hdparm -I /dev/sdb

Get/set Western DIgital "Idle3" timeout for a WDC "Green" drive (DANGEROUS)

hdparm -J /dev/sdb

Get/set keep_settings_over_reset flag (0/1)

hdparm -k /dev/sdb

Set drive keep_features_over_reset flag (0/1)

hdparm -K /dev/sdb

Set drive doorlock (0/1) (removable harddisks only)

hdparm -L /dev/sdb

Get/set multiple sector count

hdparm -m /dev/sdb

Get/set acoustic management (0-254, 128: quiet, 254: fast)

hdparm -M /dev/sdb

Get/set ignore-write-errors flag (0/1)

hdparm -n /dev/sdb

Get/set max visible number of sectors (HPA) (VERY DANGEROUS)

hdparm -N /dev/sdb

Set PIO mode on IDE interface chipset (0,1,2,3,4,...)

hdparm -p /dev/sdb

Set drive prefetch count

hdparm -P /dev/sdb

Change next setting quietly

hdparm -q /dev/sdb

Get/set DMA queue_depth (if supported)

hdparm -Q /dev/sdb

Get/set device readonly flag (DANGEROUS to set)

hdparm -r /dev/sdb

Get/set device write-read-verify flag

hdparm -R /dev/sdb

Set power-up in standby flag (0/1) (DANGEROUS)

hdparm -s /dev/sdb

Set standby (spindown) timeout

hdparm -S /dev/sdb

Perform device read timings

hdparm -t /dev/sdb

Perform cache read timings

hdparm -T /dev/sdb

Get/set unmaskirq flag (0/1)

hdparm -u /dev/sdb

Obsolete

hdparm -U /dev/sdb

Use defaults; same as -acdgkmur for IDE drives

hdparm -v /dev/sdb

Display program version and exit immediately

hdparm -V /dev/sdb

Perform device reset (DANGEROUS)

hdparm -w /dev/sdb

Get/set drive write-caching flag (0/1)

hdparm -W /dev/sdb

Obsolote

hdparm -x /dev/sdb

Set IDE xfer mode (DANGEROUS)

hdparm -X /dev/sdb

Put drive in standby mode

hdparm -y /dev/sdb

Put drive to sleep

hdparm -Y /dev/sdb

Re-read partition table

hdparm -z /dev/sdb

Disable Seagate auto-powersaving mode

hdparm -Z /dev/sdb

Perform device read timings

hdparm -t /dev/sda

Perform cache read timings

hdparm -T /dev/sda

Check read speeds

hdparm -tT /dev/sda

Check drive power mode status

hdparm -C /dev/sda 2> /dev/null|grep state

Freeze/lock current device configuration until next power cycle

hdparm --dco-freeze /dev/sdb

Read/dump device configuration identify data

hdparm --dco-identify /dev/sdb

Reset device configuration back to factory defaults

hdparm --dco-restore /dev/sdb

Use DCO to set maximum addressable sectors

hdparm --dco-setmax /dev/sdb

Use O_DIRECT to bypass page cache for timings

hdparm --direct /dev/sdb

Crash system with a "stuck DRQ" error (VERY DANGEROUS)

hdparm --drq-hsm-error /dev/sdb

Create a file without writing data to disk

hdparm --fallocate /dev/sdb

Show device extents (and fragmentation) for a file

hdparm --fibmap /dev/sdb

Download firmware file to drive (EXTREMELY DANGEROUS)

hdparm --fwdownload /dev/sdb

Download firmware using min-size segments (EXTREMELY DANGEROUS)

hdparm --fwdownload-mode3 /dev/sdb

Download firmware using max-size segments (EXTREMELY DANGEROUS)

hdparm --fwdownload-mode3-max /dev/sdb

Download firmware using a single segment (EXTREMELY DANGEROUS)

hdparm --fwdownload-mode7 /dev/sdb

Download firmware using mode E (min-size segments) (EXTREMELY DANGEROUS)

hdparm --fwdownload-modee /dev/sdb

Download firmware using mode E (max-size segments) (EXTREMELY DANGEROUS)

hdparm --fwdownload-modee-max /dev/sdb

Idle drive immediately

hdparm --idle-immediate /dev/sdb

Idle immediately and unload heads

hdparm --idle-unload /dev/sdb

Write raw binary identify data to the specfied file

hdparm --Iraw filename /dev/sdb

Read identify data from stdin as ASCII hex

hdparm --Istdin /dev/sdb

Write identify data to stdout as ASCII hex

hdparm --Istdout /dev/sdb

Deliberately corrupt a sector directly on the media (VERY DANGEROUS)

hdparm --make-bad-sector /dev/sdb

use with -t, to begin timings at given offset (in GiB) from start of drive

hdparm --offset /dev/sdb

Use 12-byte (instead of 16-byte) SAT commands when possible

hdparm --prefer-ata12 /dev/sdb

Read and dump (in hex) a sector directly from the media

hdparm --read-sector /dev/sdb

Alias for the --write-sector option (VERY DANGEROUS)

hdparm --repair-sector /dev/sdb

Block sanitize-freeze-lock command until next power cycle

hdparm --sanitize-antifreeze-lock /dev/sdb

Start block erase operation

hdparm --sanitize-block-erase /dev/sdb

Change the internal encryption keys that used for used

hdparm --sanitize-crypto-scramble /dev/sdb

Lock drive's sanitize features until next power cycle

hdparm --sanitize-freeze-lock  /dev/sdb

Overwrite the internal media with constant PATTERN

hdparm --sanitize-overwrite PATTERN /dev/sdb

Number of overwrite passes from 0 to 7, default 0 means 16 passes

hdparm --sanitize-overwrite-passes COUNT /dev/sdb  

Show sanitize status information

hdparm --sanitize-status /dev/sdb          

Display help for ATA security commands

hdparm --security-help /dev/sdb             

Change logical sector size of drive

hdparm --set-sector-size /dev/sdb          

Tell SSD firmware to discard unneeded data sectors: lba:count ..

hdparm --trim-sector-ranges /dev/sdb       

Same as above, but reads lba:count pairs from stdin

hdparm --trim-sector-ranges-stdin /dev/sdb  

Display extra diagnostics from some commands

hdparm --verbose /dev/sdb        

Repair/overwrite a (possibly bad) sector directly on the media (VERY DANGEROUS)

hdparm --write-sector /dev/sdb