version 0.4 ( 2008 - September - 5 ) ======================================== *odman.c: - Optimized the transfer rate test, enhanced the transfer rate test outputs. (Now only one line is used for all the real time output (data read, speed in X . . .) this eliminates the hard tabs and the cursor hidings) - ODMan now displays the elapsed CPU time when the transfer rate test is finished. (useful to test with different option combinations, like direct IO, or different block sizes) - ODMan now displays with every command execution the target drive manufacturer and model. - Fixed a bug for 64 bit architectures that displayed 0 bytes for the medium sector size in the transfer rate test, medium information field. - Skip completely disk spin-up if the user specifies 0 as the spin up time argument - Fixed a bug in the low level command processing mechanism: If not a system (SG_IO or CDROM_SEND_PACKE ioctl) but a device error occurred, that was treated as a successful command execution. - enhanced, corrected the error message outputs, and the error detection mechanism, with one word major overhaul in those parts of the program - better media detection at the transfer rate test, low level commands implemented instead of the standard cdrom ioctl's. - added a -q (--quiet) option to suppress usually displayed output messages. The error messages are still displayed even if --quiet is specified - modified the debug output for low level commands. Now SCSI, host and driver status is displayed only if an error occurs - Fixed a bug related to read only devices. ODMan tried to open devices as readable and writable. If a device was read only the program exited with error. This was fixed and ODMan handles correctly read only devices too. *mmc.c/mmc.h: - stripped from odman.c a new source file for the multi-media commands, SG_IO and other low level stuff version 0.3 ( 11-July-2008 ) ======================================== *odman.1: - Corrected, rewrote some parts of the manual page *odman.c: - Added the SG_IO ioctl support for low level device commands. ODman checks if the SG_IO ioctl is usable for the target device. If the SG_IO is usable then commands are handled by the SCSI subsystem, or by the block subsystem if you kernel is at least 2.6.0 and if a block device is used, if not then the legacy CDROM_SEND_PACKET ioctl is used - Added a --debug option to display every low level command as it is sent and as it is returned. The SCSI status, driver status, host status bytes are displayed. If an error occurs then the sense data buffer is displayed (sense key, ASC, ASCQ). - Added a trailing v: before every verbose message output and a d: for every debug message output. This way you can easily distinct between normal outputs and verbose or debug outputs. - The user now can enter only one command at a time (because only one can be executed at a time). If more then one is detected the program stops - Now ODMan displays at which percentage was the maximum transfer rate achieved after the transfer rate test finishes - Cleaned some parts of the program source version 0.2 ( 24-March-2008 ) ======================================== *odman.c: - Fixed a bug that has not notified the user if the device reset command was executed with the 'A' or 'I' arguments without root privileges - Fixed a bug in the transfer rate test. From audio CD's you can't read "normal" data, so test should't start if a audio CD is detected in the drive. Formerly ODMan tried to start the test even with audio CD's and exited with a I/O error at the first read(). - Fixed an issue related to the eject command (CDROMEJECT). On some systems that command won't work, so if that failed retry with the START STOP UNIT MMC command - Striped the code in three individual source files, so it is easier to debug, and to maintain the program. - Now by default of no command is specified ODMan displays the device name model, and firmware version - Now ODMman detects if a device is not a CD/DVD device and stops the execution *identify.c: - Now it is notified if ODMan can't get the active transfer mode (DMA or PIO) with the --Identify command (with the latest kernel 2.24 it's notyet) - Corrected a problem with the DMA detection modes (a better way to check if DMADIR is requred or not) with the --Identify command. - Implemented the SATA capabilities and features in the identify data. Now ODMan recognizes and displays the latest SATA features and capabilities, so it is fully compatible with SATA devices too. *mminfo.c: - Implemented a new and useful functionality the Multi-media information's. Now you can use the -M or --MM-info command to get the multi-media information's from a device. These info's include read and write capabilities, supported writing modes (if device is a writer), buffer size, other capabilities like burn-free, test writes . . . and a lot more. You can also get all the supported device profiles and features by adding the p for profiles or f for features arguments to the --MM-info command version 0.1 ( 21-February-2008 ) ======================================== *odman.c: - Fixed a bug that occurred if you executed a command like eject and you specified the transfer rate test command along with the first command. If that was the case every time the mount checker function was executed - Fixed a bug that occurred when you tried to eject a mounted media. With newer kernels this yielded a I/O IOCTL error and the disc was not ejected just unmounted. - Fixed a minor synchronization bug in the spin up thread with the spin up time counter loop in the main thread. Sometimes (in very rare cases) when a EIO error occurred during spin up time the error was handled and printed out in the thread and because the counter loop was not blocked during that time it printed for yet another time the remaining spin up time - Fixed a bug in the identify information related to the "Transfer rates" field. If DMA mode was disabled and PIO transfer mode was used for a device, ODMan displayed that the active transfer mode is still DMA. So this was changed to recognize whether PIO mode or DMA mode is active. - Fixed a bug that appeared when big sized medias were tested (like DVD's) This issue was related to the speed drops toward the media outer side when the drive was reading in CLV mode. The problem was fixed by bypassing the kernel page cache during the test. - New option: --direct-io or -i, with this option you can bypass the kernel page cache to get sometimes better transfer rate results. This also corrects the above bug. - Enhanced, corrected the program error handling mechanism. For instance if a EIO error is asserted ODMan detects if the disc contains damaged sectors or the media was ejected from the drive - changed the buffer size setting to block, sector size setting (This is much better) - Now ODMan displays the transfer rate speeds in media speed units too (like 20x, or 52x . . .) in the statistics and progress bar *TODO: - Introduced the TODO list. There can be found future plannings about what should be changed or implemented in ODMan *odman.1: - Corrected some parts of the manual page version 0.1 beta4 (07-2-2008) ======================================== *odman.c: - Fixed a segmentation fault bug that occurred when you stopped the program from the keyboard (CTRL-C) at the disc spin up time - Fixed two bugs in the option parser. The --test_rate and --no_mount_chk long options which do not require arguments yielded a "requires an argument" error (if used). The short version of this options were fine - Fixed a few memory leaks - Fixed a logical error in the average transfer rate calculation - Now ODMan mounts, remounts the media after the transfer rate test terminates in the case when the media was initially mounted before starting the test - Changed some short and long option names (to be more intuitive). Rewrote some parts of the help message - Now you can see the transfer rate in X-es as well for any recognized type of media not just in KB/s or KiB/s - Added a new option (--change_to_dec) that converts the disc sizes, or transfer rates from binary into decimal prefix. By default ODMan calculates such data with binary prefix (Kibibyte, Mebibyte . . .). This also deals with the confusion that most users have with the two measurement formats - Added some new features to the transfer rate test: Now ODMan retrieves and prints the media volume name, the size in Gibibytes/Gigabytes (useful with DVD-s ) and the disc type like CD-R, CD-RW, DVD-RAM, DVD_RW, Blue Ray discs etc. - Added a new functionality: Now ODMan tells if a Dual layer DVD was written in PTP or OTP mode *odman.1: - Corrected some option name mistakes in the manual version 0.1 beta3 (18-1-2008) ========================================= *odman.c: - Added a new feature. You can now calculate the transfer rate of your device. You can do this with the --test_rate (-x is the short form) option. With this change there are two more new options: --buffer (-b) to specify the buffer size that ODMan uses for the test and the --set_spinup (-o) to specify the spinup time before starting the effective test. - aded a keyboard signal handler - modified some options (not the functionality but the names) version 0.1 beta2 (13-12-2007) ========================================= *odman.c: - Fixed a "bug", portability issue on 64 bit machines. The problem raised when you used the --get_mcn, --identify or the --reset command with the ATAPI soft reset argument. This was because the function used int to store pointers. On 32 bit machines it's Ok because a memory address is 32 bit like an int. But on 64 bit machines an int is less then 64 bit (usually 32) so the memory address could not fit in that int. This problem is fixed now - Fixed a bug related to the eject command. The problem revealed himself in some distributions and in others not but it was a general error. ODMan first created the file descriptor (opened a stream to communicate with the device) and after that executed the specified commands. This is fine with all but the eject command and in the situation when a mounted disc is in the drive. So the problem was that ODMan created the file descriptor and after that tried to unmount and eject the media. That's wrong ! In some distributions that works (like in Ubuntu 7.10) but in others like Debian 4.0 the eject command returned with error. So this is fixed now ! - Unified the -disc_stat with the --drive_stat option. Now the new option name that prints out the disc status along with the drive status is: --get_stat or -t - Enhanced, modified the verbosity outputs to be more explicit *odman.h: - Defined macros for command verbosity messages version 0.1 beta1 (4-12-2007) ========================================= *odman.c: - Fully implemented the --identify option. Now you can get all the useful information's returned by the device controller. You can specify once the -i option to get the ubiquitous information that in general everybody understands or twice to get the more in depth information (useful for advanced users, computer engineers) - Fixed a bug that was triggered when you executed the --get_mcn option and the drive tray was open, or closed and no media was present in the drive. In this case ODMan printed the following message: "Inserted media is not an Audio CD !" that's wrong ! because there is no disc, so this mistake was corrected - Renamed, modified and added two more reset types for the reset device option. Now the option name is --reset or -r and supports IDE soft reset, ATAPI soft reset and non-IDE CD-ROM hard reset. (more info in the manual) - Corrected, rewrote added more verbose messages, and the output messages in general - Added a new option (--dont_umount). This option is only useful with the eject command and it tells ODMan to do not even try to unmount the media ( if any) just execute the eject command. This can be useful when the media can't be unmounted for some reason *odman.h: - Created a special structure for ATAPI devices (the hd_driveid from the hdreg.h is only for hard drives) - Added the string representations for the words, bits returned in the identify buffer *odman.1: - Corrected, rewrote some options. version 0.1 alpha1 (27-11-2007) ========================================= *odman.c: - Fixed a bug related to the eject option. Every time when you opened the tray odman only ejected it, without the additional check to see if it is mounted. That was a bad bad thing because if the media in the drive was mounted and you ejected it in the mtab the mounted media entry was still there, so the operating system kernel thought that nothing was ejected. A mount checker and unmounter (if necessary) was implemented to fix this problem - Fixed a but that occured when you specified the symbolic link of the device and not the device itself. In that case ODMan would not find the device in the mtab (because the symlink was specified) and thought that it is not mounted. So the device was ejected without unmounting first - Changed the --get_mcn option behavior if not an audio CD is in the drive If that is the case ODMan stops and not even tries to get the MCN value - Corrected, rewrote, completed some information messages which are printed to the user like with the verbosity output - Enhanced, optimized some parts of the source code - Selected a default option (the drive status option) if the user specifies only the device path (device name) and no other option - Implemented another option: disc status (--disc_stat). With this option you can get the inserted media format, like data disc mode1 or data disc mode 2 or audio CD . . . *README: - Enhanced, (added more information about compilation and the tools needed for that) corrected, rewrote the majority of the README file. *odman.1: - Created the manual page, with detailed description of every command, plus with some examples. To make the manual more descriptive informational text was copied from the Linux CD-ROM standard documentation and comments from the cdrom.h file. version 0.1 pre-alpha (19-11-2007) ========================================= - the beginning . . .