LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - General (https://www.linuxquestions.org/questions/linux-general-1/)
-   -   Reading DVD burnt with Vista (https://www.linuxquestions.org/questions/linux-general-1/reading-dvd-burnt-with-vista-614956/)

nanobis 01-20-2008 08:59 AM

Reading DVD burnt with Vista
 
I got a DVD having plenty of pictures. This DVD was burnt with Vista by a friend of me. But with my Debian machine I cann't read it. How can I solve this issue ? In advance thank you for helping me

bigrigdriver 01-20-2008 09:20 AM

Which viewer applications have you tried? What error messages do you get? Try starting the viewer from the command line, then try to view the files on the dvd. If it fails, you should see error messages in the console window.

nanobis 01-20-2008 09:27 AM

Thanks for the answer. The problem is more fundamental ! the Disk cann't be mounted. So, my usual viewers are not operative.

bigrigdriver 01-20-2008 10:02 AM

Music and video (I suppose also photo) dvds aren't mounted; they don't have a file system. You just put the disk in the drive and use a viewer to see the files.

Data dvds, such as isos and archived files must be mounted (they have a filesystem) before viewing the files.

nanobis 01-20-2008 11:00 AM

I am surprised by your answer. How can I enter to my DVD ? as I don't see it in the system ? For instance I can use kuickShow.
I click on "file tab" after on "open" I don't see again my files ...... What can I do more ? I tried to copy it with K3b without result !

rostedt 02-18-2008 12:55 PM

Udf 2.50
 
Sorry I can't help get this solved for you, but I can point you in the right direction of what you're facing.

The problem is that Vista burns DVDs in a default UDF 2.50 format. At this time, I do not know of another OS that can even read that. A friend sent me pictures on a DVD burnt by Vista, and I've tried all my Linux boxes as well as my Mac, with no luck. Here's the kicker, I even tried my wife's XP box and it can't read it either.

Looking through the web, I've discovered that this problem is a complaint even by Windows users. Seems that MS wants everybody to upgrade to their latest OS, even if you really don't need to.

See here for more info on the subject.

http://forums.microsoft.com/TechNet/...0392&SiteID=17

Note, there's a patch that claims to support this (I haven't been lucky with it yet) but perhaps it can help you:

http://sourceforge.net/projects/linux-udf/

lleb 02-18-2008 03:31 PM

Quote:

Originally Posted by rostedt (Post 3061599)
Sorry I can't help get this solved for you, but I can point you in the right direction of what you're facing.

The problem is that Vista burns DVDs in a default UDF 2.50 format. At this time, I do not know of another OS that can even read that. A friend sent me pictures on a DVD burnt by Vista, and I've tried all my Linux boxes as well as my Mac, with no luck. Here's the kicker, I even tried my wife's XP box and it can't read it either.

Looking through the web, I've discovered that this problem is a complaint even by Windows users. Seems that MS wants everybody to upgrade to their latest OS, even if you really don't need to.

See here for more info on the subject.

http://forums.microsoft.com/TechNet/...0392&SiteID=17

Note, there's a patch that claims to support this (I haven't been lucky with it yet) but perhaps it can help you:

http://sourceforge.net/projects/linux-udf/


nice find. good info i will keep this in mind when helping customers.

one more reason to avoid Vista.

Emerson 02-18-2008 04:06 PM

A short Google revealed there is UDF-2.5 patch for Linux kernels. Didn't dig deep, maybe it's already in kernel for now.

rostedt 02-18-2008 11:42 PM

patch
 
Quote:

Originally Posted by Emerson (Post 3061791)
A short Google revealed there is UDF-2.5 patch for Linux kernels. Didn't dig deep, maybe it's already in kernel for now.

Yeah, I linked to the location of the patch in my previous post. Unfortunately, it still doesn't read vista burned files. Seems that vista DVDs have too many bugs in the format.

Anyway, I got the files I wanted off of it. I did a major hack to do so. I found a web site from Philips http://www.hitech-projects.com/udf/ .

That link shows how to get a "udf_test" program that verifies UDF. You must register to get that file, but the registering is free.

Here's the hack I did.

I got the source for the udf_test (UDF Verifier). Which I found has a way to do CRC checksums on the files on the UDF. I put a hook in the code (the source is available, but not under GPL).

In src/utc_core/utcfiles.c, I found the function: readFileBodyAndTail

There's a loop in there that does:

for (bytesRead = 0;
bytesRead < bodySize && result == TRUE;
bytesRead += readThisTime) {

Just before that loop, I added a function call my_open_files();

after "THERead" I added my_write_files(buffer, readThisTime);

And after the loop I added my_end_files();

Then before that function, I added:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
static int my_fd = -1;
void my_start_file(void)
{
static int num;
char buf[64];
sprintf(buf, "/tmp/f%d", num++);
my_fd = open(buf, O_WRONLY|O_CREAT);
if (my_fd < 0)
fprintf(stderr, "BAHHHHH!\n");
}

void my_write_file(char *buf, Uint64 r)
{
if (my_fd >= 0)
write(my_fd, buf, r);
}

void my_end_file(void)
{
if (my_fd >= 0)
close(my_fd);
}


I recompiled, and ran:

./udf_test -udf 2.50 -filecrc /dev/hdc

Where the /dev/hdc had my dvd in it.

it created all the files in the /tmp directory named f0 to fN (N being the number of files).

I just needed to get the files off, I didn't need to keep the directory structure or anything. But, it wouldn't be that hard to take this code and convert it to something that can read the dvd and create the file structure. It has everything in that code to see where things go and file names. I just don't have the time to make those changes.

But if someone else would like to ;-)

I ran it through astyle since I really couldn't stand the C coding style they chose.

Good luck (the next time I'm telling my friend to change the default UDF when they burn a DVD for me).

-- Steve

nanobis 02-20-2008 03:10 PM

Many thanks for your information. I downloaded th UDF tester from Philips. It works fine. I am not sure to apply the proposed hack, which is convenient for me. It is a bit too difficult for me. But I'll try it.

rostedt 02-21-2008 09:31 AM

hack
 
Quote:

Originally Posted by nanobis (Post 3064138)
Many thanks for your information. I downloaded th UDF tester from Philips. It works fine. I am not sure to apply the proposed hack, which is convenient for me. It is a bit too difficult for me. But I'll try it.

Cut and paste the stuff I posted:

#include <sys/types.h>
[...]
void my_end_file(void)
{
if (my_fd >= 0)
close(my_fd);
}

Before:

static bool readFileBodyAndTail(UdfMountContext *mc, Node *node)


And then add these lines: (that start with the '+' but do not add the '+')


+ my_start_file();
for (bytesRead = 0;
bytesRead < bodySize && result == TRUE;
bytesRead += readThisTime) {

[...]

+ my_write_file(buffer, readThisTime);
#ifdef FAKE_BIGFILES /* force fake read for big files */
fileCrc = 0;
if (uctDoFileCRC && buffer != NULL)


[...]

} /* endfor bytesRead ... */

+ my_end_file();
/* result may be FALSE in case of a read error.
* In that case, bytesRead is not equal to bodySize,



The posting is removing my whitespace I added, so the indenting is not correct.

Then run:

/udf_test -udf 2.50 -filecrc /dev/hdc

the files you want will end up in /tmp

Again, this is very much a hack, and can be done much cleaner, but I simply don't have the time to do it. The code is also not under GPL, but I'm sure if someone gives Philips a patch, they may incorporate it.

I do thank Philips for providing this tool (and more importantly, the source), that gave me the ability to extract the files.

-- Steve

nanobis 03-04-2008 09:47 AM

I tried the the proposed hack:
in src/utc_core/utcfiles.c, I amended as I understood ie :

* FCRC_MAXBUFSIZE:
* buffer for file CRC calculation, multiple of the blockSize.
*/
#define FCRC_MAXBUFSIZE ((Uint32)(32*1024*1024)) /* mult of blockSize */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
static int my_fd = -1;
void my_start_file(void)
{
static int num;
char buf[64];
sprintf(buf, "/tmp/f%d", num++);
my_fd = open(buf, O_WRONLY|O_CREAT);
if (my_fd < 0)
fprintf(stderr, "BAHHHHH!\n");
}

void my_write_file(char *buf, Uint64 r)
{
if (my_fd >= 0)
write(my_fd, buf, r);
}

void my_end_file(void)
{
if (my_fd >= 0)
close(my_fd);
}
my_start_file();
for (bytesRead = 0;
bytesRead < bodySize && result == TRUE;
bytesRead += readThisTime) {
my_write_file(buffer, readThisTime);
#ifdef FAKE_BIGFILES /* force fake read for big files */
fileCrc = 0;
if (uctDoFileCRC && buffer != NULL)

} /* endfor bytesRead ... */
+ my_end_file();
/* result may be FALSE in case of a read error.
* In that case, bytesRead is not equal to bodySize,


static bool readFileBodyAndTail( UdfMountContext *mc, Node *node )
{
Uint64 bodySize, readChunk, bytesRead, readThisTime;
static Uint32 staticBufSize = FCRC_MAXBUFSIZE;
Ui

I got compilation errors as :

uctfiles.c:4092: warning: data definition has no type or storage class
uctfiles.c:4092: error: conflicting types for ‘my_start_file’
uctfiles.c:4072: error: previous definition of ‘my_start_file’ was here
uctfiles.c:4093: error: expected identifier or ‘(’ before ‘for’
uctfiles.c:4094: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
uctfiles.c:4095: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘+=’ token
uctfiles.c:4097:1: error: unterminated #ifdef
make[1]: *** [uctfiles.o] Erreur 1
make[1]: quittant le répertoire « /home/nano/Desktop/Téléchargements/essai_udf/udfct_1.5r6/src/uct_core »
make: *** [all] Erreur 2


I think I misunderstood somethings !

What can I do ?

nanobis 03-05-2008 02:30 PM

cancelled cancelled

nanobis 03-05-2008 02:57 PM

I have read again the posts. My last one must be cancelled.
1- I have shifted the main hack from before the function to before static bool... It is clear.
2- Adding these lines It is not clear for me where I have to place these lines. I don't understand the meaning of [...]

A precedent post proposed :
1- to add a function : my_open_file() It seems clear.
2- to add the function after THERead Where is it exactly ?
3- To add my_end_files() after th loop seems clear too.

If all these points are made clear, the life will be happier !!!

nanobis 03-23-2008 01:12 PM

Finally, I found a solution which was satistactory for me. I used ISOBUSTER, last version, in cooperation with WINE. So I was able to get all my files from this VISTA dvd without problems


All times are GMT -5. The time now is 06:19 PM.