Subject: Re: VCD playback working at all on i386 1.6.1?
To: Frederick Bruckman <fredb@immanent.net>
From: Todd Vierling <tv@pobox.com>
List: tech-pkg
Date: 05/31/2003 16:17:55
On Sat, 31 May 2003, Frederick Bruckman wrote:

: I wish I knew what that meant. Does the CD-ROM drive work under NetBSD
: generally; can you rip audio with cdparanoia, or burn with cdrdao? How
: about "mplayer cdda://" (with an audio CD)?

Of all the stuff below that's third party, it's a newly compiled package
from pkgsrc as of this morning (just to be sure 8-).

"/usr/bin/eject [-l|-L|-u]" works.
"cdrecord dev=/dev/rcd0d" works (also with -dummy).
"cdrecord dev=/dev/rcd0d -dao" works (also with -dummy).
"cdrdao write --driver=generic-mmc[-raw]" works (also with --simulate).
"cdrdao read-cd --driver=generic-mmc[-raw]" works.[*]
"[g]mplayer cdda://" works on an audio CD.
"cdparanoia" works, but not on [S]VCDs.[**]
"cdd" works (protocol 0), but not on [S]VCDs (not even with -noed).

Does cdparanoia or cdd work on [S]VCDs for you?  I can start to read the
first track (ISO9660 mode 2 form 1) of a [S]VCD with cdd, and then it craps
out at exactly 300 2k-sectors.

[*] This doesn't produce the kernel message, either.  Obviously cdrdao has a
    richer set of SCSI/ATAPI commands that it uses.

[**] This, I now discover, is the supplier of SCSI routines to [g]mplayer.

: This is what you normally get, by the way, any time you access the
: CDROM under NetBSD:
:
:     cd0(pciide0:1:0): illegal request, data = 00 00 00 00 21 00 00 00 00 00
:     cd0: dos partition I/O error

I get the following when cdrecord does its work, and a similar message for
cdrdao and "mplayer cdda://":

cd0(pciide0:1:0):  Check Condition on CDB: 0x28 00 00 00 00 00 00 00 01 00
    SENSE KEY:  Illegal Request
     ASC/ASCQ:  ASC 0x64 ASCQ 0x04

cd0: dos partition I/O error

which is the same thing with SCSIVERBOSE turned on.  (My original klog dump
from gmplayer should have included the dos partition message at the end;
perhaps I cut that off by accident.)

That message comes from scsipi_base.c:1.75.2.1:924, where the errno returned
to the caller is EINVAL (22, Invalid argument, the precise error cdd reports
when trying to read a [S]VCD raw track).

: Are you still getting the "ioctl dif1:" message with "rcd0d", as below
: (from your first post)...

No.  That's missing now, using rcd0d:

Playing VCD track 1
track 01:  adr=1  ctrl=4  format=2  00:02:00
track 02:  adr=1  ctrl=4  format=2  00:21:15
scsi command failed: status 3 error 0
scsi command failed: status 3 error 0
...

I've also just attached another drive (a DVD-ROM), and it works the same way
with all the programs listed above.  Its dmesg:

cd1 at atapibus0 drive 1: <RAITE RDR-108H DVDROM   V1.7, RDR-108H, VER 1.7> type 5 cdrom removable
cd1: 32-bit data port
cd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 2 (Ultra/33)
pciide0: secondary channel interrupting at irq 15
cd1(pciide0:1:1): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA data transfers)

Given the cdd/cdparanoia behavior above, and the fact that the same behavior
exists on my DVD-ROM drive, I'm starting to wonder if there might be a
kernel-in-the-way problem going on, or that cdparanoia/libscsi is not nearly
as robust as it should be wrt errors.

Both these drives have been used successfully (for some time) with M$
operating systems, reading and writing all kinds of data.  I've used
cdrecord and cdrdao for Cygwin on them without troubles.

-- 
-- Todd Vierling <tv@pobox.com>