Contribute
Register

Lenovo V330 - 15ikb

Status
Not open for further replies.

Sniki

Moderator
Joined
Jan 5, 2016
Messages
2,313
Motherboard
HP Elite 8300 SFF
CPU
i7-3770
Graphics
Intel HD 3000 | GTX 1650 LP
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
@RehabMan

i did purchase a Lenovo V330-15ikb a few days ago, i do plan to buy a NVME SSD for it as it came with 1TB HDD which i did replace with a Kingston v300 120GB SSD 2.5" that i had on my old Lenovo B570e.

I was wondering how is the current state of 8th gen CPUs and iGPUs

Here are the full list of specs:
8GB DDR4 Dual Channel ram memory
Intel 8th gen Core i5 8250U CPU
Intel UHD 620 Graphics & AMD Radeon 530
15.6" Full HD Display
It does have a ELAN Touchpad
a FingerPrint Reader
2xUSB3 Ports & 2 Thunderbolt Ports
VGA, HDMI, SD Card Reader & Optical Drive
Conexant CX20751/2 Audio Codec (Dolby Audio).
Intel Wireless Card which i will replace it with my DW1560 (didn't test yet if this laptop model does have whitelist)

My concerns/questions are:
  • What is the current state of ELAN Touchpads support for macOS ?
  • What about the thunderbolt Ports ?
  • AMD Radeon 530 - switchable graphics, should propably be disabled with ACPI if im correct, just curious to ask if any of the latest macbooks have such identical card and if switchable graphics do work or not.
  • Any known compatibility issues with Intel UHD 620 ?
  • or with 8th gen CPUs (KabyLake R).
  • Since NVME drives are more problematic, i decided to wait till i receive my NVME SSD so i can install windows on it and then install macOS on the 2.5" SSD, but just in case, is there any known NVME drive that is supported on macOS without the need for your kext ?
The best answer for me is to test, but just wanted to take a brief summary of what should i expect before proceeding.

I expect a lot of work required since it's manufacturing date is Dec 2017 and as far as i have checked i didn't see a Battery status patch on your laptop DSDT Patch repo.

So what i have to do from scratch is:
  • Patch Battery Status
  • Patch Audio Codec
  • USB Port Injector
  • Disable Radeon GPU if it isn't suppported.
  • Also propably some work with Keyboard Mapping.
But im confident that i can solve these with a little guidance.

What is a unknown field for me are the listed above since i had no experience till now with them.

I might just install clover bootloader on a usb drive to just dump ACPI Tables and check them on my Lenovo B570e to have a look at what do i expect in terms of ACPI Patching and fix what i can without testing and leave the rest after installation.
 
I was wondering how is the current state of 8th gen CPUs and iGPUs

KabyLake-R CPUs supported natively.
UHD 620 working via HD620 spoof.

What is the current state of ELAN Touchpads support for macOS ?

Closed source kext (violates APSL).

What about the thunderbolt Ports ?

Some will work if plugged in prior to boot. Hotplug/unplug is problematic.

AMD Radeon 530 - switchable graphics, should propably be disabled with ACPI if im correct, just curious to ask if any of the latest macbooks have such identical card and if switchable graphics do work or not.

Disable via ACPI.

Any known compatibility issues with Intel UHD 620 ?

No personal experience. Success seems to vary.

Since NVME drives are more problematic, i decided to wait till i receive my NVME SSD so i can install windows on it and then install macOS on the 2.5" SSD, but just in case, is there any known NVME drive that is supported on macOS without the need for your kext ?

Better NVMe support in 10.13.x.
Results vary depending on NVMe model/manufacturer/macOS version.

I expect a lot of work required since it's manufacturing date is Dec 2017 and as far as i have checked i didn't see a Battery status patch on your laptop DSDT Patch repo.

You'll probably find an existing patch that matches.
 
KabyLake-R CPUs supported natively.
UHD 620 working via HD620 spoof.
So power management wise, PluginType1 via config.plist or HWP ?
Also which smbios would you recommend to use ? - NVM i see that you set MacBookPro 14.1 on your config repo.
Closed source kext (violates APSL).
Does VoodooPS2Controller have documentation for Elan ?, i also noticed somewhere I2C on device manager, does that thing have to do with Touchpad as well ?
Some will work if plugged in prior to boot. Hotplug/unplug is problematic.
Correction: 2x USB-C instead of thunderbolt,typo mistake.
Also I don’t have any usb-c device to test it.
But im going to stay on Windows until i get the NVME.
Disable via ACPI.
Just noticed that i have the option to disable it on Bios as well but it would be better on acpi so when i boot on Windows ,i have available
Better NVMe support in 10.13.x.
Results vary depending on NVMe model/manufacturer/macOS version.
120GB 2.5” SSD drive would be enough for macOS for me & less trouble, while i will use the nvme for Windows since i will get a 480gb version and i will get more use of more storage on Windows.
You'll probably find an existing patch that matches.
That would be really appreciated, it would save me a susbtantial amount of work, all that i will require for that is converting existing patch to hotpatch which should be a peace of cake.
 
So power management wise, PluginType1 via config.plist or HWP ?
Also which smbios would you recommend to use ? - NVM i see that you set MacBookPro 14.1 on your config repo.

config.plist/ACPI/SSDT/Generate/PluginType=true.
HPW is controlled by SMBIOS choice (Clover options are not needed, not really useful).

Does VoodooPS2Controller have documentation for Elan ?

No specific support in my version of VoodooPS2Controller.kext for ELAN (you get mouse emulation).

, i also noticed somewhere I2C on device manager, does that thing have to do with Touchpad as well ?

See I2C link in FAQ.

Correction: 2x USB-C instead of thunderbolt,typo mistake.

USB type-C may be connected to xHCI or Thunderbolt. Up to you to investigate which.

120GB 2.5” SSD drive would be enough for macOS for me & less trouble, while i will use the nvme for Windows since i will get a 480gb version and i will get more use of more storage on Windows.

A reasonable strategy. For typical tasks, NVMe vs. SATA SSD, performance difference is barely noticeable.
 
See I2C link in FAQ.
So i believe that kext should take care of Touchpad ?
USB type-C may be connected to xHCI or Thunderbolt. Up to you to investigate which.
No USB-C device that i have on my house, won't be able to test for now.

I did make a USB Installer just to dump the ACPI Tables but won't install until i get my NVME.

I did make some ACPI Patching so when i install i have some stuff already fixed and not have to deal with everything from the beginning.

Discrete GPU (AMD Radeon 530)
i did find that the "_OFF" & the "_INI" are located on SSDT-12.dsl, i did make the hotpatch to disable it, but im unsure if i did it correctly, because the "_OFF" method does have "HGOF" so my question is
should it be off like i did here:
Code:
// For disabling the discrete GPU (AMD Radeon 530)

DefinitionBlock("", "SSDT", 2, "V330", "_DDGPU", 0)
{
    External(_SB.PCI0.RP01.PEGP._OFF, MethodObj)

    Device(RMD1)
    {
        Name(_HID, "RMD10000")
        Method(_INI)
        {
            // disable discrete graphics (Radeon) if it is present
            If (CondRefOf(\_SB.PCI0.RP01.PEGP._OFF)) { \_SB.PCI0.RP01.PEGP._OFF() }
        }
    }
}
//EOF
or i should call HGOF instead of _OFF ?

I did attach the acpi tables dump and the SSDT-DGPU.dsl that i build.

Battery Status
Following your Battery Status patch guide, by looking into the EC, the operationRegion is called "RAM", by looking into the offsets on ram field, i was able to find only one Offset as 16-bit value
Code:
Offset (0xCC),
LSEN, 16,
Which seems to be rather easy battery status patch, however, after checking BAT0 & BAT1, i found that NB0S and NB1S do access some other offsets which i believe should be patched as well:
Code:
BAT0 OBJECTS ON = NB0S

B0DC, 16,
B0FC, 16,
B0RC, 16,
B0AE, 16,
B0AF, 16,
B0VO, 16,
B0CU, 16,
B0TE, 16,
B0MD, 16,
B0FU, 16,
B0DV, 16,
B0DY, 64,
B0Y1, 16,
B0DN, 64,
B0MN, 64,
B0M1, 32,
B0B0, 64,
B0B1, 64,
B0B2, 32,
B0B3, 16,
BAT1 Objects:
Code:
BAT1 OBJECTS ON = NB1S

B1DC, 16,
B1FC, 16,
B1RC, 16,
B1AE, 16,
B1AF, 16,
B1VO, 16,
B1CU, 16,
B1TE, 16,
B1MD, 16,
B1FU, 16,
B1DV, 16,
B1DY, 64,
B1Y1, 16,
B1DN, 64,
B1MN, 64,
B1M1, 32,
B1B0, 64,
B1B1, 64,
B1B2, 32,
B1B3, 16,
Can you check if im on the right path, should all of these be patched for battery status ?
 

Attachments

  • SSDT-DDGPU.dsl
    416 bytes · Views: 341
  • origin.zip
    72.9 KB · Views: 209
  • origin extracted & Removed Duplicates.zip
    180.8 KB · Views: 172
Discrete GPU (AMD Radeon 530)
i did find that the "_OFF" & the "_INI" are located on SSDT-12.dsl, i did make the hotpatch to disable it, but im unsure if i did it correctly, because the "_OFF" method does have "HGOF" so my question is
should it be off like i did here:
Code:
// For disabling the discrete GPU (AMD Radeon 530)

DefinitionBlock("", "SSDT", 2, "V330", "_DDGPU", 0)
{
    External(_SB.PCI0.RP01.PEGP._OFF, MethodObj)

    Device(RMD1)
    {
        Name(_HID, "RMD10000")
        Method(_INI)
        {
            // disable discrete graphics (Radeon) if it is present
            If (CondRefOf(\_SB.PCI0.RP01.PEGP._OFF)) { \_SB.PCI0.RP01.PEGP._OFF() }
        }
    }
}
//EOF

Should work.

Battery Status
Following your Battery Status patch guide, by looking into the EC, the operationRegion is called "RAM", by looking into the offsets on ram field, i was able to find only one Offset as 16-bit value
Code:
Offset (0xCC),
LSEN, 16,

Not likely accessed in macOS. It is WMI related, therefore Windows specific.

Which seems to be rather easy battery status patch, however, after checking BAT0 & BAT1, i found that NB0S and NB1S do access some other offsets which i believe should be patched as well:
Code:
BAT0 OBJECTS ON = NB0S

B0DC, 16,
B0FC, 16,
B0RC, 16,
B0AE, 16,
B0AF, 16,
B0VO, 16,
B0CU, 16,
B0TE, 16,
B0MD, 16,
B0FU, 16,
B0DV, 16,
B0DY, 64,
B0Y1, 16,
B0DN, 64,
B0MN, 64,
B0M1, 32,
B0B0, 64,
B0B1, 64,
B0B2, 32,
B0B3, 16,
BAT1 Objects:
Code:
BAT1 OBJECTS ON = NB1S

B1DC, 16,
B1FC, 16,
B1RC, 16,
B1AE, 16,
B1AF, 16,
B1VO, 16,
B1CU, 16,
B1TE, 16,
B1MD, 16,
B1FU, 16,
B1DV, 16,
B1DY, 64,
B1Y1, 16,
B1DN, 64,
B1MN, 64,
B1M1, 32,
B1B0, 64,
B1B1, 64,
B1B2, 32,
B1B3, 16,
Can you check if im on the right path, should all of these be patched for battery status ?

Those are not in EmbeddedControl. They are in SystemMemory. ECMB is declared as SystemMemory region.
Only EC fields need patching, not SystemMemory fields.
 
Should work.



Not likely accessed in macOS. It is WMI related, therefore Windows specific.



Those are not in EmbeddedControl. They are in SystemMemory. ECMB is declared as SystemMemory region.
Only EC fields need patching, not SystemMemory fields.
Thank you,
Thankfully Radeon GPU didn't have EC related stuff into the INI or OFF method so it was easy.
It seems that i can consider myself lucky again, not even this laptop needs battery status patch & like previous models too (Lenovo B570e, Lenovo ThinkPad L440).

Next steps:
1. Time to make the Codec Dump on Ubuntu, patch the codec, have it ready after installation (should be easy i guess, unless alc plug fix needed)

2. Hopefully the TouchPad works fine with that I2C kext available, as it's the only concern i have before installing it.

3. Hopefully USB-C Ports are attached to XHC and not thunderbolt as that would mean no hotplug working until a future fix/patch/kext shows up. "is it possible to check on Windows ?"

4. SD Card Reader to be tested after installation (not sure if its USB or PCI) "is it possible to check that on Windows 10 ?"

5. Keyboard Mapping should be also an easy task (aside from FN Buttons & PrtSc that needs to be mapped) all other buttons usually worked well on Lenovo "from my past experiences with these laptops".

6. Could the FingerPrint cause trouble into macOS ?, am i going to need to disable it on Bios or that can be done also on ACPI ? "if it causes trouble".

7. About LPC, i believe you did mention that it isn't needed on Skylake+, am i correct ?.
 
3. Hopefully USB-C Ports are attached to XHC and not thunderbolt as that would mean no hotplug working until a future fix/patch/kext shows up. "is it possible to check on Windows ?"

4. SD Card Reader to be tested after installation (not sure if its USB or PCI) "is it possible to check that on Windows 10 ?"

Yes. Look at details in Device Manager.

6. Could the FingerPrint cause trouble into macOS ?, am i going to need to disable it on Bios or that can be done also on ACPI ? "if it causes trouble".

Finger print readers are usually USB. Easy to disable when you make custom SSDT for USBInjectAll.kext.

7. About LPC, i believe you did mention that it isn't needed on Skylake+, am i correct ?.

Correct.
 
Yes. Look at details in Device Manager.



Finger print readers are usually USB. Easy to disable when you make custom SSDT for USBInjectAll.kext.



Correct.
I believe USB-C Ports are attached to XHC, when i open the SSDT-9.dsl which is the USB-C SSDT, it shows that they are connected into XHC, which if im correct, it means that they should work even with hotplug while if they are connected to thunderbolt they have issues on macOS ?

Also i believe that Fan Speed is detailed on SSDT-5.dsl, but im unsure if it is implemented correctly, if it is, is there any patching required in order to read that "except adding the SMCD Device with the proper call"

Code:
 Name (RPMV, Package (0x04)
            {
                One,
                0x07,
                Zero,
                Zero
            })
            Name (TMP1, Package (0x0C)
            {
                One,
                0x02,
                Zero,
                Zero,
                0x05,
                0x04,
                Zero,
                Zero,
                0x06,
                0x05,
                Zero,
                Zero
            })
            Name (TMP2, Package (0x08)
            {
                One,
                0x02,
                Zero,
                Zero,
                0x05,
                0x04,
                Zero,
                Zero
            })
            Name (TMP3, Package (0x04)
            {
                One,
                0x02,
                Zero,
                Zero
            })
            Method (TSDD, 0, NotSerialized)
            {
                If (LEqual (XTUS, Zero))
                {
                    Return (Zero)
                }

                If (\ECON)
                {
                    If (\TSOD)
                    {
                        Store (\_TZ.TZ01._TMP (), Index (TMP1, 0x02))
                        Return (TMP1)
                    }
                    Else
                    {
                        Store (\_TZ.TZ01._TMP (), Index (TMP2, 0x02))
                        Return (TMP2)
                    }
                }
                Else
                {
                    Store (\_TZ.TZ01._TMP (), Index (TMP3, 0x02))
                    Return (TMP3)
                }
            }

            Method (FSDD, 0, NotSerialized)
            {
                If (LEqual (XTUS, Zero))
                {
                    Return (Zero)
                }

                If (\ECON)
                {
                    Store (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.CFSP)), Index (RPMV, 0x02))
                }

                Return (RPMV)
            }

            Method (SDSP, 0, NotSerialized)
            {
                Return (0x0A)
            }
        }
    }
}
Theres is a XTUS and XTUB offset on DSDT
Code:
Name (SS1, Zero)
    Name (SS2, Zero)
    Name (SS3, One)
    Name (SS4, One)
    OperationRegion (GNVS, SystemMemory, 0xAFE3A000, 0x0766)
    Field (GNVS, AnyAcc, Lock, Preserve)
    {
      Other offset in order...... and
        OBFK,   8,
        OBFL,   8,
        OBFM,   8,
        OBFN,   8,
        OBFO,   8,
        XTUB,   32,  = This here
        XTUS,   32,  = This
        XMPB,   32,  = and maybe this
        DDRF,   8,
        RTD3,   8,
        Other offsets below....
Can you tell by these if RPM reading is impletented or not ?
I attached the DSDT & SSDT-5 which i believe its like the PTID Device or its equivalent.
 

Attachments

  • SSDT-5.dsl
    12.6 KB · Views: 232
  • DSDT.dsl
    1.3 MB · Views: 393
I believe USB-C Ports are attached to XHC, when i open the SSDT-9.dsl which is the USB-C SSDT, it shows that they are connected into XHC, which if im correct, it means that they should work even with hotplug while if they are connected to thunderbolt they have issues on macOS ?

Also i believe that Fan Speed is detailed on SSDT-5.dsl, but im unsure if it is implemented correctly, if it is, is there any patching required in order to read that "except adding the SMCD Device with the proper call"

Code:
 Name (RPMV, Package (0x04)
            {
                One,
                0x07,
                Zero,
                Zero
            })
            Name (TMP1, Package (0x0C)
            {
                One,
                0x02,
                Zero,
                Zero,
                0x05,
                0x04,
                Zero,
                Zero,
                0x06,
                0x05,
                Zero,
                Zero
            })
            Name (TMP2, Package (0x08)
            {
                One,
                0x02,
                Zero,
                Zero,
                0x05,
                0x04,
                Zero,
                Zero
            })
            Name (TMP3, Package (0x04)
            {
                One,
                0x02,
                Zero,
                Zero
            })
            Method (TSDD, 0, NotSerialized)
            {
                If (LEqual (XTUS, Zero))
                {
                    Return (Zero)
                }

                If (\ECON)
                {
                    If (\TSOD)
                    {
                        Store (\_TZ.TZ01._TMP (), Index (TMP1, 0x02))
                        Return (TMP1)
                    }
                    Else
                    {
                        Store (\_TZ.TZ01._TMP (), Index (TMP2, 0x02))
                        Return (TMP2)
                    }
                }
                Else
                {
                    Store (\_TZ.TZ01._TMP (), Index (TMP3, 0x02))
                    Return (TMP3)
                }
            }

            Method (FSDD, 0, NotSerialized)
            {
                If (LEqual (XTUS, Zero))
                {
                    Return (Zero)
                }

                If (\ECON)
                {
                    Store (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.CFSP)), Index (RPMV, 0x02))
                }

                Return (RPMV)
            }

            Method (SDSP, 0, NotSerialized)
            {
                Return (0x0A)
            }
        }
    }
}
Theres is a XTUS and XTUB offset on DSDT
Code:
Name (SS1, Zero)
    Name (SS2, Zero)
    Name (SS3, One)
    Name (SS4, One)
    OperationRegion (GNVS, SystemMemory, 0xAFE3A000, 0x0766)
    Field (GNVS, AnyAcc, Lock, Preserve)
    {
      Other offset in order...... and
        OBFK,   8,
        OBFL,   8,
        OBFM,   8,
        OBFN,   8,
        OBFO,   8,
        XTUB,   32,  = This here
        XTUS,   32,  = This
        XMPB,   32,  = and maybe this
        DDRF,   8,
        RTD3,   8,
        Other offsets below....
Can you tell by these if RPM reading is impletented or not ?
I attached the DSDT & SSDT-5 which i believe its like the PTID Device or its equivalent.

You can't tell from ACPI.
You can tell from Windows Device Manager or by looking at ioreg.

As far as fan reading, you'll find out as you get things installed and start investigating with ACPIDebug traces.
 
Status
Not open for further replies.
Back
Top