| Introduction |
| ============ |
| The FreeBSD port of sg3_utils contains those utilities that are _not_ |
| specific to Linux. In some cases the FreeBSD camcontrol command supplies |
| similar functionality; for example 'sg_map' is similar to |
| 'camcontrol devlist'. |
| |
| The dd variants from the sg3_utils package (e.g. sg_dd) rely on too many |
| Linux idiosyncracies to be easily ported. A new package called 'ddpt' |
| contains a utility with similar functionality to sg_dd and ddpt is available |
| for FreeBSD. |
| |
| Supported Utilities |
| =================== |
| Here is a list of utilities that have been ported: |
| sg_decode_sense |
| sg_format |
| sg_get_config |
| sg_get_lba_status |
| sg_ident |
| sg_inq [dropped ATA IDENTIFY DEVICE capability] |
| sg_logs |
| sg_luns |
| sg_modes |
| sg_opcodes |
| sg_persist |
| sg_prevent |
| sg_raw |
| sg_rdac |
| sg_read_block_limits |
| sg_read_buffer |
| sg_read_long |
| sg_readcap |
| sg_reassign |
| sg_referrals |
| sg_requests |
| sg_rmsn |
| sg_rtpg |
| sg_safte |
| sg_sat_identify |
| sg_sat_phy_event |
| sg_sat_set_features |
| sg_senddiag |
| sg_ses |
| sg_start |
| sg_stpg |
| sg_sync |
| sg_turs |
| sg_verify |
| sg_unmap |
| sg_vpd |
| sg_wr_mode |
| sg_write_buffer |
| sg_write_long |
| sg_write_same |
| |
| Most utility names are indicative of the main SCSI command |
| that they execute. Some utilities are slightly higher level, for |
| example sg_ses fetches SCSI Enclosure Services (SES) status pages and |
| can send control pages. Each utility has a man page (placed in |
| section 8). An overview of sg3_utils can be found at: |
| http://sg.danny.cz/sg/sg3_utils.html . |
| A copy of the "sg3_utils.html" file is in the "doc" subdirectory. |
| |
| |
| The executables and library can be built from the source code in |
| the tarball and installed with the familiar |
| "./configure ; make ; make install" sequence. If this fails try |
| running the "./autogen.sh" script prior to that sequence. There |
| are generic instruction on configure and friend in the INSTALL file. |
| |
| Some man pages have examples which use linux device names which |
| hopefully will not confuse the FreeBSD users. |
| |
| Device naming |
| ============= |
| In FreeBSD disks have block names like '/dev/da0' with a corresponding |
| pass-through device name like '/dev/pass0'. Use this command |
| "camcontrol devlist" to see that SCSI devices available. |
| |
| |
| Details |
| ======= |
| Most of the ported utilities listed above use SCSI command functions |
| declared in sg_cmds_*.h headers . Those SCSI command functions are |
| implemented in the corresponding ".c" files. The ".c" files pass SCSI |
| commands to the host operating system via an interface declared in sg_pt.h . |
| There are currently five implementations of that interface depending on |
| the host operating system: |
| - sg_pt_linux.c |
| - sg_pt_freebsd.c |
| - sg_pt_osf1.c [Tru64] |
| - sg_pt_win32.c |
| - sg_pt_solaris.c |
| |
| The sg_pt_freebsd.c file uses the FreeBSD CAM SCSI pass through mechanism. |
| Hence only FreeBSD device nodes that support CAM can be used. These can be |
| viewed with the "camcontrol devlist" command. To access ATAPI devices (e.g. |
| ATAPI DVD drives) the kernel may need to be configured with the "atapicam" |
| device. |
| |
| FreeBSD 8.0 is the most recent version of FreeBSD tested with these |
| utilities. |
| |
| |
| |
| Doug Gilbert |
| 5th December 2010 |