Date: Wed, 27 Dec 1995 18:21:01 -0800 From: Stu Phillips <stu@solaris.com> To: freebsd-bugs@freefall.freebsd.org Cc: jkh@time.cdrom.com Subject: Re: xcdplayer and SCSI Problem with Sony CDU-76S Message-ID: <199512280221.SAA00201@solaris.cisco.com>
index | next in thread | raw e-mail
I recently installed a quad speed CDROM under FreeBSD 2.1 release - it worked
fine *except* that xcdplayer kept generating:
cd0(bt0:4:0): ILLEGAL REQUEST asc:26,0 Invalid field in parameter list
messages whenever it was used.
The archives on freebsd.org suggested that this was due to SONY not following
the SCSI-II specs for CDROM audio - must confess, I found this hard to
accept especially since a generic SCSI CD player under Windows played CDs
just fine.
After a fair bit of SCSI hacking I found the problem; Here is the addition
I made to /sys/scsi/cd.c in the routine cd_set_mode:
errval
cd_set_mode(unit, data)
u_int32 unit;
struct cd_mode_data *data;
{
struct scsi_mode_select scsi_cmd;
bzero(&scsi_cmd, sizeof(scsi_cmd));
scsi_cmd.op_code = MODE_SELECT;
scsi_cmd.byte2 |= SMS_PF;
scsi_cmd.length = sizeof(*data) & 0xff;
scsi_cmd.length = 0;
data->header.data_length = 0;
/********************* The following line added ***********************/
data->header.medium_type = 0;
return (scsi_scsi_cmd(SCSI_LINK(&cd_switch, unit),
(struct scsi_generic *) &scsi_cmd,
sizeof(scsi_cmd),
(u_char *) data,
sizeof(*data),
CDRETRIES,
2000, /* should be immed */
NULL,
SCSI_DATA_OUT));
}
According to the SCSI-II spec (BTW, there is a great on-line copy of this
spec available at URL: http://abekas.com:8080/SCSI2/), in section 8.3.3, it
says that the medium field of the mode parameter header *may* be RESERVED
by some device types.
The SONY CDU-076S returns this field as 0x03 on a MODE_SENSE but complains
if it is set to anything other than 0x00 on a MODE_SELECT.
xcdplayer caused the above error to be generated when issuing an ioctl
for CDIOCCPLAYMSF to start the device playing - in cd_ioctl, it was the
cd_set_mode call that was failing rather than the actual PLAYMSF command.
I haven't got any other CDROMs to test this patch against (sorry it isn't
in context diff form but it is just a one liner); however, setting the
medium field to 0x00 is the default value so I suspect its unlikely to cause
any problems with other CDROM drives other than SONY's.
Due to the limited testing, I'm sending this to the bug list rather than
submitting as a candidate bug fix. If anyone cares to try this with other
drives, let me know and I'll collect the feedback.
Happily listening to CDs on my SONY CDU-76S.... (< $150 at NCA here in the
Bay Area - special sale - maybe I now know why ;-)....
Stu
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512280221.SAA00201>
