An interesting hack today, allowing you to use the Apple external optimal drive (SuperDrive) on (almost) any Mac.
From the launch of the MacBook Air, Apple proposes a nice external reader, which unfortunately does not work on every machine : only MacBook Air and some Mac mini. It was long believed it was due to a hardware limitation, but it is actually due to Mac OS X, as we shall see.
First of all, why using the Apple drive? For several reasons. The first one is that it is quite nice-looking. It also uses a slot-in, more convenient than fragile drawers, it can play a DVD without changing the DVD drive, as it is considered as Apple-supplied drive by the system (although there is no more limitations on this point) and accepts the eject button on Apple keyboards.
It also has two drawbacks : it is quite expensive, $ 80, and its USB cable is ridiculously short and irremovable. But finally, it is more practical than the other drives I tested.
First, I could not test the handling on many machines : I had a 2009 17-inch MacBook Pro (when working), a 2006 MacBook (which does not work) and a 2010 Mac mini on which the manipulation is unnecessary. The tests were carried out under OS X Lion, but it should work on Leopard and Snow Leopard.
As far as I know, the easiest way to check if the hack is possible is starting by pressing option
with the drive connected : if the player turns on, it should work.
For the modification itself, a file editor (I use Hex Fiend) and a tool that simplifies the update of .kext
files are needed. I use Kext Utility, but it can be done by hand or with others.
We first have to edit a file, copying it first on the desktop.
Reach /System/Library/Extensions/
, right-click on AppleStorageDrivers.kext
and choose Show package contents.
Then go to /Contents/PlugIns/
, right-click on AppleUSBODD.kext
and choose Show package contents.
Then go to /Contents/MacOS/
and edit the file AppleUSBODD
with Hex Fiend AppleUSBODD
.
By searching the file, you should find two chains of this type: Supported Mac Models MacBookAir Macmini Macmini1 Macmini2
.
You must replace one of the values by your model identifier. In my case, I simply replaced MacBookAir
by MacBookPro
to keep a file of the same length. Pay attention to spaces, do not put any between MacBook
and Pro
. Normally, just use the beginning of the identifier and it should be enough, so : MacBook
, MacPro
, iMac
, etc. Also pay attention to capital letters…
Once it is done on the two chains, just save and replace the original file (AppleStorageDrivers.kext
) by the new. If everything is OK, Mac OS X will ask for a password.
Then launch Kext Utility to clear caches and repair permissions, and restart it : if everything went well – this was the case on my MacBook Pro – the external drive should work right away.
Bonjour, et merci pour ce tuto sur la compatibilité avec le SuperDrive MacBook Air.
Je comptais changer le lecteur interne mais je vais opter pour cette solution logiciel.
Juste pour info, le fichier modifié « copié préalablement sur le bureau » doit-il être replacé à son emplacement d’origine après la manipulation et réparation des autorisations ?
Merci pour votre réponse.
Macmaniaquement vôtre !!!
Toutes mes excuses, la réponse était dans le tuto.
Merci pour ces astuces et le partage de toutes ces infos.
Zebulon60
Bonjour
I’d like to add some info about doing that on an older Mac, for those interested.
First, some references about the problem:
1 : https://www.journaldulapin.com/2011/09/01/use-the-apple-external-superdrive-on-almost-any-mac/
2 : http://www.hardturm.ch/luz/2011/10/how-to-make-the-macbook-air-superdrive-work-with-any-mac/
3 : http://www.hardturm.ch/luz/2011/10/technical-background-for-how-to-make-the-macbook-air-superdrive-work-with-any-mac/
On a 24-inch iMac with Intel Core 2 Duo processor, bought in March 2008 (System Informations says it’s an « iMac7,1 » model), under system 10.5.8 :
Done: Replaced (as per reference 1) the string « MacMini3,1 » with « iMac7,1 » followed by 3 null characters in both lists of supported models in file:
/System/Library/Extensions/AppleStorageDrivers.kext/Contents/Plugins/AppleUSBODD.kext/Contents/MacOS/AppleUSBODD.
There are two different places because it’s a universal binary with two architectures: i386 and ppc, as displayed by the « file » command on that file (in Terminal, type « file the_file » and it tells you what kind of file it thinks it is). So this could be different on other system versions. (By the way, it’s probably not necessary to modify both occurrences, only that matching your system architecture actually needs to be corrected).
Then I trashed the directory /System/Library/Extensions/AppleStorageDrivers.kext/Contents/Plugins/AppleUSBODD.kext/Contents/_CodeSignature as advised in ref. 3. However, this is probably useless, since I notice that this leaves symbolic links pointing to nowhere in the « Contents » folder, and it works, though …
I didn’t use the (more radical) complete method proposed in ref. 3 because my file seems to be different, the offsets are not right, and I didn’t feel like going into disassembling the code in my file (as the author of ref. 3 did in the first place to figure out where the modifications had to be done). As to the method described in ref. 2, apparently it didn’t work for me. I say « apparently » because maybe I skipped a required step, which I actually went through anyway with my method, namely unplug the device and plug it in back again after reboot (reboot alone with the device plugged in wasn’t enough to have it working all right).