I personally didn't want to replace any kexts in S/L/E with older ones, nor did I want to use the ESB2 device id in my DSDT since that device id is for ICH6 and I have ICH10 on an X58 board. I use an injector kext to fix the Orange Icons, and I thought I'd look into making sure that the DVD drives were being injected as "Internal" the same way that the HDD's were. Turns out that they aren't. I personally use AHCI_3rdParty_SATA.kext from MultiBeast, but you can also use IOAHCIBlockStorageInjector.kext. I noticed that the Protocol Characteristics were only being injected into IOAHCIBlockStorage.kext located in the PlugIns folder within IOAHCIFamily.kext in S/L/E. There are 2 PlugIns inside IOAHCIFamily.kext: IOAHCIBlockStorage.kext, and IOAHCISerialATAPI.kext. In IORegistryExplorer I can see that my DVD drives use the IOAHCISerialATAPI.kext PlugIn. So inside AHCI_3rdParty_SATA.kext, I just added in the information to inject the Protocol Characteristics into IOAHCISerialATAPI.kext also.
Here is what the first 2 keys in AHCI_3rdParty_SATA.kext look like after:
Code:
<key>AppleAHCIDiskDriver</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.IOAHCIBlockStorage</string>
<key>IOClass</key>
<string>AppleAHCIDiskDriver</string>
<key>IOProbeScore</key>
<integer>25000</integer>
<key>IOProviderClass</key>
<string>IOAHCIDevice</string>
<key>Protocol Characteristics</key>
<dict>
<key>Physical Interconnect</key>
<string>SATA</string>
<key>Physical Interconnect Location</key>
<string>Internal</string>
</dict>
</dict>
<key>IOAHCISerialATAPI</key>
<dict>
<key>ATAPI</key>
<true/>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.IOAHCISerialATAPI</string>
<key>IOClass</key>
<string>IOAHCISerialATAPI</string>
<key>IOProbeScore</key>
<integer>25000</integer>
<key>IOProviderClass</key>
<string>IOAHCIDevice</string>
<key>Protocol Characteristics</key>
<dict>
<key>Physical Interconnect</key>
<string>SATA</string>
<key>Physical Interconnect Location</key>
<string>Internal</string>
</dict>
</dict>
I just added the IOAHCISerialATAPI key and dict after the AppleAHCIDiskDriver key and dict. You can add the exact same information to IOAHCIBlockStorageInjector.kext if that's the kext you use, but you should replace <string>Internal/External</string> with <string>Internal</string>.
I use this kext in my /Extra/Extensions folder and it works fine. No need to do any DSDT editing, or replace any 10.8 kexts with 10.7 kexts.
My eject button and DVD Player work perfectly now! Hopefully this will work for others.
Dil83
I attached both kexts already edited for those who want to try it out. Use whichever you prefer, not both. These kexts are now the same as the ones I uploaded on page 3.