New OS2CDROM.DMD driver Ernst Fueloep, IBM Austria, Dpt 00/833 Obere Donaustrasse 95, 1020 Wien - Austria / Europe --------------------------------------------------------------------------- On this page you will find a modified version of the OS2CDROM.DMD driver based on the source from the Developer Connection Device Driver Kit (http://service.software.ibm.com/ddk/). I have made the following modifications: * Added the option /I (for ignore) to tell the driver to ignore certain CDROM drive(s) * Fixed the slow CDROM audio initialization on Plextor drives (at least it no longer occurs on my system with a Plextor PX-12/20TS) * Added the display of the LUN number to /V verbose mode Option /I (ignore unit) This option is useful when you have more than one CDROM drive and you want to access some of them with another driver than OS2CDROM.DMD. I have found two examples where you may want to do this: * You have a CDROM changer device and want to drive it with Pegasus Optical File System for OS/2 (http://www.pegasus-ofs.com/ofsforos2.htm). This is the main reason why I added the ignore option to OS2CDROM.DMD. I have a Nackamichi MJ-4.8s CDROM changer (http://www.nakamichi.com/computer/index.html) installed. This is a four slot CDROM changer. Normally OS2CDROM.DMD assigns to each CD slot a drive letter. But you can only use one CD slot at a time anyway and therefore this is simply a waste of drive letters. With Pegausus-OFS for OS/2 I can access this changer with only one drive letter. When I mount a CD into the changer device Pegasus-OFS creates one subdirectory with the name of the volume label of the CD under the drive letter assigned to Pegasus-OFS. From this subdirectory I can access all data from the CD. * You have a CD-Writer device and want to use Unite CD-Maker from Cirrus Technology which uses its own CDROM device manager (CTCDROM.DMD) to control the unit. CTCDROM.DMD is based on an older level of OS2CDROM.DMD and does not contain the latest enhancements. So, you may want to use it only for the CD-Writer device and use OS2CDROM.DMD for your other CDROM devices. Note however, that when you want to use both drivers OS2CDROM.DMD and CTCDROM.DMD together you have to patch CTCDROM.DMD to use other device driver names as OS2CDROM.DMD does (CD-ROM1$ and CD-ROM2$). I have patched CTCDROM.DMD to use CD-ROM3$ and CD-ROM4$. But that is not enough. You have to patch the Unite-CD Maker DLLs with the new device driver names too. The syntax for option /I is: DEVICE=C:\OS2\BOOT\CDROMNEW.DMD /I:2,3,4,5 /V where the numbers after /I are the units which should be ignored. The counting starts at 0 for the first CDROM unit, 1 for the second and so on. If you don't know the unit numbers of your CDROM drives you can add option /V to the CDROM device driver and the reported list shows how the driver enumerates the drives. The first list entry is unit 0, the second entry is unit 1 and so on. I don't have IDE CDROM drives to test but I guess they are listed first. The above example ignores all four CD slots of my Nakamichi CDROM changer. My CDROM device list: Unit CDROM drive 0 PIONEER DVD-ROM DVD-U02 1.06 1 PLEXTOR CD-ROM PX-20TS 1.02 2 NAKAMICH MJ-4.8S 1.05 3 NAKAMICH MJ-4.8S 1.05 4 NAKAMICH MJ-4.8S 1.05 5 NAKAMICH MJ-4.8S 1.05 6 HP C4324/C4325 1.27 7 YAMAHA CRW4416S 1.0e --------------------------------------------------------------------------- Slow audio initialization on Plextor drives When you have a Plextor drive then you may have noticed that when you want to play an audio CD and open the Compact Disc Player from MMOS2 it takes several seconds (15 to 20) until the contents are displayed. The same happens when you do a simple DIR d: on the CDROM drive when an audio CD is in the drive. It takes a long time until the "sector not found" error message pops up. The problem I found is that OS2CDROM.DMD treats any Plextor drive as a Sony CDU-561 drive. That may be ok for most of the functionality of a Plextor CDROM drive but OS2CDROM.DMD has some special Sony CDU-561 code which doesn't seem to be right for the Plextor. Especially for this case I have found the following code part in the CDSTRAT1.C routine: /* ** Sony 561 can't read 2048 byte Mode 2 Form 2 XA sectors with the ** Read 6 command. We must issue the Read CD-XA command. */ if ( (pUnitCB->DeviceInfo.product_id_code == SONY_561) && (rc == STDON + STERR + ERROR_I24_SECTOR_NOT_FOUND) ) { rc = Sony_Read_2048(pUnitCB, pRP->rba, pRP->NumSectors, pRP->XferAddr); } I have simply made an entry for Plextor into the vendor_id_table and treat Plextor as a Sony CDU 561 except the above special call. And the slow audio initialization is gone on my Plextor PX-20TS drive. I admit I don't understand the full OS2CDROM.DMD code. All I did was simply a trial and error approach. I have forwarded this info to IBM OS/2 development and they have fixed it now in the official OS2CDROM.DMD driver. You can find the fixed official OS2CDROM.DMD driver on the OS/2 Device Driver Pak On-Line (http://service.software.ibm.com/os2ddpak/html/cdromdri/os_2cdro/index.htm). It is part of IDEDASD.EXE. --------------------------------------------------------------------------- To avoid the replacement of the driver during an OS/2 FixPak installation I have renamed the driver to CDROMNEW.DMD. If you don't like this name you can rename it to whatever name you want. If you code option /V you will see that the driver still reports "IBM OS/2 OS2CDROM.DMD (990208)". I have only changed the date. You can download the modified driver from: http://site.netscape.net/homepage/cdromnew/index.html --------------------------------------------------------------------------- If you need more information drop me a note to fueloep@at.ibm.com. If you use Lotus Notes then you can send any questions to my GNA ID (IBM internal only): Ernst Fueloep/Austria/IBM @ IBMAT