Subject: kern/25210: Older CD drives can no longer play audio CDs
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <uwe@netbsd.org>
List: netbsd-bugs
Date: 04/17/2004 13:33:46
>Number:         25210
>Category:       kern
>Synopsis:       Older CD drives can no longer play audio CDs
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Apr 17 13:34:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Valeriy Ushakov
>Release:        2.0C
>Organization:
>Environment:
NetBSD glip 2.0C NetBSD 2.0C (GLIP) #2: Fri Apr  9 15:29:17 MSD 2004  uwe@glip:/usr/src/sys/arch/i386/compile/GLIP i386

>Description:
The CD in my Dell Latitude CP no longer can play audio CDs.

cd0 at atapibus0 drive 0: <CD-ROM  CDR_U200, , 1.12> cdrom removable
cd0: 32-bit data port
cd0: drive supports PIO mode 3, DMA mode 1
cd0(piixide0:1:0): using PIO mode 0, DMA mode 1 (using DMA data transfers)

Issuing cdplay play results in:

cd0(piixide0:1:0):  Check Condition on CDB: 0x5a 08 0e 00 00 00 00 00 18 00
    SENSE KEY:  Illegal Request
     ASC/ASCQ:  Illegal Field in CDB

>How-To-Repeat:
Get a machine with a CD drive old enough.  Try to play an audio CD.
>Fix:
The quick workaround I used was to disable the use of SMS_DBD in sys/dev/scsipi/cd.c

Note that  sd.c  had a similar issue fixed by:

| revision 1.214
| date: 2003/12/23 13:12:25;  author: pk;  state: Exp;  lines: +43 -21
| Some older devices do not understand the `disable block descriptors' bit in
| the mode sense request. So fall back on mode sense data including a block
| descriptor section.
|
| XXX this applies to the `page 4' case. The `page 5' didn't consider the
| possible presence of a block descriptor at all, though it did allow the
| device to return one.  While that's fixed now, the `page 5' mode sense
| does not use the `disable block descriptors' bit.
|
| I'm not sure we should bother with this at all..

>Release-Note:
>Audit-Trail:
>Unformatted: