Contribute
Register

[Guide] Dell XPS 12 9250 - High Sierra 10.13.4

Status
Not open for further replies.
Joined
Nov 28, 2015
Messages
146
Motherboard
Lenovo Yoga 920 - OpenCore
CPU
i7-8550U
Graphics
HD620, 3840x2160
Dell XPS 12 9250
DellXPS12.jpg
Works:
Power managemennt
4K Display QE/CE
Sleep
Touchscreen
WiFi (with DW1560)
Audio

Doesn't work:
SD Card Reader
Cameras
Thunderbolt 3 hot-plug
Dell Active Pen Support
Intel WiFi 8260NGW (I switched the wifi m.2 card to a DW1560 instead)
Probably other things..

Known issues:
Video playback can be choppy (graphics framebuffer needs 128MB DVMT but BIOS is locked at 64MB)
Must press and hold power button for ~7-10 seconds to wake from sleep

Recommended BIOS Settings.
Use BIOS version 1.2.0.

- Settings
- General
- Advanced Boot Options
* Enable Legacy Option ROMs
- System Configuration
- USB/Thunderbolt Configuration
* Enable USB Support
* Enable Thunderbolt Ports
* Always Allow Dell Docks
* Enable External USB Port
* Enable Thunderbolt Boot Support
(Set ‘Security level - No Security’)
- Audio
* Enable Audio
* Enable Microphone
* Enable Internal Speaker
- Keyboard Illumination
* Disabled
- Security
- Password Bypass
* Disabled
- Password Change
* Allow Non-Admin Password Change
- Computrace(R)
* Deactivate
- CPU XD Support
* Enable CPU XD Support
- Intel@ Software Guard ExtensionTM
* Disabled
- Performance
- Multi Core Support
* Enable Multi Core Support
- Intel@ SpeedStepTM
* Enable Intel@ SpeedStepTM
- C-State Control
* C states
- Intel@ TurboBoostTM
* Enabled
- Power Management
- Lid Switch
* Enable Lid Switch
- Virtualization Support
* Enable Intel Virtualization Technology
- Wireless
- Wireless Device Enable
* Bluetooth
* WLAN
- Maintenance
- BIOS Downgrade
* Allow BIOS Downgrade
- BIOS Recovery
* BIOS Recovery from Hard Drive

Please note, some of the following steps could probably be simplified with MaciASL patches down the line.

**Download the attached zips prior to continuing to the next section.**

Installation steps:

1) Download macOS 10.13.4. Use ‘createinstallmedia’ method install with following command (preferred)
This step is to be performed on an actual Mac.

Code:
sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/macos10.13.4 --applicationpath /Applications/Install\ macOS\ High\ Sierra.app --nointeraction

2) Replace everything on EFI partition in EFI>CLOVER of the USB with the content of CLOVER-pre found in this directory.

3) Now connect USB to Dell XPS 12 and start installer. Follow usual guides to install macOS.

4) Once the installer finishes, boot into the newly created system partition. This may take several times before the installer completely finishes.

5) Install needed apps:

Clover Configurator
IORegistryExplorer
MaciASL

Install iasl. You must open a Terminal window to the location of the iasl binary:

Code:
sudo cp iasl /usr/bin

6) Install the kexts found in the “Kexts/System” folder to /L/E. This can be done by navigating to the folder in Terminal and executing:

Code:
sudo chown -R root:wheel *
sudo cp -r * /Library/Extensions

7) Replace everything on EFI partition in EFI>CLOVER on the system partition with the content of CLOVER-post found in this directory.

8) Remove *LpssI2C kexts

Remove AppleIntelLpssI2C.kext and appleintellpssi2ccontroller.kext from /S/L/E:

Code:
sudo rm -r /Library/Extensions/AppleIntelLpssI2C.kext /Library/Extensions/appleintellpssi2ccontroller.kext

9) Update kext cache

Code:
sudo kextcache -i /

10) Disable Hibernate

Code:
sudo pmset -a hibernatemode 0
sudo rm /var/vm/sleepimage
sudo mkdir /var/vm/sleepimage
sudo pmset -a standby 0
sudo pmset -a autopoweroff 0

11) Install VoodooHDA-macOS-High-Sierra.dmg for audio

12) Reboot to Clover and press F2 and F4 to download the pre-boot logs and DSDTs respectively

13) Mount EFI partition with Clover Configurator. Copy DSDT and SSDTs found in /EFI/CLOVER/ACPI/origin to temp directory.

14) Copy the following content into a file called refs.txt into the same temp directory location as the DSDT and SSDTs.

Code:
External(MDBG, MethodObj, 1)
External(_GPE.MMTB, MethodObj, 0)
External(_SB.PCI0.LPCB.H_EC.ECWT, MethodObj, 2)
External(_SB.PCI0.LPCB.H_EC.ECRD, MethodObj, 1)
External(_SB.PCI0.LPCB.H_EC.ECMD, MethodObj, 1)
External(_SB.PCI0.PEG0.PEGP.SGPO, MethodObj, 2)
External(_SB.PCI0.GFX0.DD02._BCM, MethodObj, 1)
External(_SB.PCI0.SAT0.SDSM, MethodObj, 4)
External(_GPE.VHOV, MethodObj, 3)
External(_SB.PCI0.XHC.RHUB.TPLD, MethodObj, 2)

15) Use iasl to extract *.dsl with:

Code:
iasl -da -dl -fe refs.txt DSDT.aml SSDT*.aml

16) Fix the broken DSDT.dsl:

Code:
If (LEqual (PM6H, One))
{
    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status
    Store (Zero, ECRW (If (PM0H)
        {
            CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
            Store (Zero, F0LN)
              }))
}

Should be:

Code:
If (LEqual (PM6H, One))
{
    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status
    Store (Zero, ECRW)
}

If (PM0H)
{
    CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
    Store (Zero, F0LN)
}

NOTE: Make sure spacing is correct.

17) Fix sleep. Add the following lines of code to the bottom of the DSDT.dsl, right before the last curly bracket:

Code:
Scope (\_SB)
{
    Method (LPS0, 0, NotSerialized)
    {
        Store ("Method \\_SB._LPS0 Called", Debug)
        Return (One)
    }
}

Scope (\_GPE)
{
    Method (LXEN, 0, NotSerialized)
    {
        Store ("Method \\_GPE.LXEN Called", Debug)
        Return (One)
    }
}

18) Get the touchscreen working. Before we get the touchscreen working, we need to add some code to ensure the trackpad works once we add the I2C kexts. You will need to add the following to VoodooI2CHID.kext/Contents/Info.plist (unless you use the VoodooI2C* kexts included in this guide, in such case go to step 18a)

After the following line of code:

Code:
        <key>VoodooI2CHIDDevice Multitouch HID Event Driver</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.alexandred.VoodooI2CHID</string>
            <key>DeviceUsagePairs</key>
            <array>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>4</integer>
                    <key>DeviceUsagePage</key>
                    <integer>13</integer>
                </dict>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>5</integer>
                    <key>DeviceUsagePage</key>
                    <integer>13</integer>
                </dict>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>2</integer>
                    <key>DeviceUsagePage</key>
                    <integer>13</integer>
                </dict>
            </array>
            <key>IOClass</key>
            <string>VoodooI2CMultitouchHIDEventDriver</string>

Add the following:

Code:
            <key>IOPropertyMatch</key>
            <dict>
                <key>Transport</key>
                <string>I2C</string>
            </dict>

18a) Open MaciASL and add the following patch repo:

VoodooI2C:

http://raw.github.com/alexandred/VoodooI2C-Patches/master

18b) Load your decompiled DSDT.dsl and apply the following patches:

‘[Controllers] I2C Controllers [SKL]’
‘[GPIO] GPIO Controller Enable [SKL+]’
‘[Windows] Windows 10 Patch’

18c) Search for SBFG until you find property ‘_SB.PCI0.I2C1’. Now select _CRS on the left side pane. Look for the following code that should look something like the following:

Code:
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                If (LLess (OSYS, 0x07DC))
                {
                    Return (SBFI)
                }

                If (LEqual (SDM1, Zero))
                {
                    Return (ConcatenateResTemplate (SBFB, SBFG))
                }

                Return (ConcatenateResTemplate (SBFB, SBFI))
            }

Replace it with:

Code:
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Return (ConcatenateResTemplate (SBFB, SBFG))
            }

Compile your DSDT.aml and put in /EFI/CLOVER/ACPI. Reboot. Touchscreen should work.

References:

CoreDisplay:
https://github.com/Floris497/mac-pixel-clock-patch-V2/issues/211

Power Management:
https://www.tonymacx86.com/threads/guide-native-power-management-for-laptops.175801/

Sleep issues:
https://www.tonymacx86.com/threads/getting-sleep-wake-to-work-on-dell-xps-12-9250-on-10-13-4.251819/
https://pikeralpha.wordpress.com/2017/01/12/debugging-sleep-issues/

USB:
https://www.tonymacx86.com/threads/...usbinjectall-working-on-dell-xps-9250.251812/

Touchscreen:
https://voodooi2c.github.io/#Installation/Installation

https://gitter.im/alexandred/VoodooI2C


Sorry for anything I missed!
 

Attachments

  • CLOVER-pre.zip
    2 MB · Views: 481
  • CLOVER-post.zip
    2.1 MB · Views: 563
  • Kexts.zip
    3.2 MB · Views: 476
  • Apps.zip
    15.3 MB · Views: 425
For anyone whom may be using this guide. I made some changes to this guide but, unfortunately, tonymac has a spam guard that is activated by my update. I have reached out to a moderator and they have not responded. So it looks like I will not be able to update this guide any further. Sorry for the inconvenience.

Screen Shot 2018-06-29 at 8.42.42 PM.png
 
For anyone whom may be using this guide. I made some changes to this guide but, unfortunately, tonymac has a spam guard that is activated by my update. I have reached out to a moderator and they have not responded. So it looks like I will not be able to update this guide any further. Sorry for the inconvenience.

View attachment 338371
Hi, any updates on this? An updated guide would be great. Thanks in advance.
 
hi man,i had a dell 7275 ,i use your share files it's work to me,i hope your update it! thanks!
 
hi man,i had a dell 7275 ,i use your share files it's work to me,i hope your update it! thanks!

Hi kevin21, do you really get success for all things with your Dell 7275? What about wi-fi + BT - is there inside DW1560 card? Also graphics, sleep, sound... I had to ask you because I am in dilema between this Dell model and HP X2 1012 G1 - there is a pretty clear procedure. Also, battery life for this model - is it o.k.?
 
Yes it"s work well,you can try this.sorry my bad english);
Hi kevin21, do you really get success for all things with your Dell 7275? What about wi-fi + BT - is there inside DW1560 card? Also graphics, sleep, sound... I had to ask you because I am in dilema between this Dell model and HP X2 1012 G1 - there is a pretty clear procedure. Also, battery life for this model - is it o.k.?
 
Yes it"s work well,you can try this.sorry my bad english);
thanx. what about battery, I mean how many hours of autonomy can you get of some average usage?
don't worry about english, mine is also not good, but it is o.k. if we can understand.
 
thanx. what about battery, I mean how many hours of autonomy can you get of some average usage?
don't worry about english, mine is also not good, but it is o.k. if we can understand.
The battery can use about 3 hours.
 
wif+BT replace DW1560 card,graphics\sleep\sound\usb3.1 all can work.
webcam not work.
 
The touchscreen and touchpad worked well
 
Status
Not open for further replies.
Back
Top