@(#)DRIVES	6.43 04/01/10

SUPPORTED DRIVES
----------------

This release of xmcd and cda should work with the following computer
CD and DVD drives:

    - Any MMC-compliant (MMC-1, MMC-2, MMC-3) SCSI or IDE/ATAPI
      drive capable of audio playback and digital audio extraction
      for CDDA functions.

    - Any SCSI-2 or IDE/ATAPI drive capable of audio playback.
      Some SCSI-2 drives using vendor-unique commands for digital
      audio extraction are also supported for CDDA functions.

    - Many older SCSI-1 drives using vendor-unique commands for
      audio playback.

    - SCSI and IDE/ATAPI multi-disc changers (see below for details).

    - Drives with USB, IEEE-1394 Firewire, or proprietary interfaces,
      if driver support is available and installed on your OS platform.

For multi-disc changers, please refer to the MULTI-DISC CHANGERS
section below.

If you have a SCSI drive and your drive is not listed in xmcd's
configuration menu, you should first try configuring xmcd for another
drive model (of the same type) from the same manufacturer.  This would
usually give you a higher chance that the configuration is correct for
your drive, compared to selecting the "Other (SCSI)".

Please refer to the online xmcd "Configuration Guide" for help on
manually tuning configuration parameters.  This guide is available
at the xmcd web site: http://www.amb.org/xmcd/

See the "CD DRIVE NOTES" section below for information specific to
some of the drives.


DRIVE NOTES
-----------

The Chinon CDx-431 and CDx-435 drives do not support commands to
implement audio pause and resume operations.  Thus, these features
are non-functional when these drives are used with xmcd/cda.  The
CDx-525, CDx-535 and CDx-545 units do not have this limitation.

Pioneer DRM-604X units with revisions of the firmware prior to 2403
must be configured to operate in the SCSI-1 mode (DRM-600 emulation,
via back panel DIP switches), and xmcd/cda must be configured as if
it's operating a DRM-600.  Newer DRM-604X units (firmware version 2403
and later) can be set up to run in SCSI-2 mode, and xmcd/cda must be
set up accordingly.

The Plextor/Texel DM-x024 drive firmware should be version 1.10 or
later to avoid system lockups.  The DM-x028 drives do not have these
restrictions.

Some of the Sun CD-ROM drives (Sony OEM CDU-8012) have a firmware
problem that can lead to a temporary SCSI bus hang after ejecting
a CD with xmcd.  The workaround is to increase xmcd's
insertPollInterval configuration parameter to 4000 milliseconds or
more.  See the XMCDLIB/config/common.cfg file.

Due to a quirk with the drive, the Samsung SC-140B and SCR-3232
will stop after playing a track.  The workaround is to define a
play program of all tracks.

To avoid possible SCSI bus lock-up, never eject the disc using the
eject button on the front panel of the Hitachi SCSI-1 CD-ROM drives
while the unit is playing audio.  Use the software eject function of
xmcd/cda instead.  Also, you may wish to adjust the searchSkipBlocks
and searchPauseInterval configuration parameters to achieve the best
audio sampling effect during xmcd's REW and FF search operations.

Note that even if a CD drive is marketed as SCSI-2 compliant, it
still may not implement the full set of audio-related commands that
xmcd/cda requires.

SCSI drives must be connected to the system via a SCSI host adapter.
Your computer may have an embedded SCSI host adapter on the main board.
Otherwise a separate SCSI host adapter add-on board is required.  Be
sure that the SCSI host adapter is supported by your operating system.
Some x86 PC platforms use SCSI CD drives but they are connected to
sound cards that use a proprietary interface.  These may work if
xmcd/cda is configured to operate the unit as a non-SCSI drive (see
below).

Some older CD drives do not function well when the SCSI host adapter
board is configured to "synchronous negotiation" mode.  Examples of
these include certain NEC and Hitachi units.  If you experience
malfunctions with xmcd/cda, check the host adapter board configuration
and try disabling the synchronous mode.  On the Adaptec AHA-1542B, there
is a single jumper that controls whether synchronous negotiation is
enabled for all devices on the SCSI bus.  On more recent Adaptec SCSI
adapters, synchronous negotiation is configurable via the SCSISelect
setup program, and is settable on a per-ID basis.  Please consult your
SCSI host adapter board owner's manual for information.

Some CD drives take a long time to spin up.  If you encounter an error
when starting playback of a CD, you may need to adjust the
"spinUpInterval" parameter in your XMCDLIB/config/DEVICE file (where
DEVICE is the basename of the CD-ROM special file).


NON-SCSI DRIVES
---------------

Non-SCSI drives will work only on OS platforms that have appropriate
driver support for them.

Not all CD-ROM drivers are present in all versions of your OS.
Older versions may lack some of these.  Also, the specific CD
drives and features supported by these drivers are also version-
dependent.

See your OS documentation about configuring a kernel to use these
drivers.

Some CD drive/controller and OS driver combinations may not work
reliably.  Please refer to your OS documentation for the currently
supported list of drives and controllers.

Although the SunOS/Solaris/Linux ioctl method will also work with
many SCSI CD drives on the Linux, SunOS 4.1.x and Solaris platforms,
it offers less features than the SCSI pass-through method and is thus
not recommended for SCSI drives.  Likewise, the FreeBSD/NetBSD/OpenBSD
ioctl method should only be used with non-SCSI drives.

On QNX, the QNX ioctl method should be used for all CD drives
(including SCSI drives) due to the lack of a SCSI pass-through
mechanism.

The AIX IDE ioctl method is normally disabled.  You must explicitly
define -DAIX_IDE in the libdi_d directory when compiling xmcd/cda
to enable it.


MULTI-DISC CHANGERS
-------------------

Xmcd/cda supports the use of multi-disc changers and jukeboxes.
Depending upon the type of disc changer you have, you must select
one of the following methods to enable the disc change capability:

1. SCSI LUN addressing method:

    This is for SCSI changers that occupy one SCSI ID, but allows
    software to select the disc via the LUN (logical unit number)
    address.

    This method is used only for SCSI disc changers that support
    eight discs or less.

    In order for this method to work, your OS platform must support
    separate device nodes for each LUN of the device.  Thus, for
    a 6-disc changer, there must be six separate device nodes for
    the changer, one for each of the "slots".  Not all platforms
    support this.  On platforms that don't have separate nodes for
    each LUN, xmcd/cda will not be able to change discs.

    Xmcd has been tested to work with this type of SCSI CD changers
    on the following platforms:

	FreeBSD 3.x and later
	HP-UX 9.x and later
	IRIX 5.x and later
	Linux 2.x
	SCO UNIX 3.2v4.x and Open Server 5.x
	Solaris 2.x and later
	UnixWare (all versions), Caldera Open UNIX 8

    It may work on other platforms, but it is untested.  If you get
    this method to work on a platform not listed here, please e-mail
    the author at xmcd@amb.org.

    On Linux, your kernel's SCSI configuration must be set to probe
    all LUNs (i.e., CONFIG_SCSI_MULTI_LUN=y).  See the Linux kernel
    configuration documentation for details.

    On the HP-UX 9.x platforms, the minor device number should be
    0x201xy0, where x is the SCSI ID and y is the LUN number.
    This is documented incorrectly in some HP manuals.  Your device
    nodes should look something like this (this example has SCSI ID 6,
    6 discs):

    /dev/rdsk:
    crw-r--r--  root sys  7  0x201600   c201d6s0
    crw-r--r--  root sys  7  0x201610   c201d6s1
    crw-r--r--  root sys  7  0x201620   c201d6s2
    crw-r--r--  root sys  7  0x201630   c201d6s3
    crw-r--r--  root sys  7  0x201640   c201d6s4
    crw-r--r--  root sys  7  0x201650   c201d6s5

    On Solaris platforms, you must reconfigure the disk driver to
    probe all LUNs.  Depending on whether your system uses the "sd"
    or the "cmdk" disk driver, you must add lines to your
    /kernel/drv/sd.conf or /kernel/drv/cmdk.conf file to describe
    each of the LUNs of your CD changer.  Then, boot the system
    and pass the "-rv" boot flag at the bootloader prompt to
    regenerate the device tables (see boot(1M).  In addition, you
    will need to create symbolic links from the /dev/rdsk directory
    to the /devices hierarchy.  For example, on a Solaris 2.4 x86
    platform with the Adaptec AHA-1542 SCSI host adapter card, and
    a 6-disc CD changer at SCSI ID 6, LUNs 0 through 5, the links
    would look similar the following:

    /dev/rdsk:
    lrwxr-xr-x  root sys  c0t6d0s2 -> /devices/isa/aha@330,0/cmdk@6,0:c,raw
    lrwxr-xr-x  root sys  c0t6d1s2 -> /devices/isa/aha@330,0/cmdk@6,1:c,raw
    lrwxr-xr-x  root sys  c0t6d2s2 -> /devices/isa/aha@330,0/cmdk@6,2:c,raw
    lrwxr-xr-x  root sys  c0t6d3s2 -> /devices/isa/aha@330,0/cmdk@6,3:c,raw
    lrwxr-xr-x  root sys  c0t6d4s2 -> /devices/isa/aha@330,0/cmdk@6,4:c,raw
    lrwxr-xr-x  root sys  c0t6d5s2 -> /devices/isa/aha@330,0/cmdk@6,5:c,raw

    The c# number is the controller number, the t# number is the SCSI ID,
    the d# number is the LUN, and the s# is for the partition (slice),
    which should always be 2 for a CD-ROM.

    See your existing links for LUN 0 for guidance on how to create
    the other links.

    If you are running Solaris 2.4 or earlier, you must not use
    vold(1M) (Solaris volume management daemon) with SCSI CD changers.
    The vold on these older Solaris releases does not support non-zero
    LUN devices.  Edit your /etc/vold.conf file to comment out all
    lines pertaining to the CD-ROM device.  See the vold.conf(4) man
    page for details.

2. SCSI medium-changer method:

    This is for SCSI changers that occupy one SCSI ID, with the
    player on one LUN and a medium changer mechanism on another LUN.
    Another variation of this is to have the player on one SCSI ID
    and the medium changer mechanism on another SCSI ID.

    This scheme is used on SCSI CD jukeboxes that support more than
    eight discs.

    In order for this method to work, your OS platform must support
    a device node for the CD player as well as a separate device node
    for the medium changer mechanism.  Not all systems support this.
    On platforms that don't have a separate node for the medium changer,
    xmcd/cda will not be able to change discs.
    
    Platforms that support this interface includes the following:

	HP-UX 10.x and later
	IRIX 5.x and later
	Linux 2.x
	UnixWare 2.x and later, Caldera Open UNIX 8

    The medium changer device for each of these platforms are:

    Linux:
    /dev/sgX		where X is a letter or digit.  Typically X would
			correspond to the order that the device appears
			in the output of "cat /proc/scsi/scsi".

    UnixWare, Caldera Open UNIX:
    /dev/mc/mcX		where X is a digit corresponding to the medium
			changer's instance number.  See mc01(7).

    HP-UX:
    /dev/rscsi/cXXtYdZ	where XX is a controller number, Y is the
			SCSI ID and Z is the LUN number.  See
			scsi_ctl(7).

    This method currently is specifically coded for the Pioneer
    DRM-1804X 18-disc changer.  It may also work with other changers
    with a similar software interface.

    On Linux, your kernel's SCSI configuration must be set to probe
    all LUNs (i.e., CONFIG_SCSI_MULTI_LUN=y) if the drive and changer
    mechanism occupy different LUNs.  See the Linux kernel configuration
    documentation for details.

    Note that in order to use xmcd on a Linux kernel older than 2.0.30
    with the Pioneer DRM-1804X (or other CD changers with a medium changer
    device), you need to make a modification to the SCSI command timeout
    limit in your Linux SCSI driver.  Locate the following kernel source
    file:

        /usr/src/linux/drivers/scsi/scsi_ioctl.c

    Change the MAX_TIMEOUT definition from 9 seconds to at least 120
    seconds:

    Was:
    #define MAX_TIMEOUT  (9 * HZ)

    Change to:
    #define MAX_TIMEOUT  (120 * HZ)

    You then need to rebuild the kernel, install it and reboot to have
    it take effect.  See the /usr/src/linux/README file for details.

3. Non-SCSI OS ioctl method:

    This is for non-SCSI CD changers that have OS ioctl support in the
    CD-ROM driver for disc change operations.

    Currently, this method will work only on late versions of Linux
    kernel 2.0.x and Linux 2.1.x and later.  Moreover, it works
    only for IDE/ATAPI changers via the "ide-cd" driver.  See the
    /usr/src/linux/Documentation/cdrom/ide-cd file for details about
    which drives are supported.

    Due to problems in some versions of the ide-cd driver xmcd/cda
    may have problems changing discs when there are empty slots in
    the CD changer.


The changer control method is configured via the mediumChangeMethod,
numDiscs and deviceList parameters.  These are set up for you when
you install xmcd, or when you run the LIBDIR/xmcd/config/config.sh
script.

Note that if the "multi-play" option is enabled, xmcd/cda scans
each changer slot in order, after a disc is ejected.  This is in
support of changers that have individually eject-able discs.  On
changers that use a magazine (where all discs are ejected at once),
after the magazine is reinserted, xmcd may "land" on the first CD
that it detects while scanning.  This is not necessarily the first
disc in the magazine.  Also, on changers that have individually
eject-able slots, the "auto-eject on done" feature will only eject
the first disc when the "multi-play" mode is finished.

