1 .. SPDX-License-Identifier: GPL-2.0 2 3 ========================= 4 SCSI media changer driver 5 ========================= 6 7 This is a driver for SCSI Medium Changer devic 8 with "Type: Medium Changer" in /proc/scsi/scsi 9 10 This is for *real* Jukeboxes. It is *not* sup 11 common small CD-ROM changers, neither one-lun- 12 nor IDE drives. 13 14 Userland tools available from here: 15 http://linux.bytesex.org/misc/changer. 16 17 18 General Information 19 ------------------- 20 21 First some words about how changers work: A ch 22 more) SCSI ID's. One for the changer device wh 23 and one for the device which actually reads an 24 later may be anything, a MOD, a CD-ROM, a tape 25 changer device this is a "don't care", he *onl 26 media, nothing else. 27 28 29 The SCSI changer model is complex, compared to 30 changers. But it allows to handle nearly all p 31 4 different types of changer elements: 32 33 =============== ========================== 34 media transport this one shuffles around t 35 transport arm. Also known 36 storage a slot which can hold a me 37 import/export the same as above, but is 38 i.e. there the operator (y 39 fill in and remove media f 40 Sometimes named "mailslot" 41 data transfer this is the device which r 42 CD-ROM / Tape / whatever d 43 =============== ========================== 44 45 None of these is limited to one: A huge Jukebo 46 123 CD-ROM's, 5 CD-ROM readers (and therefore 47 and each CD-ROM) and 2 transport arms. No prob 48 49 50 How it is implemented 51 --------------------- 52 53 I implemented the driver as character device d 54 ioctl interface. Just grabbed NetBSD's header 55 other linux SCSI device drivers as starting po 56 should be source code compatible with NetBSD. 57 software (anybody knows ???) which supports a 58 it should work with this driver too. 59 60 Over time a few more ioctls where added, volum 61 wasn't covered by the NetBSD ioctl API. 62 63 64 Current State 65 ------------- 66 67 Support for more than one transport arm is not 68 nobody asked for it so far...). 69 70 I test and use the driver myself with a 35 slo 71 Grundig. I got some reports telling it works 72 (Exabyte, HP and DEC). Some People use this d 73 works fine with small (11 slots) and a huge (4 74 magneto-optical Jukebox. Probably with lots o 75 (but not all :-) people mail me only if it doe 76 77 I don't have any device lists, neither black-l 78 it is quite useless to ask me whenever a speci 79 not. In theory every changer device which sup 80 changer command set should work out-of-the-box 81 doesn't, it is a bug. Either within the drive 82 of the changer device. 83 84 85 Using it 86 -------- 87 88 This is a character device with major number i 89 "mknod /dev/sch0 c 86 0" to create the special 90 91 If the module finds the changer, it prints som 92 device [ try "dmesg" if you don't see anything 93 /proc/devices. If not.... some changers use I 94 device and ID ? / LUN 1 for the robot mechanis 95 look for LUNs other than 0 as default, because 96 broken devices. So you can try: 97 98 1) echo "scsi add-single-device 0 0 ID 1" > 99 (replace ID with the SCSI-ID of the devic 100 2) boot the kernel with "max_scsi_luns=1" on 101 (append="max_scsi_luns=1" in lilo.conf sh 102 103 104 Trouble? 105 -------- 106 107 If you insmod the driver with "insmod debug=1" 108 prints a lot of stuff to the syslog. Compilin 109 CONFIG_SCSI_CONSTANTS=y improves the quality o 110 because the kernel will translate the error co 111 strings then. 112 113 You can display these messages with the dmesg 114 logfiles). If you email me some question beca 115 driver, please include these messages. 116 117 118 Insmod options 119 -------------- 120 121 debug=0/1 122 Enable debug messages (see above, defa 123 124 verbose=0/1 125 Be verbose (default: 1). 126 127 init=0/1 128 Send INITIALIZE ELEMENT STATUS command 129 at insmod time (default: 1). 130 131 timeout_init=<seconds> 132 timeout for the INITIALIZE ELEMENT STA 133 (default: 3600). 134 135 timeout_move=<seconds> 136 timeout for all other commands (defaul 137 138 dt_id=<id1>,<id2>,... / dt_lun=<lun1>,<lun2>,. 139 These two allow to specify the SCSI ID 140 transfer elements. You likely don't n 141 should provide this information. But 142 143 vendor_firsts=, vendor_counts=, vendor_labels= 144 These insmod options can be used to te 145 are some vendor-specific element types 146 does this. Some jukeboxes have a prin 147 CDs, which is addressed as element 0xc 148 driver about this vendor-specific elem 149 150 $ insmod ch 151 vendor_firsts=0xc000 152 vendor_counts=1 153 vendor_labels=printer 154 155 All three insmod options accept up to 156 values, this way you can configure the 157 You likely need the SCSI specs for the 158 find the correct values as they are no 159 standard. 160 161 162 Credits 163 ------- 164 165 I wrote this driver using the famous mailing-p 166 method. With (more or less) help from: 167 168 - Daniel Moehwald <moehwald@hdg.de> 169 - Dane Jasper <dane@sonic.net> 170 - R. Scott Bailey <sbailey@dsddi.eds.co 171 - Jonathan Corbet <corbet@lwn.net> 172 173 Special thanks go to 174 175 - Martin Kuehne <martin.kuehne@bnbt.de> 176 177 for a old, second-hand (but full functional) c 178 to develop/test driver and tools now. 179 180 Have fun, 181 182 Gerd 183 184 Gerd Knorr <kraxel@bytesex.org>
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.