{
  "slug": "scsi-ata-translation",
  "term": "SCSI / ATA Translation (SAT)",
  "aliases": [
    "SAT",
    "SCSI to ATA Translation",
    "SCSI / ATA Translation Layer",
    "SATL"
  ],
  "definition": "SCSI / ATA Translation maps ATA device behavior to a SCSI command interface through a translation layer.",
  "note": "SAT describes command-interface translation, not a physical connector or a USB transport. The translation layer presents ATA devices through SCSI behavior at the application layer; this does not turn the underlying device into a native SCSI drive. [t10-sat]\n\nThe layer need not be inside an external enclosure. Linux v6.12 documents SCSI-to-ATA translation in libATA for ATA host controllers and devices. A host-visible SCSI interface therefore does not by itself identify the physical attachment or native command set. [libata]\n\nTranslated block commands and optional ATA pass-through are different paths. The smartctl 7.5 manual documents 12-byte and 16-byte ATA PASS THROUGH command descriptor blocks for its SAT device type. Working block I/O does not establish that the intervening stack exposes SMART RETURN STATUS; if that result is unavailable, an attribute-threshold fallback is not the missing drive-reported result. [smartctl-sat]\n\nCHECK CONDITION can also carry requested ATA register results after a successful pass-through command. The smartctl 7.5 SAT path sets CK_COND when output registers are needed and decodes descriptor and fixed-format sense separately. Interpret SCSI status together with sense and ATA status/error fields; CHECK CONDITION alone is not a diagnosis of media failure. [sat-return] [sat-kernel-return]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    "Supported diagnostic commands depend on the translation implementation and the access path, not only on the drive. [smartctl-sat]"
  ],
  "related": [
    "sata",
    "scsi",
    "uasp",
    "usb-mass-storage",
    "ata-smart"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "t10-sat",
      "title": "T10 public working-drafts index: SCSI / ATA Translation and SAT-5 scope",
      "url": "https://www.t10.org/drafts.htm",
      "accessed": "2026-11-03"
    },
    {
      "id": "libata",
      "title": "Linux v6.12 libATA Developer's Guide: Introduction",
      "url": "https://raw.githubusercontent.com/torvalds/linux/adc218676eef25575469234709c2d87185ca223a/Documentation/driver-api/libata.rst",
      "accessed": "2026-11-03"
    },
    {
      "id": "smartctl-sat",
      "title": "Smartmontools 7.5 manual: -d sat, -H and ATA, SCSI command sets and SAT",
      "url": "https://raw.githubusercontent.com/smartmontools/smartmontools/RELEASE_7_5/smartmontools/smartctl.8.in",
      "accessed": "2026-11-03"
    },
    {
      "id": "sat-return",
      "title": "Smartmontools 7.5 scsiata.cpp: sat_device::ata_pass_through, CK_COND and sense decoding",
      "url": "https://raw.githubusercontent.com/smartmontools/smartmontools/RELEASE_7_5/smartmontools/scsiata.cpp",
      "accessed": "2026-11-03"
    },
    {
      "id": "sat-kernel-return",
      "title": "Linux v6.12 libata-scsi.c: ata_gen_passthru_sense and ata_scsi_set_passthru_sense_fields",
      "url": "https://raw.githubusercontent.com/torvalds/linux/adc218676eef25575469234709c2d87185ca223a/drivers/ata/libata-scsi.c",
      "accessed": "2026-11-03"
    }
  ],
  "updated": "2026-11-03",
  "provenance": [
    "The T10 public index supports the scope description; restricted normative SAT documents were not reviewed.",
    "Linux v6.12 and smartctl 7.5 are explicit implementation references, not hardware compatibility tests or a survey of later SAT revisions."
  ]
}
