The SCSI Driver is an open software interface for accessing any kind of peripheral, not only SCSI devices. Also SATA drives for optical media like DVDs and BDs use the SCSI command set. For other devices a SCSI Driver can emulate SCSI commands, just like HDDRIVER does it for IDE and SATA drives.
The sources of the software on this page are available on GitHub.
HDDRIVER fully supports the latest version 1.01 of the SCSI Driver interface. Via SCSI Drivers HDDRIVER and HDDRUTIL can access peripherals connected to any interface, provided HDDRIVER or HDDRUTIL were started after the respective SCSI Driver.
For Atari TT and Falcon HDDRIVER implements the so-called SCSI Driver Target Interface: A TT or Falcon is detected as a SCSI device by other devices connected to the SCSI bus, and the Atari can execute SCSI commands. Sample code in C for implementing SCSI commands is provided on GitHub. These sources are meant for developers who have a very good knowledge of SCSI. In order for the target interface to work flawlessly all drivers accessing SCSI peripherals must use the SCSI Driver.
Fully functional SCSI Drivers are available for the following hardware interfaces and software emulators:
Claus Brod, Steffen Engel
|Atari ATAPI/SATA||HDDRIVER||Uwe Seimet|
|Milan IDE/ATAPI/SATA||HDDRIVER||Uwe Seimet|
|Milan SCSI||Milan PCI SCSI Driver||Michael Schwingen|
|MagiCMac||CBHD/MM_SCSI.PRG||Steffen Engel, Thomas Tempelmann|
|Hatari 2.0 (Linux SCSI/IDE/ATAPI/SATA/USB)||NF_SCSI, see below||Uwe Seimet|
|ARAnyM 1.1 (Linux SCSI/IDE/ATAPI/SATA/USB)||NF_SCSI, see below||Uwe Seimet, Thorsten Otto|
There are also other, apparently incomplete implementations with unknown status, which are therefore not listed.
When implementing a new SCSI Driver it is recommended to not only study the SCSI Driver specification but also the command standards documents, in particular for SPC, SBC and MMC.
Information on the SCSI Driver is also provided by some of my articles for the ST-Computer magazine (German only).
The TOS component of the SCSI Driver for Hatari and ARAnyM, based on the NatFeats interface of these emulators. It can be launched as a regular program or as an HDDRIVER module.
With this driver Atari software (e.g. HDDRIVER, HDDRUTIL, DISKUS, EXTENDOS, GEMAR) has access to all devices managed by the Linux SG driver, e.g. hard disk drives, memory cards and CD/DVD writers. (SSD connected to an NVMe interface are not supported by the Linux SG driver.)
Please thoroughly read the README file. The native SCSI Driver component for Linux, which is the counterpart of NF_SCSI, is included in the current versions of Hatari and ARAnyM. With Hatari the NatFeats support has to be explicitly enabled in the Hatari configuration file or on the command line.
SCSI_MON logs SCSI Driver calls, which helps with analyzing errors or when implementing a new SCSI Driver. SCSI_MON also helps to understand the SCSI and SATA software protocols. The program can be launched as a regular program or as an HDDRIVER module.
SDRVTEST is a simple tool for testing certain SCSI Driver functions, in particular (but not only) for SCSI Drivers that support IDE/SATA drives or USB devices.