1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
.TH ATAZZ 8
.SH NAME
atazz \- ATA target control
.SH SYNOPSIS
.B atazz
[
.B -r
]
[
.IR sddev
]
.br
.B atazz
.B -c
.I cmd
.SH DESCRIPTION
.I Atazz
is an interactive program for exercising
raw ATA devices.
Its intended purpose is to support odd and
administrative commands without requiring this
functionality be implemented by each device driver.
It reads commands from standard input and applies
them to an ATA target. Communication is in SATA
FIS format. Non-ATA devices accessed
through the
.IR sd (3)
interface will not work; ATAPI devices will respond
to the commands in the ACS-2 packet feature set.
If the
.B -c
option is given, the name of the given numeric ATA
command is printed.
.I sddev
is given on the command line, an
.B open
(see below)
is immediately applied to the target.
On completion of a command, any errors are
printed followed by the prompt
.LR "az> " .
The response FIS may be printed with the
command
.BR rfis .
Some commands like
.B "identify device"
print processed output by default. Redirecting the
output to a file will give the raw output as will the
.B -r
flag.
In addition the following commands are implemented
internally
.TF "< > <> file"
.PD
.TP
.BI "< > <> " file
Redirect output, input or both to or from a file.
If
.I file
is missing, then the redirection is closed.
.TP
.B close
Close the currently open device.
.TP
.B dev
Print device path and basic information.
.TP
.BR issuetr " [ \fIcommand\fP ... ]"
Toggle command issue tracing. With no arguments,
issuetr toggles tracing for all commands. Commands
may be specified by number.
.TP
.BI open " dev
Open the named device.
.B probe
Print a list of available device paths, size, sector size
and WWNs. The first column is a suitable argument
for
.BR open .
.TP
.B rfis
Print the returned FIS, if any.
.PP
For all commands, it is possible to manipulate
the sata registers directly by specifying the register
name and an 8-bit value. The registers are
.TF "features"
.PD
.TP
.B type
FIS type
.TP
.B flags
FIS flags
.TP
.B cmd
command register
.TP
.B feat
or
.B features
.TP
.B lba0
or
.BR sector
.TP
.B lba8
or
.B cyl0
.TP
.B lba16
or
.B cyl8
.TP
.B lba24
or
.B dh
or
.B byte8
.TP
.B lba32
.TP
.B lba40
.TP
.B feat8
.TP
.B sc
sector count
.TP
.B sc8
.TP
.B r
reserved FIS register
.PP
In addition, commands that take an LBA and a number of
sectors may be given those arguments directly, for example
to read 1 sector starting at lba 100,
.EX
.IP
az> read dma ext 100 1
.EE
.PP
Subcommands are spelled out as in ACS-2.
For example, to set the transfer mode to UDMA 6, enable
the write cache and to enable and report smart status, one would
.EX
.IP
az> set features set transfer mode udma 6
az> set features enable write cache
az> smart enable operations
az> smart return status
normal
.EE
.PP
SCT pseudo-protocol commands are also supported.
.EX
.IP
az> sct error recovery time set read timer = 5
az> sct error recovery time return read timer
500ms
.EE
.PP
.SH FILES
.BR /dev/sd\fIXX\fP/raw
.SH SOURCE
/sys/src/cmd/atazz
.SH "SEE ALSO"
.IR scuzz (8),
.IR sd (3),
.IR smart (8),
.br
T13/2015 ACS-2 published online at http://www.t13.org.
.SH BUGS
Subcommand help doesn't work. ACS-2 commands are
tortuously verbose.
|