SG_RAW(8) SG3_UTILS SG_RAW(8) (NAME) sg_raw - SCSI NVMe (SYNOPSIS) sg_raw [--binary] [--cmdfile=CF] [--cmdset=CS] [--enumerate] [--help] [--infile=IFILE] [--nosense] [--nvm] [--outfile=OFILE] [--raw] [--readonly] [--request=RLEN] [--scan=FO,LO] [--send=SLEN] [--skip=KLEN] [--timeout=SECS] [--verbose] [--version] DEVICE [CDB0 CDB1 ...] (DESCRIPTION) SCSI ( ) DEVICE . DEVICE DEVICE . (pass through) (bidirectional) ( DEVICE DEVICE ). SCSI . (00..FF) . --cmdfile=CF . <<>> . SCSI ( generic SCSI) FreeBSD . NVMe Admin NVM DEVICE . NVMe --cmdfile=CF NVMe . << NVME>> . (heuristic) SCSI NVMe --cmdset=CS . (OPTIONS) . . -b, --binary (dump) (stdout). -c, --cmdfile=CF CF . DEVICE . -C, --cmdset=CS CS ( SCSI NVMe). 0 . SCSI 1 CS . NVMe 2 CS . -h, --help . -i, --infile=IFILE IFILE stdin. --send . << >> ("data-out") . -n, --nosense Sense SCSI . -N, --nvm NVMe Admin . NVM ( Read Write ( )) . -o, --outfile=OFILE DEVICE OFILE. << >> ("data-in") . . stdout . OFILE '-' stdout . --request . -w, --raw CF ( ) . ASCII . -R, --readonly DEVICE . ( ) - . -r, --request=RLEN RLEN DEVICE. RLEN 'k' ( ) . RLEN '0x' 'h' . RLEN ( cdb ( "allocation length") / DEVICE ) HBA . RLEN . "data-in" SCSI ( ) DEVICE "allocation length" cdb << >> . DEVICE "allocation length" cdb . -Q, --scan=FO,LO (opcodes ). FO ( '0x' 'h' ). LO . LO . SCSI/NVMe . : . . --cmdset=CS CS . -s, --send=SLEN SLEN stdin DEVICE. SCSI SLEN ( ) "data-out" . SLEN '0x' 'h' . "data-out" cdb SLEN . SCSI WRITE(10) "transfer length" ( ). -k, --skip=KLEN KLEN . --send . --send . -t, --timeout=SECS SECS (: ). (timeout ) (abort) . --tmo=SECS . -v, --verbose (verbosity). . -V, --version . (NOTES) sg_inq INQUIRY ( '1' ) SCSI ( SPC SSC). sg_vpd (VPD) . CDB ( ) (pass-through) . bsg CDB ( /dev/sdc) SG_IO ioctl CDB sg . CDB . CDB T10 CDB '-vv' . /dev/null DEVICE CDB DEVICE . --scan=FO,LO . SCSI : NVME (NVME SUPPORT) NVMe ( NVM Express) . NVMe SCSI . (LU) SCSI (namespace) NVMe ( LUN 0 SCSI ). (target) SCSI NVMe . SCSI ( SCSI cdb_ ) NVMe . SCSI (initiator - HBA ) (target - ) ( PCIe) NVMe . Admin NVMe . "NVM" --nvm . Admin NVM (submission queue 0) . SCSI big endian ( ) NVMe little endian ( ). NVMe Words ( ) Double Words ( ) Quad Words ( ) (alignment) SCSI . NVMe SCSI ( SAS iSCSI SRP) . ( CF) data-in data-out . : 0xfffffffffffffffe << data-in>> 0xfffffffffffffffd << data-out>> . NVMe little endian NVMe "fe" "ff" . ( ) ( : 32 byte) ( "ff") . inhex (tarball) : nvme_identify_ctl.hex nvme_dev_self_test.hex nvme_read_ctl.hex nvme_write_ctl.hex . : NVMe "0's based" ( ) . . NVMe Read "0's based" ! . (EXAMPLES) . sg3_utils(8) . sg_raw /dev/scd0 1b 00 00 00 02 00 () /dev/scd0. sg_raw -r 1k /dev/sg0 12 00 00 00 60 00 INQUIRY /dev/sg0 ( ) stdout. sg_raw -s 512 -i i512.bin /dev/sda 3b 02 00 00 00 00 00 02 00 00 . i512.bin ( ) SCSI WRITE BUFFER "data" ( ) . . sg_raw -r 512 -o o512.bin /dev/sda 3c 02 00 00 00 00 00 02 00 00 SCSI READ BUFFER "data" ( ) o512.bin . 'cmp i512.bin o512.bin' . sg_raw --infile=urandom.bin --send=512 --request=512 --outfile=out.bin "/dev/bsg/7:0:0:0" 53 00 00 00 00 00 00 00 01 00 (bidirectional) XDWRITEREAD(10) bsg . "urandom.bin" (data-out) (data-in) "out.bin" . () cdb ( ). urandom.bin : dd if=/dev/urandom bs=512 count=1 of=urandom.bin sg_raw.exe PhysicalDrive1 a1 0c 0e 00 00 00 00 00 00 e0 00 00 ATA STANDBY IMMEDIATE PhysicalDrive1 . ATA SCSI ATA PASS-THROUGH(12) ( SAT SAT-2 https://www.t10.org ). STANDBY IMMEDIATE sense . NVMe inhex 'nvme_' inhex/nvme_identify_ctl.hex . (EXIT STATUS) sg_raw 0 . sg3_utils(8) . (AUTHOR) Ingo van Lil (REPORTING BUGS) . (COPYRIGHT) (C) 2001-2023 Ingo van Lil GPL . . (SEE ALSO) sg_inq, sg_vpd, sg3_utils (sg3_utils), plscsi sg3_utils-1.48 May 2023 SG_RAW(8)