[Wine] Re: UNZ FM TOWNS Emulator not reading discs

SpawnHappyJake wineforum-user at winehq.org
Thu Jul 7 15:27:00 CDT 2011

Robbo007, you have summoned me! Hardware emulation, particularly optical drive emulation, is far too commonly misunderstood.
I don't hold anything against you personally, but it's one of my pet peeves that all across the Internet, people think that simply mounting an ISO = hardware emulation.
If you're in Mac OS X or Linux, and you "mount" an iso, all you are doing is having the files in that image displayed in a folder somewhere. You don't magically make hardware appear. The "sudo mount -o loop [path to iso] [path to folder you want to mount it in]" command that you can do from terminal in either Linux or Mac OS X also simply displays the files in the ISO file in the folder you specify.
I also want to point out that PowerISO _does_not_ emulate an optical drive and AcetoneISO _does_not_ emulate an optical drive. They just make the files of an ISO show up in a directory.

WINE sees that the path you associated with a drive letter is not where a CD is mounted. And no, specifying that it is a CD won't magically give it a hardware name, obey the SCSI command set, have a firmware revision, look like it is plugged into a controller, and everything else that real optical drives do.

It needs to look like a CD drive, i.e., hardware. 
The heart of the operating system, the kernel, is what sees hardware. All programs ran by the kernel, including WINE, only know about hardware because the kernel tells them about it. All hardware info is passed onto a program by the kernel.

The kernel can lie and say that there is hardware present that is not. This is one method of emulating hardware. To do so in an ideal fashion, you'd write a whole kernel (operating system) specifically for the purpose of hardware emulation where the kernel itself can do hardware emulation (lying).

But that isn't really an option for most people. Fortunately, the Mac OS X and Linux kernels are modular, meaning they have a way of extending kernel functionality by loading some kind of kernel module. Once a kernel module is loaded, it is pretty much a part of that kernel.

CDEmu is a CD emulator for Linux and has a kernel module that inserts into the Linux kernel, giving the Linux kernel the functionality of lying about extra optical drives being present.

Kernel modules for Linux are called "kernel modules". Kernel modules for Mac OS X are called "kernel extensions" abbreviated as "kexts".

Windows can run a driver in kernel mode. Daemon Tools and Virtual CloneDrive install such a driver into Windows that lies (from the kernel level) and says there is extra hardware present.
You cannot install a driver into WINE, so Daemon Tools and Virtual CloneDrive or any other Windows kernel-level hardware emulator _will_not_ work in WINE.

Unfortunately, after hours of Googleing, there is yet to be an open source or even free (as in "free beer") optical drive emulator for Mac OS X. There are some for sale, but no freebies. I know that they must work by inserting a kext.

It is possible for someone to make an open source optical drive emulator for Mac OS X via use of a kext, but no one has taken up the task yet.

So your only practical and free option is to dual boot your Mac with Linux (preferably Ubuntu or a variant thereof) and install CDemu and WINE.
Do not attempt to compile CDEmu from source. It's actually impossible. The compiled binaries just appeared on someone's hard drive one day, and that person uploaded them.

Just mount the optical image with CDEmu, find where it is mounted to, go to the drives tab in winecfg, and associate a drive letter with where the emulated optical drive is mounted. WINE sees that the path you associated with a drive letter is indeed where a CD is mounted.

I actually wrote a big thing about this to have on stand-by: http://dl.dropbox.com/u/20170669/Hardware%20Emulation%20Ignorence%20Eradifier.rtf. If you want the full scoop, go there.


More information about the wine-users mailing list