diff options
Diffstat (limited to 'inhex')
39 files changed, 1267 insertions, 0 deletions
diff --git a/inhex/README b/inhex/README new file mode 100644 index 00000000..77557a05 --- /dev/null +++ b/inhex/README @@ -0,0 +1,94 @@ + Hex data for various sg3_utils utilities + ======================================== + +The files in this folder contain hexadecimal data (in ASCII) and associated +comments (prefixed with the hash mark symbol: '#' ). Files containing +hexadecimal data have the extension ".hex". There is at least one file +containing binary data and it has the extension ".raw". + +The utility that each hex file is associated with can be determined in most +case by prepending "sg_" to these filenames. Then go to the 'src' folder (a +sibling folder to this one) and look for a match or partial match on +the name. + +For example: + vpd_dev_id.hex +after prepending 'sg_' becomes: + sg_vpd_dev_id.hex +which is a partial match on the sg_vpd utility. +The remaining 'dev_id.hex' is meant to suggest the 'device identifier' +VPD page which is a mandatory VPD page for SCSI devices.. + +Assuming sg3_utils is installed, it can be tested like this: + sg_vpd --inhex=<folder_holding_sg3_utils>/inhex/vpd_dev_id.hex + +And should output this: + +Device Identification VPD page: + Addressed logical unit: + designator type: NAA, code set: Binary + 0x5000c5003011cb2b + Target port: + designator type: NAA, code set: Binary + transport: Serial Attached SCSI Protocol (SPL-4) + 0x5000c5003011cb29 + designator type: Relative target port, code set: Binary + transport: Serial Attached SCSI Protocol (SPL-4) + Relative target port: 0x1 + Target device that contains addressed lu: + designator type: NAA, code set: Binary + transport: Serial Attached SCSI Protocol (SPL-4) + 0x5000c5003011cb28 + designator type: SCSI name string, code set: UTF-8 + SCSI name string: + naa.5000C5003011CB28 + +Not all the hex files follow the "prepend sg_" pattern. Those hex files +starting with 'nvme_' are examples of invoking NVMe commands with the +sg_raw utility. + +Binary <--> Hexadecimal +----------------------- +The vpd_zbdc.raw file is binary and was created by: + sg_decode_sense --inhex=vpd_zbdc.hex --nodecode --write=vpd_zbdc.raw +as an example of converting a file in ASCII hexadecimal byte oriented +format to binary. + +Turning binary output into hexadecimal can be done several ways. For +viewing in byte oriented ASCII hex these Unix commands can be used: + od -t x1 vpd_zbdc.raw + hexdump -C vpd_zbdc.raw + +Each line starting with a "input offset" which is a running count of +bytes, starting at zero. The hexdump examples shows an ASCII rendering +of those 16 bytes to the right of each line. The sg_decode_sense utility +may also be used: + sg_decode_sense --binary=vpd_zbdc.raw -H + sg_decode_sense --binary=vpd_zbdc.raw -HH + +The second form of sg_decode_sense appends an ASCII rendering of the 16 +bytes to the right of each line. + +When ASCII hexadecimal is being used as input to a utility in this +package, the "input offset" at the start of each line (and the optional +ASCII rendering to the right of each line) must not be given. +That can be done with hexdump: + hexdump -An -C -v vpd_zbdc.raw + ^^^ +That is a syntax error, there is no 'A' option <<<<<<<< check + +And the sg_decode_sense utility can do it with (with the --nodecode option): + sg_decode_sense -N --binary=vpd_zbdc.raw -HHH +That will print suitable lines of hexadecimal (16 bytes per line) to the +console (stdout) To go the other way (i.e. hexadecimal to binary): + sg_decode_sense -N --inhex=vpd_zbdc.hex --write=vpd_zbdc.bin + + +Conclusion +---------- +Users are encouraged to send the author any ASCII hex files for utilities +that support --inhex and don't have hex data already. Special cases are +also welcome. They help the author test this code. + +Douglas Gilbert +18th July 2022 diff --git a/inhex/descriptor_sense.hex b/inhex/descriptor_sense.hex new file mode 100644 index 00000000..c0fcba97 --- /dev/null +++ b/inhex/descriptor_sense.hex @@ -0,0 +1,30 @@ +# Test descriptor format sense data. Values are in hex. +# Invocation: 'sg_decode_sense -f descriptor_sense.hex' [dpg 20220626] + + +# unrec_err, excessive_writes, sdat_ovfl, additional_len=? +72 01 03 02 80 00 00 4c + +# Information: 0x11223344556677bb +00 0a 80 00 11 22 33 44 55 66 77 bb + +# command specific: 0x3344556677bbccff +01 0a 00 00 33 44 55 66 77 bb cc ff + +# sense key specific: SKSV=1, actual_count=257 (hex: 0x101) +02 06 00 00 80 01 01 00 + +# field replaceable code=0x45 +03 02 00 45 + +# another progress report indicator +0a 06 02 01 02 00 32 01 + +# incorrect length indicator (ILI) +05 02 00 20 + +# user data segment referral +0b 1a 01 00 +00 00 00 01 01 02 03 04 05 06 07 08 +01 02 03 04 55 06 07 08 +02 00 12 34 diff --git a/inhex/fixed_sense.hex b/inhex/fixed_sense.hex new file mode 100644 index 00000000..1c6464b4 --- /dev/null +++ b/inhex/fixed_sense.hex @@ -0,0 +1,5 @@ +# Test fixed format sense data. Values are in hex. +# Invocation: 'sg_decode_sense -f fixed_sense.hex' [dpg 20220622] + +f0 00 03 00 00 12 34 0a 00 00 00 00 11 00 77 80 +01 98 diff --git a/inhex/forwarded_sense.hex b/inhex/forwarded_sense.hex new file mode 100644 index 00000000..968eb2b9 --- /dev/null +++ b/inhex/forwarded_sense.hex @@ -0,0 +1,16 @@ +# Test forwarded sense data. Values are in hex. +# Invocation: 'sg_decode_sense -f forwarded_sense.hex' [dpg 20210330] + +# descriptor header +72 6 18 7 0 0 0 1c + +# Forwarded sense [len=12] +c a 1 2 +72 6 18 7 0 0 0 0 + +# Information [len=12] +0 a 80 0 11 22 33 44 55 66 77 88 + +# FRU [len=4] +3 2 0 + 99 diff --git a/inhex/get_elem_status.hex b/inhex/get_elem_status.hex new file mode 100644 index 00000000..5e72149e --- /dev/null +++ b/inhex/get_elem_status.hex @@ -0,0 +1,51 @@ +# +# The is a real response to the SCSI GET PHYSICAL ELEMENT STATUS command. +# The storage elements are associated with heads on this hard disk and +# one of them (element_id: 10) is "out of spec". The same output was +# obtained with --report-type=1 (report only storage elements) as this +# invocation (where --report-type defaults to 0: report all physical +# elements): +# sg_get_elem_status -HHH <dev> +# +# The hard disk had 9 platters and thus had 18 heads as both side of each +# platter are used. + +00 00 00 12 00 00 00 12 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 01 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 02 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 03 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 04 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 05 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 06 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 07 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 08 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 09 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 0a 00 00 00 00 00 00 01 65 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 0b 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 0c 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 0d 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 0e 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 0f 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 10 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 11 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 12 00 00 00 00 00 00 01 01 +ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 + diff --git a/inhex/get_lba_status.hex b/inhex/get_lba_status.hex new file mode 100644 index 00000000..97934fa6 --- /dev/null +++ b/inhex/get_lba_status.hex @@ -0,0 +1,14 @@ + + +0 0 0 24 +0 0 0 6 + +0 0 0 0 0 0 0 0 +11 22 33 0 + +0 0 0 0 + +0 0 0 0 11 22 33 0 +0 0 0 44 + +1 1 0 0 diff --git a/inhex/inq_standard.hex b/inhex/inq_standard.hex new file mode 100644 index 00000000..73c80f37 --- /dev/null +++ b/inhex/inq_standard.hex @@ -0,0 +1,23 @@ +# This file contains the ASCII hex of a SCSI INQUIRY command +# 'standard' response. In this case non-standard responses refers +# to responses contain VPD page that are also fetched with the +# SCSI INQUIRY command. + +# The response in this file can be decoded with: +# sg_inq --inhex=inq_standard.hex +# or +# sg_vpd --inhex=inq_standard.hex --page=sinq +# +# The sg_inq utility defaults to the 'standard' INQUIRY while the +# sg_vpd utility defaults to the "Supported VPD pages" VPD page. +# Hence sg_vpd needs the extra option '--page=sinq' which says the +# VPD page is the standard inquiry. Strictly speaking the standard +# INQUIRY is not a VPD page but probably would be if SCSI was not +# 40 years old and highly values backward compatibility. + +00 00 07 02 5b 00 10 0a 4c 69 6e 75 78 20 20 20 +73 63 73 69 5f 64 65 62 75 67 20 20 20 20 20 20 +30 31 39 31 32 30 32 31 30 35 32 30 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 c0 05 c0 06 00 +21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/inhex/logs_last_n.hex b/inhex/logs_last_n.hex new file mode 100644 index 00000000..b6384d17 --- /dev/null +++ b/inhex/logs_last_n.hex @@ -0,0 +1,41 @@ +# This file contains the ASCII hex of a SCSI LOG SENSE command responses +# for the various "Last n" log (sub)pages concaternated together. + +# The response in this file can be decoded with: +# sg_logs --inhex=logs_last_n.hex +# or +# sg_logs --inhex=logs_last_n.hex --brief +# or +# sg_logs --inhex=logs_last_n.hex --exclude + +# Last n mode page data changed log subpage +4b 02 00 28 +00 00 03 0c 00 00 00 04 00 00 00 02 00 00 00 01 +00 01 03 04 0a 00 00 00 +00 02 03 04 5a 01 00 00 +00 03 03 04 5c 02 00 00 + +# Last n INQUIRY data changed log subpage +4b 01 00 28 +00 00 03 0c 00 00 00 01 00 00 00 03 00 00 00 02 +00 01 03 04 00 00 00 00 +00 02 03 04 01 80 00 00 +00 03 03 04 01 83 00 00 + +# Last n deferred errors or asynchronous events log subpage +0b 00 00 5a +00 00 03 40 +73,0,0,0,0,0,0 38 +b,36,1,0 +0,0,0,2,11,11,11,11,22,22,22,22,55,55,55,55,66,66,66,66 1,0,0,7, 2,0,0,8 +0,0,0,1,77,77,77,77,77,77,77,77,88,88,88,88,88,88,88,88, 3,0,0,5 +00 01 03 12 +f1 00 03 00 00 12 34 0a 00 00 00 00 11 00 00 00 00 00 + +# Last n error events log page +07 00 00 31 +00 00 01 0c +6d 65 64 69 75 6d 20 65 72 72 6f 72 +00 01 01 1d +55 41 3a 20 63 61 70 61 63 69 74 79 20 64 61 74 +61 20 68 61 73 20 63 68 61 6e 67 65 64 diff --git a/inhex/nvme_dev_self_test.hex b/inhex/nvme_dev_self_test.hex new file mode 100644 index 00000000..1ef87c62 --- /dev/null +++ b/inhex/nvme_dev_self_test.hex @@ -0,0 +1,20 @@ +# 64 byte NVMe Device Self Test command (an Admin command) that is suitable +# for: +# sg_raw --cmdfile=<this_file_name> <nvme_device> +# +# There is no data-in or data-out associated with this command. This command +# is optional so check the Identify controller command response to see if +# it is supported. +# +# The following invocation will self test the controller and all its +# namespaces (since nsid=0xffffffff) and does a "short" self test on each +# one (since CDW10 is 0x1). + +14 00 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# A typical invocation in Linux and FreeBSD would look like this: +# sg_raw --cmdfile=nvme_dev_self_test.hex /dev/nvme0 +# diff --git a/inhex/nvme_identify_ctl.hex b/inhex/nvme_identify_ctl.hex new file mode 100644 index 00000000..f22141e2 --- /dev/null +++ b/inhex/nvme_identify_ctl.hex @@ -0,0 +1,27 @@ +# 64 byte NVMe Identify controller command (an Admin command) that is +# suitable for: +# sg_raw --cmdfile=<this_file_name> --request=4096 <nvme_device> +# +# 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 +# +# Since The Identify command reads data "in" from the device, then the +# data-in buffer is appropriate. + +06 00 00 00 00 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 01 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# A typical invocation in Linux and FreeBSD would look like this: +# sg_raw --cmdfile=nvme_identify_ctl.hex -r 4k /dev/nvme0 +# +# NVMe likes "4k" (4096 bytes) buffer size, preferably aligned to +# a 4096 byte (or "page") boundary. diff --git a/inhex/nvme_read_ctl.hex b/inhex/nvme_read_ctl.hex new file mode 100644 index 00000000..7996a1ae --- /dev/null +++ b/inhex/nvme_read_ctl.hex @@ -0,0 +1,39 @@ +# 64 byte NVMe, Read command (a NVM command) that is suitable for: +# sg_raw --cmdfile=<this_file_name> --nvm --request=2048 <nvme_device> +# +# 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 2048 bytes. +# 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 queue +# 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/nvme0n1 +# In FreeBSD the device name would be /dev/nvme0ns1 +# +# Notice the '--nvm' option which is needed to distinguish 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. diff --git a/inhex/nvme_read_oob_ctl.hex b/inhex/nvme_read_oob_ctl.hex new file mode 100644 index 00000000..81d7a305 --- /dev/null +++ b/inhex/nvme_read_oob_ctl.hex @@ -0,0 +1,47 @@ +# 64 byte NVMe, Read command (a NVM command) which what should be an +# Out-of-Bounds LBA (around 377 TB with 512 byte sectors. This file is +# suitable for: +# sg_raw --cmdfile=<this_file_name> --nvm --request=2048 <nvme_device> +# +# 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 +# +# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +# This NVMe (NVM) Read command purposely has a very large starting LBA +# in order to get a "Attempted write to read only range" error. This is +# to test error reporting. +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# 512 byte logical block size is assumed. Read 4 blocks hence 2048 bytes. +# The first LBA read is 0xabcd012345 and the namespace is 1. If successful +# the four blocks will be read into the data-in buffer. Submission queue +# 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 cd ab 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_oob_ctl.hex --nvm -r 2048 +# --outfile=t.bin /dev/nvme0n1 +# In FreeBSD the device name would be /dev/nvme0ns1 +# +# Notice the '--nvm' option which is needed to distinguish 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. diff --git a/inhex/nvme_write_ctl.hex b/inhex/nvme_write_ctl.hex new file mode 100644 index 00000000..9e6c1123 --- /dev/null +++ b/inhex/nvme_write_ctl.hex @@ -0,0 +1,38 @@ +# 64 byte NVMe, Write command (a NVM command) that is suitable for: +# sg_raw --cmdfile=<this_file_name> --nvm --request=2048 <nvme_device> +# +# 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. Write 4 blocks hence 2048 bytes. +# The first LBA written is 0x12345 and the namespace is 1. If successful the +# four blocks will be written out of the data-out buffer. Submission queue +# is used (the same queue that Admin commands use). The NVM opcode for the +# Write command is 0x1 and appears in the first command byte. + +01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 fd ff ff ff ff ff ff ff +00 00 00 00 fd 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 "write 4 blocks". +# +# A typical invocation in Linux and FreeBSD would look like this: +# sg_raw --cmdfile=nvme_write_ctl.hex --nvm -s 2048 +# --infile=t.bin /dev/nvme0 +# +# Notice the '--nvm' option which is needed to distinguish 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. diff --git a/inhex/opcodes.hex b/inhex/opcodes.hex new file mode 100644 index 00000000..8833ab0b --- /dev/null +++ b/inhex/opcodes.hex @@ -0,0 +1,27 @@ +00 00 01 a0 12 00 00 00 00 00 00 06 a0 00 00 00 +00 00 00 0c 03 00 00 00 00 00 00 06 00 00 00 00 +00 00 00 06 5a 00 00 00 00 00 00 0a 1a 00 00 00 +00 00 00 06 55 00 00 00 00 00 00 0a 15 00 00 00 +00 00 00 06 4d 00 00 00 00 00 00 0a 25 00 00 00 +00 00 00 0a 88 00 00 00 00 00 00 10 28 00 00 00 +00 00 00 0a 08 00 00 00 00 00 00 06 a8 00 00 00 +00 00 00 0c 8a 00 00 00 00 00 00 10 2a 00 00 00 +00 00 00 0a 0a 00 00 00 00 00 00 06 aa 00 00 00 +00 00 00 0c 1b 00 00 00 00 00 00 06 9e 00 00 10 +00 01 00 10 9e 00 00 12 00 01 00 10 9f 00 00 12 +00 01 00 10 a3 00 00 0a 00 01 00 0c a3 00 00 0c +00 01 00 0c a3 00 00 0d 00 01 00 0c 8f 00 00 00 +00 00 00 10 2f 00 00 00 00 00 00 0a 7f 00 00 09 +00 01 00 20 7f 00 00 0b 00 01 00 20 7f 00 00 11 +00 01 00 20 56 00 00 00 00 00 00 0a 16 00 00 00 +00 00 00 06 57 00 00 00 00 00 00 0a 17 00 00 00 +00 00 00 06 1e 00 00 00 00 00 00 06 01 00 00 00 +00 00 00 06 1d 00 00 02 00 00 00 06 42 00 00 00 +00 00 00 0a 3b 00 00 00 00 00 00 0a 41 00 00 00 +00 00 00 0a 93 00 00 00 00 00 00 10 35 00 00 00 +00 00 00 0a 91 00 00 00 00 00 00 10 89 00 00 00 +00 00 00 10 34 00 00 00 00 00 00 0a 90 00 00 00 +00 00 00 10 94 00 00 03 00 01 00 10 94 00 00 01 +00 01 00 10 94 00 00 02 00 01 00 10 94 00 00 04 +00 01 00 10 95 00 00 00 00 01 00 10 95 00 00 06 +00 01 00 10 diff --git a/inhex/ref_sense.hex b/inhex/ref_sense.hex new file mode 100644 index 00000000..e6a6a374 --- /dev/null +++ b/inhex/ref_sense.hex @@ -0,0 +1,7 @@ +# Test User data segment referral sense data. Values are in hex. +# Invocation: 'sg_decode_sense -f ref_sense.hex' [dpg 20210330] + +72,0,0,0,0,0,0 38 +b,36,1,0 +0,0,0,2,11,11,11,11,22,22,22,22,55,55,55,55,66,66,66,66 1,0,0,7, 2,0,0,8 +0,0,0,1,77,77,77,77,77,77,77,77,88,88,88,88,88,88,88,88, 3,0,0,5 diff --git a/inhex/rep_density.hex b/inhex/rep_density.hex new file mode 100644 index 00000000..0aba1b50 --- /dev/null +++ b/inhex/rep_density.hex @@ -0,0 +1,18 @@ +# +# This file contains the response to SCSI REPORT DENSITY SUPPORTED command +# using the sg_rep_density utility. This file was generated with: +# sg_rep_density -HHH /dev/sg4 > rep_density.hex +# where /dev/sg4 was a LTO-4 tape drive. To decode that file containing +# hexadecimal in ASCII use: +# sg_rep_density --inhex=rep_density.hex + +00 9e 00 00 44 44 00 00 00 00 25 a6 00 7f 02 c0 +00 06 1a 80 4c 54 4f 2d 43 56 45 20 55 2d 33 31 +36 20 20 20 55 6c 74 72 69 75 6d 20 33 2f 31 36 +54 20 20 20 20 20 20 20 46 46 80 00 00 00 31 b5 +00 7f 03 80 00 0c 35 00 4c 54 4f 2d 43 56 45 20 +55 2d 34 31 36 20 20 20 55 6c 74 72 69 75 6d 20 +34 2f 31 36 54 20 20 20 20 20 20 20 58 58 a0 00 +00 00 3b 26 00 7f 05 00 00 16 e3 60 4c 54 4f 2d +43 56 45 20 55 2d 35 31 36 20 20 20 55 6c 74 72 +69 75 6d 20 35 2f 31 36 54 20 20 20 20 20 20 20 diff --git a/inhex/rep_density_media.hex b/inhex/rep_density_media.hex new file mode 100644 index 00000000..22312fdf --- /dev/null +++ b/inhex/rep_density_media.hex @@ -0,0 +1,13 @@ +# +# This file contains the response to SCSI REPORT DENSITY SUPPORTED command +# using the sg_rep_density utility. This file was generated with: +# sg_rep_density --media -HHH /dev/sg4 > rep_density_media.hex +# where /dev/sg4 was a LTO-4 tape drive. To decode that file containing +# hexadecimal in ASCII use: +# sg_rep_density --inhex=rep_density_media.hex +# The --media option is not needed in the decode invocation. + +00 36 00 00 58 58 a0 00 00 00 3b 26 00 7f 05 00 +00 17 85 3e 4c 54 4f 2d 43 56 45 20 55 2d 35 31 +36 20 20 20 55 6c 74 72 69 75 6d 20 35 2f 31 36 +54 20 20 20 20 20 20 20 diff --git a/inhex/rep_density_media_typem.hex b/inhex/rep_density_media_typem.hex new file mode 100644 index 00000000..57918fe8 --- /dev/null +++ b/inhex/rep_density_media_typem.hex @@ -0,0 +1,13 @@ +# +# This file contains the response to SCSI REPORT DENSITY SUPPORTED command +# using the sg_rep_density utility. This file was generated with: +# sg_rep_density -M -t -HHH /dev/sg4 > rep_density_media_typem.hex +# where /dev/sg4 was a LTO-4 tape drive. To decode that file containing +# hexadecimal in ASCII use: +# sg_rep_density --typem -i rep_density_media_typem.hex +# The --typem option is required in the decode invocation. + +00 3a 00 00 00 00 00 34 01 58 00 00 00 00 00 00 +00 00 00 7f 03 4e 00 00 48 50 20 20 20 20 20 20 +4c 54 4f 35 44 61 74 61 55 6c 74 72 69 75 6d 20 +35 20 44 61 74 61 20 54 61 70 65 20 diff --git a/inhex/rep_density_typem.hex b/inhex/rep_density_typem.hex new file mode 100644 index 00000000..315d6907 --- /dev/null +++ b/inhex/rep_density_typem.hex @@ -0,0 +1,31 @@ +# +# This file contains the response to SCSI REPORT DENSITY SUPPORTED command +# using the sg_rep_density utility. This file was generated with: +# sg_rep_density --typem -HHH /dev/sg4 > rep_density_typem.hex +# where /dev/sg4 was a LTO-4 tape drive. To decode that file containing +# hexadecimal in ASCII use: +# sg_rep_density --typem -i rep_density_typem.hex +# The --typem option is required in the decode invocation. + +01 52 00 00 00 00 00 34 01 44 00 00 00 00 00 00 +00 00 00 7f 02 a8 00 00 48 50 20 20 20 20 20 20 +4c 54 4f 33 44 61 74 61 55 6c 74 72 69 75 6d 20 +33 20 44 61 74 61 20 54 61 70 65 20 00 00 00 34 +01 46 00 00 00 00 00 00 00 00 00 7f 03 34 00 00 +48 50 20 20 20 20 20 20 4c 54 4f 34 44 61 74 61 +55 6c 74 72 69 75 6d 20 34 20 44 61 74 61 20 54 +61 70 65 20 00 00 00 34 01 58 00 00 00 00 00 00 +00 00 00 7f 03 4e 00 00 48 50 20 20 20 20 20 20 +4c 54 4f 35 44 61 74 61 55 6c 74 72 69 75 6d 20 +35 20 44 61 74 61 20 54 61 70 65 20 01 00 00 34 +01 44 00 00 00 00 00 00 00 00 00 7f 02 a8 00 00 +48 50 20 20 20 20 20 20 4c 54 4f 33 57 4f 52 4d +55 6c 74 72 69 75 6d 20 33 20 57 4f 52 4d 20 54 +61 70 65 20 01 00 00 34 01 46 00 00 00 00 00 00 +00 00 00 7f 03 34 00 00 48 50 20 20 20 20 20 20 +4c 54 4f 34 57 4f 52 4d 55 6c 74 72 69 75 6d 20 +34 20 57 4f 52 4d 20 54 61 70 65 20 01 00 00 34 +01 58 00 00 00 00 00 00 00 00 00 7f 03 4e 00 00 +48 50 20 20 20 20 20 20 4c 54 4f 35 57 4f 52 4d +55 6c 74 72 69 75 6d 20 35 20 57 4f 52 4d 20 54 +61 70 65 20 diff --git a/inhex/rep_realms.hex b/inhex/rep_realms.hex new file mode 100644 index 00000000..08df66b9 --- /dev/null +++ b/inhex/rep_realms.hex @@ -0,0 +1,35 @@ +# This is the output (in hex) of the SCSI REPORT REALMS command. +# This page is constructed from the command description in zbc2r10 +# with three realms, and two zone domains + +# A typical example: +# sg_rep_zones --realm --inhex=rep_realms.hex + + +# parameter data header (64 bytes) +00 00 00 90 00 00 00 03 00 00 00 30 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# first zone domain descriptor +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +# first realm descriptor, zone domain 0 start,last +00 00 00 00 00 00 00 00 00 00 00 00 00 03 ff ff +# first realm descriptor, zone domain 1 start,last +00 00 00 00 00 04 00 00 00 00 00 00 00 07 ff ff + +# second zone domain descriptor +00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 +# second realm descriptor, zone domain 0 start,last +00 00 00 00 00 08 00 00 00 00 00 00 00 0b ff ff +# second realm descriptor, zone domain 1 start,last +00 00 00 00 00 0c 00 00 00 00 00 00 00 0f ff ff + +# third realm descriptor +00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 +# second realm descriptor, zone domain 0 start,last +00 00 00 00 00 10 00 00 00 00 00 00 00 13 ff ff +# second realm descriptor, zone domain 1 start,last +00 00 00 00 00 14 00 00 00 00 00 00 00 17 ff ff + diff --git a/inhex/rep_zdomains.hex b/inhex/rep_zdomains.hex new file mode 100644 index 00000000..346f2c0b --- /dev/null +++ b/inhex/rep_zdomains.hex @@ -0,0 +1,29 @@ +# This is the output (in hex) of the SCSI REPORT ZONE DOMAINS command. +# This page is constructed from the command description in zbc2r10 +# with two zone domains. + +# A typical example: +# sg_rep_zones --domain --inhex=rep_zdomains.hex + +# parameter data header (64 bytes) +00 00 00 c0 00 00 00 c0 02 02 00 30 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# first zone domain +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 +00 00 00 00 00 13 ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# second zone domain +01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 03 00 00 00 00 00 04 00 00 +00 00 00 00 00 17 ff ff 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + diff --git a/inhex/rep_zones.hex b/inhex/rep_zones.hex new file mode 100644 index 00000000..702c93c5 --- /dev/null +++ b/inhex/rep_zones.hex @@ -0,0 +1,39 @@ +# This is the output (in hex) of the SCSI REPORT ZONES command +# from a simulated ZBC device from the scsi_debug driver in Linux. +# The parameters to the scsi_debug driver given to modprobe were: +# dev_size_mb=512 zbc=managed zone_size_mb=128 zone_nr_conv=1 +# +# The hex bytes in this file were generated by: +# sg_rep_zones /dev/sg1 -HHH > /tmp/rep_zones.hex +# where /dev/sg1 was a scsi_debug device. + +# An example invocation: +# sg_rep_zones --inhex=rep_zones.hex + + +# parameter data header (64 bytes) +00 00 01 00 00 00 00 00 00 00 00 00 00 0f ff ff +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# first zone descriptor, zone type: conventional +01 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 +00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +# second zone descriptor, zone type: sequential write required +02 10 00 00 00 00 00 00 00 00 00 00 00 04 00 00 +00 00 00 00 00 04 00 00 00 00 00 00 00 04 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +# third zone descriptor, zone type: sequential write required +02 10 00 00 00 00 00 00 00 00 00 00 00 04 00 00 +00 00 00 00 00 08 00 00 00 00 00 00 00 08 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +# fourth and last zone descriptor, zone type: sequential write required +02 10 00 00 00 00 00 00 00 00 00 00 00 04 00 00 +00 00 00 00 00 0c 00 00 00 00 00 00 00 0c 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/inhex/ses_areca_all.hex b/inhex/ses_areca_all.hex new file mode 100644 index 00000000..b744321c --- /dev/null +++ b/inhex/ses_areca_all.hex @@ -0,0 +1,195 @@ +# +# This file was generated by something like: +# sg_ses --page=all -HHHH /dev/sg5 > ses_areca_all.hex +# where /dev/sg5 was an Areca 8028 SAS-3 expander + +# An example invocation to decode the hex data below: +# sg_ses --all --status --inhex=ses_areca_all.hex +# +# vvvvvvvvvv generated part of file below vvvvvvvvvvvvvv + +# Supported Diagnostic Pages dpage: +00 00 00 0b 00 01 02 04 05 07 0a 0d 0e 0f 3f + +# Configuration (SES) dpage: +01 00 01 28 00 00 00 00 11 00 09 2c d5 b4 01 50 +3f c0 ec 16 41 72 65 63 61 20 20 20 41 52 43 2d +38 30 32 38 30 31 2e 33 33 2e 36 33 30 31 33 33 +11 22 33 44 55 00 00 00 17 18 00 18 0e 01 00 1c +18 01 00 0c 03 05 00 1a 04 02 00 17 12 02 00 1a +19 03 00 16 02 02 00 17 06 01 00 18 41 72 72 61 +79 44 65 76 69 63 65 73 49 6e 53 75 62 45 6e 63 +6c 73 72 30 45 6e 63 6c 6f 73 75 72 65 45 6c 65 +6d 65 6e 74 49 6e 53 75 62 45 6e 63 6c 73 72 30 +53 41 53 20 45 78 70 61 6e 64 65 72 43 6f 6f 6c +69 6e 67 45 6c 65 6d 65 6e 74 49 6e 53 75 62 45 +6e 63 6c 73 72 30 54 65 6d 70 53 65 6e 73 6f 72 +73 49 6e 53 75 62 45 6e 63 6c 73 72 30 56 6f 6c +74 61 67 65 53 65 6e 73 6f 72 73 49 6e 53 75 62 +45 6e 63 6c 73 72 30 43 6f 6e 6e 65 63 74 6f 72 +73 49 6e 53 75 62 45 6e 63 6c 73 72 30 50 6f 77 +65 72 53 75 70 70 6c 79 49 6e 53 75 62 45 6e 63 +6c 73 72 30 41 75 64 69 62 6c 65 41 6c 61 72 6d +49 6e 53 75 62 45 6e 63 6c 73 72 30 + +# Enclosure Status (SES) dpage: +02 02 00 cc 00 00 00 00 00 00 00 00 05 00 00 00 +05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 +05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 +05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 +05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 +05 00 00 00 01 00 00 00 05 00 00 00 05 00 00 00 +05 00 00 00 05 00 00 00 05 00 00 00 00 00 00 00 +01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 +05 00 00 10 05 00 00 10 05 00 00 10 05 00 00 10 +01 02 ee 07 00 00 00 00 01 00 45 00 01 00 56 00 +00 00 00 00 01 00 00 5e 01 00 00 b4 00 00 00 00 +01 05 00 00 01 05 00 00 01 05 00 00 00 00 00 00 +05 00 00 20 05 00 00 20 00 00 00 00 01 00 00 00 + +# String In (SES) dpage: +04 00 00 2e 57 65 20 68 61 76 65 20 69 6d 70 6c +65 6d 65 6e 74 65 64 20 53 74 72 69 6e 67 20 49 +6e 20 44 69 61 67 6e 6f 73 74 69 63 20 50 61 67 +65 00 + +# Threshold In (SES) dpage: +05 00 00 c4 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 63 50 19 14 73 6e 19 14 +00 00 00 00 82 7f 70 6d 7a 77 69 66 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 + +# Element Descriptor (SES) dpage: +07 00 03 0e 00 00 00 00 00 00 00 18 41 72 72 61 +79 44 65 76 69 63 65 73 49 6e 53 75 62 45 6e 63 +6c 73 72 30 00 00 00 08 53 4c 4f 54 20 30 31 00 +00 00 00 08 53 4c 4f 54 20 30 32 00 00 00 00 08 +53 4c 4f 54 20 30 33 00 00 00 00 08 53 4c 4f 54 +20 30 34 00 00 00 00 08 53 4c 4f 54 20 30 35 00 +00 00 00 08 53 4c 4f 54 20 30 36 00 00 00 00 08 +53 4c 4f 54 20 30 37 00 00 00 00 08 53 4c 4f 54 +20 30 38 00 00 00 00 08 53 4c 4f 54 20 30 39 00 +00 00 00 08 53 4c 4f 54 20 31 30 00 00 00 00 08 +53 4c 4f 54 20 31 31 00 00 00 00 08 53 4c 4f 54 +20 31 32 00 00 00 00 08 53 4c 4f 54 20 31 33 00 +00 00 00 08 53 4c 4f 54 20 31 34 00 00 00 00 08 +53 4c 4f 54 20 31 35 00 00 00 00 08 53 4c 4f 54 +20 31 36 00 00 00 00 08 53 4c 4f 54 20 31 37 00 +00 00 00 08 53 4c 4f 54 20 31 38 00 00 00 00 08 +53 4c 4f 54 20 31 39 00 00 00 00 08 53 4c 4f 54 +20 32 30 00 00 00 00 08 53 4c 4f 54 20 32 31 00 +00 00 00 08 53 4c 4f 54 20 32 32 00 00 00 00 08 +53 4c 4f 54 20 32 33 00 00 00 00 08 53 4c 4f 54 +20 32 34 00 00 00 00 1c 45 6e 63 6c 6f 73 75 72 +65 45 6c 65 6d 65 6e 74 49 6e 53 75 62 45 6e 63 +6c 73 72 30 00 00 00 12 45 6e 63 6c 6f 73 75 72 +65 45 6c 65 6d 65 6e 74 30 31 00 00 00 0c 53 41 +53 20 45 78 70 61 6e 64 65 72 00 00 00 09 45 78 +70 61 6e 64 65 72 30 00 00 00 1a 43 6f 6f 6c 69 +6e 67 45 6c 65 6d 65 6e 74 49 6e 53 75 62 45 6e +63 6c 73 72 30 00 00 00 07 46 61 6e 20 30 31 00 +00 00 00 07 46 61 6e 20 30 32 00 00 00 00 07 46 +61 6e 20 30 33 00 00 00 00 07 46 61 6e 20 30 34 +00 00 00 00 07 43 50 55 46 61 6e 00 00 00 00 17 +54 65 6d 70 53 65 6e 73 6f 72 73 49 6e 53 75 62 +45 6e 63 6c 73 72 30 00 00 00 0c 45 4e 43 2e 20 +54 65 6d 70 20 20 00 00 00 00 0c 43 68 69 70 20 +54 65 6d 70 20 20 00 00 00 00 1a 56 6f 6c 74 61 +67 65 53 65 6e 73 6f 72 73 49 6e 53 75 62 45 6e +63 6c 73 72 30 00 00 00 07 30 2e 39 35 56 20 00 +00 00 00 07 31 2e 38 56 20 20 00 00 00 00 16 43 +6f 6e 6e 65 63 74 6f 72 73 49 6e 53 75 62 45 6e +63 6c 73 72 30 00 00 00 0c 43 6f 6e 6e 65 63 74 +6f 72 30 30 00 00 00 00 0c 43 6f 6e 6e 65 63 74 +6f 72 30 31 00 00 00 00 0c 43 6f 6e 6e 65 63 74 +6f 72 30 32 00 00 00 00 17 50 6f 77 65 72 53 75 +70 70 6c 79 49 6e 53 75 62 45 6e 63 6c 73 72 30 +00 00 00 0e 50 6f 77 65 72 53 75 70 70 6c 79 30 +31 00 00 00 00 0e 50 6f 77 65 72 53 75 70 70 6c +79 30 32 00 00 00 00 18 41 75 64 69 62 6c 65 41 +6c 61 72 6d 49 6e 53 75 62 45 6e 63 6c 73 72 30 +00 00 00 0e 41 75 64 69 62 6c 65 2d 41 6c 61 72 +6d 00 + +# Additional Element Status (SES-2) dpage: +0a 00 03 bc 00 00 00 00 16 22 00 00 01 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 16 22 00 01 +01 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +16 22 00 02 01 00 00 02 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 16 22 00 03 01 00 00 03 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 16 22 00 04 01 00 00 04 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 16 22 00 05 +01 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +16 22 00 06 01 00 00 06 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 16 22 00 07 01 00 00 07 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 16 22 00 08 01 00 00 08 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 16 22 00 09 +01 00 00 09 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +16 22 00 0a 01 00 00 0a 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 16 22 00 0b 01 00 00 0b 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 16 22 00 0c 01 00 00 0c +20 00 00 02 50 01 b4 d5 16 ec c0 3f 50 01 51 7e +85 c3 ef ff 14 00 00 00 00 00 00 00 16 22 00 0d +01 00 00 0d 20 00 00 02 50 01 b4 d5 16 ec c0 3f +50 01 51 7e 85 c3 ef ff 15 00 00 00 00 00 00 00 +16 22 00 0e 01 00 00 0e 20 00 00 02 50 01 b4 d5 +16 ec c0 3f 50 01 51 7e 85 c3 ef ff 16 00 00 00 +00 00 00 00 16 22 00 0f 01 00 00 0f 20 00 00 02 +50 01 b4 d5 16 ec c0 3f 50 01 51 7e 85 c3 ef ff +17 00 00 00 00 00 00 00 16 22 00 10 01 00 00 10 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 16 22 00 11 +01 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +16 22 00 12 01 00 00 12 10 00 00 08 50 01 b4 d5 +16 ec c0 3f 50 00 c5 00 30 11 cb 29 00 00 00 00 +00 00 00 00 16 22 00 13 01 00 00 13 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 16 22 00 14 01 00 00 14 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 16 22 00 15 +01 00 00 15 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +16 22 00 16 01 00 00 16 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 16 22 00 17 01 00 00 17 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 16 56 00 00 24 40 00 00 +50 01 b4 d5 16 ec c0 3f ff 0d ff 0c ff 0e ff 0f +ff 09 ff 08 ff 0a ff 0b ff 05 ff 04 ff 06 ff 07 +ff 01 ff 00 ff 02 ff 03 02 ff 02 ff 02 ff 02 ff +01 ff 01 ff 01 ff 01 ff 00 ff 00 ff 00 ff 00 ff +ff 11 ff 10 ff 12 ff 13 ff 15 ff 14 ff 16 ff 17 + +# Supported SES Diagnostic Pages (SES-2) dpage: +0d 00 00 0c 01 02 04 05 07 0a 0d 0e 0f 00 00 00 + +# Download Microcode (SES-2) dpage: +0e 00 00 14 00 00 00 00 00 00 00 00 00 10 00 00 +00 00 00 00 00 00 00 00 + +# Subenclosure Nickname (SES-2) dpage: +0f 00 00 2c 00 00 00 00 00 00 00 00 00 00 00 00 +45 76 61 6c 20 42 6f 61 72 64 20 4e 69 63 6b 6e +61 6d 65 20 53 69 6d 75 6c 61 74 6f 72 20 20 20 diff --git a/inhex/vpd_bdce.hex b/inhex/vpd_bdce.hex new file mode 100644 index 00000000..d20c5304 --- /dev/null +++ b/inhex/vpd_bdce.hex @@ -0,0 +1,18 @@ +# +# This is a manufactured response to an INQUIRY for the +# Block device characteristics extension VPD page (0xb5 ["bdce"]). +# It may have been generated by a call like this: +# sg_vpd -p bdce /dev/sg3 -HHHH + +# Block device characteristics extension VPD page +00 b5 00 7c +00 03 05 0e 00 00 00 06 00 00 00 03 + +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/inhex/vpd_consistuents.hex b/inhex/vpd_consistuents.hex new file mode 100644 index 00000000..4a67b74d --- /dev/null +++ b/inhex/vpd_consistuents.hex @@ -0,0 +1,47 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_consistuents.hex + + +# Device constituent VPD page header +00 8b 00 c2 + +# First constituent descriptor, fixed part +00 03 00 00 +41 42 43 44 20 20 00 00 +41 42 43 44 45 46 47 48 41 42 43 44 44 44 44 44 +30 31 32 33 +00 00 +00 2a + +# inner constituent specific descriptor (for VPD page) +01 00 00 10 +# ... the VPD page +00 b3 00 0c 00 00 00 00 +00 20 00 00 +00 00 00 04 + +# another inner constituent specific descriptor (for VPD page) +01 00 00 12 +# ... the VPD page +00 92 00 0e 00 00 00 00 +00 01 01 01 01 02 02 01 +09 09 + + +# Second constituent descriptor, fixed part +00 03 00 00 +53 45 41 47 41 54 45 20 +53 54 32 30 30 46 4d 30 30 37 33 20 20 20 20 20 +30 30 30 37 +00 00 +00 50 + +# inner constituent specific descriptor ("di" VPD page) +01 00 00 4c +# ... the VPD page +00 83 00 48 01 03 00 08 50 00 c5 00 30 11 cb 2b +61 93 00 08 50 00 c5 00 30 11 cb 29 61 94 00 04 +00 00 00 01 61 a3 00 08 50 00 c5 00 30 11 cb 28 +03 28 00 18 6e 61 61 2e 35 30 30 30 43 35 30 30 +33 30 31 31 43 42 32 38 00 00 00 00 diff --git a/inhex/vpd_cpr.hex b/inhex/vpd_cpr.hex new file mode 100644 index 00000000..130c5c14 --- /dev/null +++ b/inhex/vpd_cpr.hex @@ -0,0 +1,18 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_cpr.hex + +# Dummy data for Concurrent positioning ranges VPD page +00 b9 00 7c 00 00 00 00 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# after 64 byte header there is the first LBA range descriptor (32 bytes) +01 02 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 +00 00 00 00 10 00 00 00 + 00 00 00 00 00 00 00 00 +# second LBA range descriptor (32 bytes) +02 02 00 00 00 00 00 00 +00 00 00 00 10 00 00 00 +00 00 00 00 10 00 00 00 + 00 00 00 00 00 00 00 00 diff --git a/inhex/vpd_dev_id.hex b/inhex/vpd_dev_id.hex new file mode 100644 index 00000000..e9cb9907 --- /dev/null +++ b/inhex/vpd_dev_id.hex @@ -0,0 +1,9 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_dev_id.hex + +00 83 00 48 01 03 00 08 50 00 c5 00 30 11 cb 2b +61 93 00 08 50 00 c5 00 30 11 cb 29 61 94 00 04 +00 00 00 01 61 a3 00 08 50 00 c5 00 30 11 cb 28 +03 28 00 18 6e 61 61 2e 35 30 30 30 43 35 30 30 +33 30 31 31 43 42 32 38 00 00 00 00 diff --git a/inhex/vpd_di_all.hex b/inhex/vpd_di_all.hex new file mode 100644 index 00000000..b0c93765 --- /dev/null +++ b/inhex/vpd_di_all.hex @@ -0,0 +1,51 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_di_all.hex + +00 83 01 04 + +# Vendor specific designator +01 00 00 16 11 22 33 44 55 66 77 88 99 aa bb cc +dd ee ff ed cb a9 87 65 43 21 + +# T10 vendor ID +02 01 00 14 +41 42 43 20 20 20 20 20 +58 59 5a 31 32 33 34 35 36 37 38 39 + +# EUI-64 +01 02 00 08 11 22 33 44 55 66 77 88 +01 02 00 0c 11 22 33 44 55 66 77 88 00 00 01 23 +01 02 00 10 01 23 45 67 89 ab cd ef 11 22 33 44 55 66 77 88 + +# NAA +01 03 00 08 51 22 33 44 55 66 77 88 +01 03 00 10 61 22 33 44 55 66 77 88 aa bb cc dd ee ff ee dd + +# Relative target port +01 14 00 04 00 00 00 02 + +# Target port group +01 15 00 04 00 00 00 03 + +# Logical unit group +01 06 00 04 00 00 00 04 + +# MD5 logical unitp +01 07 00 10 ff ee dd cc bb aa 99 88 77 66 55 44 33 22 11 00 + +# SCSI name string: iqn.5886.com.acme.diskarrays-sn-a8675309 +02 28 00 28 +69 71 6e 2e 35 38 38 36 2e 63 6f 6d 2e 61 63 6d +65 2e 64 69 73 6b 61 72 72 61 79 73 2d 73 6e 2d +61 38 36 37 35 33 30 39 + +# Protocol specific +# USB +91 99 00 04 04 00 02 00 +# PCIe +a1 99 00 08 01 23 00 00 00 00 00 00 + +# UUID +01 0a 00 12 10 00 11 22 33 44 55 66 77 88 99 aa +bb cc dd ee fe dc diff --git a/inhex/vpd_fp.hex b/inhex/vpd_fp.hex new file mode 100644 index 00000000..967080f5 --- /dev/null +++ b/inhex/vpd_fp.hex @@ -0,0 +1,31 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_fp.hex + +# Dummy data for Format presets VPD page +00 b8 00 80 + +# after 4 byte header here is the first Format preset descriptor (64 bytes) +00 00 01 00 +01 0 0 00 +01 00 00 00 +0 0 0 0 +00 00 00 00 00 ff ff ff # last LBA +0 0 0 0 0 0 0 0 0 0 0 0 0 0 +00 00 # FMPTINFO, Protection field usage and protection interval exp +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 + +# second Format preset descriptor (64 bytes) +00 00 01 01 +02 0 0 00 +01 00 00 00 +0 0 0 0 +00 00 00 00 01 ff ff ff # last LBA +0 0 0 0 0 0 0 0 0 0 0 0 0 0 +00 00 # FMPTINFO, Protection field usage and protection interval exp +# host-aware zones schema type specific information +5 ff +0 0 0 0 0 0 0 0 0 0 +20 00 00 00 +0 0 0 0 diff --git a/inhex/vpd_lbpro.hex b/inhex/vpd_lbpro.hex new file mode 100644 index 00000000..188666c0 --- /dev/null +++ b/inhex/vpd_lbpro.hex @@ -0,0 +1,7 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_lbpro.hex + +01 b5 00 10 00 00 00 00 +03 01 20 e0 +07 02 10 80 00 00 00 00 diff --git a/inhex/vpd_lbpv.hex b/inhex/vpd_lbpv.hex new file mode 100644 index 00000000..a89af17b --- /dev/null +++ b/inhex/vpd_lbpv.hex @@ -0,0 +1,9 @@ +# +# This is a manufactured response to an INQUIRY for the +# Logical Block Provisioning VPD page (0xb2 ["lbpv"]). It may +# have been generated by a call like this: +# sg_vpd -p lbpv /dev/sg3 -HHHH + +# Logical block provisioning VPD page +00 b2 00 10 00 01 00 00 +01 03 00 08 51 22 33 44 55 66 77 88 diff --git a/inhex/vpd_ref.hex b/inhex/vpd_ref.hex new file mode 100644 index 00000000..618f911f --- /dev/null +++ b/inhex/vpd_ref.hex @@ -0,0 +1,9 @@ +# +# This is a manufactured response to an INQUIRY for the +# Referrals VPD page (0xb3 ["ref"]). It may have been +# generated by a call like this: +# sg_vpd -p ref /dev/sg3 -HHHH + +# Referrals VPD page +00 b3 00 0c 00 00 00 00 +11 22 33 44 00 00 10 00 diff --git a/inhex/vpd_sbl.hex b/inhex/vpd_sbl.hex new file mode 100644 index 00000000..da9e9b1e --- /dev/null +++ b/inhex/vpd_sbl.hex @@ -0,0 +1,10 @@ +# +# This is a manufactured response to an INQUIRY for the +# Supported block lengths and protection types VPD page (0xb4 ["sbl"]). +# It may have been generated by a call like this: +# sg_vpd -p sbl /dev/sg3 -HHHH + +# Supported block lengths and protection types VPD page +00 b4 00 10 +00 00 02 00 47 07 00 00 +00 00 10 00 47 07 00 00 diff --git a/inhex/vpd_sdeb.hex b/inhex/vpd_sdeb.hex new file mode 100644 index 00000000..2f50c896 --- /dev/null +++ b/inhex/vpd_sdeb.hex @@ -0,0 +1,99 @@ +# +# The VPD responses in this file where generated from a dummy device +# (ramdisk) associated with the Linux scsi_debug driver as follows: +# sg_vpd -a /dev/sg3 -HHHH + +# Supported VPD pages VPD page +00 00 00 0c 00 80 83 84 85 86 87 88 89 b0 b1 b2 + +# Unit serial number VPD page +00 80 00 04 32 30 30 30 + +# Device identification VPD page +00 83 00 70 02 01 00 1c 4c 69 6e 75 78 20 20 20 +73 63 73 69 5f 64 65 62 75 67 20 20 20 20 20 20 +32 30 30 30 01 03 00 08 33 33 33 30 00 00 07 d0 +61 94 00 04 00 00 00 01 61 93 00 08 32 22 22 20 +00 00 07 ce 61 95 00 04 00 00 01 00 61 a3 00 08 +32 22 22 20 00 00 07 cd 63 a8 00 18 6e 61 61 2e +33 32 32 32 32 32 32 30 30 30 30 30 30 37 43 44 +00 00 00 00 + +# Software interface identification VPD page +00 84 00 12 22 22 22 00 bb 00 22 22 22 00 bb 01 +22 22 22 00 bb 02 + +# Management network addresses VPD page +00 85 00 44 01 00 00 20 68 74 74 70 73 3a 2f 2f +77 77 77 2e 6b 65 72 6e 65 6c 2e 6f 72 67 2f 63 +6f 6e 66 69 67 00 00 00 04 00 00 1c 68 74 74 70 +3a 2f 2f 77 77 77 2e 6b 65 72 6e 65 6c 2e 6f 72 +67 2f 6c 6f 67 00 00 00 + +# extended INQUIRY data VPD page +00 86 00 3c 00 07 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# Mode page policy VPD page +00 87 00 08 02 00 80 00 18 00 82 00 + +# SCSI Ports VPD page +00 88 00 30 00 00 00 01 00 00 00 00 00 00 00 0c +61 93 00 08 32 22 22 20 00 00 07 ce 00 00 00 02 +00 00 00 00 00 00 00 0c 61 93 00 08 32 22 22 20 +00 00 07 cf + +# ATA information VPD page +00 89 02 38 00 00 00 00 6c 69 6e 75 78 20 20 20 +53 41 54 20 73 63 73 69 5f 64 65 62 75 67 20 20 +31 32 33 34 34 00 00 00 01 00 00 00 00 00 00 00 +01 00 00 00 00 00 00 00 ec 00 00 00 5a 0c ff 3f +37 c8 10 00 00 00 00 00 3f 00 00 00 00 00 00 00 +58 58 58 58 58 58 58 58 20 20 20 20 20 20 20 20 +20 20 20 20 00 00 00 40 04 00 2e 33 38 31 20 20 +20 20 54 53 38 33 30 30 33 31 53 41 20 20 20 20 +20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +20 20 20 20 20 20 20 20 20 20 10 80 00 00 00 2f +00 00 00 02 00 02 07 00 ff ff 01 00 3f 00 c1 ff +3e 00 10 01 b0 f8 50 09 00 00 07 00 03 00 78 00 +78 00 f0 00 78 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 02 00 00 00 00 00 00 00 7e 00 1b 00 +6b 34 01 7d 03 40 69 34 01 3c 03 40 7f 40 00 00 +00 00 fe fe 00 00 00 00 00 fe 00 00 00 00 00 00 +00 00 00 00 b0 f8 50 09 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 01 00 b0 f8 +50 09 b0 f8 50 09 20 20 02 00 b6 42 00 80 8a 00 +06 3c 0a 3c ff ff c6 07 00 01 00 08 f0 0f 00 10 +02 00 30 00 00 00 00 00 00 00 06 fe 00 00 02 00 +50 00 8a 00 4f 95 00 00 21 00 0b 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 a5 51 + +# Block limits VPD page +00 b0 00 3c 00 00 00 01 00 00 40 00 00 00 04 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 +00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# Block device characteristics VPD page +00 b1 00 3c 00 01 00 05 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# Logical block provisioning VPD page +00 b2 00 04 00 00 00 00 diff --git a/inhex/vpd_sfs.hex b/inhex/vpd_sfs.hex new file mode 100644 index 00000000..f4c2ab07 --- /dev/null +++ b/inhex/vpd_sfs.hex @@ -0,0 +1,7 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_sfs.hex + +00 92 00 0e 00 00 00 00 +00 01 01 01 01 02 02 01 +09 09 diff --git a/inhex/vpd_tpc.hex b/inhex/vpd_tpc.hex new file mode 100644 index 00000000..e3e9f387 --- /dev/null +++ b/inhex/vpd_tpc.hex @@ -0,0 +1,43 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_tpc.hex + +00 8f 00 8c + +00 00 00 20 +00 00 00 00 00 00 01 23 00 00 00 3c +00 00 00 1e 00 00 00 99 88 77 66 55 00 00 00 44 +55 66 77 88 + +00 01 00 10 +0d +00 00 +03 00 +12 00 +83 02 10 11 +84 01 07 +00 00 # pad + +00 04 00 1c +00 00 00 00 00 1c 00 40 00 01 22 33 +00 99 88 77 00 00 00 00 00 00 00 00 00 00 00 00 + +00 08 00 04 +02 +02 e9 +00 # pad + +00 0c 00 0c +00 08 +00 00 +00 01 +c0 00 +ff ff +00 00 # pad + +00 0d 00 14 +12 +# UUID +10 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee +fe dc +00 # pad diff --git a/inhex/vpd_zbdc.hex b/inhex/vpd_zbdc.hex new file mode 100644 index 00000000..d8d1ad3b --- /dev/null +++ b/inhex/vpd_zbdc.hex @@ -0,0 +1,29 @@ +# +# An example invocation: +# sg_vpd --inhex=vpd_zbdc.hex + +# Zoned block device characteristics VPD page [0xb6] +# Host managed zoned block device model; pdt=0x14 +14 b6 00 3c +# ZBD extension=0; AAORb=0; URSWRZ=0 +00 00 00 00 + +# Optimal # of open sequential write preferred +00 00 00 00 + +# Optimal # of open non-sequentailly written sequential write preferred +00 00 00 00 + +# maximum # of open sequential write required +00 00 00 08 + +# Zone alignment mode=1 (constant zone lengths) +00 00 00 01 + +# Zone starting LBA granularity +00 00 00 02 00 00 00 00 + + +# pad to total length of 64 bytes +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/inhex/vpd_zbdc.raw b/inhex/vpd_zbdc.raw Binary files differnew file mode 100644 index 00000000..249dbd50 --- /dev/null +++ b/inhex/vpd_zbdc.raw diff --git a/inhex/z_act_query.hex b/inhex/z_act_query.hex new file mode 100644 index 00000000..16d094e0 --- /dev/null +++ b/inhex/z_act_query.hex @@ -0,0 +1,28 @@ +# This is the output (in hex) of a simulated SCSI ZONE QUERY command. +# +# The hex bytes in this file may be generated by: +# sg_z_act_query /dev/sg1 -HHH > /tmp/z_act_query.hex +# where /dev/sg1 was a SCSI device implementing ZBC-2. + +# An example invocation: +# sg_z_act_query --inhex=z_act_query.hex + + +# parameter data header (64 bytes) +00 00 00 80 00 00 00 80 80 00 03 00 00 00 00 00 +00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +# first zone activation descriptor, zone type: conventional +01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 04 +00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 +# second zone activation descriptor, zone type: sequential write required +02 10 02 00 00 00 00 00 00 00 00 00 00 00 00 05 +00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 +# third zone descriptor, zone type: sequential write required +02 10 03 00 00 00 00 00 00 00 00 00 00 00 00 06 +00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 +# fourth and last zone activation descriptor, zone type: sequential write required +02 10 04 00 00 00 00 00 00 00 00 00 00 00 00 07 +00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 |