From f82da1d940d6295ecb414ce4c1496796350bfe6b Mon Sep 17 00:00:00 2001 From: "Travis Build Bot (from Travis CI)" Date: Sat, 18 Jul 2020 18:18:21 +0000 Subject: [PATCH] Deploy dortania/Getting-Started-With-ACPI to github.com/dortania/Getting-Started-With-ACPI.git:gh-pages --- .gitattributes | 2 - .gitignore | 4 - .travis.yml | 24 - 404.html | 22 + CONTRIBUTING.html | 999 +------------- Desktops/desktop-disable.html | 976 +------------- Desktops/desktop-ec.html | 48 + Desktops/desktop-ec.md | 4 - Laptops/backlight-methods/manual.html | 968 +------------- Laptops/backlight-methods/prebuilt.html | 945 +------------- Laptops/backlight.html | 937 +------------- Laptops/laptop-disable.html | 999 +------------- Laptops/laptop-ec.html | 48 + Laptops/laptop-ec.md | 3 - Laptops/trackpad-methods/manual.html | 967 +------------- Laptops/trackpad-methods/prebuilt.html | 968 +------------- Laptops/trackpad.html | 938 +------------- Manual/compile.html | 958 +------------- Manual/dump.html | 1006 +-------------- SUMMARY.html | 48 + Universal/awac-methods/manual.html | 1018 +-------------- Universal/awac-methods/prebuilt.html | 943 +------------- Universal/awac.html | 951 +------------- Universal/ec-fix.html | 964 +------------- Universal/ec-methods/manual.html | 1063 +-------------- Universal/ec-methods/prebuilt.html | 966 +------------- Universal/ec-methods/ssdttime.html | 960 +------------- Universal/irq.html | 927 +------------ Universal/nvram-methods/manual.html | 985 +------------- Universal/nvram-methods/prebuilt.html | 947 +------------- Universal/nvram.html | 945 +------------- Universal/plug-methods/manual.html | 998 +------------- Universal/plug-methods/prebuilt.html | 948 +------------- Universal/plug-methods/ssdttime.html | 949 +------------- Universal/plug.html | 945 +------------- Universal/rhub-methods/manual.html | 973 +------------- Universal/rhub-methods/prebuilt.html | 934 +------------- Universal/rhub.html | 942 +------------- Universal/smbus-methods/manual.html | 986 +------------- Universal/smbus.html | 955 +------------- Universal/spoof.html | 995 +------------- .../README-md/acpi-logo.png => acpi-logo.png | Bin ...ng => apple-touch-icon-precomposed-152.png | Bin assets/css/0.styles.5c2447d6.css | 1 + .../img/ACPI000E.f11d4625.png | Bin .../img/PNP0B00.cd0c5876.png | Bin .../img/after-rename.48bf32ad.png | Bin .../amd.png => assets/img/amd.acf5492b.png | Bin .../img/before-rename.c0ccc637.png | Bin .../cp00.png => assets/img/cp00.d25cad0f.png | Bin .../img/devicemanager.770a10fc.png | Bin .../ec.png => assets/img/ec.dd4b7c64.png | Bin .../img/gpi0-2.8c3726d3.png | Bin .../gpi0.png => assets/img/gpi0.b0e0b8d8.png | Bin .../lpc.png => assets/img/lpc.bfa9cf23.png | Bin .../img/macos-compile.5b3bc6ad.png | Bin .../img/nvidia.672e8e16.png | Bin .../pci.png => assets/img/pci.81a3ae52.png | Bin .../pci0.png => assets/img/pci0.4477f361.png | Bin .../img/plug-bios.1b527198.png | Bin .../img/plug-x299.8123a653.png | Bin .../pnp.png => assets/img/pnp.8c2387eb.png | Bin .../img/processor-2.8af8c8dd.png | Bin .../img/processor.38dc34ad.png | Bin .../img/rhub-path.0ccecac7.png | Bin assets/img/search.83621669.svg | 1 + .../img/smbus.d9dd6044.png | Bin .../img/ssdt-after.28584bc4.png | Bin .../img/ssdt-after.3d0ae705.png | Bin .../img/ssdt-after.4bf2a9ef.png | Bin .../img/ssdt-after.7996c4b7.png | Bin .../img/ssdt-after.971e8c4d.png | Bin .../img/ssdt-after.9ea3604d.png | Bin .../img/ssdt-before.24a00e7a.png | Bin .../img/ssdt-before.6ddf7dfa.png | Bin .../img/ssdt-before.b64846c1.png | Bin .../img/ssdt-before.b846f355.png | Bin .../img/ssdt-before.b9b19f9b.png | Bin .../img/ssdt-before.f71c9e04.png | Bin .../img/ssdt-clean.b241b36e.png | Bin .../img/ssdt-mess.8323e4a6.png | Bin .../img/ssdttime.54f2ba0d.png | Bin .../sta.png => assets/img/sta.e2d0aed0.png | Bin .../img/sysreport.8d1d1d0e.png | Bin .../img/verify.58363d4d.png | Bin .../img/windows-compile.62b90d74.png | Bin assets/js/10.6abe490e.js | 1 + assets/js/11.9da31f2b.js | 1 + assets/js/12.4021d140.js | 1 + assets/js/13.8aab1973.js | 1 + assets/js/14.19390165.js | 1 + assets/js/15.0fe52b37.js | 1 + assets/js/16.93d5f9da.js | 1 + assets/js/17.cf39e23d.js | 1 + assets/js/18.8f16e3a6.js | 1 + assets/js/19.48e1648f.js | 1 + assets/js/2.83c34eea.js | 1 + assets/js/20.3c35a8ab.js | 1 + assets/js/21.58b5af1b.js | 1 + assets/js/22.1c7d4144.js | 1 + assets/js/23.0e0b8798.js | 1 + assets/js/24.f2e7943c.js | 1 + assets/js/25.f0cc4e02.js | 1 + assets/js/26.463dbace.js | 1 + assets/js/27.f1ee2064.js | 1 + assets/js/28.71ad72d1.js | 1 + assets/js/29.523c6d21.js | 1 + assets/js/3.1ae2f26d.js | 1 + assets/js/30.e5aa9ce4.js | 1 + assets/js/31.1f0591e4.js | 1 + assets/js/32.4eacdc3c.js | 1 + assets/js/33.cb8e0ba9.js | 1 + assets/js/34.d81f54d4.js | 1 + assets/js/35.9794b789.js | 1 + assets/js/36.09211179.js | 1 + assets/js/37.22b66477.js | 1 + assets/js/38.d450ac47.js | 1 + assets/js/39.adb1ffd1.js | 1 + assets/js/4.7080bedd.js | 1 + assets/js/40.841e8a37.js | 1 + assets/js/41.582faaa6.js | 1 + assets/js/42.ed0e6ae5.js | 1 + assets/js/43.8c05d7f3.js | 1 + assets/js/44.40f02ba5.js | 1 + assets/js/45.1da8bea8.js | 1 + assets/js/46.337c251a.js | 1 + assets/js/47.4677ceb1.js | 1 + assets/js/48.a66fecfb.js | 1 + assets/js/49.6d09c6c3.js | 1 + assets/js/5.700830ef.js | 1 + assets/js/50.c06a254a.js | 1 + assets/js/51.933dc5b9.js | 1 + assets/js/52.a7bafb3a.js | 1 + assets/js/6.68cd5bf6.js | 1 + assets/js/7.78dd85ec.js | 1 + assets/js/8.fc471e91.js | 1 + assets/js/9.9de7acea.js | 1 + assets/js/app.c97779b2.js | 9 + cleanup.html | 945 +------------- dortania-logo-clear.png | Bin 0 -> 55046 bytes extra-files/compiled/SSDT-AWAC.aml | Bin 73 -> 0 bytes extra-files/compiled/SSDT-EC-DESKTOP.aml | Bin 6415 -> 0 bytes extra-files/compiled/SSDT-EC-LAPTOP.aml | Bin 190 -> 0 bytes extra-files/compiled/SSDT-EC-USBX-DESKTOP.aml | Bin 6561 -> 0 bytes extra-files/compiled/SSDT-EC-USBX-LAPTOP.aml | Bin 335 -> 0 bytes extra-files/compiled/SSDT-PLUG-DRTNIA.aml | Bin 693 -> 0 bytes extra-files/compiled/SSDT-PMC.aml | Bin 414 -> 0 bytes extra-files/compiled/SSDT-PNLF-CFL.aml | Bin 125 -> 0 bytes extra-files/compiled/SSDT-PNLF.aml | Bin 1128 -> 0 bytes extra-files/compiled/SSDT-RHUB.aml | Bin 316 -> 0 bytes extra-files/compiled/SSDT-XOSI.aml | Bin 323 -> 0 bytes extra-files/decompiled/SSDT-AWAC.dsl | 16 - extra-files/decompiled/SSDT-EC-DESKTOP.dsl | 759 ----------- extra-files/decompiled/SSDT-EC-LAPTOP.dsl | 36 - .../decompiled/SSDT-EC-USBX-DESKTOP.dsl | 785 ----------- .../decompiled/SSDT-EC-USBX-LAPTOP.dsl | 62 - extra-files/decompiled/SSDT-GPI0.dsl | 19 - extra-files/decompiled/SSDT-GPI0.dsl.zip | Bin 842 -> 0 bytes extra-files/decompiled/SSDT-GPU-DISABLE.dsl | 46 - .../decompiled/SSDT-GPU-DISABLE.dsl.zip | Bin 1065 -> 0 bytes extra-files/decompiled/SSDT-GPU-SPOOF.dsl | 69 - extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip | Bin 1156 -> 0 bytes extra-files/decompiled/SSDT-NoHybGfx.dsl | 50 - extra-files/decompiled/SSDT-NoHybGfx.dsl.zip | Bin 1313 -> 0 bytes extra-files/decompiled/SSDT-PLUG-DRTNIA.dsl | 145 --- extra-files/decompiled/SSDT-PLUG.dsl | 50 - extra-files/decompiled/SSDT-PLUG.dsl.zip | Bin 1180 -> 0 bytes extra-files/decompiled/SSDT-PMC-prebuilt.dsl | 100 -- extra-files/decompiled/SSDT-PNLF-CFL.dsl | 17 - extra-files/decompiled/SSDT-PNLF-CFL.dsl.zip | Bin 953 -> 0 bytes extra-files/decompiled/SSDT-RHUB-prebuilt.dsl | 69 - extra-files/decompiled/SSDT-RHUB.dsl | 24 - extra-files/decompiled/SSDT-XOSI.dsl | 51 - extra-files/decompiled/SSDT-dGPU-Off.dsl | 35 - extra-files/decompiled/SSDT-dGPU-Off.dsl.zip | Bin 988 -> 0 bytes gitbook/images/favicon.ico => favicon.ico | Bin gitbook/fonts/fontawesome/FontAwesome.otf | Bin 124988 -> 0 bytes .../fonts/fontawesome/fontawesome-webfont.eot | Bin 76518 -> 0 bytes .../fonts/fontawesome/fontawesome-webfont.svg | 685 ---------- .../fonts/fontawesome/fontawesome-webfont.ttf | Bin 152796 -> 0 bytes .../fontawesome/fontawesome-webfont.woff | Bin 90412 -> 0 bytes .../fontawesome/fontawesome-webfont.woff2 | Bin 71896 -> 0 bytes gitbook/gitbook-plugin-anchors/plugin.css | 30 - .../fontsettings.js | 240 ---- .../gitbook-plugin-fontsettings/website.css | 291 ----- .../gitbook-plugin-github-buttons/plugin.js | 85 -- .../plugin.js.map | 1 - gitbook/gitbook-plugin-highlight/ebook.css | 135 -- gitbook/gitbook-plugin-highlight/website.css | 434 ------- .../medium-zoom.min.js | 2 - gitbook/gitbook-plugin-medium-zoom/plugin.css | 7 - gitbook/gitbook-plugin-medium-zoom/plugin.js | 28 - .../jquery.mark.min.js | 7 - gitbook/gitbook-plugin-search-plus/search.css | 44 - gitbook/gitbook-plugin-search-plus/search.js | 252 ---- gitbook/gitbook-plugin-sharing/buttons.js | 90 -- gitbook/gitbook.js | 4 - gitbook/style.css | 9 - gitbook/theme.js | 4 - ...h-icon-precomposed-152.png => homepage.png | Bin icons/favicon.ico | Bin 120301 -> 0 bytes images/Desktops/lpc.png | Bin 1219783 -> 0 bytes images/Laptops/laptop-ec-md/dsdt-pnp.png | Bin 1064437 -> 0 bytes images/Laptops/laptop-ec-md/ec.png | Bin 416761 -> 0 bytes images/Universal/awac-md/lpc.png | Bin 1015522 -> 0 bytes images/Universal/awac-md/stas.png | Bin 1115549 -> 0 bytes index.html | 969 +------------- search_plus_index.json | 1 - ssdt-methods/ssdt-easy.html | 1023 +-------------- ssdt-methods/ssdt-long.html | 933 +------------- ssdt-methods/ssdt-methods.html | 943 +------------- ssdt-methods/ssdt-prebuilt.html | 1069 +-------------- ssdt-platform.html | 1145 +---------------- styles/website.css | 74 -- .../decompile-error.png | Bin .../invalid-parse.png | Bin troubleshooting.html | 967 +------------- 217 files changed, 2455 insertions(+), 41515 deletions(-) delete mode 100644 .gitattributes delete mode 100644 .gitignore delete mode 100644 .travis.yml create mode 100644 404.html create mode 100644 Desktops/desktop-ec.html delete mode 100644 Desktops/desktop-ec.md create mode 100644 Laptops/laptop-ec.html delete mode 100644 Laptops/laptop-ec.md create mode 100644 SUMMARY.html rename images/README-md/acpi-logo.png => acpi-logo.png (100%) rename gitbook/images/apple-touch-icon-precomposed-152.png => apple-touch-icon-precomposed-152.png (100%) create mode 100644 assets/css/0.styles.5c2447d6.css rename images/Universal/awac-md/ACPI000E.png => assets/img/ACPI000E.f11d4625.png (100%) rename images/Universal/awac-md/PNP0B00.png => assets/img/PNP0B00.cd0c5876.png (100%) rename images/Universal/smbus-md/after-rename.png => assets/img/after-rename.48bf32ad.png (100%) rename images/Desktops/amd.png => assets/img/amd.acf5492b.png (100%) rename images/Universal/smbus-md/before-rename.png => assets/img/before-rename.c0ccc637.png (100%) rename images/Universal/plug-md/cp00.png => assets/img/cp00.d25cad0f.png (100%) rename images/Laptops/backlight-md/devicemanager.png => assets/img/devicemanager.770a10fc.png (100%) rename images/Desktops/ec.png => assets/img/ec.dd4b7c64.png (100%) rename images/Laptops/trackpad-md/gpi0-2.png => assets/img/gpi0-2.8c3726d3.png (100%) rename images/Laptops/trackpad-md/gpi0.png => assets/img/gpi0.b0e0b8d8.png (100%) rename images/Universal/nvram-md/lpc.png => assets/img/lpc.bfa9cf23.png (100%) rename images/Manual/compile-md/macos-compile.png => assets/img/macos-compile.5b3bc6ad.png (100%) rename images/Desktops/nvidia.png => assets/img/nvidia.672e8e16.png (100%) rename images/Universal/smbus-md/pci.png => assets/img/pci.81a3ae52.png (100%) rename images/Universal/nvram-md/pci0.png => assets/img/pci0.4477f361.png (100%) rename images/Universal/plug-md/plug-bios.png => assets/img/plug-bios.1b527198.png (100%) rename images/Universal/plug-md/plug-x299.png => assets/img/plug-x299.8123a653.png (100%) rename images/Desktops/pnp.png => assets/img/pnp.8c2387eb.png (100%) rename images/Universal/plug-md/processor-2.png => assets/img/processor-2.8af8c8dd.png (100%) rename images/Universal/plug-md/processor.png => assets/img/processor.38dc34ad.png (100%) rename images/Universal/rhub-md/rhub-path.png => assets/img/rhub-path.0ccecac7.png (100%) create mode 100644 assets/img/search.83621669.svg rename images/Universal/smbus-md/smbus.png => assets/img/smbus.d9dd6044.png (100%) rename images/Laptops/backlight-md/ssdt-after.png => assets/img/ssdt-after.28584bc4.png (100%) rename images/Universal/awac-md/ssdt-after.png => assets/img/ssdt-after.3d0ae705.png (100%) rename images/Universal/rhub-md/ssdt-after.png => assets/img/ssdt-after.4bf2a9ef.png (100%) rename images/Desktops/ssdt-after.png => assets/img/ssdt-after.7996c4b7.png (100%) rename images/Universal/nvram-md/ssdt-after.png => assets/img/ssdt-after.971e8c4d.png (100%) rename images/Laptops/trackpad-md/ssdt-after.png => assets/img/ssdt-after.9ea3604d.png (100%) rename images/Universal/rhub-md/ssdt-before.png => assets/img/ssdt-before.24a00e7a.png (100%) rename images/Universal/nvram-md/ssdt-before.png => assets/img/ssdt-before.6ddf7dfa.png (100%) rename images/Laptops/trackpad-md/ssdt-before.png => assets/img/ssdt-before.b64846c1.png (100%) rename images/Desktops/ssdt-before.png => assets/img/ssdt-before.b846f355.png (100%) rename images/Universal/awac-md/ssdt-before.png => assets/img/ssdt-before.b9b19f9b.png (100%) rename images/Laptops/backlight-md/ssdt-before.png => assets/img/ssdt-before.f71c9e04.png (100%) rename images/Universal/plug-md/ssdt-clean.png => assets/img/ssdt-clean.b241b36e.png (100%) rename images/Universal/plug-md/ssdt-mess.png => assets/img/ssdt-mess.8323e4a6.png (100%) rename images/ssdt-easy-md/ssdttime.png => assets/img/ssdttime.54f2ba0d.png (100%) rename images/Desktops/sta.png => assets/img/sta.e2d0aed0.png (100%) rename images/Manual/dump-md/sysreport.png => assets/img/sysreport.8d1d1d0e.png (100%) rename images/Universal/smbus-md/verify.png => assets/img/verify.58363d4d.png (100%) rename images/Manual/compile-md/windows-compile.png => assets/img/windows-compile.62b90d74.png (100%) create mode 100644 assets/js/10.6abe490e.js create mode 100644 assets/js/11.9da31f2b.js create mode 100644 assets/js/12.4021d140.js create mode 100644 assets/js/13.8aab1973.js create mode 100644 assets/js/14.19390165.js create mode 100644 assets/js/15.0fe52b37.js create mode 100644 assets/js/16.93d5f9da.js create mode 100644 assets/js/17.cf39e23d.js create mode 100644 assets/js/18.8f16e3a6.js create mode 100644 assets/js/19.48e1648f.js create mode 100644 assets/js/2.83c34eea.js create mode 100644 assets/js/20.3c35a8ab.js create mode 100644 assets/js/21.58b5af1b.js create mode 100644 assets/js/22.1c7d4144.js create mode 100644 assets/js/23.0e0b8798.js create mode 100644 assets/js/24.f2e7943c.js create mode 100644 assets/js/25.f0cc4e02.js create mode 100644 assets/js/26.463dbace.js create mode 100644 assets/js/27.f1ee2064.js create mode 100644 assets/js/28.71ad72d1.js create mode 100644 assets/js/29.523c6d21.js create mode 100644 assets/js/3.1ae2f26d.js create mode 100644 assets/js/30.e5aa9ce4.js create mode 100644 assets/js/31.1f0591e4.js create mode 100644 assets/js/32.4eacdc3c.js create mode 100644 assets/js/33.cb8e0ba9.js create mode 100644 assets/js/34.d81f54d4.js create mode 100644 assets/js/35.9794b789.js create mode 100644 assets/js/36.09211179.js create mode 100644 assets/js/37.22b66477.js create mode 100644 assets/js/38.d450ac47.js create mode 100644 assets/js/39.adb1ffd1.js create mode 100644 assets/js/4.7080bedd.js create mode 100644 assets/js/40.841e8a37.js create mode 100644 assets/js/41.582faaa6.js create mode 100644 assets/js/42.ed0e6ae5.js create mode 100644 assets/js/43.8c05d7f3.js create mode 100644 assets/js/44.40f02ba5.js create mode 100644 assets/js/45.1da8bea8.js create mode 100644 assets/js/46.337c251a.js create mode 100644 assets/js/47.4677ceb1.js create mode 100644 assets/js/48.a66fecfb.js create mode 100644 assets/js/49.6d09c6c3.js create mode 100644 assets/js/5.700830ef.js create mode 100644 assets/js/50.c06a254a.js create mode 100644 assets/js/51.933dc5b9.js create mode 100644 assets/js/52.a7bafb3a.js create mode 100644 assets/js/6.68cd5bf6.js create mode 100644 assets/js/7.78dd85ec.js create mode 100644 assets/js/8.fc471e91.js create mode 100644 assets/js/9.9de7acea.js create mode 100644 assets/js/app.c97779b2.js create mode 100644 dortania-logo-clear.png delete mode 100644 extra-files/compiled/SSDT-AWAC.aml delete mode 100644 extra-files/compiled/SSDT-EC-DESKTOP.aml delete mode 100644 extra-files/compiled/SSDT-EC-LAPTOP.aml delete mode 100644 extra-files/compiled/SSDT-EC-USBX-DESKTOP.aml delete mode 100644 extra-files/compiled/SSDT-EC-USBX-LAPTOP.aml delete mode 100644 extra-files/compiled/SSDT-PLUG-DRTNIA.aml delete mode 100644 extra-files/compiled/SSDT-PMC.aml delete mode 100644 extra-files/compiled/SSDT-PNLF-CFL.aml delete mode 100644 extra-files/compiled/SSDT-PNLF.aml delete mode 100644 extra-files/compiled/SSDT-RHUB.aml delete mode 100644 extra-files/compiled/SSDT-XOSI.aml delete mode 100644 extra-files/decompiled/SSDT-AWAC.dsl delete mode 100644 extra-files/decompiled/SSDT-EC-DESKTOP.dsl delete mode 100644 extra-files/decompiled/SSDT-EC-LAPTOP.dsl delete mode 100644 extra-files/decompiled/SSDT-EC-USBX-DESKTOP.dsl delete mode 100644 extra-files/decompiled/SSDT-EC-USBX-LAPTOP.dsl delete mode 100644 extra-files/decompiled/SSDT-GPI0.dsl delete mode 100644 extra-files/decompiled/SSDT-GPI0.dsl.zip delete mode 100644 extra-files/decompiled/SSDT-GPU-DISABLE.dsl delete mode 100644 extra-files/decompiled/SSDT-GPU-DISABLE.dsl.zip delete mode 100644 extra-files/decompiled/SSDT-GPU-SPOOF.dsl delete mode 100644 extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip delete mode 100644 extra-files/decompiled/SSDT-NoHybGfx.dsl delete mode 100644 extra-files/decompiled/SSDT-NoHybGfx.dsl.zip delete mode 100644 extra-files/decompiled/SSDT-PLUG-DRTNIA.dsl delete mode 100644 extra-files/decompiled/SSDT-PLUG.dsl delete mode 100644 extra-files/decompiled/SSDT-PLUG.dsl.zip delete mode 100644 extra-files/decompiled/SSDT-PMC-prebuilt.dsl delete mode 100644 extra-files/decompiled/SSDT-PNLF-CFL.dsl delete mode 100644 extra-files/decompiled/SSDT-PNLF-CFL.dsl.zip delete mode 100644 extra-files/decompiled/SSDT-RHUB-prebuilt.dsl delete mode 100644 extra-files/decompiled/SSDT-RHUB.dsl delete mode 100644 extra-files/decompiled/SSDT-XOSI.dsl delete mode 100644 extra-files/decompiled/SSDT-dGPU-Off.dsl delete mode 100644 extra-files/decompiled/SSDT-dGPU-Off.dsl.zip rename gitbook/images/favicon.ico => favicon.ico (100%) delete mode 100644 gitbook/fonts/fontawesome/FontAwesome.otf delete mode 100644 gitbook/fonts/fontawesome/fontawesome-webfont.eot delete mode 100644 gitbook/fonts/fontawesome/fontawesome-webfont.svg delete mode 100644 gitbook/fonts/fontawesome/fontawesome-webfont.ttf delete mode 100644 gitbook/fonts/fontawesome/fontawesome-webfont.woff delete mode 100644 gitbook/fonts/fontawesome/fontawesome-webfont.woff2 delete mode 100644 gitbook/gitbook-plugin-anchors/plugin.css delete mode 100644 gitbook/gitbook-plugin-fontsettings/fontsettings.js delete mode 100644 gitbook/gitbook-plugin-fontsettings/website.css delete mode 100644 gitbook/gitbook-plugin-github-buttons/plugin.js delete mode 100644 gitbook/gitbook-plugin-github-buttons/plugin.js.map delete mode 100644 gitbook/gitbook-plugin-highlight/ebook.css delete mode 100644 gitbook/gitbook-plugin-highlight/website.css delete mode 100644 gitbook/gitbook-plugin-medium-zoom/medium-zoom.min.js delete mode 100644 gitbook/gitbook-plugin-medium-zoom/plugin.css delete mode 100644 gitbook/gitbook-plugin-medium-zoom/plugin.js delete mode 100644 gitbook/gitbook-plugin-search-plus/jquery.mark.min.js delete mode 100644 gitbook/gitbook-plugin-search-plus/search.css delete mode 100644 gitbook/gitbook-plugin-search-plus/search.js delete mode 100644 gitbook/gitbook-plugin-sharing/buttons.js delete mode 100644 gitbook/gitbook.js delete mode 100644 gitbook/style.css delete mode 100644 gitbook/theme.js rename icons/apple-touch-icon-precomposed-152.png => homepage.png (100%) delete mode 100644 icons/favicon.ico delete mode 100644 images/Desktops/lpc.png delete mode 100644 images/Laptops/laptop-ec-md/dsdt-pnp.png delete mode 100644 images/Laptops/laptop-ec-md/ec.png delete mode 100644 images/Universal/awac-md/lpc.png delete mode 100644 images/Universal/awac-md/stas.png delete mode 100644 search_plus_index.json delete mode 100644 styles/website.css rename {images/troubleshooting-md => troubleshooting-md}/decompile-error.png (100%) rename {images/troubleshooting-md => troubleshooting-md}/invalid-parse.png (100%) diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe0770..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e047765..0000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -_book/ -node_modules/ -.vscode/ -.DS_Store diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 58327ca..0000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: node_js -node_js: lts/* -cache: - npm: false -before_script: -- npm install -g gitbook-cli -script: -- ls Universal -- gitbook install -- gitbook build -- cp icons/* _book/gitbook/images -deploy: - local_dir: _book - provider: pages - skip_cleanup: true - name: Travis Build Bot - keep_history: true - on: - branch: master - target_branch: gh-pages - # committer_from_gh: true - # allow_empty_commit: true - github_token: - secure: ZutxqsWgkleoYtyvMna47NJr1g1NAJPy/HrJ86wQ8XgWfVClSrFt3zHJTiVJWRwgFQBGmkEMtJ2ZVtrQ9p8smLNiJVmt23cJf6KGu7vDs9dBPT4HLnWEQ3WjL3hZD0i4f+avqA1X7q63rWPwdSQUiBMntCwlrF55sGUa0dCGJZynkS4oMjCFLdrft7QrW3FIO5+t6C6YC9cp1JwTqX6gsHPTvDq0TsiGKNyN+tRV82r3ySVdKxZtDA80ifWfObNCS+JB4JF1Oca1rmPmPyKOO/RZrD4jzbShSEN84eN0HxYmkk+nsMVy/0HAGT/zLpQigVOqguWwwhEw1AiP7pMSixceV9yq2qv7tVHOX8dWV1feoDzd6HW4wvtMso3d+XX7U2bnV4VfM8FHCBO7GLoYROG36YnItE/8pd5Vo63GLgnlFa3QUDD0ljc8uPAL8/ju8kWyPU9+oejcdf6K4UoDdomdjKqqXoOPIlBhifJO2CtN09K5WTLsigC9ok4y1nphfS2d8zoyZIkXVaSBqcvSTFGX/KpcTLZV06i4WCjMJHUteSAQr9lSxguY1r1y7n4v4PE2wicfaSdKJA8pzO+rFWwKO5NPdKR7HMPfrwxqgSbW/1/Ro0RZ++h5SXp8H/706qfyQIqh2FnssK8XvMycpJsb/SFhj4MYN8tQ0weB7ys= diff --git a/404.html b/404.html new file mode 100644 index 0000000..170a48f --- /dev/null +++ b/404.html @@ -0,0 +1,22 @@ + + + + + + Getting Started With ACPI + + + + + + + + + + +

404

That's a Four-Oh-Four.
+ Take me home. +
+ + + diff --git a/CONTRIBUTING.html b/CONTRIBUTING.html index 5e4649c..2f34390 100644 --- a/CONTRIBUTING.html +++ b/CONTRIBUTING.html @@ -1,943 +1,62 @@ - - - - - - - Contributing · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Supporting the guides | Getting Started With ACPI + + + + - - - - - - - - - - - - - - -
-
- - - - - - - - -
- -
- -
- - - - - - - - -
-
- -
-
- -
- -
-

Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

-
-

Supporting the guides

-

Note: This is a community run guide which is not officially endorsed by Acidanthera. Please do not bug Acidanthera with issues about this guide.

-

Want to help support the guide? Well there's some ways you can help!

- -

Note: For those wanting to contribute financially, we seriously appreciate it but we're a non-profit organization. We do this to teach, not to make money. If you have some money left over we highly recommend donating it to a charity. Crohn's and Colitis Canada is one we recommend if you have none on mind.

-

Contributing via Issues

-

Contributing via Issues is pretty simple but there are some rules:

-
    -
  • Keep issues tab dedicated to guides issues only, no personal hackintosh issues. It is not a place to discuss installation issues.
  • -
  • If for a typo or better clarification, please indicate what page it was on. Would appreciate not going for a scavenger hunt on where these issues are.
  • -
-

You can find the issues tab here: Getting Started With ACPI Issues

-

Contributing via PRs

-

Some guidelines when contributing via PRs:

-
    -
  • Use your brain (please).
  • -
  • Proofread your submissions.
  • -
  • Pull Requests can be denied if we feel it does not fit or has inaccurate information. We will generally tell you why it is rejected though or ask for revisions.
      -
    • We would also appreciate sources for any bigger commits to make it easier on us to verify the info your provide is valid
    • -
    -
  • -
  • Images must be hosted locally in the repo under the /images/ folder
  • -
  • Your PR must be run through a markdown lint and have all issues fixed.
  • -
  • In general, try to avoid using "non-Acidanthera" tools when possible. Generally we want to avoid use of third-party tools - though if it's impossible otherwise, then you can link it.
      -
    • Tools explicitly banned:
        -
      • UniBeast, MultiBeast and KextBeast -
      • -
      • Transmac
          -
        • Know for creating borked USB drives
        • -
        -
      • -
      • Niresh Installers
          -
        • We'd like to avoid piracy with the guides
        • -
        -
      • -
      -
    • -
    -
  • -
-

How to Contribute

-

Best way to test your commits and make sure they are formatted correctly is downloading nodejs and getting the gitbook-cli and markdownlint-cli tools. When you run gitbook serve, it will set up a local webserver which you can connect to view the changes you made. markdownlint * will throw any errors at you about formatting as well, and markdownlint -f * will attempt to fix these.

-
    -
  • Fork this repo
  • -
  • Install the required tools:
      -
    • npm install -g markdownlint-cli
    • -
    • npm install -g gitbook-cli
    • -
    -
  • -
  • Make your changes.
  • -
  • Build the site:
      -
    • gitbook install (To install all the required gitbook plugins)
    • -
    • gitbook serve (Preview the site)
        -
      • Can be found at http://localhost:4000
      • -
      -
    • -
    -
  • -
  • Check markdown format:
      -
    • markdownlint -f * (To fix any potential issues)
    • -
    -
  • -
-

Tips

-

Some tools that make contributing a bit easier:

- - - -
- -
-
-
- -

results matching ""

-
    - -
    -
    - -

    No results matching ""

    - -
    -
    -
    - -
    -
    - -
    - - - - - - - - - - -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

    # Supporting the guides

    Note: This is a community run guide which is not officially endorsed by Acidanthera. Please do not bug Acidanthera with issues about this guide.

    Want to help support the guide? Well there's some ways you can help!

    Note: For those wanting to contribute financially, we seriously appreciate it but we're a non-profit organization. We do this to teach, not to make money. If you have some money left over we highly recommend donating it to a charity. Crohn's and Colitis Canada is one we recommend if you have none on mind.

    # Contributing via Issues

    Contributing via Issues is pretty simple but there are some rules:

    • Keep issues tab dedicated to guides issues only, no personal hackintosh issues. It is not a place to discuss installation issues.
    • If for a typo or better clarification, please indicate what page it was on. Would appreciate not going for a scavenger hunt on where these issues are.

    You can find the issues tab here: Getting Started With ACPI Issues

    # Contributing via PRs

    Some guidelines when contributing via PRs:

    • Use your brain (please).
    • Proofread your submissions.
    • Pull Requests can be denied if we feel it does not fit or has inaccurate information. We will generally tell you why it is rejected though or ask for revisions. +
      • We would also appreciate sources for any bigger commits to make it easier on us to verify the info your provide is valid
    • Images must be hosted locally in the repo under the /images/ folder
    • Your PR must be run through a markdown lint and have all issues fixed.
    • In general, try to avoid using "non-Acidanthera" tools when possible. Generally we want to avoid use of third-party tools - though if it's impossible otherwise, then you can link it. +
      • Tools explicitly banned: +
        • UniBeast, MultiBeast and KextBeast +
        • Transmac +
          • Know for creating borked USB drives
        • Niresh Installers +
          • We'd like to avoid piracy with the guides

    # How to Contribute

    Best way to test your commits and make sure they are formatted correctly is downloading nodejs and yarn then getting the VuePress and markdownlint-cli tools. When you run yarn dev, it will set up a local webserver which you can connect to view the changes you made. markdownlint * will throw any errors at you about formatting as well, and markdownlint -f * will attempt to fix these.

    • Fork this repo
    • Install the required tools: +
      • brew install yarn
      • npm install -g markdownlint-cli
    • Make your changes.
    • Build the site: +
      • yarn install (To install all the required plugins)
      • yarn dev (Preview the site) +
        • Can be found at http://localhost:8080
    • Check markdown format: +
      • markdownlint -f * (To fix any potential issues)

    # Tips

    Some tools that make contributing a bit easier:

    Last Updated: 7/17/2020, 9:01:14 PM
    + + - diff --git a/Desktops/desktop-disable.html b/Desktops/desktop-disable.html index 38fe491..d3b2e9d 100644 --- a/Desktops/desktop-disable.html +++ b/Desktops/desktop-disable.html @@ -1,923 +1,61 @@ - - - - - - - Disabling desktop dGPUs · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Disabling desktops unsupported GPUs(SSDT-GPU-DISABLE) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - -
    - -
    - -
    - - - - - - - - -
    -
    - -
    -
    - -
    - -
    -

    Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

    -
    -

    Disabling desktops unsupported GPUs(SSDT-GPU-DISABLE)

    - -

    So this is mainly needed for GPUs that are not supported in macOS, mainly this will be Nvidia users who wish to pair an AMD GPU for macOS use. While WhateverGreen does support the boot-arg -wegnoegpu, this only works when running on iGPU so for the rest of us we'll need to make an SSDT.

    -

    So to disable a specific GPU, we need to find a couple things:

    - -

    Finding the ACPI Path of the GPU

    -

    To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:

    -
      -
    • Open Device Manager
    • -
    • Select Display Adapters, then right click your GPU and select Properties
    • -
    • Under the Details Tab, search for "Location Paths"
        -
      • Note some GPUs may be hiding under "BIOS device name"
      • -
      -
    • -
    -

    -

    Credit to 1Revenger1 for the image

    -

    The second "ACPI" is what we care about:

    -
    ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)
    -

    Now converting this to an ACPI path is quite simple, remove the #ACPI and #PCI(0000):

    -
    `_SB_.PC02.BR2A.PEGP
    -

    And voila! We've found our ACPI path, now that we have everything we're ready to get cooking

    -

    Making the SSDT

    -

    To start grab our SSDT-GPU-DISABLE and open it up. Here there's a couple things to change:

    -
    External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
    +    
    +    
    +  
    +  
    +    

    # Disabling desktops unsupported GPUs(SSDT-GPU-DISABLE)

    So this is mainly needed for GPUs that are not supported in macOS, mainly this will be Nvidia users who wish to pair an AMD GPU for macOS use. While WhateverGreen does support the boot-arg -wegnoegpu, this only works when running on iGPU so for the rest of us we'll need to make an SSDT.

    So to disable a specific GPU, we need to find a couple things:

    # Finding the ACPI Path of the GPU

    To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:

    • Open Device Manager
    • Select Display Adapters, then right click your GPU and select Properties
    • Under the Details Tab, search for "Location Paths" +
      • Note some GPUs may be hiding under "BIOS device name"

    Credit to 1Revenger1 for the image

    The second "ACPI" is what we care about:

    ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)
    +

    Now converting this to an ACPI path is quite simple, remove the #ACPI and #PCI(0000):

    `_SB_.PC02.BR2A.PEGP
    +

    And voila! We've found our ACPI path, now that we have everything we're ready to get cooking

    # Making the SSDT

    To start grab our SSDT-GPU-DISABLE and open it up. Here there's a couple things to change:

    External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
     Method (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized)
    -

    For our example, we'll change all mentions of :

    -
      -
    • PCI0 with PC02
    • -
    • PEG0 with BR2A
    • -
    -

    Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device, some users may also need to adapt _SB_ to their path

    -

    Now you're ready to compile the SSDT!

    - - -
    - -
    -
    -
    - -

    results matching ""

    -
      - -
      -
      - -

      No results matching ""

      - -
      -
      -
      - -
      -
      - -
      - - - - - - - - - - - - - - -
      - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

      For our example, we'll change all mentions of :

      Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device, some users may also need to adapt _SB_ to their path

      # Now you're ready to compile the SSDT!

      + + - diff --git a/Desktops/desktop-ec.html b/Desktops/desktop-ec.html new file mode 100644 index 0000000..aeaa973 --- /dev/null +++ b/Desktops/desktop-ec.html @@ -0,0 +1,48 @@ + + + + + + Fixing Embedded Controller (Desktop) | Getting Started With ACPI + + + + + + + + + + +
      + + + diff --git a/Desktops/desktop-ec.md b/Desktops/desktop-ec.md deleted file mode 100644 index 32b79cc..0000000 --- a/Desktops/desktop-ec.md +++ /dev/null @@ -1,4 +0,0 @@ - -# Fixing Embedded Controller (Desktop) - -## You'll want to go to [SSDT-EC under the Universal tab](/Universal/desktop-ec.md) for the new SSDT-EC page diff --git a/Laptops/backlight-methods/manual.html b/Laptops/backlight-methods/manual.html index d74640d..3519576 100644 --- a/Laptops/backlight-methods/manual.html +++ b/Laptops/backlight-methods/manual.html @@ -1,923 +1,67 @@ - - - - - - - Manual · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Backlight: Manual | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
      -
      - - - - - - - - -
      - -
      - -
      - - - - - - - - -
      -
      - -
      -
      - -
      - -
      -

      Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

      -
      -

      Fixing Backlight: Manual

      - -

      Finding the ACPI path

      -

      For this guide, we're gonna assume Windows is already on this laptop, as otherwise creating this SSDT is a bit more difficult.

      -

      Now open DeviceManager, and head to the following:

      -
      Device Manager -> Display Adapters -> Properties -> Details > BIOS device name
      -
      -
        -
      • Note some GPU ACPI pathing may be hiding under "BIOS device name"
      • -
      -

      Credit to 1Revenger1 for the image

      -

      From the above example, we can see our display is hooked up to PCI0.GFX0

      -

      Edits to the sample SSDT

      -

      Now that we have our ACPI path, lets grab our SSDT and get to work:

      - -

      By default, this uses PCI0.GFX0 for the pathing. you'll want to rename accordingly. For this example, we'll assume your pathing is PCI0.GPU0:

      -

      Before:

      -
      External (_SB_.PCI0.GFX0, DeviceObj) <- Rename this
      +    
      +    
      +  
      +  
      +    

      # Fixing Backlight: Manual

      # Finding the ACPI path

      For this guide, we're gonna assume Windows is already on this laptop, as otherwise creating this SSDT is a bit more difficult.

      Now open DeviceManager, and head to the following:

      Device Manager -> Display Adapters -> Properties -> Details > BIOS device name
      +
      • Note some GPU ACPI pathing may be hiding under "BIOS device name"

      Credit to 1Revenger1 for the image

      From the above example, we can see our display is hooked up to PCI0.GFX0

      # Edits to the sample SSDT

      Now that we have our ACPI path, lets grab our SSDT and get to work:

      By default, this uses PCI0.GFX0 for the pathing. you'll want to rename accordingly. For this example, we'll assume your pathing is PCI0.GPU0:

      Before:

      External (_SB_.PCI0.GFX0, DeviceObj) <- Rename this
       
       Scope (_SB.PCI0.GFX0) <- Rename this
       
       Device(_SB.PCI0.GFX0.PNLF) <- Rename this
      -

      -

      Following the example pathing we found, the SSDT should look something like this:

      -

      After:

      -
      External (_SB_.PCI0.GPU0, DeviceObj) <- Renamed
      +

      Following the example pathing we found, the SSDT should look something like this:

      After:

      External (_SB_.PCI0.GPU0, DeviceObj) <- Renamed
       
       Scope (_SB.PCI0.GPU0) <- Renamed
       
       Device(_SB.PCI0.GPU0.PNLF) <- Renamed
      -

      -

      Compiling the SSDT

      -

      With the SSDT done, you're now ready to compile the SSDT!

      -

      Wrapping up

      -

      Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

      - - - -
      - -
      -
      -
      - -

      results matching ""

      -
        - -
        -
        - -

        No results matching ""

        - -
        -
        -
        - -
        -
        - -
        - - - - - - - - - - - - - - -
        - - -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

        # Compiling the SSDT

        With the SSDT done, you're now ready to compile the SSDT!

        # Wrapping up

        Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

        + + - diff --git a/Laptops/backlight-methods/prebuilt.html b/Laptops/backlight-methods/prebuilt.html index 836195e..7658ffa 100644 --- a/Laptops/backlight-methods/prebuilt.html +++ b/Laptops/backlight-methods/prebuilt.html @@ -1,894 +1,57 @@ - - - - - - - Prebuilt · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Backlight: Prebuilt | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
        -
        - - - - - - - - -
        - -
        - -
        - - - - - - - - -
        -
        - -
        -
        - -
        - -
        -

        Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

        -
        -

        Fixing Backlight: Prebuilt

        -

        By far the easiest method, all you need to do is download the following file:

        - -

        Main things to note with this method:

        -
          -
        • Assumes GPU pathing, works great for 99% of devices but if you're having issues controlling backlight this may be something to look at
        • -
        • Doesn't really teach you anything
            -
          • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
          • -
          -
        • -
        - - -
        - -
        -
        -
        - -

        results matching ""

        -
          - -
          -
          - -

          No results matching ""

          - -
          -
          -
          - -
          -
          - -
          - - - - - - - - - - - - - - -
          - - -
          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

          # Fixing Backlight: Prebuilt

          By far the easiest method, all you need to do is download the following file:

          Main things to note with this method:

          • Assumes GPU pathing, works great for 99% of devices but if you're having issues controlling backlight this may be something to look at
          • Doesn't really teach you anything +
            • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
          Last Updated: 5/31/2020, 5:58:30 AM
          + + - diff --git a/Laptops/backlight.html b/Laptops/backlight.html index 644c381..be63c69 100644 --- a/Laptops/backlight.html +++ b/Laptops/backlight.html @@ -1,887 +1,56 @@ - - - - - - - Backlight PNLF · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Backlight (SSDT-PNLF) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
          -
          - - - - - - - - -
          - -
          - -
          - - - - - - - - -
          -
          - -
          -
          - -
          - -
          -

          Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

          -
          -

          Fixing Backlight (SSDT-PNLF)

          - -

          What this SSDT does

          -

          The purpose of this SSDT is to create a PNLF device for macOS to play with, specifically one with a hardware ID of APP0002. Luckily WhateverGreen will handle the rest of the work for us.

          -

          Methods to make this SSDT

          -

          For the backlight fix, there are 2 methods you can choose from:

          - - - -
          - -
          -
          -
          - -

          results matching ""

          -
            - -
            -
            - -

            No results matching ""

            - -
            -
            -
            - -
            -
            - -
            - - - - - - - - - - - - - - -
            - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +
            + + - diff --git a/Laptops/laptop-disable.html b/Laptops/laptop-disable.html index 134d449..c131ffe 100644 --- a/Laptops/laptop-disable.html +++ b/Laptops/laptop-disable.html @@ -1,944 +1,67 @@ - - - - - - - Disabling laptop dGPUs · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Disabling laptop dGPUs (SSDT-dGPU-Off/NoHybGfx) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
            -
            - - - - - - - - -
            - -
            - -
            - - - - - - - - -
            -
            - -
            -
            - -
            - -
            -

            Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

            -
            -

            Disabling laptop dGPUs (SSDT-dGPU-Off/NoHybGfx)

            - -

            So with laptops, we can hide the dGPU from macOS with the little boot-arg called -wegnoegpu from WhateverGreen. But one small problem, the dGPU is still pulling power draining your battery slowly. We'll be going over 2 methods for disabling the dGPU in a laptop:

            - -

            Note that this is not needed for install, but recommended for post-install

            -

            Optimus Method

            -

            How this works is that we call the .off method found on Optimus GPUs, this is the expected way to power off a GPU but some may find their dGPU will power back up later on. Mainly seen in Lenovo's, the Optimus method should work for most users:

            -

            To start, grab SSDT-dGPU-Off.dsl

            -

            Next we need to get on Windows, and head to the following:

            -
            Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name
            -
            -
              -
            • Note some GPUs may be hiding under "BIOS device name"
            • -
            -

            This should provided you with an ACPI path for your dGPU, most commonly:

            -
              -
            • Nvidia dGPU: \_SB.PCI0.PEG0.PEGP
            • -
            • AMD dGPU: \_SB.PCI0.PEGP.DGFX
            • -
            -

            Credit to 1Revenger1 for the image

            -

            Now with that, we'll need to change the ACPI path in the SSDT. Main sections:

            -
            External(_SB.PCI0.PEG0.PEGP._OFF, MethodObj)
            -
            -
            If (CondRefOf(\_SB.PCI0.PEG0.PEGP._OFF)) { \_SB.PCI0.PEG0.PEGP._OFF() }
            -
            -

            Once adapted to your config, head to the compile section

            -
              -
            • For those with sleep issues, you can refer to the original Rehabman thread
            • -
            -

            Bumblebee Method

            -

            With some machines, the simple .off call won't keep the card off properly, that's where the Bumblebee method comes in. This SSDT will actually send the dGPU into D3 state being the lowest power state a device can support. Credit to Mameo for the original adaptation.

            -

            To start, grab SSDT-NoHybGfx.dsl

            -

            Next we need to get on Windows, and head to the following:

            -
            Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name
            -
            -

            This should provided you with an ACPI path for your dGPU, most commonly:

            -
              -
            • Nvidia dGPU: \_SB.PCI0.PEG0.PEGP
            • -
            • AMD dGPU: \_SB.PCI0.PEGP.DGFX
            • -
            -

            Now with that, we'll need to change the ACPI path in the SSDT. Main sections:

            -
            External (_SB_.PCI0.PEG0.PEGP._DSM, MethodObj)    // dGPU ACPI Path
            +    
            +    
            +  
            +  
            +    

            # Disabling laptop dGPUs (SSDT-dGPU-Off/NoHybGfx)

            So with laptops, we can hide the dGPU from macOS with the little boot-arg called -wegnoegpu from WhateverGreen. But one small problem, the dGPU is still pulling power draining your battery slowly. We'll be going over 2 methods for disabling the dGPU in a laptop:

            Note that this is not needed for install, but recommended for post-install

            # Optimus Method

            How this works is that we call the .off method found on Optimus GPUs, this is the expected way to power off a GPU but some may find their dGPU will power back up later on. Mainly seen in Lenovo's, the Optimus method should work for most users:

            To start, grab SSDT-dGPU-Off.dsl

            Next we need to get on Windows, and head to the following:

            Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name
            +
            • Note some GPUs may be hiding under "BIOS device name"

            This should provided you with an ACPI path for your dGPU, most commonly:

            • Nvidia dGPU: \_SB.PCI0.PEG0.PEGP
            • AMD dGPU: \_SB.PCI0.PEGP.DGFX

            Credit to 1Revenger1 for the image

            Now with that, we'll need to change the ACPI path in the SSDT. Main sections:

            External(_SB.PCI0.PEG0.PEGP._OFF, MethodObj)
            +
            If (CondRefOf(\_SB.PCI0.PEG0.PEGP._OFF)) { \_SB.PCI0.PEG0.PEGP._OFF() }
            +

            Once adapted to your config, head to the compile section

            # Bumblebee Method

            With some machines, the simple .off call won't keep the card off properly, that's where the Bumblebee method comes in. This SSDT will actually send the dGPU into D3 state being the lowest power state a device can support. Credit to Mameo for the original adaptation.

            To start, grab SSDT-NoHybGfx.dsl

            Next we need to get on Windows, and head to the following:

            Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name
            +

            This should provided you with an ACPI path for your dGPU, most commonly:

            • Nvidia dGPU: \_SB.PCI0.PEG0.PEGP
            • AMD dGPU: \_SB.PCI0.PEGP.DGFX

            Now with that, we'll need to change the ACPI path in the SSDT. Main sections:

            External (_SB_.PCI0.PEG0.PEGP._DSM, MethodObj)    // dGPU ACPI Path
             External (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)    // dGPU ACPI Path
            -
            -
            If ((CondRefOf (\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3)))
            -
            -
             // Card Off Request
            +
            If ((CondRefOf (\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3)))
            +
             // Card Off Request
              \_SB.PCI0.PEG0.PEGP._DSM (ToUUID ("a486d8f8-0bda-471b-a72b-6042a6b5bee0"), 0x0100, 0x1A, Buffer (0x04)
            -
            -
             // Card Off
            +
             // Card Off
             \_SB.PCI0.PEG0.PEGP._PS3 ()
            -
            -

            Once adapted to your config, head to the compile section

            -

            Now you're ready to compile the SSDT!

            - - -
            - -
            -
            -
            - -

            results matching ""

            -
              - -
              -
              - -

              No results matching ""

              - -
              -
              -
              - -
              -
              - -
              - - - - - - - - - - - - - - -
              - - -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

              Once adapted to your config, head to the compile section

              # Now you're ready to compile the SSDT!

              + + - diff --git a/Laptops/laptop-ec.html b/Laptops/laptop-ec.html new file mode 100644 index 0000000..eb7887d --- /dev/null +++ b/Laptops/laptop-ec.html @@ -0,0 +1,48 @@ + + + + + + Fixing Embedded Controller (Laptop) | Getting Started With ACPI + + + + + + + + + + +
              + + + diff --git a/Laptops/laptop-ec.md b/Laptops/laptop-ec.md deleted file mode 100644 index ba8b91d..0000000 --- a/Laptops/laptop-ec.md +++ /dev/null @@ -1,3 +0,0 @@ -# Fixing Embedded Controller (Laptop) - -## You'll want to go to [SSDT-EC under the Universal tab](/Universal/desktop-ec.md) for the new SSDT-EC page diff --git a/Laptops/trackpad-methods/manual.html b/Laptops/trackpad-methods/manual.html index 701bece..dedfc5d 100644 --- a/Laptops/trackpad-methods/manual.html +++ b/Laptops/trackpad-methods/manual.html @@ -1,803 +1,48 @@ - - - - - - - Manual · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Trackpads: Manual | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
              -
              - - - - - - - - -
              - -
              - -
              - - - - - - - - -
              -
              - -
              -
              - -
              - -
              -

              Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

              -
              -

              Fixing Trackpads: Manual

              - -

              Finding the ACPI path

              -

              Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

              -

              Next search for Device (GPI0). Should give you a result similar to this:

              -

              -

              What we care about from this is the _STA method:

              -
              Method (_STA, 0, NotSerialized)
              +    
              +    
              +  
              +  
              +    

              # Fixing Trackpads: Manual

              # Finding the ACPI path

              Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

              Next search for Device (GPI0). Should give you a result similar to this:

              What we care about from this is the _STA method:

              Method (_STA, 0, NotSerialized)
               {
                   If ((GPHD == One))
                   {
              @@ -806,122 +51,24 @@
               
                   Return (0x0F)
               }
              -

              What we want is for this to always return 0x0F when booting macOS, so we want to make an SSDT that will return GPHD == Zero in macOS.

              -

              NOTE that you may have the other way around where GPHD needs to be set as One to return 0x0F. And your device name may also be different, don't throw random SSDTs in thinking it'll work

              -

              Here's some more examples:

              -

              -

              With this example, we can see that we need both SBRG and GPEN to return One. If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return One:

              -

              Edits to the sample SSDT

              -

              Now that we have our ACPI path, lets grab our SSDT and get to work:

              - -

              From the second example, we'll want to set both GPEN and SBRG to One to allow it to operate in macOS:

              -

              Before:

              -
              If (_OSI ("Darwin"))
              +

              What we want is for this to always return 0x0F when booting macOS, so we want to make an SSDT that will return GPHD == Zero in macOS.

              NOTE that you may have the other way around where GPHD needs to be set as One to return 0x0F. And your device name may also be different, don't throw random SSDTs in thinking it'll work

              Here's some more examples:

              With this example, we can see that we need both SBRG and GPEN to return One. If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return One:

              # Edits to the sample SSDT

              Now that we have our ACPI path, lets grab our SSDT and get to work:

              From the second example, we'll want to set both GPEN and SBRG to One to allow it to operate in macOS:

              Before:

              If (_OSI ("Darwin"))
                       {
                           GPEN = One <- Change to the right variables
                           SBRG = One <- Change to the right variables
              -    }
              -

              -

              Following the example pathing we found, the SSDT should look something like this:

              -

              After:

              -
              If (_OSI ("Darwin"))
              +	}
              +

              Following the example pathing we found, the SSDT should look something like this:

              After:

              If (_OSI ("Darwin"))
                       {
                           GPEN = One <- Proper variables
                       }
              -

              -

              Compiling the SSDT

              -

              With the SSDT done, you're now ready to compile the SSDT!

              -

              Wrapping up

              -

              Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

              - - - -
              - -
              -
              -
              - -

              results matching ""

              -
                - -
                -
                - -

                No results matching ""

                - -
                -
                -
                - -
                -
                - -
                - - - - - - - - - - - - - - -
                - - -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

                # Compiling the SSDT

                With the SSDT done, you're now ready to compile the SSDT!

                # Wrapping up

                Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                + + - diff --git a/Laptops/trackpad-methods/prebuilt.html b/Laptops/trackpad-methods/prebuilt.html index 139027d..69f4edc 100644 --- a/Laptops/trackpad-methods/prebuilt.html +++ b/Laptops/trackpad-methods/prebuilt.html @@ -1,918 +1,56 @@ - - - - - - - Prebuilt · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Trackpads: Prebuilt | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                -
                - - - - - - - - -
                - -
                - -
                - - - - - - - - -
                -
                - -
                -
                - -
                - -
                -

                Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                -
                -

                Fixing Trackpads: Prebuilt

                -

                This is a one-size fits all solution where we basically trick our hardware into thinking it's booting Windows. The problem with this method is that it's common to break Windows booting so avoid unless troubleshooting.

                -
                  -
                • SSDT-XOSI

                  -
                • -
                • XOSI Rename(add this under config.plist -> ACPI -> Patch):

                  -
                • -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                CommentStringChange _OSI to XOSI
                EnabledBooleanYES
                CountNumber0
                LimitNumber0
                FindData5f4f5349
                ReplaceData584f5349
                - - -
                - -
                -
                -
                - -

                results matching ""

                -
                  - -
                  -
                  - -

                  No results matching ""

                  - -
                  -
                  -
                  - -
                  -
                  - -
                  - - - - - - - - - - - - - - -
                  - - -
                  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                  # Fixing Trackpads: Prebuilt

                  This is a one-size fits all solution where we basically trick our hardware into thinking it's booting Windows. The problem with this method is that it's common to break Windows booting so avoid unless troubleshooting.

                  • SSDT-XOSI

                  • XOSI Rename(add this under config.plist -> ACPI -> Patch):

                  Comment String Change _OSI to XOSI
                  Enabled Boolean YES
                  Count Number 0
                  Limit Number 0
                  Find Data 5f4f5349
                  Replace Data 584f5349
                  Last Updated: 5/31/2020, 5:54:37 AM
                  + + - diff --git a/Laptops/trackpad.html b/Laptops/trackpad.html index 2df7f0f..30f0688 100644 --- a/Laptops/trackpad.html +++ b/Laptops/trackpad.html @@ -1,888 +1,56 @@ - - - - - - - Trackpad GPI0 · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Trackpads (SSDT-GPI0/XOSI) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                  -
                  - - - - - - - - -
                  - -
                  - -
                  - - - - - - - - -
                  -
                  - -
                  -
                  - -
                  - -
                  -

                  Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                  -
                  -

                  Fixing Trackpads (SSDT-GPI0/XOSI)

                  - -

                  What this SSDT does

                  -

                  This SSDT is used to force enable our GPI0 for VoodooI2C to connect onto.

                  -

                  With most modern laptop DSDTs, there's a variable called GPEN or GPHD which are used for setting the status of the GPI0 device. For us, we want to enable the device.

                  -

                  Methods to make this SSDT

                  -

                  For the trackpad fix, there are 2 methods you can choose from:

                  - - - -
                  - -
                  -
                  -
                  - -

                  results matching ""

                  -
                    - -
                    -
                    - -

                    No results matching ""

                    - -
                    -
                    -
                    - -
                    -
                    - -
                    - - - - - - - - - - - - - - -
                    - - -
                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                    # Fixing Trackpads (SSDT-GPI0/XOSI)

                    # What this SSDT does

                    This SSDT is used to force enable our GPI0 for VoodooI2C to connect onto.

                    With most modern laptop DSDTs, there's a variable called GPEN or GPHD which are used for setting the status of the GPI0 device. For us, we want to enable the device.

                    # Methods to make this SSDT

                    For the trackpad fix, there are 2 methods you can choose from:

                    Last Updated: 5/31/2020, 5:54:37 AM
                    + + - diff --git a/Manual/compile.html b/Manual/compile.html index e75ee05..0ff936f 100644 --- a/Manual/compile.html +++ b/Manual/compile.html @@ -1,905 +1,59 @@ - - - - - - - Decompiling and Compiling · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Compiling and decompiling ACPI Tables | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                    -
                    - - - - - - - - -
                    - -
                    - -
                    - - - - - - - - -
                    -
                    - -
                    -
                    - -
                    - -
                    -

                    Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                    -
                    -

                    Compiling and decompiling ACPI Tables

                    -

                    See Troubleshooting if you have dumping/compiling errors

                    - -

                    macOS

                    -

                    So compiling DSDTs and SSDTs are quite easy with macOS, all you need is MaciASL. To compile, just File -> SaveAs -> ACPI Machine Language Binary(.AML), decompiling is just opening the file in MaciASL.

                    -

                    For those who prefer the command line, grab iasl-stable and run the following:

                    -
                    path/to/iasl.exe path/to/DSDT.aml
                    -
                    -
                      -
                    • If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.
                    • -
                    -

                    -

                    Windows

                    -

                    Compiling and decompiling on windows is fairly simple though, you will need iasl.exe and Command Prompt:

                    -
                    path/to/iasl.exe path/to/DSDT.aml
                    -
                    -

                    -
                      -
                    • If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.
                    • -
                    -

                    Linux

                    -

                    Compiling and decompiling with Linux is just as simple, you will need a copy of iasl. You can get it here (iasl) or through the iasl package in your package manager. iasl can be used as such:

                    -
                    path/to/iasl path/to/DSDT.aml
                    -
                    -
                      -
                    • If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.
                    • -
                    - - -
                    - -
                    -
                    -
                    - -

                    results matching ""

                    -
                      - -
                      -
                      - -

                      No results matching ""

                      - -
                      -
                      -
                      - -
                      -
                      - -
                      - - - - - - - - - - - - - - -
                      - - -
                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                      # Compiling and decompiling ACPI Tables

                      See Troubleshooting if you have dumping/compiling errors

                      # macOS

                      So compiling DSDTs and SSDTs are quite easy with macOS, all you need is MaciASL. To compile, just File -> SaveAs -> ACPI Machine Language Binary(.AML), decompiling is just opening the file in MaciASL.

                      For those who prefer the command line, grab iasl-stable and run the following:

                      path/to/iasl.exe path/to/DSDT.aml
                      +
                      • If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.

                      # Windows

                      Compiling and decompiling on windows is fairly simple though, you will need iasl.exe and Command Prompt:

                      path/to/iasl.exe path/to/DSDT.aml
                      +

                      • If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.

                      # Linux

                      Compiling and decompiling with Linux is just as simple, you will need a copy of iasl. You can get it here (iasl) or through the iasl package in your package manager. iasl can be used as such:

                      path/to/iasl path/to/DSDT.aml
                      +
                      • If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.
                      Last Updated: 7/17/2020, 8:46:53 PM
                      + + - diff --git a/Manual/dump.html b/Manual/dump.html index 6805c5b..74a919c 100644 --- a/Manual/dump.html +++ b/Manual/dump.html @@ -1,953 +1,67 @@ - - - - - - - Dumping the DSDT · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Getting a copy of our DSDT | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                      -
                      - - - - - - - - -
                      - -
                      - -
                      - - - - - - - - -
                      -
                      - -
                      -
                      - -
                      - -
                      -

                      Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                      -
                      -

                      Getting a copy of our DSDT

                      -

                      So to start, we'll need to get a copy of your DSDT from your firmware. The easiest way is grabbing the DSDT.aml SSDTTime dumped for us earlier but here are some other options:

                      -

                      From Windows

                      -
                        -
                      • SSDTTime
                          -
                        • Supports both Windows and Linux for DSDT dumping
                        • -
                        • 4. Dump DSDT - Automatically dump the system DSDT
                        • -
                        -
                      • -
                      • acpidump.exe

                        -
                          -
                        • In command prompt run path/to/acpidump.exe -b -n DSDT -z, this will dump your DSDT as a .dat file. Rename this to DSDT.aml
                        • -
                        -
                      • -
                      • Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT with the above 2 methods

                        -
                      • -
                      -

                      From Linux

                      -
                        -
                      • SSDTTime
                          -
                        • Supports both Windows and Linux for DSDT dumping
                        • -
                        • 4. Dump DSDT - Automatically dump the system DSDT
                        • -
                        -
                      • -
                      • Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT with the above method
                      • -
                      -

                      From Clover

                      -

                      For those with Clover installed previously, this is a simple way to get your ACPI tables:

                      -
                        -
                      • F4 in Clover Boot menu
                          -
                        • DSDT can be found in EFI/CLOVER/ACPI/origin, the folder must exist before dumping
                        • -
                        -
                      • -
                      -

                      From OpenCore

                      -

                      With OpenCore, we have 2 options:

                      - -

                      SysReport Quirk

                      -

                      With OpenCore 0.5.9, we have a new quirk called SysReport which will actually dump our DSDT automatically when hitting the boot screen. The main issues are:

                      -
                        -
                      • You already need a bootable OpenCore USB to get this dump
                      • -
                      • This also requires a DEBUG version of 0.5.9
                      • -
                      -

                      For the latter, you just need to replace the following files with DEBUG version:

                      -
                        -
                      • EFI/BOOT/
                          -
                        • BOOTx64.efi
                        • -
                        -
                      • -
                      • EFI/OC/Bootstrap/
                          -
                        • Bootstrap.efi
                        • -
                        -
                      • -
                      • EFI/OC/Drivers/
                          -
                        • OpenRuntime.efi
                        • -
                        -
                      • -
                      • EFI/OC/
                          -
                        • OpenCore.efi
                        • -
                        -
                      • -
                      -

                      For the former, you can actually skip the ACPI section, return to the OpenCore guide(Desktop, Laptop) and finish making the USB. Once booted to the picker, you can shut off the PC and check your USB:

                      -

                      -

                      And voila! You have a DSDT! Now you can continue on with making SSDTs

                      -

                      UEFI Shell

                      -

                      For this, we'll want ti grab acpidump.efi and add this to EFI/OC/Tools and in your config under Misc -> Tools with the argument: -b -n DSDT -z and select this option in OpenCore's picker.

                      -

                      If OpenCore is having issues running acpidump.efi from the boot picker, you can call it from the shell with OpenShell(reminder to add to both EFI/OC/Tools and in your config under Misc -> Tools ):

                      -
                      shell> fs0: // replace with proper drive
                      +    
                      +    
                      +  
                      +  
                      +    

                      # Getting a copy of our DSDT

                      So to start, we'll need to get a copy of your DSDT from your firmware. The easiest way is grabbing the DSDT.aml SSDTTime dumped for us earlier but here are some other options:

                      # From Windows

                      • SSDTTime

                        • Supports both Windows and Linux for DSDT dumping
                        • 4. Dump DSDT - Automatically dump the system DSDT
                      • acpidump.exe

                        • In command prompt run path/to/acpidump.exe -b -n DSDT -z, this will dump your DSDT as a .dat file. Rename this to DSDT.aml
                      • Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT with the above 2 methods

                      # From Linux

                      • SSDTTime
                        • Supports both Windows and Linux for DSDT dumping
                        • 4. Dump DSDT - Automatically dump the system DSDT
                      • Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT with the above method

                      # From Clover

                      For those with Clover installed previously, this is a simple way to get your ACPI tables:

                      • F4 in Clover Boot menu +
                        • DSDT can be found in EFI/CLOVER/ACPI/origin, the folder must exist before dumping

                      # From OpenCore

                      With OpenCore, we have 2 options:

                      # SysReport Quirk

                      With OpenCore 0.5.9, we have a new quirk called SysReport which will actually dump our DSDT automatically when hitting the boot screen. The main issues are:

                      • You already need a bootable OpenCore USB to get this dump
                      • This also requires a DEBUG version of 0.5.9

                      For the latter, you just need to replace the following files with DEBUG version:

                      • EFI/BOOT/ +
                        • BOOTx64.efi
                      • EFI/OC/Bootstrap/ +
                        • Bootstrap.efi
                      • EFI/OC/Drivers/ +
                        • OpenRuntime.efi
                      • EFI/OC/ +
                        • OpenCore.efi

                      For the former, you can actually skip the ACPI section, return to the OpenCore guide and finish making the USB. Once booted to the picker, you can shut off the PC and check your USB:

                      And voila! You have a DSDT! Now you can continue on with making SSDTs

                      # UEFI Shell

                      For this, we'll want ti grab acpidump.efi and add this to EFI/OC/Tools and in your config under Misc -> Tools with the argument: -b -n DSDT -z and select this option in OpenCore's picker.

                      If OpenCore is having issues running acpidump.efi from the boot picker, you can call it from the shell with OpenShell(reminder to add to both EFI/OC/Tools and in your config under Misc -> Tools ):

                      shell> fs0: // replace with proper drive
                       fs0:\> dir  // to verify this is the right directory
                          Directory of fs0:\
                          01/01/01 3:30p EFI
                       fs0:\> cd EFI\OC\Tools
                      -fs0:\EFI\OC\Tools> acpidump.efi -b -n DSDT -z
                      -
                      -

                      Once done, you should find your DSDT in the EFI/OC/Tools folder with a .dat extension. Rename this DSDT.dat file to DSDT.aml to help us down the line

                      - - -
                      - -
                      -
                      -
                      - -

                      results matching ""

                      -
                        - -
                        -
                        - -

                        No results matching ""

                        - -
                        -
                        -
                        - -
                        -
                        - -
                        - - - - - - - - - - - - - - -
                        - - -
                        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +fs0:\EFI\OC\Tools> acpidump.efi -b -n DSDT -z +

                        Once done, you should find your DSDT in the EFI/OC/Tools folder with a .dat extension. Rename this DSDT.dat file to DSDT.aml to help us down the line

                        + + - diff --git a/SUMMARY.html b/SUMMARY.html new file mode 100644 index 0000000..481ed1b --- /dev/null +++ b/SUMMARY.html @@ -0,0 +1,48 @@ + + + + + + Table of contents | Getting Started With ACPI + + + + + + + + + + +
                        Last Updated: 6/18/2020, 1:02:44 AM
                        + + + diff --git a/Universal/awac-methods/manual.html b/Universal/awac-methods/manual.html index b3f3da0..0b3124d 100644 --- a/Universal/awac-methods/manual.html +++ b/Universal/awac-methods/manual.html @@ -1,826 +1,50 @@ - - - - - - - Manual · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing System Clocks: Manual | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                        -
                        - - - - - - - - -
                        - -
                        - -
                        - - - - - - - - -
                        -
                        - -
                        -
                        - -
                        - -
                        -

                        Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                        -
                        -

                        Fixing System Clocks: Manual

                        - -

                        Determining which SSDT you need

                        -

                        Finding which SSDT you need is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                        -

                        Next search for ACPI000E. You should get something similar:

                        -

                        -

                        The above tells us a few things:

                        -
                          -
                        • We in fact do have an AWAC clock
                            -
                          • If nothing shows up, you don't need to do anything for AWAC or RTC
                          • -
                          -
                        • -
                        • It can be easily disabled with STAS(if not, you can skip to here: RTC0 Method)
                            -
                          • _STA is the device status, with Zero meaning it won't show up
                          • -
                          -
                        • -
                        -

                        But to double check, next search for PNP0B00:

                        -

                        -

                        And looks at that, we can in fact disable our AWAC and enable the RTC! If not skip to here: RTC0 Method

                        -

                        Now it's as simple as grabbing SSDT-AWAC.dsl and compile, no changes needed You can also use the below SSDT to the same effect:

                        - -

                        _INI Edge Cases

                        -

                        Mainly seen on X299 refresh boards, there's already a Scope (_SB) { Method (_INI... in your DSDT. This means our SSDT-AWAC will conflict with the one found in our DSDT. For these situations, you'll want to remove Method (_INI, 0, NotSerialized) {} from the SSDT. You'll be left this this in the end:

                        -
                        DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AWAC", 0x00000000)
                        +    
                        +    
                        +  
                        +  
                        +    

                        # Fixing System Clocks: Manual

                        # Determining which SSDT you need

                        Finding which SSDT you need is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                        Next search for ACPI000E. You should get something similar:

                        The above tells us a few things:

                        • We in fact do have an AWAC clock +
                          • If nothing shows up, you don't need to do anything for AWAC or RTC
                        • It can be easily disabled with STAS(if not, you can skip to here: RTC0 Method) +
                          • _STA is the device status, with Zero meaning it won't show up

                        But to double check, next search for PNP0B00:

                        And looks at that, we can in fact disable our AWAC and enable the RTC! If not skip to here: RTC0 Method

                        Now it's as simple as grabbing SSDT-AWAC.dsl and compile, no changes needed You can also use the below SSDT to the same effect:

                        # _INI Edge Cases

                        Mainly seen on X299 refresh boards, there's already a Scope (_SB) { Method (_INI... in your DSDT. This means our SSDT-AWAC will conflict with the one found in our DSDT. For these situations, you'll want to remove Method (_INI, 0, NotSerialized) {} from the SSDT. You'll be left this this in the end:

                        DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AWAC", 0x00000000)
                         {
                             External (STAS, IntObj)
                         
                        @@ -832,145 +56,23 @@
                                 }
                             }
                         }
                        -

                        RTC0 Method

                        -

                        This method is for those who either don't have a PNP0B00 device to re-enable or have no easy way(via STAS variable).

                        -

                        Finding the ACPI path

                        -

                        Assuming you've gotten your DSDT already opened from earlier, search for the following:

                        -
                          -
                        • Finding the LowPinCount path:
                            -
                          • Search Name (_ADR, 0x001F0000)
                          • -
                          -
                        • -
                        • Finding the PCI path:
                            -
                          • Search PNP0A08 (If multiple show up, use the first one)
                          • -
                          -
                        • -
                        -

                        You should get something like the following show up:

                        - - - - - - - - - - - - - -
                        LPC PathingPCI Pathing
                        -

                        From the above, we can see we have both PCI0 and LPC. Now we can head to the next stage

                        -

                        Edits to the sample SSDT

                        -

                        Now that we have our ACPI path, lets grab our SSDT and get to work:

                        - -

                        By default, this uses PCI0.LPCB for the pathing. you'll want to rename accordingly.

                        -

                        Following the example from above, we'll be renaming it to PCI0.LPC:

                        -

                        Before:

                        -
                        External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this
                        +

                        # RTC0 Method

                        This method is for those who either don't have a PNP0B00 device to re-enable or have no easy way(via STAS variable).

                        # Finding the ACPI path

                        Assuming you've gotten your DSDT already opened from earlier, search for the following:

                        • Finding the LowPinCount path: +
                          • Search Name (_ADR, 0x001F0000)
                        • Finding the PCI path: +
                          • Search PNP0A08 (If multiple show up, use the first one)

                        You should get something like the following show up:

                        LPC Pathing PCI Pathing

                        From the above, we can see we have both PCI0 and LPC. Now we can head to the next stage

                        # Edits to the sample SSDT

                        Now that we have our ACPI path, lets grab our SSDT and get to work:

                        By default, this uses PCI0.LPCB for the pathing. you'll want to rename accordingly.

                        Following the example from above, we'll be renaming it to PCI0.LPC:

                        Before:

                        External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this
                         
                         Scope (_SB.PCI0.LPCB) <- Rename this
                        -

                        -

                        Following the example pathing we found, the SSDT should look something like this:

                        -

                        After:

                        -
                        External (_SB_.PCI0.LPC, DeviceObj) <- Renamed
                        +

                        Following the example pathing we found, the SSDT should look something like this:

                        After:

                        External (_SB_.PCI0.LPC, DeviceObj) <- Renamed
                         
                         Scope (_SB.PCI0.LPC) <- Renamed
                        -

                        -

                        Compiling the SSDT

                        -

                        With the SSDT done, you're now ready to compile the SSDT!

                        -

                        Wrapping up

                        -

                        Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                        - - - -
                        - -
                        -
                        -
                        - -

                        results matching ""

                        -
                          - -
                          -
                          - -

                          No results matching ""

                          - -
                          -
                          -
                          - -
                          -
                          - -
                          - - - - - - - - - - - - - - -
                          - - -
                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

                          # Compiling the SSDT

                          With the SSDT done, you're now ready to compile the SSDT!

                          # Wrapping up

                          Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                          + + - diff --git a/Universal/awac-methods/prebuilt.html b/Universal/awac-methods/prebuilt.html index 6b31a27..524f3fa 100644 --- a/Universal/awac-methods/prebuilt.html +++ b/Universal/awac-methods/prebuilt.html @@ -1,892 +1,57 @@ - - - - - - - Prebuilt · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing System Clocks: Prebuilt | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                          -
                          - - - - - - - - -
                          - -
                          - -
                          - - - - - - - - -
                          -
                          - -
                          -
                          - -
                          - -
                          -

                          Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                          -
                          -

                          Fixing System Clocks: Prebuilt

                          -

                          By far the easiest method, all you need to do is download the following file:

                          - -

                          Main things to note with this method:

                          -
                            -
                          • Assumes you both have an AWAC clock and it can be easily turned off with the RTC replacing it, this may not always work
                          • -
                          • Doesn't really teach you anything
                              -
                            • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
                            • -
                            -
                          • -
                          -

                          Wrapping up

                          -

                          Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                          - - - -
                          - -
                          -
                          -
                          - -

                          results matching ""

                          -
                            - -
                            -
                            - -

                            No results matching ""

                            - -
                            -
                            -
                            - -
                            -
                            - -
                            - - - - - - - - - - - - - - -
                            - - -
                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                            # Fixing System Clocks: Prebuilt

                            By far the easiest method, all you need to do is download the following file:

                            Main things to note with this method:

                            • Assumes you both have an AWAC clock and it can be easily turned off with the RTC replacing it, this may not always work
                            • Doesn't really teach you anything +
                              • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey

                            # Wrapping up

                            Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                            Last Updated: 6/22/2020, 9:53:03 AM
                            + + - diff --git a/Universal/awac.html b/Universal/awac.html index 189d215..b8c199b 100644 --- a/Universal/awac.html +++ b/Universal/awac.html @@ -1,901 +1,56 @@ - - - - - - - AWAC vs RTC · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing System Clocks (SSDT-AWAC/RTC0) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                            -
                            - - - - - - - - -
                            - -
                            - -
                            - - - - - - - - -
                            -
                            - -
                            -
                            - -
                            - -
                            -

                            Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                            -
                            -

                            Fixing System Clocks (SSDT-AWAC/RTC0)

                            - -

                            What this SSDT does

                            -

                            The purpose of SSDT-AWAC/RTC0 is to fix the system clocks found on newer hardware, maily found in the following:

                            -
                              -
                            • B360
                            • -
                            • B365
                            • -
                            • H310
                            • -
                            • H370
                            • -
                            • Z370 (Gigabyte and AsRock boards with newer BIOS versions)
                            • -
                            • Z390
                            • -
                            • B460
                            • -
                            • Z490
                            • -
                            • 400 series (Comet Lake, including Z490)
                            • -
                            • 495 series (Icelake)
                            • -
                            • X299X (10th Gen refresh, AsRock and Asus don't use the -x naming so you'll need to double check)
                            • -
                            -

                            SSDT-AWAC tries to re-enable the old RTC clock that is compatible with macOS, while SSDT-RTC0 will instead create a "fake" RTC clock if there is no legacy one to enable.

                            -

                            Methods to make this SSDT

                            -

                            For the RTC fix, there are 2 methods you can choose from:

                            - - - -
                            - -
                            -
                            -
                            - -

                            results matching ""

                            -
                              - -
                              -
                              - -

                              No results matching ""

                              - -
                              -
                              -
                              - -
                              -
                              - -
                              - - - - - - - - - - - - - - -
                              - - -
                              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                              # Fixing System Clocks (SSDT-AWAC/RTC0)

                              # What this SSDT does

                              The purpose of SSDT-AWAC/RTC0 is to fix the system clocks found on newer hardware, maily found in the following:

                              • B360
                              • B365
                              • H310
                              • H370
                              • Z370 (Gigabyte and AsRock boards with newer BIOS versions)
                              • Z390
                              • B460
                              • Z490
                              • 400 series (Comet Lake, including Z490)
                              • 495 series (Icelake)
                              • X299X (10th Gen refresh, AsRock and Asus don't use the -x naming so you'll need to double check)

                              SSDT-AWAC tries to re-enable the old RTC clock that is compatible with macOS, while SSDT-RTC0 will instead create a "fake" RTC clock if there is no legacy one to enable.

                              # Methods to make this SSDT

                              For the RTC fix, there are 2 methods you can choose from:

                              Last Updated: 5/31/2020, 5:54:37 AM
                              + + - diff --git a/Universal/ec-fix.html b/Universal/ec-fix.html index 84170c9..2d3b6a7 100644 --- a/Universal/ec-fix.html +++ b/Universal/ec-fix.html @@ -1,913 +1,57 @@ - - - - - - - Embedded Controller · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Embedded Controller (SSDT-EC/USBX) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                              -
                              - - - - - - - - -
                              - -
                              - -
                              - - - - - - - - -
                              -
                              - -
                              -
                              - -
                              - -
                              -

                              Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                              -
                              -

                              Fixing Embedded Controller (SSDT-EC/USBX)

                              - -

                              What this SSDT does

                              -

                              The purpose of SSDT-EC/UBX is a couple things:

                              -
                                -
                              • On desktops, the EC(or better known as the embedded controller) isn't compatible with AppleACPIEC driver, to get around this we disable this device when running macOS
                              • -
                              • AppleBusPowerController will look for a device named EC, so we will want to create a fake device for this kext to load onto
                                  -
                                • AppleBusPowerController also requires a USBX device to supply USB power properties for Skylake and newer, so we will bundle this device in with the EC fix
                                • -
                                -
                              • -
                              • On laptops, the EC is used for hotkeys and battery so disabling this isn't all too ideal. Problem is our EC's name isn't compatible, so we will create a simple "fake" EC device that will satisfy Apple
                              • -
                              -

                              So TL;DR:

                              -
                                -
                              • EC is embedded controller
                              • -
                              • Desktops will want real EC off, and a fake EC created
                              • -
                              • Laptops will just want an additional fake EC present
                              • -
                              • Skylake and newer devices will want USBX as well
                              • -
                              -

                              Methods to make this SSDT

                              -

                              For the EC fix, there are 3 methods you can choose from:

                              -
                                -
                              • Prebuilt
                                  -
                                • The prebuilt for desktops are very bloated. It's recommended to use the two methods below.
                                • -
                                • The Laptop prebuilts are easily usable.
                                • -
                                -
                              • -
                              • SSDTTime
                                  -
                                • Note this method does not support laptops, servers or HEDT systems
                                • -
                                -
                              • -
                              • Manual
                              • -
                              - - -
                              - -
                              -
                              -
                              - -

                              results matching ""

                              -
                                - -
                                -
                                - -

                                No results matching ""

                                - -
                                -
                                -
                                - -
                                -
                                - -
                                - - - - - - - - - - - - - - -
                                - - -
                                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                # Fixing Embedded Controller (SSDT-EC/USBX)

                                # What this SSDT does

                                The purpose of SSDT-EC/UBX is a couple things:

                                • On desktops, the EC(or better known as the embedded controller) isn't compatible with AppleACPIEC driver, to get around this we disable this device when running macOS
                                • AppleBusPowerController will look for a device named EC, so we will want to create a fake device for this kext to load onto +
                                  • AppleBusPowerController also requires a USBX device to supply USB power properties for Skylake and newer, so we will bundle this device in with the EC fix
                                • On laptops, the EC is used for hotkeys and battery so disabling this isn't all too ideal. Problem is our EC's name isn't compatible, so we will create a simple "fake" EC device that will satisfy Apple

                                So TL;DR:

                                • EC is embedded controller
                                • Desktops will want real EC off, and a fake EC created
                                • Laptops will just want an additional fake EC present
                                • Skylake and newer devices will want USBX as well

                                # Methods to make this SSDT

                                For the EC fix, there are 3 methods you can choose from:

                                • Prebuilt
                                  • The prebuilt for desktops are very bloated. It's recommended to use the two methods below.
                                  • The Laptop prebuilts are easily usable.
                                • SSDTTime
                                  • Note this method does not support laptops, servers or HEDT systems
                                • Manual
                                Last Updated: 6/18/2020, 3:32:02 PM
                                + + - diff --git a/Universal/ec-methods/manual.html b/Universal/ec-methods/manual.html index f75e2ce..6473fde 100644 --- a/Universal/ec-methods/manual.html +++ b/Universal/ec-methods/manual.html @@ -1,1012 +1,65 @@ - - - - - - - Manual · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Embedded Controllers: Manual | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                -
                                - - - - - - - - -
                                - -
                                - -
                                - - - - - - - - -
                                -
                                - -
                                -
                                - -
                                - -
                                -

                                Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                -
                                -

                                Fixing Embedded Controllers: Manual

                                - -

                                TO-DO:

                                -
                                  -
                                • Finish Edge cases and sample SSDT edits
                                • -
                                -

                                Finding the ACPI path

                                -

                                To find the ACPI pathing, you have 2 methods:

                                - -

                                DSDT

                                -

                                Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                                -

                                Next, search for PNP0C09. You should get something similar:

                                -

                                -

                                From the above example we see 2 main things:

                                -
                                  -
                                • Name of our embedded controller
                                    -
                                  • In this case being EC0
                                  • -
                                  -
                                • -
                                • Pathing of our embedded controller
                                    -
                                  • PC00.LPC0
                                  • -
                                  -
                                • -
                                -

                                But now we get into edge case territory, what fun!

                                -

                                The main ones to check for are:

                                - -

                                If none of the above apply to you, you're ready for the next section:

                                -

                                DeviceManager

                                -

                                If you already have Windows installed on this machine, finding the EC pathing is fairly easy.

                                -

                                Start by opening up Device Manager in Windows and looking for a device named Embedded Controller. Once found, click on it and select the BIOS device Name entry. You should get something like this:

                                -

                                -

                                From the above, we can see that our pathing is SB.PC00.LPC0.EC0

                                -

                                Now with the pathing, you can head here: Edits to the sample SSDT

                                -

                                Edits to the sample SSDT

                                -

                                Now that we have our ACPI path, lets grab our SSDT and get to work:

                                -
                                  -
                                • SSDT-EC-USBX
                                    -
                                  • For Skylake and newer and all AMD systems
                                  • -
                                  -
                                • -
                                • SSDT-EC
                                    -
                                  • For Broadwell and older
                                  • -
                                  -
                                • -
                                -

                                Now when opening this SSDT, you'll notice a few things. Mainly:

                                -
                                  -
                                • Some code is commented out
                                    -
                                  • This is code for disabling our EC
                                  • -
                                  • Laptops users SHOULD NOT uncomment this
                                  • -
                                  -
                                • -
                                • There's a new EC called Device (EC)
                                    -
                                  • DO NOT RENAME THIS, this will be the EC we give to macOS
                                  • -
                                  -
                                • -
                                -

                                Before:

                                -
                                External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this
                                +    
                                +    
                                +  
                                +  
                                +    

                                # Fixing Embedded Controllers: Manual

                                TO-DO:

                                • Finish Edge cases and sample SSDT edits

                                # Finding the ACPI path

                                To find the ACPI pathing, you have 2 methods:

                                # DSDT

                                Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                                Next, search for PNP0C09. You should get something similar:

                                From the above example we see 2 main things:

                                • Name of our embedded controller +
                                  • In this case being EC0
                                • Pathing of our embedded controller +
                                  • PC00.LPC0

                                But now we get into edge case territory, what fun!

                                The main ones to check for are:

                                If none of the above apply to you, you're ready for the next section:

                                # DeviceManager

                                If you already have Windows installed on this machine, finding the EC pathing is fairly easy.

                                Start by opening up Device Manager in Windows and looking for a device named Embedded Controller. Once found, click on it and select the BIOS device Name entry. You should get something like this:

                                From the above, we can see that our pathing is SB.PC00.LPC0.EC0

                                Now with the pathing, you can head here: Edits to the sample SSDT

                                # Edits to the sample SSDT

                                Now that we have our ACPI path, lets grab our SSDT and get to work:

                                Now when opening this SSDT, you'll notice a few things. Mainly:

                                • Some code is commented out +
                                  • This is code for disabling our EC
                                  • Laptops users SHOULD NOT uncomment this
                                • There's a new EC called Device (EC)
                                  • DO NOT RENAME THIS, this will be the EC we give to macOS

                                Before:

                                External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this
                                 
                                 Scope (_SB.PCI0.LPCB) <- Rename this
                                -

                                -

                                Following the example pathing we found, the SSDT should look something like this:

                                -

                                After:

                                -
                                External (_SB_.PC00.LPC0, DeviceObj) <- Renamed
                                +

                                Following the example pathing we found, the SSDT should look something like this:

                                After:

                                External (_SB_.PC00.LPC0, DeviceObj) <- Renamed
                                 
                                 Scope (_SB.PC00.LPC0) <- Renamed
                                -

                                -

                                Edge Cases

                                -

                                Multiple PNP0C09's show up

                                -

                                When multiple PNP0C09 show up, we need to next check for the following properties:

                                -
                                  -
                                • _HID (Hardware ID)
                                • -
                                • _CRS (Current Resource Settings)
                                • -
                                • _GPE (General Purpose Events)
                                • -
                                -

                                What these signify is whether this PNP0C09 device is real or not, as per the ACPI spec. So one's matching the above criteria are the one's we want to disable.

                                - -

                                No PNP0C09 show up

                                -

                                When this happens, you'll only need to create a "dummy" EC for macOS. You'll still want to find the PCI and LPC pathing for this device. So follow the guide as if you were creating a laptop SSDT-EC.

                                -

                                PNP0C09 already named EC

                                -

                                Congrats! No need to create an SSDT-EC! However you will still want USBX if you're skylake or newer.

                                -

                                Prebuilt can be grabbed here: SSDT-USBX.aml

                                -

                                PNP0C09 already has an _STA method

                                -

                                This is the equivalent of not having an EC as we can't control it with our SSDT-EC, instead we'll need to create a "dummy" EC for macOS. You'll still want to find the PCI and LPC pathing for this device. So follow the guide as if you were creating a laptop SSDT-EC.

                                -

                                Example of an EC with STA already:

                                -

                                Credit to rottenpants466

                                -

                                Compiling the SSDT

                                -

                                With the SSDT done, you're now ready to compile the SSDT!

                                -

                                Wrapping up

                                -

                                Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                - - - -
                                - -
                                -
                                -
                                - -

                                results matching ""

                                -
                                  - -
                                  -
                                  - -

                                  No results matching ""

                                  - -
                                  -
                                  -
                                  - -
                                  -
                                  - -
                                  - - - - - - - - - - - - - - -
                                  - - -
                                  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

                                  # Edge Cases

                                  # Multiple PNP0C09's show up

                                  When multiple PNP0C09 show up, we need to next check for the following properties:

                                  What these signify is whether this PNP0C09 device is real or not, as per the ACPI spec. So one's matching the above criteria are the one's we want to disable.

                                  # No PNP0C09 show up

                                  When this happens, you'll only need to create a "dummy" EC for macOS. You'll still want to find the PCI and LPC pathing for this device. So follow the guide as if you were creating a laptop SSDT-EC/USBX.

                                  # PNP0C09 already named EC

                                  Congrats! No need to create an SSDT-EC! However you will still want USBX if you're skylake or newer.

                                  Prebuilt can be grabbed here: SSDT-USBX.aml

                                  # PNP0C09 already has an _STA method

                                  This is the equivalent of not having an EC as we can't control it with our SSDT-EC, instead we'll need to create a "dummy" EC for macOS. You'll still want to find the PCI and LPC pathing for this device. So follow the guide as if you were creating a laptop SSDT-EC/USBX.

                                  Example of an EC with STA already:

                                  Credit to rottenpants466

                                  # Compiling the SSDT

                                  With the SSDT done, you're now ready to compile the SSDT!

                                  # Wrapping up

                                  Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                  + + - diff --git a/Universal/ec-methods/prebuilt.html b/Universal/ec-methods/prebuilt.html index e9194f7..89a74ec 100644 --- a/Universal/ec-methods/prebuilt.html +++ b/Universal/ec-methods/prebuilt.html @@ -1,914 +1,58 @@ - - - - - - - Prebuilt · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Embedded Controllers: Prebuilt | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                  -
                                  - - - - - - - - -
                                  - -
                                  - -
                                  - - - - - - - - -
                                  -
                                  - -
                                  -
                                  - -
                                  - -
                                  -

                                  Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                  -
                                  -

                                  Fixing Embedded Controllers: Prebuilt

                                  -

                                  By far the easiest way to fix your Embedded Controller is just downloading one of the files below:

                                  -

                                  Desktop:

                                  - -

                                  Laptops:

                                  - -

                                  The main things to note with this method:

                                  -
                                    -
                                  • Quite Bloated
                                      -
                                    • There's ACPI naming for every type, this means there's added delays in boot times
                                    • -
                                    -
                                  • -
                                  • Doesn't really teach you anything
                                      -
                                    • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
                                    • -
                                    -
                                  • -
                                  -

                                  Wrapping up

                                  -

                                  Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                  - - - -
                                  - -
                                  -
                                  -
                                  - -

                                  results matching ""

                                  -
                                    - -
                                    -
                                    - -

                                    No results matching ""

                                    - -
                                    -
                                    -
                                    - -
                                    -
                                    - -
                                    - - - - - - - - - - - - - - -
                                    - - -
                                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                    # Fixing Embedded Controllers: Prebuilt

                                    By far the easiest way to fix your Embedded Controller is just downloading one of the files below:

                                    Desktop:

                                    Laptops:

                                    The main things to note with this method:

                                    • Quite Bloated +
                                      • There's ACPI naming for every type, this means there's added delays in boot times
                                    • Doesn't really teach you anything +
                                      • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey

                                    # Wrapping up

                                    Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                    Last Updated: 6/22/2020, 9:53:35 AM
                                    + + - diff --git a/Universal/ec-methods/ssdttime.html b/Universal/ec-methods/ssdttime.html index 59fc0f5..ab8aff7 100644 --- a/Universal/ec-methods/ssdttime.html +++ b/Universal/ec-methods/ssdttime.html @@ -1,906 +1,60 @@ - - - - - - - SSDTTime · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Embedded Controllers: SSDTTime | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                    -
                                    - - - - - - - - -
                                    - -
                                    - -
                                    - - - - - - - - -
                                    -
                                    - -
                                    -
                                    - -
                                    - -
                                    -

                                    Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                    -
                                    -

                                    Fixing Embedded Controllers: SSDTTime

                                    -

                                    The second involves using SSDTTime which automates most of the process. See here on how to use it: SSDTs: Easy Way

                                    -

                                    To get the SSDT-PLUG, run the following:

                                    -
                                      -
                                    • 4. Dump DSDT then run 2. FakeEC
                                    • -
                                    -

                                    This will provide you with some files, the main one you care about is SSDT-EC.aml. The DSDT and .dsl are only left for referencing or verification.

                                    -

                                    The main things to note with this method:

                                    -
                                      -
                                    • Doesn't work on HEDT and server hardware(ie. X99 and X299)
                                        -
                                      • While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the Prebuilt or Manual method
                                      • -
                                      -
                                    • -
                                    • Doesn't work on Laptops
                                        -
                                      • Just like with HEDT, you will need to either use the Prebuilt or Manual method
                                      • -
                                      -
                                    • -
                                    • Doesn't provide you the USBX property to fix power
                                        -
                                      • This can easily be fixed by using this prebuilt file in addition to SSDT-EC: SSDT-USBX.aml
                                      • -
                                      • Note USBX is only needed for Skylake and newer
                                      • -
                                      -
                                    • -
                                    • Doesn't really teach you anything
                                        -
                                      • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
                                      • -
                                      -
                                    • -
                                    -

                                    Wrapping up

                                    -

                                    Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                    - - - -
                                    - -
                                    -
                                    -
                                    - -

                                    results matching ""

                                    -
                                      - -
                                      -
                                      - -

                                      No results matching ""

                                      - -
                                      -
                                      -
                                      - -
                                      -
                                      - -
                                      - - - - - - - - - - - - - - -
                                      - - -
                                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                      # Fixing Embedded Controllers: SSDTTime

                                      The second involves using SSDTTime which automates most of the process. See here on how to use it: SSDTs: Easy Way

                                      To get the SSDT-PLUG, run the following:

                                      • 4. Dump DSDT then run 2. FakeEC

                                      This will provide you with some files, the main one you care about is SSDT-EC**.aml**. The DSDT and .dsl are only left for referencing or verification.

                                      The main things to note with this method:

                                      • Doesn't work on HEDT and server hardware(ie. X99 and X299) +
                                        • While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the Prebuilt or Manual method
                                      • Doesn't work on Laptops +
                                        • Just like with HEDT, you will need to either use the Prebuilt or Manual method
                                      • Doesn't provide you the USBX property to fix power +
                                        • This can easily be fixed by using this prebuilt file in addition to SSDT-EC: SSDT-USBX.aml
                                        • Note USBX is only needed for Skylake and newer
                                      • Doesn't really teach you anything +
                                        • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey

                                      # Wrapping up

                                      Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                      Last Updated: 6/22/2020, 9:31:16 AM
                                      + + - diff --git a/Universal/irq.html b/Universal/irq.html index 1a4a3c4..aafe799 100644 --- a/Universal/irq.html +++ b/Universal/irq.html @@ -1,877 +1,56 @@ - - - - - - - IRQ Fix · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing IRQ Conflicts (SSDT-HPET + OC_Patches.plist) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                      -
                                      - - - - - - - - -
                                      - -
                                      - -
                                      - - - - - - - - -
                                      -
                                      - -
                                      -
                                      - -
                                      - -
                                      -

                                      Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                      -
                                      -

                                      Fixing IRQ Conflicts (SSDT-HPET + OC_Patches.plist)

                                      -

                                      So you miss having those fancy hot-patches from Clover like FixIPIC, FixTMR, FixRTC, FixHPET, etc

                                      -

                                      Well 1 very small problem, figuring out IRQ patching is a massive headache. I highly recommend you use SSDTTime. So head over to SSDT: Easy Way on how to make it.(use option C to omit conflicting legacy IRQs)

                                      - - -
                                      - -
                                      -
                                      -
                                      - -

                                      results matching ""

                                      -
                                        - -
                                        -
                                        - -

                                        No results matching ""

                                        - -
                                        -
                                        -
                                        - -
                                        -
                                        - -
                                        - - - - - - - - - - - - - - -
                                        - - -
                                        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                        # Fixing IRQ Conflicts (SSDT-HPET + OC_Patches.plist)

                                        So you miss having those fancy hot-patches from Clover like FixIPIC, FixTMR, FixRTC, FixHPET, etc

                                        Well 1 very small problem, figuring out IRQ patching is a massive headache. I highly recommend you use SSDTTime. So head over to SSDT: Easy Way on how to make it.(use option C to omit conflicting legacy IRQs)

                                        Last Updated: 7/7/2020, 8:08:13 PM
                                        + + - diff --git a/Universal/nvram-methods/manual.html b/Universal/nvram-methods/manual.html index 329ef8b..0a26035 100644 --- a/Universal/nvram-methods/manual.html +++ b/Universal/nvram-methods/manual.html @@ -1,935 +1,64 @@ - - - - - - - Manual · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing NVRAM: Manual | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                        -
                                        - - - - - - - - -
                                        - -
                                        - -
                                        - - - - - - - - -
                                        -
                                        - -
                                        -
                                        - -
                                        - -
                                        -

                                        Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                        -
                                        -

                                        Fixing NVRAM: Manual

                                        - -

                                        Finding the ACPI path

                                        -

                                        Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                                        -

                                        Next, search for the following:

                                        -
                                          -
                                        • Finding the LowPinCount path:
                                            -
                                          • Search Name (_ADR, 0x001F0000)
                                          • -
                                          -
                                        • -
                                        • Finding the PCI path:
                                            -
                                          • Search PNP0A08 (If multiple show up, use the first one)
                                          • -
                                          -
                                        • -
                                        -

                                        You should get something like the following show up:

                                        - - - - - - - - - - - - - -
                                        LPC PathingPCI Pathing
                                        -

                                        Now with the pathing, you can head here: Edits to the sample SSDT

                                        -

                                        Edits to the sample SSDT

                                        -

                                        Now that we have our ACPI path, lets grab our SSDT and get to work:

                                        - -

                                        By default, this uses PCI0.LPCB for the pathing. you'll want to rename accordingly.

                                        -

                                        Following the example from above, we'll be renaming it to PCI0.LPC:

                                        -

                                        Before:

                                        -
                                        External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this
                                        +    
                                        +    
                                        +  
                                        +  
                                        +    

                                        # Fixing NVRAM: Manual

                                        # Finding the ACPI path

                                        Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                                        Next, search for the following:

                                        • Finding the LowPinCount path: +
                                          • Search Name (_ADR, 0x001F0000)
                                        • Finding the PCI path: +
                                          • Search PNP0A08 (If multiple show up, use the first one)

                                        You should get something like the following show up:

                                        LPC Pathing PCI Pathing

                                        Now with the pathing, you can head here: Edits to the sample SSDT

                                        # Edits to the sample SSDT

                                        Now that we have our ACPI path, lets grab our SSDT and get to work:

                                        By default, this uses PCI0.LPCB for the pathing. you'll want to rename accordingly.

                                        Following the example from above, we'll be renaming it to PCI0.LPC:

                                        Before:

                                        External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this
                                         
                                         Scope (_SB.PCI0.LPCB) <- Rename this
                                        -

                                        -

                                        Following the example pathing we found, the SSDT should look something like this:

                                        -

                                        After:

                                        -
                                        External (_SB_.PCI0.LPC, DeviceObj) <- Renamed
                                        +

                                        Following the example pathing we found, the SSDT should look something like this:

                                        After:

                                        External (_SB_.PCI0.LPC, DeviceObj) <- Renamed
                                         
                                         Scope (_SB.PCI0.LPC) <- Renamed
                                        -

                                        -

                                        Compiling the SSDT

                                        -

                                        With the SSDT done, you're now ready to compile the SSDT!

                                        -

                                        Wrapping up

                                        -

                                        Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                        - - - -
                                        - -
                                        -
                                        -
                                        - -

                                        results matching ""

                                        -
                                          - -
                                          -
                                          - -

                                          No results matching ""

                                          - -
                                          -
                                          -
                                          - -
                                          -
                                          - -
                                          - - - - - - - - - - - - - - -
                                          - - -
                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

                                          # Compiling the SSDT

                                          With the SSDT done, you're now ready to compile the SSDT!

                                          # Wrapping up

                                          Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                          + + - diff --git a/Universal/nvram-methods/prebuilt.html b/Universal/nvram-methods/prebuilt.html index e357004..abd9736 100644 --- a/Universal/nvram-methods/prebuilt.html +++ b/Universal/nvram-methods/prebuilt.html @@ -1,895 +1,58 @@ - - - - - - - Prebuilt · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing NVRAM: Prebuilt | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                          -
                                          - - - - - - - - -
                                          - -
                                          - -
                                          - - - - - - - - -
                                          -
                                          - -
                                          -
                                          - -
                                          - -
                                          -

                                          Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                          -
                                          -

                                          Fixing NVRAM: Prebuilt

                                          -

                                          By far the easiest method, all you need to do is download the following file:

                                          - -

                                          Main things to note with this method:

                                          -
                                            -
                                          • Bit Bloated
                                              -
                                            • There's ACPI naming for most common paths, this means there's added delays in boot times(though unnoticeable to most as it's generally less than 0.5 seconds longer)
                                            • -
                                            -
                                          • -
                                          • Doesn't really teach you anything
                                              -
                                            • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
                                            • -
                                            -
                                          • -
                                          -

                                          Wrapping up

                                          -

                                          Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                          - - - -
                                          - -
                                          -
                                          -
                                          - -

                                          results matching ""

                                          -
                                            - -
                                            -
                                            - -

                                            No results matching ""

                                            - -
                                            -
                                            -
                                            - -
                                            -
                                            - -
                                            - - - - - - - - - - - - - - -
                                            - - -
                                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                            # Fixing NVRAM: Prebuilt

                                            By far the easiest method, all you need to do is download the following file:

                                            Main things to note with this method:

                                            • Bit Bloated +
                                              • There's ACPI naming for most common paths, this means there's added delays in boot times(though unnoticeable to most as it's generally less than 0.5 seconds longer)
                                            • Doesn't really teach you anything +
                                              • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey

                                            # Wrapping up

                                            Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                            Last Updated: 6/22/2020, 9:53:56 AM
                                            + + - diff --git a/Universal/nvram.html b/Universal/nvram.html index 7f892b3..a62b0b4 100644 --- a/Universal/nvram.html +++ b/Universal/nvram.html @@ -1,895 +1,56 @@ - - - - - - - NVRAM PMC · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing NVRAM (SSDT-PMC) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                            -
                                            - - - - - - - - -
                                            - -
                                            - -
                                            - - - - - - - - -
                                            -
                                            - -
                                            -
                                            - -
                                            - -
                                            -

                                            Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                            -
                                            -

                                            Fixing NVRAM (SSDT-PMC)

                                            - -

                                            What this SSDT does

                                            -

                                            This SSDT is required for all "true" 300 series motherboards(Z370 is excluded), it specifically brings back NVRAM support and requires very little configuration for the end user.

                                            -
                                              -
                                            • B360
                                            • -
                                            • B365
                                            • -
                                            • H310
                                            • -
                                            • H370
                                            • -
                                            • Z390
                                            • -
                                            -

                                            10th gen motherboards do not need this SSDT, NVRAM's native on these platforms.

                                            -

                                            Methods to make this SSDT

                                            -

                                            The main ways to make this SSDT:

                                            - - - -
                                            - -
                                            -
                                            -
                                            - -

                                            results matching ""

                                            -
                                              - -
                                              -
                                              - -

                                              No results matching ""

                                              - -
                                              -
                                              -
                                              - -
                                              -
                                              - -
                                              - - - - - - - - - - - - - - -
                                              - - -
                                              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                              # Fixing NVRAM (SSDT-PMC)

                                              # What this SSDT does

                                              This SSDT is required for all "true" 300 series motherboards(Z370 is excluded), it specifically brings back NVRAM support and requires very little configuration for the end user.

                                              • B360
                                              • B365
                                              • H310
                                              • H370
                                              • Z390

                                              10th gen motherboards do not need this SSDT, NVRAM's native on these platforms.

                                              # Methods to make this SSDT

                                              The main ways to make this SSDT:

                                              Last Updated: 6/16/2020, 4:50:03 PM
                                              + + - diff --git a/Universal/plug-methods/manual.html b/Universal/plug-methods/manual.html index 9c33338..232e781 100644 --- a/Universal/plug-methods/manual.html +++ b/Universal/plug-methods/manual.html @@ -1,948 +1,56 @@ - - - - - - - Manual · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Power Management: Manual | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                              -
                                              - - - - - - - - -
                                              - -
                                              - -
                                              - - - - - - - - -
                                              -
                                              - -
                                              -
                                              - -
                                              - -
                                              -

                                              Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                              -
                                              -

                                              Fixing Power Management: Manual

                                              - -

                                              Finding the ACPI path

                                              -

                                              To find the ACPI pathing, you have 2 methods:

                                              - -

                                              DSDT

                                              -

                                              CPU naming is fairly easy to figure out, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                                              -

                                              Next search for Processor. This should give you a result like this:

                                              -

                                              -

                                              As we can see, the first processor in our list is SB.PR00. This is what we'll be applying the plugin-type=1 property too.

                                              -

                                              X99 and X299 note:

                                              -

                                              Due to the different DSDT structure of these systems, you'll need to to actually check in multiple places as the pathing isn't as obvious:

                                              -

                                              -

                                              If we then search for instances of CP00 we find that its full ACPI pathing is SB.SCK0.CP00:

                                              -

                                              -

                                              Now with the pathing, you can head here: Edits to the sample SSDT

                                              -
                                              DeviceManager
                                              -

                                              If you already have Windows installed on this machine, finding the CPU pathing is fairly easy.

                                              -

                                              Start by opening up Device Manager in Windows and looking for a device named Processor. Once found, click on it and select the BIOS device Name entry. You should get something like this:

                                              -

                                              -

                                              From the above, we can see that our pathing is PR.CPU0. Pay close attention to the start as PR is important for creating the SSDT

                                              -

                                              X99 and X299 note:

                                              -

                                              Odd quirk of DeviceManager in Windows is that the Processor's order does not actually match the ACPI path, instead giving something like SB.SCK0.CP10:

                                              -

                                              -

                                              When this happens, you can either:

                                              -
                                                -
                                              • Look through and find the lowest value
                                              • -
                                              • Assume the lowest(commonly being PR00 or CP00)
                                              • -
                                              -

                                              So with the above X299 example, our CPU pathing would be SB.SCK0.CP00

                                              -

                                              Now with the pathing, you can head here: Edits to the sample SSDT

                                              -

                                              Edits to the sample SSDT

                                              -

                                              Now that we have our ACPI path, lets grab our SSDT and get to work:

                                              - -

                                              From the above SSDT, it's very likely your processor is already there. If so, you can delete all the other entries other than yours and the Method PMPM as this is what injects the plugin-type=1 property into our system.

                                              -
                                                -
                                              • Reminder: We only need to apply plugin-type=1 to the first thread
                                              • -
                                              -

                                              For the below example, we'll be using the X299 example(SB.SCK0.CP00)

                                              - - - - - - - - - - - - - -
                                              OriginalCleaned Up
                                              -

                                              Compiling the SSDT

                                              -

                                              With the SSDT done, you're now ready to compile the SSDT!

                                              -

                                              Wrapping up

                                              -

                                              Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                              - - - -
                                              - -
                                              -
                                              -
                                              - -

                                              results matching ""

                                              -
                                                - -
                                                -
                                                - -

                                                No results matching ""

                                                - -
                                                -
                                                -
                                                - -
                                                -
                                                - -
                                                - - - - - - - - - - - - - - -
                                                - - -
                                                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                # Fixing Power Management: Manual

                                                # Finding the ACPI path

                                                To find the ACPI pathing, you have 2 methods:

                                                # DSDT

                                                CPU naming is fairly easy to figure out, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                                                Next search for Processor. This should give you a result like this:

                                                As we can see, the first processor in our list is SB.PR00. This is what we'll be applying the plugin-type=1 property too.

                                                X99 and X299 note:

                                                Due to the different DSDT structure of these systems, you'll need to to actually check in multiple places as the pathing isn't as obvious:

                                                If we then search for instances of CP00 we find that its full ACPI pathing is SB.SCK0.CP00:

                                                Now with the pathing, you can head here: Edits to the sample SSDT

                                                # DeviceManager

                                                If you already have Windows installed on this machine, finding the CPU pathing is fairly easy.

                                                Start by opening up Device Manager in Windows and looking for a device named Processor. Once found, click on it and select the BIOS device Name entry. You should get something like this:

                                                From the above, we can see that our pathing is PR.CPU0. Pay close attention to the start as PR is important for creating the SSDT

                                                X99 and X299 note:

                                                Odd quirk of DeviceManager in Windows is that the Processor's order does not actually match the ACPI path, instead giving something like SB.SCK0.CP10:

                                                When this happens, you can either:

                                                • Look through and find the lowest value
                                                • Assume the lowest(commonly being PR00 or CP00)

                                                So with the above X299 example, our CPU pathing would be SB.SCK0.CP00

                                                Now with the pathing, you can head here: Edits to the sample SSDT

                                                # Edits to the sample SSDT

                                                Now that we have our ACPI path, lets grab our SSDT and get to work:

                                                From the above SSDT, it's very likely your processor is already there. If so, you can delete all the other entries other than yours and the Method PMPM as this is what injects the plugin-type=1 property into our system.

                                                • Reminder: We only need to apply plugin-type=1 to the first thread

                                                For the below example, we'll be using the X299 example(SB.SCK0.CP00)

                                                Original Cleaned Up

                                                # Compiling the SSDT

                                                With the SSDT done, you're now ready to compile the SSDT!

                                                # Wrapping up

                                                Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                Last Updated: 7/17/2020, 8:46:53 PM
                                                + + - diff --git a/Universal/plug-methods/prebuilt.html b/Universal/plug-methods/prebuilt.html index ca68a01..6a5189c 100644 --- a/Universal/plug-methods/prebuilt.html +++ b/Universal/plug-methods/prebuilt.html @@ -1,896 +1,58 @@ - - - - - - - Prebuilt · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Power Management: Prebuilt | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                -
                                                - - - - - - - - -
                                                - -
                                                - -
                                                - - - - - - - - -
                                                -
                                                - -
                                                -
                                                - -
                                                - -
                                                -

                                                Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                -
                                                -

                                                Fixing Power Management: Prebuilt

                                                -

                                                By far the easiest way to get SSDT-PLUG is just downloading the below file:

                                                - -

                                                This prebuilt file is just a precompiled version of SSDT-PLUG provided by Acidanthera.

                                                -

                                                The main things to note with this method:

                                                -
                                                  -
                                                • Quite Bloated
                                                    -
                                                  • There's ACPI naming for every type, this means there's added delays in boot times(though unnoticeable to most as it's generally 0.5 seconds longer)
                                                  • -
                                                  -
                                                • -
                                                • Doesn't really teach you anything
                                                    -
                                                  • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
                                                  • -
                                                  -
                                                • -
                                                -

                                                Wrapping up

                                                -

                                                Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                - - - -
                                                - -
                                                -
                                                -
                                                - -

                                                results matching ""

                                                -
                                                  - -
                                                  -
                                                  - -

                                                  No results matching ""

                                                  - -
                                                  -
                                                  -
                                                  - -
                                                  -
                                                  - -
                                                  - - - - - - - - - - - - - - -
                                                  - - -
                                                  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                  # Fixing Power Management: Prebuilt

                                                  By far the easiest way to get SSDT-PLUG is just downloading the below file:

                                                  This prebuilt file is just a precompiled version of SSDT-PLUG provided by Acidanthera.

                                                  The main things to note with this method:

                                                  • Quite Bloated +
                                                    • There's ACPI naming for every type, this means there's added delays in boot times(though unnoticeable to most as it's generally 0.5 seconds longer)
                                                  • Doesn't really teach you anything +
                                                    • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey

                                                  # Wrapping up

                                                  Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                  Last Updated: 6/22/2020, 9:54:19 AM
                                                  + + - diff --git a/Universal/plug-methods/ssdttime.html b/Universal/plug-methods/ssdttime.html index 53bafe3..2a90e04 100644 --- a/Universal/plug-methods/ssdttime.html +++ b/Universal/plug-methods/ssdttime.html @@ -1,897 +1,58 @@ - - - - - - - SSDTTime · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Power Management: SSDTTime | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                  -
                                                  - - - - - - - - -
                                                  - -
                                                  - -
                                                  - - - - - - - - -
                                                  -
                                                  - -
                                                  -
                                                  - -
                                                  - -
                                                  -

                                                  Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                  -
                                                  -

                                                  Fixing Power Management: SSDTTime

                                                  -

                                                  The second involves using SSDTTime which automates most of the process. See here on how to use it: SSDTs: Easy Way

                                                  -

                                                  To get the SSDT-PLUG, run the following:

                                                  -
                                                    -
                                                  • 4. Dump DSDT then run 3. PluginType
                                                  • -
                                                  -

                                                  This will provide you with some files, the main one you care about is SSDT-PLUG.aml. The DSDT and .dsl are only left for referencing or verification.

                                                  -

                                                  The main things to note with this method:

                                                  -
                                                    -
                                                  • Doesn't work on HEDT and server hardware(ie. X99 and X299)
                                                      -
                                                    • While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the Prebuilt or Manual method
                                                    • -
                                                    -
                                                  • -
                                                  • Doesn't really teach you anything
                                                      -
                                                    • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
                                                    • -
                                                    -
                                                  • -
                                                  -

                                                  Wrapping up

                                                  -

                                                  Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                  - - - -
                                                  - -
                                                  -
                                                  -
                                                  - -

                                                  results matching ""

                                                  -
                                                    - -
                                                    -
                                                    - -

                                                    No results matching ""

                                                    - -
                                                    -
                                                    -
                                                    - -
                                                    -
                                                    - -
                                                    - - - - - - - - - - - - - - -
                                                    - - -
                                                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                    # Fixing Power Management: SSDTTime

                                                    The second involves using SSDTTime which automates most of the process. See here on how to use it: SSDTs: Easy Way

                                                    To get the SSDT-PLUG, run the following:

                                                    • 4. Dump DSDT then run 3. PluginType

                                                    This will provide you with some files, the main one you care about is SSDT-PLUG**.aml**. The DSDT and .dsl are only left for referencing or verification.

                                                    The main things to note with this method:

                                                    • Doesn't work on HEDT and server hardware(ie. X99 and X299) +
                                                      • While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the Prebuilt or Manual method
                                                    • Doesn't really teach you anything +
                                                      • For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey

                                                    # Wrapping up

                                                    Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                    Last Updated: 6/22/2020, 9:31:43 AM
                                                    + + - diff --git a/Universal/plug.html b/Universal/plug.html index 01ce6ec..064096a 100644 --- a/Universal/plug.html +++ b/Universal/plug.html @@ -1,895 +1,56 @@ - - - - - - - CPU Power Management · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing Power Management (SSDT-PLUG) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                    -
                                                    - - - - - - - - -
                                                    - -
                                                    - -
                                                    - - - - - - - - -
                                                    -
                                                    - -
                                                    -
                                                    - -
                                                    - -
                                                    -

                                                    Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                    -
                                                    -

                                                    Fixing Power Management (SSDT-PLUG)

                                                    - -

                                                    What this SSDT does

                                                    -

                                                    The purpose of SSDT-PLUG is to allow the kernel's XCPM(XNU's CPU Power Management) to manage our CPU's power management. It's pretty self explanatory why you'd want this.

                                                    -

                                                    Note: SSDT-PLUG is only compatible with Intel's Haswell and newer CPUs, Sandy Bridge and Ivy Bridge will need to follow the ssdtPRgen method(in post-install) while AMD users should not use this(unless attempting to attach AGPM which is outside the scope of Dortania's guides)

                                                    -

                                                    Methods to make this SSDT

                                                    -

                                                    For SSDT-PLUG, there are 3 methods you can choose from:

                                                    - - - -
                                                    - -
                                                    -
                                                    -
                                                    - -

                                                    results matching ""

                                                    -
                                                      - -
                                                      -
                                                      - -

                                                      No results matching ""

                                                      - -
                                                      -
                                                      -
                                                      - -
                                                      -
                                                      - -
                                                      - - - - - - - - - - - - - - -
                                                      - - -
                                                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                      # Fixing Power Management (SSDT-PLUG)

                                                      # What this SSDT does

                                                      The purpose of SSDT-PLUG is to allow the kernel's XCPM(XNU's CPU Power Management) to manage our CPU's power management. It's pretty self explanatory why you'd want this.

                                                      Note: SSDT-PLUG is only compatible with Intel's Haswell and newer CPUs, Sandy Bridge and Ivy Bridge will need to follow the ssdtPRgen method(in post-install) while AMD users should not use this(unless attempting to attach AGPM which is outside the scope of Dortania's guides)

                                                      # Methods to make this SSDT

                                                      For SSDT-PLUG, there are 3 methods you can choose from:

                                                      Last Updated: 7/17/2020, 11:01:05 PM
                                                      + + - diff --git a/Universal/rhub-methods/manual.html b/Universal/rhub-methods/manual.html index 905db8f..6bc2e30 100644 --- a/Universal/rhub-methods/manual.html +++ b/Universal/rhub-methods/manual.html @@ -1,923 +1,64 @@ - - - - - - - Manual · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing USB: Manual | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                      -
                                                      - - - - - - - - -
                                                      - -
                                                      - -
                                                      - - - - - - - - -
                                                      -
                                                      - -
                                                      -
                                                      - -
                                                      - -
                                                      -

                                                      Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                      -
                                                      -

                                                      Fixing USB: Manual

                                                      - -

                                                      Finding the ACPI path

                                                      -

                                                      Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                                                      -

                                                      Next, search for the Device (RHUB)

                                                      -

                                                      You should get something like the following show up:

                                                      -

                                                      -

                                                      From the above, we can see that the full ACPI pathing for RHUB is PCI0.XHC.RHUB. If it's not as clear you can search for what those device paths are for your system:

                                                      -
                                                        -
                                                      • Finding the PCI path:
                                                          -
                                                        • Search PNP0A08 (If multiple show up, use the first one)
                                                        • -
                                                        -
                                                      • -
                                                      • Finding XHCI path
                                                          -
                                                        • Search for XHC, XHCI and XHC1, and yours is whichever shows up.
                                                        • -
                                                        -
                                                      • -
                                                      -

                                                      Now with the pathing, you can head here: Edits to the sample SSDT

                                                      -

                                                      Edits to the sample SSDT

                                                      -

                                                      Now that we have our ACPI path, lets grab our SSDT and get to work:

                                                      - -

                                                      By default, this uses PCI0.XHC_.RHUB for the pathing. you'll want to rename accordingly.

                                                      -

                                                      Following the example from above, we'll be renaming it to PCI0.XHC1.RHUB:

                                                      -

                                                      Before:

                                                      -
                                                      External (_SB_.PCI0.XHC_.RHUB, DeviceObj) <- Rename this
                                                      +    
                                                      +    
                                                      +  
                                                      +  
                                                      +    

                                                      # Fixing USB: Manual

                                                      # Finding the ACPI path

                                                      Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help).

                                                      Next, search for the Device (RHUB)

                                                      You should get something like the following show up:

                                                      From the above, we can see that the full ACPI pathing for RHUB is PCI0.XHC.RHUB. If it's not as clear you can search for what those device paths are for your system:

                                                      • Finding the PCI path: +
                                                        • Search PNP0A08 (If multiple show up, use the first one)
                                                      • Finding XHCI path +
                                                        • Search for XHC, XHCI and XHC1, and yours is whichever shows up.

                                                      Now with the pathing, you can head here: Edits to the sample SSDT

                                                      # Edits to the sample SSDT

                                                      Now that we have our ACPI path, lets grab our SSDT and get to work:

                                                      By default, this uses PCI0.XHC_.RHUB for the pathing. you'll want to rename accordingly.

                                                      Following the example from above, we'll be renaming it to PCI0.XHC1.RHUB:

                                                      Before:

                                                      External (_SB_.PCI0.XHC_.RHUB, DeviceObj) <- Rename this
                                                       
                                                       Scope (_SB.PCI0.XHC_.RHUB) <- Rename this
                                                      -

                                                      -

                                                      Following the example pathing we found, the SSDT should look something like this:

                                                      -

                                                      After:

                                                      -
                                                      External (_SB.PCI0.XHC1.RHUB, DeviceObj) <- Renamed
                                                      +

                                                      Following the example pathing we found, the SSDT should look something like this:

                                                      After:

                                                      External (_SB.PCI0.XHC1.RHUB, DeviceObj) <- Renamed
                                                       
                                                       Scope (_SB.PCI0.XHC1.RHUB) <- Renamed
                                                      -

                                                      -

                                                      Compiling the SSDT

                                                      -

                                                      With the SSDT done, you're now ready to compile the SSDT!

                                                      -

                                                      Wrapping up

                                                      -

                                                      Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                      - - - -
                                                      - -
                                                      -
                                                      -
                                                      - -

                                                      results matching ""

                                                      -
                                                        - -
                                                        -
                                                        - -

                                                        No results matching ""

                                                        - -
                                                        -
                                                        -
                                                        - -
                                                        -
                                                        - -
                                                        - - - - - - - - - - - - - - -
                                                        - - -
                                                        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

                                                        # Compiling the SSDT

                                                        With the SSDT done, you're now ready to compile the SSDT!

                                                        # Wrapping up

                                                        Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                        + + - diff --git a/Universal/rhub-methods/prebuilt.html b/Universal/rhub-methods/prebuilt.html index aa32ba4..a9dcfa4 100644 --- a/Universal/rhub-methods/prebuilt.html +++ b/Universal/rhub-methods/prebuilt.html @@ -1,884 +1,56 @@ - - - - - - - Prebuilt · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing USB: Prebuilt | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                        -
                                                        - - - - - - - - -
                                                        - -
                                                        - -
                                                        - - - - - - - - -
                                                        -
                                                        - -
                                                        -
                                                        - -
                                                        - -
                                                        -

                                                        Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                        -
                                                        -

                                                        Fixing USB: Prebuilt

                                                        -

                                                        By far the easiest method, all you need to do is download the following file:

                                                        - -

                                                        Wrapping up

                                                        -

                                                        Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                        - - - -
                                                        - -
                                                        -
                                                        -
                                                        - -

                                                        results matching ""

                                                        -
                                                          - -
                                                          -
                                                          - -

                                                          No results matching ""

                                                          - -
                                                          -
                                                          -
                                                          - -
                                                          -
                                                          - -
                                                          - - - - - - - - - - - - - - -
                                                          - - -
                                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +
                                                          + + - diff --git a/Universal/rhub.html b/Universal/rhub.html index 45a0a74..9acf939 100644 --- a/Universal/rhub.html +++ b/Universal/rhub.html @@ -1,892 +1,56 @@ - - - - - - - USB RHUB · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing USB | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                          -
                                                          - - - - - - - - -
                                                          - -
                                                          - -
                                                          - - - - - - - - -
                                                          -
                                                          - -
                                                          -
                                                          - -
                                                          - -
                                                          -

                                                          Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                          -
                                                          -

                                                          Fixing USB

                                                          - -

                                                          What this SSDT does

                                                          -

                                                          So on 400 series motherboards, certain OEMs have broken the ACPI spec and this results in issues when booting into macOS. To fix this, we'll want to turn off the RHUB device and force macOS to manually rebuild the ports.

                                                          -

                                                          The following platforms will require fixing:

                                                          -
                                                            -
                                                          • Mobile Icelake(currently Dell and Lenovo are the 2 known with this issue)
                                                          • -
                                                          • Asus Z490 (Gigabyte and AsRock users are fine, whether MSI currently this is unknown)
                                                          • -
                                                          -

                                                          Methods to make this SSDT

                                                          -

                                                          For the RTC fix, there are 2 methods you can choose from:

                                                          - - - -
                                                          - -
                                                          -
                                                          -
                                                          - -

                                                          results matching ""

                                                          -
                                                            - -
                                                            -
                                                            - -

                                                            No results matching ""

                                                            - -
                                                            -
                                                            -
                                                            - -
                                                            -
                                                            - -
                                                            - - - - - - - - - - - - - - -
                                                            - - -
                                                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                            # Fixing USB

                                                            # What this SSDT does

                                                            So on 400 series motherboards, certain OEMs have broken the ACPI spec and this results in issues when booting into macOS. To fix this, we'll want to turn off the RHUB device and force macOS to manually rebuild the ports.

                                                            The following platforms will require fixing:

                                                            • Mobile Icelake(currently Dell and Lenovo are the 2 known with this issue)
                                                            • Asus Z490 (Gigabyte and AsRock users are fine, whether MSI currently this is unknown)

                                                            # Methods to make this SSDT

                                                            For the RTC fix, there are 2 methods you can choose from:

                                                            Last Updated: 6/16/2020, 4:50:03 PM
                                                            + + - diff --git a/Universal/smbus-methods/manual.html b/Universal/smbus-methods/manual.html index c15b380..90938f7 100644 --- a/Universal/smbus-methods/manual.html +++ b/Universal/smbus-methods/manual.html @@ -1,830 +1,49 @@ - - - - - - - Manual · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing SMBus support: Manual | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                            -
                                                            - - - - - - - - -
                                                            - -
                                                            - -
                                                            - - - - - - - - -
                                                            -
                                                            - -
                                                            -
                                                            - -
                                                            - -
                                                            -

                                                            Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                            -
                                                            -

                                                            Fixing SMBus support: Manual

                                                            - -

                                                            Finding the ACPI path

                                                            -

                                                            So to find the ACPI pathing of our SMBus, we've got 2 methods:

                                                            - -

                                                            Hackintool

                                                            -

                                                            To find the correct pathing for your devices, grab Hackintool (Github link) and head to the PCI tab:

                                                            -

                                                            -

                                                            Look for the SMBus device under Subclass, then look beside and you'll see the ACPI path(under IOReg Name). To convert , omit @...

                                                            -
                                                              -
                                                            • /PC00@0/SMBS@1F,4 -> PC00.SMBS
                                                            • -
                                                            -

                                                            With the ACPI pathing, you can now head here: Edits to the sample SSDT

                                                            -

                                                            DeviceManager

                                                            -

                                                            If you already have Windows installed on this machine, finding the SMBus pathing is fairly easy.

                                                            -

                                                            Start by opening up Device Manager in Windows and looking for a device named SMBUS. Once found, click on it and select the BIOS device Name entry. You should get something like this:

                                                            -

                                                            -

                                                            From the above example, we can see the SMBus is located at:

                                                            -
                                                            PC00.SMBS
                                                            -

                                                            With the ACPI pathing, you can now head here: Edits to the sample SSDT

                                                            -

                                                            Edits to the sample SSDT

                                                            -

                                                            Now that we know the ACPI pathing of the SMBus, we can finally start editing the our SSDT.

                                                            - -

                                                            So the important parts we care about are:

                                                            -

                                                            Before:

                                                            -
                                                            External (_SB_.PCI0, DeviceObj) <- Rename this
                                                            +    
                                                            +    
                                                            +  
                                                            +  
                                                            +    

                                                            # Fixing SMBus support: Manual

                                                            # Finding the ACPI path

                                                            So to find the ACPI pathing of our SMBus, we've got 2 methods:

                                                            # Hackintool

                                                            To find the correct pathing for your devices, grab Hackintool (Github link) and head to the PCI tab:

                                                            Look for the SMBus device under Subclass, then look beside and you'll see the ACPI path(under IOReg Name). To convert , omit @...

                                                            • /PC00@0/SMBS@1F,4 -> PC00.SMBS

                                                            With the ACPI pathing, you can now head here: Edits to the sample SSDT

                                                            # DeviceManager

                                                            If you already have Windows installed on this machine, finding the SMBus pathing is fairly easy.

                                                            Start by opening up Device Manager in Windows and looking for a device named SMBUS. Once found, click on it and select the BIOS device Name entry. You should get something like this:

                                                            From the above example, we can see the SMBus is located at:

                                                            PC00.SMBS
                                                            +

                                                            With the ACPI pathing, you can now head here: Edits to the sample SSDT

                                                            # Edits to the sample SSDT

                                                            Now that we know the ACPI pathing of the SMBus, we can finally start editing the our SSDT.

                                                            So the important parts we care about are:

                                                            Before:

                                                            External (_SB_.PCI0, DeviceObj) <- Rename this
                                                             External (_SB_.PCI0.SBUS.BUS0, DeviceObj) <- Rename this
                                                             
                                                             Scope (_SB.PCI0) <- Rename this
                                                            @@ -836,11 +55,7 @@ Scope (_SB.PCI0) <- Rename this
                                                             }
                                                             
                                                             Device (_SB.PCI0.SBUS.BUS0) <- Rename this
                                                            -
                                                            -

                                                            -

                                                            Following the example SMBus pathing we found, the SSDT should look something like this:

                                                            -

                                                            After:

                                                            -
                                                            External (_SB_.PC00, DeviceObj) <- Renamed
                                                            +

                                                            Following the example SMBus pathing we found, the SSDT should look something like this:

                                                            After:

                                                            External (_SB_.PC00, DeviceObj) <- Renamed
                                                             External (_SB_.PC00.SMBS.BUS0, DeviceObj) <- Renamed
                                                             
                                                             Scope (_SB.PC00) <- Renamed
                                                            @@ -852,103 +67,16 @@ Scope (_SB.PC00) <- Renamed
                                                             }
                                                             
                                                             Device (_SB.PC00.SMBS.BUS0) <- Renamed
                                                            -
                                                            -

                                                            -

                                                            Compiling the SSDT

                                                            -

                                                            With the SSDT done, you're now ready to compile the SSDT!

                                                            -

                                                            Wrapping up

                                                            -

                                                            Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                            - -

                                                            Verify it's working

                                                            -

                                                            Once you've installed macOS, you can actually check whether your SSDT-SBUS-MCHC is working or not in terminal:

                                                            -
                                                            kextstat | grep -E "AppleSMBusController|AppleSMBusPCI"
                                                            -

                                                            - - -
                                                            - -
                                                            -
                                                            -
                                                            - -

                                                            results matching ""

                                                            -
                                                              - -
                                                              -
                                                              - -

                                                              No results matching ""

                                                              - -
                                                              -
                                                              -
                                                              - -
                                                              -
                                                              - -
                                                              - - - - - - - - - - - - - - -
                                                              - - -
                                                              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

                                                              # Compiling the SSDT

                                                              With the SSDT done, you're now ready to compile the SSDT!

                                                              # Wrapping up

                                                              Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:

                                                              # Verify it's working

                                                              Once you've installed macOS, you can actually check whether your SSDT-SBUS-MCHC is working or not in terminal:

                                                              kextstat | grep -E "AppleSMBusController|AppleSMBusPCI"
                                                              +

                                                              + + - diff --git a/Universal/smbus.html b/Universal/smbus.html index ab1ede1..6192c10 100644 --- a/Universal/smbus.html +++ b/Universal/smbus.html @@ -1,902 +1,59 @@ - - - - - - - Fixing SMBus Support · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Fixing SMBus support (SSDT-SBUS-MCHC) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                              -
                                                              - - - - - - - - -
                                                              - -
                                                              - -
                                                              - - - - - - - - -
                                                              -
                                                              - -
                                                              -
                                                              - -
                                                              - -
                                                              -

                                                              Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                              -
                                                              -

                                                              Fixing SMBus support (SSDT-SBUS-MCHC)

                                                              - -

                                                              What this SSDT does

                                                              -

                                                              This section of the guide refers to fixing AppleSMBus support in macOS, what is AppleSMBus? Well this mainly handles the System Management Bus, which has many functions like:

                                                              -
                                                                -
                                                              • AppleSMBusController
                                                                  -
                                                                • Aids with correct temperature, fan, voltage, ICH, etc readings
                                                                • -
                                                                -
                                                              • -
                                                              • AppleSMBusPCI
                                                                  -
                                                                • Same idea as AppleSMBusController except for low bandwidth PCI devices
                                                                • -
                                                                -
                                                              • -
                                                              • Memory Reporting
                                                                  -
                                                                • Aids in proper memory reporting and can aid in getting better kernel panic details if memory related
                                                                • -
                                                                -
                                                              • -
                                                              • Other things SMBus does: SMBus wiki
                                                              • -
                                                              -

                                                              For install purposes, this SSDT isn't needed but for post-install it's recommended to put the final touches on your hack.

                                                              -

                                                              Methods to make this SSDT

                                                              -

                                                              To make this SSDT, you only got 1 method: Doing it manually

                                                              - - - -
                                                              - -
                                                              -
                                                              -
                                                              - -

                                                              results matching ""

                                                              -
                                                                - -
                                                                -
                                                                - -

                                                                No results matching ""

                                                                - -
                                                                -
                                                                -
                                                                - -
                                                                -
                                                                - -
                                                                - - - - - - - - - - - - - - -
                                                                - - -
                                                                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                                # Fixing SMBus support (SSDT-SBUS-MCHC)

                                                                # What this SSDT does

                                                                This section of the guide refers to fixing AppleSMBus support in macOS, what is AppleSMBus? Well this mainly handles the System Management Bus, which has many functions like:

                                                                • AppleSMBusController +
                                                                  • Aids with correct temperature, fan, voltage, ICH, etc readings
                                                                • AppleSMBusPCI +
                                                                  • Same idea as AppleSMBusController except for low bandwidth PCI devices
                                                                • Memory Reporting +
                                                                  • Aids in proper memory reporting and can aid in getting better kernel panic details if memory related
                                                                • Other things SMBus does: SMBus wiki

                                                                For install purposes, this SSDT isn't needed but for post-install it's recommended to put the final touches on your hack.

                                                                # Methods to make this SSDT

                                                                To make this SSDT, you only got 1 method: Doing it manually

                                                                Last Updated: 5/31/2020, 5:54:37 AM
                                                                + + - diff --git a/Universal/spoof.html b/Universal/spoof.html index 91fc625..c3f7e6b 100644 --- a/Universal/spoof.html +++ b/Universal/spoof.html @@ -1,950 +1,77 @@ - - - - - - - GPU Spoof · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Renaming GPUs (SSDT-GPU-SPOOF) | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                                -
                                                                - - - - - - - - -
                                                                - -
                                                                - -
                                                                - - - - - - - - -
                                                                -
                                                                - -
                                                                -
                                                                - -
                                                                - -
                                                                -

                                                                Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                -
                                                                -

                                                                Renaming GPUs (SSDT-GPU-SPOOF)

                                                                -

                                                                So this is mainly needed for GPUs that are not natively supported out of the box due to their names, most commonly:

                                                                -
                                                                  -
                                                                • R9 290/390
                                                                • -
                                                                • R9 280/380
                                                                • -
                                                                • R7 270/370
                                                                • -
                                                                • R9 260/360
                                                                • -
                                                                • R7 250
                                                                • -
                                                                • R7 240
                                                                • -
                                                                -

                                                                Instead, these GPUs need to be "spoofed" or faked into a model that closely matches theirs, generally this will be the "X" variant of the card. For some reason Apple never bothered adding the PCI IDs for these other cards even though their GPU cores are supported by the driver.

                                                                -

                                                                So to spoof the GPU, we need to find a couple things:

                                                                - -

                                                                Finding a suitable PCI ID

                                                                -

                                                                To find a suitable PCI ID, we'll be using PCI ID Repository which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the GPU Buyers Guide. The closest match to this GPU would be the 390X, and looking on that site near the top gives us this:

                                                                -
                                                                Vendor 1002 -> Device 1002:67b0
                                                                -

                                                                Now lets break this down into a device ID we can use:

                                                                -
                                                                  -
                                                                • 1002: The vendor ID, all AMD devices have this ID
                                                                • -
                                                                • 67B0: The device ID, this is what we care about
                                                                • -
                                                                -

                                                                So how do we convert this to a fake ID? Well the format of a fake ID:

                                                                -
                                                                "device-id",
                                                                +    
                                                                +    
                                                                +  
                                                                +  
                                                                +    

                                                                # Renaming GPUs (SSDT-GPU-SPOOF)

                                                                So this is mainly needed for GPUs that are not natively supported out of the box due to their names, most commonly:

                                                                • R9 290/390
                                                                • R9 280/380
                                                                • R7 270/370
                                                                • R9 260/360
                                                                • R7 250
                                                                • R7 240

                                                                Instead, these GPUs need to be "spoofed" or faked into a model that closely matches theirs, generally this will be the "X" variant of the card. For some reason Apple never bothered adding the PCI IDs for these other cards even though their GPU cores are supported by the driver.

                                                                So to spoof the GPU, we need to find a couple things:

                                                                # Finding a suitable PCI ID

                                                                To find a suitable PCI ID, we'll be using PCI ID Repository which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the GPU Buyers Guide. The closest match to this GPU would be the 390X, and looking on that site near the top gives us this:

                                                                Vendor 1002 -> Device 1002:67b0
                                                                +

                                                                Now lets break this down into a device ID we can use:

                                                                • 1002: The vendor ID, all AMD devices have this ID
                                                                • 67B0: The device ID, this is what we care about

                                                                So how do we convert this to a fake ID? Well the format of a fake ID:

                                                                "device-id",
                                                                 Buffer (0x04)
                                                                 {
                                                                      0xB0, 0x67, 0x00, 0x00
                                                                 },
                                                                -

                                                                As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT

                                                                -

                                                                The specifics are due to Endianness for those who are curious

                                                                -

                                                                Finding the ACPI Path of the GPU

                                                                -

                                                                To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:

                                                                -
                                                                  -
                                                                • Open Device Manager
                                                                • -
                                                                • Select Display Adapters, then right click your GPU and select Properties
                                                                • -
                                                                • Under the Details Tab, search for "Location Paths"
                                                                    -
                                                                  • Note some GPUs may be hiding under "BIOS device name"
                                                                  • -
                                                                  -
                                                                • -
                                                                -

                                                                -

                                                                Credit to 1Revenger1 for the image

                                                                -

                                                                The second "ACPI" is what we care about:

                                                                -
                                                                ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)
                                                                -

                                                                Now converting this to an ACPI path is quite simple, remove the #ACPI and #PCI(0000):

                                                                -
                                                                `_SB_.PC02.BR2A.PEGP
                                                                -

                                                                And voila! We've found our ACPI path, now that we have everything we're ready to get cooking

                                                                -

                                                                Making the SSDT

                                                                -

                                                                To start grab our SSDT-GPU-SPOOF and open it up. Here there's a couple things to change:

                                                                -
                                                                External (_SB_.PCI0, DeviceObj)
                                                                +

                                                                As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT

                                                                The specifics are due to Endianness for those who are curious

                                                                # Finding the ACPI Path of the GPU

                                                                To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:

                                                                • Open Device Manager
                                                                • Select Display Adapters, then right click your GPU and select Properties
                                                                • Under the Details Tab, search for "Location Paths" +
                                                                  • Note some GPUs may be hiding under "BIOS device name"

                                                                Credit to 1Revenger1 for the image

                                                                The second "ACPI" is what we care about:

                                                                ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)
                                                                +

                                                                Now converting this to an ACPI path is quite simple, remove the #ACPI and #PCI(0000):

                                                                `_SB_.PC02.BR2A.PEGP
                                                                +

                                                                And voila! We've found our ACPI path, now that we have everything we're ready to get cooking

                                                                # Making the SSDT

                                                                To start grab our SSDT-GPU-SPOOF and open it up. Here there's a couple things to change:

                                                                External (_SB_.PCI0, DeviceObj)
                                                                 External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
                                                                -

                                                                For our example, we'll change all mentions of :

                                                                -
                                                                  -
                                                                • PCI0 with PC02
                                                                • -
                                                                • PEG0 with BR2A
                                                                • -
                                                                -

                                                                Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device.

                                                                -

                                                                Now that the ACPI pathing is correct, we can finally apply our fake ID!!!

                                                                -

                                                                So the 2 parts we want to change:

                                                                -

                                                                device ID:

                                                                -
                                                                "device-id",
                                                                +

                                                                For our example, we'll change all mentions of :

                                                                • PCI0 with PC02
                                                                • PEG0 with BR2A

                                                                Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device.

                                                                Now that the ACPI pathing is correct, we can finally apply our fake ID!!!

                                                                So the 2 parts we want to change:

                                                                device ID:

                                                                "device-id",
                                                                 Buffer (0x04)
                                                                 {
                                                                     0xB0, 0x67, 0x00, 0x00
                                                                 },
                                                                -

                                                                Model:

                                                                -
                                                                "model",
                                                                +

                                                                Model:

                                                                "model",
                                                                 Buffer ()
                                                                 {
                                                                     "AMD Radeon R9 390"
                                                                 }
                                                                -

                                                                "device-id" will be set to our PCI ID that we found in "Finding a suitable PCI ID" and "model" is mainly cosmetic

                                                                -

                                                                Now you're ready to compile the SSDT!

                                                                - - -
                                                                - -
                                                                -
                                                                -
                                                                - -

                                                                results matching ""

                                                                -
                                                                  - -
                                                                  -
                                                                  - -

                                                                  No results matching ""

                                                                  - -
                                                                  -
                                                                  -
                                                                  - -
                                                                  -
                                                                  - -
                                                                  - - - - - - - - - - - - - - -
                                                                  - - -
                                                                  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

                                                                  "device-id" will be set to our PCI ID that we found in "Finding a suitable PCI ID" and "model" is mainly cosmetic

                                                                  # Now you're ready to compile the SSDT!

                                                                  + + - diff --git a/images/README-md/acpi-logo.png b/acpi-logo.png similarity index 100% rename from images/README-md/acpi-logo.png rename to acpi-logo.png diff --git a/gitbook/images/apple-touch-icon-precomposed-152.png b/apple-touch-icon-precomposed-152.png similarity index 100% rename from gitbook/images/apple-touch-icon-precomposed-152.png rename to apple-touch-icon-precomposed-152.png diff --git a/assets/css/0.styles.5c2447d6.css b/assets/css/0.styles.5c2447d6.css new file mode 100644 index 0000000..981bed5 --- /dev/null +++ b/assets/css/0.styles.5c2447d6.css @@ -0,0 +1 @@ +@import url($themeFont);html{scroll-behavior:smooth}.medium-zoom-overlay{z-index:100}.medium-zoom-overlay~img{z-index:101}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#00bfff}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{background-color:#282c34}div[class*=language-] .highlight-lines{padding-top:1.3rem}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode:after{background-color:#282c34}.custom-block.danger,.custom-block.tip,.custom-block.warning{border-left-width:.5rem;border-left-style:solid}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.arrow.up{border-bottom:6px solid #ccc}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom),.theme-succinct-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom),.theme-succinct-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom),.theme-succinct-content:not(.custom){padding:1.5rem}}body,html{background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.navbar{border-bottom:1px solid #eaecef}.navbar,.sidebar{background-color:#fff}.sidebar{border-right:1px solid #eaecef}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a,p a code{color:#00bfff}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h2{border-bottom:1px solid #eaecef}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}hr{border-top:1px solid #eaecef}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.theme-succinct-content code{color:#bab8aa;color:var(--codeColor);padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.08);border-radius:3px}.theme-succinct-content code .token.deleted{color:#ec5975}.theme-succinct-content code .token.inserted{color:#3eaf7c;color:var(--accentColor)}.theme-succinct-content pre,.theme-succinct-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#1a1c22;background-color:var(--codeBgColor);border-radius:6px;overflow:auto}.theme-succinct-content pre[class*=language-] code,.theme-succinct-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#1a1c22;background-color:var(--codeBgColor);border-radius:6px;overflow:hidden}div[class*=language-] .highlight-lines{-webkit-user-select:none;-ms-user-select:none;user-select:none;padding-top:2.1rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:#202228;background-color:var(--codeBgHighlightColor)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;margin-bottom:0;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;-ms-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;-ms-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#1a1c22;background-color:var(--codeBgColor)}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;letter-spacing:.1rem;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border:none;border-radius:6px;margin:1rem 0}.custom-block.tip{background-color:#1b4b35;background-color:var(--badgeTipColor)}.custom-block.warning{background-color:#574e21;background-color:var(--badgeWarningColor);color:#dfd6aa;color:var(--badgeWarningTextColor)}.custom-block.warning .custom-block-title{color:#c9bb72;color:var(--badgeWarningTitleColor)}.custom-block.warning a{color:#b0ae9d;color:var(--textMutedColor)}.custom-block.danger{background-color:#692025;background-color:var(--badgeErrorColor);color:#e5a9ad;color:var(--badgeErrorTextColor)}.custom-block.danger .custom-block-title{color:#d37077;color:var(--badgeErrorTitleColor)}.custom-block.danger a{color:#b0ae9d;color:var(--textMutedColor)}.custom-block.details{display:block;position:relative;border-radius:6px;margin:1em 0;padding:1.5em;background-color:hsla(0,0%,100%,.1);background-color:var(--selectionColor)}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #555;border-bottom:6px solid var(--arrowBgColor)}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #555;border-top:6px solid var(--arrowBgColor)}.arrow.right{border-left:6px solid #555;border-left:6px solid var(--arrowBgColor)}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #555;border-right:6px solid var(--arrowBgColor)}.theme-succinct-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-succinct-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-succinct-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}[data-theme=light]{--accentColor:#00bfff;--textColor:#2c3e50;--textMutedColor:#4e6e8e;--selectionColor:rgba(0,0,0,0.1);--headerColor:#3a5169;--descriptionColor:#6a8bad;--borderColor:#eaecef;--codeColor:#476582;--codeBgColor:#282c34;--codeBgHighlightColor:#3d4148;--arrowBgColor:#ccc;--bodyBgColor:#fff;--bodyComplementColor:#fafafa;--badgeTipColor:#e3f8ff;--badgeWarningColor:#f8f2d1;--badgeWarningTextColor:#776712;--badgeWarningTitleColor:#c6ac1e;--badgeErrorColor:#ffdadc;--badgeErrorTextColor:#8e0008;--badgeErrorTitleColor:#ed000d;--actionBtnBorderColor:#00ace6;--actionBtnHoverBorderColor:#1ac5ff;--navItemHoverColor:#14c4ff}[data-theme=dark]{--accentColor:#30bcd5;--textColor:#ccc;--textMutedColor:#999;--selectionColor:hsla(0,0%,100%,0.1);--headerColor:#c2c2c2;--descriptionColor:#b8b8b8;--borderColor:#4c525c;--codeColor:#a3a3a3;--codeBgColor:#1a1c22;--codeBgHighlightColor:#202228;--arrowBgColor:#555;--bodyBgColor:#2d3033;--bodyComplementColor:#373a3e;--badgeTipColor:#023e52;--badgeWarningColor:#574e21;--badgeWarningTextColor:#dfd6aa;--badgeWarningTitleColor:#c9bb72;--badgeErrorColor:#692025;--badgeErrorTextColor:#e5a9ad;--badgeErrorTitleColor:#d37077;--actionBtnBorderColor:#28acc3;--actionBtnHoverBorderColor:#28acc3;--navItemHoverColor:#29b0c8}*{scrollbar-color:hsla(0,0%,100%,.1) #2f3037;scrollbar-color:var(--selectionColor) var(--bodyComplementColor);scroll-behavior:smooth}::-webkit-scrollbar,::-webkit-scrollbar-track{background-color:#2f3037;background-color:var(--bodyComplementColor)}::-webkit-scrollbar-thumb{background-color:hsla(0,0%,100%,.1);background-color:var(--selectionColor)}::-webkit-scrollbar-button{background-color:#2f3037;background-color:var(--bodyComplementColor)}@media screen and (prefers-reduced-motion:true){*{scroll-behavior:auto}}::selection{background:hsla(0,0%,100%,.1);background:var(--selectionColor)}body,html{padding:0;margin:0;background-color:#25262b;background-color:var(--bodyBgColor)}.theme-container,body{font-family:$bodyFontFamily,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-size:16px;color:#e2e1db;color:var(--textColor)}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#25262b;background-color:var(--bodyBgColor);box-sizing:border-box;border-bottom:1px solid #4c525c;border-bottom:1px solid var(--borderColor)}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#25262b;background-color:var(--bodyBgColor);width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #4c525c;border-right:1px solid var(--borderColor);overflow-y:auto}.search-box input{color:#b0ae9d!important;color:var(--textMutedColor)!important;border-color:#4c525c!important;border-color:var(--borderColor)!important;background-color:#25262b!important;background-color:var(--bodyBgColor)!important}.search-box input:focus{border-color:#3eaf7c!important;border-color:var(--accentColor)!important}.search-box .suggestions{background:#25262b!important;background:var(--bodyBgColor)!important;border-color:#4c525c!important;border-color:var(--borderColor)!important}.search-box .suggestion a{color:#b0ae9d!important;color:var(--textMutedColor)!important}.search-box .suggestion.focused{background-color:#2f3037!important;background-color:var(--bodyComplementColor)!important}.search-box .suggestion.focused a{color:#3eaf7c!important;color:var(--accentColor)!important}.theme-succinct-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-succinct-content:not(.custom) a:hover{text-decoration:underline}.theme-succinct-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #4c525c;border:1px solid var(--borderColor);border-radius:4px}.theme-succinct-content:not(.custom) img{max-width:100%}.theme-succinct-content.custom{padding:0;margin:0}.theme-succinct-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#3eaf7c;color:var(--accentColor)}p a code{font-weight:400}kbd{background:#b0ae9d;background:var(--textMutedColor);border:.15rem solid #4c525c;border-bottom:.25rem solid #4c525c;border:.15rem solid var(--borderColor);border-bottom:.25rem solid var(--borderColor);border-radius:.15rem;padding:0 .15em}blockquote{font-size:inherit;color:#b0ae9d;color:var(--textMutedColor);border-left:.2rem solid #4c525c;border-left:.2rem solid var(--borderColor);margin:.5rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-succinct-content:not(.custom)>h1,.theme-succinct-content:not(.custom)>h2,.theme-succinct-content:not(.custom)>h3,.theme-succinct-content:not(.custom)>h4,.theme-succinct-content:not(.custom)>h5,.theme-succinct-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-succinct-content:not(.custom)>h1:first-child,.theme-succinct-content:not(.custom)>h2:first-child,.theme-succinct-content:not(.custom)>h3:first-child,.theme-succinct-content:not(.custom)>h4:first-child,.theme-succinct-content:not(.custom)>h5:first-child,.theme-succinct-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-succinct-content:not(.custom)>h1:first-child+.custom-block,.theme-succinct-content:not(.custom)>h1:first-child+p,.theme-succinct-content:not(.custom)>h1:first-child+pre,.theme-succinct-content:not(.custom)>h2:first-child+.custom-block,.theme-succinct-content:not(.custom)>h2:first-child+p,.theme-succinct-content:not(.custom)>h2:first-child+pre,.theme-succinct-content:not(.custom)>h3:first-child+.custom-block,.theme-succinct-content:not(.custom)>h3:first-child+p,.theme-succinct-content:not(.custom)>h3:first-child+pre,.theme-succinct-content:not(.custom)>h4:first-child+.custom-block,.theme-succinct-content:not(.custom)>h4:first-child+p,.theme-succinct-content:not(.custom)>h4:first-child+pre,.theme-succinct-content:not(.custom)>h5:first-child+.custom-block,.theme-succinct-content:not(.custom)>h5:first-child+p,.theme-succinct-content:not(.custom)>h5:first-child+pre,.theme-succinct-content:not(.custom)>h6:first-child+.custom-block,.theme-succinct-content:not(.custom)>h6:first-child+p,.theme-succinct-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #4c525c;border-bottom:1px solid var(--borderColor)}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:$monoFontFamily,source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #4c525c;border-top:1px solid var(--borderColor)}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #4c525c;border-top:1px solid var(--borderColor)}tr:nth-child(2n){background-color:#2f3037;background-color:var(--bodyComplementColor)}td,th{border:1px solid #4c525c;border:1px solid var(--borderColor);padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-succinct-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-succinct-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}[data-theme=light]{--sideBgColor:#fff}[data-theme=dark]{--sideBgColor:#363b40;--bgColor:#111112}.home .hero img{max-width:450px!important}.navbar{filter:drop-shadow(0 1px 1px var(--bgColor))}.sidebar{background-color:var(--sideBgColor)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{margin-top:0}html{overflow:scroll}::-webkit-scrollbar{width:0;background:transparent}tr:nth-child(1n){background-color:var(--bodyBgColor)}tr:nth-child(2n){background-color:var(--sideBgColor)}.dropdown-wrapper .nav-dropdown{border:1px solid var(--sideBgColor)!important;background-color:var(--sideBgColor)!important;box-shadow:0 0 2px var(--bodyBgColor);right:-12%!important}#nprogress{pointer-events:none}#nprogress .bar{background:#00bfff;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #00bfff,0 0 5px #00bfff;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#00bfff transparent transparent #00bfff;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.go-to-top[data-v-5fd4ef0c]{cursor:pointer;position:fixed;bottom:2rem;right:2.5rem;width:2rem;color:#00bfff;z-index:1}.go-to-top[data-v-5fd4ef0c]:hover{color:#4dd2ff}@media (max-width:959px){.go-to-top[data-v-5fd4ef0c]{display:none}}.fade-enter-active[data-v-5fd4ef0c],.fade-leave-active[data-v-5fd4ef0c]{transition:opacity .3s}.fade-enter[data-v-5fd4ef0c],.fade-leave-to[data-v-5fd4ef0c]{opacity:0}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:40rem;font-size:1.6rem;line-height:1.3;color:#ceccc2;color:var(--descriptionColor)}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#25262b;color:var(--bodyBgColor);background-color:#3eaf7c;background-color:var(--accentColor);padding:.6rem 1.4rem;border-radius:40px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #389d70;border-bottom:1px solid var(--actionBtnBorderColor)}.home .hero .action-button:hover{background-color:#389d70;background-color:var(--actionBtnHoverBorderColor)}.home .features{border-top:1px solid #4c525c;border-top:1px solid var(--borderColor);padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#d8d7cf;color:var(--headerColor)}.home .feature p,.home .footer{color:#b0ae9d;color:var(--textMutedColor)}.home .footer{padding:2.5rem;border-top:1px solid #4c525c;border-top:1px solid var(--borderColor);text-align:center}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/Getting-Started-With-ACPI/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#00bfff}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#00bfff}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#e2e1db;color:var(--textColor)}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #4c525c;border-top:1px solid var(--borderColor);padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#3eaf7c;color:var(--accentColor)}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #3eaf7c;border-left:5px solid var(--accentColor);border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{font-weight:600;font-size:inherit}.dropdown-wrapper .dropdown-title:hover{color:#3eaf7c;color:var(--accentColor)}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #555;border-top:6px solid var(--arrowBgColor);border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#25262b;background-color:var(--bodyBgColor);padding:.6rem 0;border:1px solid #4c525c;border:1px solid var(--borderColor);text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block;cursor:pointer}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#3eaf7c;color:var(--accentColor)}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#e2e1db;color:var(--textColor)}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #39a172;border-bottom:2px solid var(--navItemHoverColor)}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#e2e1db;color:var(--textColor);position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#b0ae9d;color:var(--textMutedColor);margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#b0ae9d;color:var(--textMutedColor)}.page-edit .last-updated .time{font-weight:400;color:#aaa}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #4c525c;border-top:1px solid var(--borderColor);padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;color:var(--textColor);transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;border-left-color:#3eaf7c;border-left-color:var(--accentColor)}.sidebar-heading.clickable.active,.sidebar-heading.clickable:hover{color:#3eaf7c;color:var(--accentColor)}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#e2e1db;color:var(--textColor);border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link.active,a.sidebar-link:hover{color:#3eaf7c;color:var(--accentColor)}a.sidebar-link.active{font-weight:600;border-left-color:#3eaf7c;border-left-color:var(--accentColor)}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #4c525c;border-bottom:1px solid var(--borderColor);padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.badge[data-v-766b3ac8]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff;background-color:#42b983}.badge.green[data-v-766b3ac8],.badge.tip[data-v-766b3ac8]{background-color:$badgeTipColorDefault;background-color:var(--badgeTipColor)}.badge.error[data-v-766b3ac8]{background-color:$badgeErrorColorDefault;background-color:var(--badgeErrorColor)}.badge.warn[data-v-766b3ac8],.badge.warning[data-v-766b3ac8],.badge.yellow[data-v-766b3ac8]{background-color:$badgeWarningColorDefault;background-color:var(--badgeWarningColor)}.badge+.badge[data-v-766b3ac8]{margin-left:5px}.badge[data-v-15b7b770]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff;background-color:#42b983}.badge.green[data-v-15b7b770],.badge.tip[data-v-15b7b770]{background-color:#e3f8ff}.badge.error[data-v-15b7b770]{background-color:#da5961}.badge.warn[data-v-15b7b770],.badge.warning[data-v-15b7b770],.badge.yellow[data-v-15b7b770]{background-color:#e7c000}.badge+.badge[data-v-15b7b770]{margin-left:5px} \ No newline at end of file diff --git a/images/Universal/awac-md/ACPI000E.png b/assets/img/ACPI000E.f11d4625.png similarity index 100% rename from images/Universal/awac-md/ACPI000E.png rename to assets/img/ACPI000E.f11d4625.png diff --git a/images/Universal/awac-md/PNP0B00.png b/assets/img/PNP0B00.cd0c5876.png similarity index 100% rename from images/Universal/awac-md/PNP0B00.png rename to assets/img/PNP0B00.cd0c5876.png diff --git a/images/Universal/smbus-md/after-rename.png b/assets/img/after-rename.48bf32ad.png similarity index 100% rename from images/Universal/smbus-md/after-rename.png rename to assets/img/after-rename.48bf32ad.png diff --git a/images/Desktops/amd.png b/assets/img/amd.acf5492b.png similarity index 100% rename from images/Desktops/amd.png rename to assets/img/amd.acf5492b.png diff --git a/images/Universal/smbus-md/before-rename.png b/assets/img/before-rename.c0ccc637.png similarity index 100% rename from images/Universal/smbus-md/before-rename.png rename to assets/img/before-rename.c0ccc637.png diff --git a/images/Universal/plug-md/cp00.png b/assets/img/cp00.d25cad0f.png similarity index 100% rename from images/Universal/plug-md/cp00.png rename to assets/img/cp00.d25cad0f.png diff --git a/images/Laptops/backlight-md/devicemanager.png b/assets/img/devicemanager.770a10fc.png similarity index 100% rename from images/Laptops/backlight-md/devicemanager.png rename to assets/img/devicemanager.770a10fc.png diff --git a/images/Desktops/ec.png b/assets/img/ec.dd4b7c64.png similarity index 100% rename from images/Desktops/ec.png rename to assets/img/ec.dd4b7c64.png diff --git a/images/Laptops/trackpad-md/gpi0-2.png b/assets/img/gpi0-2.8c3726d3.png similarity index 100% rename from images/Laptops/trackpad-md/gpi0-2.png rename to assets/img/gpi0-2.8c3726d3.png diff --git a/images/Laptops/trackpad-md/gpi0.png b/assets/img/gpi0.b0e0b8d8.png similarity index 100% rename from images/Laptops/trackpad-md/gpi0.png rename to assets/img/gpi0.b0e0b8d8.png diff --git a/images/Universal/nvram-md/lpc.png b/assets/img/lpc.bfa9cf23.png similarity index 100% rename from images/Universal/nvram-md/lpc.png rename to assets/img/lpc.bfa9cf23.png diff --git a/images/Manual/compile-md/macos-compile.png b/assets/img/macos-compile.5b3bc6ad.png similarity index 100% rename from images/Manual/compile-md/macos-compile.png rename to assets/img/macos-compile.5b3bc6ad.png diff --git a/images/Desktops/nvidia.png b/assets/img/nvidia.672e8e16.png similarity index 100% rename from images/Desktops/nvidia.png rename to assets/img/nvidia.672e8e16.png diff --git a/images/Universal/smbus-md/pci.png b/assets/img/pci.81a3ae52.png similarity index 100% rename from images/Universal/smbus-md/pci.png rename to assets/img/pci.81a3ae52.png diff --git a/images/Universal/nvram-md/pci0.png b/assets/img/pci0.4477f361.png similarity index 100% rename from images/Universal/nvram-md/pci0.png rename to assets/img/pci0.4477f361.png diff --git a/images/Universal/plug-md/plug-bios.png b/assets/img/plug-bios.1b527198.png similarity index 100% rename from images/Universal/plug-md/plug-bios.png rename to assets/img/plug-bios.1b527198.png diff --git a/images/Universal/plug-md/plug-x299.png b/assets/img/plug-x299.8123a653.png similarity index 100% rename from images/Universal/plug-md/plug-x299.png rename to assets/img/plug-x299.8123a653.png diff --git a/images/Desktops/pnp.png b/assets/img/pnp.8c2387eb.png similarity index 100% rename from images/Desktops/pnp.png rename to assets/img/pnp.8c2387eb.png diff --git a/images/Universal/plug-md/processor-2.png b/assets/img/processor-2.8af8c8dd.png similarity index 100% rename from images/Universal/plug-md/processor-2.png rename to assets/img/processor-2.8af8c8dd.png diff --git a/images/Universal/plug-md/processor.png b/assets/img/processor.38dc34ad.png similarity index 100% rename from images/Universal/plug-md/processor.png rename to assets/img/processor.38dc34ad.png diff --git a/images/Universal/rhub-md/rhub-path.png b/assets/img/rhub-path.0ccecac7.png similarity index 100% rename from images/Universal/rhub-md/rhub-path.png rename to assets/img/rhub-path.0ccecac7.png diff --git a/assets/img/search.83621669.svg b/assets/img/search.83621669.svg new file mode 100644 index 0000000..03d8391 --- /dev/null +++ b/assets/img/search.83621669.svg @@ -0,0 +1 @@ + diff --git a/images/Universal/smbus-md/smbus.png b/assets/img/smbus.d9dd6044.png similarity index 100% rename from images/Universal/smbus-md/smbus.png rename to assets/img/smbus.d9dd6044.png diff --git a/images/Laptops/backlight-md/ssdt-after.png b/assets/img/ssdt-after.28584bc4.png similarity index 100% rename from images/Laptops/backlight-md/ssdt-after.png rename to assets/img/ssdt-after.28584bc4.png diff --git a/images/Universal/awac-md/ssdt-after.png b/assets/img/ssdt-after.3d0ae705.png similarity index 100% rename from images/Universal/awac-md/ssdt-after.png rename to assets/img/ssdt-after.3d0ae705.png diff --git a/images/Universal/rhub-md/ssdt-after.png b/assets/img/ssdt-after.4bf2a9ef.png similarity index 100% rename from images/Universal/rhub-md/ssdt-after.png rename to assets/img/ssdt-after.4bf2a9ef.png diff --git a/images/Desktops/ssdt-after.png b/assets/img/ssdt-after.7996c4b7.png similarity index 100% rename from images/Desktops/ssdt-after.png rename to assets/img/ssdt-after.7996c4b7.png diff --git a/images/Universal/nvram-md/ssdt-after.png b/assets/img/ssdt-after.971e8c4d.png similarity index 100% rename from images/Universal/nvram-md/ssdt-after.png rename to assets/img/ssdt-after.971e8c4d.png diff --git a/images/Laptops/trackpad-md/ssdt-after.png b/assets/img/ssdt-after.9ea3604d.png similarity index 100% rename from images/Laptops/trackpad-md/ssdt-after.png rename to assets/img/ssdt-after.9ea3604d.png diff --git a/images/Universal/rhub-md/ssdt-before.png b/assets/img/ssdt-before.24a00e7a.png similarity index 100% rename from images/Universal/rhub-md/ssdt-before.png rename to assets/img/ssdt-before.24a00e7a.png diff --git a/images/Universal/nvram-md/ssdt-before.png b/assets/img/ssdt-before.6ddf7dfa.png similarity index 100% rename from images/Universal/nvram-md/ssdt-before.png rename to assets/img/ssdt-before.6ddf7dfa.png diff --git a/images/Laptops/trackpad-md/ssdt-before.png b/assets/img/ssdt-before.b64846c1.png similarity index 100% rename from images/Laptops/trackpad-md/ssdt-before.png rename to assets/img/ssdt-before.b64846c1.png diff --git a/images/Desktops/ssdt-before.png b/assets/img/ssdt-before.b846f355.png similarity index 100% rename from images/Desktops/ssdt-before.png rename to assets/img/ssdt-before.b846f355.png diff --git a/images/Universal/awac-md/ssdt-before.png b/assets/img/ssdt-before.b9b19f9b.png similarity index 100% rename from images/Universal/awac-md/ssdt-before.png rename to assets/img/ssdt-before.b9b19f9b.png diff --git a/images/Laptops/backlight-md/ssdt-before.png b/assets/img/ssdt-before.f71c9e04.png similarity index 100% rename from images/Laptops/backlight-md/ssdt-before.png rename to assets/img/ssdt-before.f71c9e04.png diff --git a/images/Universal/plug-md/ssdt-clean.png b/assets/img/ssdt-clean.b241b36e.png similarity index 100% rename from images/Universal/plug-md/ssdt-clean.png rename to assets/img/ssdt-clean.b241b36e.png diff --git a/images/Universal/plug-md/ssdt-mess.png b/assets/img/ssdt-mess.8323e4a6.png similarity index 100% rename from images/Universal/plug-md/ssdt-mess.png rename to assets/img/ssdt-mess.8323e4a6.png diff --git a/images/ssdt-easy-md/ssdttime.png b/assets/img/ssdttime.54f2ba0d.png similarity index 100% rename from images/ssdt-easy-md/ssdttime.png rename to assets/img/ssdttime.54f2ba0d.png diff --git a/images/Desktops/sta.png b/assets/img/sta.e2d0aed0.png similarity index 100% rename from images/Desktops/sta.png rename to assets/img/sta.e2d0aed0.png diff --git a/images/Manual/dump-md/sysreport.png b/assets/img/sysreport.8d1d1d0e.png similarity index 100% rename from images/Manual/dump-md/sysreport.png rename to assets/img/sysreport.8d1d1d0e.png diff --git a/images/Universal/smbus-md/verify.png b/assets/img/verify.58363d4d.png similarity index 100% rename from images/Universal/smbus-md/verify.png rename to assets/img/verify.58363d4d.png diff --git a/images/Manual/compile-md/windows-compile.png b/assets/img/windows-compile.62b90d74.png similarity index 100% rename from images/Manual/compile-md/windows-compile.png rename to assets/img/windows-compile.62b90d74.png diff --git a/assets/js/10.6abe490e.js b/assets/js/10.6abe490e.js new file mode 100644 index 0000000..28770df --- /dev/null +++ b/assets/js/10.6abe490e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{389:function(t,e,a){t.exports=a.p+"assets/img/rhub-path.0ccecac7.png"},390:function(t,e,a){t.exports=a.p+"assets/img/ssdt-before.24a00e7a.png"},391:function(t,e,a){t.exports=a.p+"assets/img/ssdt-after.4bf2a9ef.png"},435:function(t,e,a){"use strict";a.r(e);var s=a(25),i=Object(s.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-usb-manual"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-usb-manual"}},[t._v("#")]),t._v(" Fixing USB: Manual")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[t._v("Finding the ACPI path")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[t._v("Compiling the SSDT")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#wrapping-up"}},[t._v("Wrapping up")])])]),t._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path"}},[t._v("#")]),t._v(" Finding the ACPI path")]),t._v(" "),s("p",[t._v("Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from "),s("RouterLink",{attrs:{to:"/Manual/dump.html"}},[t._v("Dumping the DSDT")]),t._v(" and "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("Decompiling and Compiling")]),t._v(" with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an "),s("a",{attrs:{href:"https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl",target:"_blank",rel:"noopener noreferrer"}},[t._v("ACPI extension"),s("OutboundLink")],1),t._v(" that can also help).")],1),t._v(" "),s("p",[t._v("Next, search for the "),s("code",[t._v("Device (RHUB)")])]),t._v(" "),s("p",[t._v("You should get something like the following show up:")]),t._v(" "),s("p",[s("img",{attrs:{src:a(389),alt:""}})]),t._v(" "),s("p",[t._v("From the above, we can see that the full ACPI pathing for RHUB is "),s("code",[t._v("PCI0.XHC.RHUB")]),t._v(". If it's not as clear you can search for what those device paths are for your system:")]),t._v(" "),s("ul",[s("li",[t._v("Finding the PCI path:\n"),s("ul",[s("li",[t._v("Search "),s("code",[t._v("PNP0A08")]),t._v(" (If multiple show up, use the first one)")])])]),t._v(" "),s("li",[t._v("Finding XHCI path\n"),s("ul",[s("li",[t._v("Search for "),s("code",[t._v("XHC")]),t._v(", "),s("code",[t._v("XHCI")]),t._v(" and "),s("code",[t._v("XHC1")]),t._v(", and yours is whichever shows up.")])])])]),t._v(" "),s("p",[t._v("Now with the pathing, you can head here: "),s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),s("h2",{attrs:{id:"edits-to-the-sample-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("#")]),t._v(" Edits to the sample SSDT")]),t._v(" "),s("p",[t._v("Now that we have our ACPI path, lets grab our SSDT and get to work:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-RHUB.dsl",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-RHUB.dsl"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("By default, this uses "),s("code",[t._v("PCI0.XHC_.RHUB")]),t._v(" for the pathing. you'll want to rename accordingly.")]),t._v(" "),s("p",[t._v("Following the example from above, we'll be renaming it to "),s("code",[t._v("PCI0.XHC1.RHUB")]),t._v(":")]),t._v(" "),s("p",[s("strong",[t._v("Before")]),t._v(":")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("External (_SB_.PCI0.XHC_.RHUB, DeviceObj) <- Rename this\n\nScope (_SB.PCI0.XHC_.RHUB) <- Rename this\n")])])]),s("p",[s("img",{attrs:{src:a(390),alt:""}})]),t._v(" "),s("p",[t._v("Following the example pathing we found, the SSDT should look something like this:")]),t._v(" "),s("p",[s("strong",[t._v("After")]),t._v(":")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("External (_SB.PCI0.XHC1.RHUB, DeviceObj) <- Renamed\n\nScope (_SB.PCI0.XHC1.RHUB) <- Renamed\n")])])]),s("p",[s("img",{attrs:{src:a(391),alt:""}})]),t._v(" "),s("h2",{attrs:{id:"compiling-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#compiling-the-ssdt"}},[t._v("#")]),t._v(" Compiling the SSDT")]),t._v(" "),s("p",[t._v("With the SSDT done, you're now "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("ready to compile the SSDT!")])],1),t._v(" "),s("h2",{attrs:{id:"wrapping-up"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[t._v("#")]),t._v(" Wrapping up")]),t._v(" "),s("p",[t._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/cleanup.html"}},[s("strong",[t._v("Cleanup")])])],1)])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/11.9da31f2b.js b/assets/js/11.9da31f2b.js new file mode 100644 index 0000000..172d6b6 --- /dev/null +++ b/assets/js/11.9da31f2b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{332:function(t,e,n){},399:function(t,e,n){"use strict";var i=n(332);n.n(i).a},450:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(399),n(25)),a=Object(r.a)(i,void 0,void 0,!1,null,"15b7b770",null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/12.4021d140.js b/assets/js/12.4021d140.js new file mode 100644 index 0000000..4ac83e3 --- /dev/null +++ b/assets/js/12.4021d140.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{331:function(t,e,n){},398:function(t,e,n){"use strict";var a=n(331);n.n(a).a},449:function(t,e,n){"use strict";n.r(e);var a={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,a=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||a().default)}},i=(n(398),n(25)),r=Object(i.a)(a,void 0,void 0,!1,null,"766b3ac8",null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/13.8aab1973.js b/assets/js/13.8aab1973.js new file mode 100644 index 0000000..2b04210 --- /dev/null +++ b/assets/js/13.8aab1973.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{313:function(t,e,a){t.exports=a.p+"assets/img/nvidia.672e8e16.png"},328:function(t,e,a){t.exports=a.p+"assets/img/amd.acf5492b.png"},406:function(t,e,a){"use strict";a.r(e);var s=a(25),i=Object(s.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"disabling-desktops-unsupported-gpus-ssdt-gpu-disable"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#disabling-desktops-unsupported-gpus-ssdt-gpu-disable"}},[t._v("#")]),t._v(" Disabling desktops unsupported GPUs(SSDT-GPU-DISABLE)")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#what-this-ssdt-does"}},[t._v("What this SSDT does")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("Methods to make this SSDT")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#prebuilts"}},[t._v("Prebuilt")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#ssdttime"}},[t._v("SSDTTime")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#manual"}},[t._v("Manual")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[t._v("Finding the ACPI path")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[t._v("Compiling the SSDT")])])])])])])]),t._v(" "),s("p",[t._v("So this is mainly needed for GPUs that are not supported in macOS, mainly this will be Nvidia users who wish to pair an AMD GPU for macOS use. While WhateverGreen does support the boot-arg "),s("code",[t._v("-wegnoegpu")]),t._v(", this only works when running on iGPU so for the rest of us we'll need to make an SSDT.")]),t._v(" "),s("p",[t._v("So to disable a specific GPU, we need to find a couple things:")]),t._v(" "),s("ul",[s("li",[t._v("ACPI Path of the GPU")]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPU-DISABLE.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-GPU-DISABLE"),s("OutboundLink")],1)])]),t._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path-of-the-gpu"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path-of-the-gpu"}},[t._v("#")]),t._v(" Finding the ACPI Path of the GPU")]),t._v(" "),s("p",[t._v("To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:")]),t._v(" "),s("ul",[s("li",[t._v("Open Device Manager")]),t._v(" "),s("li",[t._v("Select Display Adapters, then right click your GPU and select Properties")]),t._v(" "),s("li",[t._v('Under the Details Tab, search for "Location Paths"\n'),s("ul",[s("li",[t._v('Note some GPUs may be hiding under "BIOS device name"')])])])]),t._v(" "),s("p",[s("img",{attrs:{src:a(328),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(313),alt:"Credit to 1Revenger1 for the image"}})]),t._v(" "),s("p",[t._v('The second "ACPI" is what we care about:')]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)\n")])])]),s("p",[t._v("Now converting this to an ACPI path is quite simple, remove the "),s("code",[t._v("#ACPI")]),t._v(" and "),s("code",[t._v("#PCI(0000)")]),t._v(":")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("`_SB_.PC02.BR2A.PEGP\n")])])]),s("p",[t._v("And voila! We've found our ACPI path, now that we have everything we're ready to get cooking")]),t._v(" "),s("h2",{attrs:{id:"making-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#making-the-ssdt"}},[t._v("#")]),t._v(" Making the SSDT")]),t._v(" "),s("p",[t._v("To start grab our "),s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPU-DISABLE.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-GPU-DISABLE"),s("OutboundLink")],1),t._v(" and open it up. Here there's a couple things to change:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("External (_SB_.PCI0.PEG0.PEGP, DeviceObj)\nMethod (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized)\n")])])]),s("p",[t._v("For our example, we'll change all mentions of :")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("PCI0")]),t._v(" with "),s("code",[t._v("PC02")])]),t._v(" "),s("li",[s("code",[t._v("PEG0")]),t._v(" with "),s("code",[t._v("BR2A")])])]),t._v(" "),s("p",[t._v("Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device, some users may also need to adapt "),s("code",[t._v("_SB_")]),t._v(" to their path")]),t._v(" "),s("h2",{attrs:{id:"now-you-re-ready-to-compile-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#now-you-re-ready-to-compile-the-ssdt"}},[t._v("#")]),t._v(" "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("Now you're ready to compile the SSDT!")])],1)])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/14.19390165.js b/assets/js/14.19390165.js new file mode 100644 index 0000000..3a2162f --- /dev/null +++ b/assets/js/14.19390165.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{368:function(a,e,i){a.exports=i.p+"assets/img/macos-compile.5b3bc6ad.png"},369:function(a,e,i){a.exports=i.p+"assets/img/windows-compile.62b90d74.png"},416:function(a,e,i){"use strict";i.r(e);var t=i(25),l=Object(t.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"compiling-and-decompiling-acpi-tables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#compiling-and-decompiling-acpi-tables"}},[a._v("#")]),a._v(" Compiling and decompiling ACPI Tables")]),a._v(" "),t("p",[a._v("See "),t("RouterLink",{attrs:{to:"/troubleshooting.html"}},[a._v("Troubleshooting")]),a._v(" if you have dumping/compiling errors")],1),a._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/Manual/compile.html#macos"}},[a._v("macOS Compiling and Decompiling")])],1),a._v(" "),t("li",[t("RouterLink",{attrs:{to:"/Manual/compile.html#windows"}},[a._v("Windows Compiling and Decompiling")])],1),a._v(" "),t("li",[t("RouterLink",{attrs:{to:"/Manual/compile.html#linux"}},[a._v("Linux Compiling and Decompiling")])],1)]),a._v(" "),t("h2",{attrs:{id:"macos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#macos"}},[a._v("#")]),a._v(" macOS")]),a._v(" "),t("p",[a._v("So compiling DSDTs and SSDTs are quite easy with macOS, all you need is "),t("a",{attrs:{href:"https://github.com/acidanthera/MaciASL/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("MaciASL"),t("OutboundLink")],1),a._v(". To compile, just "),t("code",[a._v("File -> SaveAs -> ACPI Machine Language Binary(.AML)")]),a._v(", decompiling is just opening the file in MaciASL.")]),a._v(" "),t("p",[a._v("For those who prefer the command line, grab "),t("a",{attrs:{href:"https://github.com/acidanthera/MaciASL/blob/master/Dist/iasl-stable",target:"_blank",rel:"noopener noreferrer"}},[a._v("iasl-stable"),t("OutboundLink")],1),a._v(" and run the following:")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("path/to/iasl.exe path/to/DSDT.aml\n")])])]),t("ul",[t("li",[a._v("If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.")])]),a._v(" "),t("p",[t("img",{attrs:{src:i(368),alt:""}})]),a._v(" "),t("h2",{attrs:{id:"windows"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#windows"}},[a._v("#")]),a._v(" Windows")]),a._v(" "),t("p",[a._v("Compiling and decompiling on windows is fairly simple though, you will need "),t("a",{attrs:{href:"https://acpica.org/downloads/binary-tools",target:"_blank",rel:"noopener noreferrer"}},[a._v("iasl.exe"),t("OutboundLink")],1),a._v(" and Command Prompt:")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("path/to/iasl.exe path/to/DSDT.aml\n")])])]),t("p",[t("img",{attrs:{src:i(369),alt:""}})]),a._v(" "),t("ul",[t("li",[a._v("If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.")])]),a._v(" "),t("h2",{attrs:{id:"linux"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linux"}},[a._v("#")]),a._v(" Linux")]),a._v(" "),t("p",[a._v("Compiling and decompiling with Linux is just as simple, you will need a copy of iasl. You can get it here ("),t("a",{attrs:{href:"http://amdosx.kellynet.nl/iasl.zip",target:"_blank",rel:"noopener noreferrer"}},[a._v("iasl"),t("OutboundLink")],1),a._v(") or through the "),t("code",[a._v("iasl")]),a._v(" package in your package manager. iasl can be used as such:")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("path/to/iasl path/to/DSDT.aml\n")])])]),t("ul",[t("li",[a._v("If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa.")])])])}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/15.0fe52b37.js b/assets/js/15.0fe52b37.js new file mode 100644 index 0000000..247c312 --- /dev/null +++ b/assets/js/15.0fe52b37.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{313:function(e,t,a){e.exports=a.p+"assets/img/nvidia.672e8e16.png"},328:function(e,t,a){e.exports=a.p+"assets/img/amd.acf5492b.png"},440:function(e,t,a){"use strict";a.r(t);var s=a(25),i=Object(s.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"renaming-gpus-ssdt-gpu-spoof"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#renaming-gpus-ssdt-gpu-spoof"}},[e._v("#")]),e._v(" Renaming GPUs (SSDT-GPU-SPOOF)")]),e._v(" "),s("p",[e._v("So this is mainly needed for GPUs that are not natively supported out of the box due to their names, most commonly:")]),e._v(" "),s("ul",[s("li",[e._v("R9 290/390")]),e._v(" "),s("li",[e._v("R9 280/380")]),e._v(" "),s("li",[e._v("R7 270/370")]),e._v(" "),s("li",[e._v("R9 260/360")]),e._v(" "),s("li",[e._v("R7 250")]),e._v(" "),s("li",[e._v("R7 240")])]),e._v(" "),s("p",[e._v('Instead, these GPUs need to be "spoofed" or faked into a model that closely matches theirs, generally this will be the "X" variant of the card. For some reason Apple never bothered adding the PCI IDs for these other cards even though their GPU cores are supported by the driver.')]),e._v(" "),s("p",[e._v("So to spoof the GPU, we need to find a couple things:")]),e._v(" "),s("ul",[s("li",[e._v("Suitable PCI ID for the GPU")]),e._v(" "),s("li",[e._v("ACPI Path of the GPU")]),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-GPU-SPOOF"),s("OutboundLink")],1)])]),e._v(" "),s("h2",{attrs:{id:"finding-a-suitable-pci-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-a-suitable-pci-id"}},[e._v("#")]),e._v(" Finding a suitable PCI ID")]),e._v(" "),s("p",[e._v("To find a suitable PCI ID, we'll be using "),s("a",{attrs:{href:"https://pci-ids.ucw.cz/read/PC/1002",target:"_blank",rel:"noopener noreferrer"}},[e._v("PCI ID Repository"),s("OutboundLink")],1),e._v(" which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the "),s("a",{attrs:{href:"https://dortania.github.io/GPU-Buyers-Guide/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPU Buyers Guide"),s("OutboundLink")],1),e._v(". The closest match to this GPU would be the 390X, and looking on that site near the top gives us this:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("Vendor 1002 -> Device 1002:67b0\n")])])]),s("p",[e._v("Now lets break this down into a device ID we can use:")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("1002")]),e._v(": The vendor ID, all AMD devices have this ID")]),e._v(" "),s("li",[s("code",[e._v("67B0")]),e._v(": The device ID, this is what we care about")])]),e._v(" "),s("p",[e._v("So how do we convert this to a fake ID? Well the format of a fake ID:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"device-id",\nBuffer (0x04)\n{\n 0xB0, 0x67, 0x00, 0x00\n},\n')])])]),s("p",[e._v("As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT")]),e._v(" "),s("p",[e._v("The specifics are due to "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Endianness",target:"_blank",rel:"noopener noreferrer"}},[e._v("Endianness"),s("OutboundLink")],1),e._v(" for those who are curious")]),e._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path-of-the-gpu"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path-of-the-gpu"}},[e._v("#")]),e._v(" Finding the ACPI Path of the GPU")]),e._v(" "),s("p",[e._v("To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:")]),e._v(" "),s("ul",[s("li",[e._v("Open Device Manager")]),e._v(" "),s("li",[e._v("Select Display Adapters, then right click your GPU and select Properties")]),e._v(" "),s("li",[e._v('Under the Details Tab, search for "Location Paths"\n'),s("ul",[s("li",[e._v('Note some GPUs may be hiding under "BIOS device name"')])])])]),e._v(" "),s("p",[s("img",{attrs:{src:a(328),alt:""}})]),e._v(" "),s("p",[s("img",{attrs:{src:a(313),alt:"Credit to 1Revenger1 for the image"}})]),e._v(" "),s("p",[e._v('The second "ACPI" is what we care about:')]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)\n")])])]),s("p",[e._v("Now converting this to an ACPI path is quite simple, remove the "),s("code",[e._v("#ACPI")]),e._v(" and "),s("code",[e._v("#PCI(0000)")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("`_SB_.PC02.BR2A.PEGP\n")])])]),s("p",[e._v("And voila! We've found our ACPI path, now that we have everything we're ready to get cooking")]),e._v(" "),s("h2",{attrs:{id:"making-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#making-the-ssdt"}},[e._v("#")]),e._v(" Making the SSDT")]),e._v(" "),s("p",[e._v("To start grab our "),s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-GPU-SPOOF"),s("OutboundLink")],1),e._v(" and open it up. Here there's a couple things to change:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0, DeviceObj)\nExternal (_SB_.PCI0.PEG0.PEGP, DeviceObj)\n")])])]),s("p",[e._v("For our example, we'll change all mentions of :")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("PCI0")]),e._v(" with "),s("code",[e._v("PC02")])]),e._v(" "),s("li",[s("code",[e._v("PEG0")]),e._v(" with "),s("code",[e._v("BR2A")])])]),e._v(" "),s("p",[e._v("Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device.")]),e._v(" "),s("p",[e._v("Now that the ACPI pathing is correct, we can finally apply our fake ID!!!")]),e._v(" "),s("p",[e._v("So the 2 parts we want to change:")]),e._v(" "),s("p",[s("strong",[e._v("device ID")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"device-id",\nBuffer (0x04)\n{\n 0xB0, 0x67, 0x00, 0x00\n},\n')])])]),s("p",[s("strong",[e._v("Model")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"model",\nBuffer ()\n{\n "AMD Radeon R9 390"\n}\n')])])]),s("p",[s("code",[e._v('"device-id"')]),e._v(' will be set to our PCI ID that we found in "Finding a suitable PCI ID" and '),s("code",[e._v('"model"')]),e._v(" is mainly cosmetic")]),e._v(" "),s("h2",{attrs:{id:"now-you-re-ready-to-compile-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#now-you-re-ready-to-compile-the-ssdt"}},[e._v("#")]),e._v(" "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("Now you're ready to compile the SSDT!")])],1)])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/16.93d5f9da.js b/assets/js/16.93d5f9da.js new file mode 100644 index 0000000..d3a3b4b --- /dev/null +++ b/assets/js/16.93d5f9da.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{313:function(e,t,a){e.exports=a.p+"assets/img/nvidia.672e8e16.png"},411:function(e,t,a){"use strict";a.r(t);var s=a(25),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"disabling-laptop-dgpus-ssdt-dgpu-off-nohybgfx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#disabling-laptop-dgpus-ssdt-dgpu-off-nohybgfx"}},[e._v("#")]),e._v(" Disabling laptop dGPUs (SSDT-dGPU-Off/NoHybGfx)")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#what-this-ssdt-does"}},[e._v("What this SSDT does")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[e._v("Methods to make this SSDT")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#prebuilts"}},[e._v("Prebuilt")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#ssdttime"}},[e._v("SSDTTime")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#manual"}},[e._v("Manual")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[e._v("Finding the ACPI path")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[e._v("Compiling the SSDT")])])])])])])]),e._v(" "),s("p",[e._v("So with laptops, we can hide the dGPU from macOS with the little boot-arg called "),s("code",[e._v("-wegnoegpu")]),e._v(" from WhateverGreen. But one small problem, the dGPU is still pulling power draining your battery slowly. We'll be going over 2 methods for disabling the dGPU in a laptop:")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/Laptops/laptop-disable.html#optimus-method"}},[e._v("Optimus Method")])],1),e._v(" "),s("li",[s("RouterLink",{attrs:{to:"/Laptops/laptop-disable.html#bumblebee-method"}},[e._v("Bumblebee Method")])],1)]),e._v(" "),s("p",[e._v("Note that this is not needed for install, but recommended for post-install")]),e._v(" "),s("h2",{attrs:{id:"optimus-method"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#optimus-method"}},[e._v("#")]),e._v(" Optimus Method")]),e._v(" "),s("p",[e._v("How this works is that we call the "),s("code",[e._v(".off")]),e._v(" method found on Optimus GPUs, this is the expected way to power off a GPU but some may find their dGPU will power back up later on. Mainly seen in Lenovo's, the Optimus method should work for most users:")]),e._v(" "),s("p",[e._v("To start, grab "),s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-dGPU-Off.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-dGPU-Off.dsl"),s("OutboundLink")],1)]),e._v(" "),s("p",[e._v("Next we need to get on Windows, and head to the following:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name\n")])])]),s("ul",[s("li",[e._v('Note some GPUs may be hiding under "BIOS device name"')])]),e._v(" "),s("p",[e._v("This should provided you with an ACPI path for your dGPU, most commonly:")]),e._v(" "),s("ul",[s("li",[e._v("Nvidia dGPU: "),s("code",[e._v("\\_SB.PCI0.PEG0.PEGP")])]),e._v(" "),s("li",[e._v("AMD dGPU: "),s("code",[e._v("\\_SB.PCI0.PEGP.DGFX")])])]),e._v(" "),s("p",[s("img",{attrs:{src:a(313),alt:"Credit to 1Revenger1 for the image"}})]),e._v(" "),s("p",[e._v("Now with that, we'll need to change the ACPI path in the SSDT. Main sections:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External(_SB.PCI0.PEG0.PEGP._OFF, MethodObj)\n")])])]),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("If (CondRefOf(\\_SB.PCI0.PEG0.PEGP._OFF)) { \\_SB.PCI0.PEG0.PEGP._OFF() }\n")])])]),s("p",[e._v("Once adapted to your config, head to the compile section")]),e._v(" "),s("ul",[s("li",[e._v("For those with sleep issues, you can refer to the original "),s("a",{attrs:{href:"https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Rehabman thread"),s("OutboundLink")],1)])]),e._v(" "),s("h2",{attrs:{id:"bumblebee-method"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bumblebee-method"}},[e._v("#")]),e._v(" Bumblebee Method")]),e._v(" "),s("p",[e._v("With some machines, the simple "),s("code",[e._v(".off")]),e._v(" call won't keep the card off properly, that's where the Bumblebee method comes in. This SSDT will actually send the dGPU into D3 state being the lowest power state a device can support. Credit to Mameo for the original adaptation.")]),e._v(" "),s("p",[e._v("To start, grab "),s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-NoHybGfx.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-NoHybGfx.dsl"),s("OutboundLink")],1)]),e._v(" "),s("p",[e._v("Next we need to get on Windows, and head to the following:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name\n")])])]),s("p",[e._v("This should provided you with an ACPI path for your dGPU, most commonly:")]),e._v(" "),s("ul",[s("li",[e._v("Nvidia dGPU: "),s("code",[e._v("\\_SB.PCI0.PEG0.PEGP")])]),e._v(" "),s("li",[e._v("AMD dGPU: "),s("code",[e._v("\\_SB.PCI0.PEGP.DGFX")])])]),e._v(" "),s("p",[e._v("Now with that, we'll need to change the ACPI path in the SSDT. Main sections:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0.PEG0.PEGP._DSM, MethodObj) // dGPU ACPI Path\nExternal (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj) // dGPU ACPI Path\n")])])]),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("If ((CondRefOf (\\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\\_SB.PCI0.PEG0.PEGP._PS3)))\n")])])]),s("div",{staticClass:"language-text extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v(' // Card Off Request\n \\_SB.PCI0.PEG0.PEGP._DSM (ToUUID ("a486d8f8-0bda-471b-a72b-6042a6b5bee0"), 0x0100, 0x1A, Buffer (0x04)\n')])])]),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v(" // Card Off\n\\_SB.PCI0.PEG0.PEGP._PS3 ()\n")])])]),s("p",[e._v("Once adapted to your config, head to the compile section")]),e._v(" "),s("h2",{attrs:{id:"now-you-re-ready-to-compile-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#now-you-re-ready-to-compile-the-ssdt"}},[e._v("#")]),e._v(" "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("Now you're ready to compile the SSDT!")])],1)])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/17.cf39e23d.js b/assets/js/17.cf39e23d.js new file mode 100644 index 0000000..1edc3fc --- /dev/null +++ b/assets/js/17.cf39e23d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{370:function(e,t,o){e.exports=o.p+"assets/img/sysreport.8d1d1d0e.png"},417:function(e,t,o){"use strict";o.r(t);var r=o(25),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"getting-a-copy-of-our-dsdt"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#getting-a-copy-of-our-dsdt"}},[e._v("#")]),e._v(" Getting a copy of our DSDT")]),e._v(" "),r("p",[e._v("So to start, we'll need to get a copy of your DSDT from your firmware. The easiest way is grabbing the DSDT.aml SSDTTime dumped for us earlier but here are some other options:")]),e._v(" "),r("h2",{attrs:{id:"from-windows"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#from-windows"}},[e._v("#")]),e._v(" From Windows")]),e._v(" "),r("ul",[r("li",[r("p",[r("a",{attrs:{href:"https://github.com/corpnewt/SSDTTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDTTime"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v("Supports both Windows and Linux for DSDT dumping")]),e._v(" "),r("li",[r("code",[e._v("4. Dump DSDT - Automatically dump the system DSDT")])])])]),e._v(" "),r("li",[r("p",[r("a",{attrs:{href:"https://acpica.org/downloads/binary-tools",target:"_blank",rel:"noopener noreferrer"}},[e._v("acpidump.exe"),r("OutboundLink")],1)]),e._v(" "),r("ul",[r("li",[e._v("In command prompt run "),r("code",[e._v("path/to/acpidump.exe -b -n DSDT -z")]),e._v(", this will dump your DSDT as a .dat file. Rename this to DSDT.aml")])])]),e._v(" "),r("li",[r("p",[e._v("Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT with the above 2 methods")])])]),e._v(" "),r("h2",{attrs:{id:"from-linux"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#from-linux"}},[e._v("#")]),e._v(" From Linux")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/corpnewt/SSDTTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDTTime"),r("OutboundLink")],1),e._v(" "),r("ul",[r("li",[e._v("Supports both Windows and Linux for DSDT dumping")]),e._v(" "),r("li",[r("code",[e._v("4. Dump DSDT - Automatically dump the system DSDT")])])])]),e._v(" "),r("li",[e._v("Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT with the above method")])]),e._v(" "),r("h2",{attrs:{id:"from-clover"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#from-clover"}},[e._v("#")]),e._v(" From Clover")]),e._v(" "),r("p",[e._v("For those with Clover installed previously, this is a simple way to get your ACPI tables:")]),e._v(" "),r("ul",[r("li",[e._v("F4 in Clover Boot menu\n"),r("ul",[r("li",[e._v("DSDT can be found in "),r("code",[e._v("EFI/CLOVER/ACPI/origin")]),e._v(", the folder "),r("strong",[e._v("must")]),e._v(" exist before dumping")])])])]),e._v(" "),r("h2",{attrs:{id:"from-opencore"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#from-opencore"}},[e._v("#")]),e._v(" From OpenCore")]),e._v(" "),r("p",[e._v("With OpenCore, we have 2 options:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#sysreport-quirk"}},[e._v("SysReport Quirk")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#uefi-shell"}},[e._v("UEFI Shell")])])]),e._v(" "),r("h3",{attrs:{id:"sysreport-quirk"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sysreport-quirk"}},[e._v("#")]),e._v(" SysReport Quirk")]),e._v(" "),r("p",[e._v("With OpenCore 0.5.9, we have a new quirk called SysReport which will actually dump our DSDT automatically when hitting the boot screen. The main issues are:")]),e._v(" "),r("ul",[r("li",[e._v("You already need a bootable OpenCore USB to get this dump")]),e._v(" "),r("li",[e._v("This also requires a DEBUG version of 0.5.9")])]),e._v(" "),r("p",[e._v("For the latter, you just need to replace the following files with "),r("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("DEBUG version"),r("OutboundLink")],1),e._v(":")]),e._v(" "),r("ul",[r("li",[e._v("EFI/BOOT/\n"),r("ul",[r("li",[r("code",[e._v("BOOTx64.efi")])])])]),e._v(" "),r("li",[e._v("EFI/OC/Bootstrap/\n"),r("ul",[r("li",[r("code",[e._v("Bootstrap.efi")])])])]),e._v(" "),r("li",[e._v("EFI/OC/Drivers/\n"),r("ul",[r("li",[r("code",[e._v("OpenRuntime.efi")])])])]),e._v(" "),r("li",[e._v("EFI/OC/\n"),r("ul",[r("li",[r("code",[e._v("OpenCore.efi")])])])])]),e._v(" "),r("p",[e._v("For the former, you can actually skip the ACPI section, return to the "),r("a",{attrs:{href:"https://dortania.github.io/OpenCore-Install-Guide/",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenCore guide"),r("OutboundLink")],1),e._v(" and finish making the USB. Once booted to the picker, you can shut off the PC and check your USB:")]),e._v(" "),r("p",[r("img",{attrs:{src:o(370),alt:""}})]),e._v(" "),r("p",[e._v("And voila! You have a DSDT! Now you can continue on with making SSDTs")]),e._v(" "),r("h3",{attrs:{id:"uefi-shell"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#uefi-shell"}},[e._v("#")]),e._v(" UEFI Shell")]),e._v(" "),r("p",[e._v("For this, we'll want ti grab "),r("a",{attrs:{href:"https://github.com/dortania/OpenCore-Install-Guide/tree/master/extra-files/acpidump.efi.zip",target:"_blank",rel:"noopener noreferrer"}},[r("code",[e._v("acpidump.efi")]),r("OutboundLink")],1),e._v(" and add this to "),r("code",[e._v("EFI/OC/Tools")]),e._v(" and in your config under "),r("code",[e._v("Misc -> Tools")]),e._v(" with the argument: "),r("code",[e._v("-b -n DSDT -z")]),e._v(" and select this option in OpenCore's picker.")]),e._v(" "),r("p",[e._v("If OpenCore is having issues running acpidump.efi from the boot picker, you can call it from the shell with "),r("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenShell"),r("OutboundLink")],1),e._v("(reminder to add to both "),r("code",[e._v("EFI/OC/Tools")]),e._v(" and in your config under "),r("code",[e._v("Misc -> Tools")]),e._v(" ):")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("shell> fs0: // replace with proper drive\nfs0:\\> dir // to verify this is the right directory\n Directory of fs0:\\\n 01/01/01 3:30p EFI\nfs0:\\> cd EFI\\OC\\Tools\nfs0:\\EFI\\OC\\Tools> acpidump.efi -b -n DSDT -z\t\t\n")])])]),r("p",[e._v("Once done, you should find your DSDT in the EFI/OC/Tools folder with a "),r("code",[e._v(".dat")]),e._v(" extension. Rename this DSDT.dat file to DSDT.aml to help us down the line")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/18.8f16e3a6.js b/assets/js/18.8f16e3a6.js new file mode 100644 index 0000000..987ca1b --- /dev/null +++ b/assets/js/18.8f16e3a6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{397:function(e,t,o){e.exports=o.p+"assets/img/ssdttime.54f2ba0d.png"},442:function(e,t,o){"use strict";o.r(t);var r=o(25),i=Object(r.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"ssdts-the-easy-way"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ssdts-the-easy-way"}},[e._v("#")]),e._v(" SSDTs: The easy way")]),e._v(" "),r("p",[e._v("So here we'll be using a super simple tool made by CorpNewt: "),r("a",{attrs:{href:"https://github.com/corpnewt/SSDTTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDTTime"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v("What this tool does is, it dumps your DSDT from your firmware, and then creates SSDTs based off your DSDT. "),r("strong",[e._v("This must be done on the target machine running either Windows or Linux")])]),e._v(" "),r("h2",{attrs:{id:"so-what-can-t-ssdttime-do"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#so-what-can-t-ssdttime-do"}},[e._v("#")]),e._v(" So what "),r("strong",[e._v("CAN'T")]),e._v(" SSDTTime do")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("HEDT SSDTs")]),e._v(":\n"),r("ul",[r("li",[e._v("The ACPI is odd on these platforms so manual work is required")]),e._v(" "),r("li",[e._v("This includes X79, X99 and X299 systems")]),e._v(" "),r("li",[e._v("Prebuilt can be found here: "),r("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[e._v("Embedded Controller")])],1)])]),e._v(" "),r("li",[r("strong",[e._v("Laptop EC fix")]),e._v(":\n"),r("ul",[r("li",[e._v("This is because you do not want the EC powered off")]),e._v(" "),r("li",[e._v("Prebuilt can be found here: "),r("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[e._v("Embedded Controller")])],1)])]),e._v(" "),r("li",[r("strong",[e._v("SSDT-PNLF")]),e._v(":\n"),r("ul",[r("li",[e._v("Need to be configured to your system")])])]),e._v(" "),r("li",[r("strong",[e._v("SSDT-GPI0")]),e._v(":\n"),r("ul",[r("li",[e._v("Need to be configured to your system")])])]),e._v(" "),r("li",[r("strong",[e._v("AWAC and RTC0 SSDTs")]),e._v(":\n"),r("ul",[r("li",[e._v("300 series Intel boards will also need to figure this out (Z390 systems are most common for requiring this but some Gigabyte Z370 do as well)")])])]),e._v(" "),r("li",[r("strong",[e._v("PMC SSDT")]),e._v(":\n"),r("ul",[r("li",[e._v("For fixing 300 series Intel NVRAM")]),e._v(" "),r("li",[e._v("Prebuilt can be found here: "),r("RouterLink",{attrs:{to:"/Universal/nvram.html"}},[e._v("NVRAM PMC")])],1)])]),e._v(" "),r("li",[r("strong",[e._v("USBX SSDT")]),e._v(":\n"),r("ul",[r("li",[e._v("This is included on sample SSDTs but SSDTTime only makes the SSDT-EC part, Skylake and newer users can grab a pre-built here: "),r("a",{attrs:{href:"https://github.com/dortania/USB-Map-Guide/blob/master/extra-files/SSDT-USBX.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-USBX.aml"),r("OutboundLink")],1)])])]),e._v(" "),r("li",[r("strong",[e._v("RHUB SSDT")]),e._v(":\n"),r("ul",[r("li",[e._v("if you have a 10th gen CPU, you'll need to either use the prebuilt or manually create it.")])])])]),e._v(" "),r("p",[e._v('For users who don\'t have all the options available to them in SSDTTime, you can follow the "SSDTs: The long way" section. You can still use SSDTTime for SSDTs it does support.')]),e._v(" "),r("h2",{attrs:{id:"running-ssdttime"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#running-ssdttime"}},[e._v("#")]),e._v(" Running SSDTTime")]),e._v(" "),r("p",[e._v("Run the "),r("code",[e._v("SSDTTime.bat")]),e._v(" file as Admin on the target machine and you should see something like this:")]),e._v(" "),r("p",[r("img",{attrs:{src:o(397),alt:""}})]),e._v(" "),r("p",[e._v("What are all these options?:")]),e._v(" "),r("ul",[r("li",[r("code",[e._v("1. FixHPET - Patch out IRQ Conflicts")]),e._v(" "),r("ul",[r("li",[e._v("IRQ patching, mainly needed for X79, X99 and laptop users(use option "),r("code",[e._v("C")]),e._v(" to omit conflicting legacy IRQs)")])])]),e._v(" "),r("li",[r("code",[e._v("2. FakeEC - OS-aware Fake EC")]),e._v(" "),r("ul",[r("li",[e._v("This is the SSDT-EC, required for Catalina users")])])]),e._v(" "),r("li",[r("code",[e._v("3. PluginType - Sets plugin-type = 1 on CPU0/PR00")]),e._v(" "),r("ul",[r("li",[e._v("This is the SSDT-PLUG, for Intel only")])])]),e._v(" "),r("li",[r("code",[e._v("4. Dump DSDT - Automatically dump the system DSDT")]),e._v(" "),r("ul",[r("li",[e._v("Dumps your DSDT from your firmware")])])])]),e._v(" "),r("p",[e._v("What we want to do is select option "),r("code",[e._v("4. Dump DSDT")]),e._v(" first, then select the appropriate option(s) for your system.")]),e._v(" "),r("blockquote",[r("p",[e._v("What about USBX?")])]),e._v(" "),r("p",[e._v("For Skylake and newer plus AMD, you can grab a pre-built file here: "),r("a",{attrs:{href:"https://github.com/dortania/USB-Map-Guide/blob/master/extra-files/SSDT-USBX.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-USBX.aml"),r("OutboundLink")],1),e._v(". This file is plug and play and requires no device configuration, "),r("strong",[e._v("do not use on Broadwell and older")]),e._v(".")]),e._v(" "),r("p",[r("strong",[e._v("Troubleshooting note")]),e._v(": See "),r("a",{attrs:{href:"https://dortania.github.io/OpenCore-Install-Guide/troubleshooting/troubleshooting.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("General Troubleshooting"),r("OutboundLink")],1),e._v(" if you're having issues running SSDTTime")]),e._v(" "),r("h2",{attrs:{id:"adding-to-opencore"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#adding-to-opencore"}},[e._v("#")]),e._v(" Adding to OpenCore")]),e._v(" "),r("p",[e._v("Don't forget that SSDTs need to be added to Opencore, reminder that .aml is complied, .dsl is code. "),r("strong",[e._v("Add only the .aml file")]),e._v(":")]),e._v(" "),r("ul",[r("li",[e._v("EFI/OC/ACPI")]),e._v(" "),r("li",[e._v("config.plist -> ACPI -> Add")])]),e._v(" "),r("p",[e._v("Reminder that Cmd/Crtl+R with ProperTree pointed at your OC folder will add all your SSDTs, kexts and .efi drivers to the config for you. "),r("strong",[e._v("Do not add your DSDT to OpenCore, its already in your firmware")]),e._v(". If you are unsure what this is referring to, go back to the OpenCore guide and select your config based of the architecture of your CPU.")]),e._v(" "),r("p",[e._v("For those who do not yet have a config.plist, you'll want to next head back to your respective OpenCore guides and create the config.plist:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://dortania.github.io/OpenCore-Install-Guide/",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenCore Install guide"),r("OutboundLink")],1)])]),e._v(" "),r("p",[e._v("Users of "),r("code",[e._v("FixHPET")]),e._v(" will also need to merge oc_patches.plist into their config.plist")]),e._v(" "),r("p",[e._v("Steps to do this:")]),e._v(" "),r("ul",[r("li",[e._v("Open both files,")]),e._v(" "),r("li",[e._v("Delete the "),r("code",[e._v("ACPI -> Patch")]),e._v(" section from config.plist")]),e._v(" "),r("li",[e._v("Copy the "),r("code",[e._v("ACPI -> Patch")]),e._v(" section from patches.plist")]),e._v(" "),r("li",[e._v("Paste into where old patches were in config.plist")])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/19.48e1648f.js b/assets/js/19.48e1648f.js new file mode 100644 index 0000000..8010819 --- /dev/null +++ b/assets/js/19.48e1648f.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{403:function(t,s,n){"use strict";n.r(s);var e={data:function(){return{msg:"Hello this is "}}},i=n(25),a=Object(i.a)(e,(function(){var t=this.$createElement;return(this._self._c||t)("p",{staticClass:"demo"},[this._v("\n "+this._s(this.msg)+"\n")])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/2.83c34eea.js b/assets/js/2.83c34eea.js new file mode 100644 index 0000000..2e9c778 --- /dev/null +++ b/assets/js/2.83c34eea.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{312:function(t,e,n){"use strict";n.d(e,"d",(function(){return i})),n.d(e,"a",(function(){return a})),n.d(e,"i",(function(){return s})),n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return c})),n.d(e,"b",(function(){return h})),n.d(e,"e",(function(){return f})),n.d(e,"k",(function(){return p})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return v})),n.d(e,"j",(function(){return m}));n(26),n(103),n(169),n(98),n(174),n(68),n(44),n(314),n(69),n(333),n(106);var i=/#.*$/,r=/\.(md|html)$/,a=/\/$/,s=/^[a-z]+:/i;function o(t){return decodeURI(t).replace(i,"").replace(r,"")}function u(t){return s.test(t)}function l(t){return/^mailto:/.test(t)}function c(t){return/^tel:/.test(t)}function h(t){if(u(t))return t;var e=t.match(i),n=e?e[0]:"",r=o(t);return a.test(r)?t:r+".html"+n}function f(t,e){var n=decodeURIComponent(t.hash),r=function(t){var e=t.match(i);if(e)return e[0]}(e);return(!r||n===r)&&o(t.path)===o(e)}function p(t,e,n){if(u(e))return{type:"external",path:e};n&&(e=function(t,e,n){var i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;var r=e.split("/");n&&r[r.length-1]||r.pop();for(var a=t.replace(/^\//,"").split("/"),s=0;s3&&void 0!==arguments[3]?arguments[3]:1;if("string"==typeof e)return p(n,e,i);if(Array.isArray(e))return Object.assign(p(n,e[0],i),{title:e[1]});var a=e.children||[];return 0===a.length&&e.path?Object.assign(p(n,e.path,i),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:a.map((function(e){return t(e,n,i,r+1)})),collapsable:!1!==e.collapsable}}(t,r,l)})):[]}return[]}function g(t){var e=v(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map((function(e){return{type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}}))}]}function v(t){var e;return(t=t.map((function(t){return Object.assign({},t)}))).forEach((function(t){2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)})),t.filter((function(t){return 2===t.level}))}function m(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},314:function(t,e,n){"use strict";var i=n(171),r=n(7),a=n(13),s=n(20),o=n(172),u=n(173);i("match",1,(function(t,e,n){return[function(e){var n=s(this),i=null==e?void 0:e[t];return void 0!==i?i.call(e,n):new RegExp(e)[t](String(n))},function(t){var i=n(e,t,this);if(i.done)return i.value;var s=r(t),l=String(this);if(!s.global)return u(s,l);var c=s.unicode;s.lastIndex=0;for(var h,f=[],p=0;null!==(h=u(s,l));){var d=String(h[0]);f[p]=d,""===d&&(s.lastIndex=o(l,a(s.lastIndex),c)),p++}return 0===p?null:f}]}))},315:function(t,e,n){},316:function(t,e,n){},317:function(t,e,n){},318:function(t,e,n){},319:function(t,e,n){},320:function(t,e,n){},321:function(t,e,n){},322:function(t,e,n){},323:function(t,e,n){},324:function(t,e,n){},325:function(t,e,n){},326:function(t,e,n){},327:function(t,e,n){},333:function(t,e,n){"use strict";var i=n(171),r=n(170),a=n(7),s=n(20),o=n(101),u=n(172),l=n(13),c=n(173),h=n(71),f=n(1),p=[].push,d=Math.min,g=!f((function(){return!RegExp(4294967295,"y")}));i("split",2,(function(t,e,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var i=String(s(this)),a=void 0===n?4294967295:n>>>0;if(0===a)return[];if(void 0===t)return[i];if(!r(t))return e.call(i,t,a);for(var o,u,l,c=[],f=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,g=new RegExp(t.source,f+"g");(o=h.call(g,i))&&!((u=g.lastIndex)>d&&(c.push(i.slice(d,o.index)),o.length>1&&o.index=a));)g.lastIndex===o.index&&g.lastIndex++;return d===i.length?!l&&g.test("")||c.push(""):c.push(i.slice(d)),c.length>a?c.slice(0,a):c}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var r=s(this),a=null==e?void 0:e[t];return void 0!==a?a.call(e,r,n):i.call(String(r),e,n)},function(t,r){var s=n(i,t,this,r,i!==e);if(s.done)return s.value;var h=a(t),f=String(this),p=o(h,RegExp),v=h.unicode,m=(h.ignoreCase?"i":"")+(h.multiline?"m":"")+(h.unicode?"u":"")+(g?"y":"g"),b=new p(g?h:"^(?:"+h.source+")",m),k=void 0===r?4294967295:r>>>0;if(0===k)return[];if(0===f.length)return null===c(b,f)?[f]:[];for(var _=0,x=0,C=[];x-1)&&(e=e.replace(/y/g,""));var o=s(x?new m(t,e):m(t,e),i?this:b,$);return C&&n&&d(o,{sticky:n}),o},y=function(t){t in $||o($,t,{configurable:!0,get:function(){return m[t]},set:function(e){m[t]=e}})},L=u(m),w=0;L.length>w;)y(L[w++]);b.constructor=$,$.prototype=b,f(r,"RegExp",$)}g("RegExp")},336:function(t,e){t.exports=function(t){return null==t}},337:function(t,e,n){"use strict";n.r(e);n(168);var i=n(312),r={name:"SidebarGroup",components:{DropdownTransition:n(338).a},props:["item","open","collapsable","depth"],beforeCreate:function(){this.$options.components.SidebarLinks=n(337).default},methods:{isActive:i.e}},a=(n(357),n(25)),s=Object(a.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?n("RouterLink",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):n("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),n("DropdownTransition",[t.open||!t.collapsable?n("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null).exports;n(358),n(68);function o(t,e,n,i,r){var a={props:{to:e,activeClass:"",exactActiveClass:""},class:{active:i,"sidebar-link":!0}};return r>2&&(a.style={"padding-left":r+"rem"}),t("RouterLink",a,n)}function u(t,e,n,r,a){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return!e||s>a?null:t("ul",{class:"sidebar-sub-headers"},e.map((function(e){var l=Object(i.e)(r,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[o(t,n+"#"+e.slug,e.title,l,e.level-1),u(t,e.children,n,r,a,s+1)])})))}var l={functional:!0,props:["item","sidebarDepth"],render:function(t,e){var n=e.parent,r=n.$page,a=(n.$site,n.$route),s=n.$themeConfig,l=n.$themeLocaleConfig,c=e.props,h=c.item,f=c.sidebarDepth,p=Object(i.e)(a,h.path),d="auto"===h.type?p||h.children.some((function(t){return Object(i.e)(a,h.basePath+"#"+t.slug)})):p,g="external"===h.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,h.path,h.title||h.path):o(t,h.path,h.title||h.path,d),v=[r.frontmatter.sidebarDepth,f,l.sidebarDepth,s.sidebarDepth,1].find((function(t){return void 0!==t})),m=l.displayAllHeaders||s.displayAllHeaders;return"auto"===h.type?[g,u(t,h.children,h.basePath,a,v)]:(d||m)&&h.headers&&!i.d.test(h.path)?[g,u(t,Object(i.c)(h.headers),h.path,a,v)]:g}};n(359);function c(t,e){return"group"===e.type&&e.children.some((function(e){return"group"===e.type?c(t,e):"page"===e.type&&Object(i.e)(t,e.path)}))}var h={name:"SidebarLinks",components:{SidebarGroup:s,SidebarLink:Object(a.a)(l,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth"],data:function(){return{openGroupIndex:0}},watch:{$route:function(){this.refreshIndex()}},created:function(){this.refreshIndex()},methods:{refreshIndex:function(){var t=function(t,e){for(var n=0;n-1&&(this.openGroupIndex=t)},toggleGroup:function(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive:function(t){return Object(i.e)(this.$route,t.regularPath)}}},f=Object(a.a)(h,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.items.length?n("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(e,i){return n("li",{key:i},["group"===e.type?n("SidebarGroup",{attrs:{item:e,open:i===t.openGroupIndex,collapsable:e.collapsable||e.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(i)}}}):n("SidebarLink",{attrs:{"sidebar-depth":t.sidebarDepth,item:e}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=f.exports},338:function(t,e,n){"use strict";var i={name:"DropdownTransition",methods:{setHeight:function(t){t.style.height=t.scrollHeight+"px"},unsetHeight:function(t){t.style.height=""}}},r=(n(349),n(25)),a=Object(r.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.a=a.exports},339:function(t,e,n){"use strict";var i=n(0),r=n(340);i({target:"String",proto:!0,forced:n(341)("link")},{link:function(t){return r(this,"a","href",t)}})},340:function(t,e,n){var i=n(20),r=/"/g;t.exports=function(t,e,n,a){var s=String(i(t)),o="<"+e;return""!==n&&(o+=" "+n+'="'+String(a).replace(r,""")+'"'),o+">"+s+""}},341:function(t,e,n){var i=n(1);t.exports=function(t){return i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},342:function(t,e,n){"use strict";var i=n(315);n.n(i).a},343:function(t,e,n){var i=n(0),r=n(344);i({global:!0,forced:parseInt!=r},{parseInt:r})},344:function(t,e,n){var i=n(2),r=n(175).trim,a=n(176),s=i.parseInt,o=/^[+-]?0[Xx]/,u=8!==s(a+"08")||22!==s(a+"0x16");t.exports=u?function(t,e){var n=r(String(t));return s(n,e>>>0||(o.test(n)?16:10))}:s},345:function(t,e,n){var i=n(1),r=n(176);t.exports=function(t){return i((function(){return!!r[t]()||"​…᠎"!="​…᠎"[t]()||r[t].name!==t}))}},346:function(t,e,n){"use strict";var i,r=n(0),a=n(22).f,s=n(13),o=n(104),u=n(20),l=n(105),c=n(21),h="".endsWith,f=Math.min,p=l("endsWith");r({target:"String",proto:!0,forced:!!(c||p||(i=a(String.prototype,"endsWith"),!i||i.writable))&&!p},{endsWith:function(t){var e=String(u(this));o(t);var n=arguments.length>1?arguments[1]:void 0,i=s(e.length),r=void 0===n?i:f(s(n),i),a=String(t);return h?h.call(e,a,r):e.slice(r-a.length,r)===a}})},347:function(t,e,n){"use strict";var i=n(316);n.n(i).a},348:function(t,e,n){"use strict";var i=n(317);n.n(i).a},349:function(t,e,n){"use strict";var i=n(318);n.n(i).a},350:function(t,e,n){"use strict";var i=n(319);n.n(i).a},351:function(t,e,n){"use strict";var i=n(320);n.n(i).a},352:function(t,e,n){"use strict";var i=n(321);n.n(i).a},353:function(t,e,n){"use strict";var i=n(322);n.n(i).a},354:function(t,e,n){var i=n(32),r=n(14),a=n(27);t.exports=function(t){return"string"==typeof t||!r(t)&&a(t)&&"[object String]"==i(t)}},355:function(t,e,n){"use strict";var i=n(323);n.n(i).a},356:function(t,e,n){"use strict";var i=n(324);n.n(i).a},357:function(t,e,n){"use strict";var i=n(325);n.n(i).a},358:function(t,e,n){"use strict";var i=n(0),r=n(31).find,a=n(100),s=n(18),o=!0,u=s("find");"find"in[]&&Array(1).find((function(){o=!1})),i({target:"Array",proto:!0,forced:o||!u},{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),a("find")},359:function(t,e,n){"use strict";var i=n(326);n.n(i).a},360:function(t,e,n){"use strict";var i=n(327);n.n(i).a},400:function(t,e,n){"use strict";n.r(e);n(168),n(97),n(339);var i=n(312),r={name:"NavLink",props:{item:{required:!0}},computed:{link:function(){return Object(i.b)(this.item.link)},exact:function(){var t=this;return this.$site.locales?Object.keys(this.$site.locales).some((function(e){return e===t.link})):"/"===this.link},isNonHttpURI:function(){return Object(i.g)(this.link)||Object(i.h)(this.link)},isBlankTarget:function(){return"_blank"===this.target},isInternal:function(){return!Object(i.f)(this.link)&&!this.isBlankTarget},target:function(){return this.isNonHttpURI?null:this.item.target?this.item.target:Object(i.f)(this.link)?"_blank":""},rel:function(){return this.isNonHttpURI?null:this.item.rel?this.item.rel:this.isBlankTarget?"noopener noreferrer":""}},methods:{focusoutAction:function(){this.$emit("focusout")}}},a=n(25),s=Object(a.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isInternal?n("RouterLink",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction(e)}}},[t._v("\n "+t._s(t.item.text)+"\n")]):n("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.target,rel:t.rel},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),t.isBlankTarget?n("OutboundLink"):t._e()],1)}),[],!1,null,null,null).exports,o={name:"Home",components:{NavLink:s},computed:{data:function(){return this.$page.frontmatter},actionLink:function(){return{link:this.data.actionLink,text:this.data.actionText}}}},u=(n(342),Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("main",{staticClass:"home",attrs:{"aria-labelledby":"main-title"}},[n("header",{staticClass:"hero"},[t.data.heroImage?n("img",{attrs:{src:t.$withBase(t.data.heroImage),alt:t.data.heroAlt||"hero"}}):t._e(),t._v(" "),null!==t.data.heroText?n("h1",{attrs:{id:"main-title"}},[t._v("\n "+t._s(t.data.heroText||t.$title||"Hello")+"\n ")]):t._e(),t._v(" "),null!==t.data.tagline?n("p",{staticClass:"description"},[t._v("\n "+t._s(t.data.tagline||t.$description||"Welcome to your VuePress site")+"\n ")]):t._e(),t._v(" "),t.data.actionText&&t.data.actionLink?n("p",{staticClass:"action"},[n("NavLink",{staticClass:"action-button",attrs:{item:t.actionLink}})],1):t._e()]),t._v(" "),t.data.features&&t.data.features.length?n("div",{staticClass:"features"},t._l(t.data.features,(function(e,i){return n("div",{key:i,staticClass:"feature"},[n("h2",[t._v(t._s(e.title))]),t._v(" "),n("p",[t._v(t._s(e.details))])])})),0):t._e(),t._v(" "),n("Content",{staticClass:"theme-succinct-content custom"}),t._v(" "),t.data.footer?n("div",{staticClass:"footer"},[t._v("\n "+t._s(t.data.footer)+"\n ")]):t._e()],1)}),[],!1,null,null,null).exports),l=(n(343),n(26),n(178),n(169),n(98),n(44),n(180),n(314),n(334),n(174),n(68),n(335),n(99),n(346),n(69),n(333),n(182)),c=n.n(l),h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=c()(e,"title","");return c()(e,"frontmatter.tags")&&(i+=" ".concat(e.frontmatter.tags.join(" "))),n&&(i+=" ".concat(n)),f(t,i)},f=function(t,e){var n=function(t){return t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")},i=new RegExp("[^\0-]"),r=t.split(/\s+/g).map((function(t){return t.trim()})).filter((function(t){return!!t}));if(i.test(t))return r.some((function(t){return e.toLowerCase().indexOf(t)>-1}));var a=t.endsWith(" ");return new RegExp(r.map((function(t,e){return r.length!==e+1||a?"(?=.*\\b".concat(n(t),"\\b)"):"(?=.*\\b".concat(n(t),")")})).join("")+".+","gi").test(e)},p={name:"SearchBox",data:function(){return{query:"",focused:!1,focusIndex:0,placeholder:void 0}},computed:{showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length},suggestions:function(){var t=this.query.trim().toLowerCase();if(t){for(var e=this.$site.pages,n=this.$site.themeConfig.searchMaxSuggestions||5,i=this.$localePath,r=[],a=0;a=n);a++){var s=e[a];if(this.getPageLocalePath(s)===i&&this.isSearchable(s))if(h(t,s))r.push(s);else if(s.headers)for(var o=0;o=n);o++){var u=s.headers[o];u.title&&h(t,s,u.title)&&r.push(Object.assign({},s,{path:s.path+"#"+u.slug,header:u}))}}return r}},alignRight:function(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},mounted:function(){this.placeholder=this.$site.themeConfig.searchPlaceholder||"",document.addEventListener("keydown",this.onHotkey)},beforeDestroy:function(){document.removeEventListener("keydown",this.onHotkey)},methods:{getPageLocalePath:function(t){for(var e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},isSearchable:function(t){var e=null;return null===e||(e=Array.isArray(e)?e:new Array(e)).filter((function(e){return t.path.match(e)})).length>0},onHotkey:function(t){t.srcElement===document.body&&["s","/"].includes(t.key)&&(this.$refs.input.focus(),t.preventDefault())},onUp:function(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown:function(){this.showSuggestions&&(this.focusIndex "+t._s(e.header.title))]):t._e()])])})),0):t._e()])}),[],!1,null,null,null).exports),g=(n(348),Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"sidebar-button",on:{click:function(e){return t.$emit("toggle-sidebar")}}},[n("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[n("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null).exports),v=(n(181),n(42)),m=n(338),b=n(183),k=n.n(b),_={name:"DropdownLink",components:{NavLink:s,DropdownTransition:m.a},props:{item:{required:!0}},data:function(){return{open:!1}},computed:{dropdownAriaLabel:function(){return this.item.ariaLabel||this.item.text}},watch:{$route:function(){this.open=!1}},methods:{setOpen:function(t){this.open=t},isLastItemOfArray:function(t,e){return k()(e)===t}}},x=(n(350),Object(a.a)(_,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[n("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:function(e){return t.setOpen(!t.open)}}},[n("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),n("span",{staticClass:"arrow",class:t.open?"down":"right"})]),t._v(" "),n("DropdownTransition",[n("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(e,i){return n("li",{key:e.link||i,staticClass:"dropdown-item"},["links"===e.type?n("h4",[t._v("\n "+t._s(e.text)+"\n ")]):t._e(),t._v(" "),"links"===e.type?n("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(e.items,(function(i){return n("li",{key:i.link,staticClass:"dropdown-subitem"},[n("NavLink",{attrs:{item:i},on:{focusout:function(n){t.isLastItemOfArray(i,e.items)&&t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0):n("NavLink",{attrs:{item:e},on:{focusout:function(n){t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0)])],1)}),[],!1,null,null,null).exports),C=(n(102),n(62)),$=["light","dark"],y={name:"ThemeSwitcher",data:function(){return{theme:""}},computed:{nextTheme:function(){var t=($.indexOf(this.theme)+1)%$.length;return $[t]}},methods:{switchTheme:function(){var t=($.indexOf(this.theme)+1)%$.length;window.__setPreferredTheme($[t]),this.theme=$[t]}},mounted:function(){var t=this;return Object(C.a)(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:void 0!==window.__theme&&(t.theme=window.__theme);case 1:case"end":return e.stop()}}),e)})))()}},L={name:"NavLinks",components:{NavLink:s,DropdownLink:x,ThemeSwitcher:Object(a.a)(y,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("a",{staticClass:"nav-link",attrs:{role:"button","aria-label":"Switch to "+t.nextTheme+" mode"},on:{click:function(e){return e.preventDefault(),t.switchTheme()}}},["dark"===t.theme?n("span",{key:"dark"},[t._v("Switch to light mode")]):"light"===t.theme?n("span",{key:"light"},[t._v("Switch to dark mode")]):n("span",{key:"light"},[t._v("Switch theme")])])}),[],!1,null,null,null).exports},computed:{userNav:function(){return this.$themeLocaleConfig.nav||this.$site.themeConfig.nav||[]},nav:function(){var t=this,e=this.$site.locales;if(e&&Object.keys(e).length>1){var n=this.$page.path,i=this.$router.options.routes,r=this.$site.themeConfig.locales||{},a={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(e).map((function(a){var s,o=e[a],u=r[a]&&r[a].label||o.lang;return o.lang===t.$lang?s=n:(s=n.replace(t.$localeConfig.path,a),i.some((function(t){return t.path===s}))||(s=a)),{text:u,link:s}}))};return[].concat(Object(v.a)(this.userNav),[a])}return this.userNav},userLinks:function(){return(this.nav||[]).map((function(t){return Object.assign(Object(i.j)(t),{items:(t.items||[]).map(i.j)})}))},repoLink:function(){var t=this.$site.themeConfig.repo;return t?/^https?:/.test(t)?t:"https://github.com/".concat(t):null},repoLabel:function(){if(this.repoLink){if(this.$site.themeConfig.repoLabel)return this.$site.themeConfig.repoLabel;for(var t=this.repoLink.match(/^https?:\/\/[^/]+/)[0],e=["GitHub","GitLab","Bitbucket"],n=0;nMath.abs(n)&&Math.abs(e)>40&&(e>0&&this.touchStart.x<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))}}}),z=Object(a.a)(q,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"theme-container",class:t.pageClasses,on:{touchstart:t.onTouchStart,touchend:t.onTouchEnd}},[t.shouldShowNavbar?n("Navbar",{on:{"toggle-sidebar":t.toggleSidebar}}):t._e(),t._v(" "),n("div",{staticClass:"sidebar-mask",on:{click:function(e){return t.toggleSidebar(!1)}}}),t._v(" "),n("Sidebar",{attrs:{items:t.sidebarItems},on:{"toggle-sidebar":t.toggleSidebar},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("sidebar-top")]},proxy:!0},{key:"bottom",fn:function(){return[t._t("sidebar-bottom")]},proxy:!0}],null,!0)}),t._v(" "),t.$page.frontmatter.home?n("Home"):n("Page",{attrs:{"sidebar-items":t.sidebarItems},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("page-top")]},proxy:!0},{key:"bottom",fn:function(){return[t._t("page-bottom")]},proxy:!0}],null,!0)})],1)}),[],!1,null,null,null);e.default=z.exports}}]); \ No newline at end of file diff --git a/assets/js/20.3c35a8ab.js b/assets/js/20.3c35a8ab.js new file mode 100644 index 0000000..d87e72d --- /dev/null +++ b/assets/js/20.3c35a8ab.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{448:function(t,n,e){"use strict";e.r(n);var s=e(25),i=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("p",{staticClass:"demo"},[this._v("This is another component")])}),[],!1,null,null,null);n.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/21.58b5af1b.js b/assets/js/21.58b5af1b.js new file mode 100644 index 0000000..95597f5 --- /dev/null +++ b/assets/js/21.58b5af1b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{402:function(t,n,s){"use strict";s.r(n);var e={data:function(){return{msg:"Hello this is "}}},i=s(25),o=Object(i.a)(e,(function(){var t=this.$createElement;return(this._self._c||t)("p",{staticClass:"demo"},[this._v("\n "+this._s(this.msg)+"\n")])}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/22.1c7d4144.js b/assets/js/22.1c7d4144.js new file mode 100644 index 0000000..8eebf7b --- /dev/null +++ b/assets/js/22.1c7d4144.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{404:function(e,t,n){"use strict";n.r(t);var a={name:"ThemeManager",beforeMount:function(){function e(e){window.__theme=e,t=e,document.body.setAttribute("data-theme",e),window.__onThemeChange(e)}var t;window.__onThemeChange=function(){};try{t=localStorage.getItem("theme")}catch(e){}window.__setPreferredTheme=function(t){e(t);try{localStorage.setItem("theme",t)}catch(e){}};var n=window.matchMedia("(prefers-color-scheme: dark)");n.addListener((function(e){window.__setPreferredTheme(e.matches?"dark":"light")})),e(t||(n.matches?"dark":"light"))}},i=n(25),o=Object(i.a)(a,(function(){var e=this.$createElement;return(this._self._c||e)("div",{staticStyle:{visibility:"hidden",display:"none"}})}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/23.0e0b8798.js b/assets/js/23.0e0b8798.js new file mode 100644 index 0000000..93e3582 --- /dev/null +++ b/assets/js/23.0e0b8798.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{401:function(t,e,s){"use strict";s.r(e);var n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],o={methods:{getMsg:function(){return n[Math.floor(Math.random()*n.length)]}}},i=s(25),h=Object(i.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"theme-container"},[e("div",{staticClass:"theme-succinct-content"},[e("h1",[this._v("404")]),this._v(" "),e("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),e("RouterLink",{attrs:{to:"/"}},[this._v("\n Take me home.\n ")])],1)])}),[],!1,null,null,null);e.default=h.exports}}]); \ No newline at end of file diff --git a/assets/js/24.f2e7943c.js b/assets/js/24.f2e7943c.js new file mode 100644 index 0000000..cb76f3b --- /dev/null +++ b/assets/js/24.f2e7943c.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{405:function(e,t,i){"use strict";i.r(t);var o=i(25),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("h1",{attrs:{id:"supporting-the-guides"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#supporting-the-guides"}},[e._v("#")]),e._v(" Supporting the guides")]),e._v(" "),i("p",[i("strong",[e._v("Note")]),e._v(": This is a community run guide which is not officially endorsed by Acidanthera. Please do not bug Acidanthera with issues about this guide.")]),e._v(" "),i("p",[e._v("Want to help support the guide? Well there's some ways you can help!")]),e._v(" "),i("ul",[i("li",[i("RouterLink",{attrs:{to:"/CONTRIBUTING.html#contributing-via-issues"}},[e._v("Contributing via Issues")])],1),e._v(" "),i("li",[i("RouterLink",{attrs:{to:"/CONTRIBUTING.html#contributing-via-prs"}},[e._v("Contributing via PRs")])],1)]),e._v(" "),i("p",[e._v("Note: For those wanting to contribute financially, we seriously appreciate it but we're a non-profit organization. We do this to teach, not to make money. If you have some money left over we highly recommend donating it to a charity. "),i("a",{attrs:{href:"https://crohnsandcolitis.donorportal.ca/Donation/DonationDetails.aspx?L=en-CA&G=159&F=1097&T=GENER",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crohn's and Colitis Canada"),i("OutboundLink")],1),e._v(" is one we recommend if you have none on mind.")]),e._v(" "),i("h2",{attrs:{id:"contributing-via-issues"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#contributing-via-issues"}},[e._v("#")]),e._v(" Contributing via Issues")]),e._v(" "),i("p",[e._v("Contributing via Issues is pretty simple but there are some rules:")]),e._v(" "),i("ul",[i("li",[e._v("Keep issues tab dedicated to guides issues only, "),i("strong",[e._v("no personal hackintosh issues")]),e._v(". It is not a place to discuss installation issues.")]),e._v(" "),i("li",[e._v("If for a typo or better clarification, please indicate what page it was on. Would appreciate not going for a scavenger hunt on where these issues are.")])]),e._v(" "),i("p",[e._v("You can find the issues tab here: "),i("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("Getting Started With ACPI Issues"),i("OutboundLink")],1)]),e._v(" "),i("h2",{attrs:{id:"contributing-via-prs"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#contributing-via-prs"}},[e._v("#")]),e._v(" Contributing via PRs")]),e._v(" "),i("p",[e._v("Some guidelines when contributing via PRs:")]),e._v(" "),i("ul",[i("li",[e._v("Use your brain (please).")]),e._v(" "),i("li",[e._v("Proofread your submissions.")]),e._v(" "),i("li",[e._v("Pull Requests can be denied if we feel it does not fit or has inaccurate information. We will generally tell you why it is rejected though or ask for revisions.\n"),i("ul",[i("li",[e._v("We would also appreciate sources for any bigger commits to make it easier on us to verify the info your provide is valid")])])]),e._v(" "),i("li",[e._v("Images must be hosted locally in the repo under the "),i("code",[e._v("/images/")]),e._v(" folder")]),e._v(" "),i("li",[e._v("Your PR must be run through a markdown lint and have all issues fixed.")]),e._v(" "),i("li",[e._v('In general, try to avoid using "non-Acidanthera" tools when possible. Generally we want to avoid use of third-party tools - though if it\'s impossible otherwise, then you can link it.\n'),i("ul",[i("li",[e._v("Tools explicitly banned:\n"),i("ul",[i("li",[e._v("UniBeast, MultiBeast and KextBeast\n"),i("ul",[i("li",[e._v("More info can be found here: "),i("a",{attrs:{href:"https://github.com/khronokernel/Tonymcx86-stance",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tonymacx86-stance"),i("OutboundLink")],1)])])]),e._v(" "),i("li",[e._v("Transmac\n"),i("ul",[i("li",[e._v("Know for creating borked USB drives")])])]),e._v(" "),i("li",[e._v("Niresh Installers\n"),i("ul",[i("li",[e._v("We'd like to avoid piracy with the guides")])])])])])])])]),e._v(" "),i("h3",{attrs:{id:"how-to-contribute"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#how-to-contribute"}},[e._v("#")]),e._v(" How to Contribute")]),e._v(" "),i("p",[e._v("Best way to test your commits and make sure they are formatted correctly is downloading "),i("code",[e._v("nodejs")]),e._v(" and "),i("code",[e._v("yarn")]),e._v(" then getting the VuePress and "),i("a",{attrs:{href:"https://github.com/igorshubovych/markdownlint-cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("markdownlint-cli"),i("OutboundLink")],1),e._v(" tools. When you run "),i("code",[e._v("yarn dev")]),e._v(", it will set up a local webserver which you can connect to view the changes you made. "),i("code",[e._v("markdownlint *")]),e._v(" will throw any errors at you about formatting as well, and "),i("code",[e._v("markdownlint -f *")]),e._v(" will attempt to fix these.")]),e._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/fork/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fork this repo"),i("OutboundLink")],1)]),e._v(" "),i("li",[e._v("Install the required tools:\n"),i("ul",[i("li",[i("code",[e._v("brew install yarn")])]),e._v(" "),i("li",[i("code",[e._v("npm install -g markdownlint-cli")])])])]),e._v(" "),i("li",[e._v("Make your changes.")]),e._v(" "),i("li",[e._v("Build the site:\n"),i("ul",[i("li",[i("code",[e._v("yarn install")]),e._v(" (To install all the required plugins)")]),e._v(" "),i("li",[i("code",[e._v("yarn dev")]),e._v(" (Preview the site)\n"),i("ul",[i("li",[e._v("Can be found at "),i("code",[e._v("http://localhost:8080")])])])])])]),e._v(" "),i("li",[e._v("Check markdown format:\n"),i("ul",[i("li",[i("code",[e._v("markdownlint -f *")]),e._v(" (To fix any potential issues)")])])])]),e._v(" "),i("h3",{attrs:{id:"tips"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tips"}},[e._v("#")]),e._v(" Tips")]),e._v(" "),i("p",[e._v("Some tools that make contributing a bit easier:")]),e._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"https://typora.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Typora"),i("OutboundLink")],1),e._v(" for real time markdown rendering.")]),e._v(" "),i("li",[i("a",{attrs:{href:"https://macromates.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("TextMate"),i("OutboundLink")],1),e._v(" for easy and powerful mass find/replace.")]),e._v(" "),i("li",[i("a",{attrs:{href:"https://desktop.github.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github Desktop"),i("OutboundLink")],1),e._v(" for more user friendly GUI.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/25.f0cc4e02.js b/assets/js/25.f0cc4e02.js new file mode 100644 index 0000000..958b988 --- /dev/null +++ b/assets/js/25.f0cc4e02.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{407:function(t,e,o){"use strict";o.r(e);var r=o(25),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"fixing-embedded-controller-desktop"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#fixing-embedded-controller-desktop"}},[t._v("#")]),t._v(" Fixing Embedded Controller (Desktop)")]),t._v(" "),o("h2",{attrs:{id:"you-ll-want-to-go-to-ssdt-ec-under-the-universal-tab-for-the-new-ssdt-ec-page"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#you-ll-want-to-go-to-ssdt-ec-under-the-universal-tab-for-the-new-ssdt-ec-page"}},[t._v("#")]),t._v(" You'll want to go to "),o("RouterLink",{attrs:{to:"/Universal/desktop-ec.html"}},[t._v("SSDT-EC under the Universal tab")]),t._v(" for the new SSDT-EC page")],1)])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/26.463dbace.js b/assets/js/26.463dbace.js new file mode 100644 index 0000000..59f7ac9 --- /dev/null +++ b/assets/js/26.463dbace.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{409:function(t,e,i){"use strict";i.r(e);var o=i(25),a=Object(o.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"fixing-backlight-prebuilt"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#fixing-backlight-prebuilt"}},[t._v("#")]),t._v(" Fixing Backlight: Prebuilt")]),t._v(" "),i("p",[t._v("By far the easiest method, all you need to do is download the following file:")]),t._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PNLF.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PNLF.aml"),i("OutboundLink")],1),t._v(" "),i("ul",[i("li",[t._v("For most users")])])]),t._v(" "),i("li",[i("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PNLF-CFL.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PNLF-CFL.aml"),i("OutboundLink")],1),t._v(" "),i("ul",[i("li",[t._v("For Coffee Lake and newer")])])])]),t._v(" "),i("p",[t._v("Main things to note with this method:")]),t._v(" "),i("ul",[i("li",[t._v("Assumes GPU pathing, works great for 99% of devices but if you're having issues controlling backlight this may be something to look at")]),t._v(" "),i("li",[t._v("Doesn't really teach you anything\n"),i("ul",[i("li",[t._v("For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey")])])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/27.f1ee2064.js b/assets/js/27.f1ee2064.js new file mode 100644 index 0000000..357a10d --- /dev/null +++ b/assets/js/27.f1ee2064.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{410:function(t,s,e){"use strict";e.r(s);var a=e(25),h=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"fixing-backlight-ssdt-pnlf"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fixing-backlight-ssdt-pnlf"}},[t._v("#")]),t._v(" Fixing Backlight (SSDT-PNLF)")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#what-this-ssdt-does"}},[t._v("What this SSDT does")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("Methods to make this SSDT")])])]),t._v(" "),e("h2",{attrs:{id:"what-this-ssdt-does"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-this-ssdt-does"}},[t._v("#")]),t._v(" What this SSDT does")]),t._v(" "),e("p",[t._v("The purpose of this SSDT is to create a PNLF device for macOS to play with, specifically one with a hardware ID of "),e("code",[t._v("APP0002")]),t._v(". Luckily WhateverGreen will handle the rest of the work for us.")]),t._v(" "),e("h2",{attrs:{id:"methods-to-make-this-ssdt"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("#")]),t._v(" Methods to make this SSDT")]),t._v(" "),e("p",[t._v("For the backlight fix, there are 2 methods you can choose from:")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/Laptops/backlight-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/Laptops/backlight-methods/manual.html"}},[t._v("Manual")])],1)])])}),[],!1,null,null,null);s.default=h.exports}}]); \ No newline at end of file diff --git a/assets/js/28.71ad72d1.js b/assets/js/28.71ad72d1.js new file mode 100644 index 0000000..836f231 --- /dev/null +++ b/assets/js/28.71ad72d1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{412:function(t,e,o){"use strict";o.r(e);var a=o(25),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"fixing-embedded-controller-laptop"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#fixing-embedded-controller-laptop"}},[t._v("#")]),t._v(" Fixing Embedded Controller (Laptop)")]),t._v(" "),o("h2",{attrs:{id:"you-ll-want-to-go-to-ssdt-ec-under-the-universal-tab-for-the-new-ssdt-ec-page"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#you-ll-want-to-go-to-ssdt-ec-under-the-universal-tab-for-the-new-ssdt-ec-page"}},[t._v("#")]),t._v(" You'll want to go to "),o("RouterLink",{attrs:{to:"/Universal/desktop-ec.html"}},[t._v("SSDT-EC under the Universal tab")]),t._v(" for the new SSDT-EC page")],1)])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/29.523c6d21.js b/assets/js/29.523c6d21.js new file mode 100644 index 0000000..f48f884 --- /dev/null +++ b/assets/js/29.523c6d21.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{414:function(t,e,i){"use strict";i.r(e);var l=i(25),a=Object(l.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"fixing-trackpads-prebuilt"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#fixing-trackpads-prebuilt"}},[t._v("#")]),t._v(" Fixing Trackpads: Prebuilt")]),t._v(" "),i("p",[t._v("This is a one-size fits all solution where we basically trick our hardware into thinking it's booting Windows. The problem with this method is that it's common to break Windows booting so avoid unless troubleshooting.")]),t._v(" "),i("ul",[i("li",[i("p",[i("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-XOSI.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-XOSI"),i("OutboundLink")],1)])]),t._v(" "),i("li",[i("p",[t._v("XOSI Rename(add this under config.plist -> ACPI -> Patch):")])])]),t._v(" "),i("table",[i("thead",[i("tr",[i("th",{staticStyle:{"text-align":"left"}},[t._v("Comment")]),t._v(" "),i("th",{staticStyle:{"text-align":"left"}},[t._v("String")]),t._v(" "),i("th",{staticStyle:{"text-align":"left"}},[t._v("Change _OSI to XOSI")])])]),t._v(" "),i("tbody",[i("tr",[i("td",{staticStyle:{"text-align":"left"}},[t._v("Enabled")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("Boolean")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("YES")])]),t._v(" "),i("tr",[i("td",{staticStyle:{"text-align":"left"}},[t._v("Count")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("Number")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("0")])]),t._v(" "),i("tr",[i("td",{staticStyle:{"text-align":"left"}},[t._v("Limit")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("Number")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("0")])]),t._v(" "),i("tr",[i("td",{staticStyle:{"text-align":"left"}},[t._v("Find")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("Data")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("5f4f5349")])]),t._v(" "),i("tr",[i("td",{staticStyle:{"text-align":"left"}},[t._v("Replace")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("Data")]),t._v(" "),i("td",{staticStyle:{"text-align":"left"}},[t._v("584f5349")])])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/3.1ae2f26d.js b/assets/js/3.1ae2f26d.js new file mode 100644 index 0000000..c5df991 --- /dev/null +++ b/assets/js/3.1ae2f26d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{382:function(t,e,a){t.exports=a.p+"assets/img/processor.38dc34ad.png"},383:function(t,e,a){t.exports=a.p+"assets/img/processor-2.8af8c8dd.png"},384:function(t,e,a){t.exports=a.p+"assets/img/cp00.d25cad0f.png"},385:function(t,e,a){t.exports=a.p+"assets/img/plug-bios.1b527198.png"},386:function(t,e,a){t.exports=a.p+"assets/img/plug-x299.8123a653.png"},387:function(t,e,a){t.exports=a.p+"assets/img/ssdt-mess.8323e4a6.png"},388:function(t,e,a){t.exports=a.p+"assets/img/ssdt-clean.b241b36e.png"},431:function(t,e,a){"use strict";a.r(e);var s=a(25),i=Object(s.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-power-management-manual"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-power-management-manual"}},[t._v("#")]),t._v(" Fixing Power Management: Manual")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[t._v("Finding the ACPI path")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#DSDT"}},[t._v("DSDT")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#devicemanager"}},[t._v("DeviceManager")])])])]),t._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[t._v("Compiling the SSDT")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#wrapping-up"}},[t._v("Wrapping up")])])]),t._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path"}},[t._v("#")]),t._v(" Finding the ACPI path")]),t._v(" "),s("p",[t._v("To find the ACPI pathing, you have 2 methods:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#DSDT"}},[t._v("DSDT")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#devicemanager"}},[t._v("DeviceManager")])])]),t._v(" "),s("h3",{attrs:{id:"dsdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dsdt"}},[t._v("#")]),t._v(" DSDT")]),t._v(" "),s("p",[t._v("CPU naming is fairly easy to figure out, first open your decompiled DSDT you got from "),s("RouterLink",{attrs:{to:"/Manual/dump.html"}},[t._v("Dumping the DSDT")]),t._v(" and "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("Decompiling and Compiling")]),t._v(" with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an "),s("a",{attrs:{href:"https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl",target:"_blank",rel:"noopener noreferrer"}},[t._v("ACPI extension"),s("OutboundLink")],1),t._v(" that can also help).")],1),t._v(" "),s("p",[t._v("Next search for "),s("code",[t._v("Processor")]),t._v(". This should give you a result like this:")]),t._v(" "),s("p",[s("img",{attrs:{src:a(382),alt:""}})]),t._v(" "),s("p",[t._v("As we can see, the first processor in our list is "),s("code",[t._v("SB.PR00")]),t._v(". This is what we'll be applying the "),s("code",[t._v("plugin-type=1")]),t._v(" property too.")]),t._v(" "),s("p",[s("strong",[t._v("X99 and X299 note")]),t._v(":")]),t._v(" "),s("p",[t._v("Due to the different DSDT structure of these systems, you'll need to to actually check in multiple places as the pathing isn't as obvious:")]),t._v(" "),s("p",[s("img",{attrs:{src:a(383),alt:""}})]),t._v(" "),s("p",[t._v("If we then search for instances of "),s("code",[t._v("CP00")]),t._v(" we find that its full ACPI pathing is "),s("code",[t._v("SB.SCK0.CP00")]),t._v(":")]),t._v(" "),s("p",[s("img",{attrs:{src:a(384),alt:""}})]),t._v(" "),s("p",[t._v("Now with the pathing, you can head here: "),s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),s("h5",{attrs:{id:"devicemanager"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#devicemanager"}},[t._v("#")]),t._v(" DeviceManager")]),t._v(" "),s("p",[t._v("If you already have Windows installed on this machine, finding the CPU pathing is fairly easy.")]),t._v(" "),s("p",[t._v("Start by opening up Device Manager in Windows and looking for a device named "),s("code",[t._v("Processor")]),t._v(". Once found, click on it and select the "),s("code",[t._v("BIOS device Name")]),t._v(" entry. You should get something like this:")]),t._v(" "),s("p",[s("img",{attrs:{src:a(385),alt:""}})]),t._v(" "),s("p",[t._v("From the above, we can see that our pathing is "),s("code",[t._v("PR.CPU0")]),t._v(". Pay close attention to the start as "),s("code",[t._v("PR")]),t._v(" is important for creating the SSDT")]),t._v(" "),s("p",[s("strong",[t._v("X99 and X299 note")]),t._v(":")]),t._v(" "),s("p",[t._v("Odd quirk of DeviceManager in Windows is that the Processor's order does not actually match the ACPI path, instead giving something like "),s("code",[t._v("SB.SCK0.CP10")]),t._v(":")]),t._v(" "),s("p",[s("img",{attrs:{src:a(386),alt:""}})]),t._v(" "),s("p",[t._v("When this happens, you can either:")]),t._v(" "),s("ul",[s("li",[t._v("Look through and find the lowest value")]),t._v(" "),s("li",[t._v("Assume the lowest(commonly being "),s("code",[t._v("PR00")]),t._v(" or "),s("code",[t._v("CP00")]),t._v(")")])]),t._v(" "),s("p",[t._v("So with the above X299 example, our CPU pathing would be "),s("code",[t._v("SB.SCK0.CP00")])]),t._v(" "),s("p",[t._v("Now with the pathing, you can head here: "),s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),s("h2",{attrs:{id:"edits-to-the-sample-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("#")]),t._v(" Edits to the sample SSDT")]),t._v(" "),s("p",[t._v("Now that we have our ACPI path, lets grab our SSDT and get to work:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PLUG.dsl"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("From the above SSDT, it's very likely your processor is already there. If so, you can delete all the other entries other than yours and the "),s("code",[t._v("Method PMPM")]),t._v(" as this is what injects the "),s("code",[t._v("plugin-type=1")]),t._v(" property into our system.")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("Reminder")]),t._v(": We only need to apply "),s("code",[t._v("plugin-type=1")]),t._v(" to the first thread")])]),t._v(" "),s("p",[t._v("For the below example, we'll be using the X299 example("),s("code",[t._v("SB.SCK0.CP00")]),t._v(")")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"center"}},[t._v("Original")]),t._v(" "),s("th",{staticStyle:{"text-align":"center"}},[t._v("Cleaned Up")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"center"}},[s("img",{attrs:{src:a(387),alt:""}})]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[s("img",{attrs:{src:a(388),alt:""}})])])])]),t._v(" "),s("h2",{attrs:{id:"compiling-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#compiling-the-ssdt"}},[t._v("#")]),t._v(" Compiling the SSDT")]),t._v(" "),s("p",[t._v("With the SSDT done, you're now "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("ready to compile the SSDT!")])],1),t._v(" "),s("h2",{attrs:{id:"wrapping-up"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[t._v("#")]),t._v(" Wrapping up")]),t._v(" "),s("p",[t._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/cleanup.html"}},[s("strong",[t._v("Cleanup")])])],1)])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/30.e5aa9ce4.js b/assets/js/30.e5aa9ce4.js new file mode 100644 index 0000000..708ffdf --- /dev/null +++ b/assets/js/30.e5aa9ce4.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{415:function(t,s,e){"use strict";e.r(s);var a=e(25),o=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"fixing-trackpads-ssdt-gpi0-xosi"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fixing-trackpads-ssdt-gpi0-xosi"}},[t._v("#")]),t._v(" Fixing Trackpads (SSDT-GPI0/XOSI)")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#what-this-ssdt-does"}},[t._v("What this SSDT does")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("Methods to make this SSDT")])])]),t._v(" "),e("h2",{attrs:{id:"what-this-ssdt-does"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-this-ssdt-does"}},[t._v("#")]),t._v(" What this SSDT does")]),t._v(" "),e("p",[t._v("This SSDT is used to force enable our GPI0 for VoodooI2C to connect onto.")]),t._v(" "),e("p",[t._v("With most modern laptop DSDTs, there's a variable called "),e("code",[t._v("GPEN")]),t._v(" or "),e("code",[t._v("GPHD")]),t._v(" which are used for setting the status of the GPI0 device. For us, we want to enable the device.")]),t._v(" "),e("h2",{attrs:{id:"methods-to-make-this-ssdt"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("#")]),t._v(" Methods to make this SSDT")]),t._v(" "),e("p",[t._v("For the trackpad fix, there are 2 methods you can choose from:")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/Laptops/trackpad-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/Laptops/trackpad-methods/manual.html"}},[t._v("Manual")])],1)])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/31.1f0591e4.js b/assets/js/31.1f0591e4.js new file mode 100644 index 0000000..c8b7de1 --- /dev/null +++ b/assets/js/31.1f0591e4.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{418:function(e,t,o){"use strict";o.r(t);var a=o(25),s=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"getting-started-with-acpi"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-with-acpi"}},[e._v("#")]),e._v(" Getting started with ACPI")]),e._v(" "),o("img",{attrs:{src:"acpi-logo.png",width:"512"}}),e._v(" "),o("h2",{attrs:{id:"a-quick-explainer-on-acpi"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#a-quick-explainer-on-acpi"}},[e._v("#")]),e._v(" A quick explainer on ACPI")]),e._v(" "),o("p",[e._v("So what are DSDTs and SSDTs? Well, these are tables present in your firmware that outline hardware devices like USB controllers, CPU threads, embedded controllers, system clocks and such. A DSDT(Differentiated System Description Table) can be seen as the body holding most of the info with smaller bits of info being passed by the SSDT(Secondary System Description Table). You can think of the DSDT as the building blueprints with SSDTs being sticky notes outlining extra details to the project")]),e._v(" "),o("p",[e._v("You can read more about ACPI and it's spec here: "),o("a",{attrs:{href:"https://uefi.org/sites/default/files/resources/ACPI_6_3_May16.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("ACPI 6.3 Manual"),o("OutboundLink")],1)]),e._v(" "),o("blockquote",[o("p",[e._v("So why do we care about these tables?")])]),e._v(" "),o("p",[e._v("macOS can be very picky about the devices present in the DSDT and so our job is to correct it. The main devices that need to be corrected for macOS to work properly:")]),e._v(" "),o("ul",[o("li",[e._v("Embedded controllers(EC)\n"),o("ul",[o("li",[e._v("All semi-modern intel machines have an EC (usually called H_EC, ECDV, EC0, etc...) exposed in their DSDT, with many AMD systems also having it exposed. These controllers are generally not compatible with macOS and can cause panics, so then need to be hidden from macOS. macOS Catalina requires a device named "),o("code",[e._v("EC")]),e._v(" to be present though, so a dummy EC is created.")]),e._v(" "),o("li",[e._v("With laptops, the actual embedded controller still needs to be enabled for battery and hotkeys to work, and renaming the EC can additionally cause issues with windows, so creating a fake EC without disabling the real embedded controller is preferable.")])])]),e._v(" "),o("li",[e._v("Plugin type\n"),o("ul",[o("li",[e._v("This allows the use of XCPM providing native CPU power management on "),o("strong",[e._v("Intel")]),e._v(" Haswell and newer CPUs, the SSDT will connect to the first thread of the CPU. Not meant for AMD")])])]),e._v(" "),o("li",[e._v("AWAC system clock.\n"),o("ul",[o("li",[e._v("This applies to all 300 series motherboards including many Z370 boards, the specific issue is that newer boards ship with AWAC clock enabled. This is a problem because macOS cannot communicate with AWAC clocks, so this requires us to either force on the legacy RTC clock or if unavailable create a fake one for macOS to play with")])])]),e._v(" "),o("li",[e._v("NVRAM SSDT\n"),o("ul",[o("li",[e._v("True 300 series motherboards(non-Z370) don't declare the FW chip as MMIO in ACPI and so the kernel ignores the MMIO region declared by the UEFI memory map. This SSDT brings back NVRAM support")])])]),e._v(" "),o("li",[e._v("Backlight SSDT\n"),o("ul",[o("li",[e._v("Used for fixing backlight control support on laptops")])])]),e._v(" "),o("li",[e._v("GPIO SSDT\n"),o("ul",[o("li",[e._v("Used for creating a stub to allow VoodooI2C to connect onto, for laptops only")])])]),e._v(" "),o("li",[e._v("XOSI SSDT\n"),o("ul",[o("li",[e._v("Used for rerouting OSI calls to this SSDT, mainly used for tricking our hardware into thinking its booting Windows so we get better trackpad support. This is a very hacky solution known for breaking Windows boot, use the GPIO SSDT instead. Usage of XOSI will not be covered in this guide")])])]),e._v(" "),o("li",[e._v("IRQ SSDT and ACPI patches\n"),o("ul",[o("li",[e._v("Needed for fixing IRQ conflicts within the DSDT, for laptops mainly. SSDTTime exclusive")]),e._v(" "),o("li",[e._v("Note Skylake and newer systems rarely have IRQ conflicts, this is mainly prevalent on Broadwell and older")])])])]),e._v(" "),o("p",[e._v("Now head to the next page on what SSDTs do your systems need:")]),e._v(" "),o("h2",{attrs:{id:"choosing-the-ssdts"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#choosing-the-ssdts"}},[e._v("#")]),e._v(" "),o("RouterLink",{attrs:{to:"/ssdt-platform.html"}},[e._v("Choosing the SSDTs")])],1)])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/32.4eacdc3c.js b/assets/js/32.4eacdc3c.js new file mode 100644 index 0000000..2a849b0 --- /dev/null +++ b/assets/js/32.4eacdc3c.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{419:function(t,a,l){"use strict";l.r(a);var s=l(25),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,l=t._self._c||a;return l("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[l("h1",{attrs:{id:"table-of-contents"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#table-of-contents"}},[t._v("#")]),t._v(" Table of contents")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/"}},[t._v("Getting Started With ACPI")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/ssdt-platform.html"}},[t._v("Choosing the SSDTs")])],1)]),t._v(" "),l("h2",{attrs:{id:"methods"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#methods"}},[t._v("#")]),t._v(" Methods")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/ssdt-methods/ssdt-methods.html"}},[t._v("How to create SSDTs")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/ssdt-methods/ssdt-prebuilt.html"}},[t._v("SSDTs: Prebuilt")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/ssdt-methods/ssdt-easy.html"}},[t._v("SSDTs: Easy Way")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/ssdt-methods/ssdt-long.html"}},[t._v("SSDTs: Long Way")])],1)])],1)]),t._v(" "),l("h2",{attrs:{id:"manual"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#manual"}},[t._v("#")]),t._v(" Manual")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Manual/dump.html"}},[t._v("Dumping the DSDT")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("Decompiling and Compiling")])],1)]),t._v(" "),l("h2",{attrs:{id:"desktop"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#desktop"}},[t._v("#")]),t._v(" Desktop")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Desktops/desktop-disable.html"}},[t._v("Disabling desktop dGPUs")])],1)]),t._v(" "),l("h2",{attrs:{id:"laptop"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#laptop"}},[t._v("#")]),t._v(" Laptop")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Laptops/backlight.html"}},[t._v("Backlight PNLF")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Laptops/backlight-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Laptops/backlight-methods/manual.html"}},[t._v("Manual")])],1)])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Laptops/trackpad.html"}},[t._v("Trackpad GPI0")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Laptops/trackpad-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Laptops/trackpad-methods/manual.html"}},[t._v("Manual")])],1)])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Laptops/laptop-disable.html"}},[t._v("Disabling laptop dGPUs")])],1)]),t._v(" "),l("h2",{attrs:{id:"universal"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#universal"}},[t._v("#")]),t._v(" Universal")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[t._v("Embedded Controller")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Universal/ec-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/ec-methods/ssdttime.html"}},[t._v("SSDTTime")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/ec-methods/manual.html"}},[t._v("Manual")])],1)])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/plug.html"}},[t._v("CPU Power Management")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Universal/plug-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/plug-methods/ssdttime.html"}},[t._v("SSDTTime")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/plug-methods/manual.html"}},[t._v("Manual")])],1)])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/awac.html"}},[t._v("AWAC vs RTC")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Universal/awac-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/awac-methods/manual.html"}},[t._v("Manual")])],1)])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/nvram.html"}},[t._v("NVRAM PMC")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Universal/nvram-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/nvram-methods/manual.html"}},[t._v("Manual")])],1)])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/rhub.html"}},[t._v("USB RHUB")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Universal/rhub-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/rhub-methods/manual.html"}},[t._v("Manual")])],1)])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/irq.html"}},[t._v("IRQ Fix")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/spoof.html"}},[t._v("GPU Spoof")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/Universal/smbus.html"}},[t._v("Fixing SMBus Support")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/Universal/smbus-methods/manual.html"}},[t._v("Manual")])],1)])],1)]),t._v(" "),l("h2",{attrs:{id:"cleanup"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#cleanup"}},[t._v("#")]),t._v(" Cleanup")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/cleanup.html"}},[t._v("Cleanup")])],1)]),t._v(" "),l("h2",{attrs:{id:"misc"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#misc"}},[t._v("#")]),t._v(" Misc")]),t._v(" "),l("ul",[l("li",[l("RouterLink",{attrs:{to:"/troubleshooting.html"}},[t._v("Troubleshooting")])],1),t._v(" "),l("li",[l("RouterLink",{attrs:{to:"/CONTRIBUTING.html"}},[t._v("Contributing")])],1)])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/33.cb8e0ba9.js b/assets/js/33.cb8e0ba9.js new file mode 100644 index 0000000..1942760 --- /dev/null +++ b/assets/js/33.cb8e0ba9.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{421:function(t,e,a){"use strict";a.r(e);var o=a(25),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"fixing-system-clocks-prebuilt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fixing-system-clocks-prebuilt"}},[t._v("#")]),t._v(" Fixing System Clocks: Prebuilt")]),t._v(" "),a("p",[t._v("By far the easiest method, all you need to do is download the following file:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-AWAC.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-AWAC.aml"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("Main things to note with this method:")]),t._v(" "),a("ul",[a("li",[t._v("Assumes you both have an AWAC clock and it can be easily turned off with the RTC replacing it, "),a("strong",[t._v("this may not always work")])]),t._v(" "),a("li",[t._v("Doesn't really teach you anything\n"),a("ul",[a("li",[t._v("For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey")])])])]),t._v(" "),a("h2",{attrs:{id:"wrapping-up"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[t._v("#")]),t._v(" Wrapping up")]),t._v(" "),a("p",[t._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/cleanup.html"}},[a("strong",[t._v("Cleanup")])])],1)])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/34.d81f54d4.js b/assets/js/34.d81f54d4.js new file mode 100644 index 0000000..4d3f208 --- /dev/null +++ b/assets/js/34.d81f54d4.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{422:function(t,e,s){"use strict";s.r(e);var a=s(25),i=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-system-clocks-ssdt-awac-rtc0"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-system-clocks-ssdt-awac-rtc0"}},[t._v("#")]),t._v(" Fixing System Clocks (SSDT-AWAC/RTC0)")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#what-this-ssdt-does"}},[t._v("What this SSDT does")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("Methods to make this SSDT")])])]),t._v(" "),s("h2",{attrs:{id:"what-this-ssdt-does"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-this-ssdt-does"}},[t._v("#")]),t._v(" What this SSDT does")]),t._v(" "),s("p",[t._v("The purpose of SSDT-AWAC/RTC0 is to fix the system clocks found on newer hardware, maily found in the following:")]),t._v(" "),s("ul",[s("li",[t._v("B360")]),t._v(" "),s("li",[t._v("B365")]),t._v(" "),s("li",[t._v("H310")]),t._v(" "),s("li",[t._v("H370")]),t._v(" "),s("li",[t._v("Z370 (Gigabyte and AsRock boards with newer BIOS versions)")]),t._v(" "),s("li",[t._v("Z390")]),t._v(" "),s("li",[t._v("B460")]),t._v(" "),s("li",[t._v("Z490")]),t._v(" "),s("li",[t._v("400 series (Comet Lake, including Z490)")]),t._v(" "),s("li",[t._v("495 series (Icelake)")]),t._v(" "),s("li",[t._v("X299X (10th Gen refresh, AsRock and Asus don't use the -x naming so you'll need to double check)")])]),t._v(" "),s("p",[t._v('SSDT-AWAC tries to re-enable the old RTC clock that is compatible with macOS, while SSDT-RTC0 will instead create a "fake" RTC clock if there is no legacy one to enable.')]),t._v(" "),s("h2",{attrs:{id:"methods-to-make-this-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("#")]),t._v(" Methods to make this SSDT")]),t._v(" "),s("p",[t._v("For the RTC fix, there are 2 methods you can choose from:")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/Universal/awac-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/Universal/awac-methods/manual.html"}},[t._v("Manual")])],1)])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/35.9794b789.js b/assets/js/35.9794b789.js new file mode 100644 index 0000000..1a9345d --- /dev/null +++ b/assets/js/35.9794b789.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{423:function(e,t,s){"use strict";s.r(t);var o=s(25),l=Object(o.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-embedded-controller-ssdt-ec-usbx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-embedded-controller-ssdt-ec-usbx"}},[e._v("#")]),e._v(" Fixing Embedded Controller (SSDT-EC/USBX)")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#fixing-embedded-controller-ssdt-ecusbx"}},[e._v("Fixing Embedded Controller (SSDT-EC/USBX)")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#what-this-ssdt-does"}},[e._v("What this SSDT does")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[e._v("Methods to make this SSDT")])])])])]),e._v(" "),s("h2",{attrs:{id:"what-this-ssdt-does"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-this-ssdt-does"}},[e._v("#")]),e._v(" What this SSDT does")]),e._v(" "),s("p",[e._v("The purpose of SSDT-EC/UBX is a couple things:")]),e._v(" "),s("ul",[s("li",[e._v("On desktops, the EC(or better known as the embedded controller) isn't compatible with AppleACPIEC driver, to get around this we disable this device when running macOS")]),e._v(" "),s("li",[e._v("AppleBusPowerController will look for a device named "),s("code",[e._v("EC")]),e._v(", so we will want to create a fake device for this kext to load onto\n"),s("ul",[s("li",[e._v("AppleBusPowerController also requires a USBX device to supply USB power properties for Skylake and newer, so we will bundle this device in with the EC fix")])])]),e._v(" "),s("li",[e._v("On laptops, the EC is used for hotkeys and battery so disabling this isn't all too ideal. Problem is our EC's name isn't compatible, so we will create a simple \"fake\" EC device that will satisfy Apple")])]),e._v(" "),s("p",[e._v("So TL;DR:")]),e._v(" "),s("ul",[s("li",[e._v("EC is embedded controller")]),e._v(" "),s("li",[e._v("Desktops will want real EC off, and a fake EC created")]),e._v(" "),s("li",[e._v("Laptops will just want an additional fake EC present")]),e._v(" "),s("li",[e._v("Skylake and newer devices will want USBX as well")])]),e._v(" "),s("h2",{attrs:{id:"methods-to-make-this-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-to-make-this-ssdt"}},[e._v("#")]),e._v(" Methods to make this SSDT")]),e._v(" "),s("p",[e._v("For the EC fix, there are 3 methods you can choose from:")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/Universal/ec-methods/prebuilt.html"}},[e._v("Prebuilt")]),e._v(" "),s("ul",[s("li",[e._v("The prebuilt for desktops are very bloated. It's recommended to use the two methods below.")]),e._v(" "),s("li",[e._v("The Laptop prebuilts are easily usable.")])])],1),e._v(" "),s("li",[s("RouterLink",{attrs:{to:"/Universal/ec-methods/ssdttime.html"}},[e._v("SSDTTime")]),e._v(" "),s("ul",[s("li",[e._v("Note this method does not support "),s("strong",[e._v("laptops")]),e._v(", "),s("strong",[e._v("servers")]),e._v(" or "),s("strong",[e._v("HEDT systems")])])])],1),e._v(" "),s("li",[s("RouterLink",{attrs:{to:"/Universal/ec-methods/manual.html"}},[e._v("Manual")])],1)])])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/36.09211179.js b/assets/js/36.09211179.js new file mode 100644 index 0000000..3fe0d06 --- /dev/null +++ b/assets/js/36.09211179.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{425:function(e,t,r){"use strict";r.r(t);var a=r(25),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"fixing-embedded-controllers-prebuilt"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fixing-embedded-controllers-prebuilt"}},[e._v("#")]),e._v(" Fixing Embedded Controllers: Prebuilt")]),e._v(" "),r("p",[e._v("By far the easiest way to fix your Embedded Controller is just downloading one of the files below:")]),e._v(" "),r("p",[r("strong",[e._v("Desktop")]),e._v(":")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-USBX-DESKTOP.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-EC-USBX-DESKTOP"),r("OutboundLink")],1),e._v(" "),r("ul",[r("li",[e._v("For Skylake desktops and newer and AMD CPU based systems")])])]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-DESKTOP.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-EC-DESKTOP"),r("OutboundLink")],1),e._v(" "),r("ul",[r("li",[e._v("For Broadwell desktops and older")])])])]),e._v(" "),r("p",[r("strong",[e._v("Laptops")]),e._v(":")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-USBX-LAPTOP.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-EC-USBX-LAPTOP.aml"),r("OutboundLink")],1),e._v(" "),r("ul",[r("li",[e._v("For Skylake laptops and newer")])])]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-LAPTOP.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-EC-LAPTOP.aml"),r("OutboundLink")],1),e._v(" "),r("ul",[r("li",[e._v("For Broadwell laptops and older")])])])]),e._v(" "),r("p",[e._v("The main things to note with this method:")]),e._v(" "),r("ul",[r("li",[e._v("Quite Bloated\n"),r("ul",[r("li",[e._v("There's ACPI naming for every type, this means there's added delays in boot times")])])]),e._v(" "),r("li",[e._v("Doesn't really teach you anything\n"),r("ul",[r("li",[e._v("For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey")])])])]),e._v(" "),r("h2",{attrs:{id:"wrapping-up"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[e._v("#")]),e._v(" Wrapping up")]),e._v(" "),r("p",[e._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/cleanup.html"}},[r("strong",[e._v("Cleanup")])])],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/37.22b66477.js b/assets/js/37.22b66477.js new file mode 100644 index 0000000..25da9c6 --- /dev/null +++ b/assets/js/37.22b66477.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{426:function(e,t,o){"use strict";o.r(t);var r=o(25),i=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"fixing-embedded-controllers-ssdttime"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#fixing-embedded-controllers-ssdttime"}},[e._v("#")]),e._v(" Fixing Embedded Controllers: SSDTTime")]),e._v(" "),o("p",[e._v("The second involves using SSDTTime which automates most of the process. See here on how to use it: "),o("RouterLink",{attrs:{to:"/ssdt-methods/ssdt-easy.html"}},[e._v("SSDTs: Easy Way")])],1),e._v(" "),o("p",[e._v("To get the SSDT-PLUG, run the following:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("4. Dump DSDT")]),e._v(" then run "),o("code",[e._v("2. FakeEC")])])]),e._v(" "),o("p",[e._v("This will provide you with some files, the main one you care about is SSDT-EC**.aml**. The DSDT and .dsl are only left for referencing or verification.")]),e._v(" "),o("p",[e._v("The main things to note with this method:")]),e._v(" "),o("ul",[o("li",[e._v("Doesn't work on HEDT and server hardware(ie. X99 and X299)\n"),o("ul",[o("li",[e._v("While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the "),o("a",{attrs:{href:"#prebuilts"}},[e._v("Prebuilt")]),e._v(" or "),o("a",{attrs:{href:"#manual"}},[e._v("Manual")]),e._v(" method")])])]),e._v(" "),o("li",[e._v("Doesn't work on Laptops\n"),o("ul",[o("li",[e._v("Just like with HEDT, you will need to either use the "),o("a",{attrs:{href:"#prebuilts"}},[e._v("Prebuilt")]),e._v(" or "),o("a",{attrs:{href:"#manual"}},[e._v("Manual")]),e._v(" method")])])]),e._v(" "),o("li",[e._v("Doesn't provide you the USBX property to fix power\n"),o("ul",[o("li",[e._v("This can easily be fixed by using this prebuilt file in addition to SSDT-EC: "),o("a",{attrs:{href:"https://github.com/dortania/USB-Map-Guide/blob/master/extra-files/SSDT-USBX.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-USBX.aml"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Note USBX is only needed for Skylake and newer")])])]),e._v(" "),o("li",[e._v("Doesn't really teach you anything\n"),o("ul",[o("li",[e._v("For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey")])])])]),e._v(" "),o("h2",{attrs:{id:"wrapping-up"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[e._v("#")]),e._v(" Wrapping up")]),e._v(" "),o("p",[e._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),e._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/cleanup.html"}},[o("strong",[e._v("Cleanup")])])],1)])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/38.d450ac47.js b/assets/js/38.d450ac47.js new file mode 100644 index 0000000..6a2398d --- /dev/null +++ b/assets/js/38.d450ac47.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{427:function(t,s,e){"use strict";e.r(s);var i=e(25),o=Object(i.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"fixing-irq-conflicts-ssdt-hpet-oc-patches-plist"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fixing-irq-conflicts-ssdt-hpet-oc-patches-plist"}},[t._v("#")]),t._v(" Fixing IRQ Conflicts (SSDT-HPET + OC_Patches.plist)")]),t._v(" "),e("p",[t._v("So you miss having those fancy hot-patches from Clover like FixIPIC, FixTMR, FixRTC, FixHPET, etc")]),t._v(" "),e("p",[t._v("Well 1 very small problem, figuring out IRQ patching is a massive headache. "),e("strong",[t._v("I highly recommend you use SSDTTime")]),t._v(". So head over to "),e("RouterLink",{attrs:{to:"/ssdt-methods/ssdt-easy.html"}},[t._v("SSDT: Easy Way")]),t._v(" on how to make it.(use option "),e("code",[t._v("C")]),t._v(" to omit conflicting legacy IRQs)")],1)])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/39.adb1ffd1.js b/assets/js/39.adb1ffd1.js new file mode 100644 index 0000000..b534a01 --- /dev/null +++ b/assets/js/39.adb1ffd1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{429:function(t,e,a){"use strict";a.r(e);var n=a(25),o=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"fixing-nvram-prebuilt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fixing-nvram-prebuilt"}},[t._v("#")]),t._v(" Fixing NVRAM: Prebuilt")]),t._v(" "),a("p",[t._v("By far the easiest method, all you need to do is download the following file:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PMC.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PMC.aml"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("Main things to note with this method:")]),t._v(" "),a("ul",[a("li",[t._v("Bit Bloated\n"),a("ul",[a("li",[t._v("There's ACPI naming for most common paths, this means there's added delays in boot times(though unnoticeable to most as it's generally less than 0.5 seconds longer)")])])]),t._v(" "),a("li",[t._v("Doesn't really teach you anything\n"),a("ul",[a("li",[t._v("For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey")])])])]),t._v(" "),a("h2",{attrs:{id:"wrapping-up"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[t._v("#")]),t._v(" Wrapping up")]),t._v(" "),a("p",[t._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/cleanup.html"}},[a("strong",[t._v("Cleanup")])])],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/4.7080bedd.js b/assets/js/4.7080bedd.js new file mode 100644 index 0000000..90b5acb --- /dev/null +++ b/assets/js/4.7080bedd.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{329:function(e,t,a){e.exports=a.p+"assets/img/lpc.bfa9cf23.png"},330:function(e,t,a){e.exports=a.p+"assets/img/pci0.4477f361.png"},371:function(e,t,a){e.exports=a.p+"assets/img/ACPI000E.f11d4625.png"},372:function(e,t,a){e.exports=a.p+"assets/img/PNP0B00.cd0c5876.png"},373:function(e,t,a){e.exports=a.p+"assets/img/ssdt-before.b9b19f9b.png"},374:function(e,t,a){e.exports=a.p+"assets/img/ssdt-after.3d0ae705.png"},420:function(e,t,a){"use strict";a.r(t);var s=a(25),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-system-clocks-manual"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-system-clocks-manual"}},[e._v("#")]),e._v(" Fixing System Clocks: Manual")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#determining-which-ssdt-you-need"}},[e._v("Determining which SSDT you need")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#rtc0-method"}},[e._v("RTC0 Method")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[e._v("Finding the ACPI path")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[e._v("Compiling the SSDT")])])])]),e._v(" "),s("li",[s("a",{attrs:{href:"#wrapping-up"}},[e._v("Wrapping up")])])]),e._v(" "),s("h2",{attrs:{id:"determining-which-ssdt-you-need"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#determining-which-ssdt-you-need"}},[e._v("#")]),e._v(" Determining which SSDT you need")]),e._v(" "),s("p",[e._v("Finding which SSDT you need is quite easy actually, first open your decompiled DSDT you got from "),s("RouterLink",{attrs:{to:"/Manual/dump.html"}},[e._v("Dumping the DSDT")]),e._v(" and "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("Decompiling and Compiling")]),e._v(" with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an "),s("a",{attrs:{href:"https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl",target:"_blank",rel:"noopener noreferrer"}},[e._v("ACPI extension"),s("OutboundLink")],1),e._v(" that can also help).")],1),e._v(" "),s("p",[e._v("Next search for "),s("code",[e._v("ACPI000E")]),e._v(". You should get something similar:")]),e._v(" "),s("p",[s("img",{attrs:{src:a(371),alt:""}})]),e._v(" "),s("p",[e._v("The above tells us a few things:")]),e._v(" "),s("ul",[s("li",[e._v("We in fact do have an AWAC clock\n"),s("ul",[s("li",[e._v("If nothing shows up, you don't need to do anything for AWAC or RTC")])])]),e._v(" "),s("li",[e._v("It can be easily disabled with STAS(if not, you can skip to here: "),s("a",{attrs:{href:"#rtc0-method"}},[e._v("RTC0 Method")]),e._v(")\n"),s("ul",[s("li",[s("code",[e._v("_STA")]),e._v(" is the device status, with "),s("code",[e._v("Zero")]),e._v(" meaning it won't show up")])])])]),e._v(" "),s("p",[e._v("But to double check, next search for "),s("code",[e._v("PNP0B00")]),e._v(":")]),e._v(" "),s("p",[s("img",{attrs:{src:a(372),alt:""}})]),e._v(" "),s("p",[e._v("And looks at that, we can in fact disable our AWAC and enable the RTC! If not skip to here: "),s("a",{attrs:{href:"#rtc0-method"}},[e._v("RTC0 Method")])]),e._v(" "),s("p",[e._v("Now it's as simple as grabbing "),s("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-AWAC.dsl"),s("OutboundLink")],1),e._v(" and "),s("a",{attrs:{href:"#compiling-the-ssdt"}},[e._v("compile")]),e._v(", no changes needed You can also use the below SSDT to the same effect:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-AWAC.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-AWAC.aml"),s("OutboundLink")],1)])]),e._v(" "),s("h3",{attrs:{id:"ini-edge-cases"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ini-edge-cases"}},[e._v("#")]),e._v(" _INI Edge Cases")]),e._v(" "),s("p",[e._v("Mainly seen on X299 refresh boards, there's already a "),s("code",[e._v("Scope (_SB) { Method (_INI...")]),e._v(" in your DSDT. This means our SSDT-AWAC will conflict with the one found in our DSDT. For these situations, you'll want to remove "),s("code",[e._v("Method (_INI, 0, NotSerialized) {}")]),e._v(" from the SSDT. You'll be left this this in the end:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AWAC", 0x00000000)\n{\n External (STAS, IntObj)\n\n Scope (_SB)\n {\n If (_OSI ("Darwin"))\n {\n STAS = One\n }\n }\n}\n')])])]),s("h2",{attrs:{id:"rtc0-method"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rtc0-method"}},[e._v("#")]),e._v(" RTC0 Method")]),e._v(" "),s("p",[e._v("This method is for those who either don't have a "),s("code",[e._v("PNP0B00")]),e._v(" device to re-enable or have no easy way(via STAS variable).")]),e._v(" "),s("h3",{attrs:{id:"finding-the-acpi-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path"}},[e._v("#")]),e._v(" Finding the ACPI path")]),e._v(" "),s("p",[e._v("Assuming you've gotten your DSDT already opened from earlier, search for the following:")]),e._v(" "),s("ul",[s("li",[e._v("Finding the LowPinCount path:\n"),s("ul",[s("li",[e._v("Search "),s("code",[e._v("Name (_ADR, 0x001F0000)")])])])]),e._v(" "),s("li",[e._v("Finding the PCI path:\n"),s("ul",[s("li",[e._v("Search "),s("code",[e._v("PNP0A08")]),e._v(" (If multiple show up, use the first one)")])])])]),e._v(" "),s("p",[e._v("You should get something like the following show up:")]),e._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"center"}},[e._v("LPC Pathing")]),e._v(" "),s("th",{staticStyle:{"text-align":"center"}},[e._v("PCI Pathing")])])]),e._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"center"}},[s("img",{attrs:{src:a(329),alt:""}})]),e._v(" "),s("td",{staticStyle:{"text-align":"center"}},[s("img",{attrs:{src:a(330),alt:""}})])])])]),e._v(" "),s("p",[e._v("From the above, we can see we have both "),s("code",[e._v("PCI0")]),e._v(" and "),s("code",[e._v("LPC")]),e._v(". Now we can head to the next stage")]),e._v(" "),s("h3",{attrs:{id:"edits-to-the-sample-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("#")]),e._v(" Edits to the sample SSDT")]),e._v(" "),s("p",[e._v("Now that we have our ACPI path, lets grab our SSDT and get to work:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-RTC0.dsl"),s("OutboundLink")],1)])]),e._v(" "),s("p",[e._v("By default, this uses "),s("code",[e._v("PCI0.LPCB")]),e._v(" for the pathing. you'll want to rename accordingly.")]),e._v(" "),s("p",[e._v("Following the example from above, we'll be renaming it to "),s("code",[e._v("PCI0.LPC")]),e._v(":")]),e._v(" "),s("p",[s("strong",[e._v("Before")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this\n\nScope (_SB.PCI0.LPCB) <- Rename this\n")])])]),s("p",[s("img",{attrs:{src:a(373),alt:""}})]),e._v(" "),s("p",[e._v("Following the example pathing we found, the SSDT should look something like this:")]),e._v(" "),s("p",[s("strong",[e._v("After")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0.LPC, DeviceObj) <- Renamed\n\nScope (_SB.PCI0.LPC) <- Renamed\n")])])]),s("p",[s("img",{attrs:{src:a(374),alt:""}})]),e._v(" "),s("h3",{attrs:{id:"compiling-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#compiling-the-ssdt"}},[e._v("#")]),e._v(" Compiling the SSDT")]),e._v(" "),s("p",[e._v("With the SSDT done, you're now "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("ready to compile the SSDT!")])],1),e._v(" "),s("h2",{attrs:{id:"wrapping-up"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[e._v("#")]),e._v(" Wrapping up")]),e._v(" "),s("p",[e._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/cleanup.html"}},[s("strong",[e._v("Cleanup")])])],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/40.841e8a37.js b/assets/js/40.841e8a37.js new file mode 100644 index 0000000..b00ff7f --- /dev/null +++ b/assets/js/40.841e8a37.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{430:function(t,s,e){"use strict";e.r(s);var a=e(25),i=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"fixing-nvram-ssdt-pmc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fixing-nvram-ssdt-pmc"}},[t._v("#")]),t._v(" Fixing NVRAM (SSDT-PMC)")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#what-this-ssdt-does"}},[t._v("What this SSDT does")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("Methods to make this SSDT")])])]),t._v(" "),e("h2",{attrs:{id:"what-this-ssdt-does"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-this-ssdt-does"}},[t._v("#")]),t._v(" What this SSDT does")]),t._v(" "),e("p",[t._v('This SSDT is required for all "true" 300 series motherboards(Z370 is excluded), it specifically brings back NVRAM support and requires very little configuration for the end user.')]),t._v(" "),e("ul",[e("li",[t._v("B360")]),t._v(" "),e("li",[t._v("B365")]),t._v(" "),e("li",[t._v("H310")]),t._v(" "),e("li",[t._v("H370")]),t._v(" "),e("li",[t._v("Z390")])]),t._v(" "),e("p",[t._v("10th gen motherboards "),e("strong",[t._v("do not")]),t._v(" need this SSDT, NVRAM's native on these platforms.")]),t._v(" "),e("h2",{attrs:{id:"methods-to-make-this-ssdt"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("#")]),t._v(" Methods to make this SSDT")]),t._v(" "),e("p",[t._v("The main ways to make this SSDT:")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/Universal/nvram-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/Universal/nvram-methods/manual.html"}},[t._v("Manual")])],1)])])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/41.582faaa6.js b/assets/js/41.582faaa6.js new file mode 100644 index 0000000..12b44bc --- /dev/null +++ b/assets/js/41.582faaa6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{432:function(e,t,r){"use strict";r.r(t);var a=r(25),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"fixing-power-management-prebuilt"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fixing-power-management-prebuilt"}},[e._v("#")]),e._v(" Fixing Power Management: Prebuilt")]),e._v(" "),r("p",[e._v("By far the easiest way to get SSDT-PLUG is just downloading the below file:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PLUG-DRTNIA.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-PLUG-DRTNIA.aml"),r("OutboundLink")],1)])]),e._v(" "),r("p",[e._v("This prebuilt file is just a precompiled version of "),r("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-PLUG"),r("OutboundLink")],1),e._v(" provided by Acidanthera.")]),e._v(" "),r("p",[e._v("The main things to note with this method:")]),e._v(" "),r("ul",[r("li",[e._v("Quite Bloated\n"),r("ul",[r("li",[e._v("There's ACPI naming for every type, this means there's added delays in boot times(though unnoticeable to most as it's generally 0.5 seconds longer)")])])]),e._v(" "),r("li",[e._v("Doesn't really teach you anything\n"),r("ul",[r("li",[e._v("For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey")])])])]),e._v(" "),r("h2",{attrs:{id:"wrapping-up"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[e._v("#")]),e._v(" Wrapping up")]),e._v(" "),r("p",[e._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),e._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/cleanup.html"}},[r("strong",[e._v("Cleanup")])])],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/42.ed0e6ae5.js b/assets/js/42.ed0e6ae5.js new file mode 100644 index 0000000..e5b3754 --- /dev/null +++ b/assets/js/42.ed0e6ae5.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{433:function(e,t,o){"use strict";o.r(t);var a=o(25),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"fixing-power-management-ssdttime"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#fixing-power-management-ssdttime"}},[e._v("#")]),e._v(" Fixing Power Management: SSDTTime")]),e._v(" "),o("p",[e._v("The second involves using SSDTTime which automates most of the process. See here on how to use it: "),o("RouterLink",{attrs:{to:"/ssdt-methods/ssdt-easy.html"}},[e._v("SSDTs: Easy Way")])],1),e._v(" "),o("p",[e._v("To get the SSDT-PLUG, run the following:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("4. Dump DSDT")]),e._v(" then run "),o("code",[e._v("3. PluginType")])])]),e._v(" "),o("p",[e._v("This will provide you with some files, the main one you care about is SSDT-PLUG**.aml**. The DSDT and .dsl are only left for referencing or verification.")]),e._v(" "),o("p",[e._v("The main things to note with this method:")]),e._v(" "),o("ul",[o("li",[e._v("Doesn't work on HEDT and server hardware(ie. X99 and X299)\n"),o("ul",[o("li",[e._v("While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the "),o("a",{attrs:{href:"#prebuilts"}},[e._v("Prebuilt")]),e._v(" or "),o("a",{attrs:{href:"#manual"}},[e._v("Manual")]),e._v(" method")])])]),e._v(" "),o("li",[e._v("Doesn't really teach you anything\n"),o("ul",[o("li",[e._v("For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey")])])])]),e._v(" "),o("h2",{attrs:{id:"wrapping-up"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[e._v("#")]),e._v(" Wrapping up")]),e._v(" "),o("p",[e._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),e._v(" "),o("ul",[o("li",[o("RouterLink",{attrs:{to:"/cleanup.html"}},[o("strong",[e._v("Cleanup")])])],1)])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/43.8c05d7f3.js b/assets/js/43.8c05d7f3.js new file mode 100644 index 0000000..e283c97 --- /dev/null +++ b/assets/js/43.8c05d7f3.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{434:function(t,e,s){"use strict";s.r(e);var a=s(25),o=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-power-management-ssdt-plug"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-power-management-ssdt-plug"}},[t._v("#")]),t._v(" Fixing Power Management (SSDT-PLUG)")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#fixing-power-management-ssdt-plug"}},[t._v("Fixing Power Management (SSDT-PLUG)")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#what-this-ssdt-does"}},[t._v("What this SSDT does")])]),t._v(" "),s("li",[s("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("Methods to make this SSDT")])])])])]),t._v(" "),s("h2",{attrs:{id:"what-this-ssdt-does"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-this-ssdt-does"}},[t._v("#")]),t._v(" What this SSDT does")]),t._v(" "),s("p",[t._v("The purpose of SSDT-PLUG is to allow the kernel's XCPM(XNU's CPU Power Management) to manage our CPU's power management. It's pretty self explanatory why you'd want this.")]),t._v(" "),s("p",[s("strong",[t._v("Note")]),t._v(": SSDT-PLUG is only compatible with Intel's Haswell and newer CPUs, Sandy Bridge and Ivy Bridge will need to follow the "),s("a",{attrs:{href:"https://dortania.github.io/OpenCore-Post-Install/universal/pm.html#sandy-and-ivy-bridge-power-management",target:"_blank",rel:"noopener noreferrer"}},[t._v("ssdtPRgen method"),s("OutboundLink")],1),t._v("(in post-install) while AMD users should not use this(unless attempting to attach AGPM which is outside the scope of Dortania's guides)")]),t._v(" "),s("h2",{attrs:{id:"methods-to-make-this-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("#")]),t._v(" Methods to make this SSDT")]),t._v(" "),s("p",[t._v("For SSDT-PLUG, there are 3 methods you can choose from:")]),t._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/Universal/plug-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/Universal/plug-methods/ssdttime.html"}},[t._v("SSDTTime")]),t._v(" "),s("ul",[s("li",[t._v("Note this method does not support "),s("strong",[t._v("servers")]),t._v(" or "),s("strong",[t._v("HEDT systems")])])])],1),t._v(" "),s("li",[s("RouterLink",{attrs:{to:"/Universal/plug-methods/manual.html"}},[t._v("Manual")])],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/44.40f02ba5.js b/assets/js/44.40f02ba5.js new file mode 100644 index 0000000..2c5b0d5 --- /dev/null +++ b/assets/js/44.40f02ba5.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{436:function(t,e,r){"use strict";r.r(e);var a=r(25),n=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"fixing-usb-prebuilt"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fixing-usb-prebuilt"}},[t._v("#")]),t._v(" Fixing USB: Prebuilt")]),t._v(" "),r("p",[t._v("By far the easiest method, all you need to do is download the following file:")]),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-RHUB.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-RHUB.aml"),r("OutboundLink")],1)])]),t._v(" "),r("h2",{attrs:{id:"wrapping-up"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[t._v("#")]),t._v(" Wrapping up")]),t._v(" "),r("p",[t._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/cleanup.html"}},[r("strong",[t._v("Cleanup")])])],1)])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/45.1da8bea8.js b/assets/js/45.1da8bea8.js new file mode 100644 index 0000000..4871a1d --- /dev/null +++ b/assets/js/45.1da8bea8.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{437:function(t,s,e){"use strict";e.r(s);var a=e(25),i=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"fixing-usb"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fixing-usb"}},[t._v("#")]),t._v(" Fixing USB")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#what-this-ssdt-does"}},[t._v("What this SSDT does")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("Methods to make this SSDT")])])]),t._v(" "),e("h2",{attrs:{id:"what-this-ssdt-does"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-this-ssdt-does"}},[t._v("#")]),t._v(" What this SSDT does")]),t._v(" "),e("p",[t._v("So on 400 series motherboards, certain OEMs have broken the ACPI spec and this results in issues when booting into macOS. To fix this, we'll want to turn off the RHUB device and force macOS to manually rebuild the ports.")]),t._v(" "),e("p",[t._v("The following platforms will require fixing:")]),t._v(" "),e("ul",[e("li",[t._v("Mobile Icelake(currently Dell and Lenovo are the 2 known with this issue)")]),t._v(" "),e("li",[t._v("Asus Z490 (Gigabyte and AsRock users are fine, whether MSI currently this is unknown)")])]),t._v(" "),e("h2",{attrs:{id:"methods-to-make-this-ssdt"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("#")]),t._v(" Methods to make this SSDT")]),t._v(" "),e("p",[t._v("For the RTC fix, there are 2 methods you can choose from:")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/Universal/rhub-methods/prebuilt.html"}},[t._v("Prebuilt")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/Universal/rhub-methods/manual.html"}},[t._v("Manual")])],1)])])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/46.337c251a.js b/assets/js/46.337c251a.js new file mode 100644 index 0000000..dbfc01d --- /dev/null +++ b/assets/js/46.337c251a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{439:function(t,s,e){"use strict";e.r(s);var i=e(25),a=Object(i.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"fixing-smbus-support-ssdt-sbus-mchc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fixing-smbus-support-ssdt-sbus-mchc"}},[t._v("#")]),t._v(" Fixing SMBus support (SSDT-SBUS-MCHC)")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#what-this-ssdt-does"}},[t._v("What this SSDT does")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("Methods to make this SSDT")])])]),t._v(" "),e("h2",{attrs:{id:"what-this-ssdt-does"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#what-this-ssdt-does"}},[t._v("#")]),t._v(" What this SSDT does")]),t._v(" "),e("p",[t._v("This section of the guide refers to fixing AppleSMBus support in macOS, what is AppleSMBus? Well this mainly handles the System Management Bus, which has many functions like:")]),t._v(" "),e("ul",[e("li",[t._v("AppleSMBusController\n"),e("ul",[e("li",[t._v("Aids with correct temperature, fan, voltage, ICH, etc readings")])])]),t._v(" "),e("li",[t._v("AppleSMBusPCI\n"),e("ul",[e("li",[t._v("Same idea as AppleSMBusController except for low bandwidth PCI devices")])])]),t._v(" "),e("li",[t._v("Memory Reporting\n"),e("ul",[e("li",[t._v("Aids in proper memory reporting and can aid in getting better kernel panic details if memory related")])])]),t._v(" "),e("li",[t._v("Other things SMBus does: "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/System_Management_Bus",target:"_blank",rel:"noopener noreferrer"}},[t._v("SMBus wiki"),e("OutboundLink")],1)])]),t._v(" "),e("p",[t._v("For install purposes, this SSDT isn't needed but for post-install it's recommended to put the final touches on your hack.")]),t._v(" "),e("h2",{attrs:{id:"methods-to-make-this-ssdt"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#methods-to-make-this-ssdt"}},[t._v("#")]),t._v(" Methods to make this SSDT")]),t._v(" "),e("p",[t._v("To make this SSDT, you only got 1 method: Doing it manually")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/Universal/smbus-methods/manual.html"}},[t._v("Manual")])],1)])])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/47.4677ceb1.js b/assets/js/47.4677ceb1.js new file mode 100644 index 0000000..dcd0efc --- /dev/null +++ b/assets/js/47.4677ceb1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{441:function(e,t,o){"use strict";o.r(t);var n=o(25),i=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"cleanup"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#cleanup"}},[e._v("#")]),e._v(" Cleanup")]),e._v(" "),o("p",[e._v("So you've made all your SSDTs but now there's one thing left: Adding them to Opencore")]),e._v(" "),o("p",[e._v("The 2 main locations:")]),e._v(" "),o("ul",[o("li",[e._v("EFI/OC/ACPI (Only "),o("strong",[e._v(".aml")]),e._v(" files, reminder to "),o("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("compile your SSDTs")]),e._v(")")],1),e._v(" "),o("li",[e._v("config.plist -> ACPI -> Add")])]),e._v(" "),o("p",[e._v("You can save yourself some work with the config.plist by running Cmd/Ctrl+R in ProperTree. "),o("strong",[e._v("Reminder do not add your DSDT.aml to your EFI")])]),e._v(" "),o("p",[e._v("For those who do not yet have a config.plist, you'll want to next head back to your respective OpenCore guides and create the config.plist:")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://dortania.github.io/OpenCore-Install-Guide/",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenCore Install guide"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("Users of "),o("code",[e._v("FixHPET")]),e._v(" will also need to merge oc_patches.plist into their config.plist")]),e._v(" "),o("p",[e._v("Steps to do this:")]),e._v(" "),o("ul",[o("li",[e._v("Open both files,")]),e._v(" "),o("li",[e._v("Delete the "),o("code",[e._v("ACPI -> Patch")]),e._v(" section from config.plist")]),e._v(" "),o("li",[e._v("Copy the "),o("code",[e._v("ACPI -> Patch")]),e._v(" section from patches.plist")]),e._v(" "),o("li",[e._v("Paste into where old patches were in config.plist")])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/48.a66fecfb.js b/assets/js/48.a66fecfb.js new file mode 100644 index 0000000..a3ec1db --- /dev/null +++ b/assets/js/48.a66fecfb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{443:function(e,t,s){"use strict";s.r(t);var a=s(25),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"ssdts-the-long-way"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ssdts-the-long-way"}},[e._v("#")]),e._v(" SSDTs: The long way")]),e._v(" "),s("p",[e._v("Well sadly some things are not handled by SSDTTime, well have no fear as making SSDTs is super easy. The basic process:")]),e._v(" "),s("ul",[s("li",[e._v("Dump DSDT(the one SSDTTime did for use will work)")]),e._v(" "),s("li",[e._v("Decompile DSDT")]),e._v(" "),s("li",[e._v("Make SSDTs based of of it(You'll need either MaciASL or a text editor for this)")]),e._v(" "),s("li",[e._v("Compile SSDTs")])]),e._v(" "),s("p",[e._v("Now continue forth and master the ways of ACPI!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/49.6d09c6c3.js b/assets/js/49.6d09c6c3.js new file mode 100644 index 0000000..5b881b4 --- /dev/null +++ b/assets/js/49.6d09c6c3.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{444:function(t,e,l){"use strict";l.r(e);var a=l(25),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,l=t._self._c||e;return l("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[l("h1",{attrs:{id:"how-to-create-ssdts"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#how-to-create-ssdts"}},[t._v("#")]),t._v(" How to create SSDTs")]),t._v(" "),l("p",[t._v("Creating SSDTs mainly fall into 3 camps:")]),t._v(" "),l("ul",[l("li",[t._v("Prebuilt SSDTs\n"),l("ul",[l("li",[t._v("They work but not perfect")])])]),t._v(" "),l("li",[t._v("Automated tools\n"),l("ul",[l("li",[t._v("Mainly seen with SSDTTime, work much better though can't cover all situations")])])]),t._v(" "),l("li",[t._v("Manually creating them\n"),l("ul",[l("li",[t._v("Will always work, be much cleaner and get to learn about the process")])])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/5.700830ef.js b/assets/js/5.700830ef.js new file mode 100644 index 0000000..78596fc --- /dev/null +++ b/assets/js/5.700830ef.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{375:function(e,t,a){e.exports=a.p+"assets/img/pnp.8c2387eb.png"},376:function(e,t,a){e.exports=a.p+"assets/img/ec.dd4b7c64.png"},377:function(e,t,a){e.exports=a.p+"assets/img/ssdt-before.b846f355.png"},378:function(e,t,a){e.exports=a.p+"assets/img/ssdt-after.7996c4b7.png"},379:function(e,t,a){e.exports=a.p+"assets/img/sta.e2d0aed0.png"},424:function(e,t,a){"use strict";a.r(t);var s=a(25),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-embedded-controllers-manual"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-embedded-controllers-manual"}},[e._v("#")]),e._v(" Fixing Embedded Controllers: Manual")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#fixing-embedded-controllers-manual"}},[e._v("Fixing Embedded Controllers: Manual")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[e._v("Finding the ACPI path")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#dsdt"}},[e._v("DSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#devicemanager"}},[e._v("DeviceManager")])])])]),e._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#edge-cases"}},[e._v("Edge Cases")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#multiple-pnp0c09s-show-up"}},[e._v("Multiple PNP0C09's show up")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#no-pnp0c09-show-up"}},[e._v("No PNP0C09 show up")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#pnp0c09-already-named-ec"}},[e._v("PNP0C09 already named "),s("code",[e._v("EC")])])]),e._v(" "),s("li",[s("a",{attrs:{href:"#pnp0c09-already-has-an-_sta-method"}},[e._v("PNP0C09 already has an "),s("code",[e._v("_STA")]),e._v(" method")])])])]),e._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[e._v("Compiling the SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#wrapping-up"}},[e._v("Wrapping up")])])])])]),e._v(" "),s("p",[e._v("TO-DO:")]),e._v(" "),s("ul",[s("li",[e._v("Finish Edge cases and sample SSDT edits")])]),e._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path"}},[e._v("#")]),e._v(" Finding the ACPI path")]),e._v(" "),s("p",[e._v("To find the ACPI pathing, you have 2 methods:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#DSDT"}},[e._v("DSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#devicemanager"}},[e._v("DeviceManager")])])]),e._v(" "),s("h3",{attrs:{id:"dsdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#dsdt"}},[e._v("#")]),e._v(" DSDT")]),e._v(" "),s("p",[e._v("Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from "),s("RouterLink",{attrs:{to:"/Manual/dump.html"}},[e._v("Dumping the DSDT")]),e._v(" and "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("Decompiling and Compiling")]),e._v(" with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an "),s("a",{attrs:{href:"https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl",target:"_blank",rel:"noopener noreferrer"}},[e._v("ACPI extension"),s("OutboundLink")],1),e._v(" that can also help).")],1),e._v(" "),s("p",[e._v("Next, search for "),s("code",[e._v("PNP0C09")]),e._v(". You should get something similar:")]),e._v(" "),s("p",[s("img",{attrs:{src:a(375),alt:""}})]),e._v(" "),s("p",[e._v("From the above example we see 2 main things:")]),e._v(" "),s("ul",[s("li",[e._v("Name of our embedded controller\n"),s("ul",[s("li",[e._v("In this case being "),s("code",[e._v("EC0")])])])]),e._v(" "),s("li",[e._v("Pathing of our embedded controller\n"),s("ul",[s("li",[s("code",[e._v("PC00.LPC0")])])])])]),e._v(" "),s("p",[e._v("But now we get into edge case territory, what fun!")]),e._v(" "),s("p",[e._v("The main ones to check for are:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#fixing-embedded-controllers-manual"}},[e._v("Fixing Embedded Controllers: Manual")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[e._v("Finding the ACPI path")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#dsdt"}},[e._v("DSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#devicemanager"}},[e._v("DeviceManager")])])])]),e._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#edge-cases"}},[e._v("Edge Cases")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#multiple-pnp0c09s-show-up"}},[e._v("Multiple PNP0C09's show up")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#no-pnp0c09-show-up"}},[e._v("No PNP0C09 show up")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#pnp0c09-already-named-ec"}},[e._v("PNP0C09 already named "),s("code",[e._v("EC")])])]),e._v(" "),s("li",[s("a",{attrs:{href:"#pnp0c09-already-has-an-_sta-method"}},[e._v("PNP0C09 already has an "),s("code",[e._v("_STA")]),e._v(" method")])])])]),e._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[e._v("Compiling the SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#wrapping-up"}},[e._v("Wrapping up")])])])])]),e._v(" "),s("p",[e._v("If none of the above apply to you, you're ready for the next section:")]),e._v(" "),s("h3",{attrs:{id:"devicemanager"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#devicemanager"}},[e._v("#")]),e._v(" DeviceManager")]),e._v(" "),s("p",[e._v("If you already have Windows installed on this machine, finding the EC pathing is fairly easy.")]),e._v(" "),s("p",[e._v("Start by opening up Device Manager in Windows and looking for a device named "),s("code",[e._v("Embedded Controller")]),e._v(". Once found, click on it and select the "),s("code",[e._v("BIOS device Name")]),e._v(" entry. You should get something like this:")]),e._v(" "),s("p",[s("img",{attrs:{src:a(376),alt:""}})]),e._v(" "),s("p",[e._v("From the above, we can see that our pathing is "),s("code",[e._v("SB.PC00.LPC0.EC0")])]),e._v(" "),s("p",[e._v("Now with the pathing, you can head here: "),s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("h2",{attrs:{id:"edits-to-the-sample-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("#")]),e._v(" Edits to the sample SSDT")]),e._v(" "),s("p",[e._v("Now that we have our ACPI path, lets grab our SSDT and get to work:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-EC-USBX"),s("OutboundLink")],1),e._v(" "),s("ul",[s("li",[e._v("For Skylake and newer and all AMD systems")])])]),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-EC"),s("OutboundLink")],1),e._v(" "),s("ul",[s("li",[e._v("For Broadwell and older")])])])]),e._v(" "),s("p",[e._v("Now when opening this SSDT, you'll notice a few things. Mainly:")]),e._v(" "),s("ul",[s("li",[e._v("Some code is commented out\n"),s("ul",[s("li",[e._v("This is code for disabling our EC")]),e._v(" "),s("li",[e._v("Laptops users "),s("strong",[e._v("SHOULD NOT")]),e._v(" uncomment this")])])]),e._v(" "),s("li",[e._v("There's a new EC called "),s("code",[e._v("Device (EC)")]),e._v(" "),s("ul",[s("li",[s("strong",[e._v("DO NOT RENAME THIS")]),e._v(", this will be the EC we give to macOS")])])])]),e._v(" "),s("p",[s("strong",[e._v("Before")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this\n\nScope (_SB.PCI0.LPCB) <- Rename this\n")])])]),s("p",[s("img",{attrs:{src:a(377),alt:""}})]),e._v(" "),s("p",[e._v("Following the example pathing we found, the SSDT should look something like this:")]),e._v(" "),s("p",[s("strong",[e._v("After")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PC00.LPC0, DeviceObj) <- Renamed\n\nScope (_SB.PC00.LPC0) <- Renamed\n")])])]),s("p",[s("img",{attrs:{src:a(378),alt:""}})]),e._v(" "),s("h2",{attrs:{id:"edge-cases"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#edge-cases"}},[e._v("#")]),e._v(" Edge Cases")]),e._v(" "),s("h3",{attrs:{id:"multiple-pnp0c09-s-show-up"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#multiple-pnp0c09-s-show-up"}},[e._v("#")]),e._v(" Multiple PNP0C09's show up")]),e._v(" "),s("p",[e._v("When multiple PNP0C09 show up, we need to next check for the following properties:")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("_HID")]),e._v(" (Hardware ID)")]),e._v(" "),s("li",[s("code",[e._v("_CRS")]),e._v(" (Current Resource Settings)")]),e._v(" "),s("li",[s("code",[e._v("_GPE")]),e._v(" (General Purpose Events)")])]),e._v(" "),s("p",[e._v("What these signify is whether this PNP0C09 device is real or not, as per the "),s("a",{attrs:{href:"https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("ACPI spec"),s("OutboundLink")],1),e._v(". So one's matching the above criteria are the one's we want to disable.")]),e._v(" "),s("ul",[s("li",[e._v("Note: If _STA shows up as well, you'll need to go here: "),s("a",{attrs:{href:"#pnp0c09-already-has-an-sta-method"}},[e._v("PNP0C09 already has an "),s("code",[e._v("_STA")]),e._v(" method")])])]),e._v(" "),s("h3",{attrs:{id:"no-pnp0c09-show-up"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#no-pnp0c09-show-up"}},[e._v("#")]),e._v(" No PNP0C09 show up")]),e._v(" "),s("p",[e._v("When this happens, you'll only need to create a \"dummy\" EC for macOS. You'll still want to find the PCI and LPC pathing for this device. So follow the guide as if you were creating a laptop SSDT-EC/USBX.")]),e._v(" "),s("h3",{attrs:{id:"pnp0c09-already-named-ec"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pnp0c09-already-named-ec"}},[e._v("#")]),e._v(" PNP0C09 already named "),s("code",[e._v("EC")])]),e._v(" "),s("p",[e._v("Congrats! No need to create an SSDT-EC! However you will still want USBX if you're skylake or newer.")]),e._v(" "),s("p",[e._v("Prebuilt can be grabbed here: "),s("a",{attrs:{href:"https://github.com/dortania/USB-Map-Guide/blob/master/extra-files/SSDT-USBX.aml",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-USBX.aml"),s("OutboundLink")],1)]),e._v(" "),s("h3",{attrs:{id:"pnp0c09-already-has-an-sta-method"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pnp0c09-already-has-an-sta-method"}},[e._v("#")]),e._v(" PNP0C09 already has an "),s("code",[e._v("_STA")]),e._v(" method")]),e._v(" "),s("p",[e._v("This is the equivalent of not having an EC as we can't control it with our SSDT-EC, instead we'll need to create a \"dummy\" EC for macOS. You'll still want to find the PCI and LPC pathing for this device. So follow the guide as if you were creating a laptop SSDT-EC/USBX.")]),e._v(" "),s("p",[e._v("Example of an EC with STA already:")]),e._v(" "),s("p",[s("img",{attrs:{src:a(379),alt:"Credit to rottenpants466"}})]),e._v(" "),s("h2",{attrs:{id:"compiling-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#compiling-the-ssdt"}},[e._v("#")]),e._v(" Compiling the SSDT")]),e._v(" "),s("p",[e._v("With the SSDT done, you're now "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("ready to compile the SSDT!")])],1),e._v(" "),s("h2",{attrs:{id:"wrapping-up"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[e._v("#")]),e._v(" Wrapping up")]),e._v(" "),s("p",[e._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/cleanup.html"}},[s("strong",[e._v("Cleanup")])])],1)])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/50.c06a254a.js b/assets/js/50.c06a254a.js new file mode 100644 index 0000000..0d6e07b --- /dev/null +++ b/assets/js/50.c06a254a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{445:function(t,e,a){"use strict";a.r(e);var r=a(25),l=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"pre-built-ssdts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-built-ssdts"}},[t._v("#")]),t._v(" Pre-Built SSDTs")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#power-management"}},[t._v("Power Management")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#embedded-controllers"}},[t._v("Embedded Controllers")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#trackpad"}},[t._v("Trackpad")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#backlight"}},[t._v("Backlight")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#system-clockawac"}},[t._v("System Clock(AWAC)")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#nvrampmc"}},[t._v("NVRAM(PMC)")])])]),t._v(" "),a("p",[t._v("This is mainly for users who are having troubles either compiling, decompiling or understanding the overal process of ACPI. The main reasons you'd want to avoid is for the following:")]),t._v(" "),a("ul",[a("li",[t._v("Slowing down the boot process\n"),a("ul",[a("li",[t._v("Mainly because these SSDTs have to go through every possible pathing")]),t._v(" "),a("li",[t._v("Fun fact: the prebuilt SSDT-EC-DESKTOP is 42 times larger than making the file yourself")])])]),t._v(" "),a("li",[t._v("Doesn't always work\n"),a("ul",[a("li",[t._v("The SSDTs provided can only handle so many situations, and some may in fact not work")]),t._v(" "),a("li",[t._v("Mainly seen with SSDT-AWAC, as it assumes there is a way the RTC can be easily enabled")])])]),t._v(" "),a("li",[t._v("Teaches nothing\n"),a("ul",[a("li",[t._v("This is the "),a("strong",[t._v("biggest")]),t._v(" issue as you have no real idea on how to troubleshoot or how to make these files down the line")])])])]),t._v(" "),a("p",[t._v("Please refer to "),a("RouterLink",{attrs:{to:"/ssdt-platform.html"}},[t._v("Choosing the SSDTs")]),t._v(" page for which your system needs.")],1),t._v(" "),a("h2",{attrs:{id:"power-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#power-management"}},[t._v("#")]),t._v(" Power Management")]),t._v(" "),a("p",[t._v("For Haswell and newer:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PLUG-DRTNIA.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PLUG-DRTNIA"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("For Ivy Bridge and older, see the "),a("a",{attrs:{href:"https://dortania.github.io/OpenCore-Post-Install/universal/pm.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Optimizing Power Management page"),a("OutboundLink")],1),t._v(". This will be done "),a("em",[t._v("after")]),t._v(" install. AMD CPU users "),a("strong",[t._v("do not")]),t._v(" need any SSDTs for power management.")]),t._v(" "),a("h2",{attrs:{id:"embedded-controllers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#embedded-controllers"}},[t._v("#")]),t._v(" Embedded Controllers")]),t._v(" "),a("p",[t._v("For desktops:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-USBX-DESKTOP.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-EC-USBX-DESKTOP"),a("OutboundLink")],1),t._v(" "),a("ul",[a("li",[t._v("For Skylake and newer and all AMD systems.")])])]),t._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-DESKTOP.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-EC-DESKTOP"),a("OutboundLink")],1),t._v(" "),a("ul",[a("li",[t._v("For Broadwell and older.")])])])]),t._v(" "),a("p",[t._v("For laptops:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-USBX-LAPTOP.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-EC-USBX-LAPTOP"),a("OutboundLink")],1),t._v(" "),a("ul",[a("li",[t._v("For Skylake and newer.")])])]),t._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-LAPTOP.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-EC-LAPTOP"),a("OutboundLink")],1),t._v(" "),a("ul",[a("li",[t._v("For Broadwell and older.")])])])]),t._v(" "),a("h2",{attrs:{id:"trackpad"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#trackpad"}},[t._v("#")]),t._v(" Trackpad")]),t._v(" "),a("p",[t._v("Used for enabling Windows only features in macOS, do note that the below patches will more than likely break Windows booting via OpenCore. I "),a("strong",[t._v("highly")]),t._v(" encourage you to make one yourself to prevent any issues down the line: "),a("RouterLink",{attrs:{to:"/Laptops/trackpad.html"}},[t._v("Trackpad GPI0")])],1),t._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-XOSI.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-XOSI"),a("OutboundLink")],1)])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/XOSI-Rename.plist",target:"_blank",rel:"noopener noreferrer"}},[t._v("XOSI-Rename.plist"),a("OutboundLink")],1)]),t._v(" "),a("ul",[a("li",[t._v("Note you'll need to add this into your config.plist under "),a("code",[t._v("ACPI -> Patch")]),t._v(":")])])])]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"left"}},[t._v("Comment")]),t._v(" "),a("th",{staticStyle:{"text-align":"left"}},[t._v("String")]),t._v(" "),a("th",{staticStyle:{"text-align":"left"}},[t._v("Change _OSI to XOSI")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"left"}},[t._v("Enabled")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("Boolean")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("YES")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[t._v("Count")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("Number")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("0")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[t._v("Limit")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("Number")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("0")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[t._v("Find")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("Data")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("5f4f5349")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[t._v("Replace")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("Data")]),t._v(" "),a("td",{staticStyle:{"text-align":"left"}},[t._v("584f5349")])])])]),t._v(" "),a("h2",{attrs:{id:"backlight"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backlight"}},[t._v("#")]),t._v(" Backlight")]),t._v(" "),a("p",[t._v("For laptops and all-in-one desktops, fixies brightness control support")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PNLF.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PNLF"),a("OutboundLink")],1),t._v(" "),a("ul",[a("li",[t._v("For most users.")])])]),t._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PNLF-CFL.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PNLF-CFL"),a("OutboundLink")],1),t._v(" "),a("ul",[a("li",[t._v("For Coffee Lake and newer.")])])])]),t._v(" "),a("h2",{attrs:{id:"system-clock-awac"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#system-clock-awac"}},[t._v("#")]),t._v(" System Clock(AWAC)")]),t._v(" "),a("p",[t._v("Mainly needed for newer systems running AWAC based system clocks, mainly relavant for Z390 and newer(Gigabyte and AsRock however did backport it to Z370 with a BIOS update)")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-AWAC.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-AWAC"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("The biggest issue with this prebuilt is that we're just guessing you both have an AWAC clock and that it can be turned off, I "),a("strong",[t._v("highly")]),t._v(" encourage you to make one yourself to really know whether you both need this and if it's going to work: "),a("RouterLink",{attrs:{to:"/Universal/awac.html"}},[t._v("AWAC vs RTC")])],1),t._v(" "),a("h2",{attrs:{id:"nvram-pmc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nvram-pmc"}},[t._v("#")]),t._v(" NVRAM(PMC)")]),t._v(" "),a("p",[t._v("Needed to bring back NVRAM support for Z390 and newer, "),a("strong",[t._v("DO NOT USE ON Z370 or older")])]),t._v(" "),a("p",[t._v("Note: Desktop Z490 boards seem to not need this, though if you're having NVRAM issues you can try this SSDT.")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PMC.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PMC"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("Reminder only the following need this SSDT:")]),t._v(" "),a("ul",[a("li",[t._v("B360")]),t._v(" "),a("li",[t._v("B365")]),t._v(" "),a("li",[t._v("H310")]),t._v(" "),a("li",[t._v("H370")]),t._v(" "),a("li",[t._v("Z390")]),t._v(" "),a("li",[t._v("400 series (Comet Lake)")]),t._v(" "),a("li",[t._v("495 series (Icelake)")])]),t._v(" "),a("h2",{attrs:{id:"usb-rhub"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#usb-rhub"}},[t._v("#")]),t._v(" USB(RHUB)")]),t._v(" "),a("p",[t._v("Needed for 10th gen CPUs, Gigabyte and AsRock motherboards don't need this")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-RHUB.aml",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-RHUB.aml"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/51.933dc5b9.js b/assets/js/51.933dc5b9.js new file mode 100644 index 0000000..b85120b --- /dev/null +++ b/assets/js/51.933dc5b9.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{446:function(t,e,a){"use strict";a.r(e);var r=a(25),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"what-ssdts-do-each-platform-need"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-ssdts-do-each-platform-need"}},[t._v("#")]),t._v(" What SSDTs do each platform need")]),t._v(" "),a("p",[t._v("Please see the "),a("strong",[t._v("specific ACPI section of your config.plist")]),t._v(", all SSDTs needed are covered there with a brief explainer. But here's a very quick TL;DR:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#what-ssdts-do-each-platform-need"}},[t._v("What SSDTs do each platform need")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#desktop"}},[t._v("Desktop")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#laptop"}},[t._v("Laptop")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ssdt-creation"}},[t._v("SSDT Creation")])])])])]),t._v(" "),a("h2",{attrs:{id:"desktop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#desktop"}},[t._v("#")]),t._v(" Desktop")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Platforms")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("CPU")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("EC")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("AWAC")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("NVRAM")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("USB")])])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("SandyBridge")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"2"}},[a("a",{attrs:{href:"https://dortania.github.io/OpenCore-Post-Install/universal/pm.html#sandy-and-ivy-bridge-power-management",target:"_blank",rel:"noopener noreferrer"}},[t._v("CPU-PM"),a("OutboundLink")],1),t._v(" (Run in Post-Install)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"4"}},[a("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[t._v("SSDT-EC")])],1),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("N/A")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Ivy Bridge")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"5"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"5"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"6"}},[t._v("N/A")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Haswell")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"6"}},[a("RouterLink",{attrs:{to:"/Universal/plug.html"}},[t._v("SSDT-PLUG")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Broadwell")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Skylake")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"5"}},[a("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[t._v("SSDT-EC-USBX")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Kaby Lake")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Coffee Lake")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"2"}},[a("RouterLink",{attrs:{to:"/Universal/awac.html"}},[t._v("SSDT-AWAC")])],1),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"2"}},[a("RouterLink",{attrs:{to:"/Universal/nvram.html"}},[t._v("SSDT-PMC")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Comet Lake")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[a("RouterLink",{attrs:{to:"/Universal/rhub.html"}},[t._v("SSDT-RHUB")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("AMD (15/16/17h)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("N/A")])])])]),t._v(" "),a("h2",{attrs:{id:"high-end-desktop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#high-end-desktop"}},[t._v("#")]),t._v(" High End Desktop")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Platforms")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("CPU")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("EC")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("AWAC")])])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Ivy Bridge-E")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"4"}},[a("RouterLink",{attrs:{to:"/Universal/plug.html"}},[t._v("SSDT-PLUG")])],1),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[a("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[t._v("SSDT-EC")])],1),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"3"}},[t._v("N/A")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Haswell-E")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"3"}},[a("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[t._v("SSDT-EC-USBX")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Broadwell-E")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Skylake-X")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[a("RouterLink",{attrs:{to:"/Universal/awac.html"}},[t._v("SSDT-AWAC")])],1)])])]),t._v(" "),a("h2",{attrs:{id:"laptop"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#laptop"}},[t._v("#")]),t._v(" Laptop")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Platforms")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("CPU")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("EC")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("Backlight")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("I2C Trackpad")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("AWAC")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("USB")])]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[a("strong",[t._v("IRQ")])])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("SandyBridge")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"2"}},[a("a",{attrs:{href:"https://dortania.github.io/OpenCore-Post-Install/universal/pm.html#sandy-and-ivy-bridge-power-management",target:"_blank",rel:"noopener noreferrer"}},[t._v("CPU-PM"),a("OutboundLink")],1),t._v(" (Run in Post-Install)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"4"}},[a("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[t._v("SSDT-EC")])],1),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"6"}},[a("RouterLink",{attrs:{to:"/Laptops/backlight.html"}},[t._v("SSDT-PNLF")])],1),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"10"}},[a("RouterLink",{attrs:{to:"/Laptops/trackpad.html"}},[t._v("SSDT-GPI0")])],1),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"7"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"9"}},[t._v("N/A")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"4"}},[a("RouterLink",{attrs:{to:"/Universal/irq.html"}},[t._v("IRQ SSDT")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Ivy Bridge")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Haswell")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"8"}},[a("RouterLink",{attrs:{to:"/Universal/plug.html"}},[t._v("SSDT-PLUG")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Broadwell")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Skylake")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"6"}},[a("RouterLink",{attrs:{to:"/Universal/ec-fix.html"}},[t._v("SSDT-EC-USBX")])],1),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"6"}},[t._v("N/A")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Kaby Lake")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Coffee Lake (8th Gen)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"4"}},[a("RouterLink",{attrs:{to:"/Laptops/backlight.html"}},[t._v("SSDT-PNLF-CFL")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Coffee Lake (9th Gen)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"},attrs:{rowspan:"3"}},[a("RouterLink",{attrs:{to:"/Universal/awac.html"}},[t._v("SSDT-AWAC")])],1)]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Comet Lake")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Ice Lake")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[a("RouterLink",{attrs:{to:"/Universal/rhub.html"}},[t._v("SSDT-RHUB")])],1)])])]),t._v(" "),a("h2",{attrs:{id:"ssdt-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssdt-creation"}},[t._v("#")]),t._v(" "),a("RouterLink",{attrs:{to:"/ssdt-methods/ssdt-methods.html"}},[t._v("SSDT Creation")])],1)])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/52.a7bafb3a.js b/assets/js/52.a7bafb3a.js new file mode 100644 index 0000000..1cbf0f7 --- /dev/null +++ b/assets/js/52.a7bafb3a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{447:function(e,r,t){"use strict";t.r(r);var a=t(25),o=Object(a.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"troubleshooting"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[e._v("#")]),e._v(" Troubleshooting")]),e._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/troubleshooting.html#fixing-ssdttime-could-not-locate-or-download-iasl"}},[e._v("Fixing SSDTTime: "),t("code",[e._v("Could not locate or download iasl!")])])],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/troubleshooting.html#cant-run-acpidumpefi-from-opencore"}},[e._v("Can't run "),t("code",[e._v("acpidump.efi")])])],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/troubleshooting.html#iasl-warning--unresolved"}},[e._v("iASL warning, # unresolved")])],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/troubleshooting.html#decompiling-error"}},[e._v("Decompiling Error")])],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/troubleshooting.html#invalid-character-0x3d-expecting-asl-keyword-or-name"}},[e._v("Invalid character (0x3D), expecting ASL keyword or name")])],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/troubleshooting.html#syntax-error-unexpected-parseopone-expecting-"}},[e._v("Syntax error, unexpected PARSEOP_ONE, expecting '('")])],1)]),e._v(" "),t("h2",{attrs:{id:"fixing-ssdttime-could-not-locate-or-download-iasl"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fixing-ssdttime-could-not-locate-or-download-iasl"}},[e._v("#")]),e._v(" Fixing SSDTTime: "),t("code",[e._v("Could not locate or download iasl!")])]),e._v(" "),t("p",[e._v("This is usually due to an outdated version of Python, try either updating Python or add iasl to the scripts folder for SSDTTime:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://bitbucket.org/RehabMan/acpica/downloads/iasl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("iasl macOS version"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://acpica.org/downloads/binary-tools",target:"_blank",rel:"noopener noreferrer"}},[e._v("iasl Windows version"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://amdosx.kellynet.nl/iasl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("iasl Linux version"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"can-t-run-acpidump-efi-from-opencore"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#can-t-run-acpidump-efi-from-opencore"}},[e._v("#")]),e._v(" Can't run "),t("code",[e._v("acpidump.efi")]),e._v(" from OpenCore")]),e._v(" "),t("p",[e._v("Grab "),t("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenShell"),t("OutboundLink")],1),e._v(" and add it to EFI/OC/Tools and config.plist -> Misc -> Tools.")]),e._v(" "),t("p",[e._v("Next, call upon OpenCore shell and enter the following:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("shell> fs0: //replace with proper drive\n\nfs0:\\> dir //to verify this is the right directory\n\n Directory of fs0:\\\n\n 01/01/01 3:30p EFI\n\nfs0:\\> cd EFI\\OC\\Tools //note that its with forward slashes\n\nfs0:\\EFI\\OC\\Tools> acpidump.efi -b -n DSDT -z\n")])])]),t("h2",{attrs:{id:"iasl-warning-unresolved"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#iasl-warning-unresolved"}},[e._v("#")]),e._v(" iASL warning, # unresolved")]),e._v(" "),t("p",[e._v("If you try to decompile your DSDT and get an error similar to this:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("iASL Warning: There were 19 external control methods found during disassembly, but only 0 were resolved (19 unresolved)\n")])])]),t("p",[e._v("This happens when one ACPI table requires the rest for proper referencing, it does not accept the creation of DSDTs as we're only using it for creating a select few SSDTs. For those who are worried, you can run the following:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("iasl * [insert all ACPI files here]\n")])])]),t("h2",{attrs:{id:"decompiling-error"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decompiling-error"}},[e._v("#")]),e._v(" Decompiling Error")]),e._v(" "),t("p",[t("img",{attrs:{src:"/troubleshooting-md/decompile-error.png",alt:""}})]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Loading Acpi table from file iASLAwjHrs.aml\nAcpi table [DSDT] successfully installed and loaded\nPass 1 parse of [DSDT]\n")])])]),t("p",[e._v("This is a common error on DSDTs that have methods that aren't supported by maciASL, the easiest way is to delete maciASL and make sure you grab it from Acidanthera's repo: "),t("a",{attrs:{href:"https://github.com/acidanthera/MaciASL/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("maciASL"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"invalid-character-0x3d-expecting-asl-keyword-or-name"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invalid-character-0x3d-expecting-asl-keyword-or-name"}},[e._v("#")]),e._v(" Invalid character (0x3D), expecting ASL keyword or name")]),e._v(" "),t("p",[t("img",{attrs:{src:"/troubleshooting-md/invalid-parse.png",alt:""}})]),e._v(" "),t("p",[e._v("Similar to the above error, you're running an outdated copy of maciASL. Make sure you're using the latest from Acidanthera's repo: "),t("a",{attrs:{href:"https://github.com/acidanthera/MaciASL/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("maciASL"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"syntax-error-unexpected-parseop-one-expecting"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-error-unexpected-parseop-one-expecting"}},[e._v("#")]),e._v(" Syntax error, unexpected PARSEOP_ONE, expecting '('")]),e._v(" "),t("p",[t("img",{attrs:{src:"/troubleshooting-md/invalid-parse.png",alt:""}})]),e._v(" "),t("p",[e._v("Similar to the above 2 errors, you're running an outdated copy of maciASL. Make sure you're using the latest from Acidanthera's repo: "),t("a",{attrs:{href:"https://github.com/acidanthera/MaciASL/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("maciASL"),t("OutboundLink")],1)])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/6.68cd5bf6.js b/assets/js/6.68cd5bf6.js new file mode 100644 index 0000000..600d7ab --- /dev/null +++ b/assets/js/6.68cd5bf6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{392:function(e,t,a){e.exports=a.p+"assets/img/pci.81a3ae52.png"},393:function(e,t,a){e.exports=a.p+"assets/img/smbus.d9dd6044.png"},394:function(e,t,a){e.exports=a.p+"assets/img/before-rename.c0ccc637.png"},395:function(e,t,a){e.exports=a.p+"assets/img/after-rename.48bf32ad.png"},396:function(e,t,a){e.exports=a.p+"assets/img/verify.58363d4d.png"},438:function(e,t,a){"use strict";a.r(t);var s=a(25),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-smbus-support-manual"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-smbus-support-manual"}},[e._v("#")]),e._v(" Fixing SMBus support: Manual")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[e._v("Finding the ACPI path")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#hackintool"}},[e._v("Hackintool")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#devicemanager"}},[e._v("DeviceManager")])])])]),e._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[e._v("Compiling the SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#wrapping-up"}},[e._v("Wrapping up")])])]),e._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path"}},[e._v("#")]),e._v(" Finding the ACPI path")]),e._v(" "),s("p",[e._v("So to find the ACPI pathing of our SMBus, we've got 2 methods:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#hackintool"}},[e._v("Hackintool")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#devicemanager"}},[e._v("DeviceManager")])])]),e._v(" "),s("h3",{attrs:{id:"hackintool"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hackintool"}},[e._v("#")]),e._v(" Hackintool")]),e._v(" "),s("p",[e._v("To find the correct pathing for your devices, grab "),s("a",{attrs:{href:"https://www.tonymacx86.com/threads/release-hackintool-v3-x-x.254559/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hackintool"),s("OutboundLink")],1),e._v(" ("),s("a",{attrs:{href:"https://github.com/headkaze/Hackintool",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github link"),s("OutboundLink")],1),e._v(") and head to the PCI tab:")]),e._v(" "),s("p",[s("img",{attrs:{src:a(392),alt:""}})]),e._v(" "),s("p",[e._v("Look for the SMBus device under Subclass, then look beside and you'll see the ACPI path(under IOReg Name). To convert , omit "),s("code",[e._v("@...")])]),e._v(" "),s("ul",[s("li",[s("code",[e._v("/PC00@0/SMBS@1F,4")]),e._v(" -> "),s("code",[e._v("PC00.SMBS")])])]),e._v(" "),s("p",[e._v("With the ACPI pathing, you can now head here: "),s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("h3",{attrs:{id:"devicemanager"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#devicemanager"}},[e._v("#")]),e._v(" DeviceManager")]),e._v(" "),s("p",[e._v("If you already have Windows installed on this machine, finding the SMBus pathing is fairly easy.")]),e._v(" "),s("p",[e._v("Start by opening up Device Manager in Windows and looking for a device named "),s("code",[e._v("SMBUS")]),e._v(". Once found, click on it and select the "),s("code",[e._v("BIOS device Name")]),e._v(" entry. You should get something like this:")]),e._v(" "),s("p",[s("img",{attrs:{src:a(393),alt:""}})]),e._v(" "),s("p",[e._v("From the above example, we can see the SMBus is located at:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("PC00.SMBS\n")])])]),s("p",[e._v("With the ACPI pathing, you can now head here: "),s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("h2",{attrs:{id:"edits-to-the-sample-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("#")]),e._v(" Edits to the sample SSDT")]),e._v(" "),s("p",[e._v("Now that we know the ACPI pathing of the SMBus, we can finally start editing the our SSDT.")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-SBUS-MCHC.dsl",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-SBUS-MCHC.dsl"),s("OutboundLink")],1)])]),e._v(" "),s("p",[e._v("So the important parts we care about are:")]),e._v(" "),s("p",[s("strong",[e._v("Before")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0, DeviceObj) <- Rename this\nExternal (_SB_.PCI0.SBUS.BUS0, DeviceObj) <- Rename this\n\nScope (_SB.PCI0) <- Rename this\n{\n Device (MCHC)\n {\n Name (_ADR, Zero) // _ADR: Address\n }\n}\n\nDevice (_SB.PCI0.SBUS.BUS0) <- Rename this\n")])])]),s("p",[s("img",{attrs:{src:a(394),alt:""}})]),e._v(" "),s("p",[e._v("Following the example SMBus pathing we found, the SSDT should look something like this:")]),e._v(" "),s("p",[s("strong",[e._v("After")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PC00, DeviceObj) <- Renamed\nExternal (_SB_.PC00.SMBS.BUS0, DeviceObj) <- Renamed\n\nScope (_SB.PC00) <- Renamed\n{\n Device (MCHC)\n {\n Name (_ADR, Zero) // _ADR: Address\n }\n}\n\nDevice (_SB.PC00.SMBS.BUS0) <- Renamed\n")])])]),s("p",[s("img",{attrs:{src:a(395),alt:""}})]),e._v(" "),s("h1",{attrs:{id:"compiling-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#compiling-the-ssdt"}},[e._v("#")]),e._v(" Compiling the SSDT")]),e._v(" "),s("p",[e._v("With the SSDT done, you're now "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("ready to compile the SSDT!")])],1),e._v(" "),s("h1",{attrs:{id:"wrapping-up"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[e._v("#")]),e._v(" Wrapping up")]),e._v(" "),s("p",[e._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/cleanup.html"}},[s("strong",[e._v("Cleanup")])])],1)]),e._v(" "),s("h1",{attrs:{id:"verify-it-s-working"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#verify-it-s-working"}},[e._v("#")]),e._v(" Verify it's working")]),e._v(" "),s("p",[e._v("Once you've installed macOS, you can actually check whether your SSDT-SBUS-MCHC is working or not in terminal:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('kextstat | grep -E "AppleSMBusController|AppleSMBusPCI"\n')])])]),s("p",[s("img",{attrs:{src:a(396),alt:""}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/7.78dd85ec.js b/assets/js/7.78dd85ec.js new file mode 100644 index 0000000..0da8c00 --- /dev/null +++ b/assets/js/7.78dd85ec.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{364:function(t,e,a){t.exports=a.p+"assets/img/gpi0.b0e0b8d8.png"},365:function(t,e,a){t.exports=a.p+"assets/img/gpi0-2.8c3726d3.png"},366:function(t,e,a){t.exports=a.p+"assets/img/ssdt-before.b64846c1.png"},367:function(t,e,a){t.exports=a.p+"assets/img/ssdt-after.9ea3604d.png"},413:function(t,e,a){"use strict";a.r(e);var n=a(25),s=Object(n.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"fixing-trackpads-manual"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#fixing-trackpads-manual"}},[t._v("#")]),t._v(" Fixing Trackpads: Manual")]),t._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#finding-the-acpi-path"}},[t._v("Finding the ACPI path")])]),t._v(" "),n("li",[n("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),n("li",[n("a",{attrs:{href:"#compiling-the-ssdt"}},[t._v("Compiling the SSDT")])]),t._v(" "),n("li",[n("a",{attrs:{href:"#wrapping-up"}},[t._v("Wrapping up")])])]),t._v(" "),n("h2",{attrs:{id:"finding-the-acpi-path"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path"}},[t._v("#")]),t._v(" Finding the ACPI path")]),t._v(" "),n("p",[t._v("Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from "),n("RouterLink",{attrs:{to:"/Manual/dump.html"}},[t._v("Dumping the DSDT")]),t._v(" and "),n("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("Decompiling and Compiling")]),t._v(" with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an "),n("a",{attrs:{href:"https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl",target:"_blank",rel:"noopener noreferrer"}},[t._v("ACPI extension"),n("OutboundLink")],1),t._v(" that can also help).")],1),t._v(" "),n("p",[t._v("Next search for "),n("code",[t._v("Device (GPI0)")]),t._v(". Should give you a result similar to this:")]),t._v(" "),n("p",[n("img",{attrs:{src:a(364),alt:""}})]),t._v(" "),n("p",[t._v("What we care about from this is the "),n("code",[t._v("_STA")]),t._v(" method:")]),t._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v("Method (_STA, 0, NotSerialized)\n{\n If ((GPHD == One))\n {\n Return (0x03)\n }\n\n Return (0x0F)\n}\n")])])]),n("p",[t._v("What we want is for this to always return "),n("code",[t._v("0x0F")]),t._v(" when booting macOS, so we want to make an SSDT that will return "),n("code",[t._v("GPHD == Zero")]),t._v(" in macOS.")]),t._v(" "),n("p",[n("strong",[t._v("NOTE that you may have the other way around where GPHD needs to be set as "),n("code",[t._v("One")]),t._v(" to return "),n("code",[t._v("0x0F")])]),t._v(". And your device name may also be different, don't throw random SSDTs in thinking it'll work")]),t._v(" "),n("p",[t._v("Here's some more examples:")]),t._v(" "),n("p",[n("img",{attrs:{src:a(365),alt:""}})]),t._v(" "),n("p",[t._v("With this example, we can see that we need both "),n("code",[t._v("SBRG")]),t._v(" and "),n("code",[t._v("GPEN")]),t._v(" to return "),n("code",[t._v("One")]),t._v(". If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return "),n("code",[t._v("One")]),t._v(":")]),t._v(" "),n("h2",{attrs:{id:"edits-to-the-sample-ssdt"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("#")]),t._v(" Edits to the sample SSDT")]),t._v(" "),n("p",[t._v("Now that we have our ACPI path, lets grab our SSDT and get to work:")]),t._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPI0.dsl",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-GPI0.dsl"),n("OutboundLink")],1)])]),t._v(" "),n("p",[t._v("From the second example, we'll want to set both GPEN and SBRG to "),n("code",[t._v("One")]),t._v(" to allow it to operate in macOS:")]),t._v(" "),n("p",[n("strong",[t._v("Before")]),t._v(":")]),t._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('If (_OSI ("Darwin"))\n {\n GPEN = One <- Change to the right variables\n SBRG = One <- Change to the right variables\n\t}\n')])])]),n("p",[n("img",{attrs:{src:a(366),alt:""}})]),t._v(" "),n("p",[t._v("Following the example pathing we found, the SSDT should look something like this:")]),t._v(" "),n("p",[n("strong",[t._v("After")]),t._v(":")]),t._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('If (_OSI ("Darwin"))\n {\n GPEN = One <- Proper variables\n }\n')])])]),n("p",[n("img",{attrs:{src:a(367),alt:""}})]),t._v(" "),n("h2",{attrs:{id:"compiling-the-ssdt"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#compiling-the-ssdt"}},[t._v("#")]),t._v(" Compiling the SSDT")]),t._v(" "),n("p",[t._v("With the SSDT done, you're now "),n("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("ready to compile the SSDT!")])],1),t._v(" "),n("h2",{attrs:{id:"wrapping-up"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[t._v("#")]),t._v(" Wrapping up")]),t._v(" "),n("p",[t._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),t._v(" "),n("ul",[n("li",[n("RouterLink",{attrs:{to:"/cleanup.html"}},[n("strong",[t._v("Cleanup")])])],1)])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/8.fc471e91.js b/assets/js/8.fc471e91.js new file mode 100644 index 0000000..e4fa2e6 --- /dev/null +++ b/assets/js/8.fc471e91.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{329:function(t,e,a){t.exports=a.p+"assets/img/lpc.bfa9cf23.png"},330:function(t,e,a){t.exports=a.p+"assets/img/pci0.4477f361.png"},380:function(t,e,a){t.exports=a.p+"assets/img/ssdt-before.6ddf7dfa.png"},381:function(t,e,a){t.exports=a.p+"assets/img/ssdt-after.971e8c4d.png"},428:function(t,e,a){"use strict";a.r(e);var i=a(25),s=Object(i.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"fixing-nvram-manual"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#fixing-nvram-manual"}},[t._v("#")]),t._v(" Fixing NVRAM: Manual")]),t._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#finding-the-acpi-path"}},[t._v("Finding the ACPI path")])]),t._v(" "),i("li",[i("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),i("li",[i("a",{attrs:{href:"#compiling-the-ssdt"}},[t._v("Compiling the SSDT")])]),t._v(" "),i("li",[i("a",{attrs:{href:"#wrapping-up"}},[t._v("Wrapping up")])])]),t._v(" "),i("h2",{attrs:{id:"finding-the-acpi-path"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path"}},[t._v("#")]),t._v(" Finding the ACPI path")]),t._v(" "),i("p",[t._v("Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from "),i("RouterLink",{attrs:{to:"/Manual/dump.html"}},[t._v("Dumping the DSDT")]),t._v(" and "),i("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("Decompiling and Compiling")]),t._v(" with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an "),i("a",{attrs:{href:"https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl",target:"_blank",rel:"noopener noreferrer"}},[t._v("ACPI extension"),i("OutboundLink")],1),t._v(" that can also help).")],1),t._v(" "),i("p",[t._v("Next, search for the following:")]),t._v(" "),i("ul",[i("li",[t._v("Finding the LowPinCount path:\n"),i("ul",[i("li",[t._v("Search "),i("code",[t._v("Name (_ADR, 0x001F0000)")])])])]),t._v(" "),i("li",[t._v("Finding the PCI path:\n"),i("ul",[i("li",[t._v("Search "),i("code",[t._v("PNP0A08")]),t._v(" (If multiple show up, use the first one)")])])])]),t._v(" "),i("p",[t._v("You should get something like the following show up:")]),t._v(" "),i("table",[i("thead",[i("tr",[i("th",{staticStyle:{"text-align":"center"}},[t._v("LPC Pathing")]),t._v(" "),i("th",{staticStyle:{"text-align":"center"}},[t._v("PCI Pathing")])])]),t._v(" "),i("tbody",[i("tr",[i("td",{staticStyle:{"text-align":"center"}},[i("img",{attrs:{src:a(329),alt:""}})]),t._v(" "),i("td",{staticStyle:{"text-align":"center"}},[i("img",{attrs:{src:a(330),alt:""}})])])])]),t._v(" "),i("p",[t._v("Now with the pathing, you can head here: "),i("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("Edits to the sample SSDT")])]),t._v(" "),i("h2",{attrs:{id:"edits-to-the-sample-ssdt"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#edits-to-the-sample-ssdt"}},[t._v("#")]),t._v(" Edits to the sample SSDT")]),t._v(" "),i("p",[t._v("Now that we have our ACPI path, lets grab our SSDT and get to work:")]),t._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl",target:"_blank",rel:"noopener noreferrer"}},[t._v("SSDT-PMC.dsl"),i("OutboundLink")],1)])]),t._v(" "),i("p",[t._v("By default, this uses "),i("code",[t._v("PCI0.LPCB")]),t._v(" for the pathing. you'll want to rename accordingly.")]),t._v(" "),i("p",[t._v("Following the example from above, we'll be renaming it to "),i("code",[t._v("PCI0.LPC")]),t._v(":")]),t._v(" "),i("p",[i("strong",[t._v("Before")]),t._v(":")]),t._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[t._v("External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this\n\nScope (_SB.PCI0.LPCB) <- Rename this\n")])])]),i("p",[i("img",{attrs:{src:a(380),alt:""}})]),t._v(" "),i("p",[t._v("Following the example pathing we found, the SSDT should look something like this:")]),t._v(" "),i("p",[i("strong",[t._v("After")]),t._v(":")]),t._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[t._v("External (_SB_.PCI0.LPC, DeviceObj) <- Renamed\n\nScope (_SB.PCI0.LPC) <- Renamed\n")])])]),i("p",[i("img",{attrs:{src:a(381),alt:""}})]),t._v(" "),i("h2",{attrs:{id:"compiling-the-ssdt"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#compiling-the-ssdt"}},[t._v("#")]),t._v(" Compiling the SSDT")]),t._v(" "),i("p",[t._v("With the SSDT done, you're now "),i("RouterLink",{attrs:{to:"/Manual/compile.html"}},[t._v("ready to compile the SSDT!")])],1),t._v(" "),i("h2",{attrs:{id:"wrapping-up"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[t._v("#")]),t._v(" Wrapping up")]),t._v(" "),i("p",[t._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),t._v(" "),i("ul",[i("li",[i("RouterLink",{attrs:{to:"/cleanup.html"}},[i("strong",[t._v("Cleanup")])])],1)])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/9.9de7acea.js b/assets/js/9.9de7acea.js new file mode 100644 index 0000000..f5a8e42 --- /dev/null +++ b/assets/js/9.9de7acea.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{361:function(e,t,a){e.exports=a.p+"assets/img/devicemanager.770a10fc.png"},362:function(e,t,a){e.exports=a.p+"assets/img/ssdt-before.f71c9e04.png"},363:function(e,t,a){e.exports=a.p+"assets/img/ssdt-after.28584bc4.png"},408:function(e,t,a){"use strict";a.r(t);var s=a(25),i=Object(s.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"fixing-backlight-manual"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fixing-backlight-manual"}},[e._v("#")]),e._v(" Fixing Backlight: Manual")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#finding-the-acpi-path"}},[e._v("Finding the ACPI path")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("Edits to the sample SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#compiling-the-ssdt"}},[e._v("Compiling the SSDT")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#wrapping-up"}},[e._v("Wrapping up")])])]),e._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path"}},[e._v("#")]),e._v(" Finding the ACPI path")]),e._v(" "),s("p",[e._v("For this guide, we're gonna assume Windows is already on this laptop, as otherwise creating this SSDT is a bit more difficult.")]),e._v(" "),s("p",[e._v("Now open DeviceManager, and head to the following:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("Device Manager -> Display Adapters -> Properties -> Details > BIOS device name\n")])])]),s("ul",[s("li",[e._v('Note some GPU ACPI pathing may be hiding under "BIOS device name"')])]),e._v(" "),s("p",[s("img",{attrs:{src:a(361),alt:"Credit to 1Revenger1 for the image"}})]),e._v(" "),s("p",[e._v("From the above example, we can see our display is hooked up to "),s("code",[e._v("PCI0.GFX0")])]),e._v(" "),s("h2",{attrs:{id:"edits-to-the-sample-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#edits-to-the-sample-ssdt"}},[e._v("#")]),e._v(" Edits to the sample SSDT")]),e._v(" "),s("p",[e._v("Now that we have our ACPI path, lets grab our SSDT and get to work:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-PNLF.dsl"),s("OutboundLink")],1)]),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-PNLF-CFL.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-PNLF-CFL.dsl"),s("OutboundLink")],1),e._v(" "),s("ul",[s("li",[e._v("For Coffee Lake and newer")])])])]),e._v(" "),s("p",[e._v("By default, this uses "),s("code",[e._v("PCI0.GFX0")]),e._v(" for the pathing. you'll want to rename accordingly. For this example, we'll assume your pathing is "),s("code",[e._v("PCI0.GPU0")]),e._v(":")]),e._v(" "),s("p",[s("strong",[e._v("Before")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0.GFX0, DeviceObj) <- Rename this\n\nScope (_SB.PCI0.GFX0) <- Rename this\n\nDevice(_SB.PCI0.GFX0.PNLF) <- Rename this\n")])])]),s("p",[s("img",{attrs:{src:a(362),alt:""}})]),e._v(" "),s("p",[e._v("Following the example pathing we found, the SSDT should look something like this:")]),e._v(" "),s("p",[s("strong",[e._v("After")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0.GPU0, DeviceObj) <- Renamed\n\nScope (_SB.PCI0.GPU0) <- Renamed\n\nDevice(_SB.PCI0.GPU0.PNLF) <- Renamed\n")])])]),s("p",[s("img",{attrs:{src:a(363),alt:""}})]),e._v(" "),s("h2",{attrs:{id:"compiling-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#compiling-the-ssdt"}},[e._v("#")]),e._v(" Compiling the SSDT")]),e._v(" "),s("p",[e._v("With the SSDT done, you're now "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("ready to compile the SSDT!")])],1),e._v(" "),s("h2",{attrs:{id:"wrapping-up"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#wrapping-up"}},[e._v("#")]),e._v(" Wrapping up")]),e._v(" "),s("p",[e._v("Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:")]),e._v(" "),s("ul",[s("li",[s("RouterLink",{attrs:{to:"/cleanup.html"}},[s("strong",[e._v("Cleanup")])])],1)])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/app.c97779b2.js b/assets/js/app.c97779b2.js new file mode 100644 index 0000000..7df5d6e --- /dev/null +++ b/assets/js/app.c97779b2.js @@ -0,0 +1,9 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],u=e[1],c=e[2],f=0,p=[];f0?o(r(t),9007199254740991):0}},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){var r=n(33),o=n(20);t.exports=function(t){return r(o(t))}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(143),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e,n){var r=n(5),o=n(1),i=n(6),a=Object.defineProperty,s={},u=function(t){throw t};t.exports=function(t,e){if(i(s,t))return s[t];e||(e={});var n=[][t],c=!!i(e,"ACCESSORS")&&e.ACCESSORS,l=i(e,0)?e[0]:u,f=i(e,1)?e[1]:void 0;return s[t]=!!n&&!o((function(){if(c&&!r)return!0;var t={length:-1};c?a(t,1,{enumerable:!0,get:u}):t[1]=1,n.call(t,l,f)}))}},function(t,e,n){var r=n(115),o=n(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e){t.exports=!1},function(t,e,n){var r=n(5),o=n(79),i=n(35),a=n(15),s=n(34),u=n(6),c=n(110),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=a(t),e=s(e,!0),c)try{return l(t,e)}catch(t){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,e,n){var r=n(227),o=n(230);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var u,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),i&&(c._scopeId="data-v-"+i),a?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},c._ssrRegister=u):o&&(u=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),u)if(c.functional){c._injectStyles=u;var l=c.render;c.render=function(t,e){return u.call(e),l(t,e)}}else{var f=c.beforeCreate;c.beforeCreate=f?[].concat(f,u):[u]}return{exports:t,options:c}}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";var r=n(0),o=n(31).filter,i=n(52),a=n(18),s=i("filter"),u=a("filter");r({target:"Array",proto:!0,forced:!s||!u},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){var r,o=n(7),i=n(186),a=n(77),s=n(36),u=n(114),c=n(74),l=n(49),f=l("IE_PROTO"),p=function(){},d=function(t){return" - - - - -
                                                                  -
                                                                  - - - - - - - - -
                                                                  - -
                                                                  - -
                                                                  - - - - - - - - -
                                                                  -
                                                                  - -
                                                                  -
                                                                  - -
                                                                  - -
                                                                  -

                                                                  Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                  -
                                                                  -

                                                                  Cleanup

                                                                  -

                                                                  So you've made all your SSDTs but now there's one thing left: Adding them to Opencore

                                                                  -

                                                                  The 2 main locations:

                                                                  -
                                                                    -
                                                                  • EFI/OC/ACPI (Only .aml files, reminder to compile your SSDTs)
                                                                  • -
                                                                  • config.plist -> ACPI -> Add
                                                                  • -
                                                                  -

                                                                  You can save yourself some work with the config.plist by running Cmd/Ctrl+R in ProperTree. Reminder do not add your DSDT.aml to your EFI

                                                                  -

                                                                  For those who do not yet have a config.plist, you'll want to next head back to your respective OpenCore guides and create the config.plist:

                                                                  - -

                                                                  Users of FixHPET will also need to merge oc_patches.plist into their config.plist

                                                                  -

                                                                  Steps to do this:

                                                                  -
                                                                    -
                                                                  • Open both files,
                                                                  • -
                                                                  • Delete the ACPI -> Patch section from config.plist
                                                                  • -
                                                                  • Copy the ACPI -> Patch section from patches.plist
                                                                  • -
                                                                  • Paste into where old patches were in config.plist
                                                                  • -
                                                                  - - -
                                                                  - -
                                                                  -
                                                                  -
                                                                  - -

                                                                  results matching ""

                                                                  -
                                                                    - -
                                                                    -
                                                                    - -

                                                                    No results matching ""

                                                                    - -
                                                                    -
                                                                    -
                                                                    - -
                                                                    -
                                                                    - -
                                                                    - - - - - - - - - - - - - - -
                                                                    - - -
                                                                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                                    # Cleanup

                                                                    So you've made all your SSDTs but now there's one thing left: Adding them to Opencore

                                                                    The 2 main locations:

                                                                    You can save yourself some work with the config.plist by running Cmd/Ctrl+R in ProperTree. Reminder do not add your DSDT.aml to your EFI

                                                                    For those who do not yet have a config.plist, you'll want to next head back to your respective OpenCore guides and create the config.plist:

                                                                    Users of FixHPET will also need to merge oc_patches.plist into their config.plist

                                                                    Steps to do this:

                                                                    • Open both files,
                                                                    • Delete the ACPI -> Patch section from config.plist
                                                                    • Copy the ACPI -> Patch section from patches.plist
                                                                    • Paste into where old patches were in config.plist
                                                                    Last Updated: 7/17/2020, 11:04:23 PM
                                                                    + + - diff --git a/dortania-logo-clear.png b/dortania-logo-clear.png new file mode 100644 index 0000000000000000000000000000000000000000..90844f47a551d129dcc742ae9205be37e6e408ea GIT binary patch literal 55046 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 diff --git a/extra-files/compiled/SSDT-EC-LAPTOP.aml b/extra-files/compiled/SSDT-EC-LAPTOP.aml deleted file mode 100644 index bbc0dd33e90c3e488d46f66e4c2a44ae83c61785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmWFzb_vh1 z;1l2+@9G>M&xS7Q1QA`}#WrD5v=FKeup9%1FxVgl0gD)r;n7V7AQL#^Jv?1_9i2U0 m3=9km8APPxgF_q{76`=q2Yd3mBo>ut<}obc;$O(TgaH7hi!lKJ diff --git a/extra-files/compiled/SSDT-EC-USBX-DESKTOP.aml b/extra-files/compiled/SSDT-EC-USBX-DESKTOP.aml deleted file mode 100644 index ea5bd3bd77fa2bb3298d19ff6f334dc6dcd76340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6561 zcmb7|(N0rA5QbL^rhtTsctO1J4O|mmpgpI78l+86RT4-xB=!P9B(;Qi%M%cJfs*v` zd6`|N6%!>*(Zvh-&MhW1NYkrV82QC503Zr^7B(A-S4XLeyXPX-Pw3Q zRnz_UxuX44N%y;Iyq~J+es?zBPt|z8)>N%OzpKRieRX-itH%5N+2#GN>h{kLHcqy| zjaRe&+Wq}KvDG*Y=Ac(9Op0M8ko`ed{lZPvsI6KWh}d~;h|RW4zv^w4XOr9WD>YY- zEA#a&ELiSR&D;Q=MWJ;@i2 z!|CRsa0Vg>hv5uOg7Ca>(lpA28DB{*l`?A-<0n-4kyjyG(q7^1jlWl zv2YwtzbIEY6hSL!w+z}|;AtanhzHl*| zcAgMUM+D(gI9-zk^0$2~oO`fvM)0Z-$r0}U4Zz{_EWIj$B#sA?3J)j|?n%CI98Nb6 zg)ATW!27(>O;q*;8j@u75{x2H|_bk0Cfh3Lxk_rzfaom%9;W(Ub9tvk5 zf^Znl&?E@Y3nxvJ!s!`y9EUUXV8?MdeN(>UIGi*OhcghtaTw0fBsiWIPMRi#(=+Ti z=L`yGf*r@<^o#!AasLAndUGyVEWAb{;WZKquc65C1<4nV!s+Lw;j9rsI0$F0Nf4eB zPB#sQbHT9VD4ew(>^KVNqAA~T6izn}g|kKk$3Zx2O@iY&;dIk*I2Q~%j>1{%!H%PF zE}H)3cCo;2p${b$Y13wxxx9FMOD-*3m0>gM|T@~7JP{jv@w)8b|_8DC8g W&%d2d)yAG{`+RmWMqRF+HvIt_{q0)- diff --git a/extra-files/compiled/SSDT-EC-USBX-LAPTOP.aml b/extra-files/compiled/SSDT-EC-USBX-LAPTOP.aml deleted file mode 100644 index 4d17b7ca1e70c17577137ea8c60c2ebb21893df3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmWFzb_wxkWME)QatR9Y^K=X@PAPG9W?*0tU|{g{3-RG(l~h=u#~>P`&k`T(6d&O1 zY2Xv!9PjEJAJ2v^>I4y8;Kep!QnV1N4zL^phA`M51_6s0km1oy1|SnS;ypZFcpaTR zT?`Bi3>ieETr()9u5y#X70G#b#0RR91 diff --git a/extra-files/compiled/SSDT-PLUG-DRTNIA.aml b/extra-files/compiled/SSDT-PLUG-DRTNIA.aml deleted file mode 100644 index baafa9c0c4c8fbe03a9821fb97c17366dd40a9b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmWFzb_vL1i(2!Jpn<;GEj~_Gsw7LXKw>%pkk1b2oZ<|5v2g%0AH2`oRhN{ zmIyL4GA|JlVB#$RIxaI$x1_Qlm4R`ARkRSoT?`AfC-)(^Ts#8O2%ZRkyi2ez%My^8 z8JStxP_0m3z_dcSP_0lN4y{n1!L&lT2wOqEz@ZgnFffE*TA^GdTY-|ewF1KnSu2Q( z&L6sJ HumvLk?G3yE diff --git a/extra-files/compiled/SSDT-PMC.aml b/extra-files/compiled/SSDT-PMC.aml deleted file mode 100644 index c0eb2a92bf436eea0c89d6b4f8a387d9be4e2f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmWFzb_tos$iTp);t~|%=jj;W>m0-Y0s;&So_--doUD=x3oIB!WAvHhgPr07oIMSE z0-T-L&_xU|MB>>P7I?8m3!&*`5O8HhH7mNwnFVAmN4$rp3lE#Xj4~1F_}~ynh6Mug z{=uHSE{R3unRyILxVRTGFJa(_cMb{`6y)M-<75E3o8cb=kgCLHl>vrT2DGv&9>c15 Hs#pa8+n`|q diff --git a/extra-files/compiled/SSDT-PNLF-CFL.aml b/extra-files/compiled/SSDT-PNLF-CFL.aml deleted file mode 100644 index 2fee8145dd0b3ca5291087d2642d97d130a67388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmWFzb_uCvU|?WsaddVGVPFXG^Ko-_^8t!5FnIcf_;9jHDl8CT5RK7ijt_Q<4{-K0 zaCeI^U}K1Ga$?bEK^6mP<%oB531Z-g_waP#VH03r;)r+lbm2`(OwP{9OwT9*%7l8l Oa0zq72ZuOvaRUIgM;rkF diff --git a/extra-files/compiled/SSDT-PNLF.aml b/extra-files/compiled/SSDT-PNLF.aml deleted file mode 100644 index 7e5701e8e0747b69725bc9a66229fd0959cbf163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcmZWo&unxHceX4i;0oAum#p`2?4Am7=A2NQG1w!Nvp)9 zHC{Yv!He;-B>I2!=2<=U;>CZ!gZFi2C>30{I*J!f^8NH zP8KdcyHIiFf=e+k8-(kRwq_dTbfcKD6S-_Pq4LOPX*ZKi?>H4Q2HA9_cnNYPvv3KV z?Y)N+uxnNcXiNWJSvxN67HsGZE;(!m=tR#MqOM7pye#v(%_z&HcQEv7?MsxPk_iDfAqop+rag~oc&FaVj?ZPU+)8Atr#4~lVT-NQ5DAGq5ijGChx?e`B}SQCy8e& z1L)B}7uY;k^laZ-ujwPvL@Rj9{eeHhY~t>-{kkaeHhWa*g10j66SLu>Q22FWh9L&h ziSDd7_+((D<1LR{#QTg}gx~Q({T}JS7hrXvOq2QUq}t&xGp-iC%b-2Uisv0?h2Qp^ zxzhn@^F7|_2@R28fS}6HA`$})f^mX6!Bv7Kf_nsAf{zJ4BQ#6Xq{&6`<_5mYP@8pM ziH)mNYk6wF#oQKG??b;wLmlW3+}6>dNINdHp!w3JTHDh_;nx)QQ+S%19`F0Ec(D$X*IhEWbA^B<35;gDQ?sq{Y>SP;!yNT8 zD&LL&J5rr(#lUzN;}loJs4HmjLvcl(O>PxjR`5IG55%8{s(}%%pMfj9%fM9wbptmH z$(i9fb%!d$gW!nu73DUjc)vb6>`9{N`ykkZkPn(8sj6Oh;BxgDjfkITct0ou=akU} p8L$-@I0!PT$-r%ihrDA^;x&msMH$s4z9F&iGkQ(p5TkA3`~!7XI1m5; diff --git a/extra-files/compiled/SSDT-RHUB.aml b/extra-files/compiled/SSDT-RHUB.aml deleted file mode 100644 index a6c36ce5a6d1bf781df781983d6630676582f1f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmWFzb_uazWME)g4mbTEw;k%$itab#G)AMYRR$?K9>RGyi~ du!LbDBNkJ@wxXK?79_bU?x*UQE#oN@a-n45u}5i146DPky%)IkKD@6x z;lU%`_j=#o^$9$97AUIJ(!DiRR;Xy&w@)XIx9*&ryewte>)W$8JoWI*p87$la8guM z<`<`#kJ<#e7z*W<_AU2wyKS=Y^R<}#7e_uG`EDm?aYSERYp&*=dq+GOv^B33K3^75 z_jR{Jc}1cZW5xaG+Rd!CjCKZojEgl^&kIt%FF$X8M0c5d+JP++Z_)xbt~xqDPCjGL zGwuLyb`HrupXzo4y#exj0M=0P1JKp`U=+sY?@ zV)hE9+c={U`Zp0g*$|?Btdkek*x*A91JXJ6azYh+;|M|W@Q7J O!~}!~fpjqwhz9@_0w-Jm diff --git a/extra-files/decompiled/SSDT-GPU-DISABLE.dsl b/extra-files/decompiled/SSDT-GPU-DISABLE.dsl deleted file mode 100644 index a81eff8..0000000 --- a/extra-files/decompiled/SSDT-GPU-DISABLE.dsl +++ /dev/null @@ -1,46 +0,0 @@ -// Used for disabling unsupported GPUs in macOS -DefinitionBlock ("", "SSDT", 2, "DRTNIA", "spoof", 0x00000000) -{ - External (_SB_.PCI0.PEG0.PEGP, DeviceObj) - - Method (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized) // _DSM: Device-Specific Method - { - If ((!Arg2 || (_OSI ("Darwin") == Zero))) - { - Return (Buffer (One) - { - 0x03 // . - }) - } - - Return (Package (0x0A) - { - "name", - Buffer (0x09) - { - "#display" - }, - - "IOName", - "#display", - "class-code", - Buffer (0x04) - { - 0xFF, 0xFF, 0xFF, 0xFF // .... - }, - - "vendor-id", - Buffer (0x04) - { - 0xFF, 0xFF, 0x00, 0x00 // .... - }, - - "device-id", - Buffer (0x04) - { - 0xFF, 0xFF, 0x00, 0x00 // .... - } - }) - } -} - diff --git a/extra-files/decompiled/SSDT-GPU-DISABLE.dsl.zip b/extra-files/decompiled/SSDT-GPU-DISABLE.dsl.zip deleted file mode 100644 index c3b34096b9eda5551a31c633fe8b9f8ae7ef17c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1065 zcmWIWW@Zs#-~dAZ$b|t6P*BRkz#zh)zz`hl5~AxK5UT6q8SLofJ+K(wI<)0FSjK#Q)-gLQ0Tal-P}pT$G9UO3OO+q^(we!MFeganS7YfF)+`n=3>j+Fq0yiXrDC2e_kur zIPK>3pJ5yt+AkTJ*JtQw?C1D0EwRH=gYRfoZ@_YKf$W{u+;L43p6jRH47Dx0bkR1W zaN>R!Zl11;D?j~q_*~@bt`FgsTPD!?{ra&9`A4rF5v-d0`jX4ZD&^afwHH@;+1Gwh zo}$7#pLP0^t#uoo*2PlN4Sy0Gb? zpV0DOoB`hK9R0j!E$V^s0gA=|tP$)Bl$8fYaD2S4qqBc-guY%p!MJw9jO*kC(d6`m zq=XN?K4BmD!#V;Qm?lUts|!dQ8W?ynXDZCUIK5HhfrO9{OJZZG4dWvp6IGvpLPj>W zl~4Y}>^;)dG$&;5oFk7WU3zq7%9JCMLY_7xthlA`Aan9SLSMl2*-?`?LMCTSef#>+ zE_c2GbDcr!AIFe7pia`1z45ezJ81hEK)GnPDsZUeIIplF1FC5;b(?x8SJ1H4(; QKn5}a;dvnK!VKa80E`28ivR!s diff --git a/extra-files/decompiled/SSDT-GPU-SPOOF.dsl b/extra-files/decompiled/SSDT-GPU-SPOOF.dsl deleted file mode 100644 index ce4057f..0000000 --- a/extra-files/decompiled/SSDT-GPU-SPOOF.dsl +++ /dev/null @@ -1,69 +0,0 @@ -// Based off of WhateverGreen's sample.dsl -// https://github.com/acidanthera/WhateverGreen/blob/master/Manual/Sample.dsl -DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AMDGPU", 0x00001000) -{ - External (_SB_.PCI0, DeviceObj) - External (_SB_.PCI0.PEG0.PEGP, DeviceObj) - - - Scope (\_SB_.PCI0.PEG0.PEGP) - { - if (_OSI ("Darwin")) - { - Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method - { - Local0 = Package (0x04) - { - // Where we shove our FakeID - "device-id", - Buffer (0x04) - { - 0xB0, 0x67, 0x00, 0x00 - }, - - // Changing the name of the GPU reported, mainly cosmetic - "model", - Buffer () - { - "AMD Radeon R9 390" - } - } - DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) - Return (Local0) - } - } - } - Scope (\_SB.PCI0) - { - Method (DTGP, 5, NotSerialized) - { - If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b"))) - { - If (LEqual (Arg1, One)) - { - If (LEqual (Arg2, Zero)) - { - Store (Buffer (One) - { - 0x03 - }, Arg4) - Return (One) - } - - If (LEqual (Arg2, One)) - { - Return (One) - } - } - } - - Store (Buffer (One) - { - 0x00 - }, Arg4) - Return (Zero) - } - - } - -} \ No newline at end of file diff --git a/extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip b/extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip deleted file mode 100644 index d80b76225137b77a1171d76e92603ff89eaeff35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmWIWW@Zs#-~htKrRM?|prDkUfkB8tfgw29B}CUfAXGOvz~A3ZFQqsqG=!IdJ*ekd z+^%OY;y`q11vdjD%U4DQ2B0|%3{yh_^KTgl)IATM^T|kwRfsFseW~q~WzHUp6`Vpd zXN6dvY_0IknZ|M}_tF0Ma~MP)Y`N=cIPLGQ@M^|5K(AJe$=fWl@J=^0&s#Z`Cht51uAI<7Tp2 zn9jz%*E96oVm>r^8+xRCVDUY?;lKx*a=-oQTT0VE@4mRzYLDFR!!K>$&Jk~4<2?W7 zkJ}8JZi{#6MKGOp&;M{^-n||f?wFX*4C?>;ZV+qY4wl=bcrADtZ$ z3}@9irY(}n-?}`qiD$Zzw!s#K)EJfhiW4fkSoyzPU1oIT$y~4h+r3P$86+!uF>bai z`Q5ir|KpP{UyjV>Uw&cFIk79+QPxkZ!q&xdr%Cu`1gsV`^shX(AtE)2-(pAo+0eIU z$AvUSH(hOQ`+Kj}{D0Rf*5}7R$1k2W@loyX?4?(trMa|87 zUcCDHYZl%6oWIs`=>K|tVo}}t_mgGLmbVm7X^b)#T#-5HpJM->l~3;*PL}%qOW@QV zr%69%?G6m$$=aCjeoNYO*>AP1;6C?Wi>YsqEt+=LZT;TM^Ill5TC;Bge@gxDCmna) zqhb!b{eHhV_kLfAC5!v1n^}z+x&IggyxBQ8`u?76Vq#zbrQ-msDSQJkt;zyZcznFC zqqBc-guY%pfy90unBdV8dvbzka(Y5i!UtcUun+uU9RUqY6C{|`1*91ZWd)jlNK14u z^(iVk2B>))XHpPz2tL#yFx~6i`K#VK8Yeujp7zwy)716z_4L&74CUisn|<}O4qv1) z(825+zIWP7!hlW$IWxeUkx7IZkx7v~2g;-{u%r>hBH#-wSr*-VWV=B@1OrPN9|41u Wq5uo> https://github.com/Bumblebee-Project/Bumblebee/wiki/ACPI-for-Developers#acpi-and-the-nvidia-card -* --- -* Important: Change all ACPI paths accordingly. -* Credit to Maemo for original idea and the SSDT -*/ -DefinitionBlock ("", "SSDT", 2, "DRTNIA", "NoHybGfx", 0x00000000) -{ - External (_SB_.PCI0.PEG0.PEGP._DSM, MethodObj) // dGPU ACPI Path - External (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj) // dGPU ACPI Path - - Device (NHG1) - { - Name (_HID, "NHG10000") // _HID: Hardware ID - Method (_STA, 0, NotSerialized) // _STA: Status - { - If (_OSI ("Darwin")) - { - Return (0x0F) - } - Else - { - Return (Zero) - } - } - - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - If (_OSI ("Darwin")) - { - // If conditional methods reference creation successful - If ((CondRefOf (\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3))) - { - // Card Off Request - \_SB.PCI0.PEG0.PEGP._DSM (ToUUID ("a486d8f8-0bda-471b-a72b-6042a6b5bee0"), 0x0100, 0x1A, Buffer (0x04) - { - 0x01, 0x00, 0x00, 0x03 - }) - // Card Off - \_SB.PCI0.PEG0.PEGP._PS3 () - } - } - Else - { - } - } - } -} - diff --git a/extra-files/decompiled/SSDT-NoHybGfx.dsl.zip b/extra-files/decompiled/SSDT-NoHybGfx.dsl.zip deleted file mode 100644 index 1e0e0a2304e1cc935318142363d6dfd2ffee1c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1313 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 R$_6rx2?$RD>03-79spW7Y`6db diff --git a/extra-files/decompiled/SSDT-RHUB-prebuilt.dsl b/extra-files/decompiled/SSDT-RHUB-prebuilt.dsl deleted file mode 100644 index c2a7c4d..0000000 --- a/extra-files/decompiled/SSDT-RHUB-prebuilt.dsl +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Goal of this SSDT is to shut off the RHUb to force macOS into - * manually building ports when the ACPI is screwed up - */ -DefinitionBlock ("", "SSDT", 2, "DRTNIA", "RhubOff", 0x00001000) -{ - // Handle 99% of XHCI naming variations - - External (_SB_.PCI0.XHC_.RHUB, DeviceObj) - External (_SB_.PCI0.XHCI.RHUB, DeviceObj) - External (_SB_.PCI0.XHC1.RHUB, DeviceObj) - - - If (CondRefOf (\_SB.PCI0.XHC_.RHUB)) - { - Scope (_SB.PCI0.XHC_.RHUB) - { - - Method (_STA, 0, NotSerialized) - { - If (_OSI ("Darwin")) - { - Return (Zero) // This disables the device only in macOS - } - Else - { - } - } - } - } - - If (CondRefOf (\_SB.PCI0.XHCI.RHUB)) - { - Scope (_SB.PCI0.XHCI.RHUB) - { - - Method (_STA, 0, NotSerialized) - { - If (_OSI ("Darwin")) - { - Return (Zero) // This disables the device only in macOS - } - Else - { - } - } - } - } - - If (CondRefOf (\_SB.PCI0.XHC1.RHUB)) - { - Scope (_SB.PCI0.XHC1.RHUB) - { - - Method (_STA, 0, NotSerialized) - { - If (_OSI ("Darwin")) - { - Return (Zero) // This disables the device only in macOS - } - Else - { - } - } - } - } - -} - diff --git a/extra-files/decompiled/SSDT-RHUB.dsl b/extra-files/decompiled/SSDT-RHUB.dsl deleted file mode 100644 index 5848a1c..0000000 --- a/extra-files/decompiled/SSDT-RHUB.dsl +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Goal of this SSDT is to shut off the RHUB to force macOS into - * manually building ports when the ACPI is screwed up - */ -DefinitionBlock ("", "SSDT", 2, "DRTNIA", "RhubOff", 0x00001000) -{ - External (_SB_.PCI0.XHC1.RHUB, DeviceObj) // Full pathing to RHUB, change to yours - - - Scope (_SB.PCI0.XHC1.RHUB) // Full pathing to RHUB, change to yours - { - Method (_STA, 0, NotSerialized) - { - If (_OSI ("Darwin")) - { - Return (Zero) // This disables the device only in macOS - } - Else - { - } - } - } -} - diff --git a/extra-files/decompiled/SSDT-XOSI.dsl b/extra-files/decompiled/SSDT-XOSI.dsl deleted file mode 100644 index e8a4a0b..0000000 --- a/extra-files/decompiled/SSDT-XOSI.dsl +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of iASLYWTc6v.aml, Thu May 28 19:06:11 2020 - * - * Original Table Header: - * Signature "SSDT" - * Length 0x00000143 (323) - * Revision 0x02 - * Checksum 0x6C - * OEM ID "DRTNIA" - * OEM Table ID "XOSI" - * OEM Revision 0x00001000 (4096) - * Compiler ID "INTL" - * Compiler Version 0x20190509 (538510601) - */ -DefinitionBlock ("", "SSDT", 2, "DRTNIA", "XOSI", 0x00001000) -{ - Method (XOSI, 1, NotSerialized) - { - Local0 = Package (0x11) - { - "Windows 2001", - "Windows 2001.1", - "Windows 2001 SP1", - "Windows 2001 SP2", - "Windows 2001 SP3", - "Windows 2006", - "Windows 2006 SP1", - "Windows 2009", - "Windows 2012", - "Windows 2013", - "Microsoft Windows NT", - "Microsoft Windows", - "Microsoft WindowsME: Millennium Edition" - } - If (_OSI ("Darwin")) - { - Return ((Ones != Match (Local0, MEQ, Arg0, MTR, Zero, Zero))) - } - Else - { - Return (_OSI (Arg0)) - } - } -} - diff --git a/extra-files/decompiled/SSDT-dGPU-Off.dsl b/extra-files/decompiled/SSDT-dGPU-Off.dsl deleted file mode 100644 index 0bb7744..0000000 --- a/extra-files/decompiled/SSDT-dGPU-Off.dsl +++ /dev/null @@ -1,35 +0,0 @@ -/* Based off of Rebaman's work: -* https://github.com/RehabMan/OS-X-Clover-Laptop-Config/blob/master/hotpatch/SSDT-DDGPU.dsl -*/ -DefinitionBlock("", "SSDT", 2, "DRTNIA", "dGPU-Off", 0) -{ -External(_SB.PCI0.PEG0.PEGP._OFF, MethodObj) // ACPI Path of dGPU - - Device(RMD1) - { - Name(_HID, "RMD10000") // _HID: Hardware ID - Method (_STA, 0, NotSerialized) // _STA: Status - { - If (_OSI ("Darwin")) - { - Return (0x0F) - } - Else - { - Return (Zero) - } - } - - Method(_INI) - { - If (_OSI ("Darwin")) - { - // disable discrete graphics (Nvidia/Radeon) if it is present - If (CondRefOf(\_SB.PCI0.PEG0.PEGP._OFF)) { \_SB.PCI0.PEG0.PEGP._OFF() } - } - Else - { - } - } - } -} \ No newline at end of file diff --git a/extra-files/decompiled/SSDT-dGPU-Off.dsl.zip b/extra-files/decompiled/SSDT-dGPU-Off.dsl.zip deleted file mode 100644 index b7182e5475abff60215bdebda107074dcd68ebb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmWIWW@Zs#-~d98$b|t6P*BCpz#zz=zz`hl5~7>p9uTVQpO&VVQk)YS!pp$^Gki_l zFCYfdr4`%^j4WRn85n@ZFfgnQy4`i#K%n+}I8WV5(WKLFlkZKkxM^y#ZDX*;Qh}6e znbof&+=3=8Rs0`!lKZxrK*mCL6RERL&#+$P)R}Qe%H{G5X3J@B4*cThI_I?S%p6XK z)n6B+O?kI7uRk@Qllkn%)TeD2n`iVw z_GPQ5iMek1y7-0WZ=oxziq)=kZg^;WJ?2ZdUx@y^*M0}LCO-R@az*35+Q&Om*^{3x z_f7sX!9qO!Yu1YDYn8i`1XE61@NBwzSz}Ye^mW&RZ!E}jojc8*BY^93s+jY!lI-JK zQu>(L1m{(>#_j90n{=^2a;fVfz87!jJw6e#{ojQHvOCulvYq$2maZoF=!Na`wQ4h# zZ7aU~LPTgG_mnxMf7GwB9Lsq;+i~GcyH($h+)vegbSz+rE6+S>!^&rSy-)Za$lc-E z_e-Pt!=dX1wbIplE7w}J)_Z>CU0UH%TKX>STUnvdgxq*tZ4`a)&uOdUYPoyf^Vjhx7Bss1_1}5>asIYn z&+pxP@>M**o1G)3!$xa8F#bSs9)LA9hyZ0}fT|A62_JlY!aneabp$jpO^{$#7m#NBsI0*DNzzrKgQ-tZ(NRDw;<%hbpF{8=7E$qp zgb7~f&R_M`(Kz9G^|Ysso~Ev!ucxPuXDA;>+bUb;BXT@Ee>h5acAm6!IGF!1`;i0J zj;a1D9C&i)MQn74zV|h5^MzIp_V{hiM|O(Kg1pDhaW6|{MJq6+f;<)A&B!Fej7a{- zK><{9 diff --git a/gitbook/images/favicon.ico b/favicon.ico similarity index 100% rename from gitbook/images/favicon.ico rename to favicon.ico diff --git a/gitbook/fonts/fontawesome/FontAwesome.otf b/gitbook/fonts/fontawesome/FontAwesome.otf deleted file mode 100644 index d4de13e832d567ff29c5b4e9561b8c370348cc9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124988 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ÐT?>-5aYhU|+1c>&YMpPK5x#-mbV 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'NS^o{z1ZKlHsAybrl=JE7AP369ntV%vB zEi(fm!=g{8NmLbAS6W|murNN}LRi&xxgDs@zBGi1(M#zXCC}RO%K1FKJ}+Ng`Z1Xj zzLz5o-@`Tk33-pKR1}nFgY#-ne05|w2XzHodXG5LH=3nO5+ac&+n0nexe3wwXidnt z_0d6mOhSBglse>BI;9Ai@r!4G5NH5~M4u|WTy{FzsUf~l7{uMh{(Hgv^qQ_nO;1lv z*BEdAizUo=*O0S3NKN`|B)vX;%#k%S(Hj_ytdp5QAx#ICcpzOlQz7;+u48K|D{BDn z1B)J=<`WR$;}cL>b3UNWfqg=8}T(hny6j8{Nj+%E{dst=9U zXTjV-tbXd**&xhe??iU&zRvCNcMRPYtEgO`yLOG5O7yKuX)r!hkSpO2(8pAOErL#+ ziVZ%_WwjI@D?g&BSiL-VxrUxY;Uwt2d~}-je=(S+J%1f(aUCwpZlI2qaY{ORsIk_ly zy811(S34DKuiV8Eu8xfO*XLwFN?4Rne8j4cC~Grxt-|rxdABPFy-9%fZ-i~%r{wKD z1@eYRs++hdaV+8_pU}^!6Q}waeTPrb@;TxILq?pBHOEIB98QnmiT(XU7&$LjSLv!#syUt6&et3Nwf5IXw&&@ntWgT`^fl{|xHig@ zTkdPOWRAvRd)0m~Ue)n=9U1vT|4^a&*?HWs`5y-;!mDEU?p6PCtMNf4cfRQOvFbC5 zLmP^guTUeQYce}h`NmeJx;aey1|m=63Gg&zJVc&`YNclJROfn9i@bNUe+w4umO-H& ziJX6IrlYHmZ;tmMzmGvN)qD4^gS~xYeKk8Xo2z4akE}r@C&&S9Mowmq;W+IVcSXIg zws;R$Q5s&Q$;#5DXYwhBlMnx&-o6B^sVn{aCLs&=gd~u}k%XJXy=vXH9hb3a)lRE* zVW^{Z1CdQxBt#Ju2nd3rtU(q*5V0;*Y{hCfJJe~XGo{;9+G?kJr?sux20HczFY5ny zF1gm}*O}-4e9!lM#>3g(^PYXV=e*0)mbN`F)E|SQ_4D67hgF$ZeY0@L3-|6>{u6|s!it^3$a#~52#xFUqM46b=9e!hTVUIf=icdFmvkt}ny|{b&OVl3 zz3+a@w!-YfY}?AgV~07`q`A`yQwuejMR_@ymWTLRsm~SIHZ*6=`t!*%_0L+Hn|Bp8 z+cS90v-G?Gg1>g&)Wj2eSyS`w=Ch}BPFp*+bscN6KUc}mI{db!F|RhW%$8b_R*|+> zV4fZCUGXnXVO?Qe{ipn@%qy1m#}6jj;*&SVTl3weW!vp#o#n50T3#;t!1ban9C}p1@ph&B6WeMccTLe(WwGiDxC^1^-bK6D8UhdU41KvPazd$t3xQ> zlBg-kNSq2D(1#$JaxX~tKq>7O=JxFo8tp=Mq+ml((axPk(7(ECm!&1?@@PJ{R8t0K zudQG3PeG_VFW;8`f_;C{evhXCi_o=!RdqWWva2+^i;MRZStr&A2?vDVZWIy|=B^ML zhHFZeI|n7$_;^0#atG)HBcPxx^<_RS|HW@#<7LkrK698K^VTz;J@aWJKkMMx)-%T- z9{DT}(Gb43dAqFSwU@elH9Y65?Rx1o+|i8!kt;u6J4AIOWYw^=rL9m?0J^@}>tOQ6UZoAM&_E^+A8L zLkR5(Q(7*_N-l&cy%!Yx5OZ;Y_WezQgmy>W2!i)_zcP_19Tvl169hC>r@ zx(l)N)=>Q>T3kbqu=S2n9l8MB77%{fXSj7*SmgUyDQtm$&YNk<+QiEEcuRaiLQbMB zcIcdif+ABR{87!nSOt3j(y#aeALM=L2J#tw=gs_(2@u2(_MFZ6d*x5D7lsKc%dM81 z)6}_XS+1?=n%Mn;a2RVTAb3CTs?ZV<0E_4?{glSXAwrfJ&vDv?nO`aIa_Hxl>~9_ zfOEOMZ(;8U^ZYdr&zraA&Cb`)zWL5OXCGc*>kSkxLlN9!!9ILEpm*=9x4fOuJ})z? zxH!|6w{m6v3UIA2y~u}t*>bh@6Z;46e&2E3YBZo})<6yCBf?@k8mI$Yrpe}SviP9c zZ`clQjBkyzrf<&8+-6Vbhb(~hHu+UeMP+qWwWTp;|F&|Qr~2fHS_^c@6_?sh#xHGN zW{q6xS_^eU8Jl-+wqk{wbr1G!r9EMFPIBs+9eFu<1^L^uvNLnGXxg@=G{jkjt#kSY z2(y=$EofS4e`W*$|lP0lP!_0mu-}7 zmAPfrvN~C#?5fNwyACBox8*9iNggU6As;V~kS~`<$>Zc1@~v{Wyii^xuaP&(TjVF? z?FyA*pn_8jQjAsHriY~?Himw#kDy{`g z44578P{8tlRRQY)QUcNgwg%(}>$VCsEN~T(iCgz zG*4)bYffqYrs>jL(tI4K3JeMy9{51uoWS{k8G)sN)qyVtz8v^k;2VJ#S%%fHI@ZYk zhUM5{>}Ylo8wn{3(QF#K8Ap^-wvs)_KFL1Eo@ZZU-()Y~!scW4M`9ww$#^o8EFeos z6p1Ap$tIFZ3dk-}Mm(gQyi2ZVS*=m)&<@v*(N54ls9ma!);hHr+G6br^_eE?8&LIdsExV|9~s({&H%mg?5)QgqvOb-I(fS9Sl;eWtsn z>(=$^ZtInLtv*Em8~tGYJ^J72BlPk5B)wZ-s&CdG(jV8K*1xEKMgKSbTl!D+JqD$L zH5d&84TB8B4WkW{4bu$|80HurHmoot8*&X5h8DvSL%ZPx!(R+<87>$u8oo931S^6~ z!NY>@3!WYv9y~YrvEWs~vB8^yvx5tQcLkRR*9SKT9|}Ged@A_);Fp8{8vJH(SMbH) zkAlAp{x+Y{-U?tPpodVaTqK+K?wgo(y>= zF`w9nLRI%GQb8V5y{SE=Yun{F06pUSYGznbmbz!EcM zfVkyR-||4Nx_KLJ^apGM8F%OV|Cz($b*`R@SdS7VFG33uPWxBD0tSNhKSSA-3Wum> zD54o)19$oW0iHgUWwa_YJ3G@ppD$)R)l(rfRON%7E$}=p12q}Wlml>nYxb!uL_Lfp z<2V}`!P!X{7!IRSAfm5Xh*am~QUy6Xa!YeOd0=$u8u%?s1=B<4@&)K7CBR8|up;2& zX_AeohNEI&ycbpV@Kn({RQB*IxyHJ>Mlu8FRS&Qvk`=nfaD3NHmP}-mIg*f)l0fcd z?Iav|tEO|r%*V5M%*ErW&@qq2n`GbVzp^EKItO`D5~rh|I+fDL|u9syIBIE z|3&%RE!)fTp$ULchCae`?C5@Ruvgw=39alm>~W5Ca(!`qar^+zC;s|4r~>d5Rar%m z9_P*#umpOZBS)bP(SCzDlEFbT6e-~N1`G!A>$SIQ7)P)~Oj0OjUr~r}N61Sp zg1Q1?9>=1wZJjEz^h{I-?TkotMkG3;BkIgj8$mNXz}+wnNQ4};C!l!#M%QX61X!ec zA#c||9s(sBv~}@#Ih=d5Q<1@_5<7 z!%u>zNFr(z5~!jUK7llBtIr}UxDsM6WBZ9z8FUCJIkB4#A{}SWbPy1TL3Axq&ErTi zn)0{s2K<&Kb=i#s-=HSq#$fp)Ro?eHr{2I3^-935Wl5OQOPWY%WY@swL1);ETM`^&ofSPkp%LPv&l}>0PaS zY1yduIo7_(pKyJX)pOcMy|mocyXIz;($&Jt*cM2j%JsSVa26vdJJU8FvlhHloijNy zft|#WNe@2AH*k|4yzr&Hw~GqBBIfZNakj>kIGx1Wmsrx5*q3M_?c50zZ;&X&3=={y zVMc)Ei1?`58N6JX@Qg_9yX61YlQCF7+*857buT7f(yf$|Bc%7J+d^c!3IbWPF4!SnVJXIEg>$LMP zgWGnhU6@Iw#$CnTdNo@K3VV1FES!H#c-cxG0(HCbsu13);kR&9(r9*RPC4{KHm<|> zWSkIb>B|7ux(kn9!M60uO*I)doLQ&jxOZjj%?|x^^xo{|UA22d!_#vkAy%{g*3Wt4+(vI86>>wSi)>04joOY|jJ z$bcPK1@D&3%qQdh5&}02HXStYVc_1w&Zoqsv(U8{9{kcqgjGTbq3b0vf65L>;0WlM zn^{Z+bqP!G9%LtffA!VB6Tf;!GIz<6xtPg&(PKVvrU*I0G5lcnO^#YqS{`MOsECT4 z`rx>T;nAUoo@+h7|J^6944ixp#C+FAVBH#N;g5lzCC4|}cEi-?F_TBdwnr7z_p;>r z=bv9E)9~aRFb#QoKuAkvyMZ?W0^D!~`Z~8kjmO;iQ>oIvHa?603X5Gr3a>z+_1K;; z=Dn!?46XyiG`D77L4%b}84tN$2Xt1pcbd8_@3;6vC>paS$r8~OW^SLfQuL%{s*D_HpOnQ0=n1#tqmD|VqKU!Aol zb9a`_>uvN}LEYroRK^dspV+P319jsbOG9zP&V9DuwN0pa;FM<5do>?jv=Gcz55J#P z5YXe82z@puRHNlH==qwON+=U0RL2Qjv8EwU-(YC(8ptm~s;PL{-|ht30Ld-98 z&jhSTr3Gb$6@|SZ^c>jgZ1S{ONCV%9snf-GQC&84egW1a8FGTdc0{0O!G#gPYe7TM z=Nb4h>!TJWY4|h78D!|FA*qi+FMH0hX*>H8N=@(t+W!zLK8WIx)Bns# z%%jlilOW&;8-Q7u+KZ=P72X~m{dmgXUahUIsxAjS;Lmgyo5>gHDf4Sp5Mo zH~C}`1FPzj;p(7CSp9%ahmOWq-~%jHCa1F`rqxNnNgEDPWG0;Nc+(=Br8u95KoY(;qV91(Q1O%Xy0UY8}T!V_Op0O;{$zj8mA3@ zBF7h#!b)f=A`J!ma%+gmvuIT(JmIYfbU9~C~Ix%W;LWzt|VM#n|CUjv6Cl#D71P$cz z{RTW(kKtCL7M#p+e30>Gcv!$;anN}91sop%WPF!`@Kd?3#}i69j+1O*aX~0uFUvVH zn(8&cIi#e$wUyM?mNezmqDoJ)B&%|3O|E!S!v5re`GGTiwuL1}_E)uM90ezA?ZEn{ z+dXHjxM3NJ8>BhdFg|)5ZKkvEx)*u*hacHKoCa1UL5DAs2o`TLIG?KCz(^D+lToU@ z7>OX}sv(}rN)HhdaIC~KjbAuFfQ42nayVP*dafh)FO)BI^v5SU?UiK}rDc0GWFCvp z3o=pNlv$Iu(LyKn(x@{XPt+W0YP9_m^I;CBo5p>IfwGXrrkqooQIeB`WxON?XRR`5 z>B2c7Tt(DRP)+q-s;PdXoovb6ky`BvO|Nd*ddNzsmTCS?4oax)MEw#=#2*U<}L&?Q45jhZN1TIxVFM83n413Cx16!J@U+E1Np?(DQs zYMeR*(_`G-KP)2ZG?rABRP3s>Pw^G=xA~uxwY9YkjTYUKcjlzH3f&k`N7Z?aEjx}_ z-+lER(gli@2@^mDG<){b0{QBzr+Lz4Bb8NEo(fMWsMnuR{*Mx=%IZe>Fw z`B`JF(&NE<>?*#%LO>=|LUvXbR~A+l)E3m|*MZb_%Ru1>p#sPwsQ~gw2plJLJkR6p z@9^At-ho$**#!G3N?AcA*%Ea^Q+{hJ*7>#!kJCw8SwP%3IlHBAJ=4 zB=H5*rWAkJ9t98SR5jLNs&%M{$9B53eBs(1n&=&?ic2h{oGzsm9Ht9wG-j%5u(a-_HlG+tCo0QJXV`TUOV3f1@!1?^!M z<|L6_ypg52@fs9;hpFT;Y)y1?LPx}MB&(3>oG0pbEJZj2fL=o#hlOC!=Token_YN7 zCX}_xMs8qbC0kfEp(iHtul}~f4mI~7LAB-a>Xaf|CfQyH%0&AckPp0fcXbt^98q#C zIaL*VEA4w5JdHICn)hEOptw3vZ~Z`3Rk3~hE;}g!r_qEWmelO4Zm8O?Y1+d>P7Tg- zuObT)_oy%+Twty1lPhY|?BrgKe;(_L3A+Il7g~vRnQKdOqCH{lAJ>e;fjsIKxT(H? z%K96R;tG~09PSJ1co~PgB2w1?%>!ymNnT;A01AAy;gC;Hc?7IRIAEFuy-x{Qp=8vI z53gcRC4C|X0LE^w%RGw?Tb#0R0W}1_x#T4O5r?CX-s^?HLBw_T&nYYqVS*bw5=K`4 zdd{zB#kNdyZFS|@^U}*x_h%9u(0l0$6M;ft#G1&YNkx;an}zv%z~?~t$vE0fCTe7g z&oFdfGgT6Z0R)WL6`=8g(2W6^2quzWP>?TXhb-}t*XvQym6yi_gBkbrMA)s$%`d@6 z^!$tvf-~bW%CARk_YPewaKdQ3)u0l%JE7aIo!n@WLDlFKO^}+T^lo<>CkoNxX!4U+lW>nYy1=ch|mtk zA=&NM*w1yDNC zmP%$K<6w^B@#i%27v|!i!Gmpsqr5t=%{$Y((7W0j=S}pccyqj^-u>P-?8+dZ>;VfX6plv`!q9Tg1nJo1Y?8Lz=R$Q$lm?2Yoqd)Iq6dfnb~Z?pF)Z-@6C?`K|b zH`8tCb|BA@-Q&B%yBBvyb#Lr;cb9iJcR$tL(fv;MXWiZ&rpM4Ts3*KClQ7qgBDK^fd-8MW7H5}P#EL}=oQr8)?e5E zOaG(3N8hdY>VMFEr2k%jO@CE?MgN`tTm3is%lfbNU+Mp;|5E>j{&W3jc+B`%|B?P5 z`VaM&^cVFX=-=1BM^205YU6+DxMlw(?*BGQ#b`0o2}7UtFui0uN51iJ#~S^N>x@F2 zhD_(88PEa=b&-z`9&-Ekt=oYz6@^qFMgKqe`sY?4Z8OCGa(>856mDjttOIavX0y^w zRR%I^DE417G~OS+icUPFk^G{Y`b8MncgG=3Cc;x_m}r>(bQA}LN0>##N5kFBLsg zFXb(zf&I8>+;^27ZnR%Gg@H=KJ7uDN(IB4MQeFzl51WPsz`hd?x4*2SP0J)2=1%y% zbZkj5v_GV_67xbiFjjB--Tko^HnA@AEh*4)6hD{(gM^ za6Pr9av_}+ew4)@20IXj;-X`K8o8SZhoO1g38Ue6@btUy@#7c66@V4v{k8;8@k(tW z)dz6lQWz}<4Hx5(uZRRYD8S7;N)5_32Ih`m$^&tLEIDxmgX(y51WSlCnLeZ9;3)d8U^y|$3^Ym-bv?X z>?pGxd58w#cG0+jo0|SStYRJf=>Z##aN>^>VWfEEH;0BJJJC>B7_pudpC3*orA1lp zrEXd_sa}8|MZ?5=+>Aqwb&lc?;oKsuSxSG$MmTi`z@~Xcel#}2%0zb|5`gyT(tjbdZ~<3 zdGAgq;r*p8l}jpzl&|`kpUaH6a4CP}7c1g;wm&~9{oOXj1^)oR1;GxxJ5F-bGQ&O0 z4=dJ>#`(h|q;mS<=Sp>f-$BD9zrW5yC3wlEW7Ut_fv^q0dk>AH;WT}}yT6Wb_m6is zGlJri=J?(DPxIir(p@VgbvU|FW$9dH+nk{K%7=MPui6|QDl zWPkF9YnXxZXums9NkuvFpapOHFaj%7{%*O^%(nXkp}nS+l1tikvrh+2TbJkxOHp z>4~W+j>%*18#_tFu{bFV4fZO46Mz4!a zj&^QvM7vzh#I>75kd#zcVoYp0vUj>1{``L~Z-UFUaoV_XG<|e`*~TWO{%YVj5begM zq{oh99%NFPjZ7v!OcR-SCV_D=4(Mo)W;Qdia6JT93bPLJ4t%tZXC^TBF=OGL#U$b9 zxGPn<=!<32kv>cP*mP)l4*kXZ?=17NciKB!g*I3>Zi4!Se(dX9pID2vTs0GG(u^3BC{5C`WZ_KQc+(Fpws=Ak)L)tuv6blL#|-$d|NaLw CDx5C> diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.eot b/gitbook/fonts/fontawesome/fontawesome-webfont.eot deleted file mode 100644 index c7b00d2ba8896fd29de846b19f89fcf0d56ad152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76518 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%0DyT{kunD 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⋙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 z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.ttf b/gitbook/fonts/fontawesome/fontawesome-webfont.ttf deleted file mode 100644 index f221e50a2ef60738ba30932d834530cdfe55cb3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152796 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

                                                                    =v_rA!CPE#mM^4@)}X7qf;At+v)G*FZd&; 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 ALjV8( diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.woff b/gitbook/fonts/fontawesome/fontawesome-webfont.woff deleted file mode 100644 index 6e7483cf61b490c08ed644d6ef802c69472eb247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90412 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%0Ded40&XED0GYFoIh+AV*?9!MR5pBW?X_8Bp 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 IH>08b4`|GD*#H0l diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 b/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 deleted file mode 100644 index 7eb74fd127ee5eddf3b95fee6a20dc1684b0963b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71896 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≠dR0E9ICQ{-tcR;@{R^I5P#1GUH!p=-{c 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 diff --git a/gitbook/gitbook-plugin-anchors/plugin.css b/gitbook/gitbook-plugin-anchors/plugin.css deleted file mode 100644 index adf3e9e..0000000 --- a/gitbook/gitbook-plugin-anchors/plugin.css +++ /dev/null @@ -1,30 +0,0 @@ - -a.plugin-anchor { - color: inherit !important; - display: none; - margin-left: -30px; - padding-left: 40px; - cursor: pointer; - position: absolute; - top: 0; - left: 0; - bottom: 0; -} - -a.plugin-anchor i { - margin-left: -30px; - font-size: 15px !important; -} - -h1, h2, h3, h4, h5, h6 { - position: relative; -} - -h1:hover a.plugin-anchor, h2:hover a.plugin-anchor, h3:hover a.plugin-anchor, -h4:hover a.plugin-anchor, h5:hover a.plugin-anchor, h6:hover a.plugin-anchor { - display: inline-block; -} - -.book .book-body .page-wrapper .page-inner section.normal { - overflow: visible; -} diff --git a/gitbook/gitbook-plugin-fontsettings/fontsettings.js b/gitbook/gitbook-plugin-fontsettings/fontsettings.js deleted file mode 100644 index ff7be71..0000000 --- a/gitbook/gitbook-plugin-fontsettings/fontsettings.js +++ /dev/null @@ -1,240 +0,0 @@ -require(['gitbook', 'jquery'], function(gitbook, $) { - // Configuration - var MAX_SIZE = 4, - MIN_SIZE = 0, - BUTTON_ID; - - // Current fontsettings state - var fontState; - - // Default themes - var THEMES = [ - { - config: 'white', - text: 'White', - id: 0 - }, - { - config: 'sepia', - text: 'Sepia', - id: 1 - }, - { - config: 'night', - text: 'Night', - id: 2 - } - ]; - - // Default font families - var FAMILIES = [ - { - config: 'serif', - text: 'Serif', - id: 0 - }, - { - config: 'sans', - text: 'Sans', - id: 1 - } - ]; - - // Return configured themes - function getThemes() { - return THEMES; - } - - // Modify configured themes - function setThemes(themes) { - THEMES = themes; - updateButtons(); - } - - // Return configured font families - function getFamilies() { - return FAMILIES; - } - - // Modify configured font families - function setFamilies(families) { - FAMILIES = families; - updateButtons(); - } - - // Save current font settings - function saveFontSettings() { - gitbook.storage.set('fontState', fontState); - update(); - } - - // Increase font size - function enlargeFontSize(e) { - e.preventDefault(); - if (fontState.size >= MAX_SIZE) return; - - fontState.size++; - saveFontSettings(); - } - - // Decrease font size - function reduceFontSize(e) { - e.preventDefault(); - if (fontState.size <= MIN_SIZE) return; - - fontState.size--; - saveFontSettings(); - } - - // Change font family - function changeFontFamily(configName, e) { - if (e && e instanceof Event) { - e.preventDefault(); - } - - var familyId = getFontFamilyId(configName); - fontState.family = familyId; - saveFontSettings(); - } - - // Change type of color theme - function changeColorTheme(configName, e) { - if (e && e instanceof Event) { - e.preventDefault(); - } - - var $book = gitbook.state.$book; - - // Remove currently applied color theme - if (fontState.theme !== 0) - $book.removeClass('color-theme-'+fontState.theme); - - // Set new color theme - var themeId = getThemeId(configName); - fontState.theme = themeId; - if (fontState.theme !== 0) - $book.addClass('color-theme-'+fontState.theme); - - saveFontSettings(); - } - - // Return the correct id for a font-family config key - // Default to first font-family - function getFontFamilyId(configName) { - // Search for plugin configured font family - var configFamily = $.grep(FAMILIES, function(family) { - return family.config == configName; - })[0]; - // Fallback to default font family - return (!!configFamily)? configFamily.id : 0; - } - - // Return the correct id for a theme config key - // Default to first theme - function getThemeId(configName) { - // Search for plugin configured theme - var configTheme = $.grep(THEMES, function(theme) { - return theme.config == configName; - })[0]; - // Fallback to default theme - return (!!configTheme)? configTheme.id : 0; - } - - function update() { - var $book = gitbook.state.$book; - - $('.font-settings .font-family-list li').removeClass('active'); - $('.font-settings .font-family-list li:nth-child('+(fontState.family+1)+')').addClass('active'); - - $book[0].className = $book[0].className.replace(/\bfont-\S+/g, ''); - $book.addClass('font-size-'+fontState.size); - $book.addClass('font-family-'+fontState.family); - - if(fontState.theme !== 0) { - $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, ''); - $book.addClass('color-theme-'+fontState.theme); - } - } - - function init(config) { - // Search for plugin configured font family - var configFamily = getFontFamilyId(config.family), - configTheme = getThemeId(config.theme); - - // Instantiate font state object - fontState = gitbook.storage.get('fontState', { - size: config.size || 2, - family: configFamily, - theme: configTheme - }); - - update(); - } - - function updateButtons() { - // Remove existing fontsettings buttons - if (!!BUTTON_ID) { - gitbook.toolbar.removeButton(BUTTON_ID); - } - - // Create buttons in toolbar - BUTTON_ID = gitbook.toolbar.createButton({ - icon: 'fa fa-font', - label: 'Font Settings', - className: 'font-settings', - dropdown: [ - [ - { - text: 'A', - className: 'font-reduce', - onClick: reduceFontSize - }, - { - text: 'A', - className: 'font-enlarge', - onClick: enlargeFontSize - } - ], - $.map(FAMILIES, function(family) { - family.onClick = function(e) { - return changeFontFamily(family.config, e); - }; - - return family; - }), - $.map(THEMES, function(theme) { - theme.onClick = function(e) { - return changeColorTheme(theme.config, e); - }; - - return theme; - }) - ] - }); - } - - // Init configuration at start - gitbook.events.bind('start', function(e, config) { - var opts = config.fontsettings; - - // Generate buttons at start - updateButtons(); - - // Init current settings - init(opts); - }); - - // Expose API - gitbook.fontsettings = { - enlargeFontSize: enlargeFontSize, - reduceFontSize: reduceFontSize, - setTheme: changeColorTheme, - setFamily: changeFontFamily, - getThemes: getThemes, - setThemes: setThemes, - getFamilies: getFamilies, - setFamilies: setFamilies - }; -}); - - diff --git a/gitbook/gitbook-plugin-fontsettings/website.css b/gitbook/gitbook-plugin-fontsettings/website.css deleted file mode 100644 index 26591fe..0000000 --- a/gitbook/gitbook-plugin-fontsettings/website.css +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Theme 1 - */ -.color-theme-1 .dropdown-menu { - background-color: #111111; - border-color: #7e888b; -} -.color-theme-1 .dropdown-menu .dropdown-caret .caret-inner { - border-bottom: 9px solid #111111; -} -.color-theme-1 .dropdown-menu .buttons { - border-color: #7e888b; -} -.color-theme-1 .dropdown-menu .button { - color: #afa790; -} -.color-theme-1 .dropdown-menu .button:hover { - color: #73553c; -} -/* - * Theme 2 - */ -.color-theme-2 .dropdown-menu { - background-color: #2d3143; - border-color: #272a3a; -} -.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner { - border-bottom: 9px solid #2d3143; -} -.color-theme-2 .dropdown-menu .buttons { - border-color: #272a3a; -} -.color-theme-2 .dropdown-menu .button { - color: #62677f; -} -.color-theme-2 .dropdown-menu .button:hover { - color: #f4f4f5; -} -.book .book-header .font-settings .font-enlarge { - line-height: 30px; - font-size: 1.4em; -} -.book .book-header .font-settings .font-reduce { - line-height: 30px; - font-size: 1em; -} -.book.color-theme-1 .book-body { - color: #704214; - background: #f3eacb; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section { - background: #f3eacb; -} -.book.color-theme-2 .book-body { - color: #bdcadb; - background: #1c1f2b; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section { - background: #1c1f2b; -} -.book.font-size-0 .book-body .page-inner section { - font-size: 1.2rem; -} -.book.font-size-1 .book-body .page-inner section { - font-size: 1.4rem; -} -.book.font-size-2 .book-body .page-inner section { - font-size: 1.6rem; -} -.book.font-size-3 .book-body .page-inner section { - font-size: 2.2rem; -} -.book.font-size-4 .book-body .page-inner section { - font-size: 4rem; -} -.book.font-family-0 { - font-family: Georgia, serif; -} -.book.font-family-1 { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal { - color: #704214; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a { - color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { - color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 { - border-color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { - color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr { - background-color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote { - border-color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { - background: #fdf6e3; - color: #657b83; - border-color: #f8df9c; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight { - background-color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td { - border-color: #f5d06c; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr { - color: inherit; - background-color: #fdf6e3; - border-color: #444444; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { - background-color: #fbeecb; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal { - color: #bdcadb; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a { - color: #3eb1d0; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { - color: #fffffa; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 { - border-color: #373b4e; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { - color: #373b4e; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr { - background-color: #373b4e; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote { - border-color: #373b4e; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { - color: #9dbed8; - background: #2d3143; - border-color: #2d3143; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight { - background-color: #282a39; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td { - border-color: #3b3f54; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr { - color: #b6c2d2; - background-color: #2d3143; - border-color: #3b3f54; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { - background-color: #35394b; -} -.book.color-theme-1 .book-header { - color: #afa790; - background: transparent; -} -.book.color-theme-1 .book-header .btn { - color: #afa790; -} -.book.color-theme-1 .book-header .btn:hover { - color: #73553c; - background: none; -} -.book.color-theme-1 .book-header h1 { - color: #704214; -} -.book.color-theme-2 .book-header { - color: #7e888b; - background: transparent; -} -.book.color-theme-2 .book-header .btn { - color: #3b3f54; -} -.book.color-theme-2 .book-header .btn:hover { - color: #fffff5; - background: none; -} -.book.color-theme-2 .book-header h1 { - color: #bdcadb; -} -.book.color-theme-1 .book-body .navigation { - color: #afa790; -} -.book.color-theme-1 .book-body .navigation:hover { - color: #73553c; -} -.book.color-theme-2 .book-body .navigation { - color: #383f52; -} -.book.color-theme-2 .book-body .navigation:hover { - color: #fffff5; -} -/* - * Theme 1 - */ -.book.color-theme-1 .book-summary { - color: #afa790; - background: #111111; - border-right: 1px solid rgba(0, 0, 0, 0.07); -} -.book.color-theme-1 .book-summary .book-search { - background: transparent; -} -.book.color-theme-1 .book-summary .book-search input, -.book.color-theme-1 .book-summary .book-search input:focus { - border: 1px solid transparent; -} -.book.color-theme-1 .book-summary ul.summary li.divider { - background: #7e888b; - box-shadow: none; -} -.book.color-theme-1 .book-summary ul.summary li i.fa-check { - color: #33cc33; -} -.book.color-theme-1 .book-summary ul.summary li.done > a { - color: #877f6a; -} -.book.color-theme-1 .book-summary ul.summary li a, -.book.color-theme-1 .book-summary ul.summary li span { - color: #877f6a; - background: transparent; - font-weight: normal; -} -.book.color-theme-1 .book-summary ul.summary li.active > a, -.book.color-theme-1 .book-summary ul.summary li a:hover { - color: #704214; - background: transparent; - font-weight: normal; -} -/* - * Theme 2 - */ -.book.color-theme-2 .book-summary { - color: #bcc1d2; - background: #2d3143; - border-right: none; -} -.book.color-theme-2 .book-summary .book-search { - background: transparent; -} -.book.color-theme-2 .book-summary .book-search input, -.book.color-theme-2 .book-summary .book-search input:focus { - border: 1px solid transparent; -} -.book.color-theme-2 .book-summary ul.summary li.divider { - background: #272a3a; - box-shadow: none; -} -.book.color-theme-2 .book-summary ul.summary li i.fa-check { - color: #33cc33; -} -.book.color-theme-2 .book-summary ul.summary li.done > a { - color: #62687f; -} -.book.color-theme-2 .book-summary ul.summary li a, -.book.color-theme-2 .book-summary ul.summary li span { - color: #c1c6d7; - background: transparent; - font-weight: 600; -} -.book.color-theme-2 .book-summary ul.summary li.active > a, -.book.color-theme-2 .book-summary ul.summary li a:hover { - color: #f4f4f5; - background: #252737; - font-weight: 600; -} diff --git a/gitbook/gitbook-plugin-github-buttons/plugin.js b/gitbook/gitbook-plugin-github-buttons/plugin.js deleted file mode 100644 index 8022e14..0000000 --- a/gitbook/gitbook-plugin-github-buttons/plugin.js +++ /dev/null @@ -1,85 +0,0 @@ -// LICENSE : MIT -"use strict"; -require(['gitbook'], function (gitbook) { - function addBeforeHeader(element) { - jQuery('.book-header > h1').before(element); - } - - function createButton(_ref) { - var user = _ref.user; - var repo = _ref.repo; - var type = _ref.type; - var size = _ref.size; - var width = _ref.width; - var height = _ref.height; - var count = _ref.count; - - var extraParam = type === "watch" ? "&v=2" : ""; - return '\n \n '; - } - - function createUserButton(_ref2) { - var user = _ref2.user; - var size = _ref2.size; - var width = _ref2.width; - var height = _ref2.height; - var count = _ref2.count; - - return '\n \n '; - } - - function insertGitHubLink(button) { - var user = button.user; - var repo = button.repo; - var type = button.type; - var size = button.size; - var width = button.width; - var height = button.height; - var count = button.count; - - var size = size || "large"; - var width = width || (size === "large" ? "150" : "100"); - var height = height || (size === "large" ? "30" : "20"); - var count = typeof count === "boolean" ? count : false; - - if (type === 'follow') { - var elementString = createUserButton({ - user: user, - size: size, - width: width, - height: height, - count: count - }); - } else { - var elementString = createButton({ - user: user, - repo: repo, - type: type, - size: size, - width: width, - height: height, - count: count - }); - } - addBeforeHeader(elementString); - } - - function init(config) { - config.buttons.forEach(insertGitHubLink); - } - - // injected by html hook - function getPluginConfig() { - return window["gitbook-plugin-github-buttons"]; - } - - // make sure configuration gets injected - gitbook.events.bind('start', function (e, config) { - window["gitbook-plugin-github-buttons"] = config["github-buttons"]; - }); - - gitbook.events.bind('page.change', function () { - init(getPluginConfig()); - }); -}); -//# sourceMappingURL=plugin.js.map \ No newline at end of file diff --git a/gitbook/gitbook-plugin-github-buttons/plugin.js.map b/gitbook/gitbook-plugin-github-buttons/plugin.js.map deleted file mode 100644 index 13e8f7d..0000000 --- a/gitbook/gitbook-plugin-github-buttons/plugin.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/plugin.js"],"names":[],"mappings":"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","file":"plugin.js","sourcesContent":["// LICENSE : MIT\n\"use strict\";\nrequire(['gitbook'], function (gitbook) {\n function addBeforeHeader(element) {\n jQuery('.book-header > h1').before(element)\n }\n\n function createButton({\n user,\n repo,\n type,\n size,\n width,\n height,\n count\n }) {\n var extraParam = type === \"watch\" ? \"&v=2\" : \"\";\n return `\n \n `;\n }\n\n function createUserButton({\n user,\n size,\n width,\n height,\n count\n }) {\n return `\n \n `;\n }\n\n function insertGitHubLink(button) {\n var {\n user,\n repo,\n type,\n size,\n width,\n height,\n count\n } = button;\n\n var size = size || \"large\";\n var width = width || (size === \"large\" ? \"150\" : \"100\");\n var height = height || (size === \"large\" ? \"30\" : \"20\");\n var count = typeof count === \"boolean\" ? count : false;\n\n if (type === 'follow') {\n var elementString = createUserButton({\n user,\n size,\n width,\n height,\n count \n });\n } else {\n var elementString = createButton({\n user,\n repo,\n type,\n size,\n width,\n height,\n count\n });\n }\n addBeforeHeader(elementString);\n }\n\n function init(config) {\n config.buttons.forEach(insertGitHubLink);\n }\n\n // injected by html hook\n function getPluginConfig() {\n return window[\"gitbook-plugin-github-buttons\"];\n }\n\n // make sure configuration gets injected\n gitbook.events.bind('start', function (e, config) {\n window[\"gitbook-plugin-github-buttons\"] = config[\"github-buttons\"];\n });\n\n gitbook.events.bind('page.change', function () {\n init(getPluginConfig());\n });\n});\n"]} \ No newline at end of file diff --git a/gitbook/gitbook-plugin-highlight/ebook.css b/gitbook/gitbook-plugin-highlight/ebook.css deleted file mode 100644 index cecaaab..0000000 --- a/gitbook/gitbook-plugin-highlight/ebook.css +++ /dev/null @@ -1,135 +0,0 @@ -pre, -code { - /* http://jmblog.github.io/color-themes-for-highlightjs */ - /* Tomorrow Comment */ - /* Tomorrow Red */ - /* Tomorrow Orange */ - /* Tomorrow Yellow */ - /* Tomorrow Green */ - /* Tomorrow Aqua */ - /* Tomorrow Blue */ - /* Tomorrow Purple */ -} -pre .hljs-comment, -code .hljs-comment, -pre .hljs-title, -code .hljs-title { - color: #8e908c; -} -pre .hljs-variable, -code .hljs-variable, -pre .hljs-attribute, -code .hljs-attribute, -pre .hljs-tag, -code .hljs-tag, -pre .hljs-regexp, -code .hljs-regexp, -pre .hljs-deletion, -code .hljs-deletion, -pre .ruby .hljs-constant, -code .ruby .hljs-constant, -pre .xml .hljs-tag .hljs-title, -code .xml .hljs-tag .hljs-title, -pre .xml .hljs-pi, -code .xml .hljs-pi, -pre .xml .hljs-doctype, -code .xml .hljs-doctype, -pre .html .hljs-doctype, -code .html .hljs-doctype, -pre .css .hljs-id, -code .css .hljs-id, -pre .css .hljs-class, -code .css .hljs-class, -pre .css .hljs-pseudo, -code .css .hljs-pseudo { - color: #c82829; -} -pre .hljs-number, -code .hljs-number, -pre .hljs-preprocessor, -code .hljs-preprocessor, -pre .hljs-pragma, -code .hljs-pragma, -pre .hljs-built_in, -code .hljs-built_in, -pre .hljs-literal, -code .hljs-literal, -pre .hljs-params, -code .hljs-params, -pre .hljs-constant, -code .hljs-constant { - color: #f5871f; -} -pre .ruby .hljs-class .hljs-title, -code .ruby .hljs-class .hljs-title, -pre .css .hljs-rules .hljs-attribute, -code .css .hljs-rules .hljs-attribute { - color: #eab700; -} -pre .hljs-string, -code .hljs-string, -pre .hljs-value, -code .hljs-value, -pre .hljs-inheritance, -code .hljs-inheritance, -pre .hljs-header, -code .hljs-header, -pre .hljs-addition, -code .hljs-addition, -pre .ruby .hljs-symbol, -code .ruby .hljs-symbol, -pre .xml .hljs-cdata, -code .xml .hljs-cdata { - color: #718c00; -} -pre .css .hljs-hexcolor, -code .css .hljs-hexcolor { - color: #3e999f; -} -pre .hljs-function, -code .hljs-function, -pre .python .hljs-decorator, -code .python .hljs-decorator, -pre .python .hljs-title, -code .python .hljs-title, -pre .ruby .hljs-function .hljs-title, -code .ruby .hljs-function .hljs-title, -pre .ruby .hljs-title .hljs-keyword, -code .ruby .hljs-title .hljs-keyword, -pre .perl .hljs-sub, -code .perl .hljs-sub, -pre .javascript .hljs-title, -code .javascript .hljs-title, -pre .coffeescript .hljs-title, -code .coffeescript .hljs-title { - color: #4271ae; -} -pre .hljs-keyword, -code .hljs-keyword, -pre .javascript .hljs-function, -code .javascript .hljs-function { - color: #8959a8; -} -pre .hljs, -code .hljs { - display: block; - background: white; - color: #4d4d4c; - padding: 0.5em; -} -pre .coffeescript .javascript, -code .coffeescript .javascript, -pre .javascript .xml, -code .javascript .xml, -pre .tex .hljs-formula, -code .tex .hljs-formula, -pre .xml .javascript, -code .xml .javascript, -pre .xml .vbscript, -code .xml .vbscript, -pre .xml .css, -code .xml .css, -pre .xml .hljs-cdata, -code .xml .hljs-cdata { - opacity: 0.5; -} diff --git a/gitbook/gitbook-plugin-highlight/website.css b/gitbook/gitbook-plugin-highlight/website.css deleted file mode 100644 index 6674448..0000000 --- a/gitbook/gitbook-plugin-highlight/website.css +++ /dev/null @@ -1,434 +0,0 @@ -.book .book-body .page-wrapper .page-inner section.normal pre, -.book .book-body .page-wrapper .page-inner section.normal code { - /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - /* Tomorrow Comment */ - /* Tomorrow Red */ - /* Tomorrow Orange */ - /* Tomorrow Yellow */ - /* Tomorrow Green */ - /* Tomorrow Aqua */ - /* Tomorrow Blue */ - /* Tomorrow Purple */ -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-comment, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-title { - color: #8e908c; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-variable, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-tag, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { - color: #c82829; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-number, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-number, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-literal, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-params, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-params, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-constant { - color: #f5871f; -} -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { - color: #eab700; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-string, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-string, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-value, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-value, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-header, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-header, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-addition, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - color: #718c00; -} -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { - color: #3e999f; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, -.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, -.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, -.book .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { - color: #4271ae; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { - color: #8959a8; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs, -.book .book-body .page-wrapper .page-inner section.normal code .hljs { - display: block; - background: white; - color: #4d4d4c; - padding: 0.5em; -} -.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, -.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .xml, -.book .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, -.book .book-body .page-wrapper .page-inner section.normal code .xml .javascript, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, -.book .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .css, -.book .book-body .page-wrapper .page-inner section.normal code .xml .css, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - opacity: 0.5; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { - /* - -Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull - -*/ - /* Solarized Green */ - /* Solarized Cyan */ - /* Solarized Blue */ - /* Solarized Yellow */ - /* Solarized Orange */ - /* Solarized Red */ - /* Solarized Violet */ -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs { - display: block; - padding: 0.5em; - background: #fdf6e3; - color: #657b83; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-comment, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-template_comment, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-template_comment, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-header, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-header, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-doctype, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-doctype, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pi, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pi, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-javadoc, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-javadoc { - color: #93a1a1; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-winutils, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-winutils, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .method, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .method, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-addition, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-tag, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-tag, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-request, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-request, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-status, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-status, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .nginx .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .nginx .hljs-title { - color: #859900; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-number, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-number, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-command, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-command, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag .hljs-value, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-tag .hljs-value, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-rules .hljs-value, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-rules .hljs-value, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-phpdoc, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-phpdoc, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-hexcolor, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-hexcolor, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_url, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_url { - color: #2aa198; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-localvars, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-localvars, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-chunk, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-chunk, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-decorator, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-decorator, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-identifier, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-identifier, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .vhdl .hljs-literal, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .vhdl .hljs-literal, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-id, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-id, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-function, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-function { - color: #268bd2; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-variable, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-body, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-body, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .smalltalk .hljs-number, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .smalltalk .hljs-number, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-constant, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-class .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-class .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-parent, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-parent, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .haskell .hljs-type, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .haskell .hljs-type, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_reference, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_reference { - color: #b58900; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor .hljs-keyword, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor .hljs-keyword, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-shebang, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-shebang, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-change, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-change, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-special, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-special, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attr_selector, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attr_selector, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-subst, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-subst, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-cdata, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-cdata, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .clojure .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .clojure .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-header, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-header { - color: #cb4b16; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-important, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-important { - color: #dc322f; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_label, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_label { - color: #6c71c4; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula { - background: #eee8d5; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { - /* Tomorrow Night Bright Theme */ - /* Original theme - https://github.com/chriskempson/tomorrow-theme */ - /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - /* Tomorrow Comment */ - /* Tomorrow Red */ - /* Tomorrow Orange */ - /* Tomorrow Yellow */ - /* Tomorrow Green */ - /* Tomorrow Aqua */ - /* Tomorrow Blue */ - /* Tomorrow Purple */ -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-comment, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-title { - color: #969896; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-variable, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-tag, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { - color: #d54e53; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-number, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-number, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-literal, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-params, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-params, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-constant { - color: #e78c45; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { - color: #e7c547; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-string, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-string, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-value, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-value, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-header, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-header, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-addition, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - color: #b9ca4a; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { - color: #70c0b1; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-function, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-function, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { - color: #7aa6da; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { - color: #c397d8; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs { - display: block; - background: black; - color: #eaeaea; - padding: 0.5em; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .xml, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .javascript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .css, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .css, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - opacity: 0.5; -} diff --git a/gitbook/gitbook-plugin-medium-zoom/medium-zoom.min.js b/gitbook/gitbook-plugin-medium-zoom/medium-zoom.min.js deleted file mode 100644 index 277c16e..0000000 --- a/gitbook/gitbook-plugin-medium-zoom/medium-zoom.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! medium-zoom 1.0.4 | MIT License | https://github.com/francoischalifour/medium-zoom */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.mediumZoom=t()}(this,function(){"use strict";var H=Object.assign||function(e){for(var t=1;tb.scrollOffset&&setTimeout(h,150)}}),window.addEventListener("resize",h);var L={open:d,close:h,toggle:r,update:function(){var e=0-1||d.indexOf("Trident")>-1)&&(this.ie=!0)}return _createClass(c,[{key:"log",value:function a(b){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",a=this.opt.log;this.opt.debug&&"object"===("undefined"==typeof a?"undefined":_typeof(a))&&"function"==typeof a[c]&&a[c]("mark.js: "+b)}},{key:"escapeStr",value:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(a){return a=this.escapeStr(a),Object.keys(this.opt.synonyms).length&&(a=this.createSynonymsRegExp(a)),this.opt.ignoreJoiners&&(a=this.setupIgnoreJoinersRegExp(a)),this.opt.diacritics&&(a=this.createDiacriticsRegExp(a)),a=this.createMergedBlanksRegExp(a),this.opt.ignoreJoiners&&(a=this.createIgnoreJoinersRegExp(a)),a=this.createAccuracyRegExp(a)}},{key:"createSynonymsRegExp",value:function(a){var b=this.opt.synonyms,c=this.opt.caseSensitive?"":"i";for(var d in b)if(b.hasOwnProperty(d)){var e=b[d],f=this.escapeStr(d),g=this.escapeStr(e);a=a.replace(new RegExp("("+f+"|"+g+")","gm"+c),"("+f+"|"+g+")")}return a}},{key:"setupIgnoreJoinersRegExp",value:function(a){return a.replace(/[^(|)\\]/g,function(a,b,c){var d=c.charAt(b+1);return/[(|)\\]/.test(d)||""===d?a:a+"\0"})}},{key:"createIgnoreJoinersRegExp",value:function(a){return a.split("\0").join("[\\u00ad|\\u200b|\\u200c|\\u200d]?")}},{key:"createDiacriticsRegExp",value:function(a){var b=this.opt.caseSensitive?"":"i",c=this.opt.caseSensitive?["aàáâãäåāąă","AÀÁÂÃÄÅĀĄĂ","cçćč","CÇĆČ","dđď","DĐĎ","eèéêëěēę","EÈÉÊËĚĒĘ","iìíîïī","IÌÍÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóôõöøō","OÒÓÔÕÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúûüůū","UÙÚÛÜŮŪ","yÿý","YŸÝ","zžżź","ZŽŻŹ"]:["aÀÁÂÃÄÅàáâãäåĀāąĄăĂ","cÇçćĆčČ","dđĐďĎ","eÈÉÊËèéêëěĚĒēęĘ","iÌÍÎÏìíîïĪī","lłŁ","nÑñňŇńŃ","oÒÓÔÕÖØòóôõöøŌō","rřŘ","sŠšśŚșȘşŞ","tťŤțȚţŢ","uÙÚÛÜùúûüůŮŪū","yŸÿýÝ","zŽžżŻźŹ"],d=[];return a.split("").forEach(function(e){c.every(function(c){if(c.indexOf(e)!==-1){if(d.indexOf(c)>-1)return!1;a=a.replace(new RegExp("["+c+"]","gm"+b),"["+c+"]"),d.push(c)}return!0})}),a}},{key:"createMergedBlanksRegExp",value:function(a){return a.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(a){var b=this,c=this.opt.accuracy,d="string"==typeof c?c:c.value,e="string"==typeof c?[]:c.limiters,f="";switch(e.forEach(function(a){f+="|"+b.escapeStr(a)}),d){case"partially":default:return"()("+a+")";case"complementary":return"()([^\\s"+f+"]*"+a+"[^\\s"+f+"]*)";case"exactly":return"(^|\\s"+f+")("+a+")(?=$|\\s"+f+")"}}},{key:"getSeparatedKeywords",value:function(a){var b=this,c=[];return a.forEach(function(a){b.opt.separateWordSearch?a.split(" ").forEach(function(a){a.trim()&&c.indexOf(a)===-1&&c.push(a)}):a.trim()&&c.indexOf(a)===-1&&c.push(a)}),{keywords:c.sort(function(a,b){return b.length-a.length}),length:c.length}}},{key:"getTextNodes",value:function(a){var b=this,c="",d=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(a){d.push({start:c.length,end:(c+=a.textContent).length,node:a})},function(a){return b.matchesExclude(a.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){a({value:c,nodes:d})})}},{key:"matchesExclude",value:function(a){return e.matches(a,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(a,c,d){var e=this.opt.element?this.opt.element:"mark",f=a.splitText(c),g=f.splitText(d-c),h=b.createElement(e);return h.setAttribute("data-markjs","true"),this.opt.className&&h.setAttribute("class",this.opt.className),h.textContent=f.textContent,f.parentNode.replaceChild(h,f),g}},{key:"wrapRangeInMappedTextNode",value:function(a,b,c,d,e){var f=this;a.nodes.every(function(g,h){var i=a.nodes[h+1];if("undefined"==typeof i||i.start>b){var j=function(){if(!d(g.node))return{v:!1};var i=b-g.start,j=(c>g.end?g.end:c)-g.start,k=a.value.substr(0,g.start),l=a.value.substr(j+g.start);return g.node=f.wrapRangeInTextNode(g.node,i,j),a.value=k+l,a.nodes.forEach(function(b,c){c>=h&&(a.nodes[c].start>0&&c!==h&&(a.nodes[c].start-=j),a.nodes[c].end-=j)}),c-=j,e(g.node.previousSibling,g.start),c>g.end?void(b=g.end):{v:!1}}();if("object"===("undefined"==typeof j?"undefined":_typeof(j)))return j.v}return!0})}},{key:"wrapMatches",value:function(a,b,c,d,e){var f=this,g=0===b?0:b+1;this.getTextNodes(function(b){b.nodes.forEach(function(b){b=b.node;for(var e=void 0;null!==(e=a.exec(b.textContent))&&""!==e[g];)if(c(e[g],b)){var h=e.index;if(0!==g)for(var i=1;i1&&void 0!==arguments[1])||arguments[1],d=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;_classCallCheck(this,a),this.ctx=b,this.iframes=c,this.exclude=d,this.iframesTimeout=e}return _createClass(a,[{key:"getContexts",value:function(){var a=void 0,c=[];return a="undefined"!=typeof this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(b.querySelectorAll(this.ctx)):[this.ctx]:[],a.forEach(function(a){var b=c.filter(function(b){return b.contains(a)}).length>0;c.indexOf(a)!==-1||b||c.push(a)}),c}},{key:"getIframeContents",value:function(a,b){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},d=void 0;try{var e=a.contentWindow;if(d=e.document,!e||!d)throw new Error("iframe inaccessible")}catch(a){c()}d&&b(d)}},{key:"isIframeBlank",value:function(a){var b="about:blank",c=a.getAttribute("src").trim(),d=a.contentWindow.location.href;return d===b&&c!==b&&c}},{key:"observeIframeLoad",value:function(a,b,c){var d=this,e=!1,f=null,g=function g(){if(!e){e=!0,clearTimeout(f);try{d.isIframeBlank(a)||(a.removeEventListener("load",g),d.getIframeContents(a,b,c))}catch(a){c()}}};a.addEventListener("load",g),f=setTimeout(g,this.iframesTimeout)}},{key:"onIframeReady",value:function(a,b,c){try{"complete"===a.contentWindow.document.readyState?this.isIframeBlank(a)?this.observeIframeLoad(a,b,c):this.getIframeContents(a,b,c):this.observeIframeLoad(a,b,c)}catch(a){c()}}},{key:"waitForIframes",value:function(a,b){var c=this,d=0;this.forEachIframe(a,function(){return!0},function(a){d++,c.waitForIframes(a.querySelector("html"),function(){--d||b()})},function(a){a||b()})}},{key:"forEachIframe",value:function(b,c,d){var e=this,f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},g=b.querySelectorAll("iframe"),h=g.length,i=0;g=Array.prototype.slice.call(g);var j=function(){--h<=0&&f(i)};h||j(),g.forEach(function(b){a.matches(b,e.exclude)?j():e.onIframeReady(b,function(a){c(b)&&(i++,d(a)),j()},j)})}},{key:"createIterator",value:function(a,c,d){return b.createNodeIterator(a,c,d,!1)}},{key:"createInstanceOnIframe",value:function(b){return new a(b.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(a,b,c){var d=a.compareDocumentPosition(c),e=Node.DOCUMENT_POSITION_PRECEDING;if(d&e){if(null===b)return!0;var f=b.compareDocumentPosition(c),g=Node.DOCUMENT_POSITION_FOLLOWING;if(f&g)return!0}return!1}},{key:"getIteratorNode",value:function(a){var b=a.previousNode(),c=void 0;return c=null===b?a.nextNode():a.nextNode()&&a.nextNode(),{prevNode:b,node:c}}},{key:"checkIframeFilter",value:function(a,b,c,d){var e=!1,f=!1;return d.forEach(function(a,b){a.val===c&&(e=b,f=a.handled)}),this.compareNodeIframe(a,b,c)?(e!==!1||f?e===!1||f||(d[e].handled=!0):d.push({val:c,handled:!0}),!0):(e===!1&&d.push({val:c,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(a,b,c,d){var e=this;a.forEach(function(a){a.handled||e.getIframeContents(a.val,function(a){e.createInstanceOnIframe(a).forEachNode(b,c,d)})})}},{key:"iterateThroughNodes",value:function(a,b,c,d,e){for(var f=this,g=this.createIterator(b,a,d),h=[],i=[],j=void 0,k=void 0,l=function(){var a=f.getIteratorNode(g);return k=a.prevNode,j=a.node};l();)this.iframes&&this.forEachIframe(b,function(a){return f.checkIframeFilter(j,k,a,h)},function(b){f.createInstanceOnIframe(b).forEachNode(a,c,d)}),i.push(j);i.forEach(function(a){c(a)}),this.iframes&&this.handleOpenIframes(h,a,c,d),e()}},{key:"forEachNode",value:function(a,b,c){var d=this,e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},f=this.getContexts(),g=f.length;g||e(),f.forEach(function(f){var h=function(){d.iterateThroughNodes(a,f,b,c,function(){--g<=0&&e()})};d.iframes?d.waitForIframes(f,h):h()})}}],[{key:"matches",value:function(a,b){var c="string"==typeof b?[b]:b,d=a.matches||a.matchesSelector||a.msMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.webkitMatchesSelector;if(d){var e=!1;return c.every(function(b){return!d.call(a,b)||(e=!0,!1)}),e}return!1}}]),a}();return c.fn.mark=function(a,b){return new d(this.get()).mark(a,b),this},c.fn.markRegExp=function(a,b){return new d(this.get()).markRegExp(a,b),this},c.fn.unmark=function(a){return new d(this.get()).unmark(a),this},c},window,document); \ No newline at end of file diff --git a/gitbook/gitbook-plugin-search-plus/search.css b/gitbook/gitbook-plugin-search-plus/search.css deleted file mode 100644 index f63be12..0000000 --- a/gitbook/gitbook-plugin-search-plus/search.css +++ /dev/null @@ -1,44 +0,0 @@ -/* - This CSS only styled the search results section, not the search input - It defines the basic interraction to hide content when displaying results, etc -*/ -#book-search-input { - background: inherit; -} -#book-search-results .search-results { - display: none; -} -#book-search-results .search-results ul.search-results-list { - list-style-type: none; - padding-left: 0; -} -#book-search-results .search-results ul.search-results-list li { - margin-bottom: 1.5rem; - padding-bottom: 0.5rem; - /* Highlight results */ -} -#book-search-results .search-results ul.search-results-list li p em { - background-color: rgba(255, 220, 0, 0.4); - font-style: normal; -} -#book-search-results .search-results .no-results { - display: none; -} -#book-search-results.open .search-results { - display: block; -} -#book-search-results.open .search-noresults { - display: none; -} -#book-search-results.no-results .search-results .has-results { - display: none; -} -#book-search-results.no-results .search-results .no-results { - display: block; -} -#book-search-results span.search-highlight-keyword { - background: #ff0; -} -#book-search-results.search-plus .search-results .has-results .search-results-item { - color: inherit; -} \ No newline at end of file diff --git a/gitbook/gitbook-plugin-search-plus/search.js b/gitbook/gitbook-plugin-search-plus/search.js deleted file mode 100644 index cbc070d..0000000 --- a/gitbook/gitbook-plugin-search-plus/search.js +++ /dev/null @@ -1,252 +0,0 @@ -require([ - 'gitbook', - 'jquery' -], function (gitbook, $) { - var MAX_DESCRIPTION_SIZE = 500 - var state = gitbook.state - var INDEX_DATA = {} - var usePushState = (typeof window.history.pushState !== 'undefined') - - // DOM Elements - var $body = $('body') - var $bookSearchResults - var $searchList - var $searchTitle - var $searchResultsCount - var $searchQuery - - // Throttle search - function throttle (fn, wait) { - var timeout - - return function () { - var ctx = this - var args = arguments - if (!timeout) { - timeout = setTimeout(function () { - timeout = null - fn.apply(ctx, args) - }, wait) - } - } - } - - function displayResults (res) { - $bookSearchResults = $('#book-search-results') - $searchList = $bookSearchResults.find('.search-results-list') - $searchTitle = $bookSearchResults.find('.search-results-title') - $searchResultsCount = $searchTitle.find('.search-results-count') - $searchQuery = $searchTitle.find('.search-query') - - $bookSearchResults.addClass('open') - - var noResults = res.count == 0 - $bookSearchResults.toggleClass('no-results', noResults) - - // Clear old results - $searchList.empty() - - // Display title for research - $searchResultsCount.text(res.count) - $searchQuery.text(res.query) - - // Create an

                                                                  • element for each result - res.results.forEach(function (item) { - var $li = $('
                                                                  • ', { - 'class': 'search-results-item' - }) - - var $title = $('

                                                                    ') - - var $link = $('', { - 'href': gitbook.state.basePath + '/' + item.url + '?h=' + encodeURIComponent(res.query), - 'text': item.title, - 'data-is-search': 1 - }) - - if ($link[0].href.split('?')[0] === window.location.href.split('?')[0]) { - $link[0].setAttribute('data-need-reload', 1) - } - - var content = item.body.trim() - if (content.length > MAX_DESCRIPTION_SIZE) { - content = content + '...' - } - var $content = $('

                                                                    ').html(content) - - $link.appendTo($title) - $title.appendTo($li) - $content.appendTo($li) - $li.appendTo($searchList) - }) - $('.body-inner').scrollTop(0) - } - - function escapeRegExp (keyword) { - // escape regexp prevserve word - return String(keyword).replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1') - } - - function query (keyword) { - if (keyword == null || keyword.trim() === '') return - keyword = keyword.toLowerCase() - var results = [] - var index = -1 - for (var page in INDEX_DATA) { - var store = INDEX_DATA[page] - if ( - ~store.keywords.toLowerCase().indexOf(keyword) || - ~(index = store.body.toLowerCase().indexOf(keyword)) - ) { - results.push({ - url: page, - title: store.title, - body: store.body.substr(Math.max(0, index - 50), MAX_DESCRIPTION_SIZE) - .replace(/^[^\s,.]+./, '').replace(/(..*)[\s,.].*/, '$1') // prevent break word - .replace(new RegExp('(' + escapeRegExp(keyword) + ')', 'gi'), '$1') - }) - } - } - displayResults({ - count: results.length, - query: keyword, - results: results - }) - } - - function launchSearch (keyword) { - // Add class for loading - $body.addClass('with-search') - $body.addClass('search-loading') - - function doSearch () { - query(keyword) - $body.removeClass('search-loading') - } - - throttle(doSearch)() - } - - function closeSearch () { - $body.removeClass('with-search') - $('#book-search-results').removeClass('open') - } - - function bindSearch () { - // Bind DOM - var $body = $('body') - - // Launch query based on input content - function handleUpdate () { - var $searchInput = $('#book-search-input input') - var keyword = $searchInput.val() - - if (keyword.length === 0) { - closeSearch() - } else { - launchSearch(keyword) - } - } - - $body.on('keyup', '#book-search-input input', function (e) { - if (e.keyCode === 13) { - if (usePushState) { - var uri = updateQueryString('q', $(this).val()) - window.history.pushState({ - path: uri - }, null, uri) - } - } - handleUpdate() - }) - - // Push to history on blur - $body.on('blur', '#book-search-input input', function (e) { - // Update history state - if (usePushState) { - var uri = updateQueryString('q', $(this).val()) - window.history.pushState({ - path: uri - }, null, uri) - } - }) - } - - gitbook.events.on('start', function () { - bindSearch() - $.getJSON(state.basePath + '/search_plus_index.json').then(function (data) { - INDEX_DATA = data - showResult() - closeSearch() - }) - }) - - // highlight - var highLightPageInner = function (keyword) { - $('.page-inner').mark(keyword, { - 'ignoreJoiners': true, - 'acrossElements': true, - 'separateWordSearch': false - }) - - setTimeout(function () { - var mark = $('mark[data-markjs="true"]') - if (mark.length) { - mark[0].scrollIntoView() - } - }, 100) - } - - function showResult () { - var keyword, type - if (/\b(q|h)=([^&]+)/.test(window.location.search)) { - type = RegExp.$1 - keyword = decodeURIComponent(RegExp.$2) - if (type === 'q') { - launchSearch(keyword) - } else { - highLightPageInner(keyword) - } - $('#book-search-input input').val(keyword) - } - } - - gitbook.events.on('page.change', showResult) - - function updateQueryString (key, value) { - value = encodeURIComponent(value) - - var url = window.location.href.replace(/([?&])(?:q|h)=([^&]+)(&|$)/, function (all, pre, value, end) { - if (end === '&') { - return pre - } - return '' - }) - var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi') - var hash - - if (re.test(url)) { - if (typeof value !== 'undefined' && value !== null) { return url.replace(re, '$1' + key + '=' + value + '$2$3') } else { - hash = url.split('#') - url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '') - if (typeof hash[1] !== 'undefined' && hash[1] !== null) { url += '#' + hash[1] } - return url - } - } else { - if (typeof value !== 'undefined' && value !== null) { - var separator = url.indexOf('?') !== -1 ? '&' : '?' - hash = url.split('#') - url = hash[0] + separator + key + '=' + value - if (typeof hash[1] !== 'undefined' && hash[1] !== null) { url += '#' + hash[1] } - return url - } else { return url } - } - } - window.addEventListener('click', function (e) { - if (e.target.tagName === 'A' && e.target.getAttribute('data-need-reload')) { - setTimeout(function () { - window.location.reload() - }, 100) - } - }, true) -}) diff --git a/gitbook/gitbook-plugin-sharing/buttons.js b/gitbook/gitbook-plugin-sharing/buttons.js deleted file mode 100644 index 709a4e4..0000000 --- a/gitbook/gitbook-plugin-sharing/buttons.js +++ /dev/null @@ -1,90 +0,0 @@ -require(['gitbook', 'jquery'], function(gitbook, $) { - var SITES = { - 'facebook': { - 'label': 'Facebook', - 'icon': 'fa fa-facebook', - 'onClick': function(e) { - e.preventDefault(); - window.open('http://www.facebook.com/sharer/sharer.php?s=100&p[url]='+encodeURIComponent(location.href)); - } - }, - 'twitter': { - 'label': 'Twitter', - 'icon': 'fa fa-twitter', - 'onClick': function(e) { - e.preventDefault(); - window.open('http://twitter.com/home?status='+encodeURIComponent(document.title+' '+location.href)); - } - }, - 'google': { - 'label': 'Google+', - 'icon': 'fa fa-google-plus', - 'onClick': function(e) { - e.preventDefault(); - window.open('https://plus.google.com/share?url='+encodeURIComponent(location.href)); - } - }, - 'weibo': { - 'label': 'Weibo', - 'icon': 'fa fa-weibo', - 'onClick': function(e) { - e.preventDefault(); - window.open('http://service.weibo.com/share/share.php?content=utf-8&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)); - } - }, - 'instapaper': { - 'label': 'Instapaper', - 'icon': 'fa fa-instapaper', - 'onClick': function(e) { - e.preventDefault(); - window.open('http://www.instapaper.com/text?u='+encodeURIComponent(location.href)); - } - }, - 'vk': { - 'label': 'VK', - 'icon': 'fa fa-vk', - 'onClick': function(e) { - e.preventDefault(); - window.open('http://vkontakte.ru/share.php?url='+encodeURIComponent(location.href)); - } - } - }; - - - - gitbook.events.bind('start', function(e, config) { - var opts = config.sharing; - - // Create dropdown menu - var menu = $.map(opts.all, function(id) { - var site = SITES[id]; - - return { - text: site.label, - onClick: site.onClick - }; - }); - - // Create main button with dropdown - if (menu.length > 0) { - gitbook.toolbar.createButton({ - icon: 'fa fa-share-alt', - label: 'Share', - position: 'right', - dropdown: [menu] - }); - } - - // Direct actions to share - $.each(SITES, function(sideId, site) { - if (!opts[sideId]) return; - - gitbook.toolbar.createButton({ - icon: site.icon, - label: site.text, - position: 'right', - onClick: site.onClick - }); - }); - }); -}); diff --git a/gitbook/gitbook.js b/gitbook/gitbook.js deleted file mode 100644 index 13077b4..0000000 --- a/gitbook/gitbook.js +++ /dev/null @@ -1,4 +0,0 @@ -!function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s0&&t-1 in e)}function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?de.grep(e,function(e){return e===t!==n}):"string"!=typeof t?de.grep(e,function(e){return se.call(t,e)>-1!==n}):je.test(t)?de.filter(t,e,n):(t=de.filter(t,e),de.grep(e,function(e){return se.call(t,e)>-1!==n&&1===e.nodeType}))}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function a(e){return e}function u(e){throw e}function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&de.isFunction(r=e.then)?r.call(e,t,n):t.call(void 0,e)}catch(e){n.call(void 0,e)}}function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventListener("load",l),de.ready()}function f(){this.expando=de.expando+f.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Ie.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Pe,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=p(n)}catch(e){}Re.set(e,t,n)}else n=void 0;return n}function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:function(){return de.css(e,t,"")},u=a(),c=n&&n[3]||(de.cssNumber[t]?"":"px"),l=(de.cssNumber[t]||"px"!==c&&+u)&&$e.exec(de.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do i=i||".5",l/=i,de.style(e,t,l+c);while(i!==(i=a()/u)&&1!==i&&--s)}return n&&(l=+l||+u||0,o=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=o)),o}function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t=n.body.appendChild(n.createElement(r)),o=de.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),Ue[r]=o,o)}function m(e,t){for(var n,r,o=[],i=0,s=e.length;i-1)o&&o.push(i);else if(c=de.contains(i.ownerDocument,i),s=v(f.appendChild(i),"script"),c&&y(s),n)for(l=0;i=s[l++];)Ve.test(i.type||"")&&n.push(i);return f}function b(){return!0}function w(){return!1}function T(){try{return te.activeElement}catch(e){}}function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(a in t)C(e,a,n,r,t[a],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=w;else if(!o)return e;return 1===i&&(s=o,o=function(e){return de().off(e),s.apply(this,arguments)},o.guid=s.guid||(s.guid=de.guid++)),e.each(function(){de.event.add(this,t,o,r,n)})}function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e:e}function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&&(i=Fe.access(e),s=Fe.set(t,i),c=i.events)){delete s.handle,s.events={};for(o in c)for(n=0,r=c[o].length;n1&&"string"==typeof d&&!pe.checkClone&&nt.test(d))return e.each(function(n){var i=e.eq(n);g&&(t[0]=d.call(this,n,i.html())),A(i,t,r,o)});if(p&&(i=x(t,e[0].ownerDocument,!1,e,o),s=i.firstChild,1===i.childNodes.length&&(i=s),s||o)){for(a=de.map(v(i,"script"),k),u=a.length;f=0&&nC.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&je(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o,i=e([],n.length,t),s=i.length;s--;)n[o=i[s]]&&(n[o]=!(r[o]=n[o]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var o=0,i=n.length;o-1&&(r[c]=!(s[c]=f))}}else x=v(x===s?x.splice(d,x.length):x),i?i(null,s,x,u):K.apply(s,x)})}function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.relative[" "],a=i?1:0,u=d(function(e){return e===t},s,!0),c=d(function(e){return ee(t,e)>-1},s,!0),l=[function(e,n,r){var o=!i&&(r||n!==A)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,o}];a1&&g(l),a>1&&h(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ae,"$1"),n,a0,i=e.length>0,s=function(r,s,a,u,c){var l,f,p,h=0,d="0",g=r&&[],m=[],y=A,x=r||i&&C.find.TAG("*",c),b=B+=null==y?1:Math.random()||.1,w=x.length;for(c&&(A=s===L||s||c);d!==w&&null!=(l=x[d]);d++){if(i&&l){for(f=0,s||l.ownerDocument===L||(O(l),a=!F);p=e[f++];)if(p(l,s||L,a)){u.push(l);break}c&&(B=b)}o&&((l=!p&&l)&&h--,r&&g.push(l))}if(h+=d,o&&d!==h){for(f=0;p=n[f++];)p(g,m,s,a);if(r){if(h>0)for(;d--;)g[d]||m[d]||(m[d]=Q.call(u));m=v(m)}K.apply(u,m),c&&!r&&m.length>0&&h+n.length>1&&t.uniqueSort(u)}return c&&(B=b,A=y),g};return o?r(s):s}var w,T,C,j,k,E,S,N,A,q,D,O,L,H,F,R,I,P,M,$="sizzle"+1*new Date,W=e.document,B=0,_=0,U=n(),z=n(),X=n(),V=function(e,t){return e===t&&(D=!0),0},G={}.hasOwnProperty,Y=[],Q=Y.pop,J=Y.push,K=Y.push,Z=Y.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),le=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(ie),pe=new RegExp("^"+re+"$"),he={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ie),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Te=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Ce=function(){O()},je=d(function(e){return e.disabled===!0&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{K.apply(Y=Z.call(W.childNodes),W.childNodes),Y[W.childNodes.length].nodeType}catch(e){K={apply:Y.length?function(e,t){J.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}T=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},O=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:W;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=L.documentElement,F=!k(L),W!==L&&(n=L.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ce,!1):n.attachEvent&&n.attachEvent("onunload",Ce)),T.attributes=o(function(e){return e.className="i",!e.getAttribute("className")}),T.getElementsByTagName=o(function(e){return e.appendChild(L.createComment("")),!e.getElementsByTagName("*").length}),T.getElementsByClassName=me.test(L.getElementsByClassName),T.getById=o(function(e){return H.appendChild(e).id=$,!L.getElementsByName||!L.getElementsByName($).length}),T.getById?(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){return e.getAttribute("id")===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n,r,o,i=t.getElementById(e);if(i){if(n=i.getAttributeNode("id"),n&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if(n=i.getAttributeNode("id"),n&&n.value===e)return[i]}return[]}}),C.find.TAG=T.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):T.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},C.find.CLASS=T.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&F)return t.getElementsByClassName(e)},I=[],R=[],(T.qsa=me.test(L.querySelectorAll))&&(o(function(e){H.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||R.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||R.push("~="),e.querySelectorAll(":checked").length||R.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||R.push(".#.+[+~]")}),o(function(e){e.innerHTML="";var t=L.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&R.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&R.push(":enabled",":disabled"),H.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&R.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),R.push(",.*:")})),(T.matchesSelector=me.test(P=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){T.disconnectedMatch=P.call(e,"*"),P.call(e,"[s!='']:x"),I.push("!=",ie)}),R=R.length&&new RegExp(R.join("|")),I=I.length&&new RegExp(I.join("|")),t=me.test(H.compareDocumentPosition),M=t||me.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return D=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!T.sortDetached&&t.compareDocumentPosition(e)===n?e===L||e.ownerDocument===W&&M(W,e)?-1:t===L||t.ownerDocument===W&&M(W,t)?1:q?ee(q,e)-ee(q,t):0:4&n?-1:1)}:function(e,t){if(e===t)return D=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===L?-1:t===L?1:o?-1:i?1:q?ee(q,e)-ee(q,t):0;if(o===i)return s(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?s(a[r],u[r]):a[r]===W?-1:u[r]===W?1:0},L):L},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==L&&O(e),n=n.replace(le,"='$1']"),T.matchesSelector&&F&&!X[n+" "]&&(!I||!I.test(n))&&(!R||!R.test(n)))try{var r=P.call(e,n);if(r||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,L,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==L&&O(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==L&&O(e);var n=C.attrHandle[t.toLowerCase()],r=n&&G.call(C.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==r?r:T.attributes||!F?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Te)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,o=0;if(D=!T.detectDuplicates,q=!T.sortStable&&e.slice(0),e.sort(V),D){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return q=null,e},j=t.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=j(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=j(t);return n},C=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,be),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(o){var i=t.attr(o,e);return null==i?"!="===n:!n||(i+="","="===n?i===r:"!="===n?i!==r:"^="===n?r&&0===i.indexOf(r):"*="===n?r&&i.indexOf(r)>-1:"$="===n?r&&i.slice(-r.length)===r:"~="===n?(" "+i.replace(se," ")+" ").indexOf(r)>-1:"|="===n&&(i===r||i.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,h,d,g=i!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a,x=!1;if(m){if(i){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&y){for(p=m,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h&&c[2],p=h&&m.childNodes[h];p=++h&&p&&p[g]||(x=h=0)||d.pop();)if(1===p.nodeType&&++x&&p===t){l[e]=[B,h,x];break}}else if(y&&(p=t,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h),x===!1)for(;(p=++h&&p&&p[g]||(x=h=0)||d.pop())&&((a?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++x||(y&&(f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[e]=[B,x]),p!==t)););return x-=o,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var o,i=C.pseudos[e]||C.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[$]?i(n):i.length>1?(o=[e,e,"",n],C.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,o=i(e,n),s=o.length;s--;)r=ee(e,o[s]),e[r]=!(t[r]=o[s])}):function(e){return i(e,0,o)}):i}},pseudos:{not:r(function(e){var t=[],n=[],o=S(e.replace(ae,"$1"));return o[$]?r(function(e,t,n,r){for(var i,s=o(e,null,r,[]),a=e.length;a--;)(i=s[a])&&(e[a]=!(t[a]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){ -return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,be),function(t){return(t.textContent||t.innerText||j(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,be).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return de.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(s=i[0]).type&&9===t.nodeType&&F&&C.relative[i[1].type]){if(t=(C.find.ID(s.matches[0].replace(xe,be),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=he.needsContext.test(e)?0:i.length;o--&&(s=i[o],!C.relative[a=s.type]);)if((u=C.find[a])&&(r=u(s.matches[0].replace(xe,be),ye.test(i[0].type)&&f(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&h(i),!e)return K.apply(n,r),n;break}}return(c||S(e,l))(r,t,!F,n,!t||ye.test(e)&&f(t.parentNode)||t),n},T.sortStable=$.split("").sort(V).join("")===$,T.detectDuplicates=!!D,O(),T.sortDetached=o(function(e){return 1&e.compareDocumentPosition(L.createElement("fieldset"))}),o(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),T.attributes&&o(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),o(function(e){return null==e.getAttribute("disabled")})||i(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);de.find=xe,de.expr=xe.selectors,de.expr[":"]=de.expr.pseudos,de.uniqueSort=de.unique=xe.uniqueSort,de.text=xe.getText,de.isXMLDoc=xe.isXML,de.contains=xe.contains,de.escapeSelector=xe.escape;var be=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&de(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Te=de.expr.match.needsContext,Ce=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,je=/^.[^:#\[\.,]*$/;de.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?de.find.matchesSelector(r,e)?[r]:[]:de.find.matches(e,de.grep(t,function(e){return 1===e.nodeType}))},de.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(de(e).filter(function(){for(t=0;t1?de.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Te.test(e)?de(e):e||[],!1).length}});var ke,Ee=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Se=de.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||ke,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ee.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof de?t[0]:t,de.merge(this,de.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),Ce.test(r[1])&&de.isPlainObject(t))for(r in t)de.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return o=te.getElementById(r[2]),o&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):de.isFunction(e)?void 0!==n.ready?n.ready(e):e(de):de.makeArray(e,this)};Se.prototype=de.fn,ke=de(te);var Ne=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};de.fn.extend({has:function(e){var t=de(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&de.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?de.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?se.call(de(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(de.uniqueSort(de.merge(this.get(),de(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),de.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return be(e,"parentNode")},parentsUntil:function(e,t,n){return be(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return be(e,"nextSibling")},prevAll:function(e){return be(e,"previousSibling")},nextUntil:function(e,t,n){return be(e,"nextSibling",n)},prevUntil:function(e,t,n){return be(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return e.contentDocument||de.merge([],e.childNodes)}},function(e,t){de.fn[e]=function(n,r){var o=de.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=de.filter(r,o)),this.length>1&&(Ae[e]||de.uniqueSort(o),Ne.test(e)&&o.reverse()),this.pushStack(o)}});var qe=/[^\x20\t\r\n\f]+/g;de.Callbacks=function(e){e="string"==typeof e?s(e):de.extend({},e);var t,n,r,o,i=[],a=[],u=-1,c=function(){for(o=e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)i.splice(n,1),n<=u&&u--}),this},has:function(e){return e?de.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=a=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||c()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},de.extend({Deferred:function(t){var n=[["notify","progress",de.Callbacks("memory"),de.Callbacks("memory"),2],["resolve","done",de.Callbacks("once memory"),de.Callbacks("once memory"),0,"resolved"],["reject","fail",de.Callbacks("once memory"),de.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return de.Deferred(function(t){de.each(n,function(n,r){var o=de.isFunction(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&de.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(t,r,o){function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(){var e,f;if(!(t=s&&(r!==u&&(c=void 0,l=[e]),n.rejectWith(c,l))}};t?p():(de.Deferred.getStackHook&&(p.stackTrace=de.Deferred.getStackHook()),e.setTimeout(p))}}var s=0;return de.Deferred(function(e){n[0][3].add(i(0,e,de.isFunction(o)?o:a,e.notifyWith)),n[1][3].add(i(0,e,de.isFunction(t)?t:a)),n[2][3].add(i(0,e,de.isFunction(r)?r:u))}).promise()},promise:function(e){return null!=e?de.extend(e,o):o}},i={};return de.each(n,function(e,t){var s=t[2],a=t[5];o[t[1]]=s.add,a&&s.add(function(){r=a},n[3-e][2].disable,n[0][2].lock),s.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=s.fireWith}),o.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=re.call(arguments),i=de.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?re.call(arguments):n,--t||i.resolveWith(r,o)}};if(t<=1&&(c(e,i.done(s(n)).resolve,i.reject),"pending"===i.state()||de.isFunction(o[n]&&o[n].then)))return i.then();for(;n--;)c(o[n],s(n),i.reject);return i.promise()}});var De=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;de.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&De.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},de.readyException=function(t){e.setTimeout(function(){throw t})};var Oe=de.Deferred();de.fn.ready=function(e){return Oe.then(e).catch(function(e){de.readyException(e)}),this},de.extend({isReady:!1,readyWait:1,holdReady:function(e){e?de.readyWait++:de.ready(!0)},ready:function(e){(e===!0?--de.readyWait:de.isReady)||(de.isReady=!0,e!==!0&&--de.readyWait>0||Oe.resolveWith(te,[de]))}}),de.ready.then=Oe.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(de.ready):(te.addEventListener("DOMContentLoaded",l),e.addEventListener("load",l));var Le=function(e,t,n,r,o,i,s){var a=0,u=e.length,c=null==n;if("object"===de.type(n)){o=!0;for(a in n)Le(e,t,a,n[a],!0,i,s)}else if(void 0!==r&&(o=!0,de.isFunction(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(de(e),n)})),t))for(;a1,null,!0)},removeData:function(e){return this.each(function(){Re.remove(this,e)})}}),de.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||de.isArray(n)?r=Fe.access(e,t,de.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=de.queue(e,t),r=n.length,o=n.shift(),i=de._queueHooks(e,t),s=function(){de.dequeue(e,t)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,s,i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:de.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),de.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ve=/^$|\/(?:java|ecma)script/i,Ge={option:[1,""],thead:[1,"","
                                                                    "],col:[2,"","
                                                                    "],tr:[2,"","
                                                                    "],td:[3,"","
                                                                    "],_default:[0,"",""]};Ge.optgroup=Ge.option,Ge.tbody=Ge.tfoot=Ge.colgroup=Ge.caption=Ge.thead,Ge.th=Ge.td;var Ye=/<|&#?\w+;/;!function(){var e=te.createDocumentFragment(),t=e.appendChild(te.createElement("div")),n=te.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),pe.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",pe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Qe=te.documentElement,Je=/^key/,Ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ze=/^([^.]*)(?:\.(.+)|)/;de.event={global:{},add:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.get(e);if(m)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&de.find.matchesSelector(Qe,o),n.guid||(n.guid=de.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return"undefined"!=typeof de&&de.event.triggered!==t.type?de.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],c=t.length;c--;)a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h&&(f=de.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=de.event.special[h]||{},l=de.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&de.expr.match.needsContext.test(o),namespace:d.join(".")},i),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,s)!==!1||e.addEventListener&&e.addEventListener(h,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,l):p.push(l),de.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.hasData(e)&&Fe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(qe)||[""],c=t.length;c--;)if(a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(f=de.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=i=p.length;i--;)l=p[i],!o&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(i,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||de.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)de.event.remove(e,h+t[c],n,r,!0);de.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,s,a=de.event.fix(e),u=new Array(arguments.length),c=(Fe.get(this,"events")||{})[a.type]||[],l=de.event.special[a.type]||{};for(u[0]=a,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||c.disabled!==!0)){for(i=[],s={},n=0;n-1:de.find(o,this,null,[c]).length),s[o]&&i.push(r);i.length&&a.push({elem:c,handlers:i})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,tt=/\s*$/g;de.extend({htmlPrefilter:function(e){return e.replace(et,"<$1>")},clone:function(e,t,n){var r,o,i,s,a=e.cloneNode(!0),u=de.contains(e.ownerDocument,e);if(!(pe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||de.isXMLDoc(e)))for(s=v(a),i=v(e),r=0,o=i.length;r0&&y(s,!u&&v(e,"script")),a},cleanData:function(e){for(var t,n,r,o=de.event.special,i=0;void 0!==(n=e[i]);i++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)o[r]?de.event.remove(n,r):de.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Re.expando]&&(n[Re.expando]=void 0)}}}),de.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?de.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.appendChild(e)}})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(de.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return de.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tt.test(e)&&!Ge[(Xe.exec(e)||["",""])[1].toLowerCase()]){e=de.htmlPrefilter(e);try{for(;n1)}}),de.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||de.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(de.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=de.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=de.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){de.fx.step[e.prop]?de.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[de.cssProps[e.prop]]&&!de.cssHooks[e.prop]?e.elem[e.prop]=e.now:de.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},de.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},de.fx=I.prototype.init,de.fx.step={};var ht,dt,gt=/^(?:toggle|show|hide)$/,mt=/queueHooks$/;de.Animation=de.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){de.isFunction(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,o=e.length;r1)},removeAttr:function(e){return this.each(function(){de.removeAttr(this,e)})}}),de.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?de.prop(e,t,n):(1===i&&de.isXMLDoc(e)||(o=de.attrHooks[t.toLowerCase()]||(de.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void de.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=de.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!pe.radioValue&&"radio"===t&&de.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return t===!1?de.removeAttr(e,n):e.setAttribute(n,n),n}},de.each(de.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||de.find.attr;yt[t]=function(e,t,r){var o,i,s=t.toLowerCase();return r||(i=yt[s],yt[s]=o,o=null!=n(e,t,r)?s:null,yt[s]=i),o}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;de.fn.extend({prop:function(e,t){return Le(this,de.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[de.propFix[e]||e]})}}),de.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&de.isXMLDoc(e)||(t=de.propFix[t]||t,o=de.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=de.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),pe.optSelected||(de.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),de.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){de.propFix[this.toLowerCase()]=this}),de.fn.extend({addClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).removeClass(e.call(this,t,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):de.isFunction(e)?this.each(function(n){de(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,r,o,i;if("string"===n)for(r=0,o=de(this),i=e.match(qe)||[];t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=X(this),t&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;de.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=de.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,de(this).val()):e,null==o?o="":"number"==typeof o?o+="":de.isArray(o)&&(o=de.map(o,function(e){return null==e?"":e+""})),t=de.valHooks[this.type]||de.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=de.valHooks[o.type]||de.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),de.extend({valHooks:{option:{get:function(e){var t=de.find.attr(e,"value");return null!=t?t:z(de.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,s="select-one"===e.type,a=s?null:[],u=s?i+1:o.length;for(r=i<0?u:s?i:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),de.each(["radio","checkbox"],function(){de.valHooks[this]={set:function(e,t){if(de.isArray(t))return e.checked=de.inArray(de(e).val(),t)>-1}},pe.checkOn||(de.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;de.extend(de.event,{trigger:function(t,n,r,o){var i,s,a,u,c,l,f,p=[r||te],h=ce.call(t,"type")?t.type:t,d=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(h+de.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),c=h.indexOf(":")<0&&"on"+h,t=t[de.expando]?t:new de.Event(h,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=d.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:de.makeArray(n,[t]),f=de.event.special[h]||{},o||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!o&&!f.noBubble&&!de.isWindow(r)){for(u=f.delegateType||h,Tt.test(u+h)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||te)&&p.push(a.defaultView||a.parentWindow||e)}for(i=0;(s=p[i++])&&!t.isPropagationStopped();)t.type=i>1?u:f.bindType||h,l=(Fe.get(s,"events")||{})[t.type]&&Fe.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&He(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!He(r)||c&&de.isFunction(r[h])&&!de.isWindow(r)&&(a=r[c],a&&(r[c]=null),de.event.triggered=h,r[h](),de.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=de.extend(new de.Event,n,{type:e,isSimulated:!0});de.event.trigger(r,null,t)}}),de.fn.extend({trigger:function(e,t){return this.each(function(){de.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return de.event.trigger(e,t,n,!0)}}),de.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){de.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),de.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),pe.focusin="onfocusin"in e,pe.focusin||de.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){de.event.simulate(t,e.target,de.event.fix(e))};de.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=Fe.access(r,t);o||r.addEventListener(e,n,!0),Fe.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=Fe.access(r,t)-1;o?Fe.access(r,t,o):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,jt=de.now(),kt=/\?/;de.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||de.error("Invalid XML: "+t),n};var Et=/\[\]$/,St=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;de.param=function(e,t){var n,r=[],o=function(e,t){var n=de.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(de.isArray(e)||e.jquery&&!de.isPlainObject(e))de.each(e,function(){o(this.name,this.value)});else for(n in e)V(n,e[n],t,o);return r.join("&")},de.fn.extend({serialize:function(){return de.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=de.prop(this,"elements");return e?de.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!de(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=de(this).val();return null==n?null:de.isArray(n)?de.map(n,function(e){return{name:t.name,value:e.replace(St,"\r\n")}}):{name:t.name,value:n.replace(St,"\r\n")}}).get()}});var qt=/%20/g,Dt=/#.*$/,Ot=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ft=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Pt={},Mt="*/".concat("*"),$t=te.createElement("a");$t.href=Ct.href,de.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ht.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":de.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,de.ajaxSettings),t):Q(de.ajaxSettings,e)},ajaxPrefilter:G(It),ajaxTransport:G(Pt),ajax:function(t,n){function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=void 0,s=a||"",C.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(b=J(d,C,r)),b=K(d,b,C,c),c?(d.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(de.lastModified[i]=w),w=C.getResponseHeader("etag"),w&&(de.etag[i]=w)),204===t||"HEAD"===d.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,h=b.error,c=!h)):(h=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(n||T)+"",c?v.resolveWith(g,[p,T,C]):v.rejectWith(g,[C,T,h]),C.statusCode(x),x=void 0,f&&m.trigger(c?"ajaxSuccess":"ajaxError",[C,d,c?p:h]),y.fireWith(g,[C,T]),f&&(m.trigger("ajaxComplete",[C,d]),--de.active||de.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var o,i,s,a,u,c,l,f,p,h,d=de.ajaxSetup({},n),g=d.context||d,m=d.context&&(g.nodeType||g.jquery)?de(g):de.event,v=de.Deferred(),y=de.Callbacks("once memory"),x=d.statusCode||{},b={},w={},T="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return l?s:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)C.always(e[C.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return o&&o.abort(t),r(0,t),this}};if(v.promise(C),d.url=((t||d.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(qe)||[""],null==d.crossDomain){c=te.createElement("a");try{c.href=d.url,c.href=c.href,d.crossDomain=$t.protocol+"//"+$t.host!=c.protocol+"//"+c.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=de.param(d.data,d.traditional)),Y(It,d,n,C),l)return C;f=de.event&&d.global,f&&0===de.active++&&de.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Ft.test(d.type),i=d.url.replace(Dt,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(qt,"+")):(h=d.url.slice(i.length),d.data&&(i+=(kt.test(i)?"&":"?")+d.data,delete d.data),d.cache===!1&&(i=i.replace(Ot,"$1"),h=(kt.test(i)?"&":"?")+"_="+jt++ +h),d.url=i+h),d.ifModified&&(de.lastModified[i]&&C.setRequestHeader("If-Modified-Since",de.lastModified[i]),de.etag[i]&&C.setRequestHeader("If-None-Match",de.etag[i])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",d.contentType),C.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Mt+"; q=0.01":""):d.accepts["*"]);for(p in d.headers)C.setRequestHeader(p,d.headers[p]);if(d.beforeSend&&(d.beforeSend.call(g,C,d)===!1||l))return C.abort();if(T="abort",y.add(d.complete),C.done(d.success),C.fail(d.error),o=Y(Pt,d,n,C)){if(C.readyState=1,f&&m.trigger("ajaxSend",[C,d]),l)return C;d.async&&d.timeout>0&&(u=e.setTimeout(function(){C.abort("timeout")},d.timeout));try{l=!1,o.send(b,r)}catch(e){if(l)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return de.get(e,t,n,"json")},getScript:function(e,t){return de.get(e,void 0,t,"script")}}),de.each(["get","post"],function(e,t){de[t]=function(e,n,r,o){return de.isFunction(n)&&(o=o||r,r=n,n=void 0),de.ajax(de.extend({url:e,type:t,dataType:o,data:n,success:r},de.isPlainObject(e)&&e))}}),de._evalUrl=function(e){return de.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},de.fn.extend({wrapAll:function(e){var t;return this[0]&&(de.isFunction(e)&&(e=e.call(this[0])),t=de(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return de.isFunction(e)?this.each(function(t){de(this).wrapInner(e.call(this,t))}):this.each(function(){var t=de(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=de.isFunction(e);return this.each(function(n){de(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){de(this).replaceWith(this.childNodes)}),this}}),de.expr.pseudos.hidden=function(e){return!de.expr.pseudos.visible(e)},de.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},de.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},Bt=de.ajaxSettings.xhr();pe.cors=!!Bt&&"withCredentials"in Bt,pe.ajax=Bt=!!Bt,de.ajaxTransport(function(t){var n,r;if(pe.cors||Bt&&!t.crossDomain)return{send:function(o,i){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(s in o)a.setRequestHeader(s,o[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(Wt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),de.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),de.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return de.globalEval(e),e}}}),de.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),de.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,o){t=de(" - - - - -

                                                                    -
                                                                    - - - - - - - - -
                                                                    - -
                                                                    - -
                                                                    - - - - - - - - -
                                                                    -
                                                                    - -
                                                                    -
                                                                    - -
                                                                    - -
                                                                    -

                                                                    Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                    -
                                                                    -

                                                                    Getting started with ACPI

                                                                    -

                                                                    -

                                                                    A quick explainer on ACPI

                                                                    -

                                                                    So what are DSDTs and SSDTs? Well, these are tables present in your firmware that outline hardware devices like USB controllers, CPU threads, embedded controllers, system clocks and such. A DSDT(Differentiated System Description Table) can be seen as the body holding most of the info with smaller bits of info being passed by the SSDT(Secondary System Description Table). You can think of the DSDT as the building blueprints with SSDTs being sticky notes outlining extra details to the project

                                                                    -

                                                                    You can read more about ACPI and it's spec here: ACPI 6.3 Manual

                                                                    -
                                                                    -

                                                                    So why do we care about these tables?

                                                                    -
                                                                    -

                                                                    macOS can be very picky about the devices present in the DSDT and so our job is to correct it. The main devices that need to be corrected for macOS to work properly:

                                                                    -
                                                                      -
                                                                    • Embedded controllers(EC)
                                                                        -
                                                                      • All semi-modern intel machines have an EC (usually called H_EC, ECDV, EC0, etc...) exposed in their DSDT, with many AMD systems also having it exposed. These controllers are generally not compatible with macOS and can cause panics, so then need to be hidden from macOS. macOS Catalina requires a device named EC to be present though, so a dummy EC is created.
                                                                      • -
                                                                      • With laptops, the actual embedded controller still needs to be enabled for battery and hotkeys to work, and renaming the EC can additionally cause issues with windows, so creating a fake EC without disabling the real embedded controller is preferable.
                                                                      • -
                                                                      -
                                                                    • -
                                                                    • Plugin type
                                                                        -
                                                                      • This allows the use of XCPM providing native CPU power management on Intel Haswell and newer CPUs, the SSDT will connect to the first thread of the CPU. Not meant for AMD
                                                                      • -
                                                                      -
                                                                    • -
                                                                    • AWAC system clock.
                                                                        -
                                                                      • This applies to all 300 series motherboards including many Z370 boards, the specific issue is that newer boards ship with AWAC clock enabled. This is a problem because macOS cannot communicate with AWAC clocks, so this requires us to either force on the legacy RTC clock or if unavailable create a fake one for macOS to play with
                                                                      • -
                                                                      -
                                                                    • -
                                                                    • NVRAM SSDT
                                                                        -
                                                                      • True 300 series motherboards(non-Z370) don't declare the FW chip as MMIO in ACPI and so the kernel ignores the MMIO region declared by the UEFI memory map. This SSDT brings back NVRAM support
                                                                      • -
                                                                      -
                                                                    • -
                                                                    • Backlight SSDT
                                                                        -
                                                                      • Used for fixing backlight control support on laptops
                                                                      • -
                                                                      -
                                                                    • -
                                                                    • GPIO SSDT
                                                                        -
                                                                      • Used for creating a stub to allow VoodooI2C to connect onto, for laptops only
                                                                      • -
                                                                      -
                                                                    • -
                                                                    • XOSI SSDT
                                                                        -
                                                                      • Used for rerouting OSI calls to this SSDT, mainly used for tricking our hardware into thinking its booting Windows so we get better trackpad support. This is a very hacky solution known for breaking Windows boot, use the GPIO SSDT instead. Usage of XOSI will not be covered in this guide
                                                                      • -
                                                                      -
                                                                    • -
                                                                    • IRQ SSDT and ACPI patches
                                                                        -
                                                                      • Needed for fixing IRQ conflicts within the DSDT, for laptops mainly. SSDTTime exclusive
                                                                      • -
                                                                      • Note Skylake and newer systems rarely have IRQ conflicts, this is mainly prevalent on Broadwell and older
                                                                      • -
                                                                      -
                                                                    • -
                                                                    -

                                                                    Now head to the next page on what SSDTs do your systems need:

                                                                    -

                                                                    Choosing the SSDTs

                                                                    - - -
                                                                    - -
                                                                    -
                                                                    -
                                                                    - -

                                                                    results matching ""

                                                                    -
                                                                      - -
                                                                      -
                                                                      - -

                                                                      No results matching ""

                                                                      - -
                                                                      -
                                                                      -
                                                                      - -
                                                                      -
                                                                      - -
                                                                      - - - - - - - - - - -
                                                                      - - -
                                                                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                                      # Getting started with ACPI

                                                                      # A quick explainer on ACPI

                                                                      So what are DSDTs and SSDTs? Well, these are tables present in your firmware that outline hardware devices like USB controllers, CPU threads, embedded controllers, system clocks and such. A DSDT(Differentiated System Description Table) can be seen as the body holding most of the info with smaller bits of info being passed by the SSDT(Secondary System Description Table). You can think of the DSDT as the building blueprints with SSDTs being sticky notes outlining extra details to the project

                                                                      You can read more about ACPI and it's spec here: ACPI 6.3 Manual

                                                                      So why do we care about these tables?

                                                                      macOS can be very picky about the devices present in the DSDT and so our job is to correct it. The main devices that need to be corrected for macOS to work properly:

                                                                      • Embedded controllers(EC) +
                                                                        • All semi-modern intel machines have an EC (usually called H_EC, ECDV, EC0, etc...) exposed in their DSDT, with many AMD systems also having it exposed. These controllers are generally not compatible with macOS and can cause panics, so then need to be hidden from macOS. macOS Catalina requires a device named EC to be present though, so a dummy EC is created.
                                                                        • With laptops, the actual embedded controller still needs to be enabled for battery and hotkeys to work, and renaming the EC can additionally cause issues with windows, so creating a fake EC without disabling the real embedded controller is preferable.
                                                                      • Plugin type +
                                                                        • This allows the use of XCPM providing native CPU power management on Intel Haswell and newer CPUs, the SSDT will connect to the first thread of the CPU. Not meant for AMD
                                                                      • AWAC system clock. +
                                                                        • This applies to all 300 series motherboards including many Z370 boards, the specific issue is that newer boards ship with AWAC clock enabled. This is a problem because macOS cannot communicate with AWAC clocks, so this requires us to either force on the legacy RTC clock or if unavailable create a fake one for macOS to play with
                                                                      • NVRAM SSDT +
                                                                        • True 300 series motherboards(non-Z370) don't declare the FW chip as MMIO in ACPI and so the kernel ignores the MMIO region declared by the UEFI memory map. This SSDT brings back NVRAM support
                                                                      • Backlight SSDT +
                                                                        • Used for fixing backlight control support on laptops
                                                                      • GPIO SSDT +
                                                                        • Used for creating a stub to allow VoodooI2C to connect onto, for laptops only
                                                                      • XOSI SSDT +
                                                                        • Used for rerouting OSI calls to this SSDT, mainly used for tricking our hardware into thinking its booting Windows so we get better trackpad support. This is a very hacky solution known for breaking Windows boot, use the GPIO SSDT instead. Usage of XOSI will not be covered in this guide
                                                                      • IRQ SSDT and ACPI patches +
                                                                        • Needed for fixing IRQ conflicts within the DSDT, for laptops mainly. SSDTTime exclusive
                                                                        • Note Skylake and newer systems rarely have IRQ conflicts, this is mainly prevalent on Broadwell and older

                                                                      Now head to the next page on what SSDTs do your systems need:

                                                                      # Choosing the SSDTs

                                                                      Last Updated: 7/17/2020, 8:46:53 PM
                                                                      + + - diff --git a/search_plus_index.json b/search_plus_index.json deleted file mode 100644 index 1f4e109..0000000 --- a/search_plus_index.json +++ /dev/null @@ -1 +0,0 @@ -{"./":{"url":"./","title":"Getting Started With ACPI","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Getting started with ACPI A quick explainer on ACPI So what are DSDTs and SSDTs? Well, these are tables present in your firmware that outline hardware devices like USB controllers, CPU threads, embedded controllers, system clocks and such. A DSDT(Differentiated System Description Table) can be seen as the body holding most of the info with smaller bits of info being passed by the SSDT(Secondary System Description Table). You can think of the DSDT as the building blueprints with SSDTs being sticky notes outlining extra details to the project You can read more about ACPI and it's spec here: ACPI 6.3 Manual So why do we care about these tables? macOS can be very picky about the devices present in the DSDT and so our job is to correct it. The main devices that need to be corrected for macOS to work properly: Embedded controllers(EC) All semi-modern intel machines have an EC (usually called H_EC, ECDV, EC0, etc...) exposed in their DSDT, with many AMD systems also having it exposed. These controllers are generally not compatible with macOS and can cause panics, so then need to be hidden from macOS. macOS Catalina requires a device named EC to be present though, so a dummy EC is created. With laptops, the actual embedded controller still needs to be enabled for battery and hotkeys to work, and renaming the EC can additionally cause issues with windows, so creating a fake EC without disabling the real embedded controller is preferable. Plugin type This allows the use of XCPM providing native CPU power management on Intel Haswell and newer CPUs, the SSDT will connect to the first thread of the CPU. Not meant for AMD AWAC system clock. This applies to all 300 series motherboards including many Z370 boards, the specific issue is that newer boards ship with AWAC clock enabled. This is a problem because macOS cannot communicate with AWAC clocks, so this requires us to either force on the legacy RTC clock or if unavailable create a fake one for macOS to play with NVRAM SSDT True 300 series motherboards(non-Z370) don't declare the FW chip as MMIO in ACPI and so the kernel ignores the MMIO region declared by the UEFI memory map. This SSDT brings back NVRAM support Backlight SSDT Used for fixing backlight control support on laptops GPIO SSDT Used for creating a stub to allow VoodooI2C to connect onto, for laptops only XOSI SSDT Used for rerouting OSI calls to this SSDT, mainly used for tricking our hardware into thinking its booting Windows so we get better trackpad support. This is a very hacky solution known for breaking Windows boot, use the GPIO SSDT instead. Usage of XOSI will not be covered in this guide IRQ SSDT and ACPI patches Needed for fixing IRQ conflicts within the DSDT, for laptops mainly. SSDTTime exclusive Note Skylake and newer systems rarely have IRQ conflicts, this is mainly prevalent on Broadwell and older Now head to the next page on what SSDTs do your systems need: Choosing the SSDTs "},"ssdt-platform.html":{"url":"ssdt-platform.html","title":"Choosing the SSDTs","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) What SSDTs do each platform need Please see the specific ACPI section of your config.plist, all SSDTs needed are covered there with a brief explainer. But here's a very quick TL;DR: What SSDTs do each platform need Desktop Laptop SSDT Creation Desktop Platforms CPU EC AWAC NVRAM USB Ivy Bridge CPU-PM (Run in Post-Install) SSDT-EC N/A N/A N/A Ivy Bridge-E ^ ^ ^ ^ ^ Haswell/Broadwell SSDT-PLUG ^ ^ ^ ^ Haswell-E ^ ^ ^ ^ ^ Broadwell-E ^ ^ ^ ^ ^ Skylake ^ SSDT-EC-USBX ^ ^ ^ Skylake-X ^ ^ ^ ^ ^ Kabylake ^ ^ ^ ^ ^ CoffeeLake ^ ^ SSDT-AWAC SSDT-PMC ^ CometLake ^ ^ ^ ^ SSDT-RHUB AMD (15/16/17h) N/A ^ N/A N/A N/A Laptop Platforms CPU EC Backlight I2C Trackpad AWAC USB IRQ Ivy Bridge CPU-PM (Run in Post-Install) SSDT-EC SSDT-PNLF SSDT-GPI0 N/A N/A IRQ SSDT Haswell SSDT-PLUG ^ ^ ^ ^ ^ ^ Broadwell ^ ^ ^ ^ ^ ^ ^ Skylake ^ SSDT-EC-USBX ^ ^ ^ ^ N/A KabyLake ^ ^ ^ ^ ^ ^ ^ CoffeeLake (8th Gen) ^ ^ SSDT-PNLF-CFL ^ ^ ^ ^ CoffeeLake (9th Gen) ^ ^ ^ ^ SSDT-AWAC ^ ^ CometLake ^ ^ ^ ^ ^ ^ ^ IceLake ^ ^ ^ ^ ^ SSDT-RHUB ^ SSDT Creation "},"ssdt-methods/ssdt-methods.html":{"url":"ssdt-methods/ssdt-methods.html","title":"How to create SSDTs","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) How to create SSDTs Creating SSDTs mainly fall into 3 camps: Prebuilt SSDTs They work but not perfect Automated tools Mainly seen with SSDTTime, work much better though can't cover all situations Manually creating them Will always work, be much cleaner and get to learn about the process "},"ssdt-methods/ssdt-prebuilt.html":{"url":"ssdt-methods/ssdt-prebuilt.html","title":"SSDTs: Prebuilt","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Pre-Built SSDTs Power Management Embedded Controllers Trackpad Backlight System Clock(AWAC) NVRAM(PMC) This is mainly for users who are having troubles either compiling, decompiling or understanding the overal process of ACPI. The main reasons you'd want to avoid is for the following: Slowing down the boot process Mainly because these SSDTs have to go through every possible pathing Fun fact: the prebuilt SSDT-EC-DESKTOP is 42 times larger than making the file yourself Doesn't always work The SSDTs provided can only handle so many situations, and some may in fact not work Mainly seen with SSDT-AWAC, as it assumes there is a way the RTC can be easily enabled Teaches nothing This is the biggest issue as you have no real idea on how to troubleshoot or how to make these files down the line Please refer to Choosing the SSDTs page for which your system needs. Power Management For Haswell and newer: SSDT-PLUG-DRTNIA For Ivy Bridge and older, see the Optimizing Power Management page. This will be done after install. AMD CPU users do not need any SSDTs for power management. Embedded Controllers For desktops: SSDT-EC-USBX-DESKTOP For Skylake and newer and all AMD systems. SSDT-EC-DESKTOP For Broadwell and older. For laptops: SSDT-EC-USBX-LAPTOP For Skylake and newer. SSDT-EC-LAPTOP For Broadwell and older. Trackpad Used for enabling Windows only features in macOS, do note that the below patches will more than likely break Windows booting via OpenCore. I highly encourage you to make one yourself to prevent any issues down the line: Trackpad GPI0 SSDT-XOSI XOSI-Rename.plist Note you'll need to add this into your config.plist under ACPI -> Patch: Comment String Change _OSI to XOSI Enabled Boolean YES Count Number 0 Limit Number 0 Find Data 5f4f5349 Replace Data 584f5349 Backlight For laptops and all-in-one desktops, fixies brightness control support SSDT-PNLF For most users. SSDT-PNLF-CFL For Coffee Lake and newer. System Clock(AWAC) Mainly needed for newer systems running AWAC based system clocks, mainly relavant for Z390 and newer(Gigabyte and AsRock however did backport it to Z370 with a BIOS update) SSDT-AWAC The biggest issue with this prebuilt is that we're just guessing you both have an AWAC clock and that it can be turned off, I highly encourage you to make one yourself to really know whether you both need this and if it's going to work: AWAC vs RTC NVRAM(PMC) Needed to bring back NVRAM support for Z390 and newer, DO NOT USE ON Z370 or older Note: Desktop Z490 boards seem to not need this, though if you're having NVRAM issues you can try this SSDT. SSDT-PMC Reminder only the following need this SSDT: B360 B365 H310 H370 Z390 400 series (Comet Lake) 495 series (Icelake) USB(RHUB) Needed for 10th gen CPUs, Gigabyte and AsRock motherboards don't need this SSDT-RHUB.aml "},"ssdt-methods/ssdt-easy.html":{"url":"ssdt-methods/ssdt-easy.html","title":"SSDTs: Easy Way","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) SSDTs: The easy way So here we'll be using a super simple tool made by CorpNewt: SSDTTime What this tool does is, it dumps your DSDT from your firmware, and then creates SSDTs based off your DSDT. This must be done on the target machine running either Windows or Linux So what CAN'T SSDTTime do HEDT SSDTs: The ACPI is odd on these platforms so manual work is required This includes X79, X99 and X299 systems Prebuilt can be found here: Embedded Controller Laptop EC fix: This is because you do not want the EC powered off Prebuilt can be found here: Embedded Controller SSDT-PNLF: Need to be configured to your system SSDT-GPI0: Need to be configured to your system AWAC and RTC0 SSDTs: 300 series Intel boards will also need to figure this out (Z390 systems are most common for requiring this but some Gigabyte Z370 do as well) PMC SSDT: For fixing 300 series Intel NVRAM Prebuilt can be found here: NVRAM PMC USBX SSDT: This is included on sample SSDTs but SSDTTime only makes the SSDT-EC part, Skylake and newer users can grab a pre-built here: SSDT-USBX.aml RHUB SSDT: if you have a 10th gen CPU, you'll need to either use the prebuilt or manually create it. For users who don't have all the options available to them in SSDTTime, you can follow the \"SSDTs: The long way\" section. You can still use SSDTTime for SSDTs it does support. Running SSDTTime Run the SSDTTime.bat file as Admin on the target machine and you should see something like this: What are all these options?: 1. FixHPET - Patch out IRQ Conflicts IRQ patching, mainly needed for X79, X99 and laptop users(use option C to omit conflicting legacy IRQs) 2. FakeEC - OS-aware Fake EC This is the SSDT-EC, required for Catalina users 3. PluginType - Sets plugin-type = 1 on CPU0/PR00 This is the SSDT-PLUG, for Intel only 4. Dump DSDT - Automatically dump the system DSDT Dumps your DSDT from your firmware What we want to do is select option 4. Dump DSDT first, then select the appropriate option(s) for your system. What about USBX? For Skylake and newer plus AMD, you can grab a pre-built file here: SSDT-USBX.aml. This file is plug and play and requires no device configuration, do not use on Broadwell and older. Troubleshooting note: See General Troubleshooting if you're having issues running SSDTTime Adding to OpenCore Don't forget that SSDTs need to be added to Opencore, reminder that .aml is complied, .dsl is code. Add only the .aml file: EFI/OC/ACPI config.plist -> ACPI -> Add Reminder that Cmd/Crtl+R with ProperTree pointed at your OC folder will add all your SSDTs, kexts and .efi drivers to the config for you. Do not add your DSDT to OpenCore, its already in your firmware. If you are unsure what this is referring to, go back to the OpenCore guide and select your config based of the architecture of your CPU. For those who do not yet have a config.plist, you'll want to next head back to your respective OpenCore guides and create the config.plist: OpenCore Desktop guide OpenCore Laptop Guide Users of FixHPET will also need to merge oc_patches.plist into their config.plist Steps to do this: Open both files, Delete the ACPI -> Patch section from config.plist Copy the ACPI -> Patch section from patches.plist Paste into where old patches were in config.plist "},"ssdt-methods/ssdt-long.html":{"url":"ssdt-methods/ssdt-long.html","title":"SSDTs: Long Way","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) SSDTs: The long way Well sadly some things are not handled by SSDTTime, well have no fear as making SSDTs is super easy. The basic process: Dump DSDT(the one SSDTTime did for use will work) Decompile DSDT Make SSDTs based of of it(You'll need either MaciASL or a text editor for this) Compile SSDTs Now continue forth and master the ways of ACPI! "},"Manual/dump.html":{"url":"Manual/dump.html","title":"Dumping the DSDT","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Getting a copy of our DSDT So to start, we'll need to get a copy of your DSDT from your firmware. The easiest way is grabbing the DSDT.aml SSDTTime dumped for us earlier but here are some other options: From Windows SSDTTime Supports both Windows and Linux for DSDT dumping 4. Dump DSDT - Automatically dump the system DSDT acpidump.exe In command prompt run path/to/acpidump.exe -b -n DSDT -z, this will dump your DSDT as a .dat file. Rename this to DSDT.aml Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT with the above 2 methods From Linux SSDTTime Supports both Windows and Linux for DSDT dumping 4. Dump DSDT - Automatically dump the system DSDT Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT with the above method From Clover For those with Clover installed previously, this is a simple way to get your ACPI tables: F4 in Clover Boot menu DSDT can be found in EFI/CLOVER/ACPI/origin, the folder must exist before dumping From OpenCore With OpenCore, we have 2 options: SysReport Quirk UEFI Shell SysReport Quirk With OpenCore 0.5.9, we have a new quirk called SysReport which will actually dump our DSDT automatically when hitting the boot screen. The main issues are: You already need a bootable OpenCore USB to get this dump This also requires a DEBUG version of 0.5.9 For the latter, you just need to replace the following files with DEBUG version: EFI/BOOT/ BOOTx64.efi EFI/OC/Bootstrap/ Bootstrap.efi EFI/OC/Drivers/ OpenRuntime.efi EFI/OC/ OpenCore.efi For the former, you can actually skip the ACPI section, return to the OpenCore guide(Desktop, Laptop) and finish making the USB. Once booted to the picker, you can shut off the PC and check your USB: And voila! You have a DSDT! Now you can continue on with making SSDTs UEFI Shell For this, we'll want ti grab acpidump.efi and add this to EFI/OC/Tools and in your config under Misc -> Tools with the argument: -b -n DSDT -z and select this option in OpenCore's picker. If OpenCore is having issues running acpidump.efi from the boot picker, you can call it from the shell with OpenShell(reminder to add to both EFI/OC/Tools and in your config under Misc -> Tools ): shell> fs0: // replace with proper drive fs0:\\> dir // to verify this is the right directory Directory of fs0:\\ 01/01/01 3:30p EFI fs0:\\> cd EFI\\OC\\Tools fs0:\\EFI\\OC\\Tools> acpidump.efi -b -n DSDT -z Once done, you should find your DSDT in the EFI/OC/Tools folder with a .dat extension. Rename this DSDT.dat file to DSDT.aml to help us down the line "},"Manual/compile.html":{"url":"Manual/compile.html","title":"Decompiling and Compiling","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Compiling and decompiling ACPI Tables See Troubleshooting if you have dumping/compiling errors macOS Compiling and Decompiling Windows Compiling and Decompiling Linux Compiling and Decompiling macOS So compiling DSDTs and SSDTs are quite easy with macOS, all you need is MaciASL. To compile, just File -> SaveAs -> ACPI Machine Language Binary(.AML), decompiling is just opening the file in MaciASL. For those who prefer the command line, grab iasl-stable and run the following: path/to/iasl.exe path/to/DSDT.aml If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa. Windows Compiling and decompiling on windows is fairly simple though, you will need iasl.exe and Command Prompt: path/to/iasl.exe path/to/DSDT.aml If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa. Linux Compiling and decompiling with Linux is just as simple, you will need a copy of iasl. You can get it here (iasl) or through the iasl package in your package manager. iasl can be used as such: path/to/iasl path/to/DSDT.aml If compiled .aml file is provided, a decompiled .dsl file will be given and vice versa. "},"Desktops/desktop-disable.html":{"url":"Desktops/desktop-disable.html","title":"Disabling desktop dGPUs","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Disabling desktops unsupported GPUs(SSDT-GPU-DISABLE) What this SSDT does Methods to make this SSDT Prebuilt SSDTTime Manual Finding the ACPI path Edits to the sample SSDT Compiling the SSDT So this is mainly needed for GPUs that are not supported in macOS, mainly this will be Nvidia users who wish to pair an AMD GPU for macOS use. While WhateverGreen does support the boot-arg -wegnoegpu, this only works when running on iGPU so for the rest of us we'll need to make an SSDT. So to disable a specific GPU, we need to find a couple things: ACPI Path of the GPU SSDT-GPU-DISABLE Finding the ACPI Path of the GPU To find the PCI path of a GPU is fairly simple, best way to find it is running Windows: Open Device Manager Select Display Adapters, then right click your GPU and select Properties Under the Details Tab, search for \"Location Paths\" Note some GPUs may be hiding under \"BIOS device name\" The second \"ACPI\" is what we care about: ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000) Now converting this to an ACPI path is quite simple, remove the #ACPI and #PCI(0000): `_SB_.PC02.BR2A.PEGP And voila! We've found our ACPI path, now that we have everything we're ready to get cooking Making the SSDT To start grab our SSDT-GPU-DISABLE and open it up. Here there's a couple things to change: External (_SB_.PCI0.PEG0.PEGP, DeviceObj) Method (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized) For our example, we'll change all mentions of : PCI0 with PC02 PEG0 with BR2A Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device, some users may also need to adapt _SB_ to their path Now you're ready to compile the SSDT! "},"Laptops/backlight.html":{"url":"Laptops/backlight.html","title":"Backlight PNLF","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Backlight (SSDT-PNLF) What this SSDT does Methods to make this SSDT What this SSDT does The purpose of this SSDT is to create a PNLF device for macOS to play with, specifically one with a hardware ID of APP0002. Luckily WhateverGreen will handle the rest of the work for us. Methods to make this SSDT For the backlight fix, there are 2 methods you can choose from: Prebuilt Manual "},"Laptops/backlight-methods/prebuilt.html":{"url":"Laptops/backlight-methods/prebuilt.html","title":"Prebuilt","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Backlight: Prebuilt By far the easiest method, all you need to do is download the following file: SSDT-PNLF.aml For most users SSDT-PNLF-CFL.aml For Coffee Lake and newer Main things to note with this method: Assumes GPU pathing, works great for 99% of devices but if you're having issues controlling backlight this may be something to look at Doesn't really teach you anything For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey "},"Laptops/backlight-methods/manual.html":{"url":"Laptops/backlight-methods/manual.html","title":"Manual","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Backlight: Manual Finding the ACPI path Edits to the sample SSDT Compiling the SSDT Wrapping up Finding the ACPI path For this guide, we're gonna assume Windows is already on this laptop, as otherwise creating this SSDT is a bit more difficult. Now open DeviceManager, and head to the following: Device Manager -> Display Adapters -> Properties -> Details > BIOS device name Note some GPU ACPI pathing may be hiding under \"BIOS device name\" From the above example, we can see our display is hooked up to PCI0.GFX0 Edits to the sample SSDT Now that we have our ACPI path, lets grab our SSDT and get to work: SSDT-PNLF.dsl SSDT-PNLF-CFL.dsl For Coffee Lake and newer By default, this uses PCI0.GFX0 for the pathing. you'll want to rename accordingly. For this example, we'll assume your pathing is PCI0.GPU0: Before: External (_SB_.PCI0.GFX0, DeviceObj) Following the example pathing we found, the SSDT should look something like this: After: External (_SB_.PCI0.GPU0, DeviceObj) Compiling the SSDT With the SSDT done, you're now ready to compile the SSDT! Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Laptops/trackpad.html":{"url":"Laptops/trackpad.html","title":"Trackpad GPI0","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Trackpads (SSDT-GPI0/XOSI) What this SSDT does Methods to make this SSDT What this SSDT does This SSDT is used to force enable our GPI0 for VoodooI2C to connect onto. With most modern laptop DSDTs, there's a variable called GPEN or GPHD which are used for setting the status of the GPI0 device. For us, we want to enable the device. Methods to make this SSDT For the trackpad fix, there are 2 methods you can choose from: Prebuilt Manual "},"Laptops/trackpad-methods/prebuilt.html":{"url":"Laptops/trackpad-methods/prebuilt.html","title":"Prebuilt","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Trackpads: Prebuilt This is a one-size fits all solution where we basically trick our hardware into thinking it's booting Windows. The problem with this method is that it's common to break Windows booting so avoid unless troubleshooting. SSDT-XOSI XOSI Rename(add this under config.plist -> ACPI -> Patch): Comment String Change _OSI to XOSI Enabled Boolean YES Count Number 0 Limit Number 0 Find Data 5f4f5349 Replace Data 584f5349 "},"Laptops/trackpad-methods/manual.html":{"url":"Laptops/trackpad-methods/manual.html","title":"Manual","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Trackpads: Manual Finding the ACPI path Edits to the sample SSDT Compiling the SSDT Wrapping up Finding the ACPI path Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help). Next search for Device (GPI0). Should give you a result similar to this: What we care about from this is the _STA method: Method (_STA, 0, NotSerialized) { If ((GPHD == One)) { Return (0x03) } Return (0x0F) } What we want is for this to always return 0x0F when booting macOS, so we want to make an SSDT that will return GPHD == Zero in macOS. NOTE that you may have the other way around where GPHD needs to be set as One to return 0x0F. And your device name may also be different, don't throw random SSDTs in thinking it'll work Here's some more examples: With this example, we can see that we need both SBRG and GPEN to return One. If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return One: Edits to the sample SSDT Now that we have our ACPI path, lets grab our SSDT and get to work: SSDT-GPI0.dsl From the second example, we'll want to set both GPEN and SBRG to One to allow it to operate in macOS: Before: If (_OSI (\"Darwin\")) { GPEN = One Following the example pathing we found, the SSDT should look something like this: After: If (_OSI (\"Darwin\")) { GPEN = One Compiling the SSDT With the SSDT done, you're now ready to compile the SSDT! Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Laptops/laptop-disable.html":{"url":"Laptops/laptop-disable.html","title":"Disabling laptop dGPUs","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Disabling laptop dGPUs (SSDT-dGPU-Off/NoHybGfx) What this SSDT does Methods to make this SSDT Prebuilt SSDTTime Manual Finding the ACPI path Edits to the sample SSDT Compiling the SSDT So with laptops, we can hide the dGPU from macOS with the little boot-arg called -wegnoegpu from WhateverGreen. But one small problem, the dGPU is still pulling power draining your battery slowly. We'll be going over 2 methods for disabling the dGPU in a laptop: Optimus Method Bumblebee Method Note that this is not needed for install, but recommended for post-install Optimus Method How this works is that we call the .off method found on Optimus GPUs, this is the expected way to power off a GPU but some may find their dGPU will power back up later on. Mainly seen in Lenovo's, the Optimus method should work for most users: To start, grab SSDT-dGPU-Off.dsl Next we need to get on Windows, and head to the following: Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name Note some GPUs may be hiding under \"BIOS device name\" This should provided you with an ACPI path for your dGPU, most commonly: Nvidia dGPU: \\_SB.PCI0.PEG0.PEGP AMD dGPU: \\_SB.PCI0.PEGP.DGFX Now with that, we'll need to change the ACPI path in the SSDT. Main sections: External(_SB.PCI0.PEG0.PEGP._OFF, MethodObj) If (CondRefOf(\\_SB.PCI0.PEG0.PEGP._OFF)) { \\_SB.PCI0.PEG0.PEGP._OFF() } Once adapted to your config, head to the compile section For those with sleep issues, you can refer to the original Rehabman thread Bumblebee Method With some machines, the simple .off call won't keep the card off properly, that's where the Bumblebee method comes in. This SSDT will actually send the dGPU into D3 state being the lowest power state a device can support. Credit to Mameo for the original adaptation. To start, grab SSDT-NoHybGfx.dsl Next we need to get on Windows, and head to the following: Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name This should provided you with an ACPI path for your dGPU, most commonly: Nvidia dGPU: \\_SB.PCI0.PEG0.PEGP AMD dGPU: \\_SB.PCI0.PEGP.DGFX Now with that, we'll need to change the ACPI path in the SSDT. Main sections: External (_SB_.PCI0.PEG0.PEGP._DSM, MethodObj) // dGPU ACPI Path External (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj) // dGPU ACPI Path If ((CondRefOf (\\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\\_SB.PCI0.PEG0.PEGP._PS3))) // Card Off Request \\_SB.PCI0.PEG0.PEGP._DSM (ToUUID (\"a486d8f8-0bda-471b-a72b-6042a6b5bee0\"), 0x0100, 0x1A, Buffer (0x04) // Card Off \\_SB.PCI0.PEG0.PEGP._PS3 () Once adapted to your config, head to the compile section Now you're ready to compile the SSDT! "},"Universal/ec-fix.html":{"url":"Universal/ec-fix.html","title":"Embedded Controller","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Embedded Controller (SSDT-EC/USBX) Fixing Embedded Controller (SSDT-EC/USBX) What this SSDT does Methods to make this SSDT What this SSDT does The purpose of SSDT-EC/UBX is a couple things: On desktops, the EC(or better known as the embedded controller) isn't compatible with AppleACPIEC driver, to get around this we disable this device when running macOS AppleBusPowerController will look for a device named EC, so we will want to create a fake device for this kext to load onto AppleBusPowerController also requires a USBX device to supply USB power properties for Skylake and newer, so we will bundle this device in with the EC fix On laptops, the EC is used for hotkeys and battery so disabling this isn't all too ideal. Problem is our EC's name isn't compatible, so we will create a simple \"fake\" EC device that will satisfy Apple So TL;DR: EC is embedded controller Desktops will want real EC off, and a fake EC created Laptops will just want an additional fake EC present Skylake and newer devices will want USBX as well Methods to make this SSDT For the EC fix, there are 3 methods you can choose from: Prebuilt The prebuilt for desktops are very bloated. It's recommended to use the two methods below. The Laptop prebuilts are easily usable. SSDTTime Note this method does not support laptops, servers or HEDT systems Manual "},"Universal/ec-methods/prebuilt.html":{"url":"Universal/ec-methods/prebuilt.html","title":"Prebuilt","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Embedded Controllers: Prebuilt By far the easiest way to fix your Embedded Controller is just downloading one of the files below: Desktop: SSDT-EC-USBX-DESKTOP For Skylake desktops and newer and AMD CPU based systems SSDT-EC-DESKTOP For Broadwell desktops and older Laptops: SSDT-EC-USBX-LAPTOP.aml For Skylake laptops and newer SSDT-EC-LAPTOP.aml For Broadwell laptops and older The main things to note with this method: Quite Bloated There's ACPI naming for every type, this means there's added delays in boot times Doesn't really teach you anything For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/ec-methods/ssdttime.html":{"url":"Universal/ec-methods/ssdttime.html","title":"SSDTTime","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Embedded Controllers: SSDTTime The second involves using SSDTTime which automates most of the process. See here on how to use it: SSDTs: Easy Way To get the SSDT-PLUG, run the following: 4. Dump DSDT then run 2. FakeEC This will provide you with some files, the main one you care about is SSDT-EC.aml. The DSDT and .dsl are only left for referencing or verification. The main things to note with this method: Doesn't work on HEDT and server hardware(ie. X99 and X299) While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the Prebuilt or Manual method Doesn't work on Laptops Just like with HEDT, you will need to either use the Prebuilt or Manual method Doesn't provide you the USBX property to fix power This can easily be fixed by using this prebuilt file in addition to SSDT-EC: SSDT-USBX.aml Note USBX is only needed for Skylake and newer Doesn't really teach you anything For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/ec-methods/manual.html":{"url":"Universal/ec-methods/manual.html","title":"Manual","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Embedded Controllers: Manual Fixing Embedded Controllers: Manual Finding the ACPI path DSDT DeviceManager Edits to the sample SSDT Edge Cases Multiple PNP0C09's show up No PNP0C09 show up PNP0C09 already named EC PNP0C09 already has an _STA method Compiling the SSDT Wrapping up TO-DO: Finish Edge cases and sample SSDT edits Finding the ACPI path To find the ACPI pathing, you have 2 methods: DSDT DeviceManager DSDT Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help). Next, search for PNP0C09. You should get something similar: From the above example we see 2 main things: Name of our embedded controller In this case being EC0 Pathing of our embedded controller PC00.LPC0 But now we get into edge case territory, what fun! The main ones to check for are: Fixing Embedded Controllers: Manual Finding the ACPI path DSDT DeviceManager Edits to the sample SSDT Edge Cases Multiple PNP0C09's show up No PNP0C09 show up PNP0C09 already named EC PNP0C09 already has an _STA method Compiling the SSDT Wrapping up If none of the above apply to you, you're ready for the next section: DeviceManager If you already have Windows installed on this machine, finding the EC pathing is fairly easy. Start by opening up Device Manager in Windows and looking for a device named Embedded Controller. Once found, click on it and select the BIOS device Name entry. You should get something like this: From the above, we can see that our pathing is SB.PC00.LPC0.EC0 Now with the pathing, you can head here: Edits to the sample SSDT Edits to the sample SSDT Now that we have our ACPI path, lets grab our SSDT and get to work: SSDT-EC-USBX For Skylake and newer and all AMD systems SSDT-EC For Broadwell and older Now when opening this SSDT, you'll notice a few things. Mainly: Some code is commented out This is code for disabling our EC Laptops users SHOULD NOT uncomment this There's a new EC called Device (EC) DO NOT RENAME THIS, this will be the EC we give to macOS Before: External (_SB_.PCI0.LPCB, DeviceObj) Following the example pathing we found, the SSDT should look something like this: After: External (_SB_.PC00.LPC0, DeviceObj) Edge Cases Multiple PNP0C09's show up When multiple PNP0C09 show up, we need to next check for the following properties: _HID (Hardware ID) _CRS (Current Resource Settings) _GPE (General Purpose Events) What these signify is whether this PNP0C09 device is real or not, as per the ACPI spec. So one's matching the above criteria are the one's we want to disable. Note: If _STA shows up as well, you'll need to go here: PNP0C09 already has an _STA method No PNP0C09 show up When this happens, you'll only need to create a \"dummy\" EC for macOS. You'll still want to find the PCI and LPC pathing for this device. So follow the guide as if you were creating a laptop SSDT-EC. PNP0C09 already named EC Congrats! No need to create an SSDT-EC! However you will still want USBX if you're skylake or newer. Prebuilt can be grabbed here: SSDT-USBX.aml PNP0C09 already has an _STA method This is the equivalent of not having an EC as we can't control it with our SSDT-EC, instead we'll need to create a \"dummy\" EC for macOS. You'll still want to find the PCI and LPC pathing for this device. So follow the guide as if you were creating a laptop SSDT-EC. Example of an EC with STA already: Compiling the SSDT With the SSDT done, you're now ready to compile the SSDT! Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/plug.html":{"url":"Universal/plug.html","title":"CPU Power Management","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Power Management (SSDT-PLUG) Fixing Power Management (SSDT-PLUG) What this SSDT does Methods to make this SSDT What this SSDT does The purpose of SSDT-PLUG is to allow the kernel's XCPM(XNU's CPU Power Management) to manage our CPU's power management. It's pretty self explanatory why you'd want this. Note: SSDT-PLUG is only compatible with Intel's Haswell and newer CPUs, Sandy Bridge and Ivy Bridge will need to follow the ssdtPRgen method(in post-install) while AMD users should not use this(unless attempting to attach AGPM which is outside the scope of Dortania's guides) Methods to make this SSDT For SSDT-PLUG, there are 3 methods you can choose from: Prebuilt SSDTTime Note this method does not support servers or HEDT systems Manual "},"Universal/plug-methods/prebuilt.html":{"url":"Universal/plug-methods/prebuilt.html","title":"Prebuilt","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Power Management: Prebuilt By far the easiest way to get SSDT-PLUG is just downloading the below file: SSDT-PLUG-DRTNIA.aml This prebuilt file is just a precompiled version of SSDT-PLUG provided by Acidanthera. The main things to note with this method: Quite Bloated There's ACPI naming for every type, this means there's added delays in boot times(though unnoticeable to most as it's generally 0.5 seconds longer) Doesn't really teach you anything For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/plug-methods/ssdttime.html":{"url":"Universal/plug-methods/ssdttime.html","title":"SSDTTime","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Power Management: SSDTTime The second involves using SSDTTime which automates most of the process. See here on how to use it: SSDTs: Easy Way To get the SSDT-PLUG, run the following: 4. Dump DSDT then run 3. PluginType This will provide you with some files, the main one you care about is SSDT-PLUG.aml. The DSDT and .dsl are only left for referencing or verification. The main things to note with this method: Doesn't work on HEDT and server hardware(ie. X99 and X299) While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the Prebuilt or Manual method Doesn't really teach you anything For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/plug-methods/manual.html":{"url":"Universal/plug-methods/manual.html","title":"Manual","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing Power Management: Manual Finding the ACPI path DSDT DeviceManager Edits to the sample SSDT Compiling the SSDT Wrapping up Finding the ACPI path To find the ACPI pathing, you have 2 methods: DSDT DeviceManager DSDT CPU naming is fairly easy to figure out, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help). Next search for Processor. This should give you a result like this: As we can see, the first processor in our list is SB.PR00. This is what we'll be applying the plugin-type=1 property too. X99 and X299 note: Due to the different DSDT structure of these systems, you'll need to to actually check in multiple places as the pathing isn't as obvious: If we then search for instances of CP00 we find that its full ACPI pathing is SB.SCK0.CP00: Now with the pathing, you can head here: Edits to the sample SSDT DeviceManager If you already have Windows installed on this machine, finding the CPU pathing is fairly easy. Start by opening up Device Manager in Windows and looking for a device named Processor. Once found, click on it and select the BIOS device Name entry. You should get something like this: From the above, we can see that our pathing is PR.CPU0. Pay close attention to the start as PR is important for creating the SSDT X99 and X299 note: Odd quirk of DeviceManager in Windows is that the Processor's order does not actually match the ACPI path, instead giving something like SB.SCK0.CP10: When this happens, you can either: Look through and find the lowest value Assume the lowest(commonly being PR00 or CP00) So with the above X299 example, our CPU pathing would be SB.SCK0.CP00 Now with the pathing, you can head here: Edits to the sample SSDT Edits to the sample SSDT Now that we have our ACPI path, lets grab our SSDT and get to work: SSDT-PLUG.dsl From the above SSDT, it's very likely your processor is already there. If so, you can delete all the other entries other than yours and the Method PMPM as this is what injects the plugin-type=1 property into our system. Reminder: We only need to apply plugin-type=1 to the first thread For the below example, we'll be using the X299 example(SB.SCK0.CP00) Original Cleaned Up Compiling the SSDT With the SSDT done, you're now ready to compile the SSDT! Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/awac.html":{"url":"Universal/awac.html","title":"AWAC vs RTC","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing System Clocks (SSDT-AWAC/RTC0) What this SSDT does Methods to make this SSDT What this SSDT does The purpose of SSDT-AWAC/RTC0 is to fix the system clocks found on newer hardware, maily found in the following: B360 B365 H310 H370 Z370 (Gigabyte and AsRock boards with newer BIOS versions) Z390 B460 Z490 400 series (Comet Lake, including Z490) 495 series (Icelake) X299X (10th Gen refresh, AsRock and Asus don't use the -x naming so you'll need to double check) SSDT-AWAC tries to re-enable the old RTC clock that is compatible with macOS, while SSDT-RTC0 will instead create a \"fake\" RTC clock if there is no legacy one to enable. Methods to make this SSDT For the RTC fix, there are 2 methods you can choose from: Prebuilt Manual "},"Universal/awac-methods/prebuilt.html":{"url":"Universal/awac-methods/prebuilt.html","title":"Prebuilt","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing System Clocks: Prebuilt By far the easiest method, all you need to do is download the following file: SSDT-AWAC.aml Main things to note with this method: Assumes you both have an AWAC clock and it can be easily turned off with the RTC replacing it, this may not always work Doesn't really teach you anything For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/awac-methods/manual.html":{"url":"Universal/awac-methods/manual.html","title":"Manual","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing System Clocks: Manual Determining which SSDT you need RTC0 Method Finding the ACPI path Edits to the sample SSDT Compiling the SSDT Wrapping up Determining which SSDT you need Finding which SSDT you need is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help). Next search for ACPI000E. You should get something similar: The above tells us a few things: We in fact do have an AWAC clock If nothing shows up, you don't need to do anything for AWAC or RTC It can be easily disabled with STAS(if not, you can skip to here: RTC0 Method) _STA is the device status, with Zero meaning it won't show up But to double check, next search for PNP0B00: And looks at that, we can in fact disable our AWAC and enable the RTC! If not skip to here: RTC0 Method Now it's as simple as grabbing SSDT-AWAC.dsl and compile, no changes needed You can also use the below SSDT to the same effect: SSDT-AWAC.aml _INI Edge Cases Mainly seen on X299 refresh boards, there's already a Scope (_SB) { Method (_INI... in your DSDT. This means our SSDT-AWAC will conflict with the one found in our DSDT. For these situations, you'll want to remove Method (_INI, 0, NotSerialized) {} from the SSDT. You'll be left this this in the end: DefinitionBlock (\"\", \"SSDT\", 2, \"DRTNIA\", \"AWAC\", 0x00000000) { External (STAS, IntObj) Scope (_SB) { If (_OSI (\"Darwin\")) { STAS = One } } } RTC0 Method This method is for those who either don't have a PNP0B00 device to re-enable or have no easy way(via STAS variable). Finding the ACPI path Assuming you've gotten your DSDT already opened from earlier, search for the following: Finding the LowPinCount path: Search Name (_ADR, 0x001F0000) Finding the PCI path: Search PNP0A08 (If multiple show up, use the first one) You should get something like the following show up: LPC Pathing PCI Pathing From the above, we can see we have both PCI0 and LPC. Now we can head to the next stage Edits to the sample SSDT Now that we have our ACPI path, lets grab our SSDT and get to work: SSDT-RTC0.dsl By default, this uses PCI0.LPCB for the pathing. you'll want to rename accordingly. Following the example from above, we'll be renaming it to PCI0.LPC: Before: External (_SB_.PCI0.LPCB, DeviceObj) Following the example pathing we found, the SSDT should look something like this: After: External (_SB_.PCI0.LPC, DeviceObj) Compiling the SSDT With the SSDT done, you're now ready to compile the SSDT! Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/nvram.html":{"url":"Universal/nvram.html","title":"NVRAM PMC","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing NVRAM (SSDT-PMC) What this SSDT does Methods to make this SSDT What this SSDT does This SSDT is required for all \"true\" 300 series motherboards(Z370 is excluded), it specifically brings back NVRAM support and requires very little configuration for the end user. B360 B365 H310 H370 Z390 10th gen motherboards do not need this SSDT, NVRAM's native on these platforms. Methods to make this SSDT The main ways to make this SSDT: Prebuilt Manual "},"Universal/nvram-methods/prebuilt.html":{"url":"Universal/nvram-methods/prebuilt.html","title":"Prebuilt","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing NVRAM: Prebuilt By far the easiest method, all you need to do is download the following file: SSDT-PMC.aml Main things to note with this method: Bit Bloated There's ACPI naming for most common paths, this means there's added delays in boot times(though unnoticeable to most as it's generally less than 0.5 seconds longer) Doesn't really teach you anything For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/nvram-methods/manual.html":{"url":"Universal/nvram-methods/manual.html","title":"Manual","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing NVRAM: Manual Finding the ACPI path Edits to the sample SSDT Compiling the SSDT Wrapping up Finding the ACPI path Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help). Next, search for the following: Finding the LowPinCount path: Search Name (_ADR, 0x001F0000) Finding the PCI path: Search PNP0A08 (If multiple show up, use the first one) You should get something like the following show up: LPC Pathing PCI Pathing Now with the pathing, you can head here: Edits to the sample SSDT Edits to the sample SSDT Now that we have our ACPI path, lets grab our SSDT and get to work: SSDT-PMC.dsl By default, this uses PCI0.LPCB for the pathing. you'll want to rename accordingly. Following the example from above, we'll be renaming it to PCI0.LPC: Before: External (_SB_.PCI0.LPCB, DeviceObj) Following the example pathing we found, the SSDT should look something like this: After: External (_SB_.PCI0.LPC, DeviceObj) Compiling the SSDT With the SSDT done, you're now ready to compile the SSDT! Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/rhub.html":{"url":"Universal/rhub.html","title":"USB RHUB","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing USB What this SSDT does Methods to make this SSDT What this SSDT does So on 400 series motherboards, certain OEMs have broken the ACPI spec and this results in issues when booting into macOS. To fix this, we'll want to turn off the RHUB device and force macOS to manually rebuild the ports. The following platforms will require fixing: Mobile Icelake(currently Dell and Lenovo are the 2 known with this issue) Asus Z490 (Gigabyte and AsRock users are fine, whether MSI currently this is unknown) Methods to make this SSDT For the RTC fix, there are 2 methods you can choose from: Prebuilt Manual "},"Universal/rhub-methods/prebuilt.html":{"url":"Universal/rhub-methods/prebuilt.html","title":"Prebuilt","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing USB: Prebuilt By far the easiest method, all you need to do is download the following file: SSDT-RHUB.aml Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/rhub-methods/manual.html":{"url":"Universal/rhub-methods/manual.html","title":"Manual","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing USB: Manual Finding the ACPI path Edits to the sample SSDT Compiling the SSDT Wrapping up Finding the ACPI path Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension that can also help). Next, search for the Device (RHUB) You should get something like the following show up: From the above, we can see that the full ACPI pathing for RHUB is PCI0.XHC.RHUB. If it's not as clear you can search for what those device paths are for your system: Finding the PCI path: Search PNP0A08 (If multiple show up, use the first one) Finding XHCI path Search for XHC, XHCI and XHC1, and yours is whichever shows up. Now with the pathing, you can head here: Edits to the sample SSDT Edits to the sample SSDT Now that we have our ACPI path, lets grab our SSDT and get to work: SSDT-RHUB.dsl By default, this uses PCI0.XHC_.RHUB for the pathing. you'll want to rename accordingly. Following the example from above, we'll be renaming it to PCI0.XHC1.RHUB: Before: External (_SB_.PCI0.XHC_.RHUB, DeviceObj) Following the example pathing we found, the SSDT should look something like this: After: External (_SB.PCI0.XHC1.RHUB, DeviceObj) Compiling the SSDT With the SSDT done, you're now ready to compile the SSDT! Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup "},"Universal/irq.html":{"url":"Universal/irq.html","title":"IRQ Fix","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing IRQ Conflicts (SSDT-HPET + OC_Patches.plist) So you miss having those fancy hot-patches from Clover like FixIPIC, FixTMR, FixRTC, FixHPET, etc Well 1 very small problem, figuring out IRQ patching is a massive headache. I highly recommend you use SSDTTime. So head over to SSDT: Easy Way on how to make it.(use option C to omit conflicting legacy IRQs) "},"Universal/spoof.html":{"url":"Universal/spoof.html","title":"GPU Spoof","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Renaming GPUs (SSDT-GPU-SPOOF) So this is mainly needed for GPUs that are not natively supported out of the box due to their names, most commonly: R9 290/390 R9 280/380 R7 270/370 R9 260/360 R7 250 R7 240 Instead, these GPUs need to be \"spoofed\" or faked into a model that closely matches theirs, generally this will be the \"X\" variant of the card. For some reason Apple never bothered adding the PCI IDs for these other cards even though their GPU cores are supported by the driver. So to spoof the GPU, we need to find a couple things: Suitable PCI ID for the GPU ACPI Path of the GPU SSDT-GPU-SPOOF Finding a suitable PCI ID To find a suitable PCI ID, we'll be using PCI ID Repository which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the GPU Buyers Guide. The closest match to this GPU would be the 390X, and looking on that site near the top gives us this: Vendor 1002 -> Device 1002:67b0 Now lets break this down into a device ID we can use: 1002: The vendor ID, all AMD devices have this ID 67B0: The device ID, this is what we care about So how do we convert this to a fake ID? Well the format of a fake ID: \"device-id\", Buffer (0x04) { 0xB0, 0x67, 0x00, 0x00 }, As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT The specifics are due to Endianness for those who are curious Finding the ACPI Path of the GPU To find the PCI path of a GPU is fairly simple, best way to find it is running Windows: Open Device Manager Select Display Adapters, then right click your GPU and select Properties Under the Details Tab, search for \"Location Paths\" Note some GPUs may be hiding under \"BIOS device name\" The second \"ACPI\" is what we care about: ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000) Now converting this to an ACPI path is quite simple, remove the #ACPI and #PCI(0000): `_SB_.PC02.BR2A.PEGP And voila! We've found our ACPI path, now that we have everything we're ready to get cooking Making the SSDT To start grab our SSDT-GPU-SPOOF and open it up. Here there's a couple things to change: External (_SB_.PCI0, DeviceObj) External (_SB_.PCI0.PEG0.PEGP, DeviceObj) For our example, we'll change all mentions of : PCI0 with PC02 PEG0 with BR2A Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device. Now that the ACPI pathing is correct, we can finally apply our fake ID!!! So the 2 parts we want to change: device ID: \"device-id\", Buffer (0x04) { 0xB0, 0x67, 0x00, 0x00 }, Model: \"model\", Buffer () { \"AMD Radeon R9 390\" } \"device-id\" will be set to our PCI ID that we found in \"Finding a suitable PCI ID\" and \"model\" is mainly cosmetic Now you're ready to compile the SSDT! "},"Universal/smbus.html":{"url":"Universal/smbus.html","title":"Fixing SMBus Support","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing SMBus support (SSDT-SBUS-MCHC) What this SSDT does Methods to make this SSDT What this SSDT does This section of the guide refers to fixing AppleSMBus support in macOS, what is AppleSMBus? Well this mainly handles the System Management Bus, which has many functions like: AppleSMBusController Aids with correct temperature, fan, voltage, ICH, etc readings AppleSMBusPCI Same idea as AppleSMBusController except for low bandwidth PCI devices Memory Reporting Aids in proper memory reporting and can aid in getting better kernel panic details if memory related Other things SMBus does: SMBus wiki For install purposes, this SSDT isn't needed but for post-install it's recommended to put the final touches on your hack. Methods to make this SSDT To make this SSDT, you only got 1 method: Doing it manually Manual "},"Universal/smbus-methods/manual.html":{"url":"Universal/smbus-methods/manual.html","title":"Manual","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Fixing SMBus support: Manual Finding the ACPI path Hackintool DeviceManager Edits to the sample SSDT Compiling the SSDT Wrapping up Finding the ACPI path So to find the ACPI pathing of our SMBus, we've got 2 methods: Hackintool DeviceManager Hackintool To find the correct pathing for your devices, grab Hackintool (Github link) and head to the PCI tab: Look for the SMBus device under Subclass, then look beside and you'll see the ACPI path(under IOReg Name). To convert , omit @... /PC00@0/SMBS@1F,4 -> PC00.SMBS With the ACPI pathing, you can now head here: Edits to the sample SSDT DeviceManager If you already have Windows installed on this machine, finding the SMBus pathing is fairly easy. Start by opening up Device Manager in Windows and looking for a device named SMBUS. Once found, click on it and select the BIOS device Name entry. You should get something like this: From the above example, we can see the SMBus is located at: PC00.SMBS With the ACPI pathing, you can now head here: Edits to the sample SSDT Edits to the sample SSDT Now that we know the ACPI pathing of the SMBus, we can finally start editing the our SSDT. SSDT-SBUS-MCHC.dsl So the important parts we care about are: Before: External (_SB_.PCI0, DeviceObj) Following the example SMBus pathing we found, the SSDT should look something like this: After: External (_SB_.PC00, DeviceObj) Compiling the SSDT With the SSDT done, you're now ready to compile the SSDT! Wrapping up Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up: Cleanup Verify it's working Once you've installed macOS, you can actually check whether your SSDT-SBUS-MCHC is working or not in terminal: kextstat | grep -E \"AppleSMBusController|AppleSMBusPCI\" "},"cleanup.html":{"url":"cleanup.html","title":"Cleanup","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Cleanup So you've made all your SSDTs but now there's one thing left: Adding them to Opencore The 2 main locations: EFI/OC/ACPI (Only .aml files, reminder to compile your SSDTs) config.plist -> ACPI -> Add You can save yourself some work with the config.plist by running Cmd/Ctrl+R in ProperTree. Reminder do not add your DSDT.aml to your EFI For those who do not yet have a config.plist, you'll want to next head back to your respective OpenCore guides and create the config.plist: OpenCore Desktop guide OpenCore Laptop Guide Users of FixHPET will also need to merge oc_patches.plist into their config.plist Steps to do this: Open both files, Delete the ACPI -> Patch section from config.plist Copy the ACPI -> Patch section from patches.plist Paste into where old patches were in config.plist "},"troubleshooting.html":{"url":"troubleshooting.html","title":"Troubleshooting","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Troubleshooting Fixing SSDTTime: Could not locate or download iasl! Can't run acpidump.efi iASL warning, # unresolved Decompiling Error Invalid character (0x3D), expecting ASL keyword or name Syntax error, unexpected PARSEOP_ONE, expecting '(' Fixing SSDTTime: Could not locate or download iasl! This is usually due to an outdated version of Python, try either updating Python or add iasl to the scripts folder for SSDTTime: iasl macOS version iasl Windows version iasl Linux version Can't run acpidump.efi from OpenCore Grab OpenShell and add it to EFI/OC/Tools and config.plist -> Misc -> Tools. Next, call upon OpenCore shell and enter the following: shell> fs0: //replace with proper drive fs0:\\> dir //to verify this is the right directory Directory of fs0:\\ 01/01/01 3:30p EFI fs0:\\> cd EFI\\OC\\Tools //note that its with forward slashes fs0:\\EFI\\OC\\Tools> acpidump.efi -b -n DSDT -z iASL warning, # unresolved If you try to decompile your DSDT and get an error similar to this: iASL Warning: There were 19 external control methods found during disassembly, but only 0 were resolved (19 unresolved) This happens when one ACPI table requires the rest for proper referencing, it does not accept the creation of DSDTs as we're only using it for creating a select few SSDTs. For those who are worried, you can run the following: iasl * [insert all ACPI files here] Decompiling Error Loading Acpi table from file iASLAwjHrs.aml Acpi table [DSDT] successfully installed and loaded Pass 1 parse of [DSDT] This is a common error on DSDTs that have methods that aren't supported by maciASL, the easiest way is to delete maciASL and make sure you grab it from Acidanthera's repo: maciASL Invalid character (0x3D), expecting ASL keyword or name Similar to the above error, you're running an outdated copy of maciASL. Make sure you're using the latest from Acidanthera's repo: maciASL Syntax error, unexpected PARSEOP_ONE, expecting '(' Similar to the above 2 errors, you're running an outdated copy of maciASL. Make sure you're using the latest from Acidanthera's repo: maciASL "},"CONTRIBUTING.html":{"url":"CONTRIBUTING.html","title":"Contributing","keywords":"","body":" Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time) Supporting the guides Note: This is a community run guide which is not officially endorsed by Acidanthera. Please do not bug Acidanthera with issues about this guide. Want to help support the guide? Well there's some ways you can help! Contributing via Issues Contributing via PRs Note: For those wanting to contribute financially, we seriously appreciate it but we're a non-profit organization. We do this to teach, not to make money. If you have some money left over we highly recommend donating it to a charity. Crohn's and Colitis Canada is one we recommend if you have none on mind. Contributing via Issues Contributing via Issues is pretty simple but there are some rules: Keep issues tab dedicated to guides issues only, no personal hackintosh issues. It is not a place to discuss installation issues. If for a typo or better clarification, please indicate what page it was on. Would appreciate not going for a scavenger hunt on where these issues are. You can find the issues tab here: Getting Started With ACPI Issues Contributing via PRs Some guidelines when contributing via PRs: Use your brain (please). Proofread your submissions. Pull Requests can be denied if we feel it does not fit or has inaccurate information. We will generally tell you why it is rejected though or ask for revisions. We would also appreciate sources for any bigger commits to make it easier on us to verify the info your provide is valid Images must be hosted locally in the repo under the /images/ folder Your PR must be run through a markdown lint and have all issues fixed. In general, try to avoid using \"non-Acidanthera\" tools when possible. Generally we want to avoid use of third-party tools - though if it's impossible otherwise, then you can link it. Tools explicitly banned: UniBeast, MultiBeast and KextBeast More info can be found here: Tonymacx86-stance Transmac Know for creating borked USB drives Niresh Installers We'd like to avoid piracy with the guides How to Contribute Best way to test your commits and make sure they are formatted correctly is downloading nodejs and getting the gitbook-cli and markdownlint-cli tools. When you run gitbook serve, it will set up a local webserver which you can connect to view the changes you made. markdownlint * will throw any errors at you about formatting as well, and markdownlint -f * will attempt to fix these. Fork this repo Install the required tools: npm install -g markdownlint-cli npm install -g gitbook-cli Make your changes. Build the site: gitbook install (To install all the required gitbook plugins) gitbook serve (Preview the site) Can be found at http://localhost:4000 Check markdown format: markdownlint -f * (To fix any potential issues) Tips Some tools that make contributing a bit easier: Typora for real time markdown rendering. TextMate for easy and powerful mass find/replace. Github Desktop for more user friendly GUI. "}} \ No newline at end of file diff --git a/ssdt-methods/ssdt-easy.html b/ssdt-methods/ssdt-easy.html index b808578..f5be782 100644 --- a/ssdt-methods/ssdt-easy.html +++ b/ssdt-methods/ssdt-easy.html @@ -1,965 +1,64 @@ - - - - - - - SSDTs: Easy Way · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + SSDTs: The easy way | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                                      -
                                                                      - - - - - - - - -
                                                                      - -
                                                                      - -
                                                                      - - - - - - - - -
                                                                      -
                                                                      - -
                                                                      -
                                                                      - -
                                                                      - -
                                                                      -

                                                                      Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                      -
                                                                      -

                                                                      SSDTs: The easy way

                                                                      -

                                                                      So here we'll be using a super simple tool made by CorpNewt: SSDTTime

                                                                      -

                                                                      What this tool does is, it dumps your DSDT from your firmware, and then creates SSDTs based off your DSDT. This must be done on the target machine running either Windows or Linux

                                                                      -

                                                                      So what CAN'T SSDTTime do

                                                                      -
                                                                        -
                                                                      • HEDT SSDTs:
                                                                          -
                                                                        • The ACPI is odd on these platforms so manual work is required
                                                                        • -
                                                                        • This includes X79, X99 and X299 systems
                                                                        • -
                                                                        • Prebuilt can be found here: Embedded Controller
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • Laptop EC fix:
                                                                          -
                                                                        • This is because you do not want the EC powered off
                                                                        • -
                                                                        • Prebuilt can be found here: Embedded Controller
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • SSDT-PNLF:
                                                                          -
                                                                        • Need to be configured to your system
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • SSDT-GPI0:
                                                                          -
                                                                        • Need to be configured to your system
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • AWAC and RTC0 SSDTs:
                                                                          -
                                                                        • 300 series Intel boards will also need to figure this out (Z390 systems are most common for requiring this but some Gigabyte Z370 do as well)
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • PMC SSDT:
                                                                          -
                                                                        • For fixing 300 series Intel NVRAM
                                                                        • -
                                                                        • Prebuilt can be found here: NVRAM PMC
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • USBX SSDT:
                                                                          -
                                                                        • This is included on sample SSDTs but SSDTTime only makes the SSDT-EC part, Skylake and newer users can grab a pre-built here: SSDT-USBX.aml
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • RHUB SSDT:
                                                                          -
                                                                        • if you have a 10th gen CPU, you'll need to either use the prebuilt or manually create it.
                                                                        • -
                                                                        -
                                                                      • -
                                                                      -

                                                                      For users who don't have all the options available to them in SSDTTime, you can follow the "SSDTs: The long way" section. You can still use SSDTTime for SSDTs it does support.

                                                                      -

                                                                      Running SSDTTime

                                                                      -

                                                                      Run the SSDTTime.bat file as Admin on the target machine and you should see something like this:

                                                                      -

                                                                      -

                                                                      What are all these options?:

                                                                      -
                                                                        -
                                                                      • 1. FixHPET - Patch out IRQ Conflicts
                                                                          -
                                                                        • IRQ patching, mainly needed for X79, X99 and laptop users(use option C to omit conflicting legacy IRQs)
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • 2. FakeEC - OS-aware Fake EC
                                                                          -
                                                                        • This is the SSDT-EC, required for Catalina users
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • 3. PluginType - Sets plugin-type = 1 on CPU0/PR00
                                                                          -
                                                                        • This is the SSDT-PLUG, for Intel only
                                                                        • -
                                                                        -
                                                                      • -
                                                                      • 4. Dump DSDT - Automatically dump the system DSDT
                                                                          -
                                                                        • Dumps your DSDT from your firmware
                                                                        • -
                                                                        -
                                                                      • -
                                                                      -

                                                                      What we want to do is select option 4. Dump DSDT first, then select the appropriate option(s) for your system.

                                                                      -
                                                                      -

                                                                      What about USBX?

                                                                      -
                                                                      -

                                                                      For Skylake and newer plus AMD, you can grab a pre-built file here: SSDT-USBX.aml. This file is plug and play and requires no device configuration, do not use on Broadwell and older.

                                                                      -

                                                                      Troubleshooting note: See General Troubleshooting if you're having issues running SSDTTime

                                                                      -

                                                                      Adding to OpenCore

                                                                      -

                                                                      Don't forget that SSDTs need to be added to Opencore, reminder that .aml is complied, .dsl is code. Add only the .aml file:

                                                                      -
                                                                        -
                                                                      • EFI/OC/ACPI
                                                                      • -
                                                                      • config.plist -> ACPI -> Add
                                                                      • -
                                                                      -

                                                                      Reminder that Cmd/Crtl+R with ProperTree pointed at your OC folder will add all your SSDTs, kexts and .efi drivers to the config for you. Do not add your DSDT to OpenCore, its already in your firmware. If you are unsure what this is referring to, go back to the OpenCore guide and select your config based of the architecture of your CPU.

                                                                      -

                                                                      For those who do not yet have a config.plist, you'll want to next head back to your respective OpenCore guides and create the config.plist:

                                                                      - -

                                                                      Users of FixHPET will also need to merge oc_patches.plist into their config.plist

                                                                      -

                                                                      Steps to do this:

                                                                      -
                                                                        -
                                                                      • Open both files,
                                                                      • -
                                                                      • Delete the ACPI -> Patch section from config.plist
                                                                      • -
                                                                      • Copy the ACPI -> Patch section from patches.plist
                                                                      • -
                                                                      • Paste into where old patches were in config.plist
                                                                      • -
                                                                      - - -
                                                                      - -
                                                                      -
                                                                      -
                                                                      - -

                                                                      results matching ""

                                                                      -
                                                                        - -
                                                                        -
                                                                        - -

                                                                        No results matching ""

                                                                        - -
                                                                        -
                                                                        -
                                                                        - -
                                                                        -
                                                                        - -
                                                                        - - - - - - - - - - - - - - -
                                                                        - - -
                                                                        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                                        # SSDTs: The easy way

                                                                        So here we'll be using a super simple tool made by CorpNewt: SSDTTime

                                                                        What this tool does is, it dumps your DSDT from your firmware, and then creates SSDTs based off your DSDT. This must be done on the target machine running either Windows or Linux

                                                                        # So what CAN'T SSDTTime do

                                                                        • HEDT SSDTs: +
                                                                          • The ACPI is odd on these platforms so manual work is required
                                                                          • This includes X79, X99 and X299 systems
                                                                          • Prebuilt can be found here: Embedded Controller
                                                                        • Laptop EC fix: +
                                                                          • This is because you do not want the EC powered off
                                                                          • Prebuilt can be found here: Embedded Controller
                                                                        • SSDT-PNLF: +
                                                                          • Need to be configured to your system
                                                                        • SSDT-GPI0: +
                                                                          • Need to be configured to your system
                                                                        • AWAC and RTC0 SSDTs: +
                                                                          • 300 series Intel boards will also need to figure this out (Z390 systems are most common for requiring this but some Gigabyte Z370 do as well)
                                                                        • PMC SSDT: +
                                                                          • For fixing 300 series Intel NVRAM
                                                                          • Prebuilt can be found here: NVRAM PMC
                                                                        • USBX SSDT: +
                                                                          • This is included on sample SSDTs but SSDTTime only makes the SSDT-EC part, Skylake and newer users can grab a pre-built here: SSDT-USBX.aml
                                                                        • RHUB SSDT: +
                                                                          • if you have a 10th gen CPU, you'll need to either use the prebuilt or manually create it.

                                                                        For users who don't have all the options available to them in SSDTTime, you can follow the "SSDTs: The long way" section. You can still use SSDTTime for SSDTs it does support.

                                                                        # Running SSDTTime

                                                                        Run the SSDTTime.bat file as Admin on the target machine and you should see something like this:

                                                                        What are all these options?:

                                                                        • 1. FixHPET - Patch out IRQ Conflicts
                                                                          • IRQ patching, mainly needed for X79, X99 and laptop users(use option C to omit conflicting legacy IRQs)
                                                                        • 2. FakeEC - OS-aware Fake EC
                                                                          • This is the SSDT-EC, required for Catalina users
                                                                        • 3. PluginType - Sets plugin-type = 1 on CPU0/PR00
                                                                          • This is the SSDT-PLUG, for Intel only
                                                                        • 4. Dump DSDT - Automatically dump the system DSDT
                                                                          • Dumps your DSDT from your firmware

                                                                        What we want to do is select option 4. Dump DSDT first, then select the appropriate option(s) for your system.

                                                                        What about USBX?

                                                                        For Skylake and newer plus AMD, you can grab a pre-built file here: SSDT-USBX.aml. This file is plug and play and requires no device configuration, do not use on Broadwell and older.

                                                                        Troubleshooting note: See General Troubleshooting if you're having issues running SSDTTime

                                                                        # Adding to OpenCore

                                                                        Don't forget that SSDTs need to be added to Opencore, reminder that .aml is complied, .dsl is code. Add only the .aml file:

                                                                        • EFI/OC/ACPI
                                                                        • config.plist -> ACPI -> Add

                                                                        Reminder that Cmd/Crtl+R with ProperTree pointed at your OC folder will add all your SSDTs, kexts and .efi drivers to the config for you. Do not add your DSDT to OpenCore, its already in your firmware. If you are unsure what this is referring to, go back to the OpenCore guide and select your config based of the architecture of your CPU.

                                                                        For those who do not yet have a config.plist, you'll want to next head back to your respective OpenCore guides and create the config.plist:

                                                                        Users of FixHPET will also need to merge oc_patches.plist into their config.plist

                                                                        Steps to do this:

                                                                        • Open both files,
                                                                        • Delete the ACPI -> Patch section from config.plist
                                                                        • Copy the ACPI -> Patch section from patches.plist
                                                                        • Paste into where old patches were in config.plist
                                                                        Last Updated: 7/17/2020, 11:04:23 PM
                                                                        + + - diff --git a/ssdt-methods/ssdt-long.html b/ssdt-methods/ssdt-long.html index 3f2b00c..2439560 100644 --- a/ssdt-methods/ssdt-long.html +++ b/ssdt-methods/ssdt-long.html @@ -1,883 +1,56 @@ - - - - - - - SSDTs: Long Way · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + SSDTs: The long way | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                                        -
                                                                        - - - - - - - - -
                                                                        - -
                                                                        - -
                                                                        - - - - - - - - -
                                                                        -
                                                                        - -
                                                                        -
                                                                        - -
                                                                        - -
                                                                        -

                                                                        Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                        -
                                                                        -

                                                                        SSDTs: The long way

                                                                        -

                                                                        Well sadly some things are not handled by SSDTTime, well have no fear as making SSDTs is super easy. The basic process:

                                                                        -
                                                                          -
                                                                        • Dump DSDT(the one SSDTTime did for use will work)
                                                                        • -
                                                                        • Decompile DSDT
                                                                        • -
                                                                        • Make SSDTs based of of it(You'll need either MaciASL or a text editor for this)
                                                                        • -
                                                                        • Compile SSDTs
                                                                        • -
                                                                        -

                                                                        Now continue forth and master the ways of ACPI!

                                                                        - - -
                                                                        - -
                                                                        -
                                                                        -
                                                                        - -

                                                                        results matching ""

                                                                        -
                                                                          - -
                                                                          -
                                                                          - -

                                                                          No results matching ""

                                                                          - -
                                                                          -
                                                                          -
                                                                          - -
                                                                          -
                                                                          - -
                                                                          - - - - - - - - - - - - - - -
                                                                          - - -
                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                                          # SSDTs: The long way

                                                                          Well sadly some things are not handled by SSDTTime, well have no fear as making SSDTs is super easy. The basic process:

                                                                          • Dump DSDT(the one SSDTTime did for use will work)
                                                                          • Decompile DSDT
                                                                          • Make SSDTs based of of it(You'll need either MaciASL or a text editor for this)
                                                                          • Compile SSDTs

                                                                          Now continue forth and master the ways of ACPI!

                                                                          Last Updated: 5/16/2020, 5:36:31 PM
                                                                          + + - diff --git a/ssdt-methods/ssdt-methods.html b/ssdt-methods/ssdt-methods.html index 4a7da8d..36ef580 100644 --- a/ssdt-methods/ssdt-methods.html +++ b/ssdt-methods/ssdt-methods.html @@ -1,890 +1,59 @@ - - - - - - - How to create SSDTs · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + How to create SSDTs | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                                          -
                                                                          - - - - - - - - -
                                                                          - -
                                                                          - -
                                                                          - - - - - - - - -
                                                                          -
                                                                          - -
                                                                          -
                                                                          - -
                                                                          - -
                                                                          -

                                                                          Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                          -
                                                                          -

                                                                          How to create SSDTs

                                                                          -

                                                                          Creating SSDTs mainly fall into 3 camps:

                                                                          -
                                                                            -
                                                                          • Prebuilt SSDTs
                                                                              -
                                                                            • They work but not perfect
                                                                            • -
                                                                            -
                                                                          • -
                                                                          • Automated tools
                                                                              -
                                                                            • Mainly seen with SSDTTime, work much better though can't cover all situations
                                                                            • -
                                                                            -
                                                                          • -
                                                                          • Manually creating them
                                                                              -
                                                                            • Will always work, be much cleaner and get to learn about the process
                                                                            • -
                                                                            -
                                                                          • -
                                                                          - - -
                                                                          - -
                                                                          -
                                                                          -
                                                                          - -

                                                                          results matching ""

                                                                          -
                                                                            - -
                                                                            -
                                                                            - -

                                                                            No results matching ""

                                                                            - -
                                                                            -
                                                                            -
                                                                            - -
                                                                            -
                                                                            - -
                                                                            - - - - - - - - - - - - - - -
                                                                            - - -
                                                                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - diff --git a/ssdt-methods/ssdt-prebuilt.html b/ssdt-methods/ssdt-prebuilt.html index e2a1e81..1a18fee 100644 --- a/ssdt-methods/ssdt-prebuilt.html +++ b/ssdt-methods/ssdt-prebuilt.html @@ -1,1016 +1,59 @@ - - - - - - - SSDTs: Prebuilt · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Pre-Built SSDTs | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                                            -
                                                                            - - - - - - - - -
                                                                            - -
                                                                            - -
                                                                            - - - - - - - - -
                                                                            -
                                                                            - -
                                                                            -
                                                                            - -
                                                                            - -
                                                                            -

                                                                            Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                            -
                                                                            -

                                                                            Pre-Built SSDTs

                                                                            - -

                                                                            This is mainly for users who are having troubles either compiling, decompiling or understanding the overal process of ACPI. The main reasons you'd want to avoid is for the following:

                                                                            -
                                                                              -
                                                                            • Slowing down the boot process
                                                                                -
                                                                              • Mainly because these SSDTs have to go through every possible pathing
                                                                              • -
                                                                              • Fun fact: the prebuilt SSDT-EC-DESKTOP is 42 times larger than making the file yourself
                                                                              • -
                                                                              -
                                                                            • -
                                                                            • Doesn't always work
                                                                                -
                                                                              • The SSDTs provided can only handle so many situations, and some may in fact not work
                                                                              • -
                                                                              • Mainly seen with SSDT-AWAC, as it assumes there is a way the RTC can be easily enabled
                                                                              • -
                                                                              -
                                                                            • -
                                                                            • Teaches nothing
                                                                                -
                                                                              • This is the biggest issue as you have no real idea on how to troubleshoot or how to make these files down the line
                                                                              • -
                                                                              -
                                                                            • -
                                                                            -

                                                                            Please refer to Choosing the SSDTs page for which your system needs.

                                                                            -

                                                                            Power Management

                                                                            -

                                                                            For Haswell and newer:

                                                                            - -

                                                                            For Ivy Bridge and older, see the Optimizing Power Management page. This will be done after install. AMD CPU users do not need any SSDTs for power management.

                                                                            -

                                                                            Embedded Controllers

                                                                            -

                                                                            For desktops:

                                                                            - -

                                                                            For laptops:

                                                                            - -

                                                                            Trackpad

                                                                            -

                                                                            Used for enabling Windows only features in macOS, do note that the below patches will more than likely break Windows booting via OpenCore. I highly encourage you to make one yourself to prevent any issues down the line: Trackpad GPI0

                                                                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                            CommentStringChange _OSI to XOSI
                                                                            EnabledBooleanYES
                                                                            CountNumber0
                                                                            LimitNumber0
                                                                            FindData5f4f5349
                                                                            ReplaceData584f5349
                                                                            -

                                                                            Backlight

                                                                            -

                                                                            For laptops and all-in-one desktops, fixies brightness control support

                                                                            - -

                                                                            System Clock(AWAC)

                                                                            -

                                                                            Mainly needed for newer systems running AWAC based system clocks, mainly relavant for Z390 and newer(Gigabyte and AsRock however did backport it to Z370 with a BIOS update)

                                                                            - -

                                                                            The biggest issue with this prebuilt is that we're just guessing you both have an AWAC clock and that it can be turned off, I highly encourage you to make one yourself to really know whether you both need this and if it's going to work: AWAC vs RTC

                                                                            -

                                                                            NVRAM(PMC)

                                                                            -

                                                                            Needed to bring back NVRAM support for Z390 and newer, DO NOT USE ON Z370 or older

                                                                            -

                                                                            Note: Desktop Z490 boards seem to not need this, though if you're having NVRAM issues you can try this SSDT.

                                                                            - -

                                                                            Reminder only the following need this SSDT:

                                                                            -
                                                                              -
                                                                            • B360
                                                                            • -
                                                                            • B365
                                                                            • -
                                                                            • H310
                                                                            • -
                                                                            • H370
                                                                            • -
                                                                            • Z390
                                                                            • -
                                                                            • 400 series (Comet Lake)
                                                                            • -
                                                                            • 495 series (Icelake)
                                                                            • -
                                                                            -

                                                                            USB(RHUB)

                                                                            -

                                                                            Needed for 10th gen CPUs, Gigabyte and AsRock motherboards don't need this

                                                                            - - - -
                                                                            - -
                                                                            -
                                                                            -
                                                                            - -

                                                                            results matching ""

                                                                            -
                                                                              - -
                                                                              -
                                                                              - -

                                                                              No results matching ""

                                                                              - -
                                                                              -
                                                                              -
                                                                              - -
                                                                              -
                                                                              - -
                                                                              - - - - - - - - - - - - - - -
                                                                              - - -
                                                                              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                                              # Pre-Built SSDTs

                                                                              This is mainly for users who are having troubles either compiling, decompiling or understanding the overal process of ACPI. The main reasons you'd want to avoid is for the following:

                                                                              • Slowing down the boot process +
                                                                                • Mainly because these SSDTs have to go through every possible pathing
                                                                                • Fun fact: the prebuilt SSDT-EC-DESKTOP is 42 times larger than making the file yourself
                                                                              • Doesn't always work +
                                                                                • The SSDTs provided can only handle so many situations, and some may in fact not work
                                                                                • Mainly seen with SSDT-AWAC, as it assumes there is a way the RTC can be easily enabled
                                                                              • Teaches nothing +
                                                                                • This is the biggest issue as you have no real idea on how to troubleshoot or how to make these files down the line

                                                                              Please refer to Choosing the SSDTs page for which your system needs.

                                                                              # Power Management

                                                                              For Haswell and newer:

                                                                              For Ivy Bridge and older, see the Optimizing Power Management page. This will be done after install. AMD CPU users do not need any SSDTs for power management.

                                                                              # Embedded Controllers

                                                                              For desktops:

                                                                              For laptops:

                                                                              # Trackpad

                                                                              Used for enabling Windows only features in macOS, do note that the below patches will more than likely break Windows booting via OpenCore. I highly encourage you to make one yourself to prevent any issues down the line: Trackpad GPI0

                                                                              Comment String Change _OSI to XOSI
                                                                              Enabled Boolean YES
                                                                              Count Number 0
                                                                              Limit Number 0
                                                                              Find Data 5f4f5349
                                                                              Replace Data 584f5349

                                                                              # Backlight

                                                                              For laptops and all-in-one desktops, fixies brightness control support

                                                                              # System Clock(AWAC)

                                                                              Mainly needed for newer systems running AWAC based system clocks, mainly relavant for Z390 and newer(Gigabyte and AsRock however did backport it to Z370 with a BIOS update)

                                                                              The biggest issue with this prebuilt is that we're just guessing you both have an AWAC clock and that it can be turned off, I highly encourage you to make one yourself to really know whether you both need this and if it's going to work: AWAC vs RTC

                                                                              # NVRAM(PMC)

                                                                              Needed to bring back NVRAM support for Z390 and newer, DO NOT USE ON Z370 or older

                                                                              Note: Desktop Z490 boards seem to not need this, though if you're having NVRAM issues you can try this SSDT.

                                                                              Reminder only the following need this SSDT:

                                                                              • B360
                                                                              • B365
                                                                              • H310
                                                                              • H370
                                                                              • Z390
                                                                              • 400 series (Comet Lake)
                                                                              • 495 series (Icelake)

                                                                              # USB(RHUB)

                                                                              Needed for 10th gen CPUs, Gigabyte and AsRock motherboards don't need this

                                                                              Last Updated: 7/17/2020, 11:01:05 PM
                                                                              + + - diff --git a/ssdt-platform.html b/ssdt-platform.html index 28abb7d..4914501 100644 --- a/ssdt-platform.html +++ b/ssdt-platform.html @@ -1,1095 +1,56 @@ - - - - - - - Choosing the SSDTs · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + What SSDTs do each platform need | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                                              -
                                                                              - - - - - - - - -
                                                                              - -
                                                                              - -
                                                                              - - - - - - - - -
                                                                              -
                                                                              - -
                                                                              -
                                                                              - -
                                                                              - -
                                                                              -

                                                                              Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                              -
                                                                              -

                                                                              What SSDTs do each platform need

                                                                              -

                                                                              Please see the specific ACPI section of your config.plist, all SSDTs needed are covered there with a brief explainer. But here's a very quick TL;DR:

                                                                              - -

                                                                              Desktop

                                                                              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                              PlatformsCPUECAWACNVRAMUSB
                                                                              Ivy BridgeCPU-PM (Run in Post-Install)SSDT-ECN/AN/AN/A
                                                                              Ivy Bridge-E
                                                                              Haswell/BroadwellSSDT-PLUG
                                                                              Haswell-E
                                                                              Broadwell-E
                                                                              SkylakeSSDT-EC-USBX
                                                                              Skylake-X
                                                                              Kabylake
                                                                              CoffeeLakeSSDT-AWACSSDT-PMC
                                                                              CometLakeSSDT-RHUB
                                                                              AMD (15/16/17h)N/AN/AN/AN/A
                                                                              -

                                                                              Laptop

                                                                              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                              PlatformsCPUECBacklightI2C TrackpadAWACUSBIRQ
                                                                              Ivy BridgeCPU-PM (Run in Post-Install)SSDT-ECSSDT-PNLFSSDT-GPI0N/AN/AIRQ SSDT
                                                                              HaswellSSDT-PLUG
                                                                              Broadwell
                                                                              SkylakeSSDT-EC-USBXN/A
                                                                              KabyLake
                                                                              CoffeeLake (8th Gen)SSDT-PNLF-CFL
                                                                              CoffeeLake (9th Gen)SSDT-AWAC
                                                                              CometLake
                                                                              IceLakeSSDT-RHUB
                                                                              -

                                                                              SSDT Creation

                                                                              - - -
                                                                              - -
                                                                              -
                                                                              -
                                                                              - -

                                                                              results matching ""

                                                                              -
                                                                                - -
                                                                                -
                                                                                - -

                                                                                No results matching ""

                                                                                - -
                                                                                -
                                                                                -
                                                                                - -
                                                                                -
                                                                                - -
                                                                                - - - - - - - - - - - - - - -
                                                                                - - -
                                                                                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

                                                                                # What SSDTs do each platform need

                                                                                Please see the specific ACPI section of your config.plist, all SSDTs needed are covered there with a brief explainer. But here's a very quick TL;DR:

                                                                                # Desktop

                                                                                Platforms CPU EC AWAC NVRAM USB
                                                                                SandyBridge CPU-PM (Run in Post-Install) SSDT-EC N/A N/A N/A
                                                                                Ivy Bridge N/A N/A N/A
                                                                                Haswell SSDT-PLUG
                                                                                Broadwell
                                                                                Skylake SSDT-EC-USBX
                                                                                Kaby Lake
                                                                                Coffee Lake SSDT-AWAC SSDT-PMC
                                                                                Comet Lake SSDT-RHUB
                                                                                AMD (15/16/17h) N/A N/A N/A N/A

                                                                                # High End Desktop

                                                                                Platforms CPU EC AWAC
                                                                                Ivy Bridge-E SSDT-PLUG SSDT-EC N/A
                                                                                Haswell-E SSDT-EC-USBX
                                                                                Broadwell-E
                                                                                Skylake-X SSDT-AWAC

                                                                                # Laptop

                                                                                Platforms CPU EC Backlight I2C Trackpad AWAC USB IRQ
                                                                                SandyBridge CPU-PM (Run in Post-Install) SSDT-EC SSDT-PNLF SSDT-GPI0 N/A N/A IRQ SSDT
                                                                                Ivy Bridge
                                                                                Haswell SSDT-PLUG
                                                                                Broadwell
                                                                                Skylake SSDT-EC-USBX N/A
                                                                                Kaby Lake
                                                                                Coffee Lake (8th Gen) SSDT-PNLF-CFL
                                                                                Coffee Lake (9th Gen) SSDT-AWAC
                                                                                Comet Lake
                                                                                Ice Lake SSDT-RHUB

                                                                                # SSDT Creation

                                                                                Last Updated: 7/17/2020, 11:01:05 PM
                                                                                + + - diff --git a/styles/website.css b/styles/website.css deleted file mode 100644 index 2ac4460..0000000 --- a/styles/website.css +++ /dev/null @@ -1,74 +0,0 @@ -/* -.book-body { - background: #220036; -} - -.markdown-section { - color: #17154D; -} -*/ - -/* .color-theme-2 #book-search-input { - color: #f4f4f5; - background-color: #252737; -} - -.color-theme-2 .search-results-item { - color: #bdcadb !important; -} */ - -@import url('https://fonts.googleapis.com/css?family=Anonymous+Pro|Roboto&display=swap'); - -.color-theme-2 .dropdown-menu { - background-color: #363b40; -} - -.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner { - border-bottom: 9px solid #363b40; -} - -.book.color-theme-2 .book-body { - color: #ccc; - background: #2d3033; -} - -.book.color-theme-2 .book-body .page-wrapper .page-inner section { - background: #2d3033; -} - -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal { - color: #ccc; -} - -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { - background: #363b40; - border-color: #363b40; -} - -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr { - background-color: #363b40; -} - -.book.color-theme-2 .book-header h1 { - color: #ccc; -} - -.book.color-theme-2 .book-summary { - background: #363b40; -} - -.book.font-family-1, .book.font-family-1 .book-summary { - font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", "Roboto", Helvetica, Arial, sans-serif; -} - -.book.font-family-1 h1, .book.font-family-1 h2, .book.font-family-1 h3 { - font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", "Roboto", Helvetica, Arial, sans-serif; -} - -.markdown-section code, .markdown-section pre { - font-family: "SF Mono", "Anonymous Pro", Consolas, "Liberation Mono", Menlo, Courier, monospace; -} - -.gitbook-link { - display: none !important -} \ No newline at end of file diff --git a/images/troubleshooting-md/decompile-error.png b/troubleshooting-md/decompile-error.png similarity index 100% rename from images/troubleshooting-md/decompile-error.png rename to troubleshooting-md/decompile-error.png diff --git a/images/troubleshooting-md/invalid-parse.png b/troubleshooting-md/invalid-parse.png similarity index 100% rename from images/troubleshooting-md/invalid-parse.png rename to troubleshooting-md/invalid-parse.png diff --git a/troubleshooting.html b/troubleshooting.html index c41acda..2567996 100644 --- a/troubleshooting.html +++ b/troubleshooting.html @@ -1,810 +1,48 @@ - - - - - - - Troubleshooting · GitBook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Troubleshooting | Getting Started With ACPI + + + + - - - - - - - - - - - - - - - - -
                                                                                -
                                                                                - - - - - - - - -
                                                                                - -
                                                                                - -
                                                                                - - - - - - - - -
                                                                                -
                                                                                - -
                                                                                -
                                                                                - -
                                                                                - -
                                                                                -

                                                                                Last modified: Sun Jul 12 2020 22:20:55 GMT+0000 (Coordinated Universal Time)

                                                                                -
                                                                                -

                                                                                Troubleshooting

                                                                                - -

                                                                                Fixing SSDTTime: Could not locate or download iasl!

                                                                                -

                                                                                This is usually due to an outdated version of Python, try either updating Python or add iasl to the scripts folder for SSDTTime:

                                                                                - -

                                                                                Can't run acpidump.efi from OpenCore

                                                                                -

                                                                                Grab OpenShell and add it to EFI/OC/Tools and config.plist -> Misc -> Tools.

                                                                                -

                                                                                Next, call upon OpenCore shell and enter the following:

                                                                                -
                                                                                shell> fs0: //replace with proper drive
                                                                                +    
                                                                                +    
                                                                                +  
                                                                                +  
                                                                                +    

                                                                                # Troubleshooting

                                                                                # Fixing SSDTTime: Could not locate or download iasl!

                                                                                This is usually due to an outdated version of Python, try either updating Python or add iasl to the scripts folder for SSDTTime:

                                                                                # Can't run acpidump.efi from OpenCore

                                                                                Grab OpenShell and add it to EFI/OC/Tools and config.plist -> Misc -> Tools.

                                                                                Next, call upon OpenCore shell and enter the following:

                                                                                shell> fs0: //replace with proper drive
                                                                                 
                                                                                 fs0:\> dir //to verify this is the right directory
                                                                                 
                                                                                @@ -815,111 +53,20 @@ fs0:\> dir //to verify this is the right directory
                                                                                 fs0:\> cd EFI\OC\Tools //note that its with forward slashes
                                                                                 
                                                                                 fs0:\EFI\OC\Tools> acpidump.efi -b -n DSDT -z
                                                                                -
                                                                                -

                                                                                iASL warning, # unresolved

                                                                                -

                                                                                If you try to decompile your DSDT and get an error similar to this:

                                                                                -
                                                                                iASL Warning: There were 19 external control methods found during disassembly, but only 0 were resolved (19 unresolved)
                                                                                -
                                                                                -

                                                                                This happens when one ACPI table requires the rest for proper referencing, it does not accept the creation of DSDTs as we're only using it for creating a select few SSDTs. For those who are worried, you can run the following:

                                                                                -
                                                                                iasl * [insert all ACPI files here]
                                                                                -
                                                                                -

                                                                                Decompiling Error

                                                                                -

                                                                                -
                                                                                Loading Acpi table from file iASLAwjHrs.aml
                                                                                +

                                                                                # iASL warning, # unresolved

                                                                                If you try to decompile your DSDT and get an error similar to this:

                                                                                iASL Warning: There were 19 external control methods found during disassembly, but only 0 were resolved (19 unresolved)
                                                                                +

                                                                                This happens when one ACPI table requires the rest for proper referencing, it does not accept the creation of DSDTs as we're only using it for creating a select few SSDTs. For those who are worried, you can run the following:

                                                                                iasl * [insert all ACPI files here]
                                                                                +

                                                                                # Decompiling Error

                                                                                Loading Acpi table from file iASLAwjHrs.aml
                                                                                 Acpi table [DSDT] successfully installed and loaded
                                                                                 Pass 1 parse of [DSDT]
                                                                                -
                                                                                -

                                                                                This is a common error on DSDTs that have methods that aren't supported by maciASL, the easiest way is to delete maciASL and make sure you grab it from Acidanthera's repo: maciASL

                                                                                -

                                                                                Invalid character (0x3D), expecting ASL keyword or name

                                                                                -

                                                                                -

                                                                                Similar to the above error, you're running an outdated copy of maciASL. Make sure you're using the latest from Acidanthera's repo: maciASL

                                                                                -

                                                                                Syntax error, unexpected PARSEOP_ONE, expecting '('

                                                                                -

                                                                                -

                                                                                Similar to the above 2 errors, you're running an outdated copy of maciASL. Make sure you're using the latest from Acidanthera's repo: maciASL

                                                                                - - -
                                                                                - -
                                                                                -
                                                                                -
                                                                                - -

                                                                                results matching ""

                                                                                -
                                                                                  - -
                                                                                  -
                                                                                  - -

                                                                                  No results matching ""

                                                                                  - -
                                                                                  -
                                                                                  -
                                                                                  - -
                                                                                  -
                                                                                  - -
                                                                                  - - - - - - - - - - - - - - -
                                                                                  - - -
                                                                                  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

                                                                                  This is a common error on DSDTs that have methods that aren't supported by maciASL, the easiest way is to delete maciASL and make sure you grab it from Acidanthera's repo: maciASL

                                                                                  # Invalid character (0x3D), expecting ASL keyword or name

                                                                                  Similar to the above error, you're running an outdated copy of maciASL. Make sure you're using the latest from Acidanthera's repo: maciASL

                                                                                  # Syntax error, unexpected PARSEOP_ONE, expecting '('

                                                                                  Similar to the above 2 errors, you're running an outdated copy of maciASL. Make sure you're using the latest from Acidanthera's repo: maciASL

                                                                                  Last Updated: 7/17/2020, 9:01:14 PM
                                                                                  + + -