How to make the MacBook Air SuperDrive work with any Mac
(Edited/clarified Nov. 2012 by luz, updated for Mavericks Nov. 2013, added Trim Enabler note Jan 2015, notes for El Capitan Oct 2015 and April 2016)
The story is this – a while ago I replaced the built-in optical disk drive in my MacBook Pro 17″ by an OptiBay (in the meantime, there are also alternatives) which allows to connect a second harddrive, or in my case, a SSD.
To be able to continue using the SuperDrive (Apple’s name for the CD/DVD read/write drive), the Optibay came with an external USB case which worked fine, but was ugly. And I didn’t want to carry that around, so I left it at home and bought a shiny new MacBook Air SuperDrive (by 2012, Apple USB SuperDrive) for the office.
It just didn’t occur to me that this thing could possibly not just work with any Mac, so I didn’t even ask before buying. I knew that many third-party USB optical drives work fine, so I just assumed that would be the same for the Apple drive. But I had to learn otherwise. This drive only works for Macs which, in their original form, do not have an optical drive. Which are the MacBook Airs and the new Minis [Update 2013-11-10: the only model left with an optical drive is the non-retina MBP 13″].
At this point, I started to search the net, finding hints, disassembling Mac OS X USB drivers and finally patching code in a hex editor which was the first, but ugly, solution to make the superdrive work, and gave me the information to eventually find the second, much nicer solution presented below. For those interested in the nitfy details of disassembling and hex code patching, the first approach is still documented here.
For actually making the SuperDrive work in clean and easy way, just read on (but note: while it has proven to be a quite safe method, still you’ll be doing this entirely on your own risk! Using sudo and editing system files incorrectly can damage things severely!).
[Important Note for OS X 10.11 El Capitan onwards: Apple has introduced the so-called “rootless” mode which prevents editing system files, including the com.apple.Boot.plist. So on El Capitan, this trick does not work out-of-the-box as described below. What works is doing the same from recovery mode (see this comment, thanks @brewsparks), however you need to use vim instead of pico – and if you never heard of vi before, please read some basic tutorial first, or you will not be able to even quit that editor from the stone age!]
Apparently, Apple engineers had the need to test the superdrive with non-MacBookAir computers themselves, so the driver already has an option built-in to work on officially unsupported machines! All you need to do is enable that option, as follows:
The driver recognizes a boot parameter named “mbasd” (Mac Book Air Super Drive), which sets a flag in the driver which both overrides the check for the MBA and also tweaks something related to USB power management (the superdrive probably needs more power than regular USB allows). So just editing /Library/Preferences/SystemConfiguration/com.apple.Boot.plist and inserting the “mbasd=1″ into the “Kernel Flags” does the trick:
- open a terminal
- type the following two commands (two lines, each “sudo” starting on a new line)
sudo plutil -convert xml1 /Library/Preferences/SystemConfiguration/com.apple.Boot.plist
sudo pico /Library/Preferences/SystemConfiguration/com.apple.Boot.plist
- Insert mbasd=1 in the <string></string> value below the <key>Kernel Flags</key> (If and only if there is already something written between <string> and </string>, then use a space to separate the mbasd=1 from what’s already there. Otherwise, avoid any extra spaces!). The file will then look like:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
[Important update for users of Trim Enabler (thanks boabmatic!): Since Yosemite, installation of Trim enabler puts another flag “kext-dev-mode=1” into the com.apple.Boot.plist, and, unfortunately, also converts the .plist to binary format which shows as mostly garbage in many text editors (that’s what the “plutil” line in step 2 above takes care about: it converts the file back to XML so you can edit it). Note that the system will not boot any more when trim enabler is installed, but “kext-dev-mode=1” is missing! So to apply the “mdasd=1” with trim enabler active, you need to combine both flags, such that the line will read
<string>kext-dev-mode=1 mbasd=1</string>. For details on Yosemite and Trim Enabler, see here]
[Update: As CyborgSam pointed out in the comments, the file might not yet exist at all on some Macs. In that case, the pico editor window will initially be empty – if so, just copy and paste the entire XML block from above].
- Save (press Ctrl-X, answer yes to save by pressing Y, press enter to confirm the file name).
- Restart your machine. That’s it!
I tested this [Updated:2013-11-03] on Lion 10.7.2 up to 10.7.4, Mountain Lion up to 10.8.4 and Mavericks 10.9 so far, but I expect it to work for all Mac OS versions that came after the initial release of the Macbook Air Superdrive, which is probably 10.5.3, and is likely to work with future versions of OS X. Just let me know your experience in the comments!
BTW: the boot options plist and how it works is described in the Darwin man pages
[Update 2 – Not recommended any more on OS X 10.11 El Capitan!]:
It seems that there’s an even simpler method than all what I described above: 1) Open a Terminal, 2) type sudo nvram boot-args=”mbasd=1″ – done. I haven’t tested so far, but Apple docs (from here to here to here) suggest this has exactly the same effect as the .plist editing below. [Update: apparently, does not always work, so I recommed to stick with the .plist editing which works well]