Hey I'm creating ISOs of my DVDs, but I'm getting errors with some of them. I suspect it's a copy protection scheme. When playing the DVD directly, e.g. "vlc /dev/dvd", things "just work". With some DVDs, "dd if=/dev/dvd of=foo.iso && vlc foo.iso" works equally well (I need to run "vlc /dev/dvd" to CSS-unlock the data). But with some DVDs which don't seem particularly scratched, I'll receive exactly one read error during the dd (I'm passing "conv=noerror" to dd to circumvent that); the resulting .iso file is then unusable and shows various errors: libdvdnav: Using dvdnav version 4.1.3 libdvdread: Using libdvdcss version 1.2.10 for DVD access libdvdnav: DVD Title: TMS0EUW1 libdvdnav: DVD Serial Number: 3a8e11db [...] libdvdread: Get key for /VIDEO_TS/VTS_15_0.VOB at 0x002f01a5 libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_15_1.VOB at 0x002f0258 libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_16_0.VOB at 0x002f8be7 libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_16_1.VOB at 0x002f8c9a libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_17_0.VOB at 0x00344d9e libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_17_0.VOB (0x00344d9e) libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_17_1.VOB at 0x00344dae libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_17_1.VOB (0x00344dae)!! libdvdread: Elapsed time 0 libdvdread: Found 17 VTS's libdvdread: Elapsed time 0 Warning: call to srand(309709) libdvdread: Invalid IFO for title 17 (VTS_17_0.IFO). libdvdnav: ifoOpenVTSI failed vlc: /build/buildd/libdvdnav-4.1.3/src/vm/vm.c:1485: process_command: Assertion `0' failed. I'm using Ubuntu 10.10's libdvdnav, libdvdread, and vlc with a self-built libdvdcss. I checked that Ubuntu's libdvdnav doesn't have an embedded libdvdread, and neither does vlc. I cherry-picked SVN r1215 from svn://svn.mplayerhq.hu/dvdnav/trunk into libdvdread, but this didn't help. I also took SVN r237 from svn://svn.videolan.org/libdvdcss/trunk into libdvdcss just in case it was the explanation for the CSS key issues. There seem to be three issues at various levels: - dd fails to read some bytes from /dev/dvd. I'm thinking that this is caused by the copy-protection scheme at the disc mastering level, and that it's an intentional error; maybe this triggers some fallback code pathes in commercial DVD playing software which are not triggered when using a .iso file which has no error - libdvdcss reports that the last title's key can't be cracked when using the .iso file, but it works when using /dev/dvd (almost all the time, albeit there was one case where it didn't work) - libdvdread/libdvdnav are extremely unhappy with ifoOpenVTSI() failing The error seemed similar to the one fixed by the addition of .BUP file support, unfortunately this didn't help. This happens on a range of Walt Disney DVDs Is there some information I can provide on the failure to help track it down? I'm afraid I'm not familiar with the DVD specs. Cheers, -- Loïc Minier
dd exits when it encounters an error. So you have an incomplete ISO. You need to use something like ddrescue with such discs. You are probably encountering ARccOS protection. If so, there will be a lot of bad sectors on the disc and it will take a long time to copy it due to the many error retries that any copying program will encounter. On 11/22/2010 07:06 AM, Loïc Minier wrote:
Hey
I'm creating ISOs of my DVDs, but I'm getting errors with some of them. I suspect it's a copy protection scheme.
When playing the DVD directly, e.g. "vlc /dev/dvd", things "just work". With some DVDs, "dd if=/dev/dvd of=foo.iso && vlc foo.iso" works equally well (I need to run "vlc /dev/dvd" to CSS-unlock the data).
But with some DVDs which don't seem particularly scratched, I'll receive exactly one read error during the dd (I'm passing "conv=noerror" to dd to circumvent that); the resulting .iso file is then unusable and shows various errors: libdvdnav: Using dvdnav version 4.1.3 libdvdread: Using libdvdcss version 1.2.10 for DVD access libdvdnav: DVD Title: TMS0EUW1 libdvdnav: DVD Serial Number: 3a8e11db [...] libdvdread: Get key for /VIDEO_TS/VTS_15_0.VOB at 0x002f01a5 libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_15_1.VOB at 0x002f0258 libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_16_0.VOB at 0x002f8be7 libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_16_1.VOB at 0x002f8c9a libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_17_0.VOB at 0x00344d9e libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_17_0.VOB (0x00344d9e) libdvdread: Elapsed time 0 libdvdread: Get key for /VIDEO_TS/VTS_17_1.VOB at 0x00344dae libdvdread: Error cracking CSS key for /VIDEO_TS/VTS_17_1.VOB (0x00344dae)!! libdvdread: Elapsed time 0 libdvdread: Found 17 VTS's libdvdread: Elapsed time 0 Warning: call to srand(309709) libdvdread: Invalid IFO for title 17 (VTS_17_0.IFO). libdvdnav: ifoOpenVTSI failed vlc: /build/buildd/libdvdnav-4.1.3/src/vm/vm.c:1485: process_command: Assertion `0' failed.
I'm using Ubuntu 10.10's libdvdnav, libdvdread, and vlc with a self-built libdvdcss. I checked that Ubuntu's libdvdnav doesn't have an embedded libdvdread, and neither does vlc.
I cherry-picked SVN r1215 from svn://svn.mplayerhq.hu/dvdnav/trunk into libdvdread, but this didn't help. I also took SVN r237 from svn://svn.videolan.org/libdvdcss/trunk into libdvdcss just in case it was the explanation for the CSS key issues.
There seem to be three issues at various levels: - dd fails to read some bytes from /dev/dvd. I'm thinking that this is caused by the copy-protection scheme at the disc mastering level, and that it's an intentional error; maybe this triggers some fallback code pathes in commercial DVD playing software which are not triggered when using a .iso file which has no error - libdvdcss reports that the last title's key can't be cracked when using the .iso file, but it works when using /dev/dvd (almost all the time, albeit there was one case where it didn't work) - libdvdread/libdvdnav are extremely unhappy with ifoOpenVTSI() failing
The error seemed similar to the one fixed by the addition of .BUP file support, unfortunately this didn't help.
This happens on a range of Walt Disney DVDs
Is there some information I can provide on the failure to help track it down? I'm afraid I'm not familiar with the DVD specs.
Cheers,
On Mon, Nov 22, 2010, John Stebbins wrote:
dd exits when it encounters an error. So you have an incomplete ISO. You need to use something like ddrescue with such discs.
Yep; as I noted, I'm using conv=noerror with dd so that it keeps going, writing zeroes in place of the bytes it couldn't read. I believe dd-rescue does the same thing, albeit with retries, but retries wouldn't help anyway. -- Loïc Minier
On Mon, Nov 22, 2010, Loïc Minier wrote:
On Mon, Nov 22, 2010, John Stebbins wrote:
dd exits when it encounters an error. So you have an incomplete ISO. You need to use something like ddrescue with such discs.
Yep; as I noted, I'm using conv=noerror with dd so that it keeps going, writing zeroes in place of the bytes it couldn't read. I believe dd-rescue does the same thing, albeit with retries, but retries wouldn't help anyway.
Well, I was completely wrong in my expectations of dd; if any block fails, it just gives up on the whole block. dd_rescue is different in that it has two configurable block sizes: one as long as everything goes well, and another one to retry failing reads. I was passing bs=100M or something stupidly large to dd, which means that any read error (due to copy-protection mechanisms) caused a 100M hole in the .iso file. With dd_rescue, I'm passing something large as the regular block size and 4096 for the block size of failed reads (found with blockdev --getbsz on the dvd drive). I could copy and play this failing DVD using dd_rescue. Sorry for rejecting your proposal, I was wrong! -- Loïc Minier
participants (2)
-
John Stebbins -
Loïc Minier