New SCSI Driver for Mac OS X

Charles Davis cdavis at
Tue Apr 27 15:10:25 CDT 2010


A while ago on this list, I was talking about implementing SCSI support
on Mac OS X in Wine, and we all agreed the best way to do that would be
to have a custom driver that provides an IOCTL interface.

I've attached the driver (which is now finished) here. I've tested it on
my system, and it works with this small test program that's also
attached. But I want to make sure it's totally stable before I start
working on the Wine side. So if you've got a Mac, and you're feeling
brave, feel free to install my driver and run my test program.

Extract the archive, then cd to the directory inside:

 tar jxf ExtMediaBSDClient.tar.bz2
 cd ExtMediaBSDClient

Install the extension to /Library/Extensions:

 cp -r ExtMediaBSDClient.kext /Library/Extensions

If you're feeling really brave, you can install it to
/System/Library/Extensions (and then it will be loaded on boot):

 cp -r ExtMediaBSDClient.kext /System/Library/Extensions

The driver bundle has to be owned by root and belong to the wheel group,
so make sure it does before trying to load it:

 sudo chown -R root:wheel /path/to/ExtMediaBSDClient.kext

You can load the driver with the kextload command:

 kextload /path/to/ExtMediaBSDClient.kext

You can verify that the driver loaded by running:

 kextstat | grep "ExtMediaBSDClient"

Once it's loaded, all SCSI disks that are inserted afterward will accept
the IOCTL. All disks that were inserted before won't however. To make
sure a disk is using my driver, run the ioreg tool (it's part of Xcode)
and look for "ExtMediaBSDClient":

 ioreg | grep "ExtMediaBSDClient"

To test it, run the program 'ExtMediaTest' that I included. Pass it the
filename of a device file for the disk (it should be one of the raw
device files, e.g. /dev/rdisk1 instead of /dev/disk1) on which you want
to test this:

 ./ExtMediaTest /path/to/device/file

If it works, the program will print some of the INQUIRY data for that
disk to the Terminal. If it doesn't work, it will print an error to the
Terminal (and the driver will have logged something in the kernel log;
see the Console app), or worse, the kernel will panic. (If it says
"Inappropriate ioctl for device", that probably means it's not using my
driver. Try ejecting the disk and reinserting it. And if it says the
device is busy, try the program on one of the slices, e.g. /dev/rdisk1s1
instead of /dev/rdisk1.)

If anything goes wrong (error messages, kernel panics, etc.), I want to
know about it. If you get an error, paste the whole error message. If
it's from ExtMediaTest, show me the lines in the kernel log that came
from the driver (they have "ExtMediaBSDClient" or some such in them). If
the kernel panics, attach the panic log. Also, tell me which version of
Mac OS X you're using (so I know which KernelDebugKit to use).

As soon as I verify that the driver works well, I'm going to start
submitting patches to implement support for it in Wine.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ExtMediaBSDClient.tar.bz2
Type: application/octet-stream
Size: 100547 bytes
Desc: not available
URL: <>

More information about the wine-devel mailing list