“mplayer” and “cdparanoia” request disc speeds differently than “eject -x” and “hdparm -E”. How?

One of my observations on optical disc drives is that for Audio CDs, some TSSTcorp optical drives such as SH-S162L do not respond to eject /dev/sr[number] -x [number] or hdparm -E [number] /dev/sr[number] , which means that the spinning speed stays unaffected.

But when played back using mplayer -cdrom-device /dev/sr[number] cdda:// [parameters] , it slows down to 10×CAV while speeding up to 40×CAV when read through cdparanoia.

This means that cdparanoia and mplayer issue speed commands differently than eject -x and hdparm -E.

And apparently, QPxTool (of which I hope the developement will be revived) and RimhillEX (for Windows) use the method of eject -x and hdparm -E, while Nero DiscSpeed appears to be using the speed request method that cdparanoia uses.

How exactly do they do it differently?

Have you tried reading through the code of these programs/utilities?

Some of these programs/utilities appear to be from open source projects. So the original code is easily available online.

As a start, I would be looking at which particular scsi commands are being used to change the drive speed specifically.

1 Like

From some casual googling, I found some pages which might give some insight. Apparently some Samsung or TSST cdrom/dvdrom drives do not respond to an ATAPI SET_CD_SPEED command.

This has been documented for many years, starting with the ide-cd.c driver code in Linux:

/* SCR-3231 doesn’t support the SET_CD_SPEED command. */
{ "“SAMSUNG CD-ROM SCR-3231"”, NULL, IDE_AFLAG_NO_SPEED_SELECT },

https://www.linuxquestions.org/questions/slackware-installation-40/help-slack-9-1-and-samsung-cdr-3231-a-191407/

It also appears that the SET_CD_SPEED atapi command is also absent (ie. n/a) in the TSST SN-406AB slim bd/dvd combo drive model circa 2013.

1 Like

The other atapi interface scsi command which appears that it could be used for changing cd/dvd drive speeds, is SET_STREAMING (with opcode 0xB6).

(In contrast, SET_CD_SPEED had atapi scsi opcode 0xBB).

In that previously TSST SN-406AB linked statsheet, it mentions that the atapi SET_STREAMING scsi command works. (As mentioned previously, the SET_CD_SPEED command 0xBB appears to be absent for this TSST SN-406AB model).

So this speed “quirk” you have been observing in your TSST drive, might be due to utility/programs using different scsi commands for changing speeds? (The only way to know for sure, is to read the original code for these utilities/programs).

1 Like

Thank you very much for the insights. It is very interesting!