sg3_utils is a package of utilities for accessing devices that use SCSI command sets. Most utilities issue a single command and display the response, while some work at a slightly higher level. There are utilities for fetching INQUIRY data and VPD, mode, and log pages. There is support for modern SCSI transports such as SAS and FCP. The package is written for Linux and has been ported to FreeBSD, Solaris, Tru64, and Windows. There is an earlier version of this package for Linux 2.2 series kernels called sg_utils.
sdparm has a command line interface for getting and setting SCSI mode page fields. Fields can be referred to by an acronym or a numerical address. It has support for various SCSI transport and vendor-specific mode pages. It also decodes Vital Product Data (VPD) pages and can send some simple SCSI commands. sdparm was originally written for Linux with ports to FreeBSD, Solaris, Tru64, and Windows.
dd is a Unix command line utility for copying data. ddpt adds features for efficiently copying large amounts of data to and from disks. Apart from accessing disks using traditional Unix read() and write() calls, ddpt can optionally use SCSI pass-through interfaces to send SCSI commands to perform a copy. In Linux, the pass-through can be used to send TRIM commands to SSDs. It is written for Linux with ports to FreeBSD, Solaris, and Windows.
The proposed read-only flag added to sg_sat_set_features and will appear in version 1.39. Best to email patches like that directly to me as I don't check this site that often.
More information about sg_xcopy: its xcopy(lid1) functionality has been ported to ddpt (https://freecode.com/projects/ddpt). Further, ODX support (aka: xcopy v2, lite) is being added to ddpt and will appear shortly.
'Does sdparm support SCSI FW download?' No but sg_write_buffer in this package does.