How to make the MacBook Air SuperDrive work with any Mac

Flattr this!

Note: for Mac OS X 10.11 El Capitan and later, please see this updated post instead.

(Edited/clarified Nov. 2012, Nov. 2013, Jan 2015 and June 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.

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!).

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:

[For OS X 10.11 El Capitan onwards please see here for updated instructions instead!]

  1. open a terminal
  2. 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

  3. 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">
    <plist version="1.0">
    <dict>
    <key>Kernel Flags</key>
    <string>mbasd=1</string>
    </dict>
    </plist>

    [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].

  4. Save (press Ctrl-X, answer yes to save by pressing Y, press enter to confirm the file name).
  5. 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

28. October 2011 by luz
Categories: English | Tags: , | 499 comments

Comments (499)

  1. Hi, and thanks for your assistance. I have no idea of what to do other than try to follow the instructions you gave above, so please bear with me and explain any step extremely simply.

    I have an i-mac running 10.6.8 but … /library/Preferences … don’t list … /SystemConfiguration/com.apple.Boot.plist … among them.

    When I put the string into a browser, the screen declares:

    “The XML file document does not appear to have any style information associated with it. The document tree is shown”.

    The line kernel Flags is shown among the 8 lines.

    What should I do, please?

    • Even if the file does not exist yet, you can still use sudo pico /Library/Preferences/SystemConfiguration/com.apple.Boot.plist and create it as mentioned in step 3. The sudo plutil... command will fail in that case, but that does not matter because this is only to make a pre-existing file editable.

  2. any chance you can help me get the latest SuperDrive working with Snow Leopard 10.6.8? I even tried the hex editing deal. One offset has 75. I took a chance and changed the other that was previously 00. but no work! the tutorial above doesn’t work either. It just won’t save the changes. It doesn’t give errors. Just that when I go back into Terminal to check. It has no change. Please help. I have a mac mini btw.

  3. My list is emty, what could be the reason for that?

  4. It was working until high Sierra update. I have followed all these steps again but ıt is not working anymore on high Sierra.

    any ideas??

    • Sounds bad – but I haven’t had a chance to try High Sierra so far.
      I have only one Mac left that could update to High Sierra and has a built-in optical drive. All others didn’t have a optical drive at all, so the external Superdrive works without any tricks…

  5. Thank you so much for this

  6. This was a lifesaver for many of us up through Sierra–thanks! But I just found that when I updated to High Sierra, Apple not only replaced the file with its original version (no surprise there), but now this fix no longer works as “onur” pointed out above. Apple has apparently done something else to the OS to disable these drives. I hope that someone else out there will find another hack. (I know the goal is to force us to buy a new computer, but my enthusiasm for that is at an all-time low just now.)

  7. YESSSSS it works now! Thank you to everyone and especially to Luz!!

    First, when I tried to enter sudo nvram boot as listed above to the terminal window , I got the following error:
    nvram: Error setting variable – ‘boot-args’: (iokit/common) general error

    I think, the reason of getting this error was Not having any “mbasd=1” arguments in my Boot.plist (because when I saw it didnt work I was turned it to the normal)
    So I did whole process again;
    (1. booted recovery mode and disabled csrutil -csrutil disable command in the terminal- and reboot
    2.booted normally and follow the descriptions listed above by Luz -adding “mbasd=1” between the strings- and reboot)

    and tried the “nvram” method again. and Voila, it worked !!

    ps. as advise; to avoid for any problem in the future, dont forget to ENABLE csrutil again > booted recovery mode and -csrutil enable command in the terminal- and reboot

Leave a Reply

Required fields are marked *