Contribute
Register

Eject Button in ML

Status
Not open for further replies.
Have you tried to re-assign the eject function to a new different key, and then back to the original key again?

That would be my first approach.

On another thought what regional keyboard layout do you have assigned to your keys? Maybe there's a mix-up and ML is just confused by it...(I know, I know, but with computers all's unreasonably possible).

I don't know anywhere in the System Preferences where you can program a different button for the eject key. The keyboard is a US one, but all of them have the eject button in the same place as far as I know, to the right of F12.

It appears to be that Mountain Lion thinks that our DVD drives are not internal anymore. Try launching DVD Player and it will tell you that a valid DVD player could not be found.

I fixed that problem by editing /System/Library/Frameworks/DVDPlayback.framework/Versions/A/DVDPlayback with 0xED app and replacing any reference to "Internal" with "External"

This makes the DVD Player work but as far as the OS is concerned the drive is still external and F12 will not work to eject.

This is probably a clue, I am getting the same message. Thanks for the workaround.
 
Im having the exact same problem. I know the eject key works because the other commands, Cntrl+CMD+Eject and such work to what they are suppose to do, just the eject key doesnt work on its own. The rest of the system works great.
 
This fixed it for me...

I was having the none ejecting DVD tray problem too so had a hunt and came up with this DSDT edit that has fixed it for me, maybe someone could take a look at the edit to see if I might cause problems elsewhere in doing this?

I am no expert but cobbling together information from a couple of other websites helped me come up with this.

I opened up my DSDT.aml with iaslMe and searched for SATA. I then pasted the following into that section...
Code:
                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x02)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                0x81, 0x26, 0x00, 0x00
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }

Here is what the whole of my SATA section now looks like...
Code:
            Device (SATA)
            {
                Name (_ADR, 0x001F0002)  // _ADR: Address
                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x02)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                0x81, 0x26, 0x00, 0x00
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
                OperationRegion (PCI, PCI_Config, 0x40, 0x20)
                Field (PCI, DWordAcc, NoLock, Preserve)
                {
                    ITM0,   16, 
                    ITM1,   16, 
                    SIT0,   4, 
                    SIT1,   4, 
                    Offset (0x08), 
                    UDC0,   2, 
                    UDC1,   2, 
                    Offset (0x0A), 
                    UDT0,   8, 
                    UDT1,   8, 
                    Offset (0x14), 
                    ICF0,   2, 
                    ICF1,   2, 
                        ,   6, 
                    WPPE,   1, 
                        ,   1, 
                    FAS0,   2, 
                    FAS1,   2
                }

The attached pics show the change to System Information and Disk Utility.
 

Attachments

  • Screen Shot 2012-07-29 at 18.54.29.png
    Screen Shot 2012-07-29 at 18.54.29.png
    17.6 KB · Views: 550
  • Screen Shot 2012-07-29 at 18.55.22.png
    Screen Shot 2012-07-29 at 18.55.22.png
    85.5 KB · Views: 1,364
Solution??

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

If you use "UseKernelCache=No", you can use this kext in the /Extra/Extensions folder and it works fine. If you use "UseKernelCache=Yes", then you MUST install the kext in /System/Library/Extensions. No need to do any DSDT editing, or replace any 10.8 kexts with 10.7 kexts. (If you're not sure where to install, then install in /System/Library/Extensions. The kext will always be loaded from there.)

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. Keep in mind that you only need to use ONE of the kexts below. If you have 3rd party SATA controllers on your motherboard or as an add in card, use AHCI_3rdParty_SATA.kext. If you only have Intel SATA onboard, then just use IOAHCIBlockStorageInjector.kext
 

Attachments

  • AHCI_3rdParty_SATA.kext.zip
    2.3 KB · Views: 1,531
  • IOAHCIBlockStorageInjector.kext.zip
    2 KB · Views: 1,614
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.

works perfectly now, thanks!
 
Thanks Dil83, I would prefer to use your method too as I have the ICH10 chipset and already use AHCI_3rdParty_SATA.kext to name my additional SATA III controller.

I have now tried both your kexts (Individually) in S/L/E and E/E with my old DSDT.aml and neither of them work, no keyboard Eject and the DVD drive still shows as External.

Is there something else I could be missing here?
 
Thanks Dil83, I would prefer to use your method too as I have the ICH10 chipset and already use AHCI_3rdParty_SATA.kext to name my additional SATA III controller.

I have now tried both your kexts (Individually) in S/L/E and E/E with my old DSDT.aml and neither of them work, no keyboard Eject and the DVD drive still shows as External.

Is there something else I could be missing here?

I can't really think of anything right off hand.... Could you take a look in IORegistryExplorer to see what device-id your SATA controller is? Also, if you upload the DSDT you're currently using, I'll take a look at it to see if there is something interfering with it there.

Double check the .plist in each of those kexts to make sure it has the exact code under IOAHCISerialATAPI because when I first uploaded the files, I had accidentally left part of the code out which made the kexts not work properly when I tested them. The part I left out was "<key>ATAPI</key><true/>", so make sure it is there.

Dil83
 
Ok thanks, I will take a look when I get home (Real life getting in the way again!).

This is the file just downloaded...
Code:
<?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>CFBundleDevelopmentRegion</key>
* <string>English</string>
* <key>CFBundleIdentifier</key>
* <string>com.tonymacx86.AHCI_3rdParty_SATA</string>
* <key>CFBundleInfoDictionaryVersion</key>
* <string>6.0</string>
* <key>CFBundleName</key>
* <string>AHCI 3rdParty SATA</string>
* <key>CFBundlePackageType</key>
* <string>KEXT</string>
* <key>CFBundleShortVersionString</key>
* <string>0.3</string>
* <key>CFBundleSignature</key>
* <string>????</string>
* <key>CFBundleVersion</key>
* <string>0.3</string>
* <key>IOKitPersonalities</key>
* <dict>
* * <key>AppleAHCIDiskDriver</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.iokit.IOAHCIBlockStorage</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCIDiskDriver</string>
* * * <key>IOProbeScore</key>
* * * <integer>1000</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>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>ASMedia ASM1061</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>ASM1061</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x06121b21</string>
* * * <key>IOProbeScore</key>
* * * <integer>15000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>ASMedia</string>
* * </dict>
* * <key>JMicron JMB360 AHCI</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB360 AHCI</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2360197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB360 RAID</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB360 RAID</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01040000&amp;0xffff0000</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2360197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB361 AHCI</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB361 AHCI</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2361197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB361 RAID</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB361 RAID</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01040000&amp;0xffff0000</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2361197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB362 AHCI</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB362 AHCI</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2362197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB362 RAID</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB362 RAID</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01040000&amp;0xffff0000</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2362197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB363 AHCI</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB363 AHCI</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2363197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB363 RAID</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB363 RAID</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01040000&amp;0xffff0000</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2363197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB366 AHCI</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB366 AHCI</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2366197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>JMicron JMB366 RAID</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>JMB366 RAID</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01040000&amp;0xffff0000</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x2366197b</string>
* * * <key>IOProbeScore</key>
* * * <integer>11000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>JMicron</string>
* * </dict>
* * <key>Marvell 88SE9120</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>88SE9120</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x91201b4b</string>
* * * <key>IOProbeScore</key>
* * * <integer>15000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>Marvell</string>
* * </dict>
* * <key>Marvell 88SE9123</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>88SE9123</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x91231b4b</string>
* * * <key>IOProbeScore</key>
* * * <integer>15000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>Marvell</string>
* * </dict>
* * <key>Marvell 88SE9125</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>88SE9125</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x91251b4b</string>
* * * <key>IOProbeScore</key>
* * * <integer>15000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>Marvell</string>
* * </dict>
* * <key>Marvell 88SE9128</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>88SE9128</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x91281b4b</string>
* * * <key>IOProbeScore</key>
* * * <integer>15000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>Marvell</string>
* * </dict>
* * <key>Marvell 88SE9172</key>
* * <dict>
* * * <key>CFBundleIdentifier</key>
* * * <string>com.apple.driver.AppleAHCIPort</string>
* * * <key>Chipset Name</key>
* * * <string>88SE9172</string>
* * * <key>IOClass</key>
* * * <string>AppleAHCI</string>
* * * <key>IOPCIClassMatch</key>
* * * <string>0x01060100&amp;0xffffff00</string>
* * * <key>IOPCIPrimaryMatch</key>
* * * <string>0x91721b4b</string>
* * * <key>IOProbeScore</key>
* * * <integer>15000</integer>
* * * <key>IOProviderClass</key>
* * * <string>IOPCIDevice</string>
* * * <key>Vendor Name</key>
* * * <string>Marvell</string>
* * </dict>
* </dict>
* <key>NSHumanReadableCopyright</key>
* <string>MacMan @ tonymacx86.com</string>
* <key>OSBundleRequired</key>
* <string>Local-Root</string>
</dict>
</plist>
 
Status
Not open for further replies.
Back
Top