- Joined
- May 23, 2011
- Messages
- 248
- Motherboard
- Lenovo T440S / Toshiba X205-SLI6 / Toshiba C850 / Dell T110 / Lenovo T410 / MP3,1 / MBP4,1
- CPU
- i5 4300U / T9300 / i3 3110M / 8x 2.8Ghz Xeon / i5 560m / 8x 3.2Ghz X5482 / T9300
- Graphics
- HD4400 / 2x 8600M GT / Intel HD4000 / Intel IronLake / HD5770 / 8800GT & GTX650 / 8600M GT
- Mac
- Classic Mac
- Mobile Phone
This is a quick guide for the T440s... it should provide you with all of the features the laptop can provide.
System: Lenovo T440s 20ARS0HB01
CPU: i5 vPro 4300U @ 1.9Ghz
RAM: 12Gb DDR3L (4Gb soldered to motherboard, 8Gb in open slot)
Graphics: HD4400, 1600x900 TFT LCD
(I've upgraded to 1920x1080 IPS FHD Non-Touchscreen)
SSD: Intel 180GB SSD (upgraded to Samsung 840 Evo 1TB)
BT: Combo card - Intel 7260AC (OSX sees Intel Blue Moon BT but it doesn't really work)
Audio: ALC 292
WLAN: Intel 7260AC M.2 NGFF
The idea is to make the OS think this is a MacBookAir6,2 and this guide is targeted at OSX 10.10.2.
NON_WORKING:
Intel 7260AC NGFF M.2 WiFi + BT combo card - unsupported chipset
Media Card reader - unsupported chipset
UNTESTED:
VGA - I'm going to assume it does not work
MiniDisplayPort - there is a patch for audio for this but its also untested
WORK IN PROGRESS:
WiFi / BT card replacement...
This laptop BIOS is encrypted and the only method to bypass the whitelisting would be to use an external SPI programmer to flash a modified BIOS. There are no known methods to bypass this at this time.
The other issue is that this laptop has M.2 NGFF slots (default 2 slots optional 3rd slot) which means the replacement options are basically non-existent at this time. You will need a compatible card that has the A+E key configuration. The Dell DW1560 card seems to be the best possible replacement card when it is actually available.
Currently I have an adapter card setup to attempt to add WiFi by using an atheros card and rebranding to bypass whitelist ... it almost works ... The card turns on but it is unable to detect any access points. It has had one bonus side effect in that once I added it then iMessage was able to function properly. Before it was installed I was getting the message to call Apple Care.
Side note: Dual battery support isn't the best in 10.10 (worked fine in 10.8/10.9 but Apple removed some support) You can monitor the battery charge percentages using HWMonitor. Once one battery gets to ~6% remaining the laptop will change to draw power from the other battery. This is a seamless transition.
I've had no issues using docking port and the USB ports and NIC on the docking station, however I have not connected any displays to the docking station so I'm unable to say if those displays work or not.
--Start of DSDT fixes--
This is made for BIOS version 2.32. I made the guide since I was updating the BIOS version for my 3rd time so it just seemed logical to have all the steps in one place.
Its easiest to extract ACPI tables via clover (using F4 or Fn+F4 at clover screen).
I chose to manually combine all SSDT and DSDT together along with the SSDT generated via ssdtPRGen except for SSDT-11 as it fails to compile properly and I can't figure out a fix for it. I've spent a lot of time with this laptop's DSDT/SSDTs and you may not decide to do that combination yourself. If you don't you'll need to determine which SSDTs you will need to patch on your own.
When I apply patches I will always run a single patch then compile to verify it didn't create any compile issues.
Patches to apply using MaciASL and Rehabman's patch repository:
Manual fixes:
LED wake fix (stops LED from continuing to blink after wake from sleep)
Example:
Always run fan at high speed (part patch part manual fix)
Example:
Custom patches:
Always run fan at high speed (part patch part manual fix)
Add missing Airport device
Fix the Fn keys so that all of them have a function
--End of DSDT fixes--
Using platform ID 0x0a260006
Config.plist kexts to patch
You may want to add a SMC key into FakeSMC to fix logging about an AC adapter power issue...
Installed 'add-on' kexts:
ACPIBacklight.kext
ACPIBatteryManager.kext
AppleHDA_ALC292.kext
FakePCIID.kext
FakePCIID_HD4600_HD4400.kext
FakePCIID_Intel_HDMI_Audio.kext
FakeSMC.kext
IntelMausiEthernet.kext
VoodooPS2Controller.kext
I think that is all I've done to customize this laptop so far...
BIOS settings will impact if sleep works or not, if they are wrong you will see wake caused by USB even if no USB devices are installed. If someone needs help I can post screenshots of each BIOS page.
I'm using Clover to boot in UEFI mode with CSM off for the record with clover installed to the EFI partition.
Like many others here Rehabman has provided a lot of valuable help to get to this stage. Thanks!
System: Lenovo T440s 20ARS0HB01
CPU: i5 vPro 4300U @ 1.9Ghz
RAM: 12Gb DDR3L (4Gb soldered to motherboard, 8Gb in open slot)
Graphics: HD4400, 1600x900 TFT LCD
(I've upgraded to 1920x1080 IPS FHD Non-Touchscreen)
SSD: Intel 180GB SSD (upgraded to Samsung 840 Evo 1TB)
BT: Combo card - Intel 7260AC (OSX sees Intel Blue Moon BT but it doesn't really work)
Audio: ALC 292
WLAN: Intel 7260AC M.2 NGFF
The idea is to make the OS think this is a MacBookAir6,2 and this guide is targeted at OSX 10.10.2.
NON_WORKING:
Intel 7260AC NGFF M.2 WiFi + BT combo card - unsupported chipset
Media Card reader - unsupported chipset
UNTESTED:
VGA - I'm going to assume it does not work
MiniDisplayPort - there is a patch for audio for this but its also untested
WORK IN PROGRESS:
WiFi / BT card replacement...
This laptop BIOS is encrypted and the only method to bypass the whitelisting would be to use an external SPI programmer to flash a modified BIOS. There are no known methods to bypass this at this time.
The other issue is that this laptop has M.2 NGFF slots (default 2 slots optional 3rd slot) which means the replacement options are basically non-existent at this time. You will need a compatible card that has the A+E key configuration. The Dell DW1560 card seems to be the best possible replacement card when it is actually available.
Currently I have an adapter card setup to attempt to add WiFi by using an atheros card and rebranding to bypass whitelist ... it almost works ... The card turns on but it is unable to detect any access points. It has had one bonus side effect in that once I added it then iMessage was able to function properly. Before it was installed I was getting the message to call Apple Care.
Side note: Dual battery support isn't the best in 10.10 (worked fine in 10.8/10.9 but Apple removed some support) You can monitor the battery charge percentages using HWMonitor. Once one battery gets to ~6% remaining the laptop will change to draw power from the other battery. This is a seamless transition.
I've had no issues using docking port and the USB ports and NIC on the docking station, however I have not connected any displays to the docking station so I'm unable to say if those displays work or not.
--Start of DSDT fixes--
This is made for BIOS version 2.32. I made the guide since I was updating the BIOS version for my 3rd time so it just seemed logical to have all the steps in one place.
Its easiest to extract ACPI tables via clover (using F4 or Fn+F4 at clover screen).
I chose to manually combine all SSDT and DSDT together along with the SSDT generated via ssdtPRGen except for SSDT-11 as it fails to compile properly and I can't figure out a fix for it. I've spent a lot of time with this laptop's DSDT/SSDTs and you may not decide to do that combination yourself. If you don't you'll need to determine which SSDTs you will need to patch on your own.
When I apply patches I will always run a single patch then compile to verify it didn't create any compile issues.
Patches to apply using MaciASL and Rehabman's patch repository:
Code:
Remove _DSM
Replace Names (sourceforge)
Remove WMI (sourceforge - run 3 times to remove all 3 WMI devices)
Rename PCI0.VID to PCI0.IGPU
Haswell HD4600 Yosemite
battery lenovo X220 (remove lines to keep second battery before running)
IRQ Fix
SMBUS Fix
AC Adapter Fix
Add MCHC
Fix _WAK Arg0 v2
Fix PNOT/PPNT
Add IMEI
Haswell LPC
Brightness fix (Haswell)
7-series / 8-series USB
Insert DTGP (sourceforge)
Manual fixes:
LED wake fix (stops LED from continuing to blink after wake from sleep)
Code:
# add these lines into method _WAK after NVSS
\_SB.PCI0.LPC.EC.LED (Zero, 0x80)
\_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
Code:
If (LEqual (Arg0, 0x03))
{
NVSS (Zero)
\_SB.PCI0.LPC.EC.LED (Zero, 0x80)
\_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
If (OSC4)
{
PNTF (0x81)
}
Always run fan at high speed (part patch part manual fix)
Code:
# add these lines into \_SB.PCI0.LPC.EC after the BATW method
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0x84),
HFN1, 16
}
Example:
Code:
}
}
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0x84),
HFN1, 16
}
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
BRC0, 8,
BRC1, 8,
BFC0, 8,
Custom patches:
Code:
# OS Check fix - Emulate windows 8 or higher:
into method label _INI parent_label \_SB code_regex If\s+\(\\_OSI\s+\(\"Windows\s2013\"\)\) replace_matched
begin If(LOr(_OSI("Darwin"),_OSI("Windows 2013"))) end;
Code:
# HDMI / Display Port Audio fix (untested)
# rename B0D3 to HDAU
into device label B0D3 set_label begin HDAU end;
into_all all code_regex B0D3 replaceall_matched begin HDAU end
Code:
# Add ALC292 information into HDEF device
into device label HDEF parent_label PCI0 remove_entry;
into device label PCI0 insert begin
Device (HDEF)\n
{\n
Name (_ADR, 0x001B0000) // _ADR: Address\n
Name (_S3D, 0x03) // _S3D: S3 Device State\n
Name (RID, Zero)\n
Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake\n
{\n
0x0D,\n
0x04\n
})\n
\n
OperationRegion (HDAR, PCI_Config, 0x4C, 0x10)\n
Field (HDAR, WordAcc, NoLock, Preserve)\n
{\n
DCKA, 1,\n
Offset (0x01),\n
DCKM, 1,\n
, 6,\n
DCKS, 1,\n
Offset (0x08),\n
Offset (0x09),\n
PMEE, 1,\n
, 6,\n
PMES, 1\n
}\n
\n
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method\n
{\n
Store (Package (0x08)\n
{\n
"codec-id",\n
Buffer (0x04)\n
{\n
0x92, 0x02, 0xEC, 0x10\n
},\n
\n
"layout-id",\n
Buffer (0x04)\n
{\n
0x01, 0x00, 0x00, 0x00\n
},\n
\n
"device-type",\n
Buffer (0x0F)\n
{\n
"Realtek ALC292"\n
},\n
\n
"PinConfigurations",\n
Buffer (One)\n
{\n
0x00\n
}\n
}, Local0)\n
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
Return (Local0)\n
}\n
}\n
end;
Always run fan at high speed (part patch part manual fix)
Code:
# Add SMCD device
into device label SMCD parent_label LPC remove_entry;
into device label LPC insert begin
Device (SMCD)\n
{\n
Name (_HID, "monitor")\n
Method (FAN0, 0, NotSerialized)\n
{\n
Store (^^EC.HFN1, Local0)\n
Return (Local0)\n
}\n
Method (TCPU, 0, NotSerialized)\n
{\n
Store (^^EC.TMP0, Local0)\n
If (LLessEqual (Local0, 0x32))\n
{\n
Store (0x07, ^^EC.HFSP)\n
}\n
If (LGreaterEqual (Local0, 0x55))\n
{\n
Store (0x07, ^^EC.HFSP)\n
}\n
Else\n
{\n
If (LGreaterEqual (Local0, 0x4B))\n
{\n
Store (0x07, ^^EC.HFSP)\n
}\n
Else\n
{\n
If (LGreaterEqual (Local0, 0x46))\n
{\n
Store (0x07, ^^EC.HFSP)\n
}\n
Else\n
{\n
If (LGreaterEqual (Local0, 0x41))\n
{\n
Store (0x07, ^^EC.HFSP)\n
}\n
Else\n
{\n
If (LGreaterEqual (Local0, 0x3D))\n
{\n
Store (0x07, ^^EC.HFSP)\n
}\n
}\n
}\n
}\n
}\n
Return (Local0)\n
}\n
}\n
end;
Add missing Airport device
Code:
# Add Airport device
into device label EXP2 parent_label PCI0 insert
begin
Device (ARPT)\n
{\n
Name (_ADR, Zero)\n
Name (_PRW, Package (0x02)\n
{\n
0x09, \n
0x04\n
})\n
Method (_DSM, 4, NotSerialized)\n
{\n
Store (Package (0x04)\n
{\n
"AAPL,slot-name", \n
Buffer (0x08)\n
{\n
"AirPort"\n
}, \n
"device_type", \n
Buffer (0x08)\n
{\n
"AirPort"\n
}\n
}, Local0)\n
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
Return (Local0)\n
}\n
}\n
end;
Fix the Fn keys so that all of them have a function
Code:
#T440s Fn key fix
# _Q15 (Fn+F5) brightness down key
into method label _Q15 replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x0205)\n
Notify(\_SB.PCI0.LPC.KBD, 0x0285)\n
end;
# _Q14 (Fn+F6) brightness up key
into method label _Q14 replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x0206)\n
Notify(\_SB.PCI0.LPC.KBD, 0x0286)\n
end;
# _Q6A (Fn+F4) Microphone Mute key
into method label _Q6A replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x0168)\n
Notify(\_SB.PCI0.LPC.KBD, 0x01e8)\n
end;
# _Q16 (Fn+F7) Projector / Mirror mode key
into method label _Q16 replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x026e)\n
Notify(\_SB.PCI0.LPC.KBD, 0x02ee)\n
end;
# _Q64 (Fn+F8) Wireless disable key
into method label _Q64 replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x0169)\n
Notify(\_SB.PCI0.LPC.KBD, 0x01e9)\n
end;
# _Q66 (Fn+F9) Settings key
into method label _Q66 replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x0164)\n
Notify(\_SB.PCI0.LPC.KBD, 0x01e4)\n
end;
# _Q67 (Fn+F10) Spotlight key
into method label _Q67 replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x0165)\n
Notify(\_SB.PCI0.LPC.KBD, 0x01e5)\n
end;
# _Q68 (Fn+F11) App switcher key
into method label _Q68 replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x0166)\n
Notify(\_SB.PCI0.LPC.KBD, 0x01e6)\n
end;
# _Q69 (Fn+F12) Launchpad key
into method label _Q69 replace_content
begin
Notify(\_SB.PCI0.LPC.KBD, 0x0167)\n
Notify(\_SB.PCI0.LPC.KBD, 0x01e7)\n
end;
--End of DSDT fixes--
Using platform ID 0x0a260006
Config.plist kexts to patch
Code:
<key>KextsToPatch</key>
<array>
<dict>
<key>Comment</key>
<string>Enable TRIM for SSD</string>
<key>Find</key>
<data>
AEFQUExFIFNTRAA=
</data>
<key>Name</key>
<string>IOAHCIBlockStorage</string>
<key>Replace</key>
<data>
AAAAAAAAAAAAAAA=
</data>
</dict>
<dict>
<key>Comment</key>
<string>AppleHDA ALC 292 #2</string>
<key>Find</key>
<data>
hAjsEA==
</data>
<key>Name</key>
<string>AppleHDA</string>
<key>Replace</key>
<data>
AAAAAA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>9MB cursor bytes patch</string>
<key>Find</key>
<data>
BgAmCgEDAwMAAAACAAAwAQAAYAA=
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
BgAmCgEDAwMAAAACAAAwAQAAkAA=
</data>
</dict>
<dict>
<key>Comment</key>
<string>AppleHDA ALC 292 #1</string>
<key>Find</key>
<data>
hBnUEQ==
</data>
<key>Name</key>
<string>AppleHDA</string>
<key>Replace</key>
<data>
kgLsEA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>Second Stage Patch 2</string>
<key>Find</key>
<data>
QYjE6wM=
</data>
<key>Name</key>
<string>IOGraphicsFamily</string>
<key>Replace</key>
<data>
QYjE6yM=
</data>
</dict>
<dict>
<key>Comment</key>
<string>Second Stage Patch 1</string>
<key>Find</key>
<data>
hcB0XUg=
</data>
<key>Name</key>
<string>IOGraphicsFamily</string>
<key>Replace</key>
<data>
McB0W0g=
</data>
</dict>
<dict>
<key>Comment</key>
<string>AppleHDA ALC 292 #3</string>
<key>Find</key>
<data>
hQjsEA==
</data>
<key>Name</key>
<string>AppleHDA</string>
<key>Replace</key>
<data>
AAAAAA==
</data>
</dict>
<dict>
<key>Comment</key>
<string>Bootloader Graphics - Second Stage Patch</string>
<key>Find</key>
<data>
QYjE6xE=
</data>
<key>Name</key>
<string>IOGraphicsFamily</string>
<key>Replace</key>
<data>
QYjE6zE=
</data>
</dict>
</array>
You may want to add a SMC key into FakeSMC to fix logging about an AC adapter power issue...
Code:
<key>ACID</key>
<array>
<string>ch8*</string>
<data>
hfwETdgSevQ=
</data>
</array>
Installed 'add-on' kexts:
ACPIBacklight.kext
ACPIBatteryManager.kext
AppleHDA_ALC292.kext
FakePCIID.kext
FakePCIID_HD4600_HD4400.kext
FakePCIID_Intel_HDMI_Audio.kext
FakeSMC.kext
IntelMausiEthernet.kext
VoodooPS2Controller.kext
I think that is all I've done to customize this laptop so far...
BIOS settings will impact if sleep works or not, if they are wrong you will see wake caused by USB even if no USB devices are installed. If someone needs help I can post screenshots of each BIOS page.
I'm using Clover to boot in UEFI mode with CSM off for the record with clover installed to the EFI partition.
Like many others here Rehabman has provided a lot of valuable help to get to this stage. Thanks!