Jump to content
Hervé

Dell Latitude E6440 with i5-4300M, HD4600 and 1600x900 LCD - Mavericks/Yosemite/El Capitan/Sierra

Recommended Posts

Last update: 05 Aug 2016

 

E6440_Front.jpg E6440_Sides.jpg
Specifications:

  • BIOS A05/A08/A13/A14/A21 (needs HDD set to AHCI mode)
  • Intel QM87 (8 Series) Express chipset
  • Intel dual-core Haswell i5-4300M 2.6GHz CPU (Turbo boost to 3.2GHz/3.3GHz for 2cores/1core active) -> needs Haswell-patched kernels
  • integrated Intel HD4600 GPU 400-1250MHz (PCI ven id 0x8086, dev id 0x0416)
  • discrete AMD Radeon HD 8690M 2Go GPU (PCI ven id 0x1002, dev id 0x6660) -> unsupported in Mavericks or earlier
  • 14" 1600x900 WideScreen LCD
  • 8Go DDR3L-1600 RAM
  • Intel i217-LM Gigabit Ethernet (PCI ven id 0x8086, dev id 0x153a)
  • Realtek ALC3226 (Codec=ALC292) High Def audio (PCI ven id 0x10ec, dev id 0x0292)
  • Intel Centrino N6235 wireless card (PCI ven id 0x8086, dev id 0x088e - unsupported) + Bluetooth 4.0 (PCI ven id 0x8087, dev id 0x07da)
  • Sonix Technology integrated HD webcam (USB internal, PCI ven id 0xc45, dev id 0x649d)
  • O2 Micro SD card reader (PCI ven id 0x1217, dev id 0x8520)
  • CD/DVD drive
  • 1 x headset jack
  • 4 x USB 3.0 ports
  • 1 x VGA output
  • 1 x HDMI output
  • 1 x 34mm ExpressCard slot

pc34:~ admin$ lspci -nn
pcilib: 0000:01:00.0 64-bit device address ignored.
pcilib: 0000:00:02.0 64-bit device address ignored.
00:00.0 Host bridge [0600]: Intel Corporation Haswell DRAM Controller [8086:0c04] (rev 06)
00:01.0 PCI bridge [0604]: Intel Corporation Haswell PCI Express x16 Controller [8086:0c01] (rev 06)
00:02.0 VGA compatible controller [0300]: Intel Corporation Haswell Integrated Graphics Controller [8086:0416] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Haswell HD Audio Controller [8086:0c0c] (rev 06)
00:16.0 Communication controller [0780]: Intel Corporation Lynx Point MEI Controller #1 [8086:8c3a] (rev 04)
00:19.0 Ethernet controller [0200]: Intel Corporation Unknown device [8086:153a] (rev 04)
00:1a.0 USB controller [0c03]: Intel Corporation Lynx Point USB Enhanced Host Controller #2 [8086:8c2d] (rev 04)
00:1b.0 Audio device [0403]: Intel Corporation Lynx Point HD Audio Controller [8086:8c20] (rev 04)
00:1c.0 PCI bridge [0604]: Intel Corporation Lynx Point PCI Express Root Port 1 [8086:8c10] (rev d4)
00:1c.2 PCI bridge [0604]: Intel Corporation Lynx Point PCI Express Root Port 3 [8086:8c14] (rev d4)
00:1c.4 PCI bridge [0604]: Intel Corporation Lynx Point PCI Express Root Port 5 [8086:8c18] (rev d4)
00:1c.5 PCI bridge [0604]: Intel Corporation Lynx Point PCI Express Root Port 6 [8086:8c1a] (rev d4)
00:1c.6 PCI bridge [0604]: Intel Corporation Lynx Point PCI Express Root Port 7 [8086:8c1c] (rev d4)
00:1c.7 PCI bridge [0604]: Intel Corporation Lynx Point PCI Express Root Port 8 [8086:8c1e] (rev d4)
00:1d.0 USB controller [0c03]: Intel Corporation Lynx Point USB Enhanced Host Controller #1 [8086:8c26] (rev 04)
00:1f.0 ISA bridge [0601]: Intel Corporation Lynx Point LPC Controller [8086:8c4f] (rev 04)
00:1f.2 SATA controller [0106]: Intel Corporation Lynx Point 6-Port SATA AHCI Controller [8086:8c03] (rev 04)
00:1f.3 SMBus [0c05]: Intel Corporation Lynx Point SMBus Controller [8086:8c22] (rev 04)
01:00.0 Display controller [0380]: Advanced Micro Devices [AMD] nee ATI Unknown device [1002:6660]
03:00.0 Network controller [0280]: Intel Corporation Centrino Advanced-N 6235 [8086:088e] (rev 24)
05:00.0 Network controller [0280]: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) [168c:002a] (rev 01)
0e:00.0 SD Host controller [0805]: O2 Micro, Inc. Unknown device [1217:8520] (rev 01)

 

 

Target OS X release:

  • Mavericks 10.9.5

Installation fully successful with myHack v3.3.1 and attached Latitude E6440 bootpack on a SATA-III 6Gb/s mSATA SSD, fitted into full-size mSATA/PCIe/USB internal slot, partitioned GUID, formatted Mac OS X (journaled). Initial build in 10.9.4, followed by 10.9.5 update.

E6440_Mav.jpg
 
E6440_10.9.5.jpg E6440_TurboBoost.jpg
E6440_HDMI#1.jpg
E6440_HDMI#2.jpg E6440_HDMI#3.jpg
E6440_Audio.jpg  E6440_USB.jpg

 

 

  :excl:  :excl:  :excl:

  • Reset BIOS to default and set SATA mode to AHCI to begin with
  • Mavericks installation with myHack USB installer should be done via left-side USB port (right + rear ones won't work initially).
  • Make sure you use a Haswell-patched kernel to boot the installer, i.e. boot the USB installer with Chameleon options: -f -v
  • Do not forget to copy this patched kernel to the root of the Mavericks partition upon installation completion but before you proceed with 1st reboot. Use Terminal from Utilities menu to that effect. Try and be quick because there is only a handful of seconds before the auto-restart countdown expires. If you miss it, just restart the USB installer and go straight to Utilities->Terminal to proceed.
  • Use the following command to copy Haswell-patched kernel: cp / /Volumes//mach_kernel

:excl:  :excl:  :excl:

 
Working:

  • full QE/CI with HD4600 on 1600x900 LCD (with DSDT patch)
  • HDMI video output in mirror and extension modes (hot plugging/unplugging Ok with patched Azul framebuffer)
  • keyboard backlight & backlight control OOB
  • trackpad + nub
  • LCD brightness control OOB
  • audio output (speakers/jack/HDMI with ALC292-patched AppleHDA, speakers only with VoodooHDA v2.8.1v or later + AppleHDADisabler)
  • built-in Gigabit Ethernet (with AppleIntelE1000e kext v2.5.4d)
  • Intel N6235 Bluetooth OOB (with removal of AppleHPET kext)
  • integrated Webcam OOB
  • display & system sleep/wake (with DSDT patch + hibernatemode set to 0 + deletion of /var/vm/sleepimage). Sleeps through lid closure, power button, Fn-F1, Apple Menu->Sleep and energy savings settings. Wakes through lid opening or On/Off button. 
  • wireless with compatible mini PCIe card/USB dongle (I added an Atheros AR5B93 half-size mini-PCIe card in the WWAN slot - works OOB)
  • battery management & monitoring (with VoodooBattery or AppleSmartBatteryManager kext v1.32)
  • limited native SpeedStep (multipliers 8, 17, 26) @0.8/1.7/2.6GHz  + TurboBoost (multipliers 27-32/33) @2.7-3.2/3.3GHz (Kozlek's FakeSMC  v6.11.1328 tuned up for MBA6,2/SMC keys 2.13f9/smc-huronriver + SMBIOS MBP11,1 + tuned-up SSDT)
  • all USB3.0 ports OOB (with DSDT patch + removal of AppleHPET kext)
  • SD card reader (with DSDT patch)

 

Not tested yet:

  • ExpressCard

 

Not working yet:

  • VGA video output (feasible on HD4600?)

 

GeekBench 2.4.3 (32bit) gives a good 8000+ rating:
E6440_GB32.jpg
 
 

Mavericks full /Extra pack: 

  • E6440_i5-4300M_HD4600_Mav-Pack.zip
  • E6440_i5-4300M_HD4600_Mav-Pack#2.zip
  • E6440_i5-4300M_HD4600_Mav-Pack#3.zip
  • E6440_i5-4300M_HD4600_Mav-Pack#4.zip
  • E6440_i5-4300M_HD4600_Mav-Pack#5.zip
  • E6440_i5-4300M_HD4600_Mav-Pack#6.zip
  • E6440_i5-4300M_HD4600_Mav-Pack#7.zip
  • E6440_i5-4300M_HD4600_Mav-Pack#8.zip
  • E6440_i5-4300M_HD4600_Mav-Pack#9.zip

 

Haswell-patched 10.9 kernels:

 

DSDT patches applied:

  • original raw DSDT clean-up (12 errors)
  • Azul framebuffer #12 injection
  • USB sleep (devices EHC1/EHC2/XHC)
  • audio after sleep
  • Display PrefPane brightness bar
  • Lid closure sleep
  • SD card reader (compatibility with device listed in AppleSDXC kext)

 

:!:   :!:   :!: Other E6440 laptops fitted with same graphics hardware config (GPU + LCD) but different CPUs will require a different SSDT table than provided in the above pack (can be looked up on the web or created with SSDT generator tool -> See RampageDev's blog for detailed guide).  In such cases and in order to avoid CPU power management-related kernel panics (KP), NullCPUPowerManagement kext is recommended until the CPU-specific SSDT is generated. The kext just needs to be added to /Extra/Extensions followed by myHack->myFix (quick).

 
- - - - - - - - - -
Edit #1: 22 Oct 2014

  • added a patched DSDT to obtain Sleep/Wake (raw DSDT extracted from BIOS A05)
  • cleaned up some kexts
  • changed SMBIOS from MacBookAir6,2 to MacBookPro11,1 to gain 1 intermediate SpeedStep multiplier: x17 @1.7GHz

- - - - - - - - - -
Edit #2: 09 Nov 2014

  • all USB ports + Intel N6235 BlueTooth work OOB after removal of AppleHPET kext from /S/L/E
  • post clean-up

- - - - - - - - - -
Edit #3: 14 Feb 2015

  • added DSDT patches for Display PrefPane brightness bar + sleep on lid closure
  • added 10.9.5 Security Update 2015-002 Haswell-patched kernel

- - - - - - - - - -
Edit #4: 11 Mar 2015

  • added revised SSDT table modified to support x17 intermediate CPU multiplier + Sleep through Fn-F1

- - - - - - - - - -
Edit #5: 10 Apr 2015

  • Replaced joe82's AppleSDXC kext patch by DSDT patch to support SD card reader natively OOB

- - - - - - - - - -
Edit #6: 13 Apr 2015

  • Little cleanup of the thread

- - - - - - - - - -

Edit #7: 5 Jul 2015

  • Added 10.9.5 Security Update 2015-005 Haswell-patched kernel

- - - - - - - - - -

Edit #8: 5 Aug 2016

  • Revised DSDT to fully support USB3.0 ports natively (renaming of XHC to XHC1, Darwin OSYS) and fix issue of instant Wake on Sleep (removal of _PRW methods for devices GLAN/HDEF/EHC1/EHC2/XHC1)
  • Added Rehabman's FakePCIID + FakePCIID_XHCIMux kexts to support USB USB3.0/USB2.0 mux
  • Removed ACPIPoller kext and patched AppleSDXC kexts
  • Replaced VoodooHDA/AppleHDADisabler by patched AppleHDA (to be copied to /S/L/E)
  • Replaced VoodooBattery kext by Rehabman's ACPIBatteryManager kext
  • Like 5

Share this post


Link to post
Share on other sites

I've now edited the DSDT a 2nd time to inject the HD4600 info into OS X rather than specify Azul FrameBuffer (=12) through the bootloader. The following ACPI code was added in Device (GFX0) under the line Name (_ADR, 0x00020000):

            Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x06)
                {
                    "device-id",
                    Buffer (0x04)
                    {
                        0x16, 0x04, 0x00, 0x00
                    },
                    "AAPL,ig-platform-id",
                    Buffer (0x04)
                    {
                        0x06, 0x00, 0x26, 0x0a    // FB #12, replaces default FB #7 0x00 0x00 0x26 0x0c
                    },
                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

The device-id speaks for itself (see hardware specs of post #1) and the ig-platform-id is the HD4600 Layout ID that corresponds to Azul framebuffer #12 (12 = 0a260006 = 32MB, Pipes: 3, Ports: 3, FBMem: 3, ULT Mobile GT3). Data confirmed by IOReg information obtained having booted fully naked without DSDT or IntelAzulFB=12: raw IOReg showed default frame buffer #7 (0x0c260000), which does not provide QE/CI in OS X:

IOReg_GFX0.jpg

 
In addition, since it was missing, the following DTGP method code was added under Method _WAK:

    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, Buffer (0x10)
                {
                    /* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                    /* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                }))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                            0x03
                        }, Arg4)
                    Return (One)
                }
                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }
        Store (Buffer (One)
            {
                0x00
            }, Arg4)
        Return (Zero)
    }

The Mavericks pack provided in post #1 was updated to that effect (pack #2).

 

This was again done thanks to RampageDev's most excellent documentation, in the present case his Intel HD Graphics Guide published on his blog.

Share this post


Link to post
Share on other sites

Some further kext clean-up due to USB3.0 ports all working OOB and without the need for GenericUSBXHCI kext. Patched_10.7_AppleRTC kext removed too, it's not required. Updated pack in post #1 consequently (pack #3).

 

Generated a new tuned-up SSDT with PikerAlpha's latest release of ssdtPRGen.sh tool (many thanks for this tool Piker).

Share this post


Link to post
Share on other sites

Apple having unified display and computer sleep for Haswell platforms, the Energy Saver preference panel only shows one sleep bar:

EnergySavings_Haswell_Unified.jpg

 

To revert to the traditional separation, the Mac model platform plist needs to be edited to turn off this sleep unification.

 

In plugin kext X86PlatformPlugin of /S/L/E/IOPlatformPluginFamily, a list of Mac model plists is found in the Resources subfolder. Each Mac model corresponds to the board number specified in the SMBIOS plist of a Hackintosh. In the present case of a MacBookPro11.1, the Mac model is 189A3D4F975D5FFC as displayed in Chameleon Wizard for instance:

Mac-model_SMBIOS.jpg

 

As such, the plist Mac-189A3D4F975D5FFC.plist should be modified as follows:

-> before

     <key>UnifiedSleepSliderPref</key>
      <true/>

-> after

     <key>UnifiedSleepSliderPref</key>
      <false/>
Once the plist is changed, the kext cache can be rebuilt. On subsequent reboot, the Energy Saver panel will be back to its traditional form and can be adjusted as desired (otherwise, it's command lines only... :?) :
EnergySavings_Haswell_NotUnified.jpg
  • Like 1

Share this post


Link to post
Share on other sites

Sorted the HDMI hot-plug freeze with patched IntelAzulFramebuffer posted by Joe82. The HDMI cable can now be hot plugged/unplugged at any time after Mavericks has booted. Mavericks pack in post #1 adjusted accordingly (pack #4).

E6440_HD4600_1Go.jpg

 

I'll try to experiment with bin re-patching of the original Azul frame buffer later on this week.

 

NB: HDMI display may require some underscan adjustment so that the OS X screen fits within the display limits.

Share this post


Link to post
Share on other sites

I fixed the lack of audio after sleep by applying the same DSDT patch to HDEF device as I did for the EHC1/EHC2/XHC devices:

           Method (_DSM, 4, Serialized)
           {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03
                    })
                }
                Return (Package (0x10)
                {
                    "layout-id",                        // specific to HDEF for patched AppleHDA
                    Buffer (0x04)                       // specific to HDEF for patched AppleHDA
                    {                                   // specific to HDEF for patched AppleHDA
                         0x01, 0x00, 0x00, 0x00         // specific to HDEF for patched AppleHDA
                    },                                  // specific to HDEF for patched AppleHDA
                    "AAPL,clock-id", 
                    Buffer (One)
                    {
                         0x01
                    }, 
                    "built-in", 
                    Buffer (One)
                    {
                         0x00
                    }, 
                    "AAPL,current-available", 
                    0x0834, 
                    "AAPL,current-extra", 
                    0x0898, 
                    "AAPL,current-extra-in-sleep", 
                    0x0640, 
                    "AAPL,device-internal", 
                    0x02, 
                    "AAPL,max-port-current-in-sleep", 
                    0x0834
                })
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }

The lines about layout-id being specific to HDEF.
 

The Mavericks pack of post #1 was updated accordingly (pack #5).

Share this post


Link to post
Share on other sites

Rename B0D3 to HDAU and add _dsm to HDAU will get you HDMI Audio

Credited to joe82

         Device (HDAU)        
        {
            Name (_ADR, 0x00030000)
            Name (BARA, 0x80000000)
            Name (TBAR, Zero)
            Name (TCMD, Zero)
            Name (MODB, Zero)
            Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x02)
                    {
                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

Share this post


Link to post
Share on other sites

Moved on to Yosemite...
 
E6440_i5-4300M_HD4600_Yos10.10.jpg
 
E6440_Yos.jpg E6440_Yos_SpeedStep_Turbo.jpg
 
E6440_DVDPlayer_features.jpg E6440_CardReader.jpg
 
Good news: everything that works under Mavericks also works under Yosemite.
 
 
Installation process was the same one as I previously used for the D630n, i.e. manual USB installer creation + Clover boot loader:

  • Mount InstallESD.dmg found in Install OS X Yosemite.app/Contents/SharedSupport
  • Then mount BaseSystem.dmg (hidden file)
open /Volumes/OS\ X\ Install\ ESD/BaseSystem.dmg
  • Use Disk Utility to restore the contents of BaseSystem.dmg on a USB key (or HDD partition) formatted Mac OS extended (journaled).
  • Remove link for Packages in folder System/Installation of your USB key
rm /Volumes/OS\ X\ Base\ System\ 1/System/Installation/Packages
  • Copy folder Packages located in InstallESD.dmg to folder System/Installation of your USB key
cp -R /Volumes/OS\ X\ Install\ ESD/Packages /Volumes/OS\ X\ Base\ System\ 1/System/Installation
  • Copy the 2 hidden files (BaseSystem.dmg & Basesystem.chunklist) of InstallESD.dmg to the root of your USB key
cp /Volumes/OS\ X\ Install\ ESD/BaseSystem.* /Volumes/OS\ X\ Base\ System\ 1

|

For those who want to use Clover as boot loader:

  • Install Clover_v2k_r2695.zip (or later) to your USB key.
  • Configure your config.plist to boot with option "kext-dev-mode=1" as follows:
<key>Boot</key>
   <dict>
      <key>Arguments</key>
      <string>-v kext-dev-mode=1</string>
   </dict>

* About option "kext-dev-mode=1": in Yosemite, "unsigned or malsigned" kexts will not be loaded. To use such kexts, the restriction can be lifted by adding option "kext-dev-mode=1" at boot phase.

  • Copy all your kexts (FakeSMC.kext, etc.) to EFI/CLOVER/kexts/10.10 (consider this the "kext" boot pack). Grab kexts from the Mavericks boot pack.
  • Copy the SSDT + Yosemite-specific DSDT to EFI/CLOVER/ACPI/patched E6440_HD4600_Yos10.10_DSDT.aml.zip
  • Adjust Clover config.plist as required (you can use this file E6440_HD4600_Clover_config.plist.zip).
  • Start your USB key.
  • The OS X installer should then load. Proceed with installation as usual.

The DSDT differs from the Mavericks version in the sense that it injects fake desktop HD4600 id 0x0412 to replace mobile HD4600 id 0x0416. The reason for this is that Apple did not include support for Mobile HD4600 in their Yosemite Azul framebuffer and AppleIntelHD5000Graphics kexts. In that same sense, those 2 kexts also require to be patched to add/inject the mobile HD4600 id 0x04168086 in the Info plist and binmod the kext binary file to replace desktop HD4600 id (86 80 12 04) by mobile HD4600 id (86 80 16 04). All this is quite extensively documented on the web and results from the work of several well-known Hackintoshers like Pike.R.Alpha or RehabMan and others...
 
The following patched kexts should be copied to /S/L/E to replace the original ones (keep a backup somewhere).
AppleIntelFramebufferAzul.kext.zip AppleIntelHD5000Graphics.kext.zip 
 
You may also do the same with the following patched kext in order to avoid the corrupt screen on Yosemite desktop initialisation.
IOGraphicsFamily.kext.zip
 
 
For those who wish to use Chameleon instead of Clover (you can safely use r2395 or r2401 and possibly above):

  • copy the Haswell-patched kernel to be placed as is at Yosemite partition's root or in /S/L/K as "kernel" to replace the vanilla file (here again, keep a backup).
  • create /Extra folder with Yosemite-specific DSDT + SSDT + SMBIOS & boot plists using the following pack:
    • E6440_i5-4300M_HD4600_Yos-Pack.zip
    • E6440_i5-4300M_HD4600_Yos-Pack#2.zip
    • E6440_i5-4300M_HD4600_Yos-Pack#3.zip
    • E6440_i5-4300M_HD4600_Yos-Pack#4.zip
    • E6440_i5-4300M_HD4600_Yos-Pack#5.zip
  • copy the Yosemite pack kexts to /S/L/E, replacing any vanilla kext (keep a backup beforehand); alternatively, copy kexts to /L/E
  • open Terminal and rebuild permissions and cache with commands sudo chmod -R 755 /S*/L*/E* + sudo chown -R 0:0 /S*/L*/E* sudo touch /S*/L*/E* + sudo kextcache -Boot -U / (replace /S*L/*E* by /L*/E* if you copied kexts to /L/E)

With Chameleon, it's critical to rebuild the cache with above 4 commands or the installation will become unbootable. Chameleon cannot boot Yosemite without cache! As such, bear that in mind any time you add or modify kexts in Yosemite.
 
 
Remember to set hibernate mode to 0 (zero) and to remove /var/vm/sleepimage.
 
The system requires additional tuning so additional posts will follow in due course.

 

:!:    :!:    :!: Again, other E6440 laptops fitted with same graphics hardware config (GPU + LCD) but different CPUs will require a different SSDT table than provided in the above pack (can be looked up on the web or created with SSDT generator tool -> See RampageDev's blog for detailed guide).  In such cases and in order to avoid CPU power management-related kernel panics (KP), NullCPUPowerManagement kext is recommended until the CPU-specific SSDT is generated. The kext just needs to be added to /Extra/Extensions or /S/L/E.

Share this post


Link to post
Share on other sites

Finally fixed the rear+right+internal USB ports issue by removing /S/L/E/AppleHPET kext. It's an old known issue in fact. This applies to both Mavericks and Yosemite. Everything works OOB afterwards (including Intel N6235 card's Bluetooth).  :)

 

Post #1 updated accordingly.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...