ATACTL(8)

ATACTL(8) | System Manager's Manual | ATACTL(8)

# NAME

`atactl` — a program to manipulate ATA (IDE) devices and busses

# SYNOPSIS

`atactl` | device command [arg [...]]

# DESCRIPTION

`atactl` allows a user or system administrator to issue commands to and otherwise control devices which reside on standard IDE and ATA controllers, or the ATA bus itself. It is used by specifying a device or bus to manipulate, the command to perform, and any arguments the command may require.

You may also control devices which are inside a SCSI enclosure, this includes many USB disks. In this case ATA commands are passed through the SCSI layer using SATL commands.

# DEVICE COMMANDS

The following commands may be used on IDE and ATA devices. Note that not all devices support all commands.

`identify`
  Identify the specified device, displaying the device's vendor, product, revision strings, and the device's capabilities.
`idle`
  Place the specified device into Idle mode. This mode may consume less power than Active mode.
`standby`
  Place the specified device into Standby mode. This mode will consume less power than Idle mode.
`sleep`
  Place the specified device into Sleep mode. This mode will consume less power than Standby mode, but requires a device reset to resume operation. Typically the wd(4) driver performs this reset automatically, but this should still be used with caution.
`setidle` idle-timer
  Places the specified device into Idle mode, and sets the Idle timer to idle-timer seconds. A value of 0 will disable the Idle timer.
`setstandby` standby-timer
  Places the specified device into Standby mode, and sets the Standby timer to standby-timer seconds. A value of 0 will disable the Standby timer.
`checkpower`
  Will print out if the device is in Active, Idle, or Standby power management mode.
`apm` [disable | set #]
  Controls the Advanced Power Management feature of the specified device. Advanced Power Management is an optional feature used to specify a power management level to balance between device performance and power consumption.
  disable
    Disable the Advanced Power Management.
  set #
    Enable the Advanced Power Management feature and set its level to the value #, where # is an integer within the scale 0-253; being 0 the mode with the lowest power consumption (and thus the worse performance) and 253 the mode which provides the better performance at a cost of more power consumption.

    It should be noted that the effect of the value need not be continuous. For example, a device might provide only two modes: one from 0 to 126 and other from 127 to 253. Per the specification, values of 127 and higher do not permit the device to spin down to save power.

`smart` [enable | disable | status [vendor] | offline # | error-log | selftest-log]
  Controls SMART feature set of the specified device. SMART stands for Self-Monitoring, Analysis, and Reporting Technology. It provides an early warning system by comparing subtle operation characteristics to those determined in vendor testing to precede device failures.
  enable
    Enables access to SMART capabilities within the device. Prior to being enabled, a SMART capable device neither monitors nor saves SMART attribute values. The state of SMART, either enabled or disabled, will be preserved by the device across power cycles.
  disable
    Disables access to SMART capabilities within the device. Attribute values will be saved, and will no longer be monitored.
  status [vendor]
    Reports whether SMART is supported by the device, and whether SMART is enabled on the device (can only be determined on ATA6 or better devices). If SMART is enabled, then a table of attribute information is printed. Attributes are the specific performance or calibration parameters that are used in analyzing the status of the device. The specific set of attributes being used and the identity of these attributes is vendor specific and proprietary.

    Attribute values are used to represent the relative reliability of individual performance or calibration parameters. The valid range of attribute values is from 1 to 253 decimal. Lower values indicate that the analysis algorithms being used by the device are predicting a higher probability of a degrading or faulty condition.

    Each attribute value has a corresponding threshold limit which is used for direct comparison to the attribute value to indicate the existence of a degrading or faulty condition. The numerical value of the attribute thresholds are determined by the device manufacturer through design and reliability testing and analysis. Each attribute threshold represents the lowest limit to which its corresponding attribute value can equal while still retaining a positive reliability status.

    If the crit field is “yes” then negative reliability of this attribute predicts imminent data loss. Otherwise it merely indicates that the intended design life period of usage or age has been exceeded. The collect field indicates whether this attribute is updated while the device is online. The reliability field indicates whether the attribute value is within the acceptable threshold.

    If the vendor argument is supplied, a vendor-specific table will be used for SMART information if known to `atactl`. Currently, only “micron” has a vendor-specific table. If the vendor is not supplied, it may be guessed from devices' model or other data available.

  offline #
    Runs the numbered offline self-test on the drive.
  error-log
    Prints the error log.
  selftest-log
    Prints the self-test log.
`security` [status | freeze | setpass | unlock | disable | erase]
  Controls “security” (password protection) features of modern ATA drives. The security commands are intended to be issued by low-level software (firmware / BIOS) only. Generally, the security status should be “frozen” before the operating system is started so that misbehaving or malicious software cannot set or change a password. Older and buggy BIOSes neglect to do so; in these cases it might make sense to issue the “freeze” command early in the boot process.
  status
    displays the drive's security status
  freeze
    freezes the drive's security status
  setpass [user | master]
    sets the drive's user or master password
  unlock [user | master]
    unlocks a password-protected drive
  disable [user | master]
    disables password protection
  erase [user | master]
    erases the device and clears security state, using enhanced erasure if the drive supports it; may take a long time to run

  Note that to erase a drive, it must have a password set and be unfrozen. If you can't persuade your firmware to leave the drive unfrozen on boot, but it is a SATA drive, say wd2 at atabus3, that you can safely physically disconnect and reconnect, then you may be able to use SATA hot-plug to work around this: first run

      # drvctl -d wd2

  Then physically disconnect and reconnect the drive, and run

      # drvctl -r -a ata_hl atabus3

  After this, check that the security status does not list “frozen”:

      # atactl wd2 security status
      	supported
      #

# BUS COMMANDS

The following commands may be used on IDE and ATA busses. Note that not all devices support all commands.

`reset`
  Reset the bus. This will reset all ATA devices present on the bus. Any ATAPI device with pending commands will also be reset.

# EXAMPLES

To erase wd2 which is currently unfrozen and has no password set:

    # atactl wd2 security status
    	supported
    # atactl wd2 security setpass user
    Password:
    Confirm password:
    # atactl wd2 security status
    	supported
    	enabled
    # atactl wd2 security erase user
    Password:
    Erasing may take up to 0h 2m 0s...
    #

# SEE ALSO

ioctl(2), wd(4), dkctl(8), drvctl(8), scsictl(8)

# HISTORY

The `atactl` command first appeared in NetBSD 1.4.

# AUTHORS

The `atactl` command was written by Ken Hornstein. It was based heavily on the scsictl(8) command written by Jason R. Thorpe. Matthew R. Green significantly enhanced the `smart status` support. Michael van Elst added support for SATL.

# BUGS

The output from the `identify` command is rather ugly.

Support for master passwords is not implemented.

The NetBSD kernel behaves poorly with drives that have passwords set and are locked.

The `smart status` command currently guesses the vendor attribute name table to use, and may be wrong or miss supported devices.

SATL bus commands don't work yet.

March 2, 2019 | NetBSD 11.0