ATAZZ(8)                                                 ATAZZ(8)

     NAME
          atazz - ATA target control

     SYNOPSIS
          atazz [ -r ] [ sddev ]
          atazz -c cmd

     DESCRIPTION
          Atazz is an interactive program for exercising raw ATA
          devices.  Its intended purpose is to support odd and admin-
          istrative commands without requiring this functionality be
          implemented by each device driver.  It reads commands from
          standard input and applies them to an ATA target.  Communi-
          cation is in SATA FIS format.  Non-ATA devices accessed
          through the sd(3) interface will not work; ATAPI devices
          will respond to the commands in the ACS-2 packet feature
          set.  If the -c option is given, the name of the given
          numeric ATA command is printed.  sddev is given on the com-
          mand line, an open (see below) is immediately applied to the
          target.  On completion of a command, any errors are printed
          followed by the prompt `az> '.  The response FIS may be
          printed with the command rfis.  Some commands like identify
          device print processed output by default.  Redirecting the
          output to a file will give the raw output as will the -r
          flag.  In addition the following commands are implemented
          internally

          < > <> file  Redirect output, input or both to or from a
                       file.  If file is missing, then the redirection
                       is closed.

          close        Close the currently open device.

          dev          Print device path and basic information.

          issuetr [ command ... ]
                       Toggle command issue tracing.  With no argu-
                       ments, issuetr toggles tracing for all com-
                       mands.  Commands may be specified by number.

          open dev     Open the named device.  probe Print a list of
                       available device paths, size, sector size and
                       WWNs.  The first column is a suitable argument
                       for open.

          rfis         Print the returned FIS, if any.

          For all commands, it is possible to manipulate the sata reg-
          isters directly by specifying the register name and an 8-bit

     ATAZZ(8)                                                 ATAZZ(8)

          value.  The registers are

          type      FIS type

          flags     FIS flags

          cmd       command register

          feat      or features

          lba0      or sector

          lba8      or cyl0

          lba16     or cyl8

          lba24     or dh or byte8

          lba32

          lba40

          feat8

          sc        sector count

          sc8

          r         reserved FIS register

          In addition, commands that take an LBA and a number of sec-
          tors may be given those arguments directly, for example to
          read 1 sector starting at lba 100,

               az> read dma ext 100 1

          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

               az> set features set transfer mode udma 6
               az> set features enable write cache
               az> smart enable operations
               az> smart return status
               normal

          SCT pseudo-protocol commands are also supported.

               az> sct error recovery time set read timer = 5
               az> sct error recovery time return read timer
               500ms

     ATAZZ(8)                                                 ATAZZ(8)

     FILES
          /dev/sdXX/raw

     SOURCE
          /sys/src/cmd/atazz

     SEE ALSO
          scuzz(8), sd(3), smart(8),
          T13/2015 ACS-2 published online at http://www.t13.org.

     BUGS
          Subcommand help doesn't work.  ACS-2 commands are tortuously
          verbose.