Copyright 2010-2019 Hale Landis. All rights reserved.
Program Change History
The program Change History has been moved from the HISTORY.TXT file
into this User Guide.
Also see:  HISTORY
NOTICE: Marvell 88SE6145 AHCI Controller
This model controller (Vendor ID 11AB) identifies itself as
AHCI but it really is not AHCI compatible. While it may appear
to operate for a few commands, it will normally not work with
AHCCMDT. This controller is found on some Intel motherboards
as a second AHCI (RAID?) controller.
AHCCMDT is a random command test for Serial ATA hard disk devices. AHCCMDT is easy to setup and run. Random activities include: random write/read commands, random resets, random SATA partial and slumber and random changing of the interface speed.
AHCCMDT is a DOS DPMI program. It requires a DPMI driver (the DPMI driver CWSDPMI.EXE is provided with AHCCMDT).
AHCCMDT is not shareware or freeware. AHCCMDT is a commercial product and you or your company must have purchased a copy of the program in order to legally use the full function version of the program. There is a demonstration/evaluation version of the program that has reduced function. The demonstration/evaluation version of AHCCMDT has no use or distribution restrictions but shall be used only to evaluate the program.
AHCCMDT requires the following basic system and test devices:
AHCCMDT does not use the system BIOS - AHCCMDT directly accesses the AHCI controller registers and takes full control of the of all AHCI ports and attached devices. During startup AHCCMDT resets the AHCI controller and places it into AHCI mode. All AHCI ports except the port used by AHCCMDT are disabled and access to any devices attached to those ports is not allowed.
Create a bootable DOS device (floppy disk or USB boot device) with no CONFIG.SYS or AUTOEXEC.BAT files. Place the AHCCMDT.EXE and CWSDPMI.EXE files on the boot device.
Boot your system from the boot device. This insures that you are not loading some strange device drivers that may interfere with AHCCMDT.
To run AHCCMDT, set up the test system and devices:
The easy way to start AHCCMDT is by using the command line
AHCCMDT PORT=n
where n is the AHCI port number for the device to be tested.
When AHCCMDT starts it will find the AHCI controller(s). If more than one AHCI controller is found AHCCMDT will need to be restarted using the b:d:f command line option. During startup AHCCMDT will reset and initialize the AHCI controller and port to be used. All other AHCI ports will be disabled. If startup initialization is successful testing will begin. The program will switch to "full screen" mode during testing. This screen shows the testing progress. AHCCMDT also writes a detailed log file.
AHCCMDT will run until one of the following events stops the program:
The AHCCMDT command line syntax is:
AHCCMDT [PORT=n] [b:d:f] [options]
If no options are specified the program displays command line help information and terminates.
Except for the LOG=x option, the command line options are processed left to right. If an option is specified more than once, the last (rightmost) specification is used. Only the first LOG=x option is used, any addtional LOG=x options are ignored.
PORT=n
Selects the AHCI port to be used, 0 to 31. The default is PORT=0.
Also see:  b:d:f
b:d:f
b:d:f is the PCI bus, device and function for an AHCI controller.
When this option is not specified AHCDEMO will scan PCI buses 0 to 15 for supported AHCI host controllers.
This option is not required if there is only one AHCI controller in the system.
If the desired AHCI host controller is not found on PCI buses 0 to 15 then this option can be used to specify a PCI bus number up to 255.
Also see:  PORT=n
CACHE
Use the Set Features Subcommands to turn read and write caching on and off (if these subcommands are supported by the device). Note that on some devices a Soft Reset may change the device's internal setting for the read and write cache operation.
Also see:  NOCACHE
CHS
Same as the IDP=DEFAULT option.
Also see:  IDP=x
COMPARE=FULL
COMPARE=NONE
COMPARE=QUICK
Specify the level of data compare that is done on sectors read. Only sectors that have been written during this execution of AHCCMDT are subject to data compare when read. READONLY forces COMPARE=NONE.
COMPARE=FULL compares all data in each sector read.
COMPARE=QUICK has two modes: 1) If the read command's sector count is 1 to 32 then all data in each sector read is compared, 2) If the read command's sector count is greater than 32 then only the sector tag data is compared.
COMPARE=NONE disables all data compare.
The default is COMPARE=QUICK.
Also see:  READONLY
DEBUG=n
This option has no effect starting with version 1E8. See options LP, NOLP, NONSTD=x and OKTOWRITE.
Also see:  LP NOLP NONSTD=x OKTOWRITE
DTO=n
Set the AHCI Driver TimeOut in seconds. The default is 20 seconds. The valid range of n is 10 to 120 seconds.
DUMPCHT=n
DUMPCHT=*n
Dump the command history trace (CHT) at or after command number n or any time LBA n is read or written.
DUMPCHT=n specifies a command number. This option generates a single dump of the CHT.
DUMPCHT=*n specifies an LBA number. This option generates a CHT dump any time the LBA is accessed by a command. This may create very large log files.
DUMPCHT=135024 - dump CHT at of after command 135024 DUMPCHT=*135024 - dump CHT any time LBA 135024 is accessed
FUA
Use the WRITE DMA FUA EXT or WRITE MULTIPLE FUA EXT commands if the device supports the commands.
The default is FUA if the device supports the commands.
Also see:  NOFUA
GEN=n
Limit the SATA interface speed.
n is 0, 1, 2 or 3. The default is 0 (no limit).
GEN=0 allows AHCCMDT to change the SATA interface speed each time a random COMRESET is executed.
IDP=ALL
IDP=DEFAULT
IDP=NONE
IDP=NORMAL
Specify the level of INITIALIZE DEVICE PARAMETERS command testing during SEQ=N testing.
ALL uses head values of 1 to 16 and sector values of 1 to 255. DEFAULT uses only the drive's default values. IDP=NONE turns off CHS sector addressing in read/write commands. NORMAL uses head values of 1 to 16 and sector values of 1 to 63.
IDP=DEFAULT is equivalent to the CHS option.
IDP=NONE is equivalent to the NOCHS option.
During SEQ=R and SEQ=W testing IDP=DEFAULT is used. The default for SEQ=N testing is IDP=NORMAL.
IGNORE=ALL
IGNORE=DC
IGNORE=RE
IGNORE=WE
Ignore Data Compare (DC) and/or Read Errors (RE) and/or Write Errors (WE). IGNORE=ALL ignores all DC, RE and WE errors.
All errors are reported and logged but if the error is ignored it will not cause the program to enter read only mode or terminate due to excessive errors.
These options do not change the error recovery algorithms.
LOG=fileName
LOG=*n
LOG=NUL
LOG=NULL
NOTE: Only the first LOG=x option found on the command line is used, any additional LOG=x options are ignored.
The default log file name is ".\AHCCMDT.LOG". Use this option to specify a different log file name.
LOG=*n can be use to generate unique log file names based on the date/time. The generated file name replaces the *n characters and all following charactes. The LOG=*n options are:
where
LOG=*n examples:
LOG=*1 -- LOG=4E0B47AC.LOG LOG=*2 -- LOG=2C181452.LOG LOG=\logs\*3 -- LOG=\logs\1K25F33B.LOG LOG=dvt\test\*4 -- LOG=dvt\test\E17G4135.LOG
Use LOG=NUL or LOG=NULL to suppress generation of the log file.
LP
If supported by both the host and device, use host initiated Partial/Slumber
Note: If the device supports device initiated Partial/Slumber, AHCCMDT issues a SET FEATURES command to disable the feature.
The default is LP.
Also see:  NOLP NOPM PM PM=x
MAXERR=n
Maximum number of errors allowed, 1 to 1000. The default is 20.
Note that because all errors are retried once n+1 errors may be allowed before the program terminates.
MAXLBA=nK
MAXLBA=nM
Specify the highest LBA that will be tested. K is 1000 and M is 1000000.
The MINLBA=x and MAXLBA=x options can be used to restrict testing to a small area of a drive.
NOTE: There must be at least 100K sectors available for testing.
Also see:  MINLBA=x
MAXTL=n
Restrict read/write commands to transfer lengths (sector counts) of 1 to 65536.
Also see:  MINTL=x
MINLBA=nK
MINLBA=nM
Specify the lowest LBA that will be tested. K is 1000 and M is 1000000.
The MINLBA=x and MAXLBA=x options can be used to restrict testing to a small area of a drive.
NOTE: There must be at least 100K sectors available for testing.
Also see:  MAXLBA=x
MINTL=n
MINTL=*n
MINTL=n restricts read/write commands to transfer lengths (sector counts) of 1 to 65536.
MINTL=*n restricts read/write command to transfer lengths (sector counts of 1 to 65536 and also makes all transfer lengths and LBA values be a multiple of n.
Examples:
Also see:  MAXTL=n
NOCACHE
Do not use the Set Features subcommands to turn read and write caching on and off. When this option is used AHCCMDT will not issue any Set Features commands and the current cache state is shown as UNKNOWN. Note that on some devices a Soft Reset may change the device's internal setting for the read and write cache operation.
Also see:  CACHE
NOCHS
Same as the IDP=NONE option.
Also see:  IDP=x
NOFUA
Do not use the WRITE DMA FUA EXT or WRITE MULTIPLE FUA EXT commands.
The default is FUA if the device supports the commands.
Also see:  FUA
NOLP
Do not use host software initiated Partial/Slumber.
Note: If the device supports device initiated Partial/Slumber, AHCCMDT issues a SET FEATURES command to disable the feature.
The default is LP.
Also see:  LP NOPM PM PM=x
NONSTD=x
Specify program operation that does not conform to the ATA standards. 'x' is one or more of the following characters:
Any combination of these characters is allowed, For example NONSTD=BR and NONSTD=RB are equivalent.
After reporting a data compare error and checking stop on error then the NONSTD=7 is checked.
OKTOWRITE
Use this option to enable writing over user data. When this option is used and user data is found, a confirmation prompt is displayed during device setup.
NOTE: This option replaces the DEBUG=1 option starting with version 1E8.
NOPIO
Use PIO write/read commands.
The default is PIO.
Also see:  PIO
NOPM
Do not use any of the power management commands.
The default is PM.
NOSTOP
Do not stop on the any error.
The default is NOSTOP.
Also see:  NOSTOP STOP STOPKB STOP=x
PIO
Use PIO write/read commands.
The default is PIO.
Also see:  NOPIO
PM
Use the ATA power management commands.
The default is PM.
Also see:  LP NOLP NOPM PM=x
PM=n
PM=Fn
Use the ATA power management commands and convert some SLEEP commands into power off/oncycles.
This option requires either an ATA-ATAPI APCB or a customer CPCD to control power to the device under test.
See POWER CONTROL and ENVIRONMENT VARIABLES below.
'n' is the number of seconds to remain powered off when a SLEEP command is converted to a power cycle.
'F' adds a FLUSH CACHE [EXT] command before the power cycle.
The default is PM. There is no default for the PM=x option.
Also see:  LP NOLP NOPM PM
READONLY
No data will be written on the device's media. The program will issue the Write Buffer command.
The default is WRITEREAD.
Also see:  WRITEREAD
SEQ=N
SEQ=WN
SEQ=WRN
SEQ=N specifies normal AHCCMDT operations are performed. SEQ=WN specifies a full write pass of the drive(s) before normal AHCCMDT operations are performed. SEQ=WRN specifies a full write pass and a full read pass of the drive(s) before normal AHCCMDT operations are performed.
SEQ=N is the default.
The READONLY option converts SEQ=WN to SEQ=RN and SEQ=WRN to SEQ=RN.
See additional SEQ=x option information below.
SM=ALL
SM=DEFAULT
SM=NONE
SM=NORMAL
Specify the level of Set Multiple command testing. ALL uses multiple values of 1 to the drive's maximum. DEFAULT uses only the drive's default value. NORMAL uses multiple values that are powers of 2 (2, 4, 8, ...) up to the drive's maximum.
SM=NONE turns off testing of READ/WRITE MULTIPLE [EXT] commands.
The default is SM=NORMAL. If the drive's default is 1 then SM=DEFAULT is used.
STOP
Errors are one of five types: DC (Data Compare), OE (Other Errors), RE (Reset Error), TO (Time Out), and UC (UnCorrectable).
Stop after any DC, OE, RE, TO or UC error.
The default is NOSTOP.
Also see:  NOSTOP STOP STOPKB STOP=x
STOP=DC
STOP=OE
STOP=RE
STOP=TO
STOP=UC
Stop after the specific type of error as described in the description of STOP.
Any combination of these options may be used. STOP is equivalent to using all four of these options.
The default is NOSTOP.
Also see:  NOSTOP STOP STOPKB STOP=x
STOPKB
Stop/pause on any error and wait for keyboard input.
The default is NOSTOP.
Also see:  NOSTOP STOP STOPKB STOP=x
TIME=n
Specify the run time in minutes. The default is 60 minutes.
Note: There are 1440 minutes in one day, 2880 minutes in two days, etc.
WRITEREAD
Use both write and read commands.
The default is WRITEREAD.
Also see:  READONLY
1) Perform a write pass, a read pass and the normal random testing on the device attached to port 1, limit the interface speed to generation 1, and test for up to 10 hours (600 minutes).
AHCCMDT SEQ=WRN PORT=1 GEN=1 TIME=600
2) Use the AHCI controller on PCI bus 0, device 31 function 1 and test the device attached to port 0 in read only mode and stop on any error.
AHCCMDT 0:31:1 PORT=0 READONLY STOP
The normal command line option defaults are:
CACHE COMPARE=QUICK DEBUG=0 FUA GEN=0 IDP=NORMAL LOG=.\AHCCMDT.LOG MAXERR=20 MAXLBA=size_of_device MAXTL=max_supported_by_device MINLBA=0K NOSTOP PM SEQ=N SM=NORMAL TIME=60 WRITEREAD
Note: Be sure to use IDP=ALL and SM=ALL on the drives you are testing. There is no reason why a drive should not support these options of AHCCMDT.
If you are using a power control board, either an ATA-ATAPI.COM Power Control Board (APCB) or a customer supplied power control device (CPCD) then you should set the DOS environment variable ATAPWRCTRL before starting AHCCMDT.
If you are using the ATA-ATAPI.COM APCB see the APCB User Guide (POWER.HTM).
If you are using a CPCD it must be a device controlled by hardware signals from the data port of a Parallel Port.
For either the APCB or CPDC see the DOS environment variable ATAPWRCTRL (described below).
These DOS Environment variables must be set using the DOS SET command before AHCCMDT is started.
The DOS environment variable ATAERROR is used to enable a trigger signal when an error is detected. This variable is set using the DOS SET command:
SET ATAERROR=pppp:v1:v2:v3
where pppp is an I/O port address and v1, v2 and v3 are values to be written to that port. port must be a hex value in the range 1 to FFFF. v1, v2 and v3 are hex values between 0 and FF.
When this environment variable is in effect, the values v1, v2 and v3 will be written to the I/O port whenever an error is detected (before the error message is displayed.
For example:
SET ATAERROR=300:0:ff:0
will toggle the data at I/O port 300H from 00H to FFH to 00H.
The DOS environment variable ATAPWRCTLR is used to setup and enable use of a APCB or CPCD. This variable is set using the DOS SET command.
Also see POWER CONTROL and the PM=x command line option.
There are two formats of this DOS environment variable:
SET ATAPWRCTRL=pppp - used with the ATA-ATAPI.COM APCB. SET ATAPWRCTRL=pppp:on:off - used with a CPCD.
If you are using a APCB see the APCB User Guide (POWER.HTM).
If you are using a CPCD that can be controlled via a Parallel Port the you will need to know which parallel port data bits are used to turn power on and off.
If a power control device is used, the device power may default to off. Set this environment variable so that AHCCMDT can power on the drive during program start up. Also see the PM=x command line option.
For a APCB the DOS SET command is:
SET ATAPWRCTRL=pppp
For a CPCD the DOS SET command is:
SET ATAPWRCTRL=pppp:on:off
Where:
DOS command examples:
SET ATAPWRCTRL=E010 AHCCMDT ... -or- SET ATAPWRCTRL=E010:FF:00 AHCCMDT ...
While AHCCMDT is running, some keys on the keyboard can be used to change what AHCCMDT is doing. These keys are:
All other keys will restore the full screen display - see FULL SCREEN INFORMATION below.
The AHCCMDT log file is a plain ASCII text file. This file can be viewed with most text editors and text browsing programs. When printing the file use a font that will allow at least 90 characters per line.
The log file contains the startup configuration messages, the detailed device error messages (if any) and termination summary messages.
Device error messages can contain various levels of information including a command history trace (CHT) and a low level trace (LLT) of the AHCI host controller register activity.
Once device testing begins, AHCCMDT enter "full screen" mode. In this mode only summary information and very brief error message data is displayed.
If there are no errors AHCCMDT places the screen into screen saver mode after 20 minutes of running. If there are no errors pressing the key 's' and 'S' will switch the screen into screen saver mode immediately. Pressing any key, except ESC, 's' or 'S', will restore full screen mode for 20 minutes. Any error will restore full screen mode and disable the screen saver.
In full screen mode 25 lines are displayed:
The SATA speed (GEN:n1/n2/n3) on line 5 shows: a) the max speed supported by the host controller (n1), b) the speed requested by AHCCMDT (n2), and c) current operating speed (n3). When n2 is zero no speed restriction is in effect - see the GEN=n command line option.
The area information in lines 12-19 is a rolling list of the commands that have been issued. These lines show the following information:
At startup AHCCMDT performs the following activities:
The SEQ=x command line option can be used to have AHCCMDT perform full surface write or write-read passes before starting the normal test sequence. The SEQ=x option is applied to each area independently.
A write pass (W) writes all the sectors within an area sequentially starting with the lowest LBA.
A read pass (R) writes all the sectors within an area sequentially starting with the lowest LBA.
There are two types of the normal pass known as n and N. These perform the following:
An N pass randomly performs sequential writes or sequential reads. The same transfer length is used by all the commands in a sequence but the LBAs used are incremented or decremented as follows:
An N pass also performs bursts of write commands using random Sector Count and random LBA. The commands in these bursts are labeled "Wx" on the screen. Use the NONSTD=X option to supress these write bursts. The first burst uses 10000 write commands, the second uses 20000, ..., the fifth uses 50000, then the cycle starts over at 10000. There will be at least 200000 write/read/other commands between write bursts.
The Command History Trace part of an error message shows the type operations that are being used.
Each sector written by AHCCMDT has the data format shown below. The sector tag data is located at offsets 244 (F4H) to 283 (11BH) in all sectors.
Note that the sector tag fields are in x86 little endian format (least significant byte at lowest byte offset).
byte byte offset offset length data decimal hex in bytes pattern ------- ------- -------- --------------------------------- 000-001 000-001 2 a 16-bit random data pattern 002-243 002-0F3 2*121 repeat bytes 000-001 121 times 244-247 0F4-0F7 4 ones complement of 248-251 248-251 0F8-0FB 4 Run ID (Start Time) 252-255 0FC-0FF 4 LBA bits 31:0 256-259 100-103 4 LBA bits 63:32 (bits 63:48 are zero) 260-263 104-107 4 ones complement of 264-267 -or- the hex data 'deaddead'. 264-267 108-10B 4 command number of the last write command to this sector 268-271 10C-10F 4 ones complement of 268-271 272-275 110-113 4 sector count of the last write command to this sector 276-279 114-117 4 bits 31:0 of starting LBA of the last write command to this sector 280-283 118-11B 4 bits 63:32 of starting lba of the last write to this to this sector (bits 63:48 are zero) 284-nnn 11C-xxx 2*n repeat bytes 000-001 to fill rest of the sector
The data in bytes 000-003 are called the "basic data pattern". This pattern is repeated in bytes 4-243.
The data in bytes 244-251 are called the Run ID or Start Time. This field is used to determine if the drive has returned data that was written during the current execution of AHCCMDT.
The data in bytes 252-259 are called the LBA field. This is the LBA sector address for the sector read.
The data in bytes 260-283 are called the command fields. These fields describe the command that performed the last write to this sector. Note that unlike the time and lba fields, AHCCMDT is not able to know the expected contents of theee fields. The command fields are displayed in data compare error messages.
When AHCCMDT is writing a sector and it is known that the next command is also a write that will rewrite the same sector then the data in bytes 260-263 will be deaddeadH. A sector with this special deaddeadH value should never be read from the device.
When a sector is read and data compare is done, the fields of the sector are checked in the order shown below. Only sectors with an LBA less than "NextLBA" are compared.
Data compare field checking order:
Following a device I/O error, or data compare error on an ATA device, the following resets and commands are issued (in the order shown) before the failing command is retried:
If the reset or any of these commands fail, AHCCMDT terminates immediately.
All errors on an ATA device are retried once. Some errors may force the program into read only mode so that bad data on the media is not over written.
Note that many ATA data compare errors do not happen on the retry of the read command. This is because the reset done as part of the error recovery may clear the drive's read cache and the correct data is then read on the retry of the read command.
A typical device I/O error message is shown below. Refer to the line numbers for a description of each line in the message.
1 !!!!!!!!!! ERROR !!!!!!!!!! -- Sat Dec 26 13:54:23 2009 1 Port 1, area 19, tag 19, command 269354. 1 Driver error = 1, reason = 2, message = 'i/o error'. 2 A WRITE FPDMA QUEUED command failed, 2 started at LBA 10450052 9F7484H for 5 sectors, 2 ABRT, IDNF or other I/O error. 2 Area LBA range: 10450000-10500000 NextLBA: 10450052. 3 ----- Controller/Port Interrupt and Error Status ----- 3 ... 4 ----- Command History Trace (oldest to most recent) ----- 4 ... 5 ----- Low Level Trace (oldest to most recent) ----- 5 ...
Line 1: These lines are the message heading lines which describe the when the error happen, which device caused the error and what command caused the error.
Line 2: These lines describe the command that failed or the command that was being retried when an error happened.
Line 3: These lines describe the controller status and error information.
Line 4: Commands prior to this error are shown in these lines. See COMMAND HISTORY TRACE below.
Line 5: Low level controller I/O trace. See LOW LEVEL I/O TRACE below.
A typical data compare error message is shown below. Refer to the line numbers for a description of each line in the message.
1 !!!!!!!!!! DATA COMPARE ERROR !!!!!!!!!! -- Fri Apr 6 13:49:38 2012 1 Port 0, command 61322, READ SECTORS, 1 started at LBA 20=0000.0000.0014 for 8 sectors, 1 last LBA (start+sc-1) 27=0000.0000.001B, 1 expected bytes xfer 4096, actual bytes xfer 4096, 1 5 sectors ok, 3 sectors bad, 0 sectors bypassed, 1 error span is LBA 25 to 27, sector 5 to 7. 1 LBA range: 0000.0000.0000 to 0000.003D.0900 NextLBA: 0000.0000.0014 1 CurCHS: 3968*16*63=3,999,744 F80*10*3F=0000.003D.0800 1 CurrentMultiple: 16 WriteCache: ON ReadCache: ON 2 ----- Sector Error Information ----- 2 NOTE: Sectors that are ok or bypassed not shown. 2 -- Sector 4 -- LBA 24=0000.0000.0018 -- No error found -- 2 Sector data: 95 C0 95 C0 95 C0 95 C0 95 C0 95 C0 95 C0 95 C0 2 Last write by command 9 SC 7 LBA 18=0000.0000.0012. 2 -- Sector 5 -- LBA 25=0000.0000.0019 -- Basic data bad -- 2 at offset + 6 + 6H - expected C095 - actual A595 2 at offset + 8 + 8H - expected C095 - actual C05A 2 at offset + 502 + 1F6H - expected C095 - actual A595 2 at offset + 504 + 1F8H - expected C095 - actual C05A 2 Sector data: 95 C0 95 C0 95 C0 95 A5 5A C0 95 C0 95 C0 95 C0 2 Last write by command 10 SC 5 LBA 25=0000.0000.0019. 2 -- Sector 6 -- LBA 26=0000.0000.001A -- Basic data bad -- 2 at offset + 6 + 6H - expected C095 - actual A595 2 at offset + 8 + 8H - expected C095 - actual C05A 2 at offset + 502 + 1F6H - expected C095 - actual A595 2 at offset + 504 + 1F8H - expected C095 - actual C05A 2 Sector data: 95 C0 95 C0 95 C0 95 A5 5A C0 95 C0 95 C0 95 C0 2 Last write by command 10 SC 5 LBA 25=0000.0000.0019. 2 -- Sector 7 -- LBA 27=0000.0000.001B -- Basic data bad -- 2 at offset + 6 + 6H - expected C095 - actual A595 2 at offset + 8 + 8H - expected C095 - actual C05A 2 at offset + 502 + 1F6H - expected C095 - actual A595 2 at offset + 504 + 1F8H - expected C095 - actual C05A 2 Sector data: 95 C0 95 C0 95 C0 95 A5 5A C0 95 C0 95 C0 95 C0 2 Last write by command 10 SC 5 LBA 25=0000.0000.0019. 3 ----- Command History Trace (oldest to most recent) ----- 3 Line CmdNum CP CC DR Feature SectCount LBA28/LBA48 3 Line CmdNum CP CC DR Feature SectCount EquivLBA28 CYL HD SEC 3 1 61024 DW CA 40 84 0054 20 0014 0000.003C.F5F4 3 2 61025 PO 34 40 0 0000 20 0014 0000.003C.F608 3 3 61026 DW CA 07 212 00D4 21 0015 0000.003C.F61C 3963 7 20 3 ... 3 297 61320 PI 20 40 107 006B 7 0007 0000.0000.000C 3 298 61321 PI 29 40 0 0000 1 0001 0000.0000.0013 3 299 61322 PI 20 40 115 0073 8 0008 0000.0000.0014 3 300 61322 !! DATA COMPARE ERROR
Line 1: These lines are the message heading lines which describe the command that caused the error and the current status of the drive.
Line 2: These lines are displayed for each sector with a miscompare. Except for the sector immediately before and/or after the sector(s) in error, sectors with no error are not shown. Only the first 40 sectors with errors are shown. The expected and actual data is shown in 4 or 8 byte chunks. The first 16 bytes of each sector is also shown.
Line 3: Commands prior to this error are shown in these lines. The last command shown is the failing command. See COMMAND HISTORY TRACE below.
The Command History Trace shows the most recent 300 command start, end and error events. It is displayed as part of error messages. The trace can contain three types of events: write/read command start or end, other command or reset start or end, and debug event data.
The trace contains nine columns:
The Low Level I/O Trace shows the most recent 300 controller register writes/reads and other driver events. It is displayed as part of error messages. The trace is split into two parts: the left side is driver state information and the right side is controller register information.
The Low Level Trace Event Types are:
The following table shows the commands and resets issued by AHCCMDT.
ATA Command Name Notes ---------------------------- ------------------------------ EXECUTE DEVICE DIAGNOSTIC FLUSH CACHE FLUSH CACHE EXT IDENTIFY DEVICE INITIALIZE DRIVE PARAMETERS See the IDP option. READ DMA READ DMA (0xC9) See NONSTD=W. READ DMA EXT READ MULTIPLE READ MULTIPLE EXT READ SECTORS READ SECTORS (0x21) See NONSTD=W. READ SECTORS EXT READ VERIFY SECTORS READ VERIFY SECTORS EXT RECALIBRATE SEEK SET MULTIPLE MODE See the SM option. SET FEATURES Only FR=02H, 55H, 82H and AAH are tested. SMART ENABLE SMART RETURN STATUS If supported, issued every 10 minutes. READ BUFFER If these commands are supported WRITE BUFFER by the device then both commands are used (even in READONLY mode). See NONSTD=B and NONSTD=1. CHECK POWER MODE If the device supports the IDLE CHECK POWER MODE command then IDLE IMMEDIATE all of these power management SLEEP commands are used. See the STANDBY NOPM and PM options. STANDBY IMMEDIATE WRITE DMA WRITE DMA (0xCB) See NONSTD=W. WRITE DMA EXT WRITE MULTIPLE WRITE MULTIPLE EXT WRITE SECTORS WRITE SECTORS (0x31) See NONSTD=W. WRITE SECTORS EXT COMRESET SOFT RESET PARTIAL SLUMBER
Versions not shown were test or skipped versions.
Version 3A3c
Version 3A3b
Version 3A3a
Version 3A3
Technical support can be found at:
http://www.ata-atapi.com/techsupp.html
-end-