From: David P. <pa...@rc...> - 2006-09-20 06:17:35
|
Denis Leroy wrote: > I'd like to do a quick bug fix release (1.2.2) which a few patches to > fix the G++ 4.1 compilation issues, as well as a gcdmaster > file-insertion bug. > > Does anyone has any patches they would like to see applied ? Hi, Denis. Since you asked, I wanted to point out (reproduced below) a one-line patch for cdrdao I submitted three years ago but I don't think was actually applied (I just checked cdrdao-1.2.1). I probably should have been more persistent about it, but better late than never, I suppose. :-) Thanks, David ----------------------- Subject: [Cdrdao-devel] patch for writing to Pioneer DVR-104 From: David Paschal <pa...@rc...> Date: Tue, 29 Jul 2003 23:07:15 -0700 To: cdr...@li... Cc: pa...@rc... 1. Hi. Attached is a patch against cdrdao-1.1.7 to make it able to write audio to my ATAPI "PIONEER DVD-RW DVR-104". Originally this drive worked fine, but for some reason after power cycling my computer it started giving the following failure early in the write or simulate process, even after recabling (such that the writer and hard disk were on separate IDE channels), upgrading the drive firmware, upgrading from cdrdao 1.1.5 to 1.1.7, and experimenting with the --speed and --buffers options: ----------------------------------------------------------------------- # cdrdao simulate --device 1,1,0 --driver generic-mmc foo.toc Cdrdao version 1.1.5 - (C) Andreas Mueller <an...@da...> SCSI interface library - (C) Joerg Schilling L-EC encoding library - (C) Heiko Eissfeldt Paranoia DAE library - (C) Monty Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables. Using libscg version 'schily-0.5' 1,1,0: PIONEER DVD-RW DVR-104 Rev: 1.32 Using driver: Generic SCSI-3/MMC - Version 1.2 (options 0x0000) Starting write simulation at speed 8... Pausing 10 seconds - hit CTRL-C to abort. Process can be aborted with QUIT signal (usually CTRL-\). Turning BURN-Proof on Writing track 01 (mode AUDIO/AUDIO)... Wrote 1 of 624 MB (Buffer 100%). ?: Input/output error. : scsi sendcmd: no error CDB: 2A 00 00 00 05 61 00 00 1B 00 status: 0x2 (CHECK CONDITION) Sense Bytes: 70 00 02 00 00 00 00 0E 00 00 00 00 04 07 00 80 Sense Key: 0x2 Not Ready, Segment 0 Sense Code: 0x04 Qual 0x07 (logical unit not ready, operation in progress) Fru 0x0 Sense flags: Blk 0 (not valid) operation 0% done cmd finished after 0.012s timeout 180s ERROR: Write data failed. ERROR: Writing failed - buffer under run? ERROR: Simulation failed. ----------------------------------------------------------------------- Here's the patch "inline" as well: diff -ru cdrdao-1.1.7.original/dao/GenericMMC.cc cdrdao-1.1.7/dao/GenericMMC.cc --- cdrdao-1.1.7.original/dao/GenericMMC.cc 2002-10-06 11:53:56.000000000 -0700 +++ cdrdao-1.1.7/dao/GenericMMC.cc 2003-07-24 18:43:06.000000000 -0700 @@ -1269,7 +1269,7 @@ // check if drive rejected the command because the internal buffer // is filled if(senseLen >= 14 && (sense[2] & 0x0f) == 0x2 && sense[7] >= 6 && - sense[12] == 0x4 && sense[13] == 0x8) { + sense[12] == 0x4 && (sense[13] == 0x7 || sense[13] == 0x8)) { // Not Ready, long write in progress mSleep(40); retry = 1; ----------------------------------------------------------------------- All the patch does is make it also use the above sense result as a signal to retry the operation, just as it already does with {code=4,qual=8}. It doesn't seem to hurt anything, and it definitely helps for my purposes. :-) Hopefully one of the cdrdao maintainers will see fit to check this into CVS or to figure out a better way to fix this problem. Let me know if I need to try anything else. I'm using ide-scsi on RedHat Linux 8.0 (kernel 2.4.18-14). FWIW, while debugging this I found that an ATAPI "HP CD-Writer+ 8100" on a similar machine worked perfectly, and noticed a slight difference in the timing for the initial "Wrote 1 of 624 MB (Buffer 100%)" message. On the Pioneer, it appeared immediately, stayed at "1 of 624 MB" for about 10 seconds, and sometimes but not always got past a few more MB before failing as above. OTOH with the HP, it took about 10 seconds for the "1 of 624 MB" message to appear, but it didn't delay any before counting its way to the end of the disc. That suggested to me (knowing almost nothing about the SCSI protocol) that the HP treats the "write" command as a blocking operation, and the Pioneer treats it as non-blocking and returns the above sense code when it can't handle any more requests. In addition to the above (now fixed) issue, "cdrdao read-cd" doesn't seem to work on this same drive. It can read the TOC fine, but upon reading the data it reports a long stream of errors such as the following: ----------------------------------------------------------------------- Copying audio tracks 1-12: start 00:00:00, length 49:46:37 to "FOO.bin"... Track 1... ?: Input/output error. : scsi sendcmd: no error CDB: BE 00 00 00 00 00 00 00 14 F8 01 00 status: 0x2 (CHECK CONDITION) Sense Bytes: 70 00 05 00 00 00 00 0E 00 00 00 00 24 00 00 00 Sense Key: 0x5 Illegal Request, Segment 0 Sense Code: 0x24 Qual 0x00 (invalid field in cdb) Fru 0x0 Sense flags: Blk 0 (not valid) cmd finished after 0.006s timeout 20s ----------------------------------------------------------------------- Fortunately this isn't much of a problem for me, because I also have a "LITEON DVD-ROM LTD163" which reads successfully using the generic-mmc driver. But if anybody has any ideas on how to make this work on this drive, I'd be interested to know. "invalid field in cdb" suggests to me that the "read audio" command is supported but perhaps a field in the CDB is missing or incorrect. In any case, cdrdao is very useful to me for making backup copies of my audio CDs, so thanks to all the developers for providing it. David |