/usr/share/doc/sg3-utils/examples
NameSizeModeActions
archive/-0755rm
forwarded_sense.txt2960644editdlrm
Makefile31560644editdlrm
Makefile.freebsd20230644editdlrm
nvme_dev_self_test.hex8060644editdlrm
nvme_identify_ctl.hex11980644editdlrm
nvme_read_ctl.hex18320644editdlrm
nvme_write_ctl.hex18460644editdlrm
README7760644editdlrm
reassign_addr.txt4650644editdlrm
ref_sense.txt3050644editdlrm
scsi_inquiry.c41850644editdlrm
sdiag_sas_p0_cjtpat.txt4050644editdlrm
sdiag_sas_p0_prbs9.txt4070644editdlrm
sdiag_sas_p1_cjtpat.txt4640644editdlrm
sdiag_sas_p1_idle.txt5600644editdlrm
sdiag_sas_p1_prbs15.txt4080644editdlrm
sdiag_sas_p1_stop.txt3590644editdlrm
sgq_dd.c386790644editdlrm
sg_compare_and_write.txt24830644editdlrm
sg_excl.c61280644editdlrm
sg_persist_tst.sh36240755editdlrm
sg_sat_chk_power.c91640644editdlrm
sg_sat_smart_rd_data.c65560644editdlrm
sg_simple1.c60060644editdlrm
sg_simple2.c67440644editdlrm
sg_simple3.c66120644editdlrm
sg_simple4.c74240644editdlrm
sg_simple5.c76490644editdlrm
sg_simple16.c34940644editdlrm
sg_unmap_example.txt15710644editdlrm
sg__sat_identify.c77330644editdlrm
sg__sat_phy_event.c123040644editdlrm
sg__sat_set_features.c99340644editdlrm
transport_ids.txt11240644editdlrm
Edit: /usr/share/doc/sg3-utils/examples/nvme_read_ctl.hex (1832B)
# 64 byte NVMe, Read command (a NVM command) that is suitable for: # sg_raw --cmdfile= --nvm --request=2048 # # The address field (at byte offset 24, 8 bytes and little endian) gives # special meaning to the highest address pointers: # ffffffff fffffffe use address of data-in buffer # ffffffff fffffffd use address of data-out buffer # # The data length field (at byte offset 36, 4 bytes and little endian) # gives special meaning to the highest block counts: # fffffffe use byte length of data-in buffer # fffffffd use byte length of data-out buffer # # 512 byte logical block size is assumed. Read 4 blocks hence 2048bytes. # The first LBA read is 0x12345 and the namespace is 1. If successful # the four blocks will be read into the data-in buffer. Submission queu # 0 is used (the same queue that Admin commands use). The NVM opcode for # the Read command is 0x2 and appears in the first command byte. 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe ff ff ff ff ff ff ff 00 00 00 00 fe ff ff ff 45 23 01 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 # Notice NVMe uses its quirky "0's based" number of blocks so # 03 appears at byte offset 48 to mean "read 4 blocks". # # A typical invocation in Linux and FreeBSD would look like this: # sg_raw --cmdfile=nvme_read_ctl.hex --nvm -r 2048 # --outfile=t.bin /dev/nvme0 # # Notice the '--nvm' option which is needed to distiguish a NVM # command from an Admin command as Admin commands are the default # in this utility. # # This utility (and most others in the package) aligns data-in and # data-out buffers to the beginning of pages which are 4096 bytes # long at a minimum. This is the way NVMe likes things as well.