Thinkpad x230 OS X - running natively with full functionality.
PLEASE NOTE THIS GUIDE MAY OR MAY NOT BE DEPRECIATED.
This repository will no longer be maintained.
Last updated: April 25 2016
Note: This is NOT a spoonfeeding guide, other resources may be required to pull you up to speed. This page is meant to reduce the amount of googling and testing what works and what doesn't.
Specs
- Model: x230 2320-32U
- CPU: Intel i5-3210M 2.50GHz
- RAM: 12GB DDR3
- Storage: 128GB SSD
- OS: OS X El Capitan 10.11.4
- Bootloader: Clover v2.3K R3320 UEFI
- EFI BIOS: 2.65
- ECV BIOS: 1.14
Working
- Power Management (C/P-states, fan RPM, speedstep, etc)
- Ethernet
- USB ports
- Battery status
- Keyboard, trackpad, trackpoint
- Sleep from menu + lid close sleep
- HD4000 (Brightness control with fn + k, fn + p and QE/CI active, external display with Mini-DP)
- Sound over Mini-DP -> HDMI
- Wireless (Using USB mini WLAN adapter with native drivers from manufacturer)
- Sound/Audio, automatic headphone detection, mute, volume controls fully working
- Webcam
- Bluetooth
Not working
- Built in mini-PCIE WLAN card (could swap card with Atheros 9280 and rebrand as Intel 6300)
- Card reader (never tried)
- Fingerprint reader
- VGA (does not exist on real apple computers)
Bugs
- Sound works on resume after you sleep from menu. Afterwards, lid close and resume, sound will work
- Boot screen logo glitch, reduce with custom logo = none, config.plist in Clover edit
- -xcpm boot argument will cause kernel panic (KP)
Summary of problems and fixes
Feature | Problem | Fix (tldr DSDT patches are your friend) |
---|---|---|
Sleep | Instant wake, device doesn't stay asleep | Apply DSDT USB3 instant wake 0x0, RTC patches |
Audio | No devices in sound preferences | Inject patched AppleHDA, codec is ALC297VC_v3 (layout-id in DSDT is hex, LayoutID in AppleHDA is dec) |
Battery and PM | No battery status, no native PM | Apply DSDT patch with Thinkpad x230i + Fix Mutex with non-zero synclevel |
GPU | Graphics not working natively | Apply DSDT patches for iGPU, brightness HD4000 + Low resolution |
USB | Ports not working/keeps device awake | Apply DSDT patches Ivy Bridge = Intel 7 series USB |
Sleep/power LED | LED remains in blinking state after wake | # add these lines into method _WAK after NVSS: _SB.PCI0.LPC.EC.LED (Zero, 0x80) _SB.PCI0.LPC.EC.LED (0x0A, 0x80) _SB.PCI0.LPC.EC.LED (0x07, Zero) |
Brightness Control | Brightness control keys don't respond | # _Q15 (Fn+F8) 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+F9) 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; |
AppleHDA injection methods (choose one from the list)
- DSDT patch HDEF + IRQ (layout-id is in hex) - preferred
- Clover config.plist
- HDAEnabler.kext
AppleHDA patching methods (choose one from the list)
- Modify AppleHDA.kext by itself, rewrite AppleHDA.kext in /S/L/E, injecting with any method
- Live patch AppleHDA.kext + injecting DummyHDA.kext with any method
Sound after sleep issues
- CodecCommander loaded in /S/L/E w/ Kext Utility or with KextBeast + repair permissions/cache script
Commands to check AppleHDA, if anything returns empty = game over, restore default AppleHDA in /S/L/E and restart process
- Check AppleHDA kext load status: kextstat | grep -y applehda
- sudo touch /System/Library/Extensions && sudo kextcache -u /
- Use DCPIManager to check audio devices and if codec ID, revision, codec name are empty = bad
- Check custom loaded kext status: kextstat | grep -v com.apple
BIOS settings
Item | Setting |
---|---|
Config/Network/Wake On Lan | Disabled |
USB UEFI BIOS Support | Enabled |
Always On USB | Disabled |
USB 3.0 Mode | Enabled |
Power Intel Rapid Start Technology | Disabled |
Serial SATA Controller Mode Option | AHCI |
Security Predesktop Authentication | Disabled |
Security Chip | Disabled |
Memory Protection Execution Prevention | Enabled |
Virtualization | Disabled |
Fingerprint Reader | Disabled |
Anti Theft | Disabled |
Computrace | Disabled |
Secure Boot | Disabled |
Startup Network Boot | PCI Lan |
UEFI/Legacy Boot | UEFI Only |
CSM Support | Disabled |
Boot Mode | Quick |
Install
- Follow tonymacx86 Unibeast steps to make your USB (I don't personally use MultiBeast). http://www.tonymacx86.com/el-capitan-desktop-guides/172672-unibeast-install-os-x-el-capitan-any-supported-intel-based-pc.html
- Mount EFI partition of USB with EFI Mounter v3 (from tonymacx86).
- Copy Kexts to Kexts folder on the EFI partition.
- Change BIOS settings (settings key is F1).
- Boot USB (boot menu key is F12).
Post-install
- Install Clover v2.3K R3320 UEFI .pkg - different version is OK, but must be UEFI.
- Config.plist can be shared if you wish, personal preferences, except injections.
- Patch your own DSDT's using guide on tonymacx86 from RehabMan, every system needs custom DSDT, no exceptions. http://www.tonymacx86.com/el-capitan-laptop-support/152573-guide-patching-laptop-dsdt-ssdts.html (trust me, it's worth the read)
- Patch your own SSDT's, you could use the same if CPU models are identical. http://www.tonymacx86.com/el-capitan-laptop-support/175801-guide-native-power-management-laptops.html
- Put SSDT.aml and DSDT.aml inside ACPI folder, patched, in EFI partition of OS drive.
- TRIM Enabler (if using SSD, every system in 2016 should have one imo)
- Disable boot graphics glitches (http://www.tonymacx86.com/el-capitan-laptop-support/175799-fix-resolve-boot-screen-garble.html) and set custom logo to none in config.plist
Patch should be entered into config.plist/KernelAndKextPatches/KextsToPatch.
Comment: Boot graphics glitch
Name: IOGraphicsFamily
Find: <0100007517>
Replace: <010000eb17>
DSDT patches
- Battery: Thinkpad x230i
- iGPU: Brightness HD4000, Low resolution
- RTC fix
- Fix Mutex with non-zero synclevel
- Ivy Bridge = 7 series USB
- USB3 instant wake 0x0
- If using DSDT inject use HDEF + IRQ provided with patcher
Other resources
http://www.tonymacx86.com/el-capitan-laptop-support/
Google is your best friend.