February 25, 2002 MacOS 10.1 driver now in the tree in libscg/scsi-mac-iokit.c. It supports: * Firewire, USB, and ATAPI MMC-3 compliant burners * SCSI parallel bus attached burners (requires MacOS X.1.3) It does not support: * Older non MMC-3 burners * CD-ROM drives/DVD-ROM drives (i.e. non-burners) Note that this is a limitation of MacOS X and not of the driver. See the end of the document if you're curious why. If you just want to burn ISO images, you may want to consider using Apple's hdiutil program, but it is not clear how standard compliant this method is. Building -------- Note if you installed MacOS X on a HFS+ volume, make install will fail if there is a file called INSTALL in the directory tree because this Filesystem is not POSIX compliant. POSIX requires to honor character case but HFS+ ignores the character case. If you like to use "make install" rename INSTALL to something else. (e.g. INSTALL.txt) Device Naming ------------- You need to pass a device name on the command line to the cdrecord utility CD burners: (probably) IOCompactDiscServices DVD burners: (probably) IODVDServices # ./cdrecord dev=IOCompactDiscServices -toc or if you have multiple drives, you can append a number to differentiate # ./cdrecord dev=IOCompactDiscServices/2 -toc That should talk to the second CD-R on the system (NOT TESTED). Sharing nicely with the Finder ------------------------------ The MacOS 10.1 Finder will offer to burn any blank media you put into the burner. However, you don't want to use the Finder, you want to use cdrecord! So, how do you get around this problem? When you insert the media, the Finder asks "Do you want to prepare this disc?". Click on the "Ignore" button. The Finder will then say "No volumes found. Click Continue to continue without ejecting". Click on the "Continue" button. Common Errors ------------- No matching device ... found: Make sure you typed the device names correctly. See above. Use ioreg -l to find if there is an IOCompactDiscServices or IODVDServices in the device tree. Unable to get exclusive access: Another programs (usually the Finder) has exclusive access to the drive. See "Sharing Nicely with the Finder" Unable to get plugin interface: The SCSI Architecture Family of drivers (supports Firewire, ATAPI, and USB) has a special module that allows user code like libscg to send SCSI commands to a device. This module is only attached, though, if the kernel device driver thinks the device is sufficiently interesting (e.g. the kernel thinks it's a burner). You can see if the module is loaded by looking for SCSITaskUserClientIniter in the output of ioreg -l. Why doesn't it support my SCSI device? -------------------------------------- Apple's kernel drivers enforces the rule that application cannot send SCSI commands to devices for which they feel they have enough kernel support. This includes hard disks and CD/DVD ROMs. They make an exception for burners, though. There are two possible work-arounds, neither of which has been implemented. One is to write a kernel driver that wraps the Apple kernel drivers and exposes a raw SCSI interface, overriding the Apple kernel drivers. The other is to write a SCSI device emulator at user mode that translates SCSI commands into the appropriate interface calls to IOKit. Bugs ---- Send bugs to: csapuntz@stanford.edu