If you guys want to experiment reading the subchannel off disks I have added a branch 'read_cd' to:
https://github.com/sahlberg/python-scsi Use the branch read_cd
It implements the READ_CD command and has an example utility you can use to read various things including the subchannel.
Example to read both the SYNC 12 bytes as well as 'Formatted Q sub-channel' :
$ PYTHONPATH=. python examples/read_cd.py /dev/sr0 -lba 0x0 -tl 0x8 -est 3 -mcsb 0x10 -scsb 0x02
LBA 0
SYNC 00ffffffffffffffffffff00
SUB-CHANNEL 4101000000000000017404a100000080
LBA 1
SYNC 00ffffffffffffffffffff00
SUB-CHANNEL 41010100000000000200283200000080
LBA 2
SYNC 00ffffffffffffffffffff00
SUB-CHANNEL 41010100000100000201924200000000
LBA 3
SYNC 00ffffffffffffffffffff00
SUB-CHANNEL 410101000002000002024cf300000000
LBA 4
SYNC 00ffffffffffffffffffff00
SUB-CHANNEL 41010100000300000203f68300000000
LBA 5
SYNC 00ffffffffffffffffffff00
SUB-CHANNEL 41010100000400000204e1b000000000
LBA 6
SYNC 00ffffffffffffffffffff00
SUB-CHANNEL 410101000005000002055bc000000000
LBA 7
SYNC 00ffffffffffffffffffff00
SUB-CHANNEL 41010100000600000206857100000000
It is in python so it should be very easy to tweak and modify for various types of tests you might want to do.
Note, as always for SCSI devices, many devices have very incomplete firmware where uncommon features are either not implemented
or just return bad data. For example on my laptops dvd drive I can read subchannel type 2 just fine but if I try to read
subchannel type 4 then the drive just returns noting, not an error but just nothing. YMMV
EDIT: usually, for consumer SCSI devices, in my experience, IF the feature or command is used by basic windows/linux itself then it is expected to be implemented and work as the standard specifies. If it is things that is NOT used in day-to-day operations from windows/linux then it is very much a matter of YMMV. It is mostly due to a lack of industry wide testing tools, but with my libiscsi-test-tool that validates scsi standard compliance things are much better nowadays than a decade ago when it comes to normal block devices (SBC commandset: scsi disks or usb memory sticks)((even seagate/wd and sandisk now use my test/compliance tool in production nowadays and it has REALLY made a difference. I do not yet have any tests for MMC (cd/dve/bd) devices so maybe I should expand the test tool to also cover the MMC standard. ) Oh man. I have to do this and add MMC compliance tests. As if I don't have too much on my plate already.
See the MMC standard I mentioned earlier for explanation of what all these arguments mean.