Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request - Resume support for any DVD format #164

Open
ehw opened this issue Dec 2, 2022 · 8 comments
Open

Feature Request - Resume support for any DVD format #164

ehw opened this issue Dec 2, 2022 · 8 comments

Comments

@ehw
Copy link

ehw commented Dec 2, 2022

Is your feature request related to a problem? Please describe.
DiscImageCreator supports resume when using the /re command when coupled with the /raw command (specifically for Wii/GC dumps). This is great, as using this command in a supported drive is pretty slow and could take a long time. Also, certain drives might be able to read problematic parts of the disc better than others.

I don't see why this command couldn't apply to normal DVDs as well? I don't think there is a DVD based format that doesn't have 2048 bytes worth of user data when output to an .iso file. You could easily resume where you left off since the .iso will always be divisible by 2048 bytes, so you can figure out the LBA you left off at by just dividing the current .iso size by 2048. Then tell the drive to seek to that LBA and resume while appending to the .iso file.

This would be ideal in instances where one might dump a disc with many errors that are read is a particular way in one drive in comparison to the other. For instance, if I have a DVD that reads up until a certain sector consistently but I encounter an area of the disc that the drive has an issue with, I could resume from where the error occurred in the same drive after cleaning the disc or in another drive that might read the problematic section better.

Describe the solution you'd like
Let the user use the /re paramter with DiscImageCreator without /raw for DVD based discs.

Describe alternatives you've considered
Can't really think of any alternative to this...

Additional context
One thing though, that I'm unsure if using the /raw mode considers. Even though in theory the media itself will be the same before and after resuming, the drive might not be. I've never used the /raw command myself (yet), but I don't know if DiscImageCreator will append or create new logs when different drives are used when using the /re command. If not, DIC should append or create new drive related logs when the /re command is used. In order for the /re command to be used, the output filename and directory needs to be identical between commands. So if I wanted to resume "Disc1.iso", I need to use "DiscImageCreator dvd Disc1.iso 24 /re" to resume it.

@saramibreak
Copy link
Owner

It's easy to stop reading the disc for Wii/GC dumping, but normal DVDs are not so.

@ehw
Copy link
Author

ehw commented Dec 3, 2022

How come? Does the 0xE7 opcode offer more flexibility when seeking? Is there MSF information or sector headers like in MODE 1/2 data tracks for CDs that's exposed when using the raw command? I've never seen a dump made with /raw before so I'm not sure what allows it to be easier to implement...

@saramibreak
Copy link
Owner

saramibreak commented Dec 3, 2022

How come?

You can understand it if you dump Wii/GC disc using DIC. Some supported drive often stop with the error code. So /re is needed. But normal DVDs do not often stop AFAIK.

If you know easy-to-stop DVDs, tell me please.

@ehw
Copy link
Author

ehw commented Dec 3, 2022

What about in an instance the drive stops anyway due to exhausting /rr attempts?

For example:
I have a dump of a DVD-R that has a total of 2129695 data sectors (according to _disc.txt) that for one reason or another, failed 1000 reread attempts at LBA 1895680. This is evidenced by the last entry in the log:

LBA[1895680, 0x1ced00]: [F:ReadDVD][L:331]
	Opcode: 0xa8
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 02-04-01 = NOT_READY - LUN_NOT_READY - BECOMING_READY
Read retry from 1895680 (Pass 1000/1000)

LBA[1895680, 0x1ced00]: [F:ReadDVD][L:331]
	Opcode: 0xa8
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 02-04-01 = NOT_READY - LUN_NOT_READY - BECOMING_READY

DIC stopped the dump, but kept the .iso file. The resulting .iso file is 3,882,352,640 bytes in size. Dividing this file by 2048 bytes gives me 1895680, which is the LBA the drive failed to read and stopped at.

Knowing the total amount of data sectors in a disc and knowing where DIC left off at by using size of .iso divided by 2048, couldn't I simply use the /r (startLBA) (EndLBA) command to dump the remainder of the disc and just append the output to the .iso (so /r 1895680 2129695)? If I could, then why couldn't DIC do something similar when using the /re command for non-raw DVD reads?

Maybe I still don't understand what you mean, but wouldn't it not matter if certain DVDs are easier to stop? If the resulting .iso file from one incomplete read attempt exists, and if the end LBA can be determined, couldn't you always resume no matter what? Of course, maybe not every drive can easily seek to an LBA at will. Is this what you mean?

Hope this helps. Apologies if I'm wasting your time. :)

@saramibreak
Copy link
Owner

failed 1000 reread attempts at LBA 1895680

Its sector can read by "Extract DVD-R " or "Extract From-To" of the Isobuster?

@ehw
Copy link
Author

ehw commented Dec 4, 2022

We did Extract From-To, starting from 1895680 to 2129695 in ISOBuster and the 708uf. It successfully read it, it started reporting errors again at 1933088 but it never made it this far before.

You can see the logs for this disc in #165.

@ehw
Copy link
Author

ehw commented Dec 4, 2022

We dumped the entire disc in the 708uf in ISOBuster, no issue. We were able to dump the disc in another drive with DIC, no errors at all in the log, the dumps matched.

@saramibreak
Copy link
Owner

  • 1st reported drive with DIC --- ×
  • PX 708 with IsoBuster --- 〇
  • another drive with DIC --- 〇

I hope changing the drive, not support resuming...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants