[Guide] Lenovo Y50 (UHD or 1080p) using Clover UEFI (10.11)

Overview

The purpose of this guide is to provide a step-by-step guide to installing El Capitan/Yosemite on the Lenovo Y50-70 laptops. Please note I do not have this laptop, but this guide was created through my work helping others at the original guide thread. Since that thread is not well maintained and there are several problems with it, I decided to provide this guide.

Original guide thread here: http://www.tonymacx86.com/yosemite-laptop-guides/153390-guide-lenovo-y50-clover.html

Both laptops with 1080p and UHD displays are supported by this guide.

Note: This guide will probably also work with Mavericks.

Note: Original Yosemite thread: http://www.tonymacx86.com/yosemite-…novo-y50-y70-uhd-1080p-using-clover-uefi.html

What you need

– Lenovo Y50-70 (or Y70) with either 1080p or UHD/4K display
– OS X 10.11 or 10.10 downloaded from the Mac App Store
– 8GB USB stick
– (optional) 32GB USB stick for Lenovo OEM backup
– Broadcom BCM94352Z for native WiFi (Lenovo FRU: 04X6020, Lenovo PN: 20-200480)

BIOS settings

To start, set BIOS to Windows 8 defaults.

Then insure:
– UEFI boot is enabled
– secure boot is disabled
– enable Legacy Boot (but UEFI first) and you may experience less boot time glitches

For the UHD model, the DVMT-prealloc BIOS setting must be changed to 128MB. One of two methods can be used:
– use a EFI shell to change the DVMT-prealloc from the shell.
– use a patched BIOS which unlocks the advanced menu

** Note: Those with the UHD model and who have used the UEFI shell method to set DVMT-prealloc, please reply to this thread with clear details (eg. setup_var variable offset and value). Since each laptop is likely the same, the information can be added to post #1 here after a few people confirm the same values on different Y50 laptops.

Note: It has been reported that BIOS version 1.14 or *older* must be used in order to set DVTM-prealloc via UEFI shell. Details here: http://www.tonymacx86.com/threads/g…using-clover-uefi.165188/page-19#post-1050617

BIOS link: http://www.tonymacx86.com/threads/g…lover-uefi-10-11.168612/page-104#post-1184979

BIOS images are specific to each laptop (Windows license keys), so a custom BIOS must be made by someone knowledgeable from a backup of your own BIOS. Sites such as bios-mods.com specialize in this.

But you can also use a UEFI shell to adjust the DVMT-prealloc and avoid using a patched BIOS. Lately this is commonly done on Broadwell machines. Check at the links from the FAQ: http://www.tonymacx86.com/el-capita…faq-read-first-laptop-frequent-questions.html. Look at question “Is Intel Broadwell graphics supported?”. There are a number links there with a few different guides that explain how to extract BIOS, search for the variable, and set it with a special UEFI shell (based on grub). Since all Y50 laptops are likely to use the same variable offset, please post the details in this thread, so that this post can be updated.

Note: There are at least two posts in this thread stating the offset. One is this example:

The 0x18C and value 0x4 also corresponds with another report in this same thread.

If you own the laptop, please help with any additional required BIOS settings that may be required.

Note: The DSDT/SSDT patching script will automatically disable the discrete nVidia card if you have it enabled in BIOS. It is best, therefore to keep it enabled in BIOS so you can still use it on Windows, but have DSDT/SSDT patched properly for OS X.

Issue with booting UEFI-Shell USB for DVMT-prealloc

When booting from the USB, an error may be thrown by the BIOS stating the following: EFI USB Device <USB name> has been blocked by the current security policy. This issue is due to Secure Boot being enabled and it must be disabled to continue booting from the USB stick.

In order to disable Secure Boot:
From a powered off state press the NOVO button (to the left of the power button on the Y50-70) and select ‘BIOS SETUP’. Navigate to the ‘Security Tab’ and at the bottom of that window select ‘Reset to Setup Mode’ to fully disable the Secure Boot. Once done, Navigate to the ‘Exit’ tab and select ‘Exit Saving Changes’. You should now be able to boot from the USB stick.

There is an issue with BIOS v1.09 (may impact other versions as well) where no matter how you set Secure Boot it will not disable and you cannot get passed the ‘EFI USB Device <USB name> has been blocked by the current security policy.’ message… meaning you cannot boot from UEFI Shell. If you have this issue for any BIOS version under v1.14, upgrade to v1.14 but NOT ABOVE.. it has been reported that a BIOS version above 1.14 has the area encrypted that needs to be modified modify the DVMT. After upgrading the BIOS to v1.14 follow the above steps to disable Secure Boot.

Preparing USB and initial Installation

Prior to installing OS X, it is a good idea to create an OEM recovery USB from Windows. If anything goes wrong and you want/need to get back to Windows, you can restore it via the USB. Use the utility provided by Lenovo to accomplish this.

You can also leave Windows intact, but it can get tricky. Read here for more information: http://www.tonymacx86.com/multi-booting/133940-mavericks-windows-8-same-drive-without-erasing.html

This guide for creating USB and installing using Clover UEFI works well for this laptop: http://www.tonymacx86.com/el-capita…de-booting-os-x-installer-laptops-clover.html

Special notes:

– Definitely copy RealtekRTL8111.kext to Clover/kexts/Other as having network support during post-install is helpful. The rest of this guide depends on it. An alternate is to copy FakePCIID.kext and FakePCIID_Broadcom_WiFi.kext to Clover/kexts/Other. This will enable WiFi, provided you have the BCM94352 WiFi card already installed.

Note: FakePCIID.kext and FakePCIID_Broadcom_WiFi.kext are available here: https://github.com/RehabMan/OS-X-Fake-PCI-ID

– GenericUSBXHCI.kext is not necessary with this laptop since AppleUSBXCHI.kext appears to work well natively. GenericUSBXHCI.kext also doesn’t work at all on 10.11, so do not use it.

– Use the ‘createinstallmedia’ approach. It works well, and there is little chance for pilot error. This method also gives you an OS X recovery partition.

– If your laptop has the UHD/4K screen, set config.plist/Graphics/Inject/Intel=false for installation.

– Also copy USBXHCI_y50.kext to EFI/Clover/kexts/Other. You can get USBXHCI_y50.kext from the repo ZIP: https://github.com/RehabMan/Lenovo-Y50-DSDT-Patch/archive/master.zip

Post Installation

Install Clover UEFI as described in the guide linked by the previous section (post #2). After installing Clover, and configuring it correctly (config.plist, kexts, etc) you should be able to boot from the HDD/SSD.

But there are still many issues and devices that won’t work correctly. For that, we need to patch DSDT, patch IOKit framework (UHD/4k display only), provide a proper config.plist, and install the kexts that are required.

Note: If you have the UHD screen you’ll still need config.plist/Graphics/Inject/Intel=false.

Since you have RealtekRTL8111.kext already injected by Clover, you should have internet access simply by using an Ethernet cable to your router. Plug it in and make sure you have internet access before continuing. Or if you’re using FakePCIID_Broadcom_WiFi.kext, you can connect to your WiFi router before continuing.

Installation of the tools and patching is easy provided the scripts and tools at the repository: https://github.com/RehabMan/Lenovo-Y50-DSDT-Patch

To start, the developer tools must be installed. Run Terminal, and type:

Code (Text):
git

You will be prompted to install the developer tools. Since you have internet working, you can choose to have it download and install them automatically. Do that before continuing.

After the developer tools are installed, we need to get a couple of projects from my github.

In Terminal:

Code (Text):
mkdir ~/Projects
cd ~/Projects
git clone https://github.com/RehabMan/Lenovo-Y50-DSDT-Patch y50.git

Now it is time to install some more tools and all the kexts that are required…

In Terminal:

Code (Text):
cd ~/Projects/y50.git
./download.sh
./install_downloads.sh

The download.sh script will automatically gather the latest version of all tools (patchmatic, iasl, MaciASL) and all the kexts (ACPIBacklight.kext, ACPIBatteryManager.kext, etc) from bitbucket. The install_downloads.sh will automatically install them to the proper locations.

Note: This guide is written assuming a Synaptics trackpad is installed. According to some of the feedback in this thread, some of these laptops come with an ELAN trackpad instead. I’m not going to link the ELAN trackpad, due to the author’s disregard for the open source license, but you can find it on the internet. You will lose some of the keyboard functionality (eg. function keys) present in the Synaptics setup, although the brightness keys should be working (special patch in patches/keyboard.txt)

If you wish, you can reboot to verify a few more items are working (many only partially).

To finish the setup, we need a correctly patched DSDT/SSDT.

With the current project, no patched DSDT/SSDTs are used. Instead, Clover hotpatches and a small SSDT called SSDT-HACK are used instead.

In Terminal:

Code (Text):
cd ~/Projects/y50.git
make
make install

The ‘make’ causes the SSDT-HACK.aml files to be compiled (with iasl), the results placed in ./build.

Finally, ‘make install’, mounts the EFI partition, and copies the built files where they can be loaded by Clover (to EFI/Clover/ACPI/patched).

Power Management

Use the ssdtPRGen.sh script by Pike R. Alpha: https://github.com/Piker-Alpha/ssdtPRGen.sh

Instructions for using it are provided in the README.

The generated SSDT.aml should be placed on the EFI partition at /EFI/Clover/ACPI/patched/SSDT.aml.

Based on the current instructions at the README, what follows is a synopsis…

To prepare, you only need to do the first two commands:

Code (Text):
cd ~/Projects/y50.git
curl -o ./ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/master/ssdtPRGen.sh
chmod +x ./ssdtPRGen.sh

Then you can run the script:

Code (Text):
./ssdtPRGen.sh

Note: If you have a CPU currently unsupported by the script, you may have to provide the data for it.

For example, i7-4720HQ:

Code (Text):
./ssdtPRGen.sh -p ‘i7-4710HQ’ -f 2600 -turbo 3600

By providing the name ‘i7-4710HQ’ (similar enough to i7-4720HQ), and overrides for the non-turbo and turbo frequencies, the script is sucessful. Eventually, it would not be necessary, provided the script is updated with the new CPUs.

When it asks if you want to copy to /Extra just respond ‘n’. Same for opening ssdt.dsl… respond ‘n’.

The results are at ~/Library/ssdtPRGen/SSDT.aml.

Copy that file to EFI partition, /EFI/Clover/ACPI/patched/SSDT.aml

Code (Text):
cd ~/Projects/y50.git
sudo ./mount_efi.sh /
cp ~/Library/ssdtPRGen/ssdt.aml /Volumes/EFI/EFI/Clover/ACPI/patched/SSDT.aml

Also, be aware that hibernation (suspend to disk or S4 sleep) is not supported on hackintosh.

You should disable it:

Code (Text):
sudo pmset -a hibernatemode 0
sudo rm /var/vm/sleepimage
sudo mkdir /var/vm/sleepimage

Always check your hibernatemode after updates and disable it. System updates tend to re-enable it, although the trick above (making sleepimage a directory) tends to help.

Patching the IOKit framework

If you have the UHD/4K display, you must defeat the IOKit framework pixel clock checks.

Fortunately, the-darkvoid has already figured out how to patch for this and has provided a nice script in his Dell XPS 9530 repo.

To use it, copy the script and execute it:

Code (Text):
cd ~/Projects/y50.git
curl -o XPS9530.sh https://raw.githubusercontent.com/the-darkvoid/XPS9530-OSX/master/XPS9530.sh
chmod +x XPS9530.sh
./XPS9530.sh –patch-pixelclock

Final config.plist

Up to now, you’ve been using the same config.plist we were using for installation. After all the APCI files are in place, IOKit is patched (previous three steps), you’re ready to use the final config.plist from the repo.

First, mount the EFI partition:

Code (Text):
cd ~/Projects/y50.git
sudo ./mount_efi.sh /

If you have the 1080p screen, use config.plist:

Code (Text):
cd ~/Projects/y50.git
cp config.plist /Volumes/EFI/EFI/Clover/config.plist

If you have the UHD/4k screen, use config_UHD.plist:

Code (Text):
cd ~/Projects/y50.git
cp config_UHD.plist /Volumes/EFI/EFI/Clover/config.plist

You could also copy the file using Finder.

After copying the config.plist from the repo to EFI/Clover/config.plist, you should customize the SMBIOS so you have a unique serial. You can use Clover Configurator to do this (use google to find/download it). DO NOT use Clover Configurator to edit your actual config.plist. Instead edit a “dummy” config.plist to create the SMBIOS data and then use copy/paste with a plist editor (I use Xcode) to copy the SMBIOS section into my active config.plist. Clover Configurator is too buggy and cannot be trusted with edits to your real config.plist. This guide uses MacBookPro11,1. Do not use any other model identifier.

Repeat: DO NOT edit your config.plist with Clover Configurator. Clover Configurator will erase important settings from the config.plist, and as a result, it will not work.

If you have a UHD screen, you were previously booting without graphics injection. As a result, the graphics kexts are not in kernel cache. Because they are not in cache, Clover can’t patch them. So, on the first boot, you must boot without caches, then rebuild cache:

Code (Text):
sudo touch /System/Library/Extensions && sudo kextcache -u /

Do not stop reading

Although most of the post-install tasks are done, continue to read this guide. It it has important information you should know about.

Be sure to visit “Known Problems”, especially the instructions in the “Audio:” section. Typically, even after completing all the above tasks, audio will not work on the first reboot. You must follow the specific instructions in that section in order to get the audio kexts in cache.

In the case of a problem, don’t bother asking about with without all files requested in “Problem Reporting”.

WiFi using BCM94352

For best results, replace the Intel WiFi with BCM94352Z.

The ./download.sh and ./install_downloads.sh script have both been updated to install the necessary kexts for BCM94352. The config.plist contains the patches required for WiFi 5Ghz and Bluetooth handoff features. The patch in config.plist for 5GHz is the US/FCC patch by the-darkvoid. If you’re not in the US, you might consider a different patch. Read here: http://www.tonymacx86.com/network/104850-guide-airport-pcie-half-mini-v2.html

Updates to the patch repositories

From time to time, updates may become available to the project repository. In the event of such updates, you may want to update your copies, and re-patch DSDT/SSDT with the updates.

Since you’re using git, it is easy…

In Terminal:

Code (Text):
cd ~/Projects/y50.git
git pull
./download.sh
./install_downloads.sh
make
make install

What works

Expect to work:
– UEFI booting via Clover
– built-in keyboard (with brightness keys)
– built-in trackpad (basic gestures)
– HDMI video/audio with hotplug (please verify, the patches came from the u430 repo and may need tweaking)
– AirPlay mirroring to AppleTV
– native WiFi via BCM94352Z
– Bluetooth (with handoff) using BCM94352Z
– native USB3 with AppleUSBXHCI (USB2 works also)
– native audio with AppleHDA (using injector for easy updates), including headphone
– built-in mic
– built-in camera
– native power management
– battery status
– backlight controls with smooth transitions, save/restore across restart
– accelerated graphics for HD4600 including OpenCL
– wired Ethernet
– Mac App Store working
– retina scaling (in the case of UHD screen)

Not tested/not working

The following features have issues, or have not been tested:
– Messages/FaceTime (not tested, see guide: http://www.tonymacx86.com/general-help/110471-how-fix-imessage.html)
– some special Fkeys not working (??)
– card reader is not working

Known Problems

Find My Mac/Locking: Find My Mac does not work properly. Don’t lock your mac because it’s difficult (or impossible) to unlock again.

Slow WiFi after sleep/wake cycle: Disable “Wake for network access” in SysPrefs->Energy Saver.

Audio: After installing new/updated kexts or after the initial installation, you may lose audio.

To fix:
– reboot without caches (hit space at Clover, select without caches)
– rebuild cache

Code (Text):
sudo touch /System/Library/Extensions && sudo kextcache -u /

– reboot normally (if needed, two times)

Audio: External mic via combo headphone/mic jack is not working.

Black screen after wake (UHD only): Some owners of the UHD model report that on wake from sleep, the screen comes on for a second, only to turn black. Most users seem to not have this problem. No known solution. If you find a solution, please reply here.

Screen flicker (FHD only): Some owners of the FHD model report that the there is flickering on the screen when legacy boot is enabled (still booting UEFI). This can be avoided by disabling legacy boot in BIOS, but the flicker returns after wake from sleep. No known solution. If you find a solution, please reply here.

System Updates

Note regarding 10.10.4 update: IOKit is the same as in 10.10.3, but your patched version will still be overwritten by the update. So, you’ll need to repatch it using the same procedure/patch as for 10.10.3.

If you have the UHD/4k screen special procedures must be used after any system update. Because the IOKit framework is patched in order to make the internal display functional, any update that provides a new IOKit binary must be re-patched.

So, after an update, you may need to boot using your USB (as it has graphics injection disabled), so you can patch the IOKit framework as described earlier in the guide.

Keep in mind that the patch may need to be updated, so keep an eye on the-darkvoid’s Dell repo before you attempt the update.

Other post-install tasks

Trackpad: Be sure to visit the options in SysPrefs->Trackpad and change them to your liking.

Trackpad three finger support: You can configure three finger swipes in SysPrefs->Keyboard->Shortcuts. Instead of pressing keys for a given function, do the three finger swipe (up/down/left/right).

Disable trackpad when using an external mouse: The latest script installs the VoodooPS2Daemon. It allows you to disable the built-in trackpad when a USB mouse is plugged in. Just check the box in SysPrefs->Accessibility->”Mouse & Trackpad”.

Bluetooth: If you get the Bluetooth Setup Assistant popup, go to SysPrefs->Bluetooth->Advanced, uncheck the boxes.

Keyboard Mapping

The mapping for Control, Option, and Command are according to the physical layout of the keys on an actual MacBook keyboard, not the labels on the keys. Control=Control, Windows=Option, and Alt=Command. If you want a more PC friendly keyboard layout, use Karabiner (formerly KeyRemap4MacBook).

Brightness up/down are implemented with DSDT patches and my VoodooPS2Controller. Mirror Toggle is not currently implemented.

The function of Fn+F1..F12 and F1..F12 can be changed in SysPrefs->Keyboard (actually, not currently implemented, but is possible).

Major updates

For example… 10.10 to 10.11.

First step should be to update to the latest repository.

To do so:

Code (Text):
cd ~/Projects/y50.git
git stash
git pull
make
make install
./download.sh
./install_downloads.sh

Also update Clover to the latest using the Clover installer. Be sure to fix EFI/Clover/kexts, so that only EFI/Clover/kexts/Other is existing. All version specific directories under EFI/Clover/kexts should be removed.

Also update config.plist at EFI/Clover/config.plist to the latest content from the repo. Be sure to retain your own SMBIOS data at config.plist/SMBIOS.

Now you can update via the App Store. Just boot the installer/updater upon restart.

After updating, run ./install_downloads.sh again:

Code (Text):
cd ~/Projects/y50.git
./install_downloads.sh

Mavericks compatibility

This guide will also work with Mavericks.

Here are some notes/exceptions regarding Mavericks:
– not much testing with Mavericks
– FakePCIID_HD4600_HD4400.kext is installed on Mavericks even though it is not needed (doesn’t seem to do any harm)
– AppleHDA_ALC283.kext must be regenerated for Mavericks

The AppleHDA_ALC283.kext injector checked into the project is for the current version of El Capitan.

To regenerate it under Yosemite/Mavericks:

Code (Text):
cd ~/Projects/y50.git
rm -Rf AppleHDA_ALC283.kext
make AppleHDA_ALC283.kext
make install_hda

That will generate AppleHDA_ACL283.kext in the y50.git project directory and install it to /S/L/E. You can also install it with ./install_downloads.sh or with Kext Wizard if you wish.

Problem reporting

If you have an issue with DSDT patching, you’ll need to provide your native DSDT/SSDTs.

Other problem reports should be accompanied by various files that allow your progress to be accounted for…

In terminal,

Code (Text):
rm -Rf ~/Downloads/RehabMan
mkdir ~/Downloads/RehabMan
cd ~/Downloads/RehabMan
patchmatic -extract

Post contents of Downloads/RehabMan directory (as ZIP).

Also, post ioreg: http://www.tonymacx86.com/audio/58368-guide-how-make-copy-ioreg.html. Please, use the IORegistryExplorer v2.1 attached to the post! DO NOT reply with an ioreg from any other version of IORegistryExplorer.app.

And output from:

Code (Text):
kextstat|grep -y acpiplat
kextstat|grep -y appleintelcpu
kextstat|grep -y applelpc
kextstat|grep -y applehda

Also, press F4 at the main Clover screen, then compress and post the EFI/CLOVER folder in use. And please, in order to reduce the size, omit EFI/Clover/themes… especially if you have an overabundance of themes installed.

Also post output of:

Code (Text):
sudo touch /System/Library/Extensions && sudo kextcache -u /

We will be happy to hear your thoughts

Leave a reply