2 - copy_barcode was off by one.
3 - Replace garbled chars with \0 in case barcodes full of BS. Barcode
4 changes courtesy of dirkx at covalent dot net. Set __WEIRD_CHAR_SUPPRESS
5 to activate this code (it is not activated by default in -current.)
8 - Fix a very special case that ADIC loaders presented to element status
10 - Fix a buffer overflow w/some weird hardware, courtesy of Lars
12 - Make version number include a "rel" so that the rpm will overrride
13 a "pre" version's rpm, i.e., --version will say "mtx 1.2.16rel".
14 - Added TapeChanger Perl package for use with Amanda to the contrib
15 directory (see http://www.killfile.org/~tskirvin/software/tapechanger.html )
16 courtesy of Tim Skirvin.
17 - Fixed spec file that was broken by 1.2.15 :-(, courtesy of Kenneth
21 - Some Solaris fixes, courtesy of Matt Ward
22 - Fix URL in .spec file
25 - Fix so it'll work if 0 is result of SCSI open (e.g., in cron jobs on Linux)
26 - Move changelog to end of .spec file for easier reading
27 - Added a bit of text to beginning of COMPATIBILITY file
30 - Fixed some autoloader bugs w/autoloaders that don't report an arm.
31 - Fixed barcode backoff.
32 - Added "nobarcode" option
33 - Increased timeout for 'mtx inventory' to 30 minutes
34 (note: may increase this even more if needed, please let me know!)
35 - Shortened timeout for 'mtx inquiry' to 30 seconds
36 - tapeinfo now prints SCSI ID/LUN info if available (only on Linux at the
38 - update documentation w/new email addresses, updated compile directions,
42 - Fix FreeBSD compile bugs
43 - Fix SGI compile bugs
44 - Add HP/UX port (I hope!), courtesy of William Smith.
45 - Re-wrote ReadElementStatus to make work for %!@# brain dead firmware that
46 reports non-existent drives (I hope!). Also has side-effect of now working
47 with multiple-arm libraries (though it only sees first arm!).
48 - Cleaned up all -Wall messages.
49 - Cleaned up Linux Sparc, installs loaderinfo.1, courtesy of Matt Dainty.
50 - tapeinfo now reports status of CheckUnitReady.
51 - tapeinfo no longer puts out Block Position if CheckUnitReady says 'no'.
52 - tapeinfo now puts out Density Code and Medium Type/Not Loaded (modification
53 of patches sent in by Bob Rahe)
56 - Added a GNU autoconf Makefile.in (still provide a Makefile for your use)
57 *WARNING* autoconf is not yet working on all supported OS's! You may need
58 to do the old-fashioned 'edit Makefile' bit!
59 - Changed mtx.h and mtxl.c to include and define various things based upon
60 what features autoconf detected (e.g., if 'camlib.h', use FreeBSD-style
61 'cam', if 'scsi/sg.h' use Linux-style 'sg', etc.). If I ever port to a
62 Unix that has same SCSI interface as one of the existing ports, autoconf
63 will handle it without me having to add another set of #if's or #ifdefs.
64 - Went ahead and tossed mtxctl into contrib.
65 - In 'tapeinfo', skip \0 characters in serial numbers (some use \0
66 terminator, some do not, skip it if this one does).
67 - in 'tapeinfo', dump out the block position and (if at BOP) the "BOP: Yes"
68 flag. Also dump out other info such as block limits.
69 - Put file 'sparc-patch1' contributed by Chaskiel M Grundman, and applied
71 - Added tapeinfo.py to 'contrib' directory
72 - Updated mtx.py in 'contrib' directory
73 - Created 'loaderinfo' program to report some misc. info about loaders.
74 - Created 'scsitape' program so that I don't have to keep messing with
75 #@$%@! tape ioctls on the various Unixes that I'm porting tape software
76 to. (But see the warnings!).
77 - Applied the Solaris patch to the read_element_status command (sigh).
78 - Added timeout adjustment to the SCSI subsystem.
79 - WARNING: DIGITAL UNIX AND VMS ARE PROBABLY IRREPERABLY BROKEN, due to the
80 timeout changes to the SCSI subsystem. If anybody wishes to fix them,
81 feel free to send me patches.
82 - added contrib program "mtx-changer" (an Amanda tape changer script for
83 ?Solaris? that uses mtx rather than stc)
84 - Jiggered Linux SCSI module for smarter error conditions handling (there are
85 some error conditions that are normal for READ of tape drives).
86 - Added contrib program "config_sgen_solaris.sh" which should ease
87 setting up the 'sgen' driver on Solaris 8 (still no easy Solaris 7 or
91 - Added FAQ and COMPATIBILITY (feel free to send me patches to these files!)
93 - Added serial number to 'tapeinfo' output.
94 - Fixed stupid syntax error in mtx.c (compiled with gcc, not with others!)
95 - Fixed spec file for building rpms (maybe).
96 - Added an 'erase' command (undocumented) for use on Linux for doing
97 short erases on tapes (the Linux device driver defaults to a long erase).
98 - Made mtx inventory return an error code if the inventory
99 fails, so that we can wait for inventory to be completed at system
100 startup for libraries that auto-inventory (sigh).
103 - Added an 'eject' command that, if directed to a tape drive, will eject the
104 tape, and for some autoloaders, if directed to LUN 1, will eject the entire
106 - Fixed the 'transfer' command to be 1 based rather than 0 based (sigh)
107 - Now properly reports bar code for the tape that's in the tape drive.
108 - Added some miscellaneous Python and Perl scripts to 'contrib'. Thanks
109 to Frank Samuelson for the Perl scripts.
112 - Spec file has been changed to use the "portable" patch supplied by Red
113 Hat so it should work on Linux Alpha and Linux SPARC too... maybe...
114 - Now will accept 4-byte element status for most element types, despite fact
115 that these don't comply with SCSI standards :-(. This should make many
116 older changers work, including HP optical changers.
117 - Fixed PeripheralDeviceType table, courtesy of Rob Turk.
118 - Now looks for CHANGER environment variable if a device is not specified
119 on the command line. If can't find CHANGER, then tries TAPE environment
121 - Properly sets TransportElementAddress in the CDB for the MOVE MEDIUM command
122 with what was discovered via the READ_ELEMENT_STATUS command, rather
123 than setting them to zero (SCSI spec says that zero should be the default
124 arm, but at least one changer out there didn't like it).
125 - Added a '--version' command (sigh).
126 - Added an 'inventory' command for Breece Hill libraries that don't
127 automatically do an inventory at powerup.
130 - Fixed problem w/single drive Exabyte 220 reporting element status data for
132 - some general cleanup in the barcode fallback code (what a cruft!). Discovered
133 that ADIC DAT AUTOCHANGER does not work w/mtx because it produces
134 gibberish (will apparently only produce one element status page per request).
135 - Fixed the RPM .spec file to have updated file locations, doc locations.
136 - Fixed MoveMedium to say 'Output' for direction, to make it work with
138 - Some changes to the Solaris low-level module to report more errors (though
139 it still doesn't work as well as the Linux low-level module). Should now
140 work properly with Solaris 2.6/7/8. (Solaris changes courtesy of Richard
141 Fish of Enhanced Software Technologies).
144 - Fixed 'eepos' stuff to use | rather than || (whoops!)
145 - Accept a 4-byte element descriptor for the robot arm for certain older
149 - Added 'noattach' command. If on command line prior to other commands, forces
150 them to use the regular SCSI changer API rather than the _ATTACHED API,
151 no matter what the _ATTACHED bit in the Inquiry page said.
152 - Created 'tapeinfo' program.
155 - Major overhaul of element guts to dynamically allocate the arrays
156 using the result of a MODE_SENSE on the Element Address Assignment
157 Page. If mtx 1.2.3 works for you and mtx 1.2.4 does NOT work for you,
158 please un-comment the '#define DEBUG_MODE_SENSE' in file 'mtxl.c' and
159 EMAIL me the results.
162 - Fixed the source storage element number stuff (again, sigh)
163 - Because of above fix, 'next' etc. ought to work right again.
166 - Fixed that it was saying everything was an Import/Export element (oops!)
167 - Properly update the Import/Export element count.
170 - Now explicitly output that a Storage element is in fact an Import/Export
172 - Added 'transfer' command to transfer between two Storage elements (so that
173 you can get a tape to an Import/Export element.
174 - Added 'eepos' command for controlling tray retraction on the Breecehill
175 import/export trays. (Works with "load" and "unload" commands too, though
176 that is not documented on "mtx -h").
179 - Re-numbered now that Leonard has asked me to take over maintenance of the
181 - Temporarily treat Import/Export elements the same as Storage elements. Need
182 to fix this eventually so that the GUI knows what kind of element we're
184 - Removed quotes from the source element # to make it easier to parse
185 from Perl or Python (just do a split on spaces).
186 - Added sample program, 'mam2debug', showing how to use mtxl library for
187 your own programs (this happens to dump the Exabyte Mammoth 2's internal
188 debug buffer to a file, using the Mammoth2-specific SCSI commands to do so).
191 - Whoops, report logical rather than physical when I have to scan for
195 - Update comment to reflect mtxl 1.4.6 stuff :-).
196 - Fix the part of the code that scans for open slots as sources for media.
199 - Don't use _ATTACHED interface if it reports itself as a Medium Changer!
202 - Changed "whoops" compile error on Linux (teach me to release w/o testing on
203 the most popular platform!)
204 - Changed declarations to remove compile-time warnings.
207 - Added support for FreeBSD. (uses pass device, NOT native FreeBSD ch device).
208 - Change all 'int' DeviceFD to DEVICE_TYPE DeviceFD. Note that SGI and FreeBSD
209 use a struct * to access the CAM SCSI layer, rather than a file fd.
210 - Fixed goof where I'd hard-wired max # of elements to 127 for testing
211 purposes (it should be sum of MAX_STORAGE_ELEMENTS + MAX_TRANSFER_ELEMENTS
212 + MAX_TRANSPORT_ELEMENTS from mtx.h -- change those if you need more
213 elements, bearing in mind that the code for ReadElementStatus in
214 mtxl.c maxes out at 255 elements unless you fix that too).
215 - Cleaned some cruft out of the MOVE_MEDIUM code.
216 - Must have GNU Make to process Makefile. In reality, I don't know of
217 any machine where we voluntarily use the native 'make' command, because
218 a) there's a half dozen native 'make' all with their own perverted
219 syntaxes, and b) most of them are brain dead beyond belief.
222 - Do an INQUIRY prior to doing a MOVE_MEDIUM or READ_ELEMENT_STATUS so that I
223 can detect the MChanger bit and use MOVE_MEDIUM_ATTACHED or
224 READ_ELEMENT_STATUS_ATTACHED commands instead.
225 - Successfully tested with dual drives!
226 - first, next, last now working
228 - Created a 'make install', edit Makefile to alter destinations.
231 - Found the problem with the DAT changer! It was burping on the
232 'bar code' bit... so I intercept that sense key, re-issue w/out the
233 'bar code' bit, and success!
234 - Added a 'TODO' file...
237 - Added 'invert' qualifier to 'load' and 'unload' commands to invert
238 the media (for HP optical jukeboxes). Type './mtx' by itself to
240 - Figured out why my code wasn't properly detecting errors --
241 turns out the 'sg' device can return ok
242 status even when there is sense data to be reported!
243 - Still to fix: *still* isn't working right with my Seagate
244 6-tape DDS-4 DAT changer... also need to put the
245 second drive into the Exabyte 220 to make sure the dual-drive stuff
249 - Have now tested the barcode (volume tag) stuff. It works! (Well, there was
250 an index-by-one problem that I had to squash, but after that...)
251 - Changed to use SCSI Generic device API on Linux rather than
252 SCSI_IOCTL_SEND_COMMAND API, which cut things off at 4095 bytes on i386
254 - Added a bunch of debugging output that needs to be ripped out :-(.
255 Make sure you remove the -DDEBUG from the Makefile, and probably
256 -DLONG_PRINT_REQUEST_SENSE too (unless you LIKE sense results that make
258 - Still have annoying bug on Linux of only reading 1st 16 bytes of sense
259 data. Alas, this appears to be a problem in the Linux 2.2 kernel, not in
260 anything that we're doing :-(. Hmm... cdrecord has the same problem, Mr.
261 Schilling says he's been saying it's a problem since 1997. Sigh.
262 - Still need to test the dual-drive stuff!
265 - Hacked in the barcode (volume tag) stuff. NEED SOMEONE TO TEST
267 - started issuing redundant initial READ_ELEMENT_STATUS with Allocation Length
268 of 8 in order to get a BYTE_COUNT_OF_REPORT_AVAILABLE in order to calculate a
269 better Allocation Length for the "real" READ_ELEMENT_STATUS. Trying to send a
270 query to a small 6-tape changer with an Allocation Length suited for a
271 200-element tape library was resulting in some errors and lockups on the
272 part of the tape changer device.
273 - first, last, next, previous are STILL broken. Sorry :-(.
277 - Changed many output messages to make them more easily parsed by
278 scripts written in awk/perl/python
279 - Extracted out a library of SCSI tape library routines usable by "C"
280 programs (must be GPL'ed). Extensive re-arranging of code.
281 - Added support for multiple drives.
282 - Started adding support for tape changers that use the "MCHangr"
283 bit rather than a separate ID or LUN.
284 - Increased limits so we could deal with LARGE tape libraries.
285 - Started adding support for barcode readers in said tape libraries
286 - broke first, last, next, previous. Sorry :-(.
287 - Added ability to chain commands on command line. Thus could say 'mtx -f
288 /dev/sg4 unload 4 0 load 7 0' to unload a tape from drive 0 and load the
289 tape in slot 7 into drive 0.