Saturday, July 2, 2011

VirtualBox vs. Boot Camp

To continue my iMac/XP epic, I have determined that Boot Camp does not meet my needs.  Not only does Apple not provide drivers on new iMacs for XP, Apple makes dang-sure that you can't get those drivers anywhere.  They want me to "get with the times" and upgrade to Windows 7.  Would they like to pay the $200 for me?  The way I see it, Apple purports to run Windows on their machines, and Microsoft currently supports XP.  Like I said before--Apple: FAIL.

As an alternative, I tried to install VirtualBox.  It works well except for one small problem: it can't see my USB devices.  This is a known issue with VirtualBox (specifically running XP on Mac OS X) starting with version 3.2, and it appears they have not fixed the issue.  With no USB access, this software is useless.  (Well, it does play older games that don't run on Windows 7 and don't use a USB device.)

Update--10/23/2011: Check out Chris Hooks' comment below.  He got the USB devices to work by creating an extra blank USB device.  We don't know how it works.  Maybe it distracts the USB bug.  See updated instructions down below.

I'm going to try other alternatives.  Just in case you care, here are the steps I went through:

  • Download VirtualBox.  First choose "VirtualBox 4.0.10 for OS X hosts."  (They just now released 4.1.)
  • When the disk image mounts, open VirtualBox.mpkg.
  • Go to Applications folder and run VirtualBox from there.
  • It says I don't have any virtual Machines.  Click on "New" in the upper left corner.  There's a wizard.
  • At the "VM Name and OS Type" window, choose a name for the XP Machine, and choose Microsoft Windows and Windows XP.
  • At the "Memory" window, allot base RAM.  You can change the amount later.  My music software requires a lot of RAM.  I have 4GB, so I'll set it to 3GB, which will leave 1GB for Mac OS to work with.  Note that I do not plan to run many Mac applications at the same time when I do PC stuff.  You may have different needs.
  • Next comes the "Virtual Hard Disk" window.  Since this is my first time using this, I'll choose "Create new hard disk."  
  • The next decision comes at the "Hard Disk Storage Type" window.  It's either Dynamic (size can increase) or Fixed-size.  Dynamic is the way to go, as the file size grows only as needed.
  • The next window asks what maximum hard drive size to allow.  I'll pick 40GB.
  • Now that the Virtual Machine is created, install XP.  I click on my image and click "Start."
  • Okay, now at the "Select Installation Media" window, put in the XP disk and hit Continue.
  • I'll skip all the instructions to install XP.  I'll follow the same steps laid out in this post.
  • Now that XP is installed, I test the internet.  It works!  I've even activated my XP.  I wonder when Microsoft is going to say "You've activated too many times."  (If that happens, a phone call will clear that up.)  However, I have no USB support.  I think I need to download the Extension Pack.
  • Back to the VirtualBox download page, I download the VM VirtualBox Extension Pack.
  • When I open the file, VirtualBox opens and asks if I want to Install.  I click "Install."  Hmmm--that was easy.
  • Okay--there's already one irritating problem.  "Right-clicking" doesn't work.  I'll get to that later...
  • I plugged in my USB Backup drive.  It doesn't show up in the Virtual Machine.  Section 3.10 of the instructions says I need to set up each USB device separately.  Okay, this is going to be fun...
  • To make changes, I need to shut down Windows.  Then in the Oracle VM VirtualBox Manager, I click on USB.  That pulls up the Ports window.  I click the "+" sign and I can select which USB devices to include.  I make my selections.
  • I will eject the USB Backup drive before continuing.  There's a warning in the instructions that if a USB device becomes available inside of VirtualBox, it'll be removed immediately from OSX, which is the same as unplugging the device without shutting down.
  • Starting up Windows again...  But when I plug in the USB Drive, it shows up on the Mac side, not in Windows.  I'm getting frustrated.  This approach is starting to look like a bust.
  • When I try to add the USB Drive, I get an error that says: "Failed to attach the USB device Unknown device to the virtual machine.  Argument ald is invalid (must be Guid(ald).isEmpty() == false)."  I've looked in their FAQ, Troubleshooting, and their forums, and I can't find anything on how to get around this.
Updated Instructions: To get the USB Drives to work, add a blank USB drive.
  • Close VirtualBox and open it back up.
  • To the right, click on "USB" to open the Ports Window.
  • Click on the USB port picture with a blue circle ("Adds a new USB filter with all fields initially set to empty strings...").  This adds a blank USB filter at the bottom of your list.
  • Close VirtualBox again and start up your XP session, and your USB drives should work now.
  • Finally--kudos to Chris Hooks for figuring this one out!
    Summary: Apple has left me in the dust to rot with my ancient XP technology.  VirtualBox was starting to look like a viable alternative, but apparently they still have some bugs to work out.  If I can't access the USB Devices, I can't do anything.  I'm going to pursue different options.  With the listed fix above, VirtualBox appears to provide a mostly functional XP environment.


    Chris Hooks said...

    I managed to get it working, After you add the usb drive to the usb filters, add an empty filter. Dont know why this works, but it did for me.

    Melvyn Windham said...

    Hey Chris,

    That actually worked. Thanks for the suggestion.


    Kissyfur said...

    Just noticed your update to the page. Thanks for the mention.

    I have noticed that this method stops my mouse (Cyborg R.A.T. 7) from enumerating.

    This basically means I have to close the virtual box VM window. Wait for the mouse to start working and then restart/reload the VM.

    My gut feeling is that the empty filter allows the VM to steal all the new device enumeration events. However, I have not had chance to investigate it.