<?xml version="1.0"?>
<rss version="2.0"><channel><title><![CDATA[FAQs & Tutorials Latest Topics]]></title><link>https://osxlatitude.com/forums/forum/161-faqs-tutorials/</link><description><![CDATA[FAQs & Tutorials Latest Topics]]></description><language>en</language><item><title>How do I disable GateKeeper to allow all apps to run in Sierra and later (up to Sonoma)?</title><link>https://osxlatitude.com/forums/topic/9964-how-do-i-disable-gatekeeper-to-allow-all-apps-to-run-in-sierra-and-later-up-to-sonoma/</link><description><![CDATA[<p>
	macOS Sierra and later no longer allow all apps to run by default. Instead, GateKeeper protection was beefed up and it now limits execution to apps downloaded from AppStore or AppStore &amp; identified developers.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="14317" href="https://osxlatitude.com/uploads/monthly_08_2017/post-4953-0-90931800-1502274661.png" rel=""><img alt="spctl_master_enabled.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14317" data-ratio="85.75" style="height: auto;" width="400" data-src="https://osxlatitude.com/uploads/monthly_08_2017/post-4953-0-90931800-1502274661_thumb.png" src="https://osxlatitude.com/applications/core/interface/js/spacer.png"></a>
</p>

<p>
	 
</p>

<p>
	As such, some downloaded apps cannot be executed without triggering a warning and users may have to go to the <em><strong>Security &amp; Privacy</strong></em> PrefPane to allow the app to run.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="14320" href="https://osxlatitude.com/uploads/monthly_08_2017/post-4953-0-02365700-1502275568.png" rel=""><img alt="denied_app.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14320" data-ratio="31.25" style="height: auto;" width="400" data-src="https://osxlatitude.com/uploads/monthly_08_2017/post-4953-0-02365700-1502275568_thumb.png" src="https://osxlatitude.com/applications/core/interface/js/spacer.png"></a>
</p>

<p>
	 
</p>

<p>
	To change his and allow execution of all downloaded apps by default, type the following <strong>Terminal</strong> command:
</p>

<pre class="ipsCode prettyprint prettyprinted" style=""><span class="pln">sudo spctl  </span><span class="pun">--</span><span class="pln">master</span><span class="pun">-</span><span class="pln">disable</span></pre>

<p>
	<span>The restriction will then be lifted and all downloaded apps will be allowed to run.</span>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="14318" href="https://osxlatitude.com/uploads/monthly_08_2017/post-4953-0-81899000-1502274667.png" rel=""><img alt="spctl_master_disabled.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14318" data-ratio="85.75" style="height: auto;" width="400" data-src="https://osxlatitude.com/uploads/monthly_08_2017/post-4953-0-81899000-1502274667_thumb.png" src="https://osxlatitude.com/applications/core/interface/js/spacer.png"></a>
</p>

<p>
	 
</p>

<p>
	I believe this info was 1st reported <span ipsnoautolink="true">by Netkas</span>.
</p>
]]></description><guid isPermaLink="false">9964</guid><pubDate>Wed, 09 Aug 2017 10:26:13 +0000</pubDate></item><item><title>How do I grab my screen's EDID information?</title><link>https://osxlatitude.com/forums/topic/18095-how-do-i-grab-my-screens-edid-information/</link><description><![CDATA[<p>
	We still get the question regularly so a FAQ topic seems appropriate...
</p>

<p>
	 
</p>

<p>
	Injecting a laptop built-in screen's EDID information in OS X/macOS is sometimes required when the freshly installed OS does not display the desktop properly on screen due to incorrect detection of the screen's hardware properties/capabilities (frequencies, size, etc.). The following describes one easy way to collect a screen's EDID info through an off-the-shelf Windows app but they're are several other methods too (see this somehow complicated method in <a href="https://osxlatitude.com/forums/topic/10236-how-to-fix-black-screen-in-high-sierra" rel="">this deprecated thread</a> for instance):
</p>

<p>
	 
</p>

<p>
	I can recommend <a href="https://www.entechtaiwan.com/util/moninfo.shtm" rel="external nofollow">Monitor Asset Manager</a>. I've used it several times in the past. Very simple to use and works without failure.
</p>

<p>
	 
</p>

<p>
	You'll get the EDID info at the very bottom of the application's main window where it is displayed as a long string of comma separated hexadecimal values. This is what you need to collect and edit to remove all commas and spaces. You may then inject the resulting raw long string of hexadecimal characters as device property in the iGPU settings of your bootloader's config:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8557_11" style=""><span class="pln">AAPL00,override-no-connect        </span><span class="tag">&lt;EDID</span><span class="atv">'s hexadecimal string&gt;</span><span class="pln">        DATA</span></pre>

<p>
	 
</p>

<p>
	See the <a href="https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md" rel="external nofollow">WEG User Manual</a> for reference
</p>
]]></description><guid isPermaLink="false">18095</guid><pubDate>Fri, 17 Feb 2023 03:16:15 +0000</pubDate></item><item><title>DVMT/stolenmem/fbmem/cursormem, why do we patch these for Broadwell and later?</title><link>https://osxlatitude.com/forums/topic/17804-dvmtstolenmemfbmemcursormem-why-do-we-patch-these-for-broadwell-and-later/</link><description><![CDATA[<p>
	<u><strong>NB:</strong></u> This is a revival of the article I had initially published at InsanelyMac to answer recurring questions that had been raised in the Opencore thread that lives there.
</p>

<p>
	 
</p>

<p>
	Posted October 2, 2021
</p>

<p>
	 
</p>

<p>
	The Dortania documentation refers to the DVMT pre-allocated memory or "stolen memory" when they mention "<em>memory reserved for the iGPU</em>". Years ago, @Firewolf described in details the relationship between stolen memory and DVMT pre-allocated memory on his blog:
</p>

<p>
	<a href="https://www.firewolf.science/2015/04/guide-intel-hd-graphics-5500-on-os-x-yosemite-10-10-3/" ipsnoembed="false" rel="external nofollow">https://www.firewolf.science/2015/04/guide-intel-hd-graphics-5500-on-os-x-yosemite-10-10-3/</a>
</p>

<p>
	 
</p>

<p>
	There's a more recent thread from him here:
</p>

<p>
	<a href="https://www.insanelymac.com/forum/topic/345377-surface-pro-patch-the-framebuffer-properly-to-get-rid-of-the-dvmt-assertion-patch/" ipsnoembed="false" rel="external nofollow">https://www.insanelymac.com/forum/topic/345377-surface-pro-patch-the-framebuffer-properly-to-get-rid-of-the-dvmt-assertion-patch/</a>
</p>

<p>
	 
</p>

<p>
	It can be difficult to understand and differentiate DVMT pre-allocated memory, stolen memory, framebuffer memory, cursor memory, framebuffer size, cursor bytes, etc. And all of these have got nothing to do with VRAM of course... Some of us are familiar with the information provided by @Pike R Alpha many moons ago, the <a href="https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md" rel="external nofollow">WhateverGreen User Manual</a> or the <strong>Hackintool</strong> app though none of those clearly define what the various memory instances are. Several years ago, @Rehabman also attempted to explain this and his writings somehow collided with most people's comprehension of things. For instance, when @Pike, WhateverGreen or <strong>Hackintool</strong> refer to stolenmem and fbmem, @Rehabman spoke of framebuffer memory size and cursor bytes. In the case of the Haswell Azul framebuffer layouts, @Rehabman also spoke of the DVMT pre-alloc requirements when the others speak of stolenmem. Inevitably, this can lead to confusion...
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><u><strong>Definitions:</strong></u></span>
</p>

<p>
	See wikipedia and Google searches.
</p>

<ul>
	<li>
		VRAM = Video RAM. Common definition is that it stores the pixels and other graphics data rendered on a computer screen.
	</li>
	<li>
		DVMT = Dynamic Video Memory Technology. A technology used by Intel to dynamically allocate system memory to use as video memory to handle graphics. DVMT pre-allocated memory is the minimum amount, in multiples of 32MB, that will be allocated to the iGPU for handling graphics. By far and large, manufacturers set this to 32MB by default in BIOS (or certainly used to).
	</li>
	<li>
		Framebuffer = a memory buffer held in RAM and containing a bitmap of a video frame, i.e. all the data related to the pixels of an image to be displayed on screen (eg: colours, resolution, etc.).
	</li>
	<li>
		Stolen memory = basically, this is the same as the DVMT pre-allocated memory.
	</li>
</ul>

<p>
	As far as Apple's framebuffer drivers/kexts are concerned:
</p>

<ul>
	<li>
		framebuffer size (aka <em><strong>stolenmem</strong></em> for WhateverGreen<span style="color:#3498db;"><strong>*</strong></span>) = the size, in bytes, of a framebuffer layout (it may change according to image characteristics), as defined in the driver/kext.
	</li>
	<li>
		cursor bytes (aka <em><strong>fbmem</strong></em> for WhateverGreen<span style="color:#3498db;"><strong>*</strong></span>) = the size, in bytes, of a framebuffer layout's overlay used for handling mouse cursor (without modifying the framebuffer's data), as defined in the driver/kext.
	</li>
	<li>
		framebuffer VRAM (aka <em><strong>unifiedmem</strong></em> for WhateverGreen) = the max. amount, in bytes, of VRAM allocated by a framebuffer layout, as defined in the driver/kext (since Haswell and Yosemite, this usually is 1536MB).
	</li>
</ul>

<p>
	<span style="color:#3498db;"><strong>*</strong></span> As stated above, I believe that Whatevergreen only got it right for Haswell Azul framebuffer layouts with which stolenmem, fbmem and cursormem match their target. Thereafter, I'm of the opinion that WhateverGreen used incorrect names where stolenmem means the actual framebuffer size and fbmem means the actual cursor bytes (size), as stated by @Rehabman.
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><u><strong>Mac OS X/OS X/macOS graphics framebuffers:</strong></u></span>
</p>

<p>
	Let's start by looking at a few examples as illustrated in the <span ipsnoautolink="true">WhateverGreen User Manual</span>.
</p>

<p>
	 
</p>

<p>
	1) Haswell Azul mobile framebuffer 0x0a260006 (used for HD4200/HD4400/HD4600 iGPUs on laptops):
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_4" style=""><span class="pln">ID: 0A260006, STOLEN: 32 MB, FBMEM: 19 MB, VRAM: 1536 MB, Flags: 0x0000000F
TOTAL STOLEN: 52 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 116 MB, MAX OVERALL: 117 MB (123219968 bytes)
Camellia: CamelliaDisabled (0), Freq: 2777 Hz, FreqMax: 2777 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000030 - ConnectorLVDS
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000087 - ConnectorDP
[2] busId: 0x04, pipe: 9, type: 0x00000400, flags: 0x00000087 - ConnectorDP
00000800 02000000 30000000
01050900 00040000 87000000
02040900 00040000 87000000</span></pre>

<p>
	If we look inside the binary code of the Haswell Azul framebuffer kext, we'll find:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_6" style=""><span class="pln">0600260A 01030303 00000002 00003001
00006000 00000060 D90A0000 D90A0000
00000000 00000000 00000800 02000000
30000000 01050900 00040000 87000000
02040900 00040000 87000000 FF000000
01000000 40000000 0F000000 01010000
04000000 00000000 0E000000 00000000</span></pre>

<p>
	which translates to:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_8" style=""><span class="pln">0600260A                    -&gt; layout id       (AAPL,ig-platform-id)
01                          -&gt; mobile type     (framebuffer-mobile) 
03                          -&gt; 3 x pipes       (framebuffer-pipecount)
03                          -&gt; 3 x ports       (framebuffer-portcount)
03                          -&gt; 3 x memories    (framebuffer-memorycount)
00000002                    -&gt; 32MB stolen mem (framebuffer-stolenmem)      // Rehabman's DVMT-prealloc requirement
00003001                    -&gt; 19MB FB mem     (framebuffer-fbmem)          // Rehabman's framebuffer size
00006000                    -&gt; 6MB Cursor mem  (framebuffer-cursormem)      // Rehabman's cursor bytes
00000060                    -&gt; 1536MB VRAM     (framebuffer-unifiedmem)
D90A0000                    -&gt; Backlight freq 2777MHz
D90A0000                    -&gt; Max. backlight freq 2777MHz
00000000 00000000
00000800 02000000 30000000  -&gt; port #1/FB@0: index 00, busid 00, pipe 0800, type 02000000=LVDS/eDP (framebuffer-con0-type), flags 30020000
01050900 00040000 87000000  -&gt; port #2/FB@1: index 01, busid 05, pipe 0900, type 00040000=DP       (framebuffer-con1-type), flags 87000000
02040900 00040000 87000000  -&gt; port #3/FB@2: index 02, busid 04, pipe 0900, type 00040000=DP       (framebuffer-con2-type), flags 87000000
FF000000 01000000 40000000 0F000000
01010000 04000000 00000000 0E000000
00000000</span></pre>

<p>
	 
</p>

<p>
	2) Broadwell BDW mobile framebuffer 0x1626006 (used for HD5300/HD5500/HD5600 iGPUs on laptops):
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_10" style=""><span class="pln">ID: 16260006, STOLEN: 34 MB, FBMEM: 21 MB, VRAM: 1536 MB, Flags: 0x00000B0B
TOTAL STOLEN: 56 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 124 MB, MAX OVERALL: 125 MB (131608576 bytes)
Camellia: CamelliaDisabled (0), Freq: 2777 Hz, FreqMax: 2777 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000230 - ConnectorLVDS
[1] busId: 0x05, pipe: 11, type: 0x00000400, flags: 0x00000507 - ConnectorDP
[2] busId: 0x04, pipe: 11, type: 0x00000400, flags: 0x00000507 - ConnectorDP
00000800 02000000 30020000
01050B00 00040000 07050000
02040B00 00040000 07050000</span></pre>

<p>
	If we look inside the binary code of the Broadwell BDW framebuffer kext, we'll find:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_12" style=""><span class="pln">06002616 01030303 00002002 00005001
00000060 D90A0000 D90A0000 00000000
00000000 00000000 00000800 02000000
30020000 01050B00 00040000 07050000
02040B00 00040000 07050000 FF000000
01000000 40000000 0B0B0000 01010500
00000000 05000000 00000000 04000000
00000000 00000000 00000000 00000000
00000000 C8000000</span></pre>

<p>
	which translates to:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_14" style=""><span class="pln">06002616                    -&gt; layout id       (AAPL,ig-platform-id)
01                          -&gt; mobile type     (framebuffer-mobile) 
03                          -&gt; 3 x pipes       (framebuffer-pipecount)
03                          -&gt; 3 x ports       (framebuffer-portcount)
03                          -&gt; 3 x memories    (framebuffer-memorycount)
00002002                    -&gt; 34MB stolen mem (framebuffer-stolenmem)     // Rehabman's framebuffer size
00005001                    -&gt; 21MB FB mem     (framebuffer-fbmem)         // Rehabman's cursor bytes
00000060                    -&gt; 1536MB VRAM     (framebuffer-unifiedmem)
D90A0000                    -&gt; Backlight freq 2777MHz
D90A0000                    -&gt; Max. backlight freq 2777MHz
00000000 00000000 00000000
00000800 02000000 30020000  -&gt; port #1/FB@0: index 00, busid 00, pipe 0800, type 02000000=LVDS/eDP (framebuffer-con0-type), flags 30020000
01050B00 00040000 07050000  -&gt; port #2/FB@1: index 01, busid 05, pipe 0B00, type 00040000=DP       (framebuffer-con1-type), flags 07050000
02040B00 00040000 07050000  -&gt; port #3/FB@2: index 02, busid 04, pipe 0B00, type 00040000=DP       (framebuffer-con2-type), flags 07050000
FF000000 01000000 40000000 0B0B0000
01010500 00000000 05000000 00000000
04000000 00000000 00000000 00000000
00000000 00000000 C8000000</span></pre>

<p>
	 
</p>

<p>
	3) Skylake SKL mobile framebuffer 0x19160000 (used for HD520/HD530/HD540 iGPU on laptops):
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_16" style=""><span class="pln">ID: 19160000, STOLEN: 34 MB, FBMEM: 21 MB, VRAM: 1536 MB, Flags: 0x0000090F
TOTAL STOLEN: 56 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 124 MB, MAX OVERALL: 125 MB (131608576 bytes)
Model name: Intel HD Graphics SKL CRB
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
00000800 02000000 98000000
01050900 00040000 87010000
02040A00 00040000 87010000</span></pre>

<p>
	We can't look at the binary code of the Skylake SKL framebuffer because Apple changed the way things are coded inside but it basically translates as follows:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_18" style=""><span class="pln">00001619                    -&gt; layout id       (AAPL,ig-platform-id)
01                          -&gt; mobile type     (framebuffer-mobile) 
03                          -&gt; 3 x pipes       (framebuffer-pipecount)
03                          -&gt; 3 x ports       (framebuffer-portcount)
03                          -&gt; 3 x memories    (framebuffer-memorycount)
00002002                    -&gt; 34MB stolen mem (framebuffer-stolenmem)     // Rehabman's framebuffer size
00005001                    -&gt; 21MB FB mem     (framebuffer-fbmem)         // Rehabman's cursor bytes
00000060                    -&gt; 1536MB VRAM     (framebuffer-unifiedmem)
6C050000                    -&gt; Backlight freq 1388MHz
6C050000                    -&gt; Max. backlight freq 1388MHz

00000800 02000000 98000000  -&gt; port #1/FB@0: index 00, busid 00, pipe 0800, type 02000000=LVDS/eDP (framebuffer-con0-type), flags 98000000
01050900 00040000 87010000  -&gt; port #2/FB@1: index 01, busid 05, pipe 0900, type 00040000=DP       (framebuffer-con1-type), flags 87010000
02040a00 00040000 87010000  -&gt; port #3/FB@2: index 02, busid 04, pipe 0a00, type 00040000=DP       (framebuffer-con2-type), flags 87010000</span></pre>

<p>
	 
</p>

<p>
	With the exception of the Haswell Azul framebuffer, we can see that Broadwell BDW and Skylake SKL framebuffers define framebuffer size (WEG's stolenmem) and cursor bytes (WEG's fbmem) characteristics and no DVMT pre-allocated memory (i.e. proper stolen memory). This extends to Kaby Lake KBL framebuffers and later. In my opinion, it's fair to say that @Rehabman's description and wording are the most appropriate/best ones when the WEG view of things got somehow misled by following through on the Haswell framebuffer decoding. To me, there was some mixup, leading to confusion and the said confusion has remained ever since...
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><u><strong>Confusion... why?</strong></u></span>
</p>

<p>
	Because of several things:
</p>

<p>
	 
</p>

<p>
	1) the observation that the Haswell Azul framebuffers used on Hacks (0x0D220003 for desktops and 0x0A260006 for laptops) defined:
</p>

<ul>
	<li>
		a DVMT pre-allocated memory (= Stolen memory) size of 32MB
	</li>
	<li>
		a framebuffer size of 19MB
	</li>
	<li>
		a cursor bytes of 0MB (desktops) and 6MB (laptops; required to be increased to 9MB to fix a minor graphics glitch on some systems)
	</li>
</ul>

<p>
	2) the observation that the Broadwell BDW framebuffers used on Hacks (0x16220007 for desktops and 0x16160006 for laptops) defined:
</p>

<ul>
	<li>
		no DVMT pre-allocated memory requirement at all
	</li>
	<li>
		framebuffer sizes of 38MB and 34MB respectively
	</li>
	<li>
		cursor bytes of 38MB and 21MB respectively
	</li>
</ul>

<p>
	3) <strong>the observation that the sum of framebuffer size + cursor bytes must be lower than the size of the DVMT pre-allocated memory, failing which a KP occurs at graphics initialisation during startup/boot.</strong>
</p>

<p>
	 
</p>

<p>
	4) In the case of the Haswell Azul framebuffers:
</p>

<ol>
	<li>
		DVMT pre-allocated memory requirement is set at 32MB
	</li>
	<li>
		framebuffer size + cursor bytes = 19+0 | 19+6 (or 19+9) = 19MB | 25MB (or 28MB) which is lower than DVMT pre-allocated memory 32MB
	</li>
</ol>

<p>
	-&gt; All is Ok by default.
</p>

<p>
	 
</p>

<p>
	5) In the case of the Broadwell BDW framebuffers:
</p>

<ol>
	<li>
		framebuffer size + cursor bytes for desktops = 38+38 = 76MB which is greater than the usual/default 32MB DVMT pre-allocated memory of most desktops, unless adjusted in BIOS
	</li>
	<li>
		framebuffer size + cursor bytes for laptops = 34+21 = 55MB which is greater than the usual/default 32MB DVMT pre-allocated memory of most laptops, unless adjusted in BIOS
	</li>
</ol>

<p>
	-&gt; Not Ok by default, Kernel Panic (KP) encountered.
</p>

<p>
	 
</p>

<p>
	6) And the story is the same with subsequent Skylake, Kaby Lake, etc. framebuffers.
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><u><strong>Solution:</strong></u></span>
</p>

<p>
	2 x solutions were engineered to address the issue of KP at graphics initialisation.
</p>

<ol>
	<li>
		increase the DVMT pre-allocated memory set in BIOS. Could be complicated and tricky for PCs that do not offer this in BIOS Setup but made easy with Grub Shell if DVMT pre-allocated memory can be identified in BIOS. This method is usually required to gain 4K output.
	</li>
	<li>
		patch the Broadwell, Skylake, Kaby Lake, etc. framebuffer layouts to reduce framebuffer size and cursor bytes so that the sum of them totals less than the usual default DVMT pre-allocated memory of 32MB. This solution does not usually support 4K output.
	</li>
</ol>

<p>
	Although some people do opt for the 1st solution, most people just adopt the 2nd one.
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><u><strong>How were the framebuffer patches derived?</strong></u></span>
</p>

<p>
	If we look at the framebuffer patches that are commonly and generally used, we can observe that they set:
</p>

<ul>
	<li>
		WEG's framebuffer-stolenmem property , i.e. framebuffer size to 0x01300000 = 19MB (DATA type set to 00003001)
	</li>
	<li>
		WEG's framebuffer-fbmem property, i.e. cursor bytes to 0x00900000 = 9MB (DATA type set to 00009000)
	</li>
</ul>

<p>
	i.e. the values typically used on laptops with Haswell iGPUs, this simply because 19+9=28MB which is &lt; 32MB. This is where it all appears to come from.
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><u><strong>Is this correct?</strong></u></span>
</p>

<p>
	By far and large, it is.
</p>

<p>
	 
</p>

<p>
	But the need to apply such framebuffer patches depends entirely on the host PC's default DVMT pre-allocated memory. On desktop and laptop PCs where DVMT pre-allocated memory can be adjusted in BIOS setup, the patches are unnecessary as long as the DVMT value that is set exceeds the total of the framebuffer size + cursor bytes of the selected/target graphics framebuffer. Typically, a value of 64MB or 96MB takes care of things perfectly, including 4K. Of course, those PCs manufactured with default DVMT pre-allocated memory set to 64MB or more are unlikely to encounter any issue at all.
</p>

<p>
	 
</p>

<p>
	The framebuffer patches are also unnecessary if the default DVMT pre-allocated memory is increased either though BIOS binmod (difficult and risky) or through Grub shell mod (easy and quickly reversible). This is well illustrated on @Firewolf's blog, linked above (there are other places too such as <span>@</span>Jake Lo's <strong><em>FAQ</em></strong> item here). To give an example, on some Dell laptops (eg. Broadwell Latitude E7x50 or Skylake Latitude E7x70), DVMT pre-allocated memory can be increased by booting a Grub shell and entering the following command:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3960_20" style=""><span class="pln">setup_var 0x432 0x3</span></pre>

<p>
	This sets DVMT pre-allocated memory parameter located at offset 0x432 to 96MB (0x1 for 32MB, 0x2 for 64MB, 0x3 for 96MB, etc.), the default setting for the laptop in this example being 32MB. This setting will remain valid/in place until BIOS is reset to default settings. It's required to obtain 4K output out of DP/HDMI. Of course, different computers will have different locations/offsets for DVMT pre-allocated memory.
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><u><strong>What should I do then?</strong></u></span>
</p>

<p>
	As stated above, the framebuffer patches apply to most if not all cases. But not for 4K output. Those who feel adventurous or who are computing-literate may opt for the BIOS adjustment alternative. In all cases, the 1st thing to do is to look at the default framebuffer size and cursor bytes settings of the targeted graphics framebuffer, then decide if the sum of them both fits or not in 32MB or any other value set in BIOS for DVMT pre-allocated memory.
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><u><strong>Can I use different values?</strong></u></span>
</p>

<p>
	Absolutely! As long as the golden rule is respected: <strong>framebuffer size + cursor bytes &lt; DVMT pre-alloc mem</strong> or, in WEG's conventions, <strong>stolenmem + fbmem &lt; DVMT pre-alloc mem.</strong>
</p>

<p>
	 
</p>

<p>
	To give a practical example, I experimented on my Skylake/HD520 Dell Latitude E7270 Hackintosh laptop:
</p>

<ul>
	<li>
		default DVMT pre-allocated memory value set in BIOS: 32MB
	</li>
	<li>
		target SKL framebuffer layout: 0x19160000
	</li>
	<li>
		default framebuffer size: 34MB
	</li>
	<li>
		default cursor bytes: 21MB
	</li>
	<li>
		sum of framebuffer size + cursor bytes: 55MB (i.e. &gt; 32MB)
	</li>
</ul>

<ol>
	<li>
		Booting with default DVMT pre-alloc mem + no framebuffer patches -&gt; KP/freeze
	</li>
	<li>
		Booting with default DVMT pre-alloc mem + framebuffer size 20MB + cursor bytes 12MB -&gt; KP
	</li>
	<li>
		Booting with default DVMT pre-alloc mem + framebuffer size 19MB + cursor bytes 9MB -&gt; Ok, full graphics acceleration, no 4K output
	</li>
	<li>
		Booting with default DVMT pre-alloc mem + framebuffer size 20MB + cursor bytes 10MB -&gt; Ok, full graphics acceleration, no 4K output
	</li>
	<li>
		Booting with DVMT pre-alloc mem set to 64MB (Grub shell) + no framebuffer patches -&gt; Ok, full graphics acceleration + 4K output
	</li>
	<li>
		Booting with DVMT pre-alloc mem set to 96MB (Grub shell) + no framebuffer patches -&gt; Ok, full graphics acceleration + 4K output
	</li>
</ol>
]]></description><guid isPermaLink="false">17804</guid><pubDate>Sat, 31 Dec 2022 11:44:13 +0000</pubDate></item><item><title><![CDATA[How do I repair permissions and rebuild the cache in Big Sur & later?]]></title><link>https://osxlatitude.com/forums/topic/14441-how-do-i-repair-permissions-and-rebuild-the-cache-in-big-sur-later/</link><description><![CDATA[
<p>
	Big Sur brought significant changes to the way kexts operate with the kernel and further tightened filesystem protection. It's now most difficult for anyone to make any changes to <span style="color:#2980b9;"><em><strong>/S/L/E</strong></em></span> folder. As such, kexts should be considered cacheable only from <span style="color:#2980b9;"><em><strong>/L/E</strong></em></span>.
</p>

<p>
	 
</p>

<p>
	To repair permissions after any any kext addition, removal or modification in <span style="color:#2980b9;"><em><strong>/L/E</strong></em></span>, type the following <strong>Terminal</strong> commands:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1471_9" style="">
<span class="pln">sudo chmod -Rf 755 /L*/E*
sudo chown -Rf 0:0 /L*/E*
sudo touch -f /L*/E*</span></pre>

<p>
	`
</p>

<p>
	To rebuild the cache, type the following <strong>Terminal</strong> commands
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_85_13" style="">
<span class="pln">sudo kextcache -i /          -&gt; will invoke the required kmutil command
sudo kcditto</span></pre>

<p>
	 
</p>

<p>
	For additional information on the commands:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_85_15" style="">
<span class="pln">man kmutil
man kcditto</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">14441</guid><pubDate>Mon, 30 Nov 2020 14:09:29 +0000</pubDate></item><item><title>How do I disable SIP (System Integrity Protection)?</title><link>https://osxlatitude.com/forums/topic/11553-how-do-i-disable-sip-system-integrity-protection/</link><description><![CDATA[<p>
	Back in 2015 , when Apple introduced SIP protection in El Capitan, I quickly had a look at the <a href="https://osxlatitude.com/forums/topic/8139-complete-set-of-files-cloverenoch-for-el-capitansierra/?do=findComment&amp;comment=53018" rel="">SIP settings and associated CsrActiveConfig 8bit values in Enoch</a>:
</p>

<pre class="ipsCode" id="ips_uid_8329_6">
nibble:    4   3   2   1   |   4   3   2   1
bits:      -   -   -   -   |   -   -   -   -
           |   |   |   |       |   |   |   |
           |   |   |   |       |   |   |   |
           |   |   |   |       |   |   |   |
          /    |   |   |       |   |   |    \
Dev. Prot.    /    |   |       |   |    \    Kext Sig.
  NVRAM Prot.     /    |       |    \    FS Prot.
     DTrace Prot.     /         \    Task Prot.
           Apple Int.            Kernel Debug.</pre>

<p>
	 
</p>

<p>
	Source: csr.h (in bsd/sys folder) of 10.11's published XNU source code at <a href="https://opensource.apple.com/" ipsnoembed="true" rel="external nofollow">https://opensource.apple.com/</a>
</p>

<p>
	 
</p>

<p>
	On the basis/assumption that Apple Internal &amp; Device Configuration could be kept disabled by default (bit set to 0), CsrActiveConfig could be set to:
</p>

<ul>
	<li>
		0000 0011 in binary, i.e. 0x03 (3 in decimal) to disable kext signing and filesystem protection
	</li>
	<li>
		0110 0011 or 0110 1111 in binary, i.e. 0x63 or 0x6F (103 or 111 in decimal) to disable all protections that mattered
	</li>
</ul>

<p>
	<br>
	If I booted Enoch in verbose mode with CsrActiveConfig=103 (i.e. 0x63), the displayed info showed:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2838_5">
<span class="pln">System Integrity Protection status: enabled (Custom Configuration).

Configuration:
Apple Internal: disabled
Kext Signing: disabled
Filesystem Protections: disabled
Debugging Restrictions: disabled
DTrace Restrictions: disabled
NVRAM Protections: disabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.</span></pre>

<p>
	 
</p>

<p>
	At time of writing, in the days of Clover and Catalina, most people still use CsrActiveConfig 0x63 and that's fine. But there are also more flags to control SIP than there used to be in El Capitan:
</p>

<ul>
	<li>
		Sierra added a 9th flag for <em><strong>Any Recovery OS</strong></em>
	</li>
	<li>
		High Sierra added a 10th flag for <em><strong>Unapproved Kexts</strong></em>
	</li>
	<li>
		Mojave added an 11th flag for <em><strong>Executable Policy Override</strong></em>
	</li>
</ul>

<p>
	 
</p>

<p>
	SIP is therefore arranged as follows:
</p>

<pre class="ipsCode" id="ips_uid_6410_4">
nibble:              #3        |         #2        |         #1     
nibble bits:   4   3   2   1   |   4   3   2   1   |   4   3   2   1
bits:         12  11  10   9   |   8   7   6   5   |   4   3   2   1
               -   -   -   -       -   -   -   -       -   -   -   -
             N/A   |   |   |       |   |   |   |       |   |   |   |
                   |   |   |       |   |   |   |       |   |   |   |
                   |   |   |       |   |   |   |       |   |   |   |
                   /   |   |       |   |   |   |       |   |   |   |
       Policy Over.    /   |       |   |   |   |       |   |   |   |
              Kext App.    /       |   |   |   |       |   |   |   |
                  Recov. OS        /   |   |   |       |   |   |   \
                     Device Config.    /   |   |       |   |   \    Kext Sig.
                            NVRAM Prot.    /   |       |    \   FS Prot.
                               DTrace Rest.    /       \     Task for PID
                                     Apple Int.         Kernel Debug.</pre>

<p>
	where:
</p>

<p>
	Bit #1 = Allow untrusted kexts
</p>

<p>
	Bit #2 = Allow unrestricted FileSystem
</p>

<p>
	Bit #3 = Allow task for PID
</p>

<p>
	Bit #4 = Allow kernel debugger
</p>

<p>
	Bit #5 = Allow Apple internal
</p>

<p>
	Bit #6 = Allow unrestricted DTrace
</p>

<p>
	Bit #7 = Allow unrestricted NVRAM
</p>

<p>
	Bit #8 = Allow device configuration
</p>

<p>
	Bit #9 = Allow any recovery OS
</p>

<p>
	Bit #10 = Allow unapproved kexts
</p>

<p>
	Bit #11 = Allow executable policy override
</p>

<p>
	Bit #12 = N/A
</p>

<p>
	 
</p>

<p>
	Source: csr.h (in bsd/sys folder) of Mojave 10.14's published XNU source code at <a href="https://opensource.apple.com/" ipsnoembed="true" rel="external nofollow">https://opensource.apple.com/</a>
</p>

<p>
	 
</p>

<p>
	Whilst the original CsrActiveConfig of 0x03 or 0x63 remains valid by far and large to most hackintoshers, some folks may also want to allow unapproved kexts on top of unsigned kexts. Keeping the same flags as for CsrActiveConfig 0x63 alongside, this would lead to a new value of 0010 0110 0011, i.e. 0x263 or 611 in decimal.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">11553</guid><pubDate>Fri, 24 May 2019 09:37:08 +0000</pubDate></item><item><title>Changing DVMT values in BIOS</title><link>https://osxlatitude.com/forums/topic/13963-changing-dvmt-values-in-bios/</link><description><![CDATA[<p style="text-align: center;">
	<span style="font-size:18px;"><strong>Steps to change the DVMT value (Done on Windows or WinPE)</strong></span>
</p>

<p style="text-align: center;">
	 
</p>

<p>
	<strong><span style="color:#d35400;">/!\ Warning, some files in attachment will show as infected, you'll need to disable your antivirus temporarily</span></strong>
</p>

<p>
	<strong><span style="color:#d35400;">     Use at your own risk!</span></strong>
</p>

<p>
	 <br>
	1) Universal BIOS Backup ToolKit 2.0.exe - to backup the BIOS (i.e. DellInc.-A07.rom)<br>
	2) UEFITool.exe to find the module labeled SetupPrep (not Setup as per FireWolf’s guide) and extract the PE32 image section (setup.bin)
</p>

<p>
	<span style="color:#c0392b;"> <em><strong> Update: </strong></em></span>
</p>

<p>
	  For Dell Only: Search with this GUID, right click the GUID found and select extract body. Save it as setup.bin
</p>

<p>
	          <strong>899407d7-99fe-43d8-9a21-79ec328cac21</strong>
</p>

<p>
	3) Universal IFR Extractor.exe to extract setup.bin to a readable text file<br>
	4) Use notepad to search for “DVMT” in the text file
</p>

<p>
	    i.e. for the E7450, 2 were found at 0x432 and 0x433 but only 0x432 needs to be changed to 0x3<br>
	5) Format an USB drive to fat32 and create a folder name EFI<br>
	6) Download the EFI Shell and extract the Boot folder to EFI folder (EFI/Boot/bootx64.efi)<br>
	7) Boot system with the USB and select UEFI Boot<br>
	    At the grub prompt, enter these commands, hit enter after command, then exit and reboot<br>
	    i.e. <strong>setup_var 0x432 0x3</strong><br>
	<br>
	To verify if the value was updated, just enter setup_var 0x432 and hit enter, the value will be listed
</p>

<p>
	More detailed instruction in attachment
</p>

<p>
	 
</p>

<p>
	/!\ Alternatively, just use Lilu.kext + Whatevergreen without having to mess with the BIOS
</p>

<p>
	<a href="https://github.com/vit9696/Lilu/releases" ipsnoembed="true" rel="external nofollow">https://github.com/vit9696/Lilu/releases</a>
</p>

<p>
	<a href="https://github.com/vit9696/Lilu/blob/master/KnownPlugins.md" ipsnoembed="true" rel="external nofollow">https://github.com/vit9696/Lilu/blob/master/KnownPlugins.md</a>
</p>

<p>
	<a href="https://github.com/acidanthera/WhateverGreen/releases" ipsnoembed="true" rel="external nofollow">https://github.com/acidanthera/WhateverGreen/releases</a>
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="17176" href="https://osxlatitude.com/applications/core/interface/file/attachment.php?id=17176" rel="">DVMT_Tools.zip</a>
</p>
]]></description><guid isPermaLink="false">13963</guid><pubDate>Tue, 10 Apr 2018 04:02:42 +0000</pubDate></item><item><title>Is my wireless card compatible with OS X/macOS? What wireless card can I use?</title><link>https://osxlatitude.com/forums/topic/8696-is-my-wireless-card-compatible-with-os-xmacos-what-wireless-card-can-i-use/</link><description><![CDATA[<p>
	Consult the (non-exhaustive) <a href="https://osxlatitude.com/forums/forum/104-wireless-and-bluetooth/" rel="">lists of supported/unsupported wireless cards</a> and dongles published in our R&amp;D-&gt;Hardware-&gt;Wifi forum subsection.
</p>

<p>
	<br>
	If your hardware is not listed, do try and identify the chip your card or dongle is based on. Note that:
</p>

<ul>
	<li>
		Cards and dongles manufacturers may provide OS X drivers, please consult their web site before asking.
	</li>
	<li>
		Chip manufacturers may provide OS X drivers (eg: Ralink, Realtek), please consult their web site before asking.
	</li>
</ul>

<p>
	 
</p>

<p>
	Use Google to research for potential support or drivers under OS X.
</p>

<p>
	 
</p>

<p>
	If you remain without suitable answer, please post a compatibility query in the dedicated forum subsection.
</p>

<p>
	 
</p>

<p>
	Please note that, for years, Intel wireless cards were not supported at all. However, recent development was done and some Intel cards are now fully supported. See here for details:
</p>

<ul>
	<li>
		<a href="https://openintelwireless.github.io" ipsnoembed="true" rel="external nofollow">https://openintelwireless.github.io</a>
	</li>
	<li>
		<a href="https://github.com/OpenIntelWireless" ipsnoembed="true" rel="external nofollow">https://github.com/OpenIntelWireless</a>
	</li>
</ul>

<p>
	 
</p>

<p>
	Thanks.
</p>

<p>
	OSXL Crew
</p>
]]></description><guid isPermaLink="false">8696</guid><pubDate>Wed, 13 Jan 2016 10:37:18 +0000</pubDate></item><item><title>How to implement custom fan control on ASUS laptops</title><link>https://osxlatitude.com/forums/topic/10244-how-to-implement-custom-fan-control-on-asus-laptops/</link><description><![CDATA[<p>Heya!</p>
<p> </p>
<p>After a lot of playing around with ASUS acpi tables I have finally come up with a SSDT that will work nearly on all ASUS laptops (Haswell or above) for reading FAN RPM, CPU TEMP and also Custom Controlling FAN. I do not have hardware below Haswell so can't test.</p>
<p> </p>
<p>If someone get's it working using this SSDT on machines prior to haswell. Let me and others know.</p>
<p> </p>
<p><strong>Background Info:</strong></p>
<p>The system FAN is generally controlled by the embedded controller (EC) but there are methods in ACPI that can let you read and control your system FAN.</p>
<p> </p>
<p>As you might know, ASUS machines are the best for hackintosh as they have the best written ACPI code. Like, if it was HP instead of ASUS you would have to acquire a mutex object. Write a value to the EC and then release the object. But in ASUS machines there is a method that takes arguments and does this job automatically. Still.</p>
<p> </p>
<p>There are multiple methods in our DSDT that allow us to read and control system FAN.</p>
<p> </p>
<p>For example to read FAN speed, there are two ways. If you observe, the FAN speed is at offset 0x93 of EC (Use RWEverything to find out)</p>
<p> </p>
<p>So, when we search for Offset 0x93 in the DSDT we get a result like this:</p>
<pre class="ipsCode prettyprint lang-">
Offset (0x93), 
TAH0,   16,  // TAH0 stands for FAN1
TAH1,   16,  // TAH1 stands for FAN2 (in case your laptop has 2 fans)
TSTP,   16,  // TSTP stores current fan value in some bytes
</pre>
<p>Note: Instead of using RWEverything if you have a look at method TACH you can see that it stores the values in TAH0 and TAH1 depending upon the Args supplied. So, searching for TAH0 or TAH1 we can see that they are located at offset 0x93</p>
<p> </p>
<p>So, now we can read the value from these registers in some units and then we will have to use some formula to convert that unit to RPM.</p>
<p> </p>
<p>In order to find that formula, if you have a look at Method TACH in dsdt, you will see:</p>
<pre class="ipsCode prettyprint lang-">
Method (TACH, 1, Serialized)
{
    Name (_T_0, Zero)
    If (ECAV ())
    {
        While (One)
        {
            _T_0 = Arg0
            If ((_T_0 == Zero))
            {
                Local0 = TAH0
                Break
            }
            ElseIf ((_T_0 == One))
            {
                Local0 = TAH1
                Break
            }
            Else
            {
                Return (Ones)
            }

            Break
        }

        Local0 *= 0x02
        If ((Local0 != Zero))
        {
            Divide (0x0041CDB4, Local0, Local1, Local0)
            Return (Local0)
        }
        Else
        {
            Return (Ones)
        }
    }
    Else
    {
        Return (Ones)
    }
}

</pre>
<p>So, we know that we have to store the value from TAH0 or TAH1 (depends on Arg0) and then we have to multiply it by 2 and then we have to divide it by 0x0041CDB4 (4312500) to get the value in RPMs.</p>
<p> </p>
<p>Once we know that, we could write a simple ACPI code to return the value in RPMs like:</p>
<pre class="ipsCode prettyprint lang-">
// GRPM means get RPM
Method (GRPM, 0)
{
	// Store value in Local0
	Local0 = \_SB.PCI0.LPCB.EC0.TAH0

	// If local0 is not equal to 0
	If (Local0 != 0){
		// Multiply by 2
		Local0 = Local0 * 2
		// Divide by 4312500
		Divide (0x0041CDB4, Local0, Local1, Local0)
	}

	// Return the value
	Return (Local0)
}
</pre>
<p>As you can see this is very expensive method. But what we learned here is, If we execute method TACH with Arg0 as 0 (Zero) it will give us the speed in RPM of FAN 1. Similarly, if we use Arg0 as 1 (One) it will return the value in RPM for FAN 2</p>
<p> </p>
<p>My laptop only has one FAN so, I can execute method TACH like,</p>
<pre class="ipsCode prettyprint lang-">
\SB.PCI0.LPCB.EC0.TACH(0) // Using Arg0 as Zero for FAN 1
</pre>
<p>And it will give me FANs RPM, so, instead of reading from EC and converting bits to RPM this is more preferable. Also, EC bytes may change while patching DSDT so it is a good idea to use dynamic methods so that a single SSDT could work for all machines. One such example is, If you use ACPIBatteryManager then you will have to convert 16bits registers to 8bits. And then, to use that "reading RPM from EC method you will have to create a new method to combine 2 8 bits registers to 1 16 bit like,</p>
<pre class="ipsCode prettyprint lang-">
// JEBR = Join 8 bit registers
Method (JEBR, 2)
{
    Return ((Arg0 | (Arg1 &lt;&lt; 8))) // Arg0 and Arg1 will be 8Bit register 1 and 2 respectively (AH00, AH01)
}
</pre>
<p>Now moving to FAN control, If you have a look at method QMOD in DSDT:</p>
<pre class="ipsCode prettyprint lang-">
Method (QMOD, 1, NotSerialized)
{
    If ((Arg0 == Zero))
    {
        Return (Zero) // If arg0 is Zero. Terminate by returning 0
    }

    If ((Arg0 == One))
    {
        ^^PCI0.LPCB.EC0.ST98 (QFAN) // Hmm, ST98 is somewhat related to FAN control
    }

    If ((Arg0 == 0x02))
    {
        ^^PCI0.LPCB.EC0.ST98 (0xFF) // Okay, ST98 again.. Something is interesting
    }

    Return (One)
}
</pre>
<p>Now, if you look at ST98 you can see:</p>
<pre class="ipsCode prettyprint lang-">
Method (ST98, 1, Serialized)
{
    If (ECAV ()) // Checked if EC is available, will you write to it?
    {
        Acquire (MU4T, 0xFFFF) // Oh! So you are acquiring a mutex object
        CMD = 0xFF
        EDA1 = 0x98 
        EDA2 = Arg0 // Oh, so you did write Arg0 in EDA2 (Located in EC01 OperationRegion)
        ECAC ()
        Release (MU4T) // Released it here, you did write something to the EC for sure
        Return (Zero)
    }

    Return (Ones)
}
</pre>
<p>Now, we can understand that, method QMOD (Quiet Mode?) Takes 1 argument that could be (0, 1 or 2). We can eliminate 0 as when we pass Arg0 as 0 it simply returns. </p>
<p> </p>
<p>Interesting are args 1 and 2</p>
<p> </p>
<p>When using 1 it passes Arg0 to ST98 as QFAN's value (Hmm.. What is this QFAN)</p>
<p>When using 2 it passes Arg0 to ST98 as 0xFF (255) (Oh wait! according to ACPI spec, 255 is max allowed FAN value.)</p>
<p> </p>
<p>Gotcha! We can use ST98 and pass it an arg ranging between 0x0 (0) to 0xFF (255) where 0 is for FAN off and 255 is for Max allowed or auto.</p>
<p> </p>
<p>But, why is there a QMOD method then? There might be some good reason for that. So, we will not invoke ST98 directly but will use the modus operandi of method QMOD</p>
<p> </p>
<p>Like, we will first store that max allowed FAN value in QFAN</p>
<p>Then, we will invoke QMOD with Arg0 as 1 (One). Which will invoke ST98 for us hence, setting the max allowed speed for FAN.</p>
<p> </p>
<p>So, the ACPI code for this would be:</p>
<pre class="ipsCode prettyprint lang-">
Method (SETR, 0)
{
    QFAN = 200 // Suppose we want to use max allowed value as 200

    // Now we can call QMOD with Arg0 as 1
    QMOD (1)
}
</pre>
<p>Now we know what to do. We now just need to write a method that can calculate the CPU temperature and then set FAN RPM accordingly. This is when you will use my SSDT-FAN</p>
<p> </p>
<p><strong>How to implement:</strong></p>
<p><strong>Requirements:</strong></p>
<ul><li>FakeSMC kext along with sensors installed at /L/E or /S/L/E (DO NOT INJECT USING CLOVER)</li>
<li>ACPIPoller.kext</li>
<li>HWMonitor for monitoring CPU Temp and FANS</li>
<li>My SSDT-FAN.aml</li>
</ul><p><strong>Installation:</strong></p>
<ul><li>Place SSDT-FAN.aml to /EFI/CLOVER/ACPI/patched (If using sorted order make sure you add SSDT-FAN to it)</li>
<li>Install ACPIPoller to /L/E or /S/L/E (not both and definitely do not inject using CLOVER)</li>
</ul><p><strong>Configuration:</strong></p>
<ul><li>You can set "<strong>Name (UCFC, One)</strong>" to "<strong>Name (UCFC, Zero)</strong>" in my SSDT-FAN in case you want to use default FAN control method as provided by your OEM. My SSDT will only provide FAN RPM reading and CPU Temp reading.</li></ul><p><strong>Achievements:</strong></p>
<ul><li>Default scaling that ASUS provided was from 2200RPM to 2900RPM (Fan spinning fast without use)</li>
<li>I managed to bring scale it from 255RPM to 5026RPM (Fan turns off if temp </li>
<li>Temp rarely goes above 53˚C (Went up to 68 earlier)</li>
</ul><p><strong>Technicalities:</strong></p>
<p>As we know know how to implement custom fan control using various methods in our DSDT we can't really use them as is in real life scenarios as FAN will literally be dancing. You might have observed that temperature keeps fluctuating a few degrees every second while you are working on something. Moreover, we need an automated method that can read and set FAN RPM.</p>
<p> </p>
<p>So, my SSDT calculates average temperature and then also waits for 2 seconds (to handle fluctuation) before increasing the RPM and waits for 5 seconds (to let CPU cool) before lowering RPM. You can edit this timeout by editing "Name (FCTU, 2)" for FanControlTimeoutUp and "Name (FCTD, 5)" for FanControlTimeoutDown.</p>
<p> </p>
<p>Method to calculate average accredited to RehabMan as he wrote the code first. There is only one known way to calculate average in maths. LOL.</p>
<p> </p>
<p><strong>If you want to know how it is implemented, read this code:</strong></p>
<p><strong>Note: </strong>This code is a part of my single optimizer SSDT project for ASUS laptops (Means, I am working on a single SSDT that you could place in your CLOVER/ACPI/patched and will have everything working without patching DSDT. You can customize SSDT using Device ANKD (A Nick's Device) like you can configure this SSDT to use custom FAN control or not). You can have a look at WIP code <a data-ipb="nomediaparse" href="https://github.com/black-dragon74/ASUS-A555LA-ACPI-OSX" rel="external nofollow">here</a></p>
<pre class="ipsCode prettyprint lang-">
// SSDT for FAN readings and custom FAN control for ASUS laptops

// Copyright, black.dragon74 &lt;www.osxlatitude.com&gt;

// Please configure the options in Device ANKD before compiling this SSDT

DefinitionBlock("SSDT-FAN", "SSDT", 2, "Nick", "AsusFan", 0)
{
    // Declare externals
    External (\_SB.QFAN, FieldUnitObj)
    External (\_SB.ATKD.QMOD, MethodObj)
    External (\_SB.PCI0.LPCB.EC0.ECAV, MethodObj)
    External (\_SB.PCI0.LPCB.EC0.ECPU, FieldUnitObj)
    External (\_SB.PCI0.LPCB.EC0.ST83, MethodObj)
    External (\_SB.PCI0.LPCB.EC0.ST98, MethodObj)
    External (\_SB.PCI0.LPCB.EC0.TACH, MethodObj)
    
    
    // Create a Nick's device to take care of this SSDT's configurations
    Device (ANKD)
    {
        Name (_HID, "ANKD0000") // Required. DO NOT change
        Name (UCFC, 1) // Set this to 0 if you don't wanna use my custom FAN control
    }

    // Create devices required by FakeSMC_ACPISensors
    Device (SMCD)
    {
        Name (_HID, "FAN0000") // Required, DO NOT change
        
        // Add tachometer
        Name (TACH, Package()
        {
            "System FAN", "FAN0"
        })
        
        // Add CPU heatsink
        Name (TEMP, Package()
        {
            "CPU Heatsink", "TCPU"
        })
        
        // Method to read FAN RPM (tachometer)
        Method (FAN0, 0)
        {
            // Check is EC is ready
            If (\_SB.PCI0.LPCB.EC0.ECAV())
            {
                // Continue
                Local0 = \_SB.PCI0.LPCB.EC0.ST83(0) // Method ST83 acquires mutex and writes value to EC. O stands for FAN 1, Use 1 for FAN 2
                If (Local0 == 255)
                {
                    // If ST83 is 0xFF (Max fan speed) terminate by returning FAN RPM
                    Return (Local0)
                }
                
                // Else, Get RPM and store it in Local0
                Local0 = \_SB.PCI0.LPCB.EC0.TACH(0) // Method TACH in DSDT returns current FAN RPM in 100s, Arg0 as 0 is for FAN 1, for FAN 2, use Arg0 as 1
                    
            }
            Else
            {
                // Terminate, return Zero
                Local0 = 0
            }
            
            // Return 255, 0 or Fan RPM based on conditionals above
            Return (Local0)  
        }
        
        // Method to read CPU temp (CPU Heatsink)
        Method (TCPU, 0)
        {
            // Check if EC is ready
            If (\_SB.PCI0.LPCB.EC0.ECAV())
            {
                // Then
                Local0 = \_SB.PCI0.LPCB.EC0.ECPU // EC Field storing current CPU temp
                Local1 = 60 // From DSDT
                
                If (Local0 &lt; 128)
                {
                    Local1 = Local0
                }
                
            }
            Else
            {
                // Terminate, return Zero
                Local1 = 0
            }
        
            // Return final CPU temp. ACPISensors take care of unit conversion.
            Return (Local1)
        }
        
        // Custom FAN table by black.dragon74 for ASUS laptops based on RehabMan's idea
        // Quietest fan operation yet coolest CPU.
        // Scaling from values as low as 255 RPM to values as high as 5026 RPM (That's great!)
        // Scaling that ASUS provided was from 2200 RPM to 2900 RPM (Duh!)
        
        // Temperatures. 0xFF means if temp is above 52C, let bios take control of things(auto).
        Name(FTA1, Package()
        {
            32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0xFF,
        })
        
        // Fan speeds. 255(0xFF) is max/auto, 0(0x00) is for fan off
        Name(FTA2, Package()
        {
            0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 160, 185, 205, 225, 245, 250, 255
        })
        
        // Time out values
        Name (FCTU, 2) // RPM Up
        Name (FCTD, 5) // RPM Down

        // Table to keep track of past temperatures (to track average)
        Name (FHST, Buffer() { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }) // Size should match the count of above FTA1 and FTA2 package
        Name (FIDX, 0) 	// current index in buffer above
        Name (FNUM, 0) 	// number of entries in above buffer to count in avg
        Name (FSUM, 0) 	// current sum of entries in buffer
        
        // Keeps track of last fan speed set, and counter to set new one
        Name (FLST, 0xFF)	    // last index for fan control
        Name (FCNT, 0)		// count of times it has been "wrong", 0 means no counter

        // Method to control FAN wrt TEMP
        // Name in ACPIPoller.kext's Info.plist should be FCPU with HID FAN0000
        Method (FCPU, 0)
        {
            // If UCFC is set to 0, terminate
            If (\ANKD.UCFC == 0)
            {
                Return (0)
            }
            
            // If EC is not ready, terminate
            If (!\_SB.PCI0.LPCB.EC0.ECAV())
            {
                Return (0)
            }    
                
            Local5 = \_SB.PCI0.LPCB.EC0.ECPU // Current temperature of the CPU Heatsink
            If (Local5 &lt; 128)
            {
                Local0 = Local5 // Store temperature in Local0
            }
            Else
            {
                Local0 = 60 // As per BIOS
            }    

            // calculate average temperature
            Local1 = Local0 + FSUM
            Local2 = FIDX
            Local1 -= DerefOf(FHST[Local2])
            FHST[Local2] = Local0
            FSUM = Local1  // Local1 is new sum
            
            // adjust current index into temperature history table
            Local2++
            if (Local2 &gt;= SizeOf(FHST)) { Local2 = 0 }
            FIDX = Local2
            
            // adjust total items collected in temp table
            Local2 = FNUM
            if (Local2 != SizeOf(FHST))
            {
                Local2++
                FNUM = Local2
            }
            
            // Local1 is new sum, Local2 is number of entries in sum
            Local0 = Local1 / Local2 // Local0 is now average temp

            // table based search (use avg temperature to search)
            if (Local0 &gt; 255) { Local0 = 255 }
            Local2 = Match(FTA1, MGE, Local0, MTR, 0, 0)

            // calculate difference between current and found index
            if (Local2 &gt; FLST)
            {
                Local1 = Local2 - FLST
                Local4 = FCTU
            }
            else
            {
                Local1 = FLST - Local2
                Local4 = FCTD
            }

            // set new fan speed, if necessary
            if (!Local1)
            {
                // no difference, so leave current fan speed and reset count
                FCNT = 0
            }
            else
            {
                // there is a difference, start/continue process of changing fan
                Local3 = FCNT
                FCNT++
                // how long to wait depends on how big the difference
                // 20 secs if diff is 2, 5 secs if diff is 4, etc.
                Local1 = Local4 / Local1
                if (Local3 &gt;= Local1)
                {
                    // timeout expired, so start setting new fan speed
                    FLST = Local2
                    
                    // Method 1 (Recommended)
                    
                    // Store custom fan value from table in Local5
                    Local5 = DerefOf(FTA2[Local2])
                    
                    // Set QFAN value to that of Local5
                    \_SB.QFAN = Local5
                    
                    // Execute QMOD with Arg0 as 1(One) to set FAN's max allowed speed to that of \_SB.QFAN
                    \_SB.ATKD.QMOD(1)
                    
                    // End Method 1
                    
                    // Method 2 (Works but not recommended) Uncomment the line below to use this (remember to comment lines in method 1)
                    
                    // \_SB.PCI0.LPCB.EC0.ST98 (DerefOf(FTA2[Local2]))
                    
                    // End Method 2
                    
                    // Reset FAN count (Required in either methods)
                    FCNT = 0
                }
            }
            
            Return (1) // Return something as this is a requirement of a ACPI Method
        }                    
    }
}    
</pre>
<p><strong>Moment of joy:</strong></p>
<p> </p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://osxlatitude.com/uploads/monthly_12_2017/post-86692-0-31559700-1512248220.png" data-fileid="15792" rel=""><img src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-fileid="15792" class="ipsImage ipsImage_thumbnailed" alt="old.png" data-src="https://osxlatitude.com/uploads/monthly_12_2017/post-86692-0-31559700-1512248220_thumb.png" width="646" data-ratio="66.1"></a></p>
<p> </p>
<p><strong>Problem Reporting:</strong></p>
<p>Attach proper problem reporting files. See <a href="https://osxlatitude.com/index.php?/topic/10209-how-to-generate-proper-problem-reporting-files/" rel="">How to generate proper problem reporting files</a></p>
<p> </p>
<p><strong>Note: If you see FAN RPM = 255 and hear a lot of noise from FAN it means your FAN is running at it's maximum speed.</strong></p>
<p> </p>
<p>Regards</p>
<p><a href="https://osxlatitude.com/applications/core/interface/file/attachment.php?id=15790" data-fileid="15790" rel="">ACPIPoller.zip</a></p>
<p><a href="https://osxlatitude.com/applications/core/interface/file/attachment.php?id=15791" data-fileid="15791" rel="">SSDT-FAN.zip</a></p>
]]></description><guid isPermaLink="false">10244</guid><pubDate>Sat, 02 Dec 2017 20:57:21 +0000</pubDate></item><item><title>How do I repair permissions and rebuild the cache in Yosemite to Catalina?</title><link>https://osxlatitude.com/forums/topic/9961-how-do-i-repair-permissions-and-rebuild-the-cache-in-yosemite-to-catalina/</link><description><![CDATA[
<p>It's required after any kext addition, removal or modification, whether in <em><strong>/S/L/E</strong></em> or in <em><strong>/L/E</strong></em>.</p>
<p> </p>
<p>To repair permissions, type the following <strong>Terminal</strong> commands:</p>
<pre class="ipsCode prettyprint">
sudo chmod -Rf 755 /S*/L*/E*
sudo chmod -Rf 755 /L*/E*
sudo chown -Rf 0:0 /S*/L*/E*
sudo chown -Rf 0:0 /L*/E*</pre>
<p>`</p>
<p>To rebuild kextcache and prelinked kernel, type the following <strong>Terminal</strong> command:</p>
<div><pre class="ipsCode prettyprint">
sudo touch -f /S*/L*/E*
sudo touch -f /L*/E*
sudo kextcache -Boot -U /</pre></div>
<p>`</p>
<p>Sometimes, the system returns an error message about not being able to modify/rebuild the cache and/or the prelinked kernel. In this case, the existing cache and prelinked kernel can be deleted using the following <strong>Terminal</strong> commands:</p>
<pre class="ipsCode prettyprint">
sudo rm -Rf /S*/L*/PrelinkedKernels
sudo rm -Rf /S*/L*/Caches/com.apple.kext.caches</pre>
<p>The cache and prelinked kernel can then be rebuilt using the above <span style="color:#0000cd;"><em><strong>touch</strong></em></span> and <span style="color:#0000cd;"><em><strong>kextcache</strong></em></span> commands.</p>
]]></description><guid isPermaLink="false">9961</guid><pubDate>Wed, 09 Aug 2017 09:59:33 +0000</pubDate></item><item><title>How do I create a USB installer from Windows?</title><link>https://osxlatitude.com/forums/topic/13096-how-do-i-create-a-usb-installer-from-windows/</link><description><![CDATA[<p>
	This is a recurring question from many people who want to create an OS X/macOS USB installer but neither have a Mac nor a Hack to do this. They only have Windows and a VM can be a little daunting or not successful.
</p>

<p>
	 
</p>

<p>
	Thankfully, there are tools that can be used from Windows to obtain the desired Graal!
</p>

<p>
	 
</p>

<p>
	We can recommend the 2 x following tools:
</p>

<p>
	1) TransMac
</p>

<p>
	<a href="https://www.acutesystems.com/scrtm.htm" ipsnoembed="true" rel="external nofollow" target="_blank">https://www.acutesystems.com/scrtm.htm</a>
</p>

<p>
	 
</p>

<p>
	2) Boot Disk Utility
</p>

<p>
	<a href="http://cvad-mac.narod.ru/index/bootdiskutility_exe/0-5" ipsnoembed="true" rel="external nofollow" target="_blank">http://cvad-mac.narod.ru/index/bootdiskutility_exe/0-5</a>
</p>

<p>
	 
</p>

<p>
	See this thread also: <a href="https://osxlatitude.com/forums/topic/10494-how-to-create-mac-installation-usb-from-windows" ipsnoembed="true" rel="">https://osxlatitude.com/forums/topic/10494-how-to-create-mac-installation-usb-from-windows</a>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Those who know how to use Google may look up for tutos. Example:
</p>

<p>
	<a href="https://www.wikigain.com/create-macos-high-sierra-bootable-usb-installer-windows-10/" ipsnoembed="true" rel="external nofollow" target="_blank">https://www.wikigain.com/create-macos-high-sierra-bootable-usb-installer-windows-10/</a>
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">13096</guid><pubDate>Mon, 30 Mar 2020 10:34:57 +0000</pubDate></item><item><title>How can I get AppStore, FaceTime, iCloud, Messages to work?</title><link>https://osxlatitude.com/forums/topic/13051-how-can-i-get-appstore-facetime-icloud-messages-to-work/</link><description><![CDATA[<p>
	<strong>AppStore</strong>, <strong>FaceTime</strong>, <strong>iCloud</strong>, <strong>Messages</strong> all require specific items to be configured or the apps just won't run.
</p>

<p>
	 
</p>

<p>
	<strong>1) <u>LAN/Ethernet interface</u></strong>
</p>

<p>
	A LAN/Ethernet interface be present and configured as 1st interface <em><strong>en0</strong></em>. This is mandatory for all of the above apps. Status can be assessed by checking the MAC address associated with each listed interface returned by <strong>Terminal</strong> command:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2471_7" style="">
<span class="pln">ifcconfig</span></pre>

<p>
	 
</p>

<p>
	For instance:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7404_7" style="">
<span class="pln">admin@d630n ~ % ifconfig
[...]
[...]
[...]
en0: flags=8863</span><span class="tag">&lt;UP</span><span class="pln">,</span><span class="atn">BROADCAST</span><span class="pln">,</span><span class="atn">SMART</span><span class="pln">,</span><span class="atn">RUNNING</span><span class="pln">,</span><span class="atn">SIMPLEX</span><span class="pln">,</span><span class="atn">MULTICAST</span><span class="tag">&gt;</span><span class="pln"> mtu 1500     --&gt; *** en0 ***
options=403</span><span class="tag">&lt;RXCSUM</span><span class="pln">,</span><span class="atn">TXCSUM</span><span class="pln">,</span><span class="atn">CHANNEL_IO</span><span class="tag">&gt;</span><span class="pln">
ether 00:2X:XX:XX:XX:19                                --&gt; *** This is the MAC address ***
nd6 options=201</span><span class="tag">&lt;PERFORMNUD</span><span class="pln">,</span><span class="atn">DAD</span><span class="tag">&gt;</span><span class="pln">
media: autoselect (</span><span class="tag">&lt;unknown</span><span class="pln"> </span><span class="atn">type</span><span class="tag">&gt;</span><span class="pln">)
status: inactive

en1: flags=8863</span><span class="tag">&lt;UP</span><span class="pln">,</span><span class="atn">BROADCAST</span><span class="pln">,</span><span class="atn">SMART</span><span class="pln">,</span><span class="atn">RUNNING</span><span class="pln">,</span><span class="atn">SIMPLEX</span><span class="pln">,</span><span class="atn">MULTICAST</span><span class="tag">&gt;</span><span class="pln"> mtu 1500     --&gt; *** en1 ***
options=400</span><span class="tag">&lt;CHANNEL_IO&gt;</span><span class="pln">
ether 00:2X:XX:XX:XX:70                                --&gt; *** This is the MAC address ***
inet6 fe80::1cb6:fa47:fd8a:c1eb%en1 prefixlen 64 secured scopeid 0xc 
inet 192.168.1.117 netmask 0xffffff00 broadcast 192.168.1.255
nd6 options=201</span><span class="tag">&lt;PERFORMNUD</span><span class="pln">,</span><span class="atn">DAD</span><span class="tag">&gt;</span><span class="pln">
media: autoselect
status: active
[...]
[...]
[...]</span></pre>

<p>
	 
</p>

<p>
	The LAN/Ethernet interface MAC address can be verified in the Hardware tab of the Ethernet interface listed in the Network PrefPane:
</p>

<p>
	<img alt="MAC_address.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="26374" data-ratio="84.4" data-unique="1o7eostqp" style="" width="500" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2020_03/MAC_address.jpg.fb711329b847d7ec5c3c179dd522633c.jpg"></p>

<p>
	 
</p>

<p>
	If your LAN/Ethernet interface is unsupported or if your computer does not have one (it happens), use <a href="https://github.com/RehabMan/OS-X-Null-Ethernet" rel="external nofollow">Rehabman's NullEthernet kext</a> to fake one: <a class="ipsAttachLink" data-fileext="zip" data-fileid="26375" href="https://osxlatitude.com/applications/core/interface/file/attachment.php?id=26375" rel="">RehabMan-NullEthernet-2016-1220.zip</a>
</p>

<p>
	 
</p>

<p>
	If your LAN/Ethernet interface is not 1st interface <em><strong>en0</strong></em>:
</p>

<ul>
<li>
		remove all interfaces from your Network PrefPane
	</li>
	<li>
		delete <em><strong>NetworkInterfaces.plist</strong></em> from <span style="color:#2980b9;"><em><strong>/Library/Preferences/SystemConfiguration</strong></em></span> folder
	</li>
	<li>
		reboot
	</li>
</ul>
<p>
	The LAN/Ethernet interface should then return as 1st interface <em><strong>en0</strong></em>; if no interface is present in your Network PrefPane after reboot, add them manually, starting with Ethernet.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<strong>2) <u>Serial number, MLB, ROM</u></strong>
</p>

<p>
	These pieces of information are mandatory for <strong>Messages</strong> and without them, the app just won't work. These values can be set in Clover config through <strong>Clover Configurator</strong> app. Open your Clover config in <strong>CC</strong> and proceed as follows:
</p>

<ul>
<li>
		<em><strong>SMBIOS tab:</strong></em>
	</li>
</ul>
<p style="margin-left: 80px;">
	* If not done already (but it should), click on the selection list button and pick the Mac model that best fits your Hackintosh computer hardware
</p>

<p style="margin-left: 80px;">
	<img alt="SMBIOS_New.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="26376" data-ratio="45.13" data-unique="ur4wmjadd" style="" width="800" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2020_03/SMBIOS_New.jpg.4ba7b6f115075d6da188e2b6e6e3a08a.jpg"></p>

<p style="margin-left: 80px;">
	 
</p>

<p style="margin-left: 80px;">
	* Click on each <span style="color:#8e44ad;"><strong>Generate New</strong></span> button a few random times to generate a new <em><strong>Serial Number</strong></em> and a new <em><strong>SmUUID</strong></em> number
</p>

<p style="margin-left: 80px;">
	<img alt="SMBIOS_Generate_New.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="26377" data-ratio="20.36" data-unique="1w84ti5o6" style="" width="560" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2020_03/SMBIOS_Generate_New.jpg.6c240c08adb9ea455389593b0a371f97.jpg"></p>

<p style="margin-left: 80px;">
	 
</p>

<ul>
<li>
		<strong><em>System Parameters tab:</em></strong>
	</li>
</ul>
<p style="margin-left: 80px;">
	* Click on <span style="color:#9b59b6;"><strong>Generate New</strong></span> button a few random times to generate a new <em><strong>Custom UUID</strong></em> number
</p>

<p style="margin-left: 80px;">
	<img alt="CustomUUID_Generate_New.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="26378" data-ratio="15.67" data-unique="p9la6e9qi" style="" width="383" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2020_03/CustomUUID_Generate_New.jpg.5526c22f03809d1034fa3f2e6432f4a4.jpg"></p>

<p>
	 
</p>

<ul>
<li>
		<em><strong>Rt Variables tab:</strong></em>
	</li>
</ul>
<p style="margin-left: 80px;">
	* Make sure the <span style="color:#9b59b6;"><strong>from SMBIOS</strong></span> case in the top left corner is selected/checked
</p>

<p style="margin-left: 80px;">
	* Click on the down arrow of the <span style="color:#9b59b6;"><strong>ROM</strong></span> field, select <span style="color:#9b59b6;"><strong>UseMacAddr0</strong></span> then click on <span style="color:#9b59b6;"><strong>Generate New</strong></span> button a few random times. This will generate a new <em><strong>ROM</strong></em> value
</p>

<p style="margin-left: 80px;">
	<img alt="Rt_Variables_ROM.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="26379" data-ratio="37.25" data-unique="5t7jlo9ax" style="" width="349" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2020_03/Rt_Variables_ROM.jpg.92950da213f782beaf9dae9ef84369eb.jpg"></p>

<p style="margin-left: 80px;">
	 
</p>

<p style="margin-left: 80px;">
	* In the black section in the middle, select the <span style="color:#000000;"><em><strong>MLB</strong></em></span> value displayed and copy/paste it in the <span style="color:#9b59b6;"><strong>MLB</strong></span> field above
</p>

<p style="margin-left: 80px;">
	<img alt="Rt_Variables_MLB.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="26380" data-ratio="45.1" data-unique="pkqdfw0ml" style="" width="623" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2020_03/Rt_Variables_MLB.jpg.9d5df0a589a9660c3c50bbcd17ba82cb.jpg"></p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Save your Clover config and reboot. Your Hackintosh is now set to use <strong>AppStore</strong>, <strong>FaceTime</strong>, <strong>iCloud</strong> and <strong>Messages</strong>.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">13051</guid><pubDate>Mon, 23 Mar 2020 16:35:45 +0000</pubDate></item><item><title>How do I generate debugging files?</title><link>https://osxlatitude.com/forums/topic/10209-how-do-i-generate-debugging-files/</link><description><![CDATA[
<p>
	<u><strong>Last update:</strong></u> <strong><em><span style="color: rgb(255, 0, 0);">16</span> </em></strong><em><strong><span style="color: rgb(255, 0, 0);">July 2018</span><br><u><strong><span style="color: rgb(0, 0, 0);">Current Ver:</span></strong></u> <strong><em><span style="color: rgb(0, 102, 0);">4.2.7</span></em></strong></strong></em>
</p>

<p>
	<em><strong><strong><em><span style="color: rgb(0, 0, 0);"><u>Suggestions/Discussions:</u> <a data-ipb="nomediaparse" href="https://osxlatitude.com/index.php?/topic/10154-tool-problem-reporting-file-generator/?p=74193" rel="">HERE</a></span></em></strong></strong></em><br><br>
	Hello guys,<br>
	I have seen many instances where people start a thread with the problem they are facing on their hack.<br><br>
	They try to describe the issue in their own way that most of the times, is not able to properly describe what's going wrong with their system.<br><br>
	The developers and other advanced members on OSXL can point out the problem exactly when they have a set of files, called problem reporting files.<br><br>
	These are basically a set of files that contain various logs and some other components.<br><br>
	Many a times a normal user can not generate those files properly and it leads to a lot of wastage of good time, frustrated by this, I wrote a script to generate proper problem reporting files. You can have a look at the source code <a data-ipb="nomediaparse" href="https://github.com/black-dragon74/OSX-Debug" rel="external nofollow">here</a><br><br>
	The purpose of this guide is to tell the normal user on how to generate those files properly for debugging.<br><br>
	I wrote a script that automatically installs that debug report generator script and then gives you a .zip output.<br><br><strong>If you are seeking help about a problem and you must attach problem reporting files as it saves a lot of time.</strong><br><br><strong>How to generate debug report:-</strong><br><br>
	It is very simple, you just have to download the attached script and run it. The script in attachment will install the tool for you and will then prompt if you want to generate the files.<br><br>
	If you want to generate files next time, you just have to invoke: "gen_debug" from terminal (without quotes)<br><br><strong>How to download and run attached script :-</strong>
</p>

<ul class="bbc">
<li>
		Unzip the downloaded zip file
	</li>
	<li>
		Open terminal
	</li>
	<li>
		Assuming your script is in Downloads folder, type the following code :-
	</li>
</ul>
<pre class="ipsCode prettyprint lang-auto linenums:0">
chmod a+x ~/Downloads/install_tools.sh
~/Downloads/install_tools.sh
</pre>

<p>
	<strong><span style="color: rgb(255, 0, 0);">Args for gen_debug:</span></strong><br><br><span style="color: rgb(0, 0, 0);">You can use custom set of args for controlling gen_debug output, this list will be updated as new features become available</span>
</p>

<ul class="bbc">
<li>
		<span style="color: rgb(0, 0, 0);">gen_debug -u || To update your copy (available from ver2.1+)</span>
	</li>
	<li>
		<span style="color: rgb(0, 0, 0);">gen_debug -sysprofile || To include your system profile in the dump (available from ver2.2+)</span>
	</li>
	<li>
		<span style="color: rgb(0, 0, 0);">gen_debug -sysprofile txt || To include system profile in the dump but in TXT format</span>
	</li>
</ul>
<p>
	<strong><span style="color: rgb(255, 0, 0);">Note:</span> </strong>Whenever you change anything, <strong>you should attach new output of gen_debug</strong>.<br><br><strong><span style="color: rgb(255, 0, 0);">Note 2:</span> </strong>It is recommended to update your copy of gen_debug every alternate month (for fixes and new features). To do so, If you are running version 2.1 or above, you can simply type "<strong>gen_debug -u</strong>" (without quotes) in terminal. If you are running version 2.0 or less, you can use the attached installer script to update your copy.
</p>

<p>
	 
</p>

<p>
	<span style="color:#e74c3c;"><strong>Note 3</strong></span>: To all the users that are facing<b> IOREG dump</b> failures:<br>
	You need to enable the accessibility permissions for the “Terminal”. <br>
	This privacy feature was introduced in macOS Mojave.<br>
	Open Sys Prefs &gt; Security &amp; Privacy &gt; Accessibility. Look for “Terminal” and allow access. 
</p>

<p>
	<br><strong>Changelogs:</strong>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		 
	</div>

	<div class="ipsSpoiler_contents" data-gramm="false">
		<p>
			<strong>Update 4.2.7 - 14 Jul 2018</strong>
		</p>

		<ul>
<li>
				Fix a rare issue where script went crazy when user had a space in his/her home folder name.
			</li>
		</ul>
<p>
			<strong>Update 4.2.6</strong>
		</p>

		<ul>
<li>
				Improvements to ACPI file verification and colored STDERR.
			</li>
		</ul>
<p>
			<strong>Updates 4.2 to 4.2.5</strong>
		</p>

		<ul>
<li>
				Check for ACPI origin files existence and age 
			</li>
			<li>
				Added a hacky method for IORegistryExplorer verification (will download regexplorer for once)
			</li>
			<li>
				Listen for CTRL+C interrupts
			</li>
			<li>
				Hardcode the launch-path for IORegExplorer (prevents launch of other version than the one intended.)
			</li>
			<li>
				Include PwrMgmtSet(PMSET) in dump
			</li>
			<li>
				Handle scenarios where ACPI files age is in some h/m/s
			</li>
			<li>
				Check for preboot log &amp; many other enhancements.
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);">Updates 4.0 to 4.2:</span></strong>
		</p>

		<ul>
<li>
				<span style="font-family: arial, helvetica, sans-serif;"><span style="color: rgb(0, 0, 0);">Experimental support for Chameleon (and similar) boot-loaders.</span></span>
			</li>
			<li>
				<span style="font-family: arial, helvetica, sans-serif;"><span style="color: rgb(0, 0, 0);">Check for ACPI origin files age. Should not be older than 1 day.</span></span>
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);"><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Updates 3.2 to 4.0:</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></span></strong>
		</p>

		<ul class="bbc">
<li>
				<span style="color: rgb(0, 0, 0);">Fix potential user's file deletion loophole</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Make IOREG dump dynamic (time values are adjusted automatically for slower machines)</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Include generic IOREG dump if normal IOREG dump fails more than 3 times.</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Handle scenarios where CLOVER might not be installed.</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Include kernel panic logs if exits.</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Fixed issues with whitespaces in EFI pathname.</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">If root elevations fails, exit.</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Include list of all loaded kexts in dump.</span>
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);"><strong><strong><strong><strong><strong><strong>Update 3.1 - 1 Jan 2018:</strong></strong></strong></strong></strong></strong></span></strong>
		</p>

		<ul class="bbc">
<li>
				<span style="color: rgb(0, 0, 0);">Mask MLB in RtVariables section of config.plist</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Fixed STDERR for pledit</span>
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);"><strong><strong><strong><strong><strong>Update 3.0 - 29 Dec 2017:</strong></strong></strong></strong></strong></span></strong>
		</p>

		<ul class="bbc">
<li>
				<span style="color: rgb(0, 0, 0);">Fix conflicts with GNU date on some developer environments (Fix kernel log generation)</span>
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);"><strong><strong><strong><strong>Update 2.9 - 21 Dec 2017:</strong></strong></strong></strong></span></strong>
		</p>

		<ul class="bbc">
<li>
				<span style="color: rgb(0, 0, 0);">Fix kextcache output redunancy on 10.13.1+</span>
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);"><strong><strong><strong>Update 2.8 - 13 Dec 2017:</strong></strong></strong></span></strong>
		</p>

		<ul class="bbc">
<li>
				<span style="color: rgb(0, 0, 0);">Add NVRAM dump functionality.</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Fix broken update functionality when using "-u" arg.</span>
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);"><strong><strong>Update 2.7 - 12 Dec 2017:</strong></strong></span></strong>
		</p>

		<ul class="bbc">
<li>
				<span style="color: rgb(0, 0, 0);">If a new update for the script it available, it will update automatically. (Helps to stay you up-to-date)</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">New IOReg dump mechanism for slow machines.</span>
			</li>
			<li>
				<span style="color: rgb(0, 0, 0);">Include script version in the dump report.</span>
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);"><strong>Update 2.6 - 11 Dec 2017:</strong></span></strong>
		</p>

		<ul class="bbc">
<li>
				<span style="color: rgb(0, 0, 0);">IOREG dump will never ever fail again.</span>
			</li>
		</ul>
<p>
			<strong><span style="color: rgb(0, 0, 0);">Update 2.5 - 3 Dec 2017:</span></strong>
		</p>

		<ul class="bbc">
<li>
				<span style="color: rgb(0, 0, 0);">Check for IORegistryExplorer version 2.1</span>
			</li>
		</ul>
<p>
			<strong>Update 2.4 - 2 Dec 2017:</strong>
		</p>

		<ul class="bbc">
<li>
				Script now also dumps your boot log
			</li>
		</ul>
<p>
			<strong>Update 2.3 - 2 Dec 2017:</strong>
		</p>

		<ul class="bbc">
<li>
				<a data-ipb="nomediaparse" href="https://github.com/black-dragon74/OSX-Debug/commit/17b89e3c60be454a89e1fe0c0e8cb4812e119710" rel="external nofollow">Fixed</a> an issue where the time stamp of files was overwritten to current system time, reported by RehabMan.
			</li>
		</ul>
<p>
			<strong>Update 2.2 - 27Nov 2017:</strong>
		</p>

		<ul class="bbc">
<li>
				Added option to generate system information dump using -sysprofile arg
			</li>
		</ul>
<p>
			<strong>Update 2.1 - 27Nov 2017:</strong>
		</p>

		<ul class="bbc">
<li>
				Fixed an issue where IOREG was not saved on some machines
			</li>
			<li>
				You can now update your copy of OSX-Debug by using "-u" arg, like gen_debug -u
			</li>
		</ul>
<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	Regards
</p>

<p>
	<a data-fileext="zip" data-fileid="15593" href="https://osxlatitude.com/applications/core/interface/file/attachment.php?id=15593" rel="">install_tools.zip</a>
</p>
]]></description><guid isPermaLink="false">10209</guid><pubDate>Tue, 21 Nov 2017 19:20:31 +0000</pubDate></item><item><title>Where can I find Clover builds and Clover Configurator?</title><link>https://osxlatitude.com/forums/topic/12423-where-can-i-find-clover-builds-and-clover-configurator/</link><description><![CDATA[<p>
	Clover builds can be found at the following locations:
</p>

<ul><li>
		<a href="https://github.com/Dids/clover-builder/releases" rel="external nofollow">Dids Github repo</a>
	</li>
	<li>
		<a href="https://github.com/CloverHackyColor/CloverBootloader/releases" rel="external nofollow">CloverHackyColour (Slice) Github repo</a>
	</li>
</ul><p>
	 
</p>

<p>
	<strong>Clover Configurator</strong> app can be found at the following location:
</p>

<ul><li>
		<a href="https://mackie100projects.altervista.org/download-clover-configurator/" rel="external nofollow">Mackie100 repo</a>
	</li>
</ul><p>
	 
</p>]]></description><guid isPermaLink="false">12423</guid><pubDate>Wed, 16 Oct 2019 16:52:00 +0000</pubDate></item><item><title>How do I unlock Catalina's protected file system?</title><link>https://osxlatitude.com/forums/topic/12385-how-do-i-unlock-catalinas-protected-file-system/</link><description><![CDATA[<p>
	With Catalina 10.15, Apple went further into increasing the security of its OS and the system's/root partition is now locked upon system startup. One of the consequences is that, by default, <span style="color:#2980b9;"><em><strong>/System/Library/Extensions</strong></em></span> folder (<strong><em><span style="color:#2980b9;">/S/L/E</span></em></strong>) is locked and can not be modified in any way. In the same respect, other reserved folders such as <span style="color:#2980b9;"><em><strong>/usr/bin</strong></em></span> or <span style="color:#2980b9;"><em><strong>/usr/sbin</strong></em></span> are locked too.
</p>

<p>
	 
</p>

<p>
	This can be a problem for such situations where a vanilla kext has to be replaced in <span style="color:#2980b9;"><em><strong>/S/L/E</strong></em></span> or a file of <span style="color:#2980b9;"><em><strong>/S/L/CoreServices</strong></em></span> has to be patched.
</p>

<p>
	 
</p>

<p>
	The trick is basically to mount Catalina's root partition in Read-Write (RW) mode instead of Read-Only (RO) mode. This can be accomplished through <strong>Terminal</strong> with the following command:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7910_7" style="">
<span class="pln">sudo mount -uw /</span></pre>

<p>
	followed a restart of the Finder through <strong>Terminal</strong> command:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7481_7" style="">
<span class="pln">sudo killall Finder</span></pre>

<p>
	or simply by relaunching the Finder from the Apple menu:
</p>

<p>
	<img alt="Apple_Menu.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="24645" data-ratio="138.73" data-unique="en2x98jb0" width="204" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2019_10/Apple_Menu.jpg.dd30bc9335350cd7895032153aaa8f7e.jpg">     <img alt="Finder_relaunch.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="24646" data-ratio="90.91" data-unique="ycrlto9mg" width="341" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2019_10/Finder_relaunch.jpg.b12410e0ee08610d64638a07c5b3ccf9.jpg"></p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">12385</guid><pubDate>Wed, 09 Oct 2019 15:42:09 +0000</pubDate></item><item><title>What's the difference between caching kexts and injecting kexts through Clover?</title><link>https://osxlatitude.com/forums/topic/11788-whats-the-difference-between-caching-kexts-and-injecting-kexts-through-clover/</link><description><![CDATA[<p>
	Questions still arise about this matter so here's a recap of what caching kexts and injecting kexts (through Clover) mean:
</p>

<p>
	 
</p>

<p>
	1/ <u>Caching kexts:</u>
</p>

<p>
	Kexts placed in <em><strong><span style="color: rgb(41, 128, 185);">/L/E</span></strong></em> and/or <span style="color: rgb(41, 128, 185);"><em><strong>/S/L/E</strong></em></span> are cached in the kernel cache (or prelinked kernel) which aims to accelerate boot time. This is the natural and expected mode of operation of the OS. Cached kexts are subject to signature by Apple and must be set with the correct permissions (Cf. our FAQ topics on permissions). Cached kexts will be shown/listed/registered in <em><strong>System Info (ex-SysProfiler) -&gt; Software -&gt; Extensions</strong></em>. <u>Caching kexts is the recommended scheme for all add-on kexts</u>.
</p>

<p>
	 
</p>

<ul><li>
		<span style="color: rgb(41, 128, 185);"><em><strong>/S/L/E</strong></em></span> is the location for Apple's own (i.e. vanilla) kexts. Ideally, this should be left untouched by Hackintoshers unless for very specific and rare reasons (eg: patched AppleHDA).
	</li>
	<li>
		<strong><em><span style="color: rgb(41, 128, 185);">/L/E</span></em></strong> is the location for 3rd party/add-on kexts. This is where all kexts we use for our Hackintoshes should go.
	</li>
	<li>
		<img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/26a0.png" class="ipsEmoji" alt="⚠️"> Add-on kexts should only be placed in either folder, never in both.
	</li>
</ul><p>
	 
</p>

<p>
	2/ <u>Injecting kexts through Clover:</u>
</p>

<p>
	Injected kexts are not cached and will not be shown/listed/registered in <em><strong>System Info (ex-SysProfiler) -&gt; Software -&gt; Extensions</strong></em>. Injecting kexts results in a slightly slower boot than caching kexts (though many would arguably say it's hardly noticeable). Kexts injection operates according to Clover settings on the matter:
</p>

<ul><li>
		If kext injection is set to <em><strong>Yes</strong></em>, kexts placed in <span style="color: rgb(41, 128, 185);"><em><strong>E/C/k/O</strong></em></span> (or <span style="color: rgb(41, 128, 185);"><em><strong>E/C/k/10.xx</strong></em></span>) will be injected.
	</li>
	<li>
		If kext injection is set to <em><strong>No</strong></em>, no injection takes place; obviously...
	</li>
	<li>
		If kext injection is set to <em><strong>Detect</strong></em>, kext injection operates according to the presence of FakeSMC in the kext cache (the kext having been properly installed in <span style="color: rgb(41, 128, 185);"><em><strong>/L/E</strong></em></span> or <em><strong><span style="color: rgb(41, 128, 185);">/S/L/E</span></strong></em>). If present, no injection takes place, if absent, kext injection is performed.
	</li>
	<li>
		<img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/26a0.png" class="ipsEmoji" alt="⚠️"> If kext injection is used, make sure the kexts aren't cached at the same time.
	</li>
</ul><p>
	 
</p>

<p>
	Clover's <span style="color: rgb(41, 128, 185);"><strong><em>E/C/k/O</em></strong></span> and <span style="color: rgb(41, 128, 185);"><strong><em>E/C/k/10.xx</em></strong></span> are the locations for kexts that Clover injects at boot time:
</p>

<ul><li>
		<span style="color: rgb(41, 128, 185);"><strong><em>E/C/k/O</em></strong></span> is used to inject kexts regardless of the OS X/macOS version.
	</li>
	<li>
		<strong><em><span style="color: rgb(41, 128, 185);">E/C/k/10.xx</span></em></strong> are used to inject kexts for the given OS X/macOS version and therefore allow different kexts to be injected for different versions.
	</li>
</ul><p>
	 
</p>

<p>
	 
</p>

<p>
	Apart from the obvious requirement for fresh OS X/macOS installations (and/or updates), kext injection is very useful for recovery purposes (like booting without cache which ignores <span style="color: rgb(41, 128, 185);"><em><strong>/L/E</strong></em></span>) or when testing kexts for instance; if a newly injected kexts causes issues (like a KP), it's very easy to remove/bypass it. On the other hand, kext injection is known to occasionally cause problem because it's not the natural way in which kexts should be loaded. Kext injection is basically a form of forced loading and, sometimes (though rare these days), it does not work. This is why -as stated on numerous occasions by Rehabman himself- Clover should really be set with kext injection in "Detect" mode and contain only the absolutely essential/minimum set of kexts required to boot the system.
</p>

<p>
	 
</p>

<p>
	My own recommendation is to experiment with kexts through injection and, once kexts are validated, to cache them from <span style="color: rgb(41, 128, 185);"><em><strong>/L/E</strong></em></span>.
</p>

<p>
	 
</p>

<p>
	Google for this kext injection matter or consult the Clover wiki/InsanelyMac forum. It's all quite widely documented.
</p>

<p>
	 
</p>]]></description><guid isPermaLink="false">11788</guid><pubDate>Fri, 14 Jun 2019 08:26:48 +0000</pubDate></item><item><title>How to fix static noise/distortion/crackling sound and combo jack on laptops?</title><link>https://osxlatitude.com/forums/topic/11316-how-to-fix-static-noisedistortioncrackling-sound-and-combo-jack-on-laptops/</link><description><![CDATA[<p>
	 
</p>

<p>
	Hi Everyone 
</p>

<p>
	 
</p>

<p>
	All new laptops and OSX causing Distortion/Crackling Sound and these new laptop has combojack instead traditional seperate jacks , so fixing this requires more workaround similar as  linux is doing to work natively in OSX , i remember in July 2016 <a href="https://github.com/goodwin" rel="external nofollow"><span style="color: rgb(41, 128, 185);">Goodwin_C</span></a>  ask me to fix ALC298 (ALC3266) for Dell XPS 9550, after understanding how linux is doing i was able to fix this with help of<span style="color: rgb(41, 128, 185);"> </span><a href="https://github.com/RehabMan" rel="external nofollow"><span style="color: rgb(41, 128, 185);">hda-verb Rehabman</span></a> Port of linux hda-verb , special thanks to him , so i created a custom SSDT298 to use with CodecCommander this fixed combojack and static noise  from headphone , after few days we found CodecCommander is not good when Speaker changes to Headphone same when Mic changes to Line-In , then commands need to send manually bcoz CodecCommander can't understand changes on OS Level , then i took break from Hack scene in 2017 Goodwin_C found a workaround to fix this issue , so he made ALCPlugFix and implemented same command in this and it was best method to fix this issue so far and using same method till now 
</p>

<p>
	 
</p>

<p>
	i'm receiving lots of request to fix same issue from very long time for many codecs , so it's time to share this method so it could help you fix this easily according your codec 
</p>

<p>
	 
</p>

<h3>
	<u>Requirements:</u> 
</h3>

<ol><li>
		Download latest version of CodecCommander <a href="https://bitbucket.org/RehabMan/os-x-eapd-codec-commander/downloads/" ipsnoembed="true" rel="external nofollow">https://bitbucket.org/RehabMan/os-x-eapd-codec-commander/downloads/</a>
	</li>
	<li>
		Codec_Dump of your codec from linux use this method mention here <iframe allowfullscreen="" class="ipsEmbed_finishedLoading" data-embedcontent="" data-embedid="embed7124639425" scrolling="no" src="https://osxlatitude.com/applications/core/interface/index.html" style="height: 341px; overflow: hidden; max-width: 502px;" data-embed-src="https://osxlatitude.com/forums/topic/11167-applehda-patch-request/?do=embed"></iframe>
	</li>
	<li>
		ALCPlugFix <a href="https://github.com/goodwin/ALCPlugFix" ipsnoembed="true" rel="external nofollow">https://github.com/goodwin/ALCPlugFix</a>
	</li>
</ol><p>
	 
</p>

<h3>
	<u>How to fix Static Noise/Distortion/Crackling issue </u> <span>:</span>
</h3>

<p>
	<span>   1. </span>Copy hda-verb to /usr/bin folder 
</p>

<p>
	   2. Find Pin-ctls in you codec_dump , below is example Pin Complex Nodes for Headphone 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1454_16">
<span class="pln">Node 0x18 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
  Control: name="Headset Mic Boost Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00003724: IN Detect
    Vref caps: HIZ 50 GRD 80 100
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x20: IN VREF_80
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0</span></pre>

<p>
	 
</p>

<p>
	so Pin-ctls in headphone nodes is 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1454_26">
<span class="pln">Pin-ctls: 0x20: IN VREF_80</span></pre>

<p>
	 3. now we have to send command to codec using hda-verb use below command in terminal for Headphone <span>:</span>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1454_28">
<span class="pln">hda-verb 0x18 SET_PIN_WIDGET_CONTROL 0x20 = (Headphones Pin-ctls: 0x20 from codecDump)</span></pre>

<p>
	 
</p>

<p>
	<span>Now you will notice this issue is fixed </span>
</p>

<p>
	 
</p>

<p>
	<strong><span style="color: rgb(0, 128, 0);">Note : usually you don't need to send command for headphone only but in few case you need to send command to Line-In, Mic or Speaker too ,</span></strong>
</p>

<p>
	<strong><span style="color: rgb(0, 128, 0);">you can create Custom SSDT to use with CodecCommander is better approach </span></strong>
</p>

<p>
	<strong><span style="color: rgb(0, 128, 0);"> </span></strong>
</p>

<h3>
	<u>How to fix ComboJack issue:</u>
</h3>

<p>
	to fix combojack you need to send additional commands to Line-In (External Microphone) nodes 
</p>

<p>
	1.  First find out which is your Line-In (External Microphone Combojack Node)  is connected to Headphone Jack , below example <span>: </span>codec_dump
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9910_6">
<span class="pln">Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
  Control: name="Headset Mic Boost Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00003724: IN Detect
    Vref caps: HIZ 50 GRD 80 100
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x24: IN VREF_80
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D3, actual=D3

Node 0x1a [Pin Complex] wcaps 0x40058f: Stereo Amp-In Amp-Out
  Control: name="Headphone Mic Boost Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x0001373c: IN OUT HP EAPD Detect
    Vref caps: HIZ 50 GRD 80 100
  EAPD 0x2: EAPD
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x20: IN VREF_HIZ
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 2
     0x0c* 0x0d</span></pre>

<p>
	there is two node 19 and node 1a , we have to use node 1a this is combojack node one jack for Headphone/Mic 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9910_10">
<span class="pln">Node 0x19 "Headset Mic Boost Volume"   
Node 0x1a "Headphone Mic Boost Volume"</span></pre>

<p>
	"Headset Mic Boost Volume"      = External Port (Sperate Mic Jack)    
</p>

<p>
	"Headphone Mic Boost Volume" = ComboJack (One Jack for Headphone/Mic)
</p>

<p>
	 
</p>

<p>
	  
</p>

<p>
	2.  Find Pin-ctls in your codec_dump , below is example Pin Complex Nodes for Line-In 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1454_30">
<span class="pln">Node 0x1a [Pin Complex] wcaps 0x40058f: Stereo Amp-In Amp-Out
  Control: name="Headphone Mic Boost Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x0001373c: IN OUT HP EAPD Detect
    Vref caps: HIZ 50 GRD 80 100
  EAPD 0x2: EAPD
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x20: IN VREF_HIZ
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 2
     0x0c* 0x0d</span></pre>

<p>
	  so Pin-ctls in line-in nodes is 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1454_32">
<span class="pln">Pin-ctls: 0x20: IN VREF_HIZ</span></pre>

<p>
	 3. now we have to send command to codec using hda-verb use below command in terminal for Line-In (External Microphone) <span><span>:</span></span>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1454_34">
<span class="pln">hda-verb 0x1a SET_PIN_WIDGET_CONTROL 0x20</span></pre>

<p>
	before send command you need to plug headphone in combojack , this will fix your issue but when you unplug and replug headphone again you need to send command everytime so to fix this use ALCPlufix 
</p>

<p>
	 
</p>

<p>
	 4. Open ALCPlufix project in Xcode , you need Xcode to build and modify source
</p>

<p>
	     <a class="ipsAttachLink ipsAttachLink_image" data-fileid="21610" href="https://osxlatitude.com/uploads/monthly_2019_02/384442702_ScreenShot2019-02-08at3_51_47PM.png.9ae34330425ddfaa0a371447c4569d51.png" rel="" data-fileext="png"><img alt="Screen Shot 2019-02-08 at 3.51.47 PM.png" class="ipsImage ipsImage_thumbnailed" data-fileid="21610" data-unique="gfl1ketfz" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_2019_02/1286153256_ScreenShot2019-02-08at3_51_47PM.thumb.png.ffad25a1b7cf2d2235b6d4b86fad01a3.png" width="1000" data-ratio="56.7"></a>
</p>

<p>
	 
</p>

<p>
	now change your node and Pin-ctls as in above image in 3 sections 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1454_38">
<span class="pln">hda-verb 0x18 SET_PIN_WIDGET_CONTROL 0x20 (Node18 Headphone)
hda-verb 0x1a SET_PIN_WIDGET_CONTROL 0x20 (Node1a Line-In)</span></pre>

<p>
	 
</p>

<p>
	5. Build project and copy ALCPlugFix to alc_fix folder and then run install.sh file
</p>

<p>
	 
</p>

<p>
	Now you don't need to worry about switching between combojack to mic 
</p>

<p>
	 
</p>

<p>
	<strong><span style="color: rgb(0, 128, 0);">Note : for better performance you must use Custom SSDT + CodecCommander + ALCPlugfix </span></strong>
</p>

<p>
	 
</p>

<p>
	if still combojack doesn't work for you, then you need good patch for your codec, feel free ask here 
</p>
<iframe allowfullscreen="" class="ipsEmbed_finishedLoading" data-embedcontent="" data-embedid="embed8823263241" scrolling="no" src="https://osxlatitude.com/applications/core/interface/index.html" style="height: 341px; overflow: hidden; max-width: 502px;" data-embed-src="https://osxlatitude.com/forums/topic/11167-applehda-patch-request/?do=embed"></iframe>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<font color="#d35400"><span style="caret-color: rgb(211, 84, 0);"><strong>PS:</strong> </span></font><span style="caret-color: rgb(211, 84, 0);">most of codec in my git repo using this method and working good so far <a href="https://github.com/insanelydeepak/cloverHDA-for-Mac-OS-Sierra-10.13" ipsnoembed="true" rel="external nofollow">https://github.com/insanelydeepak/cloverHDA-for-Mac-OS-Sierra-10.13</a></span>
</p>

<p>
	<span style="caret-color: rgb(211, 84, 0);"><span>you can switch between commands to get best result , below are pin-ctls i have found in different codec_dumps so far , you can use any below and this will work for you  </span></span>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9910_8">
<span class="pln">Pin-ctls: 0xc0: ALC292 (ALC3232)
Pin-ctls: 0x24: ALC288 (ALC3263)
Pin-ctls: 0x20: ALC298 (ALC3266)
Pin-ctls: 0x25: ALC255 (ALC3234)
Pin-ctls: 0xc0: ALC256 (ALC3246)
Pin-ctls: 0x40: ALC299 </span></pre>

<p>
	you can use this method on AppleALC, cloverHDA or DummyHDA ,
</p>

<p>
	latest version of AppleALC has feature to send command to codecs like CodecCommander , you can modify AppleALC info.plist to stop using CodecCommander, 
</p>

<p>
	<s>also while using AppleALC if you need  CodecCommander you must use SSDTALC.aml , otherwise AppleALC will conflict with CodecCommander</s>
</p>

<p>
	latest version of CodecCommander is aware of AppleALC so you don't SSDTALC.aml at all , you can use both at same time 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span>Hope this guide could help you in fixing these issue to enjoy a good sound </span>
</p>

<p>
	 
</p>

<p>
	<span>Regards</span>
</p>

<p>
	 
</p>

<p>
	<strong>Credits</strong>:<br><strong>RehabMan </strong>
</p>

<p>
	 
</p>

<p>
	 
</p>]]></description><guid isPermaLink="false">11316</guid><pubDate>Fri, 08 Feb 2019 15:52:32 +0000</pubDate></item><item><title>How to fix recent DSDT common error caused by IASL bug</title><link>https://osxlatitude.com/forums/topic/10375-how-to-fix-recent-dsdt-common-error-caused-by-iasl-bug/</link><description><![CDATA[<p>
	<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;">If you had been patching your own DSDT recently, you most likely encountered this common error dialogue</span></span>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="16423" href="https://osxlatitude.com/uploads/monthly_01_2018/post-1549-0-11876500-1516857505.png" rel=""><img alt="IASL_Bug2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="16423" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_01_2018/post-1549-0-11876500-1516857505_thumb.png" width="709" data-ratio="26.8"></a>
</p>

<p>
	<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;">when clicking on the 1st 2 errors, they'll take you to these set of codes</span></span>
</p>

<p>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		 
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span style="color:rgb(19,19,19);">If (LEqual (PM6H, One))</span></span></span>
		</p>

		<p>
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span style="color:rgb(19,19,19);">{</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>     CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>     Store (Zero, ECRW (If (PM0H</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;">             {</span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>                  CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>                  Store (Zero, F0LN)</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>             }))</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>}</span></span></span>
		</p>

		<p>
			 
		</p>
	</div>
</div>

<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
	 
</p>

<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
	 
</p>

<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
	<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>To fix the errors,  I created this patch which you can just apply with latest version of MacIASL</span></span></span>
</p>

<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		 
	</div>

	<div class="ipsSpoiler_contents">
		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"># Fix IASL bug on some DSDT</span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>into method label _CRS code_regex Store\s+\(Zero,\s+ECRW\s+\(If\s+\(PM0H\) replace_matched</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>begin</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>Store (Zero, ECRW) } If (PM0H)</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>end;</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			 
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>into method label _CRS code_regex Store\s+\(Zero,\s+F0LN\)\s+?\}\)\) replace_matched</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>begin</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>Store (Zero, F0LN)</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"><span>end;</span></span></span>
		</p>

		<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
			 
		</p>
	</div>
</div>

<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
	 
</p>

<p style="font-size:13.3px;font-family:'Courier New';color:rgb(19,19,19);">
	<span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;">This will fix all 3 errors listed above. Enjoy!</span></span>
</p>
]]></description><guid isPermaLink="false">10375</guid><pubDate>Thu, 25 Jan 2018 05:20:23 +0000</pubDate></item><item><title>How do I create a vanilla macOS installer?</title><link>https://osxlatitude.com/forums/topic/10264-how-do-i-create-a-vanilla-macos-installer/</link><description><![CDATA[<p>
	Hello guys,
</p>

<p>
	 
</p>

<p>
	This guide is there to be used as a reference or a starting point for anyone trying to install macOS on a non Apple machine.
</p>

<p>
	 
</p>

<p>
	This guide covers installation using CLOVER as it is very much the standard now. Also, most of the systems nowadays are UEFI enabled and CLOVER can take full advantage of it.
</p>

<p>
	 
</p>

<p>
	Things you will need:
</p>

<ul><li>
		An USB Drive with capacity of 16GB or larger (8GB might work too)
	</li>
	<li>
		An existing macOS install (Real mac/Hackintosh)
	</li>
	<li>
		A downloaded macOS Installer
	</li>
	<li>
		An internet connection
	</li>
	<li>
		A little bit of your time
	</li>
</ul><p>
	Note: It is not recommended to create a bootable USB using a VM as it corrupts the installer in some cases. Although If you have no other option at your disposal you may try resorting to it. You have been warned.
</p>

<p>
	 
</p>

<p>
	<strong>BIOS Settings:</strong>
</p>

<p>
	When it comes to installing OS X on a non Apple machine BIOS settings play a very important role. Here are a few common settings that should be changed if they exist
</p>

<ul><li>
		VT-d - Disabled (You may use dart=0 if this option is not in the BIOS)
	</li>
	<li>
		<strong>DvMT - 64MB (If you can change this setting, please do. If you set DvMT &gt; 64MB you will have to patch framebuffer to take advantage of it)</strong>
	</li>
	<li>
		DEP - Enabled
	</li>
	<li>
		SATA Mode - AHCI (Very important)
	</li>
	<li>
		Secure Boot - Disabled
	</li>
	<li>
		Legacy Boot - Disabled (I rarely boot legacy, you may leave it Enabled though, no harms)
	</li>
	<li>
		CSM Module - Disabled (Available as "Launch CSM" on ASUS. You may try toggling it. It tends to help in cases of garbled screen)
	</li>
	<li>
		Fast Boot - Dsiabled
	</li>
	<li>
		Boot from USB - Enabled
	</li>
</ul><p>
	<strong>Creating the installer USB:</strong>
</p>

<p>
	It is obvious but writing it anyway, make sure that if there exists any data on USB drive that will be erased. Take a backup before attempting the steps below.
</p>

<p>
	 
</p>

<p>
	There are two ways of creating the installer USB.
</p>

<p>
	 
</p>

<p>
	1. createinstallmedia Method (can be used on Real Macs. Only method that gives you a OS X recovery partition. Preferred.)
</p>

<p>
	2. BaseBinariesClone Method (Use when trying to boot legacy system or if the above method doesn't work for you.)
</p>

<p>
	 
</p>

<p>
	Please note that we are going to use a install creator utility written by me for both of the above methods. In that:
</p>

<p>
	 
</p>

<p>
	<strong>New Way </strong>refers to <strong>createinstallmedia</strong>
</p>

<p>
	<strong>Old Way </strong>refers to <strong>Base Binaries Clone</strong>
</p>

<p>
	So, choose your options accordingly.
</p>

<p>
	 
</p>

<p>
	Note: Base Binaries Clone doesn't work for 10.13.x or above
</p>

<p>
	 
</p>

<p>
	Getting the script:
</p>

<p>
	`
</p>

<p>
	Open up terminal and type:
</p>

<pre class="ipsCode prettyprint lang-">
cd ~/Desktop
curl -o bkit https://raw.githubusercontent.com/black-dragon74/Bkit/master/bkit
chmod a+x bkit
</pre>

<p>
	`
</p>

<p>
	You will have the utility on your Desktop.  Now we need to get hold of a few utlities:
</p>

<p>
	 
</p>

<p>
	Download CLOVER from <a data-ipb="nomediaparse" href="https://sourceforge.net/projects/cloverefiboot/" rel="external nofollow">here</a>
</p>

<p>
	Download FakeSMC from <a data-ipb="nomediaparse" href="https://bitbucket.org/RehabMan/os-x-fakesmc-kozlek/downloads/" rel="external nofollow">here</a>
</p>

<p>
	Download HFSPlus.efi from <a data-ipb="nomediaparse" href="https://raw.githubusercontent.com/black-dragon74/ASUS-A555LA-ACPI-OSX/master/HFSPlus.efi" rel="external nofollow">here</a>
</p>

<p>
	 
</p>

<p>
	If preparing for Sierra or above you <strong>might </strong>need <a data-ipb="nomediaparse" href="https://bitbucket.org/RehabMan/lilu/downloads/" rel="external nofollow">Lilu</a> and <a data-ipb="nomediaparse" href="https://bitbucket.org/RehabMan/intelgraphicsfixup/downloads/" rel="external nofollow">IntelGraphicsFixup</a>
</p>

<p>
	 
</p>

<p>
	Laptop Specific Note: I prefer to use external mouse and keyboard when installing macOS. If you want to use your internal keyboard and trackpad you might need <a data-ipb="nomediaparse" href="https://bitbucket.org/RehabMan/os-x-voodoo-ps2-controller/downloads/" rel="external nofollow">VoodooPS2Controller</a>. (Works only for Trackpads on PS2 Bus. You may try <a data-ipb="nomediaparse" href="https://github.com/alexandred/VoodooI2C/releases" rel="external nofollow">VoodooI2C</a> for trackpads on I2C bus)
</p>

<p>
	 
</p>

<p>
	For Elan1200 I2C trackpad use the kext attached in my ELAN1200 guide at: <a data-ipb="nomediaparse" href="https://osxlatitude.com/index.php?/topic/10165-guide-elan1200-i2c-trackpad/" rel="">https://osxlatitude.com/index.php?/topic/10165-guide-elan1200-i2c-trackpad/</a>
</p>

<p>
	 
</p>

<p>
	<strong>Formatting USB and Installing Clover:</strong>
</p>

<p>
	Time has come to invoke Bkit. Open terminal and type
</p>

<pre class="ipsCode prettyprint lang-">
~/Desktop/bkit
</pre>

<p>
	`
</p>

<p>
	Now just keep following the instructions from the script:
</p>

<ul><li>
		Choose your preferred way (New way or Old Way)
	</li>
	<li>
		Choose macOS version (Bkit supports 10.9 - 10.13. Requires Install macOS xxx.app in /Applications)
	</li>
	<li>
		Press Y to agree to the warning that says USB data will be erased.
	</li>
</ul><p>
	Now, Bkit will ask you for your USB device's disk identifier. Here is how to find the same. Open terminal and type:
</p>

<pre class="ipsCode prettyprint lang-">
diskutil list external
</pre>

<p>
	You will get a list of external USB devices along with disk identifier like, /dev/disk1 or /dev/disk2
</p>

<p>
	 
</p>

<p>
	<strong>You don't have to write full /dev/disk1 just type the "diskx" part. Like, for /dev/disk2 I would type disk2 in Bkit.</strong>
</p>

<p>
	 
</p>

<p>
	The script will now verify if the disk is indeed an external one (to save from your data loss it is used as a failsafe method).
</p>

<p>
	 
</p>

<p>
	Now it will ask you to install clover then type c (continue).
</p>

<p>
	 
</p>

<p>
	<strong>Installing CLOVER to USB for UEFI:</strong>
</p>

<ul><li>
		Open clover installer package and click on Continue.
	</li>
	<li>
		You will get a README. Select Continue.
	</li>
	<li>
		Now you will get a screen to select Install location. Choose "Change Install Location"
	</li>
	<li>
		Now select your USB drive and click continue
	</li>
	<li>
		You will get back to previous screen. Select "Customize"
	</li>
</ul><p>
	Tick the following options:
</p>

<ul><li>
		Install for UEFI booting only
	</li>
	<li>
		Select themes if you would like so (I use BGM)
	</li>
	<li>
		Select Drivers64UEFI &gt; AptioMemoryFix (Latest build as of Sat Mar  3 19:31:12 IST 2018 is attached to this post)
	</li>
</ul><p>
	Now click on "Install". Punch in your password and press ENTER (Return)
</p>

<p>
	 
</p>

<p>
	<strong>Installing CLOVER to USB for Legacy:</strong>
</p>

<ul><li>
		Open clover installer package and click on Continue.
	</li>
	<li>
		You will get a README. Select Continue.
	</li>
	<li>
		Now you will get a screen to select Install location. Choose "Change Install Location"
	</li>
	<li>
		Now select your USB drive and click continue
	</li>
	<li>
		You will get back to previous screen. Select "Customize"
	</li>
</ul><p>
	Tick the following options:
</p>

<ul><li>
		Install CLOVER in the ESP
	</li>
	<li>
		Boot-loader &gt; Install boot0af in MBR
	</li>
	<li>
		Clover EFI &gt; EFI 64bits SATA
	</li>
	<li>
		Select themes if you would like so (I use BGM)
	</li>
	<li>
		Select Drivers64UEFI &gt; OsxAptioFixDrv (You may try OsxAptioFix2Drv if it doesn't work for you)
	</li>
</ul><p>
	Now click on "Install". Punch in your password and press ENTER (Return)
</p>

<p>
	 
</p>

<p>
	Once finished, click on Close and get back to terminal where Bkit is waiting for our response.
</p>

<p>
	 
</p>

<p>
	Type continue/c at Bkit's prompt. It will now verify CLOVER installation and then proceed to copy installation files.
</p>

<p>
	 
</p>

<p>
	<strong>Please DO NOT close Terminal until you get confirmation message from the tool. It may take 5-10 mins for the script to finish (might take longer on slow machines)</strong>
</p>

<p>
	 
</p>

<p>
	<strong>A successful run looks like this:</strong>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="15903" href="https://osxlatitude.com/uploads/monthly_12_2017/post-86692-0-83617800-1512853503.jpg" rel="" data-fileext="jpg"><img alt="term_gb_bkit.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="15903" src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-src="https://osxlatitude.com/uploads/monthly_12_2017/post-86692-0-83617800-1512853503_thumb.jpg" width="674" data-ratio="53.71"></a>
</p>

<p>
	 
</p>

<p>
	<strong>Preparing to boot USB:</strong>
</p>

<p>
	Now as we are mostly done with everything, in order for CLOVER to be able to boot macOS install it needs the kexts and a config.plist file.
</p>

<p>
	 
</p>

<p>
	You have already downloaded the required kexts above. Unzip them and then open your USB drive's EFI partition.
</p>

<p>
	 
</p>

<p>
	Copy the unzipped kexts and then paste then into: USB's EFI/EFI/CLOVER/kexts/Other
</p>

<p>
	 
</p>

<p>
	Copy downloaded HFSPlus.efi in: USB's EFI/EFI/CLOVER/drivers64UEFI (VBoxHfs is disabled as it is not that reliable)
</p>

<p>
	 
</p>

<p>
	Now we need to install a proper config.plist file. Download the one attached to this post and then paste it in: USB's EFI/EFI/CLOVER
</p>

<p>
	 
</p>

<p>
	<strong>Make double sure that the name of the file you just pasted is "config.plist". CLOVER won't read any other config file.</strong>
</p>

<p>
	 
</p>

<p>
	<strong>Booting USB:</strong>
</p>

<ul><li>
		Plug your USB device into a USB port (USB2 port recommended)
	</li>
	<li>
		Keep pressing your BIOS hotkey at POST screen (Esc key for ASUS laptops)
	</li>
	<li>
		Select "UEFI: Your USB"
	</li>
	<li>
		You will get CLOVER boot screen. (Hint: You may press F4 now to dump origin ACPI tables. It is required later)
	</li>
	<li>
		Press ENTER or wait for 5 seconds to boot automatically.
	</li>
</ul><p>
	 
</p>

<p>
	<strong>General notes:</strong>
</p>

<ul><li>
		Bkit can also be used to create installer for real macs. Use "bkit -nc" arg for that.
	</li>
	<li>
		You might consider having ethernet connected while installing macOS. Download kexts for (<a data-ipb="nomediaparse" href="https://bitbucket.org/RehabMan/os-x-realtek-network/downloads/" rel="external nofollow">Realtek</a> | <a data-ipb="nomediaparse" href="https://bitbucket.org/RehabMan/os-x-intel-network/downloads/" rel="external nofollow">Intel</a>) and paste them in USB's EFI/EFI/CLOVER/kexts/Other
	</li>
	<li>
		The plist file just gets you to installer screen. It does nothing even close to a full install.
	</li>
	<li>
		If you get a reboot it is likely due to DvMT prealloc set to less than 64MB. You may use <a data-ipb="nomediaparse" href="https://github.com/BarbaraPalvin/IntelGraphicsDVMTFixup/releases" rel="external nofollow">IntelGraphicsDVMTFixup</a> with Lilu to overcome this issue. However, after installing you must patch framebuffer as IntelGraphicsDVMTFixup has a heavy reliance on framebuffer data and will panic when you use patches for HDMI or Cursor Bytes.
	</li>
	<li>
		If you get no device to boot in CLOVER screen it is surely due to missing HFSPlus.efi (Double check that you have it)
	</li>
	<li>
		If you get some error related to window server it is because of your Nvidia/AMD GPU trying to load up. To get around you will have to disable the device using ACPI patching (Will save it for some other day)
	</li>
</ul><p>
	<strong>Problem Reporting:</strong>
</p>

<p>
	If you face any problems please post them below. As this is a preinstall process you won't be able to get any logs or debug info hence, post your issue with screen capture (photo) of the panic along with your USB device's CLOVER folder.
</p>

<p>
	I'll be glad to help.
</p>

<p>
	 
</p>

<p>
	Cheers
</p>

<p>
	<a data-fileid="15905" href="https://osxlatitude.com/applications/core/interface/file/attachment.php?id=15905" rel="" data-fileext="zip">config.plist.zip</a>
</p>

<p>
	<a data-fileid="16758" href="https://osxlatitude.com/applications/core/interface/file/attachment.php?id=16758" rel="" data-fileext="zip">AptioMemoryFix.efi.zip</a>
</p>]]></description><guid isPermaLink="false">10264</guid><pubDate>Sat, 09 Dec 2017 21:05:49 +0000</pubDate></item><item><title>How to fix black screen in High Sierra</title><link>https://osxlatitude.com/forums/topic/10236-how-to-fix-black-screen-in-high-sierra/</link><description><![CDATA[<p>Hello friends,<br>Many of you have noticed that after upgrade to high sierra whenever you machine sleeps, be it a display sleep or a system sleep, the screen turns out fully white with garbled lines, or it might turn black with just the cursor moving. If you try and press few keys you will find out that the machine works but the display doesn't.<br> <br>If you want to know a little background info, read on, else skip to fix.<br> <br>On my ASUS R541UJ this bugged me a lot. I tried hell lot of things like, re patching DSDT, trying with all 15 ig-platform-id (for Kabylake), still, the issue persisted.<br> <br>I also have an ASUS A555LA (which I am trying to make a perfect MacBook Air). So, in my process of making my A555LA a perfect MacBook I added a ALS (ambient light sensor device) and then, changed vendor-id along with product-id of the laptop's display to that of Apple's display i.e. PID: 0x9cf2 VID: 0x610 for MacBook Air's display..<br> <br>Whatever I do on my A555LA, I replicate the same on my 2 other ASUS laptops. So, I did the same on my R541UJ (the one affected by this annoying bug)<br> <br>And to my surprise, that issue was fixed! Then, I disabled the ALS device in my custom SSDT (I generally make a dynamic configurable SSDT that works for all my machines, See <a data-ipb="nomediaparse" href="http://github.com/black-dragon74/ASUS-A555LA-ACPI-OSX" rel="external nofollow">here</a>) and that issue didn't come back.<br> <br>So, I finally came to the conclusion that it was due to incorrect vendor-id and product-id of my display in IODisplayEDID or EDID.<br> <br>Enough talking, let's see how you can fix this in a few simple steps.<br> <br><strong>How to fix:</strong><br>In order to fix this, as you might already know from above, we need to change our display's product and vendor id to that of Apple's display.<br> <br>There are 3 ways for this, Injecting custom EDID using clover, Using a display override, Using a custom override kext (DispalyMergeNub). I love CLOVER so will be covering that part of the fix in this guide. Also, injecting EDID with clover is preferred as it will also work when booting recovery partition. (Not the same with Display Overrides and DisplayMergeNub)<br> <br>Update your CLOVER to latest version (nothing to do with this fix but is a good idea to have you boot loader up to date)<br> <br>Download Darwin Dumper from <a data-ipb="nomediaparse" href="https://bitbucket.org/blackosx/darwindumper/downloads/" rel="external nofollow">here</a><br> <br>Download FixEDID app from <a data-ipb="nomediaparse" href="http://www.insanelymac.com/forum/topic/290130-fixedid-v232-application-to-generate-overrides-automatically-for-apple-displays/" rel="external nofollow">here</a><br> <br>Download my script attached to this post.<br> <br>Open Darwin dumper and uncheck everything except EDID. Then, select run from the left pane. It will dump your EDID and then it will open a folder where it dumped the files.<br> <br>In the folder you will find an EDID folder. Upon opening it you will see 3 files namely, EDID.bin, EDID.hex, EDID.txt (All three files are your EDID dump except in different formats).<br> <br>We need the one in BIN format for FixEDID.app<br> <br>Copy EDID.bin from DarwinDump*/EDID to your Desktop (Dump* is the darwinDumper output folder)<br> <br>Open FixEDID.app and select open EDID binary file. Choose the EDID.bin file you copied to desktop.<br> <br>If you look below "Open EDID binary file" button, you will see a drop down menu saying "Apple iMac Display 16:10"<br> <br>Select it and choose "Apple MacBook Air Display 16:9" (Note: You may try experimenting with different models, I personally use "Apple MacBook Air Display 16:9" on my A555LA and "Apple MacBook Pro Display 16:10" on my R541UJ)<br> <br>Make sure display class is set to "AppleBacklightDisplay" for we are overriding our internal LVDS display. (AppleDisplay is used for external displays like that on HDMI or DP)<br> <br>Click on Make button (Note: You won't see any sort of confirmation but the app has done it's work)<br> <br>Close FixEDID and come back to your desktop. You will see a host of new files there. (3 files to be precise)<br> <br>For this guide, you just need <strong>DisplayVendorID-xxx </strong>folder. Open it any then you will find a file named "DisplayProductID-xxxx"<br> <br>Copy this file to the Desktop.<br> <br>Now we need to extract EDID that is in base64 format and then convert it to HEX format as required by CLOVER.<br> <br>Worry not, I got you covered. Now is the time to run my script.<br> <br>Assuming my downloaded script is in Downloads folder, open terminal and type:<br> </p>
<pre class="ipsCode prettyprint lang-auto linenums:0">
# Change working directory
cd ~/Downloads

# Make script executable
chmod a+x get_edid.sh

# Run and get EDID to inject
./get_edid.sh ~/Desktop/DisplayProductID*
</pre>
<p>`<br>This script wil give you EDID you need to inject using CLOVER, like:</p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://osxlatitude.com/uploads/monthly_11_2017/post-86692-0-80645300-1511937108.jpeg" data-fileid="15749" rel=""><img src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-fileid="15749" class="ipsImage ipsImage_thumbnailed" alt="term.jpeg" data-src="https://osxlatitude.com/uploads/monthly_11_2017/post-86692-0-80645300-1511937108_thumb.jpeg" width="650" data-ratio="60"></a><br> <br>Copy that EDID and paste it in your config.plist under Graphics &gt; EDID &gt; Custom (You can use clover configurator as that will save you from manual PLIST editing which is not recommended for novice users)<br> <br>Also, set Boolean Inject to True (YES) under config.plist &gt; Graphics &gt; EDID.<br> <br>See below screenshots for reference:<br> <br><strong>Any Plist Editor(Xcode):</strong><br><a class="ipsAttachLink ipsAttachLink_image" href="https://osxlatitude.com/uploads/monthly_11_2017/post-86692-0-71525300-1511936150.png" data-fileid="15746" rel=""><img src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-fileid="15746" class="ipsImage ipsImage_thumbnailed" alt="Screen Shot 2017-11-29 at 11.44.05 AM.png" data-src="https://osxlatitude.com/uploads/monthly_11_2017/post-86692-0-71525300-1511936150_thumb.png" width="467" data-ratio="15.63"></a><br> <br><strong>Clover Configurator:</strong><br><a class="ipsAttachLink ipsAttachLink_image" href="https://osxlatitude.com/uploads/monthly_11_2017/post-86692-0-93974200-1511936160.png" data-fileid="15747" rel=""><img src="https://osxlatitude.com/applications/core/interface/js/spacer.png" data-fileid="15747" class="ipsImage ipsImage_thumbnailed" alt="Screen Shot 2017-11-29 at 11.44.30 AM.png" data-src="https://osxlatitude.com/uploads/monthly_11_2017/post-86692-0-93974200-1511936160_thumb.png" width="1200" data-ratio="18.08"></a><br> <br>Reboot and Voilà! You won't face that dreaded issue ever again until you remove custom EDID. LOL.</p>
<p> </p>
<p>You can verify if the EDID is being injected by opening terminal and typing:</p>
<pre class="ipsCode prettyprint lang-">
ioreg -l | grep "IODisplayEDID" </pre>
<p>`</p>
<p>The output should match the output of get_edid.sh</p>
<p> </p>
<p><strong>Problem Reporting:</strong></p>
<p>See <a href="https://osxlatitude.com/index.php?/topic/10209-how-to-generate-proper-problem-reporting-files/" rel="">How to generate proper problem reporting files</a></p>
<p> <br><strong>Note: This issue mostly seems to effect machines running High Sierra on Kabylake hardware (maybe Skylake too?). I have personally tested this on Sierra (with and without skylake spoofing) turns out that Sierra is not affected by this.</strong></p>
<p> </p>
<p><strong>Note: <span style="color:#ff0000;">Upon booting up with custom EDID in place you will see that your colors are not such bright and crisp. YMMV. (Coz our's isn't a Apple branded display <img src="https://osxlatitude.com/applications/core/interface/js/spacer.png" alt=":|" data-emoticon="1" srcset="https://osxlatitude.com/uploads/emoticons/mellow@2x.png 2x" width="15" height="17" data-src="https://osxlatitude.com/uploads/emoticons/default_icon_neutral.gif"></span></strong><strong><span style="color:#ff0000;"> </span></strong><strong><span style="color:#ff0000;">). To fix that, open system preferences &gt; Display. Select "Color" tab and choose "Apple RGB Display"</span></strong></p>
<p> </p>
<p>Hope this helped someone!</p>
<p>Regards</p>
<p><a href="https://osxlatitude.com/applications/core/interface/file/attachment.php?id=15880" data-fileid="15880" rel="">get_edid.zip</a></p>
]]></description><guid isPermaLink="false">10236</guid><pubDate>Wed, 29 Nov 2017 06:43:34 +0000</pubDate></item><item><title>How do I remove a Recovery partition?</title><link>https://osxlatitude.com/forums/topic/9968-how-do-i-remove-a-recovery-partition/</link><description><![CDATA[
<p>Recovery partitions are created by default when installing OS X/macOS for some years now. Useful on Clover-based installations but not on Chameleon-Enoch ones because these cannot boot recovery partitions. As such, it can be desirable to remove them to retrieve the (small) disk space they take and suppress them from the list of partitions.<br> <br>This is achieved with <strong>Terminal</strong> commands through the following method:</p>
<ul class="bbc"><li>verify volumes arrangement and identify main + recovery partition disk identifier. The recovery partition will directly follow the main volume to which it relates.</li></ul>
<pre class="ipsCode prettyprint lang-auto linenums:0">
diskutil list</pre>
<ul class="bbc"><li>reformat recovery partition under HFS+ type and new name (no space)</li></ul>
<pre class="ipsCode prettyprint lang-auto linenums:0">
diskutil eraseVolume HFS+ &lt;new name&gt; &lt;disk identifier&gt; (eg: [...] Blank disk0s3)</pre>
<ul class="bbc"><li>recover ex-recovery/Blank partition disk space by merging it with its associated main volume (listed right above it).</li></ul>
<pre class="ipsCode prettyprint lang-auto linenums:0">
diskutil mergePartitions HFS+ &lt;main Volume&gt; &lt;main disk id&gt; &lt;blank disk id&gt; (eg: [...] Sierra disk0s2 disk0s3)</pre>
<p>NB: Partitions have to be sequential to be merged. For help on the <strong>diskutil</strong> command, type <span style="color:#0000cd;"><em><strong>man diskutil</strong></em></span>.</p>
]]></description><guid isPermaLink="false">9968</guid><pubDate>Wed, 09 Aug 2017 11:35:41 +0000</pubDate></item><item><title>How do I revert CoreStorage logical volume/partition to legacy mode?</title><link>https://osxlatitude.com/forums/topic/9967-how-do-i-revert-corestorage-logical-volumepartition-to-legacy-mode/</link><description><![CDATA[
<p>CoreStorage logical volume management was introduced by Apple in Lion. Since Yosemite, Apple has forced its utilisation by default. Whilst this is Ok with Clover-based installations, it is not with Chameleon/Enoch-based ones because these cannot boot CoreStorage volumes. As such, after fresh installations and, sometimes, updates (depending on how the installation was made), it's therefore necessary to revert CoreStorage volumes to legacy mode.<br> <br>This is achieved with <strong>Terminal</strong> commands through the following method:</p>
<ul class="bbc"><li>verify CoreStorage status and identify volume</li></ul>
<pre class="ipsCode prettyprint lang-auto linenums:0">
diskutil list</pre>
<ul class="bbc"><li>if logical volume found/listed, revert to legacy volume mode</li></ul>
<pre class="ipsCode prettyprint lang-auto linenums:0">
diskutil CoreStorage revert &lt;disk identifier&gt; (eg: disk1)</pre>
<ul class="bbc"><li>verify return to legacy mode</li></ul>
<pre class="ipsCode prettyprint lang-auto linenums:0">
diskutil list</pre>
<p>NB: For help on the <strong>diskutil</strong> command, type <span style="color:#0000cd;"><em><strong>man diskutil</strong></em></span>.</p>
]]></description><guid isPermaLink="false">9967</guid><pubDate>Wed, 09 Aug 2017 11:28:04 +0000</pubDate></item><item><title>How do I disable hibernation for Sleep?</title><link>https://osxlatitude.com/forums/topic/9966-how-do-i-disable-hibernation-for-sleep/</link><description><![CDATA[<p>
	Hibernation is enabled by default after any fresh installation of Apple's OS; sometimes, it's even re-enabled after an update. Although Clover has supported hibernation for some time, it can still cause issues on Hackintoshes and it's often desirable to disable hibernation in order to revert to plain old sleep.
</p>

<p>
	 
</p>

<p>
	This is achieved through the following <strong>Terminal</strong> commands:
</p>

<pre class="ipsCode prettyprint">
sudo pmset -a hibernatemode 0</pre>

<p>
	`
</p>

<p>
	To delete the sleep file:
</p>

<pre class="ipsCode prettyprint">
sudo rm -f /var/vm/sleepimage</pre>

<p>
	`
</p>

<p>
	To point the sleep file towards null device (though sleep file may still re-appear):
</p>

<pre class="ipsCode prettyprint">
sudo pmset -a hibernatefile /dev/null</pre>

<p>
	`
</p>

<p>
	To verify hibernation setup:
</p>

<pre class="ipsCode prettyprint">
pmset -g</pre>]]></description><guid isPermaLink="false">9966</guid><pubDate>Wed, 09 Aug 2017 11:03:03 +0000</pubDate></item><item><title>How do I verify graphics acceleration (QE/CI)?</title><link>https://osxlatitude.com/forums/topic/9965-how-do-i-verify-graphics-acceleration-qeci/</link><description><![CDATA[
<p>Graphics acceleration is one of the most important required feature to run OS X/macOS properly. Without it, OS performance is poor to extremely poor depending on the hardware specs of the computer, especially the CPU.</p>
<p> </p>
<p>Graphics acceleration can be verified through the following (non-exhaustive) actions:</p>
<ul>
<li>Translucent Finder's bar (most visible from Snow Leopard to Mavericks)</li>
<li>LaunchPad through Dock icon (clicking in and out of LaunchPad should be quick and totally smooth)</li>
<li>DVD player app -&gt; Help Menu -&gt; Show Supported Features (all should be enabled)</li>
<li>Desktop switching through Ctrl-Up/Ctrl-Down/Ctrl-Left/Ctrl-Right (should be quick and smooth)</li>
<li>Desktop and Screen Saver PrefPane (all desktop pictures and screen savers should show Ok)</li>
</ul>
<p> </p>
<p>Without graphics acceleration, system will feel laggy and graphics glitches will occur.</p>
]]></description><guid isPermaLink="false">9965</guid><pubDate>Wed, 09 Aug 2017 10:56:07 +0000</pubDate></item><item><title>How do I enable Trim on non-Apple SSD?</title><link>https://osxlatitude.com/forums/topic/9963-how-do-i-enable-trim-on-non-apple-ssd/</link><description><![CDATA[
<p>Since Yosemite 10.10.4, OS X/macOS supports trimming for non-Apple SSD. The facility can be enabled through the following <strong>Terminal</strong> command:</p>
<pre class="ipsCode prettyprint">
sudo trimforce enable</pre>
<p>`</p>
<p>For earlier versions, the IOAHCIBlockStorage kext must be binary patched to suppress whitelisting for Apple-branded SSDs only:</p>
<pre class="ipsCode prettyprint">
Find:       004150504c452053534400     (=&gt; " APPLE SSD ")
Replace by: 0000000000000000000000     (=&gt; "           ")</pre>
<p>NB: this patch can also be used for Yosemite 10.10.4 and later.in</p>
<p> </p>
<p>I believe the patch was 1st reported at InsanelyMac. It's one of the kext patches provided by default in <strong>Clover Configurator</strong>.</p>
]]></description><guid isPermaLink="false">9963</guid><pubDate>Wed, 09 Aug 2017 10:14:26 +0000</pubDate></item><item><title>How do I repair permissions and rebuild the cache  in Mavericks and earlier?</title><link>https://osxlatitude.com/forums/topic/9962-how-do-i-repair-permissions-and-rebuild-the-cache-in-mavericks-and-earlier/</link><description><![CDATA[
<p>It's required after any kext addition, removal or modification, whether in <em><strong>/S/L/E</strong></em> or in <em><strong>/L/E</strong></em>.<br> <br>To repair permissions, type the following <strong>Terminal</strong> commands:</p>
<pre class="ipsCode prettyprint lang-auto linenums:0">
sudo chmod -Rf 755 /S*/L*/E*
sudo chmod -Rf 755 /L*/E*
sudo chown -Rf 0:0 /S*/L*/E*
sudo chown -Rf 0:0 /L*/E*</pre>
<p>`<br>To rebuild the cache, type the following <strong>Terminal</strong> command:</p>
<pre class="ipsCode prettyprint lang-auto linenums:0">
sudo touch -f /S*/L*/E*
sudo touch -f /L*/E*
</pre>
<p>The cache should then automatically rebuild itself.</p>
]]></description><guid isPermaLink="false">9962</guid><pubDate>Wed, 09 Aug 2017 10:05:04 +0000</pubDate></item></channel></rss>
