Hi all, I'm having a hard time getting my external (USB, Firewire) Plextor PX-755UF to read any retail DVDs at all. I can read any kind of CDs and also DVD-Rs. But mastered DVDs are invisible to FreeBSD. I can not even read a single sector from such a DVD with the external drive, but it's working just fine with the internal one. It's really driving me nuts. umass0: <PLEXTOR DVDR PX-755A, class 0/0, rev 2.00/4.35, addr 126> umass0: 8070i (ATAPI) over Bulk-Only; quirks = 0x0000 umass0:1:0:-1: Attached to scbus1 cd0 at umass-sim0 bus 0 target 0 lun 0 cd0: <PLEXTOR DVDR PX-755A 1.06> Removable CD-ROM SCSI-0 device cd0: 40.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed cd1 at ata1 bus 0 target 0 lun 0 cd1: <_NEC DVD_RW ND-5500A 1.51> Removable CD-ROM SCSI-0 device cd1: 33.000MB/s transfers cd1: Attempt to query device size failed: NOT READY, Medium not present The NEC drive can read DVDs just fine (although it sucks). % recoverdisk /dev/cd1 start size len state done remaining % done 0 1048576 7411912704 0 0 7411912704 0.0000000^C (130)% recoverdisk /dev/cd0 recoverdisk: DIOCGMEDIASIZE failed: No such file or directory (1)% dd if=/dev/cd0 bs=2048 0+0 records in 0+0 records out 0 bytes transferred in 0.000093 secs (0 bytes/sec) If I attach the device via Firewire, it's just the same. Perhaps it requires some sort of quirk? Where should I start looking for debug output? Which test should I run. Any help would be greatly appreciated. Bye, Ulrich Spoerlein -- "The trouble with the dictionary is you have to know how the word is spelled before you can look it up to see how it is spelled." -- Will Cuppy
On Thu, 3 May 2007, Ulrich Spoerlein wrote:> Hi all, > > I'm having a hard time getting my external (USB, Firewire) Plextor > PX-755UF to read any retail DVDs at all. I can read any kind of CDs > and also DVD-Rs. But mastered DVDs are invisible to FreeBSD. > > I can not even read a single sector from such a DVD with the external > drive, but it's working just fine with the internal one. It's really > driving me nuts.<snip>> The NEC drive can read DVDs just fine (although it sucks). > > % recoverdisk /dev/cd1 > start size len state done remaining % done > 0 1048576 7411912704 0 0 7411912704 0.0000000^C > (130)% recoverdisk /dev/cd0 > recoverdisk: DIOCGMEDIASIZE failed: No such file or directory > (1)% dd if=/dev/cd0 bs=2048 > 0+0 records in > 0+0 records out > 0 bytes transferred in 0.000093 secs (0 bytes/sec) > > If I attach the device via Firewire, it's just the same. Perhaps it > requires some sort of quirk? Where should I start looking for debug > output? Which test should I run. Any help would be greatly > appreciated.I had an issue with ripping some DVD's to my laptop before a trip I made (note: no distribution occurred (for the lawyers :))). I wanted to just use dd to do it, but dd would fail after a small amount of data was read. If I first played a little of the DVD with mplayer, then dd would work afterwards. It probably had something to do with mplayer whispering sweet nothings to the DVD player. Sean -- sean-freebsd@farley.org
>I had an issue with ripping some DVD's to my laptop before a trip I made >(note: no distribution occurred (for the lawyers :))). I wanted to >just use dd to do it, but dd would fail after a small amount of data was >read. If I first played a little of the DVD with mplayer, then dd would >work afterwards. It probably had something to do with mplayer >whispering sweet nothings to the DVD player. >SeanI've had similar experiences with DaVinci Code and Casino Royal. The error is: Outputting to /big/MOVIE/CASINO/CASINO_ROYALE1-1.vob 16MB of 6834MB written (0 %) acd0: FAILURE - READ_BIG MEDIUM ERROR asc=0x11 ascq=0x05 acd0: FAILURE - READ_BIG MEDIUM ERROR asc=0x11 ascq=0x05 My work around so that I can watch the movie I rented is to skip over the problem area (probably intensional by Hollywood) vobcopy -b 50m Try adjusting the offset-size to your needs. Robert
On Thursday 03 May 2007 20:16:46 Ulrich Spoerlein wrote:> I'm having a hard time getting my external (USB, Firewire) Plextor > PX-755UF to read any retail DVDs at all. I can read any kind of CDs > and also DVD-Rs. But mastered DVDs are invisible to FreeBSD. > > I can not even read a single sector from such a DVD with the > external drive, but it's working just fine with the internal one. > It's really driving me nuts.Maybe you have to change the drive region code (RPC 2). I had to do this a couple years ago with a laptop's internal drive. Either that or you need to find a patched firmware to make the drive region free (RPC 1). I wrote 2 simple programs back then to play with this, because I couldn't find anything in the base system. "regionget /dev/cd0" prints out the current drive region info, like: vendor resets left: 4 user changes left: 3 drive region: 2 rpc type: 2 "regionset /dev/cd0 3" sets the drive region code to 3. Don't forget that you can only change the region about 5 times (user changes left field). -------------- next part -------------- #include <fcntl.h> #include <stdio.h> #include <string.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/dvdio.h> #include <unistd.h> int main( int argc, char const *argv[] ) { int ret; int region; int fd; struct dvd_authinfo dvd; if( argc < 2 ) { fprintf( stderr, "Usage: %s <dvd device>\n", argv[ 0 ]); return -1; } fd = open( argv[ 1 ], O_RDONLY ); if( fd < 0 ) { fprintf( stderr, "Failed to open %s\n", argv[ 1 ]); return -1; } memset( &dvd, 0, sizeof( struct dvd_authinfo )); dvd.format = DVD_REPORT_RPC; ret = ioctl( fd, DVDIOCREPORTKEY, &dvd ); close( fd ); if( ret < 0 ) { fprintf( stderr, "Failed to retrieve region info. Try with a disc in the drive.\n" ); return -1; } dvd.region ^= 0xff; for( region = 0; dvd.region; dvd.region >>= 1 ) { region++; if( dvd.region == 1 ) break; } printf( "vendor resets left: %u\n", dvd.vend_rsts ); printf( "user changes left: %u\n", dvd.user_rsts ); printf( "drive region: %u\n", region ); printf( "rpc type: %u\n", dvd.rpc_scheme + 1 ); return 0; } -------------- next part -------------- #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/dvdio.h> #include <unistd.h> int main( int argc, char const *argv[] ) { int ret, fd; uint8_t region; struct dvd_authinfo dvd; if( argc < 3 ) { fprintf( stderr, "Usage: %s <dvd device> <region>\n", argv[ 0 ]); return -1; } ret = ( uint8_t ) strtol( argv[ 2 ], NULL, 10 ); if( ret <= 0 || ret > 8 ) { fprintf( stderr, "Invalid region.\n" ); return -1; } for( region = 0x01; ret > 1; ret-- ) { region <<= 1; } region ^= 0xff; fd = open( argv[ 1 ], O_RDONLY ); if( fd < 0 ) { fprintf( stderr, "Failed to open %s\n", argv[ 1 ]); return -1; } memset( &dvd, 0, sizeof( struct dvd_authinfo )); dvd.format = DVD_SEND_RPC; dvd.region = region; ret = ioctl( fd, DVDIOCSENDKEY, &dvd ); close( fd ); if( ret < 0 ) { fprintf( stderr, "Failed to set region. Try with a disc in the drive.\n" ); return -1; } return 0; }