About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / scsi / scsi-changer.txt

Custom Search

Based on kernel version 3.13. Page generated on 2014-01-20 22:04 EST.

2	README for the SCSI media changer driver
3	========================================
5	This is a driver for SCSI Medium Changer devices, which are listed
6	with "Type: Medium Changer" in /proc/scsi/scsi.
8	This is for *real* Jukeboxes.  It is *not* supported to work with
9	common small CD-ROM changers, neither one-lun-per-slot SCSI changers
10	nor IDE drives.
12	Userland tools available from here:
13		http://linux.bytesex.org/misc/changer.html
16	General Information
17	-------------------
19	First some words about how changers work: A changer has 2 (possibly
20	more) SCSI ID's. One for the changer device which controls the robot,
21	and one for the device which actually reads and writes the data. The
22	later may be anything, a MOD, a CD-ROM, a tape or whatever. For the
23	changer device this is a "don't care", he *only* shuffles around the
24	media, nothing else.
27	The SCSI changer model is complex, compared to - for example - IDE-CD
28	changers. But it allows to handle nearly all possible cases. It knows
29	4 different types of changer elements:
31	  media transport - this one shuffles around the media, i.e. the
32	                    transport arm.  Also known as "picker".
33	  storage         - a slot which can hold a media.
34	  import/export   - the same as above, but is accessible from outside,
35	                    i.e. there the operator (you !) can use this to
36	                    fill in and remove media from the changer.
37			    Sometimes named "mailslot".
38	  data transfer   - this is the device which reads/writes, i.e. the
39			    CD-ROM / Tape / whatever drive.
41	None of these is limited to one: A huge Jukebox could have slots for
42	123 CD-ROM's, 5 CD-ROM readers (and therefore 6 SCSI ID's: the changer
43	and each CD-ROM) and 2 transport arms. No problem to handle.
46	How it is implemented
47	---------------------
49	I implemented the driver as character device driver with a NetBSD-like
50	ioctl interface. Just grabbed NetBSD's header file and one of the
51	other linux SCSI device drivers as starting point. The interface
52	should be source code compatible with NetBSD. So if there is any
53	software (anybody knows ???) which supports a BSDish changer driver,
54	it should work with this driver too.
56	Over time a few more ioctls where added, volume tag support for example
57	wasn't covered by the NetBSD ioctl API.
60	Current State
61	-------------
63	Support for more than one transport arm is not implemented yet (and
64	nobody asked for it so far...).
66	I test and use the driver myself with a 35 slot cdrom jukebox from
67	Grundig.  I got some reports telling it works ok with tape autoloaders
68	(Exabyte, HP and DEC).  Some People use this driver with amanda.  It
69	works fine with small (11 slots) and a huge (4 MOs, 88 slots)
70	magneto-optical Jukebox.  Probably with lots of other changers too, most
71	(but not all :-) people mail me only if it does *not* work...
73	I don't have any device lists, neither black-list nor white-list.  Thus
74	it is quite useless to ask me whenever a specific device is supported or
75	not.  In theory every changer device which supports the SCSI-2 media
76	changer command set should work out-of-the-box with this driver.  If it
77	doesn't, it is a bug.  Either within the driver or within the firmware
78	of the changer device.
81	Using it
82	--------
84	This is a character device with major number is 86, so use
85	"mknod /dev/sch0 c 86 0" to create the special file for the driver.
87	If the module finds the changer, it prints some messages about the
88	device [ try "dmesg" if you don't see anything ] and should show up in
89	/proc/devices. If not....  some changers use ID ? / LUN 0 for the
90	device and ID ? / LUN 1 for the robot mechanism. But Linux does *not*
91	look for LUNs other than 0 as default, because there are too many
92	broken devices. So you can try:
94	  1) echo "scsi add-single-device 0 0 ID 1" > /proc/scsi/scsi
95	     (replace ID with the SCSI-ID of the device)
96	  2) boot the kernel with "max_scsi_luns=1" on the command line
97	     (append="max_scsi_luns=1" in lilo.conf should do the trick)
100	Trouble?
101	--------
103	If you insmod the driver with "insmod debug=1", it will be verbose and
104	prints a lot of stuff to the syslog.  Compiling the kernel with
105	CONFIG_SCSI_CONSTANTS=y improves the quality of the error messages a lot
106	because the kernel will translate the error codes into human-readable
107	strings then.
109	You can display these messages with the dmesg command (or check the
110	logfiles).  If you email me some question because of a problem with the
111	driver, please include these messages.
114	Insmod options
115	--------------
117	debug=0/1
118		Enable debug messages (see above, default: 0).
120	verbose=0/1
121		Be verbose (default: 1).
123	init=0/1
124		Send INITIALIZE ELEMENT STATUS command to the changer
125		at insmod time (default: 1).
127	timeout_init=<seconds>
128		timeout for the INITIALIZE ELEMENT STATUS command
129		(default: 3600).
131	timeout_move=<seconds>
132		timeout for all other commands (default: 120).
134	dt_id=<id1>,<id2>,...
135	dt_lun=<lun1>,<lun2>,...
136		These two allow to specify the SCSI ID and LUN for the data
137		transfer elements.  You likely don't need this as the jukebox
138		should provide this information.  But some devices don't ...
140	vendor_firsts=
141	vendor_counts=
142	vendor_labels=
143		These insmod options can be used to tell the driver that there
144		are some vendor-specific element types.  Grundig for example
145		does this.  Some jukeboxes have a printer to label fresh burned
146		CDs, which is addressed as element 0xc000 (type 5).  To tell the
147		driver about this vendor-specific element, use this:
148			$ insmod ch			\
149				vendor_firsts=0xc000	\
150				vendor_counts=1		\
151				vendor_labels=printer
152		All three insmod options accept up to four comma-separated
153		values, this way you can configure the element types 5-8.
154		You likely need the SCSI specs for the device in question to
155		find the correct values as they are not covered by the SCSI-2
156		standard.
159	Credits
160	-------
162	I wrote this driver using the famous mailing-patches-around-the-world
163	method.  With (more or less) help from:
165		Daniel Moehwald <moehwald@hdg.de>
166		Dane Jasper <dane@sonic.net>
167		R. Scott Bailey <sbailey@dsddi.eds.com>
168		Jonathan Corbet <corbet@lwn.net>
170	Special thanks go to
171		Martin Kuehne <martin.kuehne@bnbt.de>
172	for a old, second-hand (but full functional) cdrom jukebox which I use
173	to develop/test driver and tools now.
175	Have fun,
177	   Gerd
179	-- 
180	Gerd Knorr <kraxel@bytesex.org>
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.