atactl
—
a program to manipulate ATA (IDE) devices and busses
atactl |
device command
[arg [...]] |
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.
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 continous. 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
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
#
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.
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...
#
The atactl
command first appeared in
NetBSD 1.4.
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.
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.