NEW features of cdrtools-2.0: Please have a look at the German open Source Center BerliOS at www.berlios.de BerliOS will continue to support free hosting of cryptography projects even when US laws change and don't allow to host cryptography projects in the USA. Also look at sourcewell.berlios.de, the first Open Source announcement service that itself is implemented as Open Source project. ***************** Important news **************************** For the 'Slottable Source Plugin Module' SSPM Features read README.SSPM ***************** Please Test ********************************* All: - Now using the "Slottable Source" feature of the makefile system. This is the fist modular reusable portable makefile standard in the open source world. To see a new feature call: "make tinfo" - config.sub now recognises "parisc-unknown-linux-gnu" - Circumvent some problems with GCC-3.0 on Linux - Removed printf() definitions from schily.h to avoid type clashes - Support for SCO (Caldera) OpenUNIX (aka. UnixWare 8) - Better support for Darwin-1.3 and 1.4 This is: - enhanced makefile system - type casts needed for unusual types used on Darwin (e.g. sizeof() returns long!) - Schily support includefiles rearranged to make portability even easier. - mconfig.h now defines IS_SCHILY to signal users of the Schily makefilesystem, that the Schily portability environment is being used. - now includes the forgotten mkdep-sco.sh that helps to better work around the SCO C-compiler. - timedefs.h modified. Now the last schily portability support include file hast been reworked to make portability even much easier. - schily.h & standard.h have been modified to hopefully finally solve all type clash problems with size_t & spawn*() - Compile support for QNX Neutrino - Now we hopefully have floating point support for _all_ platforms even those without *cvt() and without __dtoa(). Thanks to a hint from Thomas Langer we now use strtod.c to gert a fallback __dtoa() - Added an autoconf test for rcmd() so cdrtools now should compile again on BeOS and AmigaOS where no rcmd() is present. - fixed fexec.c to make it compile ion QNX - Now the complete libschily is included although it it not needed for cdrtools. There are two reasons for doing this: - Cdrtools is _the_ program that is heavily tested on many different platforms, so I will get reports for compile problems this way. - cdrtools becomes a base docking platform for the SSPM system this way. Now any of the Schily tools may be included and compiled inside the base portability platform 'cdrtools'. - New supported architctures: s390-linux-cc.rul parisc-linux-cc.rul parisc64-linux-cc.rul - Large File support for IRIX-6.2 (added autoconf test for -n32 cc option) - Large File support for IRIX-6.5 now everything works correctly if the OS supports Large Files by default in 32 bit mode (uses fseeko()/ftello() if present. This could only be done by massively changing the autoconf code stolen from GNUtar. - Support for SGI IRIX platform ip17-irix - Support for SGI IRIX-6.5 - Try to support recent BeOS (again) - Workaround in libschily/comerr.c for the nonstandard big negative errno values on BeOS - libschily now includes floating point printf() for BeOS - fileluopen.c from libschily now compiles on BeOS (without O_NDELAY) - workaround for the nonstandard negative errno values on BeOS - Schily makefile RULES for AmigaOS added - getpagesize() emulation for BeOS to make cdda2wav compile on BeOS - New rule allows automatic fallback to GCC if the configured default compiler could not be found. - statdefs.h enhanced - Many corrections to give less warnings on SCO Openserver - Support for NT-5.1 (WIN XP) added os-cygwin_nt-5.1.id - VMS script build_all.com now includes astoll.c so compilation on VMS should work again. - New macros for max/min values of int*_t in utypes.h - Limit the different handling of packed bitfields for AIX to AIX CC. - Unfortunately fragementation of cdrecord has begun. I noticed this fact recently when people started to ask me senseless things which turned out to be a result of a modified cdrtools source that I have not ben aware of. One main goal of cdrtools is to provide a platform indepenant user interface which cannot be achieved if people change important parts os the user interface. For this reason, I changed the license in hope that this will help at least to keep the user interface the same on all platforms and on all distributions. Please keep in mind that fragmentation in many cases increases my workload. There is no real reason for a modification, and (even worse) the people who create modifications do not help to keep my workload low in order to help me (and Heiko and James) with the cdrtools project. People should rather contribute to the project. Cdrtools should be free and actively mantained in future. With increasing workload, I don't know how to do this. - Add hints that compiling on unknown platforms wil only work if "smake" is used. - Autoconf code for Large file support now handles Linux system include file bugs that prevented correct behavior on 64 Bit Linux systems. - Better autoconf code for the problems with mlock() & HP-UX-10.20 - Better autocheck code for available C-compilers on HP-UX Now even a fallback from GCC to CC works. - Some changes to make compilation on 64 bit systems more correct - Added support for GNU Hurd to the Schily Makefilesystem - Cast pointerdiffs to int for printf() %.*s format and/or include workarounds for 64 bit problems in this area. - Several modifications to make OS/2 work again (e.g. -lsocket added) - fexec.c now uses a configurable PATH environment separator to allow PATH lookup on OS/2 - A 20 year old extension has been removed from format.c This caused printf() to interpret %X as %lX. This caused noticable problems on IA-64. It should have created problems on True64 and on 64 bit Sparc programs too but was not directly visible due to a different stack content. - remove #elif to avoid a GCC-3.x warning - config.sub now knows about IA64 architecture - Makefilesystem now spports compiler specific optimization flags - Align_test.c now creates a better include file (using more () to make sure the compiler created correct code). - Makefilesystem changed $(MAKE) to "$(MAKE)" to allow spaces in pathnames - Correct autoconf test for broken OS like MAC OS X that do not allow local malloc() implementations due to linker bugs. - Add autoconf test for strange clock_t definition method on Linux - README.ATAPI enhanced for all platforms - README.ATAPI now contains a hint on how to use ATAPI drives on HP-UX-11.x - Support for FreeBSD on Ultrasparc added to the makefile system - *roff'd man pages in .../doc dir re-created - Try to work around a bug in OpenBSD. OpenBSD defines EOF in ctype.h but POSIX only mentions an EOF definition for stdio.h. If we include ctype.h bfore schily.h on OpenBSD while stdio.h has not been included, this will fail. /*--------------------------------------------------------------------------*/ Libparanoia (Ported by Jörg Schilling, originated by Monty xiphmont@mit.edu): - The paranoia code from cdparanoia (written by Monty xiphmont@mit.edu) has been converted into a portable library. /*--------------------------------------------------------------------------*/ Libedc (Optimized by Jörg Schilling, originated by Heiko Eißfeldt heiko@hexco.de): - Changed to allow compilation on K&R compilers too - Speedup by 300% The speedup is nearly processor independant. Pentium-233 2443 sectors/s 32x 333Mhz-UltraSparc-IIi 6402 sectors/s 85x 900Mhz-UltraSparc-III+ 22813 sectors/s 304x Athlon-1000 24378 sectors/s 325x Athlon-1700 40168 sectors/s 535x Depending on the speed of gettimeofday(), these numbers may be up to 5% too low. - Code is now put under GPL. /*--------------------------------------------------------------------------*/ Libscg: - Trying to add a workaround for just another bug in the sg driver in the Linux kernel. If a TIMEOUT occurs, the error code does not indicate a TIMEOUT. - Better scg_open() error messages when trying to do scanbus on Linux and no /dev/sg* or /dev/pg* could be opened. - Output Request Sense buffer with -debug when the USCSI interface is used on Solaris. - First attempt for support for the new IOKit SCSI interface on MaxOS X Darwin-1.4 and newer with much much help from Constantine Sapuntzakis Unfortunately there is not yet support for SCSI devices nor is there support for standard Bus,Target,Lun device namings. I hope that bot may be added in the future. Volunteers who like to help with the libscg interface stuff for Darwin-1.4 are welcome. - Try to make scsi-beos.c compile on new BeOS version 5 - First attempt to integrate the AmigaOS SCSI transport interface code from Thomas Langer - Massive modicifation of the support code for SCO OpenServer 5.x As the kernel implementation contains several bugs, the new code will by default not check for hard disks in scan mode. The code checks the following environment variables: "LIBSCG_SCAN_ALL" To force scanning for all SCSI targets. "LIBSCG_SCSIUSERCMD" use old SCSIUSERCMD ioctl() "LIBSCG_MAX_DMA" override MAX_DMA value, value must be number in kB "LIBSCG_ENABLE_USB" enable access of USB devices - Version -> 0.6 - Adding support for the CDROM_SEND_PACKET ioctl() from cdrom.c Thanks to Alexander Kern for the idea and first code fragments for supporting the CDROM_SEND_PACKET ioctl() from the cdrom.c kernel driver. Please note that this interface in principle is completely unneeded but the Linux kernel is just a cluster of code and does not support planned orthogonal interface systems. For this reason we need CDROM_SEND_PACKET in order to work around a bug in the linux kernel that prevents to use PCATA drives because the kernel panics if you try to put ide-scsi on top of the PCATA driver. The code is currently in "status nascendi" but usable with some trade offs. To use: call e.g. cdrecord -scanbus dev=ATAPI: cdrecord -dao -v speed=24 dev=ATAPI:0,0 .... Be careful! This code is only needed in order to be able to use PCATA CD-writers on notebooks because there is a severe kernel bug. Unfortunately, this bug causes the kernel to hang (and force you to reboot) if you try to call: cdrecord -scanbus without the dev=ATAPI: option. In this case cdrecord will hang infintely and unkillable in open("/dev/sg1", 2) => you need to reboot :-( Repeat by: Insert a PCATA CD-Writer in a Sony VAIO notebook and run cdrecord -scanbus. - Enhanced list of SCSI Error texts from SCSI standard from 29.5.2001 - New callback function to allow execption handling to be done after the current SCSI command did finish. - scsi-aix.c now uses UIntptr_t in alignement macro. - Some 64 bit casts in the USCSI code from scsi-sun.c For hints on the Linux Packet code in ide-cdrom.c read README.ATAPI - Introduce a workaround for a conceptional Bug in the Linux kernel SCSI implementation. Linux is unable to distinct between a target selection timeut (e.g. switched off target) and a command timeout (e.g. command needs more time than expected). If the detected command time is < 1 second, libscg will now assume a dead target. - Fix a bug with ATAPI in scsi-vms.c - now the SCSI status byte is OK Thanks To Eberhard Heuser - Allow up to 26 IDE controlers in scsi-vms.c - Thanks to Chip Dancy - Do not open all /dev/scg* devices on Solaris if not in Scanbus mode - Handle ENXIO in Solaris USCSI interface code as indicator for a switched off device. - Max DMA size for Linux ATAPI Packet interface code corrected. Max DMA is 128k-1 and not 128k. - Support for recently defined new SCSI target types found in SCSI standard. - New help system that lists all SCSI low level transports for a specific platform together with their properties. - Allow consistent usage of alternate SCSI transport layers. Now the Solaris USCSI implementation and the (SuSE) Linux ATA implementation behave similar and both allow dev= as well as dev=: for -scanbus, e.g. cdrecord dev=USCSI -scanbus cdrecord dev=USCSI: -scanbus cdrecord dev=ATAPI -scanbus cdrecord dev=ATAPI: -scanbus all work the same way. - Small change for Linux device initialization by request of Linus Torvalds The purpose of this change is to support a new SCSI transport interface for ATAPI in Linux that came up with the latest developer Linux kernels (e.g. Linux-2.5.43). This interface allows to send SCSI commands directly to ATAPI drives without using ide-scsi and sg, but it has several pitfalls. While Linux allows to use DMA when using ide-scsi and sg if the sector size is 2048 and the transfer buffer starts page aligned, the new direct interface never uses DMA (acording to Linus Torvalds). So if you write audio CDs or data CDs in RAW mode, there is no difference. If you write data CDs in TAO or DAO mode, using ide-scsi and sg allows much higher write speed. Note that this may change in future.... Notes for use: - You need to specify something like dev=/dev/hdc Note that this is unsupported by libscg. - As long as there is no safe way for libscg to find out early that this new interface is used, libscg may hang a bit on open. This is caused by the fact that libscg is forced to read from the open filedscriptor to clean up old Linux sg driver interfaces. This was never a problem with /dev/sg*, but when doing the same thing, this causes libscg to read content from /dev/hd* - There is (currently) no way for cdrecord to scan for ATAPI devices when using this interface. As long as this is true, you may want to prefer to use cdrecord dev=ATAPI: -scanbus and cdrecord dev=ATAPI:0,0 ... instead. - Fix scsi-unixware.c to allow multiple opens. - Fixed several typo's. - Avoid to read from the media (when using the new experimental Linux ATAPI transport) while trying to clear old sg driver status. - Woraround for Linux kernel design bug: CDROM_SEND_PACKET sets errno to EINVAL in case SCSI sense key is "Invalid command". /*--------------------------------------------------------------------------*/ Rscsi: - RSCSI now works if the target is a Win32 system. This is not done by changing rscsi.c but by fixing a bug in Cygwin! The fix to Cygwin's rshd is posted in http://sources.redhat.com/ml/cygwin-apps/2001-05/msg00000.html Thanks to egor duda NOTE that in a few weeks this patch will be integrated into Cygwin and cdrecord/RSCSI will work out of the box on a recent Cygwin release. - Now prints user ID & user Name into DEBUG file - Now using signal safe read/write functions. - Code now checks for HAVE_NETDB_H (added by request of "Thomas" to help with AmigaOS port) This should indicate whether there is support for rcmd() in the OS. - Make it compile on BeOS - changed because GNU Hurd has no MAXHOSTNAMELEN - Return "PIPE" for hostname comparison if called from e.g. 'sshd'. /*--------------------------------------------------------------------------*/ Cdrecord: - New option -overburn This option has been added as many people seem to be unabe to understand that they are going to write more than the official disk capacity from reading cdrecord's output. Oveburnung now is no more done by default! NOTE that there even are some drives that prevent you from writing exactly the official size and stop several hundreds of sectors before. - Do not print a warning for writing more than 90 minutes if the media is a DVD - Fix for a problem with setting high priority on Win32 systems. Thanks to egor duda - Sony MMC drives now work in -multi session mode. There was a bug in cdrecord that was accepted by all other drives. The bug did cause a temporary bad setup to the drive. - I hope that the 90 minute CD capacity warning now will finally disappear for DVD writers. - Old test code removed that prevented cdrecord from being able to write manually configured indices. Note that the index lists from the *.inf files with using the -useinfo option alway worked. - -force will force cdrecord to ingnore any failed forced OPC. currently this is only done if the drive does not support forced OPC. - Do forced OPC before blanking a CD-RW - Driveropts "burnproof" renamed to "burnfree". This has been done as this technology now appears in the MMC standard. - Cdrecord now shows whether BURN-Free is active. This makes sense as Ricoh's "Just-Link" is enabled by default. Unfortunately, the way "Just-link" is implemented is not compliant with the MMC standard. We will have to wait until I get the needed information from Ricoh. - Support for MMC RAW mode writing. This allows to do disk at once recording on Philips drives that do not support SAO. You may write audio tracks in RAW mode. There are some new and most likely transient options: -raw16 Write 2352 Bytes sectors + P+Q Subchannel -raw96r Write 2352 Bytes sectors + P+W Subchannel (R-W in raw mode) -raw96p Write 2352 Bytes sectors + P+W Subchannel (R-W in packed mode) Indices are fully supported in RAW mode. MCN & ISRC are not yet suported in RAW mode, they are silently discarded. I know that cdrecord currently does not work in RAW/R96P mode. It is not clear whether this is a bug in cdrecord or in the Plextor firmware as I did not yet found another drive that claimes to support RAW7R96P. If you find other problems in RAW mode or if you find new bugs introduced in old write modes, please send a bug report. - Cdrecord now checks the properties of the writer. If a specific write mode is not supported by the writer, cdrecord warns you and makes a suggestion for a similar alternate write mode. With the curent structure of cdrecord, it is not possible to silently e.g. change the write mode from -dao to -raw96r - MMC compliant drives are automatically scanned for supported write modes. This should help to make cdrecord work without manual static configuration. My hope is still to have no need to know all drive properties in advance, so new drives will continue to work as long as they are standard comliant enough for cdrecord. NOTE for GUI implementors: the line starting with the text: "Checking possible write modes:" will go away in the near future. The line starting with: "Supported modes:" will remain and should be checked for possible write modes. - Fixed a bug in the option checking that prevented to write data CD's at all. Now only "RAW data" CD's are flagged as expected. - Fixed a bug in the Firmware bug recognition system. This bug did prevent cdrecord to work with Philips drives when writing in RAW mode. - New options -copy & -nocopy to allow to modify the 'copy' bit in audio subchannel data. - -scms option added to the man page and online help. - New model to compute SCSI transfersizes - -xa1 -xa2 sector typedefinitions changed. - Debug messages while checking possible write modes of MMC compliant made optional. - RAW writing scatter sector function made more general - New functions to convert between 2448 and 2368 byte sectors NOTE: Read README.raw - add a forgotten if (xdebug) in drv_mmc.c. This caused a superfluous write mode debug message to be printed - do installation of exit handlers (to reset SCSI state) earlier - Cdrecord now does not exit with 0 anymore when interrupted with ^C during the waittime before starting to write. - First CD-Text support (can only copy CD-Text information from master disk) Writing of CD-Text is supported for all drives that support CD-Text in SAO write mode and for all drives that support to write in RAW/RAW96R mode (use -raw96r in this case). NOTE: Read README.cdtext - Circumvent a bug in the system include files from Linux that makes printf() a macro and prevented compilation with GCC-3.0 - Added some #include to substitute missing printf() definitions - SAO/R16 mode removed from tests, it may never occur. - Changed some .min defines in structs to .pmin to avoid K&R complier problems - better FIFO debug messages - New driver config table for Taiyo Yuden EW-50. This dive is like a Philips CDD-521 but has been reported to swab audio data. - rscsi client code now uses buffered read to speed up on Cygwin - rscsi client code now uses signal safe read/write functions - Cdrecod now does not open/close the tray anymore if the disk is going to be erased. - modify -version output if Clone writing support is present - A new driver has been added that first checks the media if the drive supports to write CD & DVD. - Behaviour of the function that reads fs= tsize= and similar corrected. - Modified driver interface for better DVD support - FIFO Code now checks for HAVE_FORK (added by request of "Thomas" to help with AmigaOS port) - Better messages when trying to write more than the amount of data that fits on a DVD. - The DVD driver now reports a DVD media back to the high level code. - correctly use the buffer capacity code from the driver instead of the MMC-2 read buffer cap code directly - Support for the unusual not ready error code of the CyberDrive CW038D - CD-Text Code now also accepts Text File without 4 byte Size header - CD-Text file read code now is able to do CRC error correction Note that only songle bit errors per 18 byte pack. - CD-text Autoring support: CD-text may now be based on fields found in the *.inf files created by cdda2wav. To create a CD with CD-Text based on information from freedb.org call: 1) cdda2wav -B -v255 -L 2) cdrecord {-dao!-raw96r} -v -useinfo -text *.wav CD-text TODO: - Check whether the *.inf files are all from the same CD and clear some CD-text fields that are only valid if they relate to one CD only. - Add some more fields (mainly a dficiency of cdda2wav) - Support multi language text - Support character coding other than ISO-9959-1 CD-text may be based on fields found in the *.inf files created by cdda2wav. NOTE: Read README.cdtext - better messages for CD manufacturer codes that are not in the latest free Orange forum table. - Default usage code is now only 6 lines so the error message does no longer scroll out the screen. If yu like to get the old long usage information, call cdrecord -help - move 'dd' like number conversion stuff into getnum.c - Allow the /etc/default/cdrecord parsing code to be used by readcd too (as documented in the man page) - First support for Plextor's VariRec feature in the PX-W4012 I am not sure about the final user interface. For now, call e.g. cdrecord speed=4 driveropts=varirec=-1 for all audio CDs. Allowed varirec parameters are -2, -1, 0, 1, 2 VariRec only works at write speed 4. - Print the actual current write speed in verbose mode. - DVD-R code (undisclosed) now supports: Vendor_info : 'MATSHITA' Identifikation : 'DVD-RAM LF-D310 ' Revision : 'A116' - Support for SCMS from *.inf files Note that you need to use cdda2wav/cdrecord that have fitting versions because of this change. Otherwise cdrecord may add SCMS copy protection. - RAW mode now honors COPY bit and SCMS coding. - Avoid coredump with "cdrecord textfile= non/existant ..." - Corrected printf() formats for verbose printing to hold enough space for media > 1 GB (DVD) - Corrected printf() formats to make the write speed non-jumping. - If called from a GUI, cdrecord now reads from "stderr" if the CD-input-data is from "stdin". If it turns out that stderr is not open for reading, cdrecord waits to receive a SIGUSR1 - Better printouts for the DISC-ids covered by the orange forum embargo. - DVD structure structure definition enhanced to reflect current standard. - new option gracetime= - Try to abort DAO recording with a flush_buffer() if ^C is hit. - Try to make cdrecord behave more polite for platforms (like Cygwin) that don't support large files when the DVD data to be written is read from stdin. mkisofs ... | cdrecord ... - will now work for DVDs on non large file OS - Call flush buffer in silent mode to avoid error messages with cdrecord -toc called on a CD-ROM drive. - Avoid core dump is a single .inf file is missing and -text option is used. - Data structures modified to allow new features in the future. - Fixed a bug that caused cdrecord to ignore escaped file type args if they looked like a valid option (e.g.): cdrecord dev=0,0 -dao -v -- speed=8 "speed=8" should be handled as if it was a filename but was skipped. - Print write mode when starting to write. I hope that this helps me to understand incorrect "bug reports" from lazy people who do not include their cdrecord command line. - Printing ATIP information is now caused by a separate (internal) flag and not ny a hack. - Do not allow to write to ultra low speed RW media if the drive is not able to write at 2x or 1x. This may be circumvented with -force. - Do not allow to write to high speed RW media if the drive is not a high speed RW drive. This may be circumvented with -force. - Data structures modified to allow new features in the future. Trying to make driver interface simpler and cleaner. This resulted in a major rewrite of the driver interface. - please test if multi session with TEAC CDR-50/CDR-55 still works. As a lot has been changed in the driver interface, please test if bugs have been introduced! - New test that prevents to write CD-RW media too slow - Display of current DVD write speed now correct and no more based on single speed CD but on single speed DVD. - Moving SAO/RAW start code from cdrecord.c into drv_mmc.c allows clean DVD-R/RW driver interface code. Now cdrecord -dao will work correctly (as expected) even for DVDs - speed= option no longer defaults to speed=1 Each driver now includes a default speed and a maximum speed. If the maximum speed in the driver is wrong, use -force to overwrite. Please send feedback if my assumptions on write speed are wrong: - No drive using the Philips CDD-521 command set is faster or slower than 2x - No drive using the Yamaha CDR-100 driver is faster than 4x No drive using the Yamaha CDR-100 driver is slower than 2x - The Tayo Yuden CW-50 is 2x - The Kodak PCD-600 is 6x - Abort when the last track # of a multi session disk would be > 99 - Data structures modified to allow new features in the future. - Better bessages for CD-RW where the speed ofthe media does not match the properties of the writer. - Avoid to reload media in -dummy RAW mode. - Correctly abort if there was a problem when writing CD-Text in the LEAD-IN. - Again: Data structures modified to allow new features in the future. This release uses the new data structurec to allow to write ISRC/MCN in RAW mode. - Fixed a bug that caused cdrecord to write a wrong relative time into the subchannel data when writing audio CDs in RAW mode. This affected the pregap sectors if pregap size was != 0. - Allow cdrecord to write ISRC & MCN even in RAW mode. - Allow Simulation driver cdr_simul and dvd_simul to simulate any write mode. - Simulation driver cdr_simul and dvd_simul changed so no reload on the real background drive occurs. - Since last release , the new data structures allow to write ISRC/MCN in RAW mode. This now makes RAW mode fully usable for audio CDs. NOTE: if you find any problems with CDs written in SAO mode, first try to write the same CD in RAW mode if your drive supports to write in RAW mode. Tere are a lot of drives that have rotten firmware and create broken CDs in DAO mode. - Support for Yahama Audio Master Quality Recording. This support is switched on via driveropts=audiomaster I am sorry, but I had to do major changes in the MMC driver in order to be able to support Audio Master. This may have affected all other driveropts= too. Please test and keep in mind that I like to have the mext major release in a few weeks. When audiomaster has been specified, BURN-Free recording is disabled and - as the visible size of the medium decreases - a second disk size check is done after Audio Master has been turned on. - man page enhanced according to new features - Short Usage funtion now includes a hint on how to obtain the list of possible driveropts= parameters - Include the tags "VARIREC ", "AUDIOMASTER ", "FORCESPEED " In the "Driver flags" line that is visible with cdrecord -checkdrive. - cdrecord driveropts=help now includes "varirec=" and "audiomaster" - Support for writing data sectors in RAW mode has been added to the GPL#ed version of cdrecord. Note that writing data sectors in RAW mode is a highly CPU intense task. For this reason, cdrecord first checks whether it would be possible to do the requested job reliably. If it is questionable whether the job could be done in the desired speed, cdrecord aborts with a related message. The max theoretical speed (not including the writing load) is printed in a new line starting with: "Encoding speed :". Cdrecord allows half of this speed. - Allow RAW writing of data sectors to work correctly without the need of specifying -data - Allow spaces as delimiters between different tags in a single line in the file /etc/default/cdrecord - Support for Ricoh (and others) Just Link This support is switched on via driveropts=burnfree Note that Just Link is by default swichted on in the drive but as Just Link may create CDs that are no 100% OK, cdrecord now by default switches it off. Now you definitely need to specify driveropts=burnfree to switch Just Link on again. If you call cdrecord dev=... -checkdrive you will see the TAG "BURNFREE" as a hint that either Burn-Proof or Just Link is supported. - "Turning .... " messages for drive special functiions are now printed to stdout - Limited display (once every 1 MB) of the drives internal buffer RAM fill ratio. - Display the minimal drive buffer fill ratio a the end of the write process. - Display number of predicted drive buffer underruns based on the fill ratio of the drive buffer (incremented if fill ratio is < 5%). - Display average write speed at the end of the write process. In dao mode, this includes the time needed to write the lead in and thus is not 100& correct (value is too low). - Display of the number of times the Buffer underrun protection has been active for drives where the manufacturer send me the needed information (Ricoh, Yamaha, Aopen). It may work for other drives too but there is no guarantee. - Fixed a bug in the driveropts= parsing routine. - New driveropts= option "forcespeed". Use with extreme care as this will force several drives ((Ricoh, Yamaha, Aopen, ...) to write with the selected high speed although the mediaum is too bad for this operation. - New driveropts= option "tattooinfo". Use together with -checkrive to retrieve the information about the picture size that will fit. The result will be someting like: DiskT@2 inner r: 265 DiskT@2 outer r: 583 DiskT@2 image size: 3744 x 318 pixel. - New driveropts= option "tattoofile=". Use together with -checkrive to write an image of the right size to disk. Read README.DiskT@2 - Rearrange the order of the new statistics printing - Allow several of the new statistics to be printed even if cdrecord aborts due to an error. - Let the old Philips drive use the common CD media 'reload' function. - Try to find out if a drive is MMC, MMC-2 or MMC-3 compliant. - see cdrecord -checkdrive - Suppress printing oof the average write speed if the size of the tracks is not known prior to start CD writing - ATIP printing (cdrecord -atip) enhanced to support Ultra high speed CD-RW media. - Check whether somebody likes to write a Ultra high speed CD-RW on an improper writer - Print MMC conformance level of the drive based on content of SCSI mode page 2A. - Print more information for MMC-2 & MMC-3 drives with cdrecord -prcap - The new true CAV Plexwriter 482448 is now supported. Please note that it is not easy to write at 48x. You definitely need a correct DMA setup to optimal values. Also note switching on Burn-Proof will reduce the max speed to 40x so it may be that you don't need Burn-Proof if you simply reduce speed to 40x manually - make sure that using both -copy and -useinfo will not result in unclear state Instead the content of the *.inf files will be used - Simulation driver (cdr_simul / dvd_simul) now uses correct speed ratio for DVDs - Simulation driver now supports fake "Next writable address" function. - On Linux usleep() is very unacurate, meter the real sleep time and cumulate a correction value. This allows the simulation driver to simulate the correct write speed. - Added a note to Heiko Eißfeldt's libedc when printing RAW encoding speed - Limit gracetime to 999 seconds and make output correct even for times > 9 seconds. - Corrected a bug in the MMC driver that caused cdrecord to use the wrong place for current speed when doing MMC/MMC-3 dependant stuff - cdrecord -prcap will now use the same format for MMC & MMC-3 drives rsulting in a better readability. - Don't print write time statistics if writing did not yet start - Try to handle drives that don't support to write at speed 1 but will fail if you try to call cdrecord speed=1 ... - New option -immed tells cdrecord to set the SCSI "IMMED" flag in certain commands. This option is not needed if your PC has been configured correctly. However, ATAPI drives usually cannnot do disconnect/reconnect. As a result, the PC may hang with long lasting commands if the CD-writer has been connected to the same IDE cable as the harddisk. A correct solution would be to set up a correct cabling but there seem to be notebooks around that have been set up the wrong way by the manufacturer. As it is impossible to fix this problem in notebooks, -immed has been added. Use this option with care and do not expect cdrecord to work correctly if it has been called with -immed. - -force will not completely removeany speed restrictions for writing in RAW mode. Instead, only the speed that a single CPU allows will be permitted by cdrecord. This still has a high potential for a buffer underrun. By default cdrecord still is limited to half the encoding speed that a single CPU allows. Even this may result in a buffer underrun on Linux as Linux does not use DMA for IDE when the sector size is != 2048 bytes which is true in RAW write mode. - If the environment variable "CDR_FORCERAWSPEED" is set, this will have the same results for RAW speed as using -force. However, -force has more general effects and should be avoided. - Fixed a bug in fifo.c introduced with the driver interface change. Now cdrecord compiles again on VMS (without FIFO). Thanks to Eberhard Heuser. - Allow cdrecord to compile without libedc Thanks to Eberhard Heuser. - Run read buffer capacity in silent mode. This is needed because drives with buggy firmware like the CW-7585 did cause hundreds of "command sequence erorrs" to be emmited when trying to read the current drive buffer fill ratio. - Fixed man page to correctly call SAO mode SAO and not DAO. - Encoding speed is contend dependant. Initalize test buffer before doing a libedc speed test to make the result independant from grabage on the stack. - Support for libscg help system - Warn to use cdrecord blank=all if a drive rejects cdrecord blank=fast - Fixed a bug that became obvious with Yamaha AudioMaster mode and CD-Text The problem was caused by the fact that cdrecord did not allow to overwrite the lead in start time in cdrecord's internal data structures. - Fixed a bug with recognition of complete disks that came up after cdrecord did allow to deal with >= 90 minute CD's. - Changed Text "BURN-Free was not used" to "BURN-Free was never needed" because people did believe that the old text means that Burn-Proof has been disabled. - Man page now includes a hint that padsize is always using 2048 as sector size. - Fixed a bug with padsize=xxx if sector size was not 2048 bytes. Cdrecord in this case did just divide the number of pad bytes by the number of bytes in an output sized sector (e.g. 2448 or 2352 bytes). This did result in a too low number of padding sectors. The fix caused a complete rewrite of the pad size handling. - Treat packet mode similar to normal writing: Print Drive buffer fill ratio and current write speed. - Treat padding similar to normal writing: Print Drive buffer fill ratio and current write speed. - Make verbose printing consistent and non-jumping - A new experimental feature of the -immed flag is to tell cdrecord to try to wait short times wile writing to the media. This is expected to free the IDE bus if the CD/DVD writer and the data source are connected to the same IDE cable. In this case, the CD/DVD writer would otherwise usually block the IDE bus for nearly all the time making it impossible to fetch data from the source drive. As this is an experimental feature, I would like to get feedback. - #ifdef _POSIX_MEMLOCK/_POSIX_PRIORITY_SCHEDULING Tests now POSIX 2001 compliant - Do not try to close fd if running on an OS that does not use an fd to mmap() chared memory from anonymous pages. - Print Orange Forum embargo warning only if ATIP minutes == 97 because some DVD writer return junk with read ATIP - New option minbuf= to choose the mininum drive buffer fill ratio for the ATAPI wait option that is intended to forcibly free the IDE bus to avoid buffer underruns with bad HW configurations. The permitted range is 25..95 for 25%..95% buffer fill ratio. - minbuf= may switch on the ATAPI wait option without enabling the SCSI Immed option. - Forcibly switch on -v for now if the ATAPI wait option has been selected. This is needed because due to a bug, this option will not work without -v - Make FIFO code work on AmigaOS For Yamaha Disk Tatoo features read README.DiskT@2 /*--------------------------------------------------------------------------*/ Cdda2wav (By Heiko Eißfeldt heiko@hexco.de): - Changes to make cdda2wav compile better on Alpha/True64 - Restructured to better use the schily makefile portability structures. - Changed handling of Table of contents. Now the more informative methods of Read full toc are being used in favor to the old SCSI readtoc command. For Sony methods, the fallback is the old method. The new methods are available on MMC drives and modern drives with Sony command sets. It should enhance access to very weird multi session cds. ************** NOTE: If your drive still has problems to copy such non-CD's, there is a simple hack to allow the disk to be copied on all drives: Use a (black) whiteboard pen (non-permanent) and paint on the space directly outside the visible ring that is in the middle of the non-CD. This is the space where the broken TOC from the second session is located. After doing the copy please return the disk to the dealer and tell the dealer that this is broken goods. This is the only way to stop the big groups to defraud the customers. ************* - Temporary hack to fix a bug in the ISRC code that caused the ISRC string to be shortened by one character. - fixed ioctl handling of toc entries - checked ISRC retrieval (MMC + Plextor) - more checking for weird CDs with wrong track types - bugfix in setuid.c - read full toc method extended to a data track in the second session for cd-extra/enhanced cd recognition - if the tracks in the TOC are labelled as data, this is checked and corrected if untrue - show cd text disc identification, if one exist - a new perl script to generate a binary cdtext file for use with cdrecord. This is currently very simple, but it enables you to create cd-text enriched copies from non cd-text originals. For a hint how to use the new perl script see the CD-text usage notes above. - New option -L to ask freedb.freedb.org for CDDB information. This alllows to automatically create CD-Text CDs. - correct TOC endianess for FreeBSD ioctl interface. - Fixed a bug that caused cdda2wav to dump core with certain CD-Text data. - new option -L changed. Now a numerical parameter (0 or 1) defines the handling of multiple cddbp entries. 0 enters user interactive mode. 1 take the first entry unconditionally. I still need a reasonable way for gui interaction in this case! Proposals are welcome. - made cddbp handling for mixed mode cds more robust. It is unclear yet, if data tracks have to be included in the query. Anybody knows the definitive answer? - Better TOC ADDR/CRTL (red book) handling - Better method to scan for indices. - Support for SCMS in *.inf files - Better SUID/SGID handling - new script cddda2ogg - bugfix deemphasizing (thanks to Klaus Wolterec) - bugfix rounding error (creation of info files) - added AlbumPerformer entry in info files - integration of Monty's libparanoia - switch to Jörgs getargs option handling - Fix some bugs with option parsing introduced with the new option parsing using getargs() - New option -version to make cdrtools behave similar - New option paraopts=opts for paranoia options. - Print Paranoia statistics result at end of every track. - prepare for better recording of discs with illegal TOCs - prepare for non-english cd_text languages - rewrite of the TOC handling code (now multisession capable and much more robust) - add a fallback method (shmat()) for failed mmap() - linux bug workaround: open() sound device does block when device is busy. - several code cleanups, some 64-bit portability bugfixes - Fixed shell script 'cdda2mp3.new' to correctly use "#!/bin/sh" - Fixed a bug (introduced while converting to getargs()) that caused cdda2wav to dump core on OS that implement read only text correctly like Solaris does) if compled with gcc or Sun CC COPTX=-xstrconst - Remove old unused getopt() code. - Check DMA residual count - FreeBSD cooked ioctl() Byte swapping now finally OK? - Fixed a bug that caused cdda2wav to return wrong byteorder on Big endian machines if -paranoia has been specified - fix several CDDB query bugs - support CDDBP protocol 5 - customizable CDDBP server and port settings. - Fixed a bug in the paranoia calling code that caused cdda2wav to try to access one sector too far on the media if in paranoia mode. - Allow again compilation on FreeBSD - bugfix for CD Extra, when copyright messages were present - patch from Kyle to make CD extra handling more robust - bugfix for wrong warning message 'no generation of info files' due to incomplete length - new verbose suboptions. Strings will finally replace the tedious binary masks. For script compatibility the special form of -v255 will be recognized for some releases. -vhelp will show the new strings. - reworked the toc display code to make it more orthogonal. - changed option 'speed-select' to 'speed' for better interoperability - Temporary added -v for compatibility with old GUI programs. Note: -v is outdated and will be removed soon. - Implement a temporary compatibility bug for the -v option. - Support for libscg help system - Man page fixed - Fix for an uninitialized variable - New exit codes for xcdroast - Fix for a CDDB bug: need to use lead out start for play time - Fix for a CDDB bug: Allow whitepsace in Genre - Fix for a CDDB bug: need to count data tracks too /*--------------------------------------------------------------------------*/ Readcd: - better error recovery with -noerror - error handling increased - Handle signals and other aborts by restoring old drive state - Set PF bit with mode select. - New option -quiet to suppress primary SCSI error messages in read CD error handling This are the messages that are printed before entering the retry mode. - Secondary SCSI error messages are now suppressed by default, they may be turned on again with -verbose This are the messages that are printed in -noerror retry mode. - Better handling of C2 scans on unreadable data disks. - use comerrno() instead of comerr() if the drive is not ready as errno is not valid after that test. - Enhanced output for C2 error scan. - Now use /etc/default/cdrecord as documented in the man page. - Better behavior with extreme badly readable media. - List number of completely unreadable sectors in addition to the C2 error count. - Man page updated to contain all options - New option speed= to allow reading at slower speed and avoid read error caused by vibrations of the media. - added new option -overhead to meter SCSI command execution overhead. /*--------------------------------------------------------------------------*/ Scgcheck: - Fixed Makefile so scgcheck now compiles on FreeBSD /*--------------------------------------------------------------------------*/ Mkisofs (By Jörg Schilling and James Pearson j.pearson@ge.ucl.ac.uk): - Man page updated and corrected. - Try to avoid the C-compiler warnings for getopt.c that are caused by the non-confirming way of hacking used by FSF people - isoinfo now corectly displays file with filesize > 1 GB - isoinfo now implements a new option -s that displays the size of the files in multiples of the sector size (2048 Bytes) - libhfs_iso reworked to use timedefs.h from schily portability support. - Better error messages for ISO and Rock Ridge directory sort problems - Preserves HFS file dates for AppleDouble, AppleSingle and NetaTalk files - Fixed a problem from an uninitialized variable in desktop.c that caused random effects in Apple CD's - better documentation for README.sort/README.hide from James Pearson - Fixed a bug in sort code that caused the compare function to behave symmetric when called c(a,b) vs. c(b,a) - First UDF support via -udf option - thanks to Ben Rudiak-Gould. Note that the UDF support is not what you might indend. It is currently wired to the Joliet tree which is a bad idea. It also does not yet support Symbolic Links, user ID's and similar. - Write messages with more correct size names for the floppy eltorito boot images - Added a missing prototype in getopt.c - isodump.c isoinfo.c isovfy.c: Correctly handle symlinks use offsetof(struct iso_directory_record, name[0]) instead of sizeof(struct iso_directory_record) - sizeof(idr->name) - Fixed a check in the Apple HFS code that used strcmp for data that could contain null bytes. - Introduced many casts to enhance portability. This was needed for GNU fnmatch.c and the HFS support lib libhfs_iso - Use Protoyped function definitions for hash.c to allow old UNIX variants where sizeof(dev_t) is < sizeof(int) - Fixed a check in the Apple HFS code that used strcmp for data that could contain null bytes. - Introduced many casts to enhance portability. This was needed for GNU fnmatch.c and the HFS support lib libhfs_iso - Use Protoyped function definitions for hash.c to allow old UNIX variants where sizeof(dev_t) is < sizeof(int) - Support generic boot code if session does not start at sector 0. - Fixed a minor bug with HFS labels & multi-session Thanks to James Pearson - Only print a short Usage if mkisofs detected a usage error. - -z option now working to create CDs in a format with Linux proprietary Rock Ridge extensions for transparent compression. This is a patch from H.P. Anvin. It makes only sense with Linux-2.4.14 or later. - New option -debug - Correctly use stat()/lstat() with graft points - Fixed a bug with escape character handling in graft point handling. - Make the graft point a directory if the file it should point to is a directory. - Correctly handle non-canonical filenames with graft points. .////././///test=OBJ/sparc-sunos5-cc/ will now work correctly and not result in a corrupted ISO-Filesystem. - Canonicalize graft points so commands like: mkisofs -graft-points /a/b/././//=some_dir and mkisofs -graft-points /a/b/../c/=some_dir will not cause broken ISO images anymore. - Avoid unwanted information in debug information on disk. - Allow the -sort option to work with the Eltorito Boot Catalogue - Allow '-' to be part of the ISO-9660 filename if -no-iso-translate has been specified. Thanks for this hint from Georgy Salnikov (sge@nmr.nioch.nsc.ru) from Novosibirsk, Russia. - Try to avoid an integer overflow with the -C option and DVDs - Try to fix (very old) rotten code in various files that did cause integer overflows for files > 2 GB - 2kB. Inconsistent use of (always diferent) hand crufted code using 2048, 2047, ... instead of SECTOR_SIZE, ISO_ROUND_UP(), ... Note that this is not only of interest for DVDs as mkisofs could believe that > 2 GB of data would fit on a CD. - New code to print file type names. - Some more changes to reduce the probability of integer overflows in size computations. - Fixed a bug in the code that removes sensitive information from the command line. - Add text strings with descritpive text to the output_fragment structures - verbose > 1 (use -v) writes debug info for output fragments. This uses the new strings introduced with the last version. - isoinfo now uses getargs() and includes -version and -help options. - isoinfo now is able to find out that Joliet information is present if the disk contains illegal Joliet UNICODE escape code. This seem to happen with disks written with Adaptecs programs. - isoinfo has new option -debug that prints more information from the Primary volume descriptor. - Support for Apple HFS on Mac OS X Thanks to James Pearson. - Support for more then 65535 directories as only the parent entries need to fit into the path tables. - Full DVD-Video support thanks to Olaf Beck - olaf_sc@yahoo.com - Avoid a C-compler warning caused by mkisofs.h - Fixed a bug in the DEBUG code from the DVD-Video enhancements - Allow symlink targets to be up to 1024 bytes - devdump/isodump/isovfy now use getallargs() and implement -help/-version - If UDF but no Joliet is used, UDF filenames may be 255 chars long. Note that this is still hack. - From James: New option -joliet-long to allow 103 UNICODE characters with Joliet. This is not Joliet compliant but several other programs also create long Joliet names. - Fixed a minor C non-compliance in ifo_read.c - Allow symlink targets to be up to 1024 bytes - devdump/isodump/isovfy now use getallargs() and implement -help/-version - If UDF but no Joliet is used, UDF filenames may be 255 chars long. Note that this is still hack. - From James: New option -joliet-long to allow 103 UNICODE characters with Joliet. This is not Joliet compliant but several other programs also create long Joliet names. - Correct a minor problem with K&R compilers for the programs in mkisofs/diag/ - Make fire PATH_MAX is defined in isoinfo.c too. - Make sure UDF directory permissions include 'execute permission'. - A patch from James that make mkisofs able to create a HFS volume < 4 GB. - Support for MS code page 1250 (Slavic/Central Europe) added. Thanks to Petr Balas petr@balas.cz - A patch from James that make mkisofs able to create a HFS volume > 4 GB. - A new option -hfs-parms for better HFS support for HFS volumes > 4 GB from James Pearson - Fixed several typos in the man page and the source - Belly based speudo fix for a problem with mkisofs -f (follow) and symlinks to directories where directory content was missing with the old version. The new version is most likely better and we (James and I) could not find problems with the new version. - Make "HFS_TYPE" and "HFS_CREATOR" work as documented in ~/.mkisofsrc - Fixed a small typo in isofinfo.c - As mkisofs -f has bugs that cannot be fixed for this release, I decided to mark the '-f' Option as non-functional. People who use it will be warned that it does not work correctly. - Sort VIDEO_TS.IFO to be the first entry in VIDEO_TS/ woth -dvd-video - Disable Joliet if -dvd-video has been specified. This needs to be done to allow the change above. - Correctly handle files > 1GB on the UDF filesystem. Thanks to Wei DING for the patch. - Add support for Code Page 1251 - Koi8-u added to libunls - Fix a nasty bug in the UDF handling part that caused mkisofs to create completely broken filesystem images if directories have been nested deeper than 8 and -D has not been specified. - Include a new piece of code that causes mkisofs to abort with an error message if it turns out that the block numbers estimated during the sizing phase do not match the block numbers in the write phase. - Enabled a piece of code that has been introduced 2 years ago and that causes mkisofs to prevent deep directory relocation if Rock Ridge has not been spacified. If you like mkisofs not to omit the part of the directory tree that is nested too deep, specify either -R, -r or -D. TODO: - read Joliet filenames with multi-session if no TRANS.TBL or RR is present. I am looking for a volouteer for this task: Peter Berendi announced that he likes to be the volounteer for this task. Unfortunately, I did no hear again from him, but I got a proposal from "Krisztian Gede" who also likes to do the job. Note that this can never be 100% correct as there is no relation between the names on the master (UNIX) filesystem, the ISO-9660 names and the Joliet names. Only the Rock Ridge names are untranslated with respect to the original files on the master (UNIX) filesystem. - implement Yellow book compliant XA extended dir attributes - add libecc/edc for CDI and similar. This may not be needed if we ise VCDimager and recent cdrecord versions. CYGWIN NT-4.0 NOTES: To compile on Cygwin32, get Cygwin and install it. For more information read README.win32 The files are located on: ftp://ftp.berlios.de/pub/cdrecord/alpha ... NOTE: These tar archives are 100% ansi compatible. Solaris 2.x tar and GNU tar may get some minor trouble. WARNING: Do not use 'mc' to extract the tar file! All mc versions before 4.0.14 cannot extract symbolic links correctly. WARNING: Do not use 'winzip' to extract the tar file! Winzip cannot extract symbolic links correctly. Joerg