Contribute
Register

[GUIDE] Lenovo 510s 14-ISK using OpenCore UEFI

Status
Not open for further replies.
Joined
Oct 11, 2017
Messages
83
Motherboard
MSI Z390-A PRO
CPU
i5-8400
Graphics
Vega 64
Hello everyone,
these are just some useful notes I took during the process if I have to do it again.
You can use them at your advantage during the installation if you are new to hackintosh ;).

OpenCore configuration EFI folder: https://github.com/blackwiz4rd/Lenovo-510s-14isk-OC-UEFI

My laptop specs
  • Mobo: Lenovo 510s 14-ISK (OpenCore UEFI)
  • CPU: i5-6267u
  • Graphics: Iris 550, 1920x1080
  • BIOS model: 0VCN26WW(V1.10)
[MUST READ] Notes
  • I MOVED FROM Clover to OpenCore. I believe that this boot loader suites Hackintosh better.
  • For sanity checks on OpenCore config.plist use https://opencore.slowgeek.com
  • To access the BIOS use an eject sim tool or something similar and hit the reset button for 3 or more seconds on the left side of your computer where ports are located.
  • WiFi Card needs to be replaced (BCM94352Z works great, another user reported bcm94350zae also works after Shielding pins), refer to "Hardware maintenance manual - Page 38".
  • Hardware maintenance manual
  • In OpenCore all kexts must be installed in /Volumes/EFI/EFI/OC/Kexts Kexts ONLY
  • For updates (open core and macOS): https://dortania.github.io/OpenCore-Post-Install/universal/update.html
  • Use https://www.tonymacx86.com/threads/tool-generate-proper-problem-reporting-files.235953/ for error reporting.
  • If you have multiple OS in dual booting and you want to change your hard drive (HDD, SDD) use clonezilla (it copies all volumes including EFI, make sure to shrink and restore the partitions after cloning so that free space is visible).
  • Remap cmd keys:
Guides followed
  1. Creating the USB and Installation process: guide
  2. Patching process: guide0, guide1, guide2, guide3
  3. Brightness keys fix (api patch needed): guide
  4. Power management patch with CPUFriend: guide
  5. Fix battery icon - The DSDT.dsl already has 8-bit fields so there is no need to patch it
  6. Enable HiPDI at the resolution you like (i.e. I suggest 1600x900 and 1280x720, notice that the official guide from tonymacx didn't work for me): tool
  7. USBInjectAll custom SSDT: guide
  8. Configure AppleALC.kext: guide
More:
  • A) WiFi and bluetooth support: guide
  • B) Configure WhateverGreen.kext and backlight management: guide, GitHub recommandations
  • C) General Framebuffer Patching Guide (HDMI Black Screen problem): guide
Other notes
  • Working features
  • Not working features
  • Installing linux
  • Installing Windows 10 after MacOS is installed
  • Personal notes
  • Keyboard
  • Key logs
1) Creating the USB and Installation process: guide
Configure the BIOS to let it read the USB drive we will create next step.
Configuration Tab
  • USB Legacy [Disabled]
  • Wireless LAN [Enabled]
  • Power Beep [Disabled]
  • Intel Virtual Technology [Disabled]
  • BIOS Back Flash [Disabled]
  • HotKey Mode [Enabled]
  • Always On USB [Enabled]
Security Boot
  • Intel Platform Trust Technology [Disabled]
Boot
  • Boot Mode [Legacy Support]
  • Boot Priority [UEFI First]
  • Fast Boot [Disabled]
  • USB Boot [Enabled]
  • PXE Boot to LAN [Disabled]

My OpenCore configuration is available in the attachments. I suggest enabling only some kexts (e.g. VirtualSMC.kext, WhateverGreen.kext, Lilu.kext, RealtekRTL8111.kext, VoodooPS2Controller.kext, VoodooInput.kext, BrcmPatchRAM3.kext, BrcmBluetoothInjector.kext, BrcmFirmwareData.kext) that should be set after a post-install.

2) Patching process: guide0, guide1, guide2, guide3
After retrieving ACPI, remove duplicates if there are.
Patches I applied:
  • "instant wake" 0x6D Skylake
  • brightness keys fix (see below)
  • "Fix _WAK Arg0 v2"
  • "HPET Fix"
  • "SMBUS Fix"
  • "IRQ Fix"
  • "RTC Fix"
  • "OS Check Fix"
  • "Fix Mutex with non-zero SyncLevel"
  • "Fix PNOT/PPNT" (use only if you're dropping CPU related SSDTs)
  • "6-series USB"
  • "7-series/8-series USB"
  • "Rename _DSM methods to XDSM"
Patches included:
  • SSDT-EC.aml (pre-built, for booting, see guide2)
  • SSDT-USBX.aml (pre-built, for booting, see guide2)
  • SSDT-PNLF.aml (pre-built, for backlight management, , see guide2)
  • SSDT-PLUG.aml (pre-built, for power management, see guide2)
  • DSDT.aml (for brightness key remapping, see point 3)
You might also add:
  • SSDT-UIAC.aml (for USBInjectAll.kext, see rehabman's guide)
3) Brightness keys fix (api patch needed): guide
Refer to Disassembly with refs.txt
Adding sources is in app preferences
Copy-paste and patch
Code:
into method label _Q11 replace_content

begin

// Brightness Down\n

    Notify(\_SB.PCI0.LPCB.PS2K, 0x0405)\n

end;

into method label _Q12 replace_content

begin

// Brightness Up\n

    Notify(\_SB.PCI0.LPCB.PS2K, 0x0406)\n

end;

4) Power management patch with CPUFriend: guide
Follow the instructions for the CPU: i5-6267u.
Check if the SSDT is correctly loaded from HackinTool.
Related Geekbench 4 test:
https://browser.geekbench.com/v4/cpu/14431751,
https://browser.geekbench.com/v4/cpu/14432806

7) USBInjectAll custom SSDT: guide
My custom SSDT for USBInjectAll.kext is the following (NO USB3 devices were injected, even if two ports of the 3 are USB3):
Code:
// SSDT-UIAC-ALL.dsl
//
// This SSDT can be used as a template to build your own
// customization for USBInjectAll.kext.
//
// This SSDT contains all ports, so using it is the same as without
// a custom SSDT.  Delete ports that are not connected or ports you
// do not need.
//
// Change the UsbConnector or portType as needed to match your
// actual USB configuration.
//
// Note:
// portType=0 seems to indicate normal external USB2 port (as seen in MacBookPro8,1)
// portType=2 seems to indicate "internal device" (as seen in MacBookPro8,1)
// portType=4 is used by MacBookPro8,3 (reason/purpose unknown)
//
// NO USB3 PORTS ARE INJECTED
//

DefinitionBlock ("", "SSDT", 2, "hack", "_UIAC", 0)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")

        Name(RMCF, Package()
        {
            "8086_9dxx", Package()  // examples: 0x9d2f, 0x9ded
            {
                "port-count", Buffer() { 18, 0, 0, 0 },
                "ports", Package()
                {
                    "HS02", Package() // HS USB right up
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 2, 0, 0, 0 },
                    },
                    "HS03", Package() // HS USB right down
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 3, 0, 0, 0 },
                    },
                    "HS04", Package() // HS USB left
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 4, 0, 0, 0 },
                    },
                    "HS05", Package() // camera
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 5, 0, 0, 0 },
                    },
                    "HS07", Package() // bluetooth
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 7, 0, 0, 0 },
                    },
                },
            },
        })
    }
}
//EOF

8) Configure AppleALC.kext: guide
What is my audio codec?
In linux:
Code:
ls -l /proc/asound/card0/
cat /proc/asound/card0/codec\#0
Codec: Realtek ALC236
...

cat /proc/asound/card0/codec\#2
Codec: Intel Skylake HDMI
ALC236 is supported by AppleALC. My version of Intel Skylake HDMI is also supported but you must make sure you applied the correct configuration in 11).

MORE FROM the OLD Clover configuration:
A) WiFi and bluetooth support: guide
  • Install AirportBrcmFixup.kext for WiFi (Vendor ID: 0x14E4, Device ID: 0x43B1) and remove all other WiFi kexts.
  • Applies patches autmatically to WiFi plugin (remove all other wifi kexts) -> note Vendor ID: 0x14E4, Device ID: 0x43B1.
  • Set the boot argument -brcmfx-country=#a in config.plist for 5GHz support.

BrcmPatchRAM3.kext and BrcmFirmwareRepo.kext should be installed for Bluetooth support.
Add this to your config.plist:
Code:
<dict>
   <key>Comment</key>
   <string>10.11.dp1+ BT4LE-Handoff-Hotspot, credit RehabMan based on Dokterdok original</string>
   <key>Find</key>
   <data>SIX/dEdIiwc=</data>
   <key>Name</key>
   <string>IOBluetoothFamily</string>
   <key>Replace</key>
   <data>Qb4PAAAA60Q=</data>
</dict>

B) Configure WhateverGreen.kext and backlight management: guide, GitHub recommandations
Test the Auto Detect/Auto Configuration, if it doesn't work, use the manual one.
WhatEverGreen IGPU Manual Configuration
! THIS IS NOT THE COMPLETE CONFIGURATION: REFER TO 11) FOR THE COMPLETE CONFIGURATION

Resulting configuration after following the guide:
Code:
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>AAAnGQ==</data>
                <key>AAPL,slot-name</key>
                <string>Internal@0,2,0</string>
                <key>device-id</key>
                <data>JxkAAA==</data>
                <key>device_type</key>
                <string>VGA compatible controller</string>
                <key>enable-hdmi20</key>
                <data>AQAAAA==</data>
                <key>framebuffer-patch-enable</key>
                <data>AQAAAA==</data>
                <key>framebuffer-unifiedmem</key>
                <data>AAAAgA==</data>
                <key>model</key>
                <string>Intel Iris Graphics 550</string>
            </dict>

  • FakeID must commented
  • Detected DVMT 128MB in Windows -> ok
  • Keep GFX0 to IGPU if you use SSDT-PNFL
  • framebuffer-patch-enable in the device properties can have beneficial effect dual displays
  • Optionally add 2048MB line
  • Follow all recommendations for the config.plist in the GitHub page of WhateverGreen.kext (and remember AppleBacklightFixup.kext for backlight management is included in WhateverGreen.kext)
  • Compile and add SSDT-PNLF.aml with maciASL for backlight management from WhateverGreen release.
  • Test changes
C) General Framebuffer Patching Guide (HDMI Black Screen problem): guide
This fixes the overall instability with the only HDMI port available (e.g. reboot when connecting). In particular, when booting the laptop with HDMI connected, my laptop screen is black (while it is still seen as connected). In addition, it also provides HDMI audio (be aware that HDMI Sound cannot be controlled on real Macs, use Soundflower).
This procedure should be done after 10).
  • Patch > Apply Current Patches from menu
  • Port 0x00 is Built-in Display -> Set the index to 0
  • Port 0x06 is HDMI -> Set the index to 2
  • Set all other indexes to -1
  • Make sure to select graphic device in general tab before generating patch (otherwise it will be empty)!
Resulting configuration:
Code:
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                AAAnGQ==
                </data>
                <key>AAPL,slot-name</key>
                <string>Internal@0,2,0</string>
                <key>device-id</key>
                <data>
                JxkAAA==
                </data>
                <key>device_type</key>
                <string>VGA compatible controller</string>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                mAAAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                hwEAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                hwEAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-fbmem</key>
                <data>
                AABQAQ==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-stolenmem</key>
                <data>
                AAAgAg==
                </data>
                <key>framebuffer-unifiedmem</key>
                <data>
                AAAAgA==
                </data>
                <key>model</key>
                <string>Intel Iris Graphics 550</string>
            </dict>

Working features
  • if videos are not working install flash player and reboot.
  • sleep (acpi "instant wake" patch is necessary).
  • keyboard backlight enable/disable -> fn (control) + space
  • Bluetooth and WiFi after card replacement
  • Gestures: 2 finger scroll, 3 finger swipe (L and R), PinchToZoom, rotate, go back or forward with 2 fingers (see most updated VoodooPS2Controller.kext)
Not working features
  • SDcard reader (a user reported it can be fixed with Sinetek-rtsx.kext)

Installing linux
To boot linux on OpenCore I had to install grub from the linux installer (Arch Linux in my case: guide).
Code:
# mount linux on /mnt, including /mnt/home, /mnt/boot.
# ensure fstab is created correctly
chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/EFI/ --bootloader-id=GRUB

Installing Windows 10 after MacOS is installed
Make sure the BIOS is configured properly.
For dual boot make sure you add inf drivers to install.wim, using DISM gui, for ssd to be read during Windows 10 setup. Format (as NTFS, within the Windows installer) the placeholder HFS+J partition created with diskutil in MacOS (I get an error during setup but somehow after creating a new bootable usb it got solved: https://www.tonymacx86.com/threads/...next-to-macos-high-sierra-on-same-ssd.239403/).

Format USB with terminal:
Code:
 diskutil eraseDisk FAT32 USB GPT /dev/disk2

After installation is completed you won't be able to see clover bootloader at start. Using cmd.exe with administrator priviledges:
Code:
mountvol P: /S
mount the EFI partition,
Code:
P:
Code:
cd EFI\Microsoft\Boot
access the partition
Code:
move bootmgfw.efi bootmgfw-orig.efi
rename the Windows bootloader file.

Personal notes
  • system_profiler
  • fans control -> intel app
  • For sleep (start+alt+insert = alt option+cmd+eject)
Keyboard
  • eject = insert
  • cmd = Alt = AltGr
  • Alt Option = Start
  • Fn = Fn
  • Control = Ctrl
Key logs
Code:
default    23:06:41.903320 +0100    kernel    ACPIDebug: "EC _Q11 enter"

default    23:06:41.905924 +0100    kernel    ACPIDebug: "EC _Q11 exit"

F11



default    23:06:46.545831 +0100    kernel    ACPIDebug: "EC _Q12 enter"

default    23:06:46.547385 +0100    kernel    ACPIDebug: "EC _Q12 exit"

F12



default    23:06:55.884069 +0100    kernel    ACPIDebug: "EC _Q44 enter"

default    23:06:55.884294 +0100    kernel    ACPIDebug: "EC _Q44 exit"

F4



default    22:08:19.706744 +0100    kernel    ApplePS2Keyboard: sending key 3f=60 down

default    22:08:19.839885 +0100    kernel    ApplePS2Keyboard: sending key 3f=60 up

F5



default    22:08:34.386758 +0100    kernel    ApplePS2Keyboard: sending key e05b=3a down

default    22:08:34.389130 +0100    kernel    ApplePS2Keyboard: sending key 26=25 down

default    22:08:34.611671 +0100    kernel    ApplePS2Keyboard: sending key e05b=3a up

default    22:08:34.615547 +0100    kernel    ApplePS2Keyboard: sending key 26=25 up

F9



default    22:08:39.417449 +0100    kernel    ApplePS2Keyboard: sending key e05b=3a down

default    22:08:39.420193 +0100    kernel    ApplePS2Keyboard: sending key 19=23 down

default    22:08:39.424453 +0100    kernel    ApplePS2Keyboard: sending key 19=23 up

default    22:08:39.431010 +0100    kernel    ApplePS2Keyboard: sending key e05b=3a up

F10



default    22:08:55.437706 +0100    kernel    ApplePS2Keyboard: sending key e037=0, 0=80 down

default    22:08:55.652938 +0100    kernel    ApplePS2Keyboard: sending key e037=0, 0=80 up

PRTSC



default    22:08:59.427663 +0100    kernel    ApplePS2Keyboard: sending key e052=92 down

default    22:08:59.668309 +0100    kernel    ApplePS2Keyboard: sending key e052=92 up

INSERT

Special thanks to
RehabMan
without whom my machine wouldn't work.
 
Last edited:
Hey, so does your brightness keys in Windows work? I can't seem to use those fn keys after using opencore.
 
Hey, so does your brightness keys in Windows work? I can't seem to use those fn keys after using opencore.
maybe update this:

as they seem to have fixed some compatibility:
 
maybe update this:

as they seem to have fixed some compatibility:

Doesn't seem it fixes the problem in mine.
 
Did you succesfuly update to Monterey?
I'm working hard, but doesn't work at all.
Thanks in advance.
 
Thank you very much for sharing! It works perfectly!
I have ordered a Broadcom

BCM94360NG​

to replace my

DW-1560 BROADCOM BCM94352Z​

So this beauty of a notebook will do it to 100%
 
Status
Not open for further replies.
Back
Top