123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- README for the SCSI media changer driver
- ========================================
- This is a driver for SCSI Medium Changer devices, which are listed
- with "Type: Medium Changer" in /proc/scsi/scsi.
- This is for *real* Jukeboxes. It is *not* supported to work with
- common small CD-ROM changers, neither one-lun-per-slot SCSI changers
- nor IDE drives.
- Userland tools available from here:
- http://linux.bytesex.org/misc/changer.html
- General Information
- -------------------
- First some words about how changers work: A changer has 2 (possibly
- more) SCSI ID's. One for the changer device which controls the robot,
- and one for the device which actually reads and writes the data. The
- later may be anything, a MOD, a CD-ROM, a tape or whatever. For the
- changer device this is a "don't care", he *only* shuffles around the
- media, nothing else.
- The SCSI changer model is complex, compared to - for example - IDE-CD
- changers. But it allows to handle nearly all possible cases. It knows
- 4 different types of changer elements:
- media transport - this one shuffles around the media, i.e. the
- transport arm. Also known as "picker".
- storage - a slot which can hold a media.
- import/export - the same as above, but is accessible from outside,
- i.e. there the operator (you !) can use this to
- fill in and remove media from the changer.
- Sometimes named "mailslot".
- data transfer - this is the device which reads/writes, i.e. the
- CD-ROM / Tape / whatever drive.
- None of these is limited to one: A huge Jukebox could have slots for
- 123 CD-ROM's, 5 CD-ROM readers (and therefore 6 SCSI ID's: the changer
- and each CD-ROM) and 2 transport arms. No problem to handle.
- How it is implemented
- ---------------------
- I implemented the driver as character device driver with a NetBSD-like
- ioctl interface. Just grabbed NetBSD's header file and one of the
- other linux SCSI device drivers as starting point. The interface
- should be source code compatible with NetBSD. So if there is any
- software (anybody knows ???) which supports a BSDish changer driver,
- it should work with this driver too.
- Over time a few more ioctls where added, volume tag support for example
- wasn't covered by the NetBSD ioctl API.
- Current State
- -------------
- Support for more than one transport arm is not implemented yet (and
- nobody asked for it so far...).
- I test and use the driver myself with a 35 slot cdrom jukebox from
- Grundig. I got some reports telling it works ok with tape autoloaders
- (Exabyte, HP and DEC). Some People use this driver with amanda. It
- works fine with small (11 slots) and a huge (4 MOs, 88 slots)
- magneto-optical Jukebox. Probably with lots of other changers too, most
- (but not all :-) people mail me only if it does *not* work...
- I don't have any device lists, neither black-list nor white-list. Thus
- it is quite useless to ask me whenever a specific device is supported or
- not. In theory every changer device which supports the SCSI-2 media
- changer command set should work out-of-the-box with this driver. If it
- doesn't, it is a bug. Either within the driver or within the firmware
- of the changer device.
- Using it
- --------
- This is a character device with major number is 86, so use
- "mknod /dev/sch0 c 86 0" to create the special file for the driver.
- If the module finds the changer, it prints some messages about the
- device [ try "dmesg" if you don't see anything ] and should show up in
- /proc/devices. If not.... some changers use ID ? / LUN 0 for the
- device and ID ? / LUN 1 for the robot mechanism. But Linux does *not*
- look for LUNs other than 0 as default, because there are too many
- broken devices. So you can try:
- 1) echo "scsi add-single-device 0 0 ID 1" > /proc/scsi/scsi
- (replace ID with the SCSI-ID of the device)
- 2) boot the kernel with "max_scsi_luns=1" on the command line
- (append="max_scsi_luns=1" in lilo.conf should do the trick)
- Trouble?
- --------
- If you insmod the driver with "insmod debug=1", it will be verbose and
- prints a lot of stuff to the syslog. Compiling the kernel with
- CONFIG_SCSI_CONSTANTS=y improves the quality of the error messages a lot
- because the kernel will translate the error codes into human-readable
- strings then.
- You can display these messages with the dmesg command (or check the
- logfiles). If you email me some question because of a problem with the
- driver, please include these messages.
- Insmod options
- --------------
- debug=0/1
- Enable debug messages (see above, default: 0).
- verbose=0/1
- Be verbose (default: 1).
- init=0/1
- Send INITIALIZE ELEMENT STATUS command to the changer
- at insmod time (default: 1).
- timeout_init=<seconds>
- timeout for the INITIALIZE ELEMENT STATUS command
- (default: 3600).
- timeout_move=<seconds>
- timeout for all other commands (default: 120).
- dt_id=<id1>,<id2>,...
- dt_lun=<lun1>,<lun2>,...
- These two allow to specify the SCSI ID and LUN for the data
- transfer elements. You likely don't need this as the jukebox
- should provide this information. But some devices don't ...
- vendor_firsts=
- vendor_counts=
- vendor_labels=
- These insmod options can be used to tell the driver that there
- are some vendor-specific element types. Grundig for example
- does this. Some jukeboxes have a printer to label fresh burned
- CDs, which is addressed as element 0xc000 (type 5). To tell the
- driver about this vendor-specific element, use this:
- $ insmod ch \
- vendor_firsts=0xc000 \
- vendor_counts=1 \
- vendor_labels=printer
- All three insmod options accept up to four comma-separated
- values, this way you can configure the element types 5-8.
- You likely need the SCSI specs for the device in question to
- find the correct values as they are not covered by the SCSI-2
- standard.
- Credits
- -------
- I wrote this driver using the famous mailing-patches-around-the-world
- method. With (more or less) help from:
- Daniel Moehwald <moehwald@hdg.de>
- Dane Jasper <dane@sonic.net>
- R. Scott Bailey <sbailey@dsddi.eds.com>
- Jonathan Corbet <corbet@lwn.net>
- Special thanks go to
- Martin Kuehne <martin.kuehne@bnbt.de>
- for a old, second-hand (but full functional) cdrom jukebox which I use
- to develop/test driver and tools now.
- Have fun,
- Gerd
- --
- Gerd Knorr <kraxel@bytesex.org>
|