Contribute
Register

[GUIDE]HP Spectre x360 13-ap0037TU(Late 2018)

Status
Not open for further replies.
Joined
Mar 15, 2017
Messages
50
Motherboard
MSI H270 PC MATE
CPU
Core i7-7700K
Graphics
NVIDIA RTX2060
Mac
  1. iMac
  2. MacBook
Mobile Phone
  1. Android
  2. iOS
Installation of macOS Catalina on a HP Spectre x360 13-ap0000 series.

This method is supported macOS Catalina and Big Sur. EFI.zip includes macOS Catalina and Big Sur version of AirportItlwm.kext. The AirportItlwm.kext to be used is automatically switched depending on the version of the OS to be booted.

Last update:2021/03/19

Change log
2021/03/19
  • NVRAM is now working properly. Now you can install macOS Big Sur!
  • With the update of IntelBluetoothFirmware, Bluetooth works well!
2021/03/17
  • You no longer need to use DSDT! All you need is the SSDT and DSDT patch features.

Region: Japan
CPU: Core ™ i7-8565U
iGPU: Intel Graphics UHD 620
RAM: 16GB
Storage: NVMe Samsung PM981 512GB
USB: USB3.1 Gen2 x 1 Thunderbolt 3 x 2
WiFi: Intel Wireless AC 9560
Bluetooth: VID 8087 PID 0AAA USB
Trackpad: SYNA329A
Touchpad: ELAN2514

Note: The boot loader for this guide has changed from Clover to OpenCore.

The method using DSDT is no longer supported. We have developed a method to use the new SSDT, so please use it.
It should probably work.

By not using DSDT, you will be able to boot without problems even after updating the firmware.

What works?
  • Keyboard
  • Trackpad(I2C)
  • Touchpad(I2C)
  • Touch pen
  • Built-in Speaker
  • Built-in microphone
  • Headphone
  • Graphics acceleration
  • Thunderbolt 3
  • USB3.1 Gen2
  • Connection of external display for conversion from Type-C to HDMI
  • Screen brightness adjustment
  • The remaining battery capacity (The frequency of updating the battery level is unstable.)
  • Wi-Fi(Built-in intel chip)
  • Bluetooth(Built-in intel chip)
  • Siri
  • microSD card reader
  • Sleep
  • The screen return after opening the lid
  • App Store
  • iCloud
  • macOS update

What doesn't work?
  • Fingerprint authentication sensor
  • Camera (it may be used with some software because it is recognized as a USB camera)
  • iMessage
  • FaceTime

Warning
Samsung PM981 is not currently available for macOS. Replace or use external storage.
A great driver has recently been developed.
Samsung PM981 will work by using NVMeFix.kext.
However, if you want to continue using Windows, we recommend installing it on an external drive!

1. Prepare the installation USB

Storage capacity must be 16GB or more. You can install the installer on the storage where macOS is installed.
Use OpenCore as the boot loader.

Install OpenCore
Please install for UEFI.

2. Make config.plist

See this guide to create a config.plist.
https://dortania.github.io/vanilla-laptop-guide/OpenCore/config-laptop.plist/coffee-lake.html
You can also use the attached file.

Important settings in config.plist

Set Misc -> Debug -> Disable watch dog to true.

This fixes an issue where it could not boot early.

NVRAM -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> Set UIScale to 01.
This enables high resolution on OpenCore.

NVRAM -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> prev-lang:kbd
Please set the appropriate value. This is the keyboard language.
https://github.com/acidanthera/Open...AppleKeyboardLayouts/AppleKeyboardLayouts.txt
Please check this page for confirmation. For example, ja is [16384] ja - KANA , so the value to be set is ja:16384.

Booter -> DisableVariableWrite false
NVRAM -> LegacyEnable false
NVRAM -> LegacyOverwrite false
NVRAM -> WriteFlash false

ACPI -> Add

The SSDTs that should be installed are:
  • SSDT-AWAC.aml
  • SSDT-PLUG.aml
  • SSDT-XOSI.aml
  • SSDT-PNLF-CFL.aml
  • SSDT-UIAC.aml
  • SSDT-EC-USBX-LAPTOP.aml
  • SSDT-BATT.aml
  • SSDT-I2C.aml
  • SSDT-PMC.aml
You cannot start without SSDT-AWAC.aml, SSDT-XOSI.aml and SSDT-EC-USBX-LAPTOP.aml. Be sure to install it.
Please use the attached files for SSDT-BATT.aml and SSDT-I2C.aml. This file is created for the HP Specter x360 ap0000 series.
SSDT-PMC.aml is included with OpenCore. This enables NVRAM.

ACPI -> Patch
XML:
        <key>Patch</key>
        <array>
            <dict>
                <key>Comment</key>
                <string>Change _OSI to XOSI</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>X09TSQ==</data>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>OemTableId</key>
                <data></data>
                <key>Replace</key>
                <data>WE9TSQ==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
                <key>TableLength</key>
                <integer>0</integer>
                <key>TableSignature</key>
                <data></data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Change SMWR to XMWR(SSDT-BATT)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>U01XUg==</data>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>OemTableId</key>
                <data></data>
                <key>Replace</key>
                <data>WE1XUg==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
                <key>TableLength</key>
                <integer>0</integer>
                <key>TableSignature</key>
                <data></data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Change UPBI to XPBI(SSDT-BATT)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>VVBCSQ==</data>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>OemTableId</key>
                <data></data>
                <key>Replace</key>
                <data>WFBCSQ==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
                <key>TableLength</key>
                <integer>0</integer>
                <key>TableSignature</key>
                <data></data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Change UPBS to XPBS(SSDT-BATT)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>VVBCUw==</data>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>OemTableId</key>
                <data></data>
                <key>Replace</key>
                <data>WFBCUw==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
                <key>TableLength</key>
                <integer>0</integer>
                <key>TableSignature</key>
                <data></data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Change GBCO to XBCO(SSDT-BATT)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>R0JDTw==</data>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>OemTableId</key>
                <data></data>
                <key>Replace</key>
                <data>WEJDTw==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
                <key>TableLength</key>
                <integer>0</integer>
                <key>TableSignature</key>
                <data></data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Change GBIF to XBIF(SSDT-BATT)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>R0JJRg==</data>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>OemTableId</key>
                <data></data>
                <key>Replace</key>
                <data>WEJJRg==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
                <key>TableLength</key>
                <integer>0</integer>
                <key>TableSignature</key>
                <data></data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Change _BIF to XBIF(SSDT-BATT)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>X0JJRg==</data>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>OemTableId</key>
                <data></data>
                <key>Replace</key>
                <data>WEJJRg==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
                <key>TableLength</key>
                <integer>0</integer>
                <key>TableSignature</key>
                <data></data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Change _BST to XBST(SSDT-BATT)</string>
                <key>Count</key>
                <integer>0</integer>
                <key>Enabled</key>
                <true/>
                <key>Find</key>
                <data>X0JTVA==</data>
                <key>Limit</key>
                <integer>0</integer>
                <key>Mask</key>
                <data></data>
                <key>OemTableId</key>
                <data></data>
                <key>Replace</key>
                <data>WEJTVA==</data>
                <key>ReplaceMask</key>
                <data></data>
                <key>Skip</key>
                <integer>0</integer>
                <key>TableLength</key>
                <integer>0</integer>
                <key>TableSignature</key>
                <data></data>
            </dict>
        </array>


DeviceProperties
PciRoot(0x0)/Pci(0x1F,0x3)
This is an audio device.
XML:
            <key>PciRoot(0x0)/Pci(0x1F,0x3)</key>
            <dict>
                <key>AAPL,slot-name</key>
                <string>Internal@0,31,3</string>
                <key>device_type</key>
                <string>Multimedia audio controller</string>
                <key>layout-id</key>
                <integer>71</integer>
                <key>model</key>
                <string>Cannon Point-LP High Definition Audio Controller</string>
            </dict>
PciRoot(0x0)/Pci(0x2,0x0)
This is a graphics device.
XML:
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>CQClPg==</data>
                <key>AAPL,slot-name</key>
                <string>Internal@0,2,0</string>
                <key>device-id</key>
                <data>pT4AAA==</data>
                <key>device_type</key>
                <string>VGA compatible controller</string>
                <key>disable-external-gpu</key>
                <data>AQAAAA==</data>
                <key>enable-hdmi-dividers-fix</key>
                <data>AQAAAA==</data>
                <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>AQAAAA==</data>
                <key>framebuffer-con1-enable</key>
                <data>AQAAAA==</data>
                <key>framebuffer-con1-flags</key>
                <data>hwEAAA==</data>
                <key>framebuffer-con1-index</key>
                <data>AQAAAA==</data>
                <key>framebuffer-con1-pipe</key>
                <data>EgAAAA==</data>
                <key>framebuffer-con1-type</key>
                <data>AAgAAA==</data>
                <key>framebuffer-con2-busid</key>
                <data>AgAAAA==</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-patch-enable</key>
                <data>AQAAAA==</data>
                <key>framebuffer-unifiedmem</key>
                <data>AAAAgA==</data>
                <key>hda-gfx</key>
                <string>onboard-2</string>
                <key>model</key>
                <string>Intel UHD Graphics 620</string>
            </dict>
You don't need to set framebuffer-fbmem and framebuffer-stolenmem. These settings can be causes kernel panic.

Kernel -> Add
The kexts that should be installed are:
  • Lilu.kext
  • VirtualSMC.kext
  • SMCBatteryManager.kext
  • SMCLightSensor.kext
  • SMCProcessor.kext
  • SMCSuperIO.kext
  • AppleALC.kext
  • Sinetek-rtsx.kext
  • AirportItlwm.kext
  • USBInjectAll.kext
  • VoodooI2C.kext
  • VoodooI2CHID.kext
  • VoodooPS2Controller.kext(by acidanthera)
  • WhateverGreen.kext
  • BrightnessKeys.kext
  • NVMeFix.kext
For VoodooI2C, the load order of kext is important. The order in which they should be loaded is:
  1. VoodooI2C.kext/Contents/PlugIns/VoodooGPIO.kext
  2. VoodooI2C.kext/Contents/PlugIns/VoodooI2CServices.kext
  3. VoodooI2C.kext
  4. VoodooI2C.kext/Contents/PlugIns/VoodooInput.kext
  5. VoodooI2CHID.kext
In addition, please disable the following kext.
  1. VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext
  2. VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext
You can also use IntelBluetoothFirmware.kext as a driver for Bluetooth. However, there is no meaning for now because you can connect but you cannot communicate.

Kernel -> Force
To use AirportItlwm.kext, please put this
XML:
        <key>Force</key>
        <array>
            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>BundlePath</key>
                <string>System/Library/Extensions/IO80211Family.kext</string>
                <key>Comment</key>
                <string></string>
                <key>Enabled</key>
                <true/>
                <key>ExecutablePath</key>
                <string>Contents/MacOS/IO80211Family</string>
                <key>Identifier</key>
                <string>com.apple.iokit.IO80211Family</string>
                <key>MaxKernel</key>
                <string></string>
                <key>MinKernel</key>
                <string></string>
                <key>PlistPath</key>
                <string>Contents/Info.plist</string>
            </dict>
        </array>

Misc -> Security -> SecureBootModel
Default or Disabled

PlatformInfo -> Generic
Set the Mac model, serial number, etc. here.
Use MacBookPro16,3 for Mac model.(Other models are possible, but this model has the closest CPU)
Set the system serial number, system UUID, MLB, ROM (Use Mac address or 11 22 33 44 55 66).

UEFI -> Audio -> AudioDevice
Please use PciRoot(0x0)/Pci(0x1F,0x3).

UEFI -> Drivers
The drivers that must be installed are:
  • OpenRuntime.efi
  • OpenHfsPlus.efi(or HfsPlus.efi)
  • OpenCanopy.efi(Optional)
Do not install the memory driver, NVRAM driver, APFS driver. It is already included in OpenCore.

Please change as needed.

3.BIOS settings

Turn on the laptop and hit the F10 key repeatedly.
Then turn off Secure Boot.
Change the boot order as needed.
Save.

4.Install macOS

Install macOS Catalina to your drive.

5.Boot your macOS!​

Enjoy hackintosh!

Issues
Please switch to XPC or bootstrap_check is displayed and I cannot boot
->There is a problem with the graphics.

Installation of macOS stops in 2 minutes remaining/cannot shut down

macOS Big Sur Installer reboot loop and shows AppleActuatorDeviceUserClient::stop entered
->NVRAM may not be working properly.

EFI partition is out of space

->Press Shift + command + . on Finder(to show hidden files) and delete .Trashes

OpenCore no longer appears in boot options
->Reset NVRAM. After hitting F9 repeatedly to select the boot option, select the EFI file to start OpenCore. Execute Reset NVRAM in the menu.

Complete
S__16089314.jpg



1. Dump of DSDT
Use OpenCore for the DSDT dump. Currently (0.6.7) you need a debug version of OpenCore to dump the DSDT.
Also, Misc -> Debug -> SysReport in config.plist must be true.


Once config.plist is complete, start OpenCore once. macOS shuts down once without booting.
Then, a SysReport folder will be created in the EFI folder.
Copy SysReport -> ACPI -> DSDT.aml.

2.Edit DSDT
Edit using MaciASL.
Please apply the following patch in the attached file.

  • [bat]HP_Spectre_x360_apxxxx.txt
  • [I2C]HP_Spectre_x360_apxxxx.txt
  • [brightness_key]HP_Spectre_x360_apxxxx.txt
This patch requires if the keyboard and trackpad don't work.
Search PS2K by filter.
Replace Device (PS2K) {....} with the following.
Code:
                Device (PS2K) //Keyboard
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CID, EisaId ("PNP030B"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (And (IOST, 0x0400))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {1}
                    })
                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            FixedIO (
                                0x0060,             // Address
                                0x01,               // Length
                                )
                            FixedIO (
                                0x0064,             // Address
                                0x01,               // Length
                                )
                            IRQNoFlags ()
                                {1}
                        }
                        EndDependentFn ()
                    })
                    Method (_PSW, 1, NotSerialized)
                    {
                        Store (Arg0, KBFG)
                    }
                }
                Scope (\)
                {
                    Name (KBFG, Zero)
                }
                Method (PS2K._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x1D, 0x04))
                }
                Device (PS2M) //Mouse
                {
                    Name (_HID, EisaId ("PNP0F03"))
                    Name (_CID, EisaId ("PNP0F13"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (And (IOST, 0x4000))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                    Name (CRS1, ResourceTemplate ()
                    {
                        IRQNoFlags ()
                            {12}
                    })
                    Name (CRS2, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {12}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        If (And (IOST, 0x0400))
                        {
                            Return (CRS1)
                        }
                        Else
                        {
                            Return (CRS2)
                        }
                    }
                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IRQNoFlags ()
                                {12}
                        }
                        EndDependentFn ()
                    })
                    Method (_PSW, 1, NotSerialized)
                    {
                        Store (Arg0, MSFG)
                    }
                }
                Scope (\)
                {
                    Name (MSFG, Zero)
                }
                Method (PS2M._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x1D, 0x04))
                }
 

Attachments

  • [brightness_key]HP_Spectre_x360_apxxxx.txt
    283 bytes · Views: 439
  • [bat]HP_Spectre_x360_apxxxx.txt
    3.2 KB · Views: 480
  • SSDT-EC-USBX-LAPTOP.aml
    335 bytes · Views: 400
  • SSDT-PNLF-CFL.aml
    125 bytes · Views: 392
  • SSDT-XOSI.aml
    333 bytes · Views: 413
  • SSDT-AWAC.aml
    80 bytes · Views: 418
  • [I2C]HP_Spectre_x360_apxxxx.txt
    760 bytes · Views: 514
  • SSDT-I2C.aml
    306 bytes · Views: 254
  • SSDT-BATT.aml
    5.6 KB · Views: 265
  • SSDT-PMC.aml
    143 bytes · Views: 230
  • SSDT-EC-USBX-LAPTOP.aml
    335 bytes · Views: 219
  • config.plist
    34.8 KB · Views: 360
  • EFI.zip
    38.9 MB · Views: 1,055
Last edited:
is this also working with the 10th gen intel cpu? i have

13-aw0xxx
i7-1065G7 cpu
 
It seems like a new model. I do not know unless you try. However, the graphics are different, so please set the graphics using Hackintool.
 
Wow. Bluetooth works! Thank you!
Uh ... it can be connected via Bluetooth, but it doesn't seem to be able to communicate.
 
Uh ... it can be connected via Bluetooth, but it doesn't seem to be able to communicate.
I have similar laptop mine connects and works very well.
Try this make sure your computer starts from cold start (i.e. dont boot from windows using restart)--> switch off and then boot directly into macos, otherwise windows already loads the firmware.

Then try this kexts,(put both in you EFI):
 

Attachments

  • IntelBluetoothFirmware.kext
    512 bytes · Views: 272
  • IntelBluetoothInjector.kext
    512 bytes · Views: 262
This should solve siri and imessage by the way
 

Attachments

  • NullEthernet.kext
    512 bytes · Views: 283
  • NullEthernetInjector.kext
    512 bytes · Views: 284

Attachments

  • Sinetek-rtsx.kext
    512 bytes · Views: 273
・microSD card reader

Right now it is recognised after inserting the sdcard but can only read.
the developer is working on writing.

Hope this helps
I see those kexts broken. So I downloaded it myself and used it in EFI / Clover / kexts / Other.
But everything didn't work. iMessage is trying according to the guide. My account may be locked out.
 
Status
Not open for further replies.
Back
Top