<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hardware on A&#43; programming moments</title>
    <link>https://aplus.rs/categories/hardware/</link>
    <description>Recent content in Hardware on A&#43; programming moments</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 16 Mar 2024 09:10:10 +0000</lastBuildDate>
    
	<atom:link href="https://aplus.rs/categories/hardware/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Hackintosh is (almost) dead</title>
      <link>https://aplus.rs/2024/hackintosh-almost-dead/</link>
      <pubDate>Sat, 16 Mar 2024 09:10:10 +0000</pubDate>
      
      <guid>https://aplus.rs/2024/hackintosh-almost-dead/</guid>
      <description>&lt;p&gt;While I knew about and even tried &lt;a href=&#34;https://aplus.rs/2004/mac-os-xhappily-running-on-my-amd-athlon/&#34;&gt;various very early attempts&lt;/a&gt; to run macOS on non-Apple hardware, it wasn’t until &lt;a href=&#34;https://aplus.rs/2020/hmac/&#34;&gt;early 2020&lt;/a&gt; that I’ve built my first proper one. Then I built several more which are still seeing daily use.&lt;/p&gt;
&lt;p&gt;I &lt;a href=&#34;https://aplus.rs/2020/missing-developer-mac/&#34;&gt;explained my reasoning&lt;/a&gt; why it was worthwhile to attempt it. The technology was mostly there thanks to a group of dedicated hackers and timing &lt;a href=&#34;https://aplus.rs/2020/hmac-2020/&#34;&gt;was just right&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But if ever there was a time to do it, it’s now.&lt;br&gt;
Apple is transitioning to their own CPUs/GPUs over the next two years. Several years from now, I see myself purchasing whatever desktop Apple Silicon-based machine is there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I also offered a prognosis which turned out partially true:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Many will tell you that buying Intel-based hardware from Apple is buying obsolete models. I don’t really agree with that since it’s a given that those Intel-based Macs will be supported for 7-10 years of future macOS updates.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s true that latest macOS 14 (Sonoma) still supports the latest generations of Intel Macs and it’s very likely that at least one or two major versions will still be compatible. But there’s one particular development that is de-facto killing off the Hackintosh scene.&lt;/p&gt;
&lt;p&gt;In Sonoma, &lt;strong&gt;Apple has completely removed all traces of driver support for their oldest WiFi/Bt cards&lt;/strong&gt;, namely various Broadcom cards that they last used in 2012/13 iMac / MacBook models. Those Mac models are not supported by macOS for few years now thus it’s not surprising the drivers are being removed. Most likely reason is that Apple is moving drivers away from &lt;code&gt;.kext&lt;/code&gt; (Kernel Extensions) to &lt;code&gt;.dext&lt;/code&gt; (DriverKit) thus cleaning up obsolete and unused code from macOS. They did the same with Ethernet drivers in Ventura.&lt;/p&gt;
&lt;p&gt;Those particular cards were the key ingredient to many fully functional Hackintosh builds for simple reason: they worked out of the box with every single (so-called) iService Apple has: Messages, FaceTime, AirDrop, Continuity, Handoff - you name it. &lt;em&gt;Everything worked.&lt;/em&gt; Despite the &lt;a href=&#34;https://dortania.github.io/OpenCore-Legacy-Patcher/SONOMA-DROP.html#versioning&#34;&gt;valiant efforts of OCLP crew&lt;/a&gt; to make workarounds, those cards can work in Sonoma &lt;em&gt;only&lt;/em&gt; if you &lt;a href=&#34;https://github.com/perez987/Broadcom-wifi-back-on-macOS-Sonoma-by-OCLP&#34;&gt;seriously downgrade&lt;/a&gt; the macOS security.&lt;/p&gt;
&lt;p&gt;There was some hope that &lt;a href=&#34;https://github.com/OpenIntelWireless/itlwm&#34;&gt;OpenIntelWireless&lt;/a&gt; could replace those cards due to &lt;a href=&#34;https://github.com/OpenIntelWireless&#34;&gt;amazing work&lt;/a&gt; zxystd did in the last 4 years. I mean, the WiFi speeds in macOS with Intel’s WiFi6 cards are &lt;a href=&#34;https://forum.amd-osx.com/threads/wi-fi-speed-test-intel-ax200-vs-bcm94360ng.4756/&#34;&gt;nothing short of spectacular&lt;/a&gt;. But Apple’s continued cleanup and rewrite of their driver stack has pretty much killed-off any reliable support for Message and FaceTime despite iCloud sync still working great. zxystd &lt;a href=&#34;https://github.com/OpenIntelWireless/itlwm/issues/953#issuecomment-1920759538&#34;&gt;describes the new mountain to climb&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;From Sonoma, Apple drops IO80211FamilyLegacy, I build AirportItlwmV2 on the top of IO80211Family, but using some hacks, you can simply interpret it as me implementing a set of IO80211FamilyLegacy myself. &lt;em&gt;This implementation may have side effects such as the iService not working etc&lt;/em&gt;. Since IO80211Family uses skywalk API instead of original Ethernet API (Also we can foresee that the Ethernet API will also be dropped in macOS 15), without these hacks we should follow the Apple&amp;rsquo;s API and &lt;em&gt;rewrite the whole driver&lt;/em&gt;, that&amp;rsquo;s what I would never do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In 14.4, Apple &lt;a href=&#34;https://www.tonymacx86.com/threads/usb-problems-after-14-4-update.329275/&#34;&gt;seem to have made changes&lt;/a&gt; in how USB subsystem works too. This was always a tedious challenge but if minor updates can almost &lt;a href=&#34;https://forum.amd-osx.com/threads/update-from-14-3-1-to-14-4.5013/&#34;&gt;brick the build&lt;/a&gt; it becomes a headache. Still…USB is a known problem with known solution thus it’s annoying but solvable.&lt;/p&gt;
&lt;p&gt;WiFi with iServices is sadly not.&lt;/p&gt;
&lt;p&gt;I’ve long held the opinion that it would not be CPU nor GPU changes that kill the Hacks — it would be lack of reliable WiFi drivers. And now, ~4 years later, Hackintosh hits a brick wall of no easy WiFi options available, at all.  Given how much of the macOS useful features is dependent on presence of particular WiFi chips — a decision of Apple developers I really can’t understand — I can’t really consider builds without those features to call themselves Mac.&lt;/p&gt;
&lt;p&gt;I did not come to this conclusion just by reading the forums.&lt;/p&gt;
&lt;p&gt;I have a rag-tag build sitting on my desk for several months now. It was supposed to be a quick proof-of-concept Sonoma build with Intel AX200 WiFi/Bt, AMD CPU and GPU, NVMe SSDs - everything that modern Mac should work with. It’s everything that my current Hackintosh is, with SIP intact, incremental updates working on their own etc — a perfect Mac.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2024/rag-tag-build.jpg&#34; alt=&#34;My wannabe Sonoma-compatible Mac&#34;&gt;&lt;/p&gt;
&lt;p&gt;But pretty much since day one I encountered one problem after another. Things were so volatile and random that it was hard to believe, at times. Like —&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One day Ethernet controller (Intel I225-V) would work great, the next day it would just hard-crash the entire machine. No freaking idea why. Tried multiple ways and custom drivers to make it work but nothing was perfectly stable.&lt;/li&gt;
&lt;li&gt;WiFi works fantastic, iCloud is perfect but Messages/FaceTime wouldn’t connect at all. In either Monterey, Ventura or Sonoma. That same card worked perfectly on another motherboard with Monterey and Ventura, no issues with Messages / FaceTime at all. Again — no idea why.&lt;/li&gt;
&lt;li&gt;Bluetooth would work great for days but if I turn it off and restart the machine, something would become so messed up that it starts being recognised as BCM_4350C2 chip instead of Intel AX200. Only a round-trip to Windows 11 would somehow bring the chip into a state that &lt;a href=&#34;https://github.com/OpenIntelWireless/IntelBluetoothFirmware&#34;&gt;IntelBluetooth driver&lt;/a&gt; can work with it.&lt;/li&gt;
&lt;li&gt;Sonoma 14.3.1 works great on this build. But 14.4 update won’t install. It starts booting the installer and just reboots back almost immediately.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hence — &lt;strong&gt;Hackintosh is on its death bed&lt;/strong&gt;. Some things will work for few more months or maybe even years, depending on what you use it for and whether lack of WiFi bothers you or not. But not for me. I can live without AirDrop, Continuity and Handoff but Messages and FaceTime must work. There’re also some other things Sonoma brings that are important to me thus I want to update to it. Coupled with described lack of reliability and fretting if next minor or major update would leave me dry — nah, not worth it.&lt;/p&gt;
&lt;p&gt;I don’t really complain. I had a good run which helped me skip over the worst price/performance Mac lineup that I remember. There’re now plenty good choices within the current crop of M1 / M2 / M3 machines and I’ll be following eBay closely for a good used Mac mini / studio models. Or maybe even splurge on something new.&lt;/p&gt;
&lt;p&gt;Lest I forget — if macOS Ventura works for you, stay on it! That’s still perfectly stable without a single issue across a variety of build options.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Just to clarify one thing, to preempt someone saying Apple did this on purpose to kill off Hackintosh: &lt;strong&gt;they didn’t&lt;/strong&gt;. Apple never cared about Hackintosh scene, it’s entirely irrelevant to their business. They did what they should be doing, improving the macOS codebase. It’s always a good thing to remove obsolete and deprecated code thus Apple is doing the right thing for their product.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mac Studio is perfect Mac for app developers</title>
      <link>https://aplus.rs/2022/mac-studio-for-developers/</link>
      <pubDate>Fri, 11 Mar 2022 18:00:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2022/mac-studio-for-developers/</guid>
      <description>&lt;p&gt;Two years ago I &lt;a href=&#34;https://aplus.rs/2020/missing-developer-mac/&#34;&gt;lamented the gaping hole&lt;/a&gt; in the Apple&amp;rsquo;s desktop Mac lineup. I ended that post with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I would be perfectly happy to pay $3,000+ for a machine with that [16-ish core] CPU housed in Apple-designed case and cooling. If only Apple offered it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Few days ago, Apple released &lt;em&gt;exactly&lt;/em&gt; what I asked for: &lt;a href=&#34;https://www.apple.com/newsroom/2022/03/apple-unveils-all-new-mac-studio-and-studio-display/&#34;&gt;Mac Studio is a very powerful workstation in 3.6L case&lt;/a&gt;. CPU can have up 10 (M1 Max) or 20 (M1 Ultra) cores paired with impressive GPU.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2022/mac-studio-internals.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s unreal how much power they packed into such a small chassis. I knew they could do this. Apple designed custom PSU of about 370W that can power M1 Ultra and with SoC being the entire machine, 2/3 of the volume is used for whisper-quiet cooling solution. Perfection.&lt;/p&gt;
&lt;p&gt;In the last two years, we have invested into 3 rather powerful ad-hoc Mac builds. I will wait for the proper ROI on all of them but in about 2 or 3 years our small agency will transition to Mac Studio(s). There is no doubt in my mind – these machines are amazing purchase for application developers and will easily last you 5+ years for any kind of app development you do. &lt;em&gt;Anything&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Difference between default machines is significant thus I won&amp;rsquo;t recommend which one to buy — do the one you can afford. Both are more than capable. What I can advise is to not pay extra for SSD. This is desktop machine with multiple Thunderbolt 4 ports which means you can add as much super-fast external storage as you need over time. 40Gbps is more than enough even for 4x external NMVe RAID boxes.
As for memory, I am using 32GB in all my machines and am nowhere near to be limited. But with memory being non-upgradable, I would opt for 64GB if possible; not the end of the world if not.&lt;/p&gt;
&lt;p&gt;Apple is truly back in the pro market.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Go the F to sleep</title>
      <link>https://aplus.rs/2021/hackintosh-sleep-wake/</link>
      <pubDate>Sat, 23 Oct 2021 13:09:40 +0000</pubDate>
      
      <guid>https://aplus.rs/2021/hackintosh-sleep-wake/</guid>
      <description>&lt;p&gt;In the AMD Hackintosh land, successfully configuring your build to perform sleep / wake is one of the “Holly shit! It works!” moments. &lt;br&gt;
Even though Intel and AMD CPUs are largely compatible (with few very notable differences), their corresponding chipsets are different story. Until recently, Apple exclusively used Intel CPUs and their chipsets (to some degree). Thus it’s not surprising that OpenCore builds feature sleep / wake pretty much out of the box &lt;em&gt;if&lt;/em&gt; you use the identical components as per your chosen SMBIOS value.&lt;/p&gt;
&lt;p&gt;Same with many other aspects of computing: in recent Big Sur builds, my &lt;a href=&#34;https://aplus.rs/2020/hmac-2020/&#34;&gt;Z490+i7-10700K+RX-5500XT build&lt;/a&gt; started randomly showing black screen for a second or two before getting back to normal. While harmless in general, it was super annoying and seriously disrupted day to day work of my wife (she’s using that build). Originally I used &lt;code&gt;iMacPro1,1&lt;/code&gt; as SMBIOS even though the hardware build was pretty much replica of &lt;code&gt;iMac20,1&lt;/code&gt;. Lô and behold — simply changing the SMBIOS to the latter made all these black screen problems disappear.&lt;br&gt;
I am sure some other solution could be found with enough poking around the ACPI but as we will see – that’s a long and painstaking road.&lt;/p&gt;
&lt;p&gt;AMD chipsets are a different story, since they use different device components and their respective configurations and firmwares. Especially with USB controllers: X570 chipset has 3 USB controllers in itself. Coupled with the fact that manufacturers can write significantly different ACPI for the same darn thing —  for some reason &lt;a href=&#34;https://forum.amd-osx.com/index.php?threads/macos-monterey-patches-released.1892/page-5#post-12660&#34;&gt;MSI-made boards can’t boot Monterey&lt;/a&gt; beyond beta 3 — and you could find yourself in quite a mess.&lt;/p&gt;
&lt;p&gt;For almost a year now, &lt;a href=&#34;https://github.com/radianttap/EFI-ASRock-X570-ITX-TB3&#34;&gt;my own build&lt;/a&gt; using AMD 5900X running on ASRock X570 ITX board had sleep disabled. It’s such a glorious CPU, giving you 12 cores / 24 threads running at 3.7GHz (4.9GHz boost) and costing just ~€750 with the motherboard included (try speccing that config with Intel, I dare you). But sleep…sleep was simply “a bridge too far”.&lt;/p&gt;
&lt;p&gt;Even after I &lt;a href=&#34;https://aplus.rs/2020/usb-mapping-why/&#34;&gt;mapped my USB&lt;/a&gt;, added &lt;a href=&#34;https://dortania.github.io/OpenCore-Post-Install/usb/misc/power.html&#34;&gt;USB power properties&lt;/a&gt;, switched from &lt;code&gt;iMacPro1,1&lt;/code&gt; to &lt;code&gt;MacPro7,1&lt;/code&gt; SMBIOS&amp;hellip;nah, did not budge. Machine would turn off screen but would never actually enter sleep. What’s worse, it would lock-up so heavily that nothing responded anymore. Not even power button worked so the only way to turn it off would be pull the wall power. After some half-working attempts with &lt;a href=&#34;https://github.com/acidanthera/HibernationFixup&#34;&gt;HibernationFixup&lt;/a&gt; and some random SSDTs I found online, I decided to dig in deep and learn how ACPI sleep actually works.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://uefi.org/specs/ACPI/6.4/02_Definition_of_Terms/Definition_of_Terms.html&#34;&gt;ACPI spec is huge&lt;/a&gt; and not easy to dig into. First thing is defining the goal: what exactly I am after. In desktop machines, I want to &lt;strong&gt;achieve &lt;a href=&#34;https://uefi.org/specs/ACPI/6.4/02_Definition_of_Terms/Definition_of_Terms.html#sleeping-and-soft-off-state-definitions&#34;&gt;S3 sleep state&lt;/a&gt;&lt;/strong&gt;, which means “suspend to RAM”. S4 is hibernation or “suspend to disk” which is very useful for laptops but for desktop machines it is not. S0 is fully awake state.&lt;/p&gt;
&lt;p&gt;After reading through &lt;a href=&#34;https://uefi.org/specs/ACPI/6.4/07_Power_and_Performance_Mgmt/Power_and_Performance_Mgmt.html&#34;&gt;Power Management section&lt;/a&gt; and coupled with knowledge from previous attempts — the key to the sleep was proper implementation of &lt;code&gt;_PRW&lt;/code&gt; method. Through implementations of &lt;a href=&#34;https://uefi.org/specs/ACPI/6.4/07_Power_and_Performance_Mgmt/device-power-management-objects.html#prw-power-resources-for-wake&#34;&gt;Power resources for Wake&lt;/a&gt; method, devices tell the OS what sleep states they can be put into while still keeping the ability to wake the system. It also specifies what (if any) other power resources are needed for the device to properly wake up.&lt;/p&gt;
&lt;p&gt;It’s always useful to look at examples. So here’s typical one taken from actual MacPro &lt;a href=&#34;https://uefi.org/specs/ACPI/6.4/05_ACPI_Software_Programming_Model/ACPI_Software_Programming_Model.html#differentiated-system-description-table-dsdt&#34;&gt;DSDT table&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Method (_PRW, 0, NotSerialized)
{
    If (OSDW ())
    {
        Return (Package (0x02)
        {
            0x69, 
            0x03
        })
    }
    Else
    {
        Return (Package (0x02)
        {
            0x69, 
            0x04
        })
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;OSDW&lt;/code&gt; is ACPI method Apple uses to check if the active OS is Darwin (macOS). So we see that return value from this method is package of two elements: first argument is the same while second is &lt;code&gt;3&lt;/code&gt; for macOS, &lt;code&gt;4&lt;/code&gt; for others (Windows, Linux etc).&lt;/p&gt;
&lt;p&gt;ACPI spec tells that Package format from this method means this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Package {
   EventInfo                      // Integer
   DeepestSleepState              // Integer
}
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;DeepestSleepState is an Integer that contains the deepest power system sleeping state that can be entered while still providing wake functionality.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Okie, so this device can go into S3 sleep state for macOS and S4 for others. Looking across many other _PRW implementations in MacPro ACPI, the similar pattern is present.&lt;/p&gt;
&lt;p&gt;OK, let us now look at DSDT for my ASRock X570 motherboard ACPI. It has ~20 &lt;code&gt;_PRW&lt;/code&gt; implementations and in all but one case that second argument is &lt;code&gt;0x04&lt;/code&gt;. Here’s one:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
{
    Return (GPRW (0x08, 0x04))
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Taking cue from Apple’s implementation, we should override this second parameter to be &lt;code&gt;0x03&lt;/code&gt;. How to do that in OpenCore?&lt;/p&gt;
&lt;p&gt;We employ trickery that experienced iOS developers will know as swizzling: replace existing API with our own, providing custom implementation. We need to hot-patch manufacturer-provided ACPI and rename existing &lt;code&gt;GPRW&lt;/code&gt; method into something else, say &lt;code&gt;XPRW&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;(1) In OpenCore’s &lt;code&gt;config.plist&lt;/code&gt; add this dictionary under &lt;code&gt;ACPI/Patch&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;dict&amp;gt;
	&amp;lt;key&amp;gt;Base&amp;lt;/key&amp;gt;
	&amp;lt;string&amp;gt;&amp;lt;/string&amp;gt;
	&amp;lt;key&amp;gt;BaseSkip&amp;lt;/key&amp;gt;
	&amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;Comment&amp;lt;/key&amp;gt;
	&amp;lt;string&amp;gt;GPRW to XPRW Rename&amp;lt;/string&amp;gt;
	&amp;lt;key&amp;gt;Count&amp;lt;/key&amp;gt;
	&amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;Enabled&amp;lt;/key&amp;gt;
	&amp;lt;true/&amp;gt;
	&amp;lt;key&amp;gt;Find&amp;lt;/key&amp;gt;
	&amp;lt;data&amp;gt;
	R1BSVwI=
	&amp;lt;/data&amp;gt;
	&amp;lt;key&amp;gt;Limit&amp;lt;/key&amp;gt;
	&amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;Mask&amp;lt;/key&amp;gt;
	&amp;lt;data&amp;gt;
	&amp;lt;/data&amp;gt;
	&amp;lt;key&amp;gt;OemTableId&amp;lt;/key&amp;gt;
	&amp;lt;data&amp;gt;
	&amp;lt;/data&amp;gt;
	&amp;lt;key&amp;gt;Replace&amp;lt;/key&amp;gt;
	&amp;lt;data&amp;gt;
	WFBSVwI=
	&amp;lt;/data&amp;gt;
	&amp;lt;key&amp;gt;ReplaceMask&amp;lt;/key&amp;gt;
	&amp;lt;data&amp;gt;
	&amp;lt;/data&amp;gt;
	&amp;lt;key&amp;gt;Skip&amp;lt;/key&amp;gt;
	&amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;TableLength&amp;lt;/key&amp;gt;
	&amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;TableSignature&amp;lt;/key&amp;gt;
	&amp;lt;data&amp;gt;
	&amp;lt;/data&amp;gt;
&amp;lt;/dict&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Thus with this, system provided GPRW method is now called XPRW.&lt;/p&gt;
&lt;p&gt;(2) Create &lt;a href=&#34;https://uefi.org/specs/ACPI/6.4/05_ACPI_Software_Programming_Model/ACPI_Software_Programming_Model.html#secondary-system-description-table-ssdt&#34;&gt;custom SSDT&lt;/a&gt; table with new implementation of GPRW:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;DefinitionBlock (&amp;#34;&amp;#34;, &amp;#34;SSDT&amp;#34;, 2, &amp;#34;ATNV&amp;#34;, &amp;#34;GPRW&amp;#34;, 0x00000000)
{
    External (XPRW, MethodObj)    // 2 Arguments

    Method (GPRW, 2, NotSerialized)
    {
        If (_OSI (&amp;#34;Darwin&amp;#34;))
        {
            If ((0x04 == Arg1))
            {
                Return (XPRW (Arg0, 0x03))
            }
        }

        Return (XPRW (Arg0, Arg1))
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In cases where second argument (&lt;code&gt;Arg1&lt;/code&gt;) is &lt;code&gt;0x04&lt;/code&gt;, replace it with &lt;code&gt;0x03&lt;/code&gt; while passing the first argument (&lt;code&gt;Arg0&lt;/code&gt;) as it was. In all other cases just pass to original method implementation.&lt;/p&gt;
&lt;p&gt;I called this &lt;a href=&#34;https://github.com/radianttap/EFI-ASRock-X570-ITX-TB3/blob/master/EFI/OC/ACPI/SSDT-GPRW.aml&#34;&gt;SSDT-GPRW.aml&lt;/a&gt; and included it under &lt;code&gt;ACPI/Add&lt;/code&gt; in config.plist.&lt;/p&gt;
&lt;p&gt;So&amp;hellip;is it working? I am hesitant to claim with 100% certainty but so far — it is. With keyboard directly attached to USB port, with keyboard working as Bluetooth, both across multiple attempts. My USB ports usually have external USB disk, Glorious and Logitech USB mice, Blue Yeti USB microphone and powered USB hub in the LG 27GN950 monitor. Monitor display goes from RX 570 GPU over DisplayPort.&lt;/p&gt;
&lt;p&gt;Build goes into sleep and wakes up when mouse is moved or keyboard key is pressed. There’s still possibility something could be problematic but I am hopeful. Fingers crossed.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>hMac 2020</title>
      <link>https://aplus.rs/2020/hmac-2020/</link>
      <pubDate>Sat, 03 Oct 2020 17:49:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/hmac-2020/</guid>
      <description>&lt;p&gt;As I &lt;a href=&#34;https://aplus.rs/2020/mac-hardware-options-for-indie-devs-spring-2020/&#34;&gt;wrote previously&lt;/a&gt;, I planned to buy iMac 27in whenever Apple refreshed it. They did and the config that worked for me is the base 27in model with 8-core CPU and 1TB SSD (I planned to upgrade memory myself). That configuration is ~€3.200 in Europe but here in Serbia it turned out to be ~€3.800. Mac prices were always much higher here but this one particularly irked me.&lt;/p&gt;
&lt;p&gt;I investigated the possibility of building it myself then, using the  10th-gen Intel CPUs for maximum compatibility. Few &lt;a href=&#34;https://www.reddit.com/r/hackintosh/comments/ic5uef/miniitx_powerful_silent_hackintosh_ncase_m1/&#34;&gt;good souls&lt;/a&gt; already did &lt;a href=&#34;https://www.reddit.com/r/hackintosh/comments/i3pega/z490_itx_guide/&#34;&gt;all the research&lt;/a&gt; I needed thus last month I went on a shopping spree for components.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel &lt;a href=&#34;https://ark.intel.com/content/www/us/en/ark/products/199335/intel-core-i7-10700k-processor-16m-cache-up-to-5-10-ghz.html&#34;&gt;i7-10700K&lt;/a&gt; 3.8GHz 8-core CPU&lt;/li&gt;
&lt;li&gt;ASRock &lt;a href=&#34;https://www.asrock.com/mb/Intel/Z490%20Phantom%20Gaming-ITXTB3/index.asp&#34;&gt;Z490 Phantom Gaming ITX/TB3&lt;/a&gt; motherboard&lt;/li&gt;
&lt;li&gt;Noctua &lt;a href=&#34;https://noctua.at/en/nh-u9s&#34;&gt;NH-U9S&lt;/a&gt; CPU cooler&lt;/li&gt;
&lt;li&gt;Another Noctua &lt;a href=&#34;https://noctua.at/en/products/fan/nf-a9-pwm&#34;&gt;NF-A9 PWM&lt;/a&gt; fan for the CPU cooler&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ncases.com/products/m1&#34;&gt;NCASE M1&lt;/a&gt; V6.1 chassis (silver)&lt;/li&gt;
&lt;li&gt;Noctua &lt;a href=&#34;https://noctua.at/en/products/fan/nf-a12x25-pwm&#34;&gt;NF-A12x25 PWM&lt;/a&gt; case fan&lt;/li&gt;
&lt;li&gt;LG &lt;a href=&#34;https://www.lg.com/us/monitors/lg-27UL650-W-4k-uhd-led-monitor&#34;&gt;27UL650W&lt;/a&gt; 4K HDR monitor&lt;/li&gt;
&lt;li&gt;Artec Home &lt;a href=&#34;https://www.tvnosaci.com/proizvod/single-desk-drzac-za-monitor/&#34;&gt;Single Desk monitor mount&lt;/a&gt; (no idea who actually manufactures this)&lt;/li&gt;
&lt;li&gt;Corsair &lt;a href=&#34;https://www.corsair.com/ww/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020182-EU&#34;&gt;SF600 Platinum&lt;/a&gt; SFX PSU&lt;/li&gt;
&lt;li&gt;Corsair &lt;a href=&#34;https://www.corsair.com/ww/en/Categories/Products/Memory/VENGEANCE-LPX/p/CMK32GX4M2D3200C16&#34;&gt;Vengeance LPX 32GB&lt;/a&gt; DDR4 DRAM 3200MHz&lt;/li&gt;
&lt;li&gt;Sapphire &lt;a href=&#34;https://www.sapphiretech.com/en/consumer/nitro-radeon-rx-5500-xt-se-8g-gddr6&#34;&gt;Nitro+ RX 5500 XT 8G SE&lt;/a&gt; graphics card&lt;/li&gt;
&lt;li&gt;XPG &lt;a href=&#34;https://www.xpg.com/us/feature/583/&#34;&gt;SX8200 Pro&lt;/a&gt; NVMe SSDs in 1TB (for macOS) and 512GB (for Windows)&lt;/li&gt;
&lt;li&gt;Space Gray Matias &lt;a href=&#34;https://matias.store/products/fk408btb&#34;&gt;Wireless Aluminium Tenkeyless&lt;/a&gt; keyboard&lt;/li&gt;
&lt;li&gt;Logitech &lt;a href=&#34;https://www.logitechg.com/en-roeu/products/gaming-mice/g305-lightspeed-wireless-gaming-mouse.910-005282.html&#34;&gt;G305 mouse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/TWM23wYRfa4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;I replaced the WiFi/Bt card on the motherboard with Fenvi’s 94360CD-based card (Option 1 on &lt;a href=&#34;https://aplus.rs/2020/opencore-network-audio/&#34;&gt;my older post&lt;/a&gt;) which gave me perfect out of the box support for WiFi and Bt in macOS. ASRock’s Z490 board was the &lt;a href=&#34;https://www.reddit.com/r/hackintosh/comments/i3pega/z490_itx_guide/g0dz39u/?utm_source=reddit&amp;amp;utm_medium=web2x&amp;amp;context=3&#34;&gt;only ITX option that did not use&lt;/a&gt; Intel’s CNVi technology thus making the card switch technically possible.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hmac-2020/IMG_8277.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;The final cost: ~€2.000. Big item I’m missing is that beautiful 5K panel but this 4K will do. Performance is just amazing, marginally better than equivalent iMac 2020 model for almost half the cost. Runs super silent most of the time and with good CPU temps ~70ºC under full load.&lt;/p&gt;
&lt;p&gt;My previous time investment to &lt;a href=&#34;https://aplus.rs/tags/opencore/&#34;&gt;learn how OpenCore works&lt;/a&gt; paid off big time. I followed OpenCore’s Comet Lake &lt;a href=&#34;https://dortania.github.io/OpenCore-Install-Guide/&#34;&gt;setup guide&lt;/a&gt; but using &lt;code&gt;iMacPro1,1&lt;/code&gt; SMBIOS (instead of &lt;code&gt;iMac20,1&lt;/code&gt;) in order to get native media DRM working. Things worked out flawlessly; I spent about 2h carefully going through each &lt;code&gt;config.plist&lt;/code&gt; option. With a bit of configuration help from the previously linked guides by Papadiche and SchmockLord1912, everything important was working on first run. Spent another day casually setting up performance and stability issues: USB map, Radeon GPU performance, sleep/wake, USB device wake etc.&lt;/p&gt;
&lt;p&gt;One thing to emphasise — it&amp;rsquo;s important how you position the antennas coming out of the wireless card. Bluetooth in particular was rather flaky when I just trapped the antennas inside the front panel case of the case. I&amp;rsquo;m waiting for some &lt;a href=&#34;https://www.aliexpress.com/item/5pcs-SMA-Connector-Cable-Female-to-uFL-u-FL-IPX-IPEX-RF-Coax-Adapter-Assembly-RG178/4000194169072.html&#34;&gt;custom connectors&lt;/a&gt; and &lt;a href=&#34;https://www.aliexpress.com/item/2PCS-Mini-Rubber-3dBi-2-4ghz-WIFI-Antenna-SMA-Male-Router-Bluetooth-Antennas-Wireless-Module-2/33048675673.html&#34;&gt;short rubber antenna&lt;/a&gt; covers which will help install them properly at the back.&lt;/p&gt;
&lt;h2 id=&#34;performance&#34;&gt;Performance&lt;/h2&gt;
&lt;p&gt;Coming from MacBook Pro 13,3 top model from 2016, the &lt;em&gt;performance increase is almost triple&lt;/em&gt;. Going from 2016’s 2.7GHz 4-core mobile CPU to 2020’s 3.8GHz desktop 8-core was bound to be impressive.&lt;/p&gt;
&lt;p&gt;For the &lt;a href=&#34;https://github.com/devMEremenko/XcodeBenchmark&#34;&gt;Xcode benchmark&lt;/a&gt; test, my old MacBook Pro needed &lt;em&gt;642s&lt;/em&gt;. This build is neck and neck with iMac 2020, at &lt;em&gt;224s&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hmac-2020/3.8GHz_temps.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;While it compiled the benchmark workspace, fans were audible but not obnoxious (less noisy than MacBook Pro fans at full speed). With all 16 threads fully saturated, all cores boosted to 4.7GHz and their temps stayed ~70ºC. CPU power management works perfectly here.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hmac-2020/xcode-cores.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;This &lt;code&gt;K&lt;/code&gt; CPU is factory unlocked which meant I could try overclocking it a bit. I did not chase any benchmark records, just wanted to see what I could get with all-core clock increase without increasing voltage. It turns out — 4.9GHz is super stable, with 4.3GHz cache ratio but core temps went 10ºC up under full load. Actual gains were relatively modest — benchmark finished in 210s — hence I decided to leave it on stock.&lt;/p&gt;
&lt;h2 id=&#34;intrigued&#34;&gt;Intrigued?&lt;/h2&gt;
&lt;p&gt;Hackintosh road is never easy, identical hardware that worked in one instance can hilariously and unexplainably halts at another. But if ever there was a time to do it, it’s now.&lt;/p&gt;
&lt;p&gt;Apple is transitioning to their own CPUs/GPUs over the next two years. Several years from now, I see myself purchasing whatever desktop Apple Silicon-based machine is there (if I’m still in this business by then).&lt;/p&gt;
&lt;p&gt;Many will tell you that buying Intel-based hardware from Apple is buying obsolete models. I don’t really agree with that since it’s a given that those Intel-based Macs will be supported for 7-10 years of future macOS updates.&lt;/p&gt;
&lt;p&gt;By that time, this build can easily be retrofitted for my kids or turned to pure Windows gaming machine or a media centre / NAS. It can be updated to newer CPUs, newer graphic cards, more memory and/or storage etc — something you can’t do if you buy anything from Apple today (except Mac Pro).&lt;/p&gt;
&lt;p&gt;If you want to build using this exact same hardware, &lt;a href=&#34;https://github.com/radianttap/EFI-ASRock-Z490-ITX-TB3-iMacPro1-1&#34;&gt;here’s my EFI&lt;/a&gt; with instructions how to finish up and get it working. Good luck.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Recommended Apple 2020 notebook configurations</title>
      <link>https://aplus.rs/2020/recommended-apple-2020-notebooks/</link>
      <pubDate>Sun, 10 May 2020 13:01:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/recommended-apple-2020-notebooks/</guid>
      <description>&lt;p&gt;I’ve been using Apple notebooks since 2006. In that time span, I used 4 different models but realistically only 3 of them for real long-term usage.&lt;/p&gt;
&lt;p&gt;I bought 15-inch MacBook Pro models in 2006, 2011 and 2016. These were all top models at the time and as you can tell I got pretty good mileage from all of them. I had a brief spell of 5-ish months with 12-inch MacBook in 2016 which I bought at WWDC that year and used it until end of that year when the 15-inch arrived.&lt;/p&gt;
&lt;p&gt;I never regretted any of those purchases as each of those machines served me well. Thus naturally it’s not rare that people ask me which models to buy. It’s easy to say: “buy the most expensive one and you’ll enjoy it”. Not everyone can do that; at the same time, I found that it’s almost never a good idea to buy entry models of almost anything that Apple sells.&lt;/p&gt;
&lt;p&gt;Given that Apple just finished refreshing their entire notebook line-up, this is what I recommend. These recommendation are for people (fairly) new to Apple Macs.&lt;/p&gt;
&lt;h3 id=&#34;macbook-air&#34;&gt;MacBook Air&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/apple-laptops-2020/mba-2020.png&#34; alt=&#34;MacBook Air 2020&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1.1GHz quad-core i5 10th-gen CPU&lt;/li&gt;
&lt;li&gt;16GB memory&lt;/li&gt;
&lt;li&gt;512GB storage&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;macbook-pro-13-in&#34;&gt;MacBook Pro 13-in&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/apple-laptops-2020/mbp13-2020.png&#34; alt=&#34;13in MacBook Pro 2020&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2.3GHz quad-core i7 10th-gen CPU&lt;/li&gt;
&lt;li&gt;16GB memory&lt;/li&gt;
&lt;li&gt;1TB storage&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;macbook-pro-16-in&#34;&gt;MacBook Pro 16-in&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/apple-laptops-2020/mbp16-2020.png&#34; alt=&#34;16in MacBook Pro 2020&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2.4GHz 8-core i9 9th-gen CPU&lt;/li&gt;
&lt;li&gt;32GB memory&lt;/li&gt;
&lt;li&gt;1TB storage&lt;/li&gt;
&lt;li&gt;Radeon 5500M GPU with 8GB&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;options&#34;&gt;Options&lt;/h3&gt;
&lt;p&gt;I am pretty positive that if you buy any of those configs today, you’ll be happily using them at least 4-5 years, every single day. If something breaks, you’ll have to fix it of course; if you don’t already have 2yr warranty by law, purchase Apple Care since it’s worth it for 3yrs of peace of mind. But outside of such misfortune, you’ll enjoy using them.&lt;/p&gt;
&lt;p&gt;If you can’t spring up for these configs, try to configure something for less money; in that case, the order of importance for good, enjoyable use of macOS is this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;storage&lt;/li&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;graphics&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By far the most important aspect is the &lt;em&gt;amount of memory&lt;/em&gt;. I would never go below 16GB if you are using multiple heavy apps (video, photo editing, possibly multiple of them at once). At the same time, going over 32GB is rarely justifiable on macOS unless you explicitly know why you need it; but then again — this article is probably not for you.&lt;/p&gt;
&lt;p&gt;Next is &lt;em&gt;storage&lt;/em&gt;. Absolute minimum I would not go below is 256GB, 512GB is perfect unless you know you will have large disk usage. Xcode devs, video editors etc: go for 1TB.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;CPU/graphics is least important&lt;/em&gt; — the more cores and better GPU with more memory is always welcome — but all the latest stuff Apple offers should be enough for most people.&lt;/p&gt;
&lt;p&gt;The first thing you’ll need over time is extra storage. That’s the only thing you can add later, thus don’t overspend on internal storage. Luckily, all these models feature Thunderbolt 3 ports which is an amazingly versatile and powerful port. There are great, portable and durable options to purchase, which are just as fast as internal storage. Say &lt;a href=&#34;https://www.kickstarter.com/projects/hyperdisk/hyperdisk-probably-the-smallest-and-fastest-portable-ssd&#34;&gt;HyperDisk&lt;/a&gt; or this &lt;a href=&#34;https://www.indiegogo.com/projects/hybriddrive-expandable-storage-hub-with-fast-ssd#/&#34;&gt;HybridDrive&lt;/a&gt; or even DIY solution which I prefer: buy USB-C enclosure for M.2 NVMe disk (like &lt;a href=&#34;https://plugable.com/products/usbc-nvme/&#34;&gt;this one&lt;/a&gt;) and then add any of those super-fast disks inside. I have the last combination, works great. Prices of these disks will just go down over time thus no need to purchase too much internal storage which is still very expensive.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mac hardware options for indie devs, Spring 2020</title>
      <link>https://aplus.rs/2020/mac-hardware-options-for-indie-devs-spring-2020/</link>
      <pubDate>Sat, 25 Apr 2020 12:44:44 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/mac-hardware-options-for-indie-devs-spring-2020/</guid>
      <description>&lt;p&gt;My adventure into &lt;a href=&#34;https://github.com/radianttap/ryzentosh&#34;&gt;Hackintosh land&lt;/a&gt; was &lt;a href=&#34;https://github.com/radianttap/EFI-ASRock-X570-ITX-iMacPro1-1&#34;&gt;successful&lt;/a&gt; but ultimately &lt;a href=&#34;https://github.com/radianttap/TestiOS&#34;&gt;fruitless&lt;/a&gt; for my work as iOS/watchOS/tvOS developer using Xcode.
It does not look like this is something that will be resolved anytime soon, if ever. By all accounts, OpenCore developers do not care about AMD as they are way too busy with Intel side of things. I don’t care about Intel-based Hackintoshes, price/benefit is not worth it versus buying Apple Macs.&lt;/p&gt;
&lt;p&gt;Thus once again I find myself reviewing computer options that Apple offers. This article is aimed at small companies and  serious indie developers who do this for living; not for home and hobby use.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://radianttap.com&#34;&gt;We&lt;/a&gt; are a small agency exclusively using MacBook Pros. Currently those are 2016 models, which are in their 4th year of use. Great machines, working 50+ hours every given week. Upgrading to 2019 MBP models would certainly be a welcome upgrade as we would jump from 4-core to 8-core CPUs.&lt;/p&gt;
&lt;p&gt;But they are still laptops, as in — mobile machines. If you don’t use them as such, it makes little sense to buy one. I spent 4 years working in coffee shops, traveling a lot, always having the MBP with me. I could do my work anywhere and MBP was great choice.
For the last 2 years though, we are primarily desktop bound and those laptops are almost never going anywhere. Hence, desktop Macs.&lt;/p&gt;
&lt;p&gt;At least there, if you spill your coffee over the keyboard, you change the keyboard in an hour and move on.
We had few cases of coffee incidents all over the MacBook Pro which meant 1 to 4 weeks of machine being in service and those repairs are &lt;em&gt;very&lt;/em&gt; expensive. For tiny companies like our, it is not feasible to have extra machines on stand-by, just in case. If you are 10+ person company, it makes sense to have one or two machines extra; options to instantly buy something you need are not always available in Serbia.&lt;/p&gt;
&lt;p&gt;So when we purchase a computer, we need it to work reliably and for a long time, 3+ years minimum. Reliability is the key. General business math is that computer we purchase should yield us at least 10x ROI over 3 years. That means 3k machine should lead to minimum 30k over 3 years. 2 machines, 60k. That leaves enough money for business and private spending; paying off mortgage and car, family and business travel and other bits of joy and life. Plus have enough to purchase new models at the end of the cycle.&lt;/p&gt;
&lt;p&gt;So…options?&lt;/p&gt;
&lt;p&gt;Mac mini is not an option, don’t even look at it.&lt;/p&gt;
&lt;p&gt;iMac line offers the same CPUs as MacBook Pros. When you look closely, &lt;a href=&#34;https://www.apple.com/imac/&#34;&gt;27-inch iMac&lt;/a&gt; is pretty much identical to &lt;a href=&#34;https://www.apple.com/macbook-pro-16/&#34;&gt;16-inch MacBook  Pro&lt;/a&gt; with a bigger display and faster single-core-clock CPU.&lt;/p&gt;
&lt;p class=&#34;twobytwo&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020/apple-hw-options/MBP16in, 32GB, 1TB.png&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020//apple-hw-options/iMac27, 32GB, 1TB.png&#34;&gt;
&lt;/p&gt;
&lt;p&gt;iMac seems like the most sensible upgrade path for us if it wasn’t for the very reason I went on the said Ryzentosh adventure: we need more than 8 cores. Way more. Ana is increasingly working with machine learning and is very interested in AR. She also regularly runs at least one VMWare instance with some heavy software running in it &lt;em&gt;while&lt;/em&gt; she’s coding in macOS. I &lt;a href=&#34;https://aplus.rs/2020/missing-developer-mac/&#34;&gt;wrote previously&lt;/a&gt; why &lt;em&gt;I&lt;/em&gt; need as many cores as I can get.&lt;/p&gt;
&lt;p&gt;Thus iMac, with its maximum of 8 cores, is an OK upgrade but you stay locked into the config you buy. Nothing in those machines is upgradable which is why I’m always looking at the top of the line. You spend ~$3500 and  you should look at earning 35k.&lt;/p&gt;
&lt;p&gt;Then there’s &lt;a href=&#34;https://www.apple.com/imac-pro/&#34;&gt;iMac Pro&lt;/a&gt; and &lt;a href=&#34;https://www.apple.com/mac-pro/&#34;&gt;Mac Pro&lt;/a&gt;. Both of those are using almost the priciest line of Intel CPUs: the &lt;a href=&#34;https://www.intel.com/content/www/us/en/products/processors/xeon/w-processors.html&#34;&gt;Xeon W series&lt;/a&gt;. This is infuriating to even look at, with that monstrosity of the socket 3467 they live in. iMac Pro is closed-off and impossible to upgrade as you can imagine it to be.&lt;/p&gt;
&lt;p class=&#34;twobytwo&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020//apple-hw-options/iMacPro, 8core, 32GB, 1TB.png&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020//apple-hw-options/iMacPro, 14core, 64GB, 2TB.png&#34;&gt;
&lt;/p&gt;
&lt;p&gt;If you think Mac Pro is more open to CPU upgrades — &lt;a href=&#34;https://forums.macrumors.com/threads/cpu-upgrade-in-2019-mac-pro.2216212/post-28086070&#34;&gt;think again&lt;/a&gt;. At least you can add storage (apart from the boot SSD), RAM and change graphics cards as you want. Buying such an expensive machine in its lowest config is not sensible to me, thus this 9.5k config is what I would go for.&lt;/p&gt;
&lt;p class=&#34;twobytwo&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020//apple-hw-options/MacPro, 8core, 32GB, 256 GB.png&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020//apple-hw-options/MacPro, 16core, 32GB, 2TB, 5700X.png&#34;&gt;
&lt;/p&gt;
&lt;p&gt;Look at the prices then check your math and business outlook. Can you earn 80-100k over 3 years, per developer?&lt;/p&gt;
&lt;p&gt;However you look at this, prices are not for the faint-hearted indie devs. People like to compare high-end configuration of Mac Pro with equivalent Dell or Lenovo or HP models and prices are not much different for configs in the 30-50k range. But these less expensive configs reveal that Apple models are far pricier than say HP’s &lt;a href=&#34;https://zworkstations.com/products/hp-z6-workstation/&#34;&gt;Z workstations&lt;/a&gt;:&lt;/p&gt;
&lt;p class=&#34;twobytwo&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020//apple-hw-options/i9 Core-X 12-core 10920X.png&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020//apple-hw-options/xeon-16core.png&#34;&gt;
&lt;/p&gt;
&lt;p&gt;It’s 5.5k versus 9.5k. That’s almost double for the same CPU, memory and storage and comparable graphics card. That’s just staying in Intel’s backyard. With AMD you can get better machine for 2x less money. Here’s what ~$2500 gets you:&lt;/p&gt;
&lt;p&gt;![](/images/2020//apple-hw-options/ryzen 3950X.png)&lt;/p&gt;
&lt;p&gt;I deliberately picked more expensive and feature-rich components. It’s an amazing powerhouse for the money. Windows customers not buying AMD-based configs are crazy.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I personally think, being Apple customer for 10+ years, that hardware quality Apple gives you is well worth the price &lt;em&gt;if you can put all of that hardware to good use&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So, to summarise…&lt;/p&gt;
&lt;p&gt;&lt;em&gt;iMac Pro is just non-sensical to even consider.&lt;/em&gt; I am well aware it’s a great machine but looking at the hardware in it and the package you get it in – it’s a ridiculous product. The only useful upgrade over regular iMac are the CPU options with many, many cores. Those CPUs are &lt;em&gt;not&lt;/em&gt; worth 4k price hike over regular iMac 27-inch. Not by a long shot.&lt;/p&gt;
&lt;p&gt;Mac Pro remains as the somewhat reasonable purchase but again — &lt;em&gt;if and only if&lt;/em&gt; you put all that it offers to good use &lt;strong&gt;now&lt;/strong&gt;, starting today.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;We&lt;/em&gt; can’t. We simply don’t do anything that would make business sense to buy it. You don’t change machines with price tag of 10k or more every 3 years. They should work double that as minimum, preferably even longer. If you think that in 6-8 years you’ll be able to expand and upgrade that machine as you want (the most basic promise of desktop computers)…well think again.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;T3 I/O is awesome now but I’m not sure it would still be viable in half a decade; lookup USB 4 and you’ll see why. Lookup T2 adapter options (for older trashcan Mac Pro) and you’ll see why.&lt;/li&gt;
&lt;li&gt;CPU and GPUs…hm, PCIe 4.0 is already here in AMD desktops, who knows what next-gen GPUs will use. Intel is desperately trying to get away from 14nm process and they could very well change the fracking socket as they often do.&lt;/li&gt;
&lt;li&gt;There are (now pretty) credible rumours that Apple will transition to their own CPUs based on ARM thus they will have no reason to even support future generations of Intel CPUs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bottom line: for indie devs and companies under 3-5 people, looking for desktop purchase this year: &lt;em&gt;top of the line iMac 27-inch is most sensible option&lt;/em&gt;. If you can wait, you should; wait for next iMac refresh and purchase it then. It should give you 3+ years of piece (if nothing breaks 🤞🏻) and you can peacefully wait for ARM-based Macs or whatever new iMac models appear then.&lt;/p&gt;
&lt;p&gt;Oh, make sure you buy top of the line iMac with SSD. HDD or Fusion drives in 2020 are just an insult at those prices; which is the reason to wait until next refresh as that will probably bring 2x more SSD storage at same price and more modern AMD Navi GPUs (5x00 series).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Building a PC, in a year 2020</title>
      <link>https://aplus.rs/2020/building-sff-pc-in-2020/</link>
      <pubDate>Sun, 23 Feb 2020 12:32:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/building-sff-pc-in-2020/</guid>
      <description>&lt;p&gt;This started fairly innocuously. On my regular YouTube crawling through videos related to espresso craft, its algorithm somehow suggested &lt;a href=&#34;https://www.youtube.com/watch?v=KxBUJWH56dQ&#34;&gt;this video of someone building their Hackintosh&lt;/a&gt;. Nothing unusual per-se but it intrigued me due to two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the builder casually uses AMD Ryzen 5 processor&lt;/li&gt;
&lt;li&gt;it was all packed inside a wonderfully small case that looked super clean (Louqe Ghost S1)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’m MacBookPro-only for last 10 years thus I had only passing knowledge about the state of Hackintosh builds. I knew people were trying to use AMD’s CPUs because their were cheaper + they had more cores than Intel for less money (which jives with what I heard from friends using PCs). But I did not know it became such common practice to build PCs running macOS with those CPUs.&lt;/p&gt;
&lt;p&gt;The second point was far more interesting to me.  The build-your-own PC thing I did 20 years ago usually involved very large cases, large motherboards and fairly small graphic cards which you insert vertically into the motherboard. HDDs were huge, noisy and slow. But here was someone building with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a 6-core CPU into a very small case&lt;/li&gt;
&lt;li&gt;with huge-ass graphics card (Radeon Vega 56) placed side-by-side with the motherboard much smaller than said graphics card.&lt;/li&gt;
&lt;li&gt;Its entire storage was NVMe SSD not larger than a memory module.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That video was my introduction into the world of &lt;a href=&#34;https://smallformfactor.net/forum/#create.4&#34;&gt;Small Form Factor cases&lt;/a&gt;, ITX sized motherboards, PCIe riser cards and intelligent use of case volume while maintaining performance and near-silent operation under even the heaviest of loads. It was a short hop from there to &lt;a href=&#34;https://www.youtube.com/watch?v=WJqSHysUAY0&#34;&gt;Optimum Tech&lt;/a&gt; YouTube channel.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;That was the hook and the sinker. And here I am, 6+ months later, with a bunch of hardware components and 3 (yes, three) wonderful SFF cases on hand.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/build-pc/IMG_6322.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;hardware-list&#34;&gt;Hardware list&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/h2&gt;
&lt;p&gt;Let’s start with the core of the build: CPU choice. I picked AMD’s Ryzen 3000 series, starting with fairly inexpensive model with TDP of 65W which can be easily air-cooled without much fuss and bulk.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/build-pc/ryzen-3600-1.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AMD &lt;a href=&#34;https://www.amd.com/en/products/cpu/amd-ryzen-5-3600&#34;&gt;Ryzen 5 3600&lt;/a&gt; CPU: &lt;code&gt;€190&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the future — after I make sure this system is perfectly stable across some months — I will upgrade to 12 (3900X) or 16 (3950X) core Ryzen 9 CPUs for which Intel simply has no answer in their respective price range (under $1000 in US). The only thing I need to switch for this is the CPU itself. Everything else &lt;em&gt;can&lt;/em&gt; stay the same. This is not the case in Intel land where you can build with single-core monsters like &lt;a href=&#34;https://www.intel.com/content/www/us/en/products/processors/core/i9-processors/i9-9900k.html&#34;&gt;i9-9900K&lt;/a&gt; but if you want to upgrade to say &lt;a href=&#34;https://www.intel.com/content/www/us/en/products/processors/core/x-series/i9-10940x.html&#34;&gt;14 cores&lt;/a&gt;, you’ll need to switch motherboards and possibly memory too.&lt;/p&gt;
&lt;p&gt;My motherboard choice is overkill for &lt;em&gt;this&lt;/em&gt; particular build but it’s one part where there’s little choice in AMD land:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/build-pc/X570-Phantom-Gaming-ITXTB3-L3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.asrock.com/mb/AMD/X570%20Phantom%20Gaming-ITXTB3/&#34;&gt;ASRock X570 Phantom Gaming-ITX/TB3&lt;/a&gt; motherboard : &lt;code&gt;€220&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Reason: Thunderbolt 3, a-future-proofing-must-have for me. This board is one of the only two ITX-sized motherboards that has it &lt;em&gt;integrated&lt;/em&gt; into I/O shield (the other one is also from ASRock but for Intel CPUs). That means I won’t need additional PCIe card for TB3 ports; ITX-sized boards have only one PCIe slot which I need for the graphics card. Speaking of which:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/build-pc/11266_09_RX570_NITRO_plus_8GBGDDR5_2DP_2HDMI_DVI_PCIE_C02_11Apr17.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sapphire &lt;a href=&#34;https://www.sapphiretech.com/en/consumer/nitro-rx-570-8g-g5-oc&#34;&gt;Nitro+ RX570 8GB&lt;/a&gt; graphics card: &lt;code&gt;€100&lt;/code&gt; (used)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This card is based on Polaris GPU architecture and is close to 3 years old at this point but still kicks some serious numbers. These cards are still being sold new, today; you may have noticed its brethren RX580 as the base graphics card for newest Mac Pro.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: since Catalina 10.15.2, Apple added support for AMD’s new Navi-based chips, including RX5500 and RX5700. Any of these will be way faster than anything you can get included in Mac mini or MacBook Pros.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I chose card with 8GB memory versus 4GB, since it &lt;a href=&#34;https://www.youtube.com/watch?v=P9bKL944_Mo&#34;&gt;shows significant gains&lt;/a&gt; in a lot of games, especially those that employ a lot of textures.&lt;/p&gt;
&lt;p&gt;Because of the layout of this particular motherboard with tall heatsinks and I/O shroud, I opted for low-profile memory sticks to keep at least one side open for easier cabling and heat-sink installation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/build-pc/CMK16GX4M2B3200C16-Gallery-VENG-LPX-BLK-00.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Corsair &lt;a href=&#34;https://www.corsair.com/us/en/Categories/Products/Memory/VENGEANCE-LPX/p/CMK16GX4M2B3200C16&#34;&gt;Vengeance LPX&lt;/a&gt; 16 GB (2 x 8 GB) DDR4 3200MHz CL16 : &lt;code&gt;€71&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These modules are significantly shorter than most while still being very performant.&lt;/p&gt;
&lt;p&gt;The current build is housed in wonderfully small case (hence the need for ITX motherboard) and appropriately small power supply unit:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/build-pc/IMG_6606.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nouvolo &lt;a href=&#34;https://www.nouvolo.com&#34;&gt;Steck v1.1&lt;/a&gt; SFF case : &lt;code&gt;$150&lt;/code&gt; (plus 50€ for customs 😭)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/build-pc/CP-9020182-NA-Gallery-SF600-02.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Corsair &lt;a href=&#34;https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020182-NA&#34;&gt;SF600 Platinum&lt;/a&gt; SFX PSU : &lt;code&gt;€116&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I very much prefer SFF and I’m &lt;a href=&#34;https://www.reddit.com/r/sffpc/&#34;&gt;far from alone&lt;/a&gt;. With the case being so small (8.7L of volume in its base form), I needed some serious cooling to make it as silent as it could be. Thus I opted for the best:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/build-pc/noctua_nh_l9x65_1_1_2.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Noctua &lt;a href=&#34;https://noctua.at/en/products/cpu-cooler-retail/nh-l9x65&#34;&gt;NH-L9x65&lt;/a&gt; CPU cooler: &lt;code&gt;€53&lt;/code&gt;. This air cooler is actually made for Intel CPUs but this particular board by ASRock is using Intel cooling mount because their design requires less physical space.&lt;/li&gt;
&lt;li&gt;Noctua &lt;a href=&#34;https://noctua.at/en/products/fan/nf-a12x25-pwm&#34;&gt;NF-A12x25&lt;/a&gt; case fan : &lt;code&gt;€32&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Noctua &lt;a href=&#34;https://noctua.at/en/products/fan/nf-a9-pwm&#34;&gt;NF-A9 PWM&lt;/a&gt; fan : &lt;code&gt;€20&lt;/code&gt; (used it to replace 9x14 on the CPU cooler).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, the SSDs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ADATA &lt;a href=&#34;https://www.xpg.com/us/feature/583/&#34;&gt;XPG 8200 Pro&lt;/a&gt; 1TB NVMe SSD: &lt;code&gt;€180&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Samsung &lt;a href=&#34;https://www.samsung.com/us/computing/memory-storage/solid-state-drives/ssd-860-evo-2-5--sata-iii-500gb-mz-76e500b-am/&#34;&gt;860 EVO&lt;/a&gt; 500GB SSD: &lt;code&gt;€80&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This motherboard has only one m.2 NVMe slot, on its back. And while X570 chipset supports PCIe 4.0 – thus potentially giving me 5GB/s speeds – I would also get large upswing in generated heat. Which is really not feasible in my case due to small chassis and its sandwich layout where the SSD is dead-centered between motherboard and graphics card. Honestly I don’t see the benefit in my workflows for such extreme speeds, especially since this XPG drive gets me 3GB/s and that’s plenty enough. XPG drives come with small thermal pad which (so far) works really well to dissipate heat.&lt;/p&gt;
&lt;p&gt;The motherboard has Intel’s AX200 card which supports WiFi 6 and Bluetooth 5, integrated into the I/O shroud at the side of the motherboard. It also features 1Gbit LAN (model is Intel I211AT), a pair of 10Gbps USB-A ports, another pair of 5Gbps USB-A ports and the one mentioned Thunderbolt 3 port which is of course working as USB-C 10Gbps port.&lt;/p&gt;
&lt;h2 id=&#34;build&#34;&gt;Build&lt;/h2&gt;
&lt;p&gt;I made a video of the whole build, with all the important details shown.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/AdFjvzdsyz0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Important bit is the cooling. I had to cut a hole through the bottom plate so the Noctua 12x25 fan can freely pull the cold air inside the case. This fan directly cools off the PSU and back of the GPU — exactly where the hot air is going out on this particular model.&lt;/p&gt;
&lt;p&gt;But there is no room in this case to place another fan below the motherboard. Thus the CPU cooler fan must work really well and I found that&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;default 9x14 fan is not enough&lt;/li&gt;
&lt;li&gt;side panels do not have nearly enough holes to allow the fan to work its magic.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thus I replaced the 9x14 with 9x25 &lt;em&gt;and&lt;/em&gt; I keep the CPU side panel off since 25mm fan is 4mm too tall for the side panel to close. This change brought me 15-17ºC drop in pick CPU temperature (from 87 to ~70).&lt;/p&gt;
&lt;p&gt;This setup seems optimal for this case and the fans are operating more or less silently since they are all controlled by the motherboard which adjusts their speed as needed. Fan in the Corsair PSU is barely ever working (it’s 0 RPMs until 300W), since the power draw is rarely that high.&lt;/p&gt;
&lt;p&gt;I ran extensive tests with this hardware in Windows, making sure that everything works tip-top.&lt;/p&gt;
&lt;h2 id=&#34;sowhats-the-point&#34;&gt;So…what’s the point?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Readers of my blog can tell that I’m an Apple customer, through and through. Thus it’s fair to ask — why build this?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;First — &lt;strong&gt;it’s nice&lt;/strong&gt; to build something physical; it’s &lt;em&gt;really&lt;/em&gt; nice being part of great community like SFF. Community of people giving a lot of thought to proper cooling, silent running, efficient use of space. I always disliked big tower cases and this is such a fresh and inspiring approach to home PCs.&lt;/p&gt;
&lt;p&gt;If you want to be thoroughly inspired, browse through SFF.Network’s &lt;a href=&#34;https://smallformfactor.net/forum/category/custom-cases-projects/&#34;&gt;Concepts &amp;amp; Custom Projects&lt;/a&gt; sub-forum to witness hw enthusiasm at its best. People are genuinely interested to &lt;a href=&#34;https://smallformfactor.net/forum/category/build-logs/&#34;&gt;build their PC&lt;/a&gt; to be pretty &lt;a href=&#34;https://www.youtube.com/watch?v=eFGUdRR2Yek&#34;&gt;on the inside&lt;/a&gt; as much as outside. If there’s an Apple-esque approach to PC builds, that has to be the one.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Personally, the only part I don’t care much for is obsession with RGB lighting. You’ll not find it featured front and center inside my build.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What I wanted from this machine: be small, be performant, work silently and reliably. Key thing: &lt;em&gt;reliable&lt;/em&gt;. Personal computer is a tool for me and no matter how much I love the process and the final look – I need it to work, not just look pretty on the table.&lt;/p&gt;
&lt;h3 id=&#34;the-trouble&#34;&gt;The trouble&lt;/h3&gt;
&lt;p&gt;As I said before, I picked this ITX motherboard because it had Thunderbolt 3. A very, very rare thing outside of Intel-based boards. A very rare thing on ITX motherboards, period.&lt;/p&gt;
&lt;p&gt;Initially, it seemed fine. I could attach my external USB-C enclosure with SSD inside, it copied fast, worked really nice. But &lt;em&gt;I could not boot from it&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I got into BIOS / UEFI, tried everything I could think of, no dice. Upgraded to latest BIOS (2.00), still nothing. It simply never shows as boot option. I then tried to boot with same external disk over USB-A 3.2 port; Windows 10 (which was on external disk) would start loading and then spin indefinitely without switching to the desktop. &lt;em&gt;Ugh!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I downgraded the BIOS version back to 1.00 (initial release) and then upgraded through all available versions, one by one.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Booting from TB3/USB-C does not work with either of them. 😡&lt;/li&gt;
&lt;li&gt;USB-A boot worked fine up to BIOS 1.70 (I think) but it does not work on 2.00 (latest release). 🥵&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To make matters worse, after trying all these BIOS upgrades, USB-C port stopped working even in Windows 10. Thunderbolt driver from Intel was showing as properly installed, it would show the Port 1 as active, the disk attached to it would spin up and be turned on. But it would never appear in Windows. 🤬 Thus I downgraded back to BIOS 1.00, then updated directly to 2.00 so at least the USB-C and Thunderbolt 3 attached disks appear in Windows. Gave up on booting from USB into Windows, hopefully some future BIOS update will fix this (since it does work until 1.70).&lt;/p&gt;
&lt;p&gt;What a mess.&lt;/p&gt;
&lt;p&gt;I found &lt;a href=&#34;https://www.tonymacx86.com/threads/success-asrock-z390-phantom-gaming-itx-tb3-igpu-mojave-sff-build.277418/&#34;&gt;huge thread&lt;/a&gt; on TonyMacX86 forums about a Hackintosh build using ASRock X390 Phantom Gaming ITX/ac motherboard. It’s a model which by all accounts is sibling version of my board for Intel CPUs.&lt;/p&gt;
&lt;p&gt;Z390 board also has Thunderbolt 3 port on its back I/O panel and BIOS for that board has an &lt;a href=&#34;https://www.tonymacx86.com/media/bios_tb3_settings-jpg.191896/&#34;&gt;entire section dedicated to Thunderbolt&lt;/a&gt;.
Here, on my board, there’s only one singular option that says &lt;em&gt;Thunderbolt Enabled/Disabled&lt;/em&gt; and that’s it! As annoying as this is right now, I’m hoping it means that some future update will bring those same options to X570 version as well&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;.🤞🏻&lt;/p&gt;
&lt;p&gt;▪︎❖▪︎&lt;/p&gt;
&lt;p&gt;Makes you appreciate how wonderful it is that when you buy say MacBook Pro, you unpack it, start up and it just works.
I switched to using laptops exclusively in early 2000s and I honestly forgot just how much of a pain this build-your-own computer can be.&lt;/p&gt;
&lt;p&gt;When it works, it’s a pleasure to build, nip &amp;amp; tuck the cables inside, close it off with nice chassis. Building a PC in SFF case is very &lt;em&gt;zen&lt;/em&gt;, it can be an art form. I just wish the software controlling it (BIOS/UEFI in the first place) was more reliable. I guess some things never change and hardware components for DIY builds are still hit or miss.&lt;/p&gt;
&lt;h3 id=&#34;but-seriouslywhy&#34;&gt;But seriously…why?&lt;/h3&gt;
&lt;p&gt;Ehm…&lt;a href=&#34;https://aplus.rs/2020/missing-developer-mac/&#34;&gt;here’s a hint&lt;/a&gt;. Double-digit-core machines I want from Apple are way too expensive for my needs. Thus I wanted to see would this work, for my specific projects and my needs.&lt;/p&gt;
&lt;p&gt;In general, it does.&lt;/p&gt;
&lt;p&gt;However, one small issue is enough to derail all your plans and in my case, it appears that with Xcode 11.3 on Catalina, there’s a &lt;a href=&#34;https://twitter.com/radiantav/status/1229874491502796814&#34;&gt;blocking issue&lt;/a&gt; with watchOS 6.1 Simulator / SDK when ran on AMD CPUs.&lt;/p&gt;
&lt;p&gt;I was told it works properly in Mojave but it’s not really an option to downgrade given that upcoming Xcode 11.4 requires Catalina.&lt;/p&gt;
&lt;p&gt;Issues like this is why I’m in no rush to replace my MacBook Pro with &lt;em&gt;Ryzentosh&lt;/em&gt;. Why I said that this is a long-term project. I will use this initial build to test the waters in upcoming months and see how things change along the way.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;I did know about that at least, as I used one with my MBP.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Ali Sayed is an amazing presenter and perfect example of creators YT should be proud of. I think I watched dozens of his videos, many of them multiple times.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;I’m listing prices next to each component so you have a rough idea how much the components cost, in Europe at least.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;Especially since the TB3 controller on my board is Titan Ridge, a &lt;a href=&#34;https://www.anandtech.com/show/12228/intel-titan-ridge-thunderbolt-3&#34;&gt;more powerful model&lt;/a&gt; than Alpine Ridge on ASRock Z390 board.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>How-to: USB mapping for OpenCore</title>
      <link>https://aplus.rs/2020/usb-mapping-how/</link>
      <pubDate>Sun, 09 Feb 2020 04:42:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/usb-mapping-how/</guid>
      <description>&lt;p&gt;With the problem of USB mapping explained in the &lt;a href=&#34;../usb-mapping-why/&#34;&gt;previous article&lt;/a&gt;, now we need to see how to workaround it. The ultimate goal is to have all the available ports that we want working, as both USB 2.0/3.0.&lt;/p&gt;
&lt;p&gt;There are some interesting articles on this topic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://usb-map.gitbook.io/project/terms-of-endearment&#34;&gt;USB Map&lt;/a&gt; by CorpNewt, useful for historical perspective and Intel-based machines.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.tonymacx86.com/threads/the-new-beginners-guide-to-usb-port-configuration.286553/#post-2029768&#34;&gt;The New Beginner&amp;rsquo;s Guide&lt;/a&gt; to USB Port Configuration, uses Hackintool which lists active port configuration in its USB tab. I found its display to be confusing and incorrect. Probably works OK for Intel machines.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/AMD/AMD-USB-map.md&#34;&gt;AMD USB Map&lt;/a&gt; part of OpenCore Vanilla Desktop Guide, which is the only one related to AMD stuff but also way too terse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;General rule for AMD builds: &lt;em&gt;ignore&lt;/em&gt; any guide that tells you to use &lt;a href=&#34;https://github.com/RehabMan/OS-X-USB-Inject-All&#34;&gt;USBInjectAll&lt;/a&gt; kext and/or &lt;a href=&#34;https://github.com/corpnewt/USBMap&#34;&gt;USBMap&lt;/a&gt; tool. They were made for Intel-based builds and do not work with AMD chipsets, at all.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Remember:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenCore is not altering macOS in any way. Which means no kexts are placed inside &lt;code&gt;/System/Library/Extensions&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;OpenCore kexts are loaded before macOS loads its own.&lt;/li&gt;
&lt;li&gt;Thus .kext applied by macOS can’t be overridden.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So in my case, I can’t override &lt;code&gt;iMacPro1,1-XHC1&lt;/code&gt; mapping from previous article. Whatever I do, macOS will apply that map and hide my ports 1 and 9. &lt;code&gt;XHC1&lt;/code&gt; string is used in two places:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/iMacPro-xhc-map-details.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in the &lt;code&gt;key&lt;/code&gt; itself: &lt;code&gt;iMacPro1,1-XHC1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;as the value of the &lt;code&gt;IONameMatch&lt;/code&gt; key&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thus the only course of action is to rename that controller so Apple’s map – which is based on “XHC1” value in the &lt;code&gt;IONameMatch&lt;/code&gt; – has no physical ports to work with.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;That brings me to another problem. Since the &lt;code&gt;.kext&lt;/code&gt; mapping is based on such a simple string name, I can’t use &lt;code&gt;XHC0&lt;/code&gt; for two different controllers – I need to rename one of them into something else.&lt;/p&gt;
&lt;p&gt;Hence, will remap &lt;code&gt;XHC1&lt;/code&gt; into &lt;code&gt;XHCI&lt;/code&gt; and also rename second &lt;code&gt;XHC0&lt;/code&gt; (under GP13) into &lt;code&gt;XHC2&lt;/code&gt;. This will be done using two custom SSDT files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://aplus.rs/efi-samples/SSDT-XHC1-to-XHCI.aml&#34;&gt;SSDT-XHC1-to-XHCI.aml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aplus.rs/efi-samples/SSDT-GP13.XHC0-to-XHC2.aml&#34;&gt;SSDT-GP13.XHC0-to-XHC2.aml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I created these two files following the samples available in the Vanilla desktop guide.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; I lack the  knowledge to write these from scratch and I’m grateful those samples are available.&lt;/p&gt;
&lt;p&gt;With those two files added into &lt;code&gt;config.plist&lt;/code&gt;, all of my ports were working and I did not need to create any .kexts because all 3 controllers have less than 15 ports (10, 10 and 8).&lt;/p&gt;
&lt;p&gt;So, job done, for me, without actually doing any port mapping, at all. When do you need a specific map?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Port mapping means that you know exactly which physical port maps into which logical software port, both for USB 2.0 and 3.0 paths.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is fairly easy to do, with one caveat: what if your ACPI setup yields more than 15 ports per (one of the) controllers? macOS will ignore the upper ones and you’ll be unable to complete the mapping.&lt;/p&gt;
&lt;p&gt;In that case – and only in that case – you need to &lt;em&gt;temporarily&lt;/em&gt; apply a kernel patch to disable that limit. That patching is notoriously buggy and unstable thus you need to enable it only for the purpose of mapping out your ports and then disable it. In OpenCore, patching is enabled by simply turning value of &lt;code&gt;XhciPortLimit&lt;/code&gt; key to &lt;code&gt;true&lt;/code&gt; (&lt;code&gt;YES&lt;/code&gt;) in &lt;code&gt;config.plist&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/opencore-xhci-port-limit.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;building-the-map&#34;&gt;Building the map&lt;/h2&gt;
&lt;p&gt;Now, you need to draw yourself a map of the ports you are interested in and get ready to fill-in the details. Here’s how that looked like for me:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/port-mapping-paper.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;To build the map, you’ll use IORegistryExplorer. Start it up, make sure that nothing is added into the Search field and scroll down to where the XHC controllers are. Ideally, you would be using Bluetooth mouse and keyboard, which will leave all the USB ports empty and ready to identify, one by one.&lt;/p&gt;
&lt;p&gt;If you do use USB mouse / keyboard then they will already appear, attached to their respective ports:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/usb-mouse-port.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Mouse and keyboard are usually USB 2.0 devices, so you can immediately mark those logical ports as USB 2.0.&lt;/p&gt;
&lt;p&gt;One of the ports will also be taken as Bluetooth USB 2.0 hub – all Bluetooth connected devices will appear here – for me that was &lt;code&gt;XHC0/PRT2&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/prt2-bluetooth-hub.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;But, that aside, what is the best way to mark ports as either USB 3.0 or USB 2.0? You need device(s) that are 2.0/3.0 and plug them in. The best solution is to use external USB hub like the one I have here, &lt;a href=&#34;https://www.anker.com/products/variant/4port-usb-30-ultra-slim-data-hub/A7516011&#34;&gt;from Anker&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/anker-hub.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;What’s so great about it? It registers itself as both USB 2.0 and USB 3.0 device when plugged-in. In  IORegExplorer, this looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/ioreg-plugged-in.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Plugged-in device appears as green and clearly shows as 2.0 or 3.0 hub under its respective logical ports. When you pull the device out, these green lines become red and strike-through. With this, you know exactly how given physical USB port maps into logical ports.&lt;/p&gt;
&lt;p&gt;Now you simply go through all the ports you have and entire map is done in like 10 minutes. For USB-C ports, I used Apple’s USB-A to USB-C adapter and plugged Anker’s hub that way.&lt;/p&gt;
&lt;p&gt;That’s it, really. You have done your mapping. Don’t forget that motherboards have special USB connectors for USB-ports on the chassis. Depending on what kind of PC case you have, maybe you don’t have them connected. But if you do, procedure is the same with those ports too.&lt;/p&gt;
&lt;p&gt;In the end, you will know which of the logical ports are used and which are not, for your specific hardware. All that’s left to do is create the .kext file.&lt;/p&gt;
&lt;h3 id=&#34;creating-the-usb-mapkext&#34;&gt;Creating the USB-map.kext&lt;/h3&gt;
&lt;p&gt;Vanilla guide explains the &lt;a href=&#34;https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/AMD/AMD-USB-map.md&#34;&gt;important details&lt;/a&gt; of the structure you need to create, look for “So what kind of data do we shove into this plist?” on that page.&lt;/p&gt;
&lt;p&gt;But that sample did not work for me, because it seems based on Mojave structure of the .kext, where Apple used &lt;code&gt;IOKitPersonalities&lt;/code&gt; as the key while in Catalina it’s &lt;code&gt;IOKitPersonalities_x86_64&lt;/code&gt;.  So here’s &lt;a href=&#34;https://aplus.rs/efi-samples/USB-map-Catalina.kext.zip&#34;&gt;my sample .kext&lt;/a&gt;, which you can use to build upon.&lt;/p&gt;
&lt;p&gt;The top of the plist can be used to specify which manufacturer (maker) and which model is that kext for.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/kext-start.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Then inside the mentioned &lt;code&gt;IOKitPersonalities_x86_64&lt;/code&gt; dictionary, you need to create another dictionary named as in this example:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/kext-port-structure.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;where the most important part is to specify correct &lt;code&gt;IONameMatch&lt;/code&gt; value. The rest of the values should hopefully remain the same, I simply copied them from Apple’s kext.&lt;/p&gt;
&lt;p&gt;Inside the port structure, &lt;code&gt;UsbConnector&lt;/code&gt; is a number that specifies type of the port, already explained in the guide:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;0: USB 2.0 Type-A connector
3: USB 3.0 Type-A connector
8: Type C connector - USB 2.0-only
9: Type C connector - USB 2.0 and USB 3.0 with Switch, flipping the device **doesn&amp;#39;t** change the ACPI port
10: Type C connector - USB 2.0 and USB 3.0 without Switch, flipping the device **does** change the ACPI port
255: Proprietary connector - For Internal USB ports like Bluetooth
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note that these values should already be specified for you, by the DSDT/SSDT. Type of connector is this part:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/dsdt-port-usbconnector-type.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;but I’m not sure this is always true though. I’ll need to see a lot of devices and configs to draw some firm conclusions. Here’s how the back I/O panel looks like for my motherboard:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/mb-back-panel.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;All ports there are USB-A 3.x (thus using &lt;code&gt;UsbConnector&lt;/code&gt; value of &lt;code&gt;3&lt;/code&gt;), except the TB3 port which is Type-C thus making it &lt;code&gt;9&lt;/code&gt; as I did not notice any changes in the port map when flipping the cable.&lt;/p&gt;
&lt;p&gt;When I briefly tested the motherboard in a case which has front USB-C port (connected to the 19pin connector on the mb), that port mapped into &lt;code&gt;XHC0/PRT1&lt;/code&gt; (USB 2.0 logical port) and &lt;code&gt;PRT7&lt;/code&gt; (USB 3.0 logical port).&lt;/p&gt;
&lt;p&gt;When I tried a different cable, one that goes from same 19pin connector on mb but splits into two USB-A 3.0 physical ports, then one of those two mapped into that same &lt;code&gt;PRT1&lt;/code&gt;+&lt;code&gt;PRT7&lt;/code&gt; pair while the other one mapped into &lt;code&gt;PRT3&lt;/code&gt;+&lt;code&gt;PRT8&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Which confirms my earlier note that full port mapping depends on the number of ports connected to every possible connector on the motherboard. So if it seems to you that some ports are unused, make sure to re-test that if you change cases where the PC build is housed-in.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;port&lt;/code&gt; must be specified as &lt;code&gt;Data&lt;/code&gt;; here I type just &lt;code&gt;03&lt;/code&gt; and let PlistEdit Pro convert that for me. Don’t forget: port numbers are hexadecimal when entered into the value field thus port &lt;code&gt;10&lt;/code&gt; is &lt;code&gt;0A&lt;/code&gt;, &lt;code&gt;11&lt;/code&gt; is &lt;code&gt;0B&lt;/code&gt; etc.&lt;/p&gt;
&lt;p&gt;Now, when you complete the map for the controller, take the highest port &lt;em&gt;value&lt;/em&gt; and copy it one level up, as value for &lt;code&gt;port-count&lt;/code&gt; key. The name of this key is confusing since it does not mean “total number of ports” but “highest port number used” instead.&lt;/p&gt;
&lt;p&gt;Here’s what I ended up with:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/final-kext.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Download that &lt;a href=&#34;https://aplus.rs/efi-samples/USBMap-ASRock-X570-Phantom-Gaming-ITX-TB3.kext.zip&#34;&gt;full USB-map.kext&lt;/a&gt; I created for my motherboard. It maps all back I/O ports + one USB-C front chassis port connected to motherboard 19-pin connector. &lt;em&gt;Use it as example.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Place your USB map kext into &lt;code&gt;EFI/OC/Kexts&lt;/code&gt; and add an entry for it in &lt;code&gt;config.plist&lt;/code&gt;. With all that loaded, I got this display in IOReg:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/ioreg-final.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;You can see I did not re-map &lt;code&gt;XHCITR&lt;/code&gt; as I don’t know how. I’m not sure how to reference it in SSDT nor in the .kext but fortunately I don’t have to since it just works. Its PRT3 is the USB 3.0 logical port for the back USB-C / TB3.&lt;/p&gt;
&lt;p&gt;That’s all. Happy port hunting!&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;It’s really interesting that with custom SSDT you can rename devices as you want and thus change hardware configuration etc. Crazy stuff. Here’s some starting links if you want to learn more: &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/extras/acpi&#34;&gt;Getting started with ACPI&lt;/a&gt;, A layman&amp;rsquo;s guide to &lt;a href=&#34;https://www.reddit.com/r/hackintosh/comments/bwjj73/a_laymans_guide_to_creating_a_custom_ssdt/&#34;&gt;creating a custom SSDT&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;I think that Mykola wrote SSDT-XHC2.aml sample specifically for this ASRock board, since someone else who has the same motherboard asked him what to do on the Discord channel.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Why you need to care about USB mapping</title>
      <link>https://aplus.rs/2020/usb-mapping-why/</link>
      <pubDate>Sun, 09 Feb 2020 04:32:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/usb-mapping-why/</guid>
      <description>&lt;p&gt;This was the most infuriating part of Hackintoshing for me. There are so many outdated, confusing, incomplete and downright wrong articles and forums posts, it beggars belief. Even for Intel-based Hacks, let alone AMD ones.
Main issue is mix-up of historical context one needs to be aware of, with bewildering amount of inside-the-racket jargon that’s hard to grasp.&lt;/p&gt;
&lt;p&gt;After spending multiple days on this alone I can say that &lt;em&gt;none&lt;/em&gt; of the available guides is entirely correct nor clear what you should do and more importantly &lt;em&gt;why you should do what they tell you to do&lt;/em&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;When you choose some Mac model to emulate – say iMacPro1,1 – macOS will load USB hardware map for that particular machine. Apple knows exactly what their models use as hardware configuration so they don’t really need to scan for available ports or other hardware (like Windows or Linux must do). Everything is known before-hand. One thing they know is that none of their machines have more than dozen ports per USB controller thus in 10.11 (El Capitan) they introduced hard limit of 15 ports per controller.&lt;/p&gt;
&lt;p&gt;On the other hand, general PC hardware is infinitely varying. Most motherboards feature large number of internal and external ports. It’s not uncommon to see 6-8 or even more USB ports on the back panel I/O. Additional ports which are present on chassis are connected to internal points on the motherboard. Each USB 3.0 port is also backwards compatible with USB 2.0 hence each physical port is counted as 2 logical ports. Then you have USB-C ports which are USB 3.0/2.0 compatible but are reversible so they need to be treated a bit special.&lt;/p&gt;
&lt;p&gt;In general, depending on the chipset and motherboard features, that 15-port limit can be easily blown.&lt;/p&gt;
&lt;p&gt;Saving point here is that there are usually multiple USB controllers in PC hardware; how many, it depends on the chipset and manufacturer choices. External USB hubs and other devices do not count here, since whatever you attach shares that one port where it’s attached.&lt;/p&gt;
&lt;p&gt;What all this means in practice?&lt;/p&gt;
&lt;p&gt;Most obvious consequence is that some of those ports you have will simply not work. macOS will ignore any port enumerated over 15th on particular controller. There is no specific logic which ones will that be but usually it first enumerates USB 2.0 and then 3.0 logical ports. It’s possible that some ports will be ignored even if they are below 15th, simply due to enforced port map of the emulated Mac; on my ASRock motherboard, ports 1 and 9 were removed on one of the 3 controllers.&lt;/p&gt;
&lt;p&gt;As you’ll see, this map is not sequential and physical ports map to (more or less) random positions in the logical map.&lt;/p&gt;
&lt;h2 id=&#34;tools&#34;&gt;Tools&lt;/h2&gt;
&lt;p&gt;You will need these two tools and you’ll run them on your Hackintosh.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/MaciASL&#34;&gt;MaciASL&lt;/a&gt; – automatically reads DSDT/SSDTs for the machine, can create new SSDT files in ASL format.&lt;/li&gt;
&lt;li&gt;IORegistryExplorer to browse active ACPI setup. You can find this tool all over the Internet but if you have an Apple developer account, you can find it as part of Xcode 11 additional tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;know-your-hardware&#34;&gt;Know your hardware&lt;/h2&gt;
&lt;p&gt;When MaciASL opens, it automatically loads DSDT for the current system. You can filter that list of devices in the bottom part of the left panel and here I’m filtering per “XHC”.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/maciasl-ryzen-dsdt-xhc.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;So AMD’s X570 chipset on ASRock ITX/TB3 motherboard has 3 USB controllers. You can see two of them have 10 ports and one has 8 ports. Thus in theory, I should have no problem and all my ports should be working out of the box.&lt;/p&gt;
&lt;p&gt;That’s only part of the story. DSDT can be augmented by manufacturer through a series of SSDTs. I assume this is done in layers because it allows them to have a base setup for particular chipset series and then customised for each particular model.&lt;/p&gt;
&lt;p&gt;MaciASL can show you what SSDTs are active for the hardware. Here’s a screenshot when MaciASL is ran on MacBookPro13,3:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/maciasl-ACPI-tables.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;These additional tables can add, alter and/or hide devices you see in the DSDT.&lt;/p&gt;
&lt;p&gt;Third layer of customisation is through OS device drivers. On macOS, this is done through .kexts. This third layer is primary source of confusion related to USB mapping for Hackintoshes. (More on that below.)&lt;/p&gt;
&lt;p&gt;Thus to summarize:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DSDT / SSDT = coming through ACPI (firmware, I guess)&lt;/li&gt;
&lt;li&gt;OS drivers (kexts) = specified in macOS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, when you run macOS on Apple’s hardware, Apple is the author of both the ACPI tables and kexts. When you run on non-Apple hardware, then original manufacturer (in my case ASRock) has done the ACPI part while Apple of course does macOS part.&lt;/p&gt;
&lt;p&gt;Your final XHCI configuration — known as USB map in Hackintosh circles — is combination of these 3 layers: DSDT / SSDT / kexts. To see that final result, use IORegistryExplorer which will display all devices it finds on your system. When filtered per “XHC”, this is what it showed for my build:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/ioreg-xhc-00.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Look closely and you’ll see a couple of strange things.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ports listed under XHC1 controller are not named &lt;code&gt;PRTx&lt;/code&gt; (as the DSDT declared) but are actually &lt;code&gt;HSxx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ports 1 and 9 are missing under XHC1&lt;/li&gt;
&lt;li&gt;There’re two controllers named XHC0&lt;/li&gt;
&lt;li&gt;There’s an additional XHCITR controller&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Last discuss from bottom to the top.&lt;/p&gt;
&lt;p&gt;This motherboard has Thunderbolt 3 port at the back I/O, managed by special TB3 controller. TB3 is also acting as regular USB-C port thus it has its own paired XHCI controller for that. So my motherboard has 3 XHCI controllers from the X570 chipset + 1 additional coming from (Titan Ridge) Thunderbolt 3.&lt;/p&gt;
&lt;p&gt;The chipset has two XHC0 controllers but they are wired through different paths. It’s unfortunate for us that they are called the same (you’ll see why in the next article) but they are not problematic in general since they appear exactly as DSDT specifies.&lt;/p&gt;
&lt;p&gt;XHC1 is the problem. Not only are ports renamed, two of them are missing. You probably already suspect why — macOS specifies an additional .kext that alters the port mapping setup in the hardware.&lt;/p&gt;
&lt;h2 id=&#34;know-what-you-emulate&#34;&gt;Know what you emulate&lt;/h2&gt;
&lt;p&gt;In my OC build, I chose to emulate iMacPro1,1 model. Thus the .kext macOS applies must be somehow connected to that particular machine.&lt;/p&gt;
&lt;p&gt;Where are those .kext maps located? In &lt;code&gt;/System/Library/Extensions&lt;/code&gt; and then:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in Mojave:&lt;br&gt;
&lt;code&gt;IOUSBHostFamily.kext/Contents/PlugIns/&lt;/code&gt;
&lt;code&gt;AppleUSBXHCIPCI.kext/Contents/Info.plist&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;in Catalina:&lt;br&gt;
&lt;code&gt;IOUSBHostFamily.kext/Contents/PlugIns/&lt;/code&gt;&lt;br&gt;
&lt;code&gt;AppleUSBHostPlatformProperties.kext/Contents/Info.plist&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;I mentioned Mojave to point out just how much stuff can change. They did not change just the file location but also the internal structure. This is one more reason why you should never rush to update to major macOS releases. With the push towards DriverKit, kext are going away and who knows what’s going to change in 10.16.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you open this Catalina .plist, this is the setup you’ll see:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/iMacPro-kext-map.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Well, well, well…You can see that this map for &lt;code&gt;XHC1&lt;/code&gt; on &lt;code&gt;iMacPro1,1&lt;/code&gt; essentially overwrites ACPI setup for &lt;code&gt;XHC1&lt;/code&gt;. Like it was never there…or?&lt;/p&gt;
&lt;p&gt;Look closer though: this map also specifies SS02-SS06 ports which do not appear in the IORegistryExplorer. So what happens with those ports..?&lt;/p&gt;
&lt;p&gt;To understand that, we need to look at the ACPI tables from the actual iMacPro, not from my build. If you know owner of one, you can ask them to run MaciASL for you 😉. Or you can look at &lt;a href=&#34;https://applelife.ru/threads/dampy-originalnyx-makov.2943712/&#34;&gt;this library&lt;/a&gt; of complete system dumps of various Mac models and find the one that interests you. For iMacPro, you’ll find the DSDT and 11 SSDTs:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/iMacPro-acpi-dump.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;DSDT has no XHCI setup, at all. XHC1 is declared in SSDT-10:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/iMacPro-SSDT-9.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;(SSDT-9 is also interesting, since it declares Thunderbolt 3 hardware.)&lt;/p&gt;
&lt;p&gt;And there you go. SSDT declares all the possible ports and then .kext augments that list by hiding (and possibly renaming) some ports. But the .kext can’t manufacture ports in software - they must exist in hardware.&lt;/p&gt;
&lt;p&gt;This is why in my build, which has 10 hardware ports under XHC1, I don’t see anything below HS10. But why is HS10 the last one visible, why not HS13? If you count the ports, my XHC1 has 10, while iMacPro’s is missing HS01 and HS09 so surely the next two in list should appear, right?&lt;/p&gt;
&lt;p&gt;Well, no. These are just display names which are mostly irrelevant. What matters is the physical port address. Here’s HS10 port number in iMacPro:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/iMacPro-HS10-port.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;and here it is on my build:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/usb-map/Ryzen5-PRT10-port.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;That’s how the ports match-up. Not through display name but through port address. HS12’s port number is &lt;code&gt;0x0C&lt;/code&gt; (12) which does not exist on my machine so the port is not showing up in IORegExplorer.&lt;/p&gt;
&lt;p&gt;There are more details&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; here but I don’t understand them completely (yet). It’s out of scope for this article anyway.&lt;/p&gt;
&lt;p&gt;I hope it’s now somewhat clearer just how complicated USB mapping is and why some ports on your PC appear dead. You can try switching SMBIOS to different Mac model and hope that things will be better. Community experience is that you are simply trading one set of problems for another.&lt;/p&gt;
&lt;p&gt;On my machine, it turns out that XHC1/PRT1 is the logical 2.0 position for the top-left USB port on the back I/O. The other hidden port, XHC1/PRT9, maps into logical USB 3 for the bottom-right port on the back I/O. So depending on what kind of USB device I plug in, it may or may not work.&lt;/p&gt;
&lt;p&gt;I’ll explain how to map-out your ports in the &lt;a href=&#34;../usb-mapping-how/&#34;&gt;next article&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;XHCI stands for &lt;a href=&#34;https://en.wikipedia.org/wiki/Extensible_Host_Controller_Interface&#34;&gt;eXtensible Host Controller Interface&lt;/a&gt; which deals with USB. Read on the Wikipedia if you are interested in the details.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Like how exactly Apple uses the concept of USBCompanion ports to shuttle 2.0 logical port for each TB3/USB-c physical port to appear under XHC1 but keeps the 3.0 logical port under XHCTR. Lots of voodoo there.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Network and Audio setup with OpenCore</title>
      <link>https://aplus.rs/2020/opencore-network-audio/</link>
      <pubDate>Sun, 09 Feb 2020 04:22:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/opencore-network-audio/</guid>
      <description>&lt;p&gt;Setting up network &amp;amp; audio interfaces can be anything between trivial and impossible.&lt;/p&gt;
&lt;h2 id=&#34;ethernet-lan&#34;&gt;Ethernet, LAN&lt;/h2&gt;
&lt;p&gt;My ASRock X570 board has Intel’s I211AT Ethernet (LAN) controller. Some good soul wrote &lt;a href=&#34;https://cdn.discordapp.com/attachments/390417931659378688/556912824228773888/SmallTree-Intel-211-AT-PCIe-GBE.kext.zip&#34;&gt;appropriate &lt;code&gt;.kext&lt;/code&gt;&lt;/a&gt; for that controller, link to which I found through &lt;a href=&#34;https://www.reddit.com/r/hackintosh/comments/cuhtgw/new_x570_build_intel_i211at_lan_and_80211ax/f0ads71/&#34;&gt;this reddit comment&lt;/a&gt;. I know, it sounds crazy to download from random links like that but such are the waters you are swimming in now.
With that particular kext integrated and referenced from the OC’s &lt;code&gt;config.plist&lt;/code&gt;, I got perfectly working Ethernet in macOS.&lt;/p&gt;
&lt;p&gt;Wireless is much harder story.&lt;/p&gt;
&lt;h2 id=&#34;wifi-bluetooth&#34;&gt;WiFi, Bluetooth&lt;/h2&gt;
&lt;p&gt;My motherboard integrates &lt;a href=&#34;https://www.intel.com/content/www/us/en/products/wireless/wi-fi-6-series/wi-fi-6-ax200.html&#34;&gt;Intel’s AX200 wireless module&lt;/a&gt; — a tiny wonder of a card which brings WiFi 6 and Bluetooth 5. Sadly, that card can’t possibly work under macOS as there are simply no drivers (although there’s at least &lt;a href=&#34;https://github.com/zxystd&#34;&gt;one person attempting&lt;/a&gt; to write them).&lt;/p&gt;
&lt;p&gt;Thus I needed something that Apple itself is (or was) using. If you search through Amazon or eBay or AliExpress, you’ll find multiple items ready-made for Hackintosh builds using Broadcom chips that Apple was using in older Macs. You can even buy the original Apple cards salvaged from some broken-down Macs. But they are rarely just plug and play – you need to do either hardware or software mods. Or both.&lt;/p&gt;
&lt;h3 id=&#34;option-1-bcm94360cd&#34;&gt;Option 1: BCM94360CD&lt;/h3&gt;
&lt;p&gt;I bought this card on AliExpress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1750Mbps Dual Band WiFi 2.4GHz/5GHz / Bluetooth 4.0 &lt;a href=&#34;https://www.aliexpress.com/item/1750Mbps-Dual-Band-WiFi-Bluetooth-Card-2-4GHz-5GHz-BT-4-0-Broadcom-BCM94360CD-Wireless-Module/32974196141.html&#34;&gt;Broadcom BCM94360CD&lt;/a&gt; card&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6209.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Because this card was designed for use in MacBooks / iMacs, it can’t be directly plugged in here (it’s a different connector). Hence the need for an &lt;a href=&#34;https://www.aliexpress.com/item/MINI-PCI-E-Adapter-Converter-to-wireless-wifi-card-BCM94360CD-BCM94331CD-BCM94360CS-BCM94360CS2-module-for-macbook/32256494722.html&#34;&gt;adapter card&lt;/a&gt;. But it was still not possible.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6210.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;It’s taller than Intel’s card (AX200 really is amazingly small) and X570 motherboards usually have integrated heat sinks over their I/O area. Thus in the end I used this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mini &lt;a href=&#34;https://www.aliexpress.com/item/BCM94360CD-BCM94360CS2-BCM943224PCIEBT2-Card-To-M-2-Key-A-E-Cable-For-Mac-OS-and-and/4000286967003.html&#34;&gt;PCIe riser with adapter&lt;/a&gt; for M.2 Key A/E&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6367.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;This turned out great since I could lift the wireless card out of the I/O and get much better reception when I attached 4 IPX MFH4 antenna receptors to it (you get 2 of these with the adapter and more can be found on AliExpress for few bucks).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6413.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;It’s really a hodgepodge contraption 🙃 but these antennas are so tiny and flexible that I could attach them to the inside of the chassis since they take up way less space than original antennas delivered along with the motherboard. Thus the final build is a clean, compact machine that looks great.&lt;/p&gt;
&lt;p&gt;With that mod, I had perfect WiFi 5 and BT 4.0 in macOS, with no additional software required. It acts and works as native Apple hardware.&lt;/p&gt;
&lt;p&gt;So if you can, use cards based on BCM94360 chips (there are several variants: CD, CS2, maybe more). Contraption or not, they truly work out of the box.&lt;/p&gt;
&lt;h3 id=&#34;option-2-bcm94352z-or-similar&#34;&gt;Option 2: BCM94352Z or similar&lt;/h3&gt;
&lt;p&gt;Another option is to use &lt;a href=&#34;https://www.aliexpress.com/item/Dual-band-Wireless-Hackintosh-BCM94352Z-WIFI-Card-Broadcom-bcm94352-M-2-Bluetooth-4-0-Network-NGFF/32464748097.html&#34;&gt;different card&lt;/a&gt; which is physically identical to Intel AX200.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6486.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;But that card is based on older Broadcom chip (BCM94352Z) which requires 4 different &lt;code&gt;.kext&lt;/code&gt;s for WiFi and Bluetooth to work:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/network-audio/94352Z-kexts.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Pay attentions to the order of loading, FirmwareData must be loaded before the PatchRAM:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/network-audio/94352Z-kexts-config.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Download the kexts through these links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/AirportBrcmFixup/releases&#34;&gt;AirportBrcmFixup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/BrcmPatchRAMreleases/releases&#34;&gt;BrcmPatchRAM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/BT4LEContinuityFixup/releases&#34;&gt;BT4LEContinuityFixup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even with all that it seems that Apple Watch unlock is not really working although it’s advertised as &lt;em&gt;Supported&lt;/em&gt; in System Information and initial setup goes through. As you can see I added &lt;code&gt;BT4LEContinuityFixup.kext&lt;/code&gt; but I’m not sure it’s doing anything useful here.&lt;/p&gt;
&lt;h2 id=&#34;audio&#34;&gt;Audio&lt;/h2&gt;
&lt;p&gt;If you connect your monitor using HDMI, you’ll have sound working just fine with this particular card (Sapphire RX570 Nitro+). Graphics card and its HDMI Audio device are recognised by macOS out of the box.&lt;/p&gt;
&lt;p&gt;The heart of audio support is this particular kext:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/AppleALC/releases&#34;&gt;AppleALC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To use back ports (those colorful surround loveliness at the back I/O panel), you’ll need to know the exact codec name. Usually, motherboard’s technical specifications page will spell it out.&lt;/p&gt;
&lt;p&gt;My ASRock X570 ITX/TB3 board integrates &lt;em&gt;7.1 CH HD Audio with Content Protection (Realtek ALC1220 Audio Codec)&lt;/em&gt;. Armed with that knowledge, &lt;a href=&#34;https://github.com/acidanthera/AppleALC/wiki/Supported-codecs&#34;&gt;open this page&lt;/a&gt; and hope the codec is already there. Realtek audio chips are extremely common thus no surprise that I found it in the list.&lt;/p&gt;
&lt;p&gt;I ran tool called &lt;a href=&#34;https://github.com/acidanthera/gfxutil&#34;&gt;gfxutil&lt;/a&gt; on the target machine, to get the PCI device path for the audio codec:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ ./gfxutil -f HDEF
PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x4)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now in &lt;code&gt;config.plist&lt;/code&gt;, under &lt;em&gt;Device Properties/Add&lt;/em&gt;, create new Dictionary named exactly as the result above and include the following key/value pairs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x4)&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;device_type&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;Audio device&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;layout-id&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;data&amp;gt;&lt;/span&gt;AQAAAA==&lt;span class=&#34;nt&#34;&gt;&amp;lt;/data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;model&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;Realtek ALC 1220&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;/dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That garbled &lt;code&gt;layout-id&lt;/code&gt; value you see is encoded number &lt;code&gt;1&lt;/code&gt; (from the previously mentioned list of codecs) into &lt;code&gt;Data&lt;/code&gt; binary blob expected as the value of that key. Because these byte-level Data conversions are hard as frakk to do manually, I let &lt;a href=&#34;https://www.fatcatsoftware.com/plisteditpro/&#34;&gt;PlistEdit Pro&lt;/a&gt; to handle this for me: I input &lt;code&gt;01&lt;/code&gt; and it does the conversion.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/network-audio/realtek-device-properties.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;After booting with that EFI, open System Preferences / Sound, under Output you should see the lovely list of audio devices – make sure to select &lt;em&gt;Internal Speakers&lt;/em&gt; there.&lt;/p&gt;
&lt;p&gt;Now, to test, plug your headphones into the green port on the back I/O panel and play any audio (I went to YouTube). If you hear the sound, you’re fine. If not, try some other value for &lt;code&gt;layout-id&lt;/code&gt;. Rinse and repeat until you get one that works.&lt;/p&gt;
&lt;p&gt;Microphone support for AMD systems is still missing, thus make sure to follow-up with &lt;a href=&#34;https://github.com/acidanthera/AppleALC&#34;&gt;AppleALC&lt;/a&gt; future development. Until then, that pink jack at the back will be useless and you can try using some USB-based microphone.&lt;/p&gt;
&lt;p&gt;If your USB ports are even working. Why they wouldn’t be? Ooh, &lt;a href=&#34;../usb-mapping-why/&#34;&gt;welcome to the world of hurt&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>OpenCore base setup</title>
      <link>https://aplus.rs/2020/opencore-first-steps/</link>
      <pubDate>Sun, 09 Feb 2020 04:12:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/opencore-first-steps/</guid>
      <description>&lt;p&gt;Starting point is the &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/&#34;&gt;OpenCore Vanilla desktop guide&lt;/a&gt;. &lt;em&gt;Vanilla&lt;/em&gt; means that there is more or less nothing pre-made for you. Each build will be uniquely suited for the given hardware and you’ll see immediately why, in first steps below.&lt;/p&gt;
&lt;p&gt;I said it previously and I’ll repeat again: read the entire guide very, very carefully, in its entirety, &lt;em&gt;before&lt;/em&gt; starting. It really needs multiple readings.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;First on the list of steps is setting up the BIOS of the machine into as optimal state as possible.&lt;/p&gt;
&lt;p&gt;Have &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/creating-the-usb&#34;&gt;Recommended BIOS settings&lt;/a&gt; open on your Mac (or smartphone) and get into the BIOS of your future Hackintosh. Try to find whatever is mentioned and set it up as recommended. For &lt;a href=&#34;https://www.asrock.com/mb/AMD/X570%20Phantom%20Gaming-ITXTB3/&#34;&gt;ASRock X570 ITX/TB3 motherboard&lt;/a&gt; with BIOS 2.00:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Advanced
 ↳ CPU configuration
   ↳ SVM Mode: Disabled
 ↳ Onboard devices configuration
   ↳ WAN Radio: Enabled
   ↳ Bt On/Off: Enabled
 ↳ ACPI configuration
   ↳ PCIE Devices Power On: Enabled
 ↳ Trusted Computing
   ↳ Security Device Support: Disabled
 ↳ AMD PBS
   ↳ PCIe x16 Bus Interface: Gen3
   ↳ Thunderbolt Support: Enabled
   ↳ Security Level: No Security
	
Security
 ↳ Secure Boot
   ↳ Secure Boot: Disabled

Boot
 ↳ Full Screen Logo: Disabled
 ↳ Fast Boot: Disabled
 ↳ CSM
   ↳ CSM: Disabled
   ↳ Above 4G Decoding: Enabled
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(it took me 3 tries over several days to find some of the mentioned settings.)&lt;/p&gt;
&lt;p&gt;Be aware thât list is not exact science, it is good-natured guess. A collection of tips and settings that worked for &lt;em&gt;most&lt;/em&gt; people.
Some settings may not exist for your machine. Some settings you may ignore and things would still work; for example, it says to disable Thunderbolt but I left it enabled and it was not an issue for me. YMMV.&lt;/p&gt;
&lt;p&gt;You’ll now prepare a bunch of necessary files then proceed to combine them into working OpenCore configuration.&lt;/p&gt;
&lt;h2 id=&#34;prepare-machine-files&#34;&gt;Prepare machine files&lt;/h2&gt;
&lt;p&gt;Now boot into Windows 10 and install &lt;a href=&#34;https://www.python.org/downloads/windows/&#34;&gt;latest Python release&lt;/a&gt;; look for “Download Windows x86-64 executable installer”.
Absolutely make sure to check &lt;em&gt;Add Python to PATH&lt;/em&gt; when you start the installer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/opencore/python-path.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;You need Python in order to run the tool from the next step.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Download &lt;a href=&#34;https://github.com/corpnewt/SSDTTime&#34;&gt;SSDTTime&lt;/a&gt; from GitHub.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/opencore/download-ssdttime.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Unzip anywhere you want, double-click  the &lt;em&gt;SSDTTime.bat&lt;/em&gt; file.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/opencore/ssdttime.bat.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;(If you don’t see .bat extension, turn off &lt;a href=&#34;https://www.file-extensions.org/article/show-and-hide-file-extensions-in-windows-10&#34;&gt;Hide file extensions for known types&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;In the SSDTTime console app, first dump the DSDT of your future Hackintosh (option 4):&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/opencore/ssdttime-dump-dsdt.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;which is instant:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/opencore/ssdttime-saved-dsdt.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;That DSDT file will remain the current one, so next choose option 2, to build SSDT for fake EC device (this is mentioned in the guide as required file):&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/opencore/ssdttime-make-fake-ssdt.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;If should tell you it did its work and it should look like below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/opencore/ssdttime-make-fake-ssdt-result.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;This is entirely dependent on the hardware you are running it on, so don’t worry if your result is not identical to mine. What matters is that &lt;em&gt;“Done.”&lt;/em&gt; at the end.&lt;/p&gt;
&lt;p&gt;Return to Main menu then do the same with options 1 and 3. Finally, quit the app and open &lt;em&gt;Results&lt;/em&gt; subfolder and you’ll see the fruits of your labor:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/opencore/ssdttime-ssdt-files.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Move all those files to your Mac somehow, if you’re like me and that’s where you are preparing OC build. If you are preparing on Windows then cool, leave them be until you need them, later on.&lt;/p&gt;
&lt;h3 id=&#34;wth-was-this-for&#34;&gt;WTH was this for..?&lt;/h3&gt;
&lt;p&gt;SSDT / DSDT is the description of your hardware. Each PC has its own DSDT and anywhere from just a few to dozen SSDT files. These tables are unique for each combination of chipset, CPU, memory, ports, controllers that control those ports, number of slots, type of slots and other connectors etc. It’s such a wide variety of hardware and companies that make them, it’s minor wonder this all works.&lt;/p&gt;
&lt;p&gt;These files, you just generated, are mandatory to make macOS boot possible; they are adapting hardware description tables already present for your hardware in such a way that macOS will accept them and not throw a fit.&lt;/p&gt;
&lt;p&gt;Building them manually requires serious levels of &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/extras/acpi&#34;&gt;hardware and ACPI&lt;/a&gt; knowledge. That &lt;em&gt;SSDT Time&lt;/em&gt; exists is tremendous help — &lt;a href=&#34;https://github.com/corpnewt&#34;&gt;thanks CorpNewt&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id=&#34;opencore-setup&#34;&gt;OpenCore setup&lt;/h2&gt;
&lt;p&gt;Next you’ll need to download the OpenCore itself and other auxiliary / support packages. Download the following zip, using latest version with DEBUG in the name:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/OpenCorePkg/releases&#34;&gt;OpenCorePkg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unzip it and take a look inside. You’ll find the &lt;code&gt;EFI&lt;/code&gt; folder - &lt;em&gt;copy&lt;/em&gt; that to some other place — that will be your OC boot setup.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/EFI-oc.0.5.5-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here I removed some &lt;code&gt;.efi&lt;/code&gt; drivers since they were not needed for my hardware, which is all fairly new (from 2019). Lookup what those EFI drivers do if you have older hardware, as you might be needing them.&lt;/p&gt;
&lt;h3 id=&#34;acpi-files&#34;&gt;ACPI files&lt;/h3&gt;
&lt;p&gt;Next step now is to copy all &lt;code&gt;SSDT-*.aml&lt;/code&gt; files from &lt;code&gt;SSDTTime/Results&lt;/code&gt; into &lt;code&gt;EFI/OC/ACPI&lt;/code&gt;. Do not copy &lt;code&gt;DSDT.aml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/EFI-ACPI-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Then I renamed &lt;code&gt;SSDT-EC.aml&lt;/code&gt; into &lt;code&gt;SSDT-SBRG.aml&lt;/code&gt; because the actual device name referenced inside the file is named &lt;code&gt;SBRG&lt;/code&gt; so just wanted to avoid confusion for myself.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h3 id=&#34;drivers&#34;&gt;Drivers&lt;/h3&gt;
&lt;p&gt;The only truly required driver (at least up to OpenCore 0.5.5) is &lt;code&gt;FwRuntimeServices.efi&lt;/code&gt; since it deals with firmware settings, memory and all that. That’s my understanding, I did not look too deeply into this.&lt;/p&gt;
&lt;p&gt;The other two drivers you need are for the file systems that macOS is using: HFS+ and APFS. Drivers for them are located in this package:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/AppleSupportPkg/releases&#34;&gt;AppleSupportPkg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/EFI-Drivers-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Pick up the two .efi files and copy them into your &lt;code&gt;EFI/OC/Drivers&lt;/code&gt; folder.&lt;/p&gt;
&lt;h3 id=&#34;kexts&#34;&gt;Kexts&lt;/h3&gt;
&lt;p&gt;Okie, now we need some &lt;code&gt;.kext&lt;/code&gt;s = &lt;strong&gt;K&lt;/strong&gt;ernel &lt;strong&gt;Ext&lt;/strong&gt;ensions. Download these three:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/Lilu/releases&#34;&gt;Lilu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/VirtualSMC/releases&#34;&gt;VirtualSMC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/WhateverGreen/releases&#34;&gt;WhateverGreen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From there, pickup just the main .kext and put inside &lt;code&gt;EFI/OC/Kexts&lt;/code&gt;. Now, this is how final EFI structure should look like:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/OC-00-base-setup.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;That is the base minimum of files you need to boot macOS.&lt;/p&gt;
&lt;h2 id=&#34;configplist&#34;&gt;Config.plist&lt;/h2&gt;
&lt;p&gt;The last step now is the most time-consuming one: go through the &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/amd-config.plist/amd-config&#34;&gt;AMD section&lt;/a&gt; of the OpenCore Vanilla Desktop Guide, configuring each section.&lt;/p&gt;
&lt;p&gt;Read and follow the advice given there for each option and also read its description in the &lt;code&gt;OpenCorePkg/Docs/Configuration.pdf&lt;/code&gt;. Then set the value in the &lt;code&gt;config.plist&lt;/code&gt;, re-read again to make sure you did it properly. I will not be going through all those settings, the guide and documentation cover those very well.&lt;/p&gt;
&lt;p&gt;Here, I’ll just focus how to reference all the files we put in &lt;code&gt;EFI/OC&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Where is &lt;code&gt;config.plist&lt;/code&gt;? You create it yourself. Huge help is that you have an excellent starting point in &lt;code&gt;OpenCorePkg/Docs/Sample.plist&lt;/code&gt;. Copy that into &lt;code&gt;EFI/OC&lt;/code&gt; folder and rename it into &lt;code&gt;config.plist&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/EFI-OC-config.plist-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;I’ll be using screenshots from PlistEdit Pro from now on, so this is how &lt;code&gt;config.plist&lt;/code&gt; looks when opened in it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/config-plisteditpro.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;And this is how that looks like in plain-text editor:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE plist PUBLIC &amp;#34;-//Apple//DTD PLIST 1.0//EN&amp;#34; &amp;#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;#34;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;plist&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;version=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;#WARNING - 1&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;This is just a sample. Do NOT try loading it.&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;#WARNING - 2&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;Ensure you understand EVERY field before booting.&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;#WARNING - 3&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;In most cases recommended to use Sample.plist&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;#WARNING - 4&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;Use SampleFull.plist for end of life models: 2011 and older.&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;#WARNING - 5&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;https://docs.google.com/spreadsheets/d/1kGFz3_kp5xCDRRQpfnIUOvbiHXTmxEgyx97u73ImXXE/edit#gid=0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;ACPI&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Add&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;array&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nt&#34;&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Comment&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;My custom DSDT&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Enabled&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;nt&#34;&gt;&amp;lt;false/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;nt&#34;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Path&lt;span class=&#34;nt&#34;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;nt&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;DSDT.aml&lt;span class=&#34;nt&#34;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nt&#34;&gt;&amp;lt;/dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It really, really helps to use a good tool. Text editor is the last resort and as such it’s the most work. So either use PlistEdit Pro or ProperTree or Xcode.&lt;/p&gt;
&lt;p&gt;Read the values of the 5 warning keys at the top and then remove them.&lt;/p&gt;
&lt;h3 id=&#34;acpi-section&#34;&gt;ACPI section&lt;/h3&gt;
&lt;p&gt;Purpose of this section is tell OpenCore what files it should load from &lt;code&gt;EFI/OC/ACPI&lt;/code&gt; folder.&lt;/p&gt;
&lt;p&gt;Expand &lt;em&gt;ACPI/Add&lt;/em&gt; section and you’ll find 10+ items there. &lt;em&gt;Those are all samples&lt;/em&gt;, examples what could possibly be added there. Delete all but one item in this section:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/ACPI-delete-samples-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Expand the remaining one:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/ACPI-entry-expanded-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;It’s pretty obvious what you need to do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;write into the &lt;code&gt;Comment&lt;/code&gt; value whatever you want&lt;/li&gt;
&lt;li&gt;set &lt;code&gt;Enabled&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; (PlistEditPro shows that as YES)&lt;/li&gt;
&lt;li&gt;enter the file name in the &lt;code&gt;Path&lt;/code&gt; value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I only have two files, so I copied this structure and populated both entries:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/ACPI-populated-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;In the &lt;em&gt;ACPI/Block&lt;/em&gt; section I had nothing to…err, block, so I removed those two sample entries. Also in the &lt;em&gt;ACPI/Patch&lt;/em&gt; section.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/ACPI-Block-Patch-remove-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;There’s one more thing you need to do here. We removed the sample ACPI patches but need to add patches specific for our hardware. SSDTTime generated those as well — in &lt;code&gt;SSDTTime/Results&lt;/code&gt; you’ll probably find &lt;code&gt;patches_OC.plist&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/ssdttime-OC-patches-added-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;These are ACPI patches required for your specific hardware. Just open that file and copy the entries you find there into &lt;em&gt;Patch&lt;/em&gt; section in &lt;code&gt;config.plist&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;kexts-section&#34;&gt;Kexts section&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;.kext&lt;/code&gt; file is nothing but a folder that macOS treats specially. So if you are on Mac, right-click on it, then choose &lt;em&gt;Show package contents&lt;/em&gt; to get into the folder and you’ll find the paths you need to specify in this section.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/kext-show-package-contents-f.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Those 3 .kext files I added, here how they should look like.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/kernel-add-populated.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Be aware that executable name is not always identical to the &lt;code&gt;.kext&lt;/code&gt; file name. It’s the most common practice but it does not have to be thus it’s important to always verify &lt;code&gt;ExecutablePath&lt;/code&gt; is properly set.&lt;/p&gt;
&lt;p&gt;I deleted whatever entries were under &lt;em&gt;Kexts/Block&lt;/em&gt;, &lt;em&gt;Kexts/Emulate&lt;/em&gt; and &lt;em&gt;Kexts/Patch&lt;/em&gt;. Those were all samples and I did not need them.&lt;/p&gt;
&lt;p&gt;What I did need is a set of proper kernel patches required for my machine. My AMD Ryzen 5 3600 CPU is part of the CPU generation that AMD internally code-named 17h. They are &lt;a href=&#34;https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/17h&#34;&gt;available at the AMD_Vanilla’s repo&lt;/a&gt; in the opencore branch. So copy all the Patch entries from that file into the same location in your &lt;code&gt;config.plist&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;These patches is what tricks macOS to think it’s running on Apple’s hardware. They are custom-made for each major macOS version and without them booting into macOS is not possible. Until these become available for each major (10.x) macOS version you should not attempt to upgrade. Upgrading to minor versions (10.15.x) is almost always OK since the patches are the same.&lt;/p&gt;
&lt;h3 id=&#34;uefi-section&#34;&gt;UEFI section&lt;/h3&gt;
&lt;p&gt;In the &lt;em&gt;UEFI/Drivers&lt;/em&gt; you need to list the names of the .efi files from the &lt;code&gt;EFI/OC/Drivers&lt;/code&gt; folder.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/uefi-drivers.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Really simple, nothing to it.&lt;/p&gt;
&lt;h3 id=&#34;platforminfo-section&#34;&gt;PlatformInfo section&lt;/h3&gt;
&lt;p&gt;Vanilla guide goes into much more details about this section. I just want to point out the most important aspect.&lt;/p&gt;
&lt;p&gt;What OpenCore allows you to do is emulate one of the Apple models. macOS does not work on any hardware; it works on carefully engineered machines made by Apple. Thus you need to choose which Apple model you want to mimic.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/platforminfo-system-product-name.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;That’s what &lt;code&gt;SystemProductName&lt;/code&gt; value is for. I chose &lt;code&gt;iMacPro1,1&lt;/code&gt; as it’s the most recommended one. Again — read up, especially what’s said in the guide and make an informed decision.&lt;/p&gt;
&lt;h3 id=&#34;finalize-config&#34;&gt;Finalize config&lt;/h3&gt;
&lt;p&gt;Now you need to finish-up the rest of the config, &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/amd-config.plist/amd-config&#34;&gt;following instructions&lt;/a&gt; from the Vanilla guide.&lt;/p&gt;
&lt;p&gt;Here is the &lt;a href=&#34;https://aplus.rs/efi-samples/EFI-00.zip&#34;&gt;EFI at this point&lt;/a&gt; I got setup for my hardware (ASRock X570 ITX/TB3 motherboard, AMD Ryzen 5 3600, RX 570 graphics card). This EFI is just an example, use it as such.&lt;/p&gt;
&lt;p&gt;I hope, by taking you through all these steps, I made it very clear why &lt;strong&gt;you should never pickup and use someone else’s EFI folder&lt;/strong&gt;. There are many of them posted online. You can look into them and use them as examples but never use them directly. Unless you have &lt;em&gt;completely identical&lt;/em&gt; hardware as the original creator, it may simply not work or it may work but with various issues — including boot errors, kernel panics, hardware not being recognised etc.&lt;/p&gt;
&lt;p&gt;Don’t be lazy.&lt;/p&gt;
&lt;h2 id=&#34;prepare-boot-usb&#34;&gt;Prepare boot USB&lt;/h2&gt;
&lt;p&gt;Now, the moment arrived for that small USB you had waiting.&lt;/p&gt;
&lt;p&gt;I formatted it as bootable partition, with HFS+/&lt;em&gt;macOS Extended (Journaled)&lt;/em&gt; file system using &lt;em&gt;GUID Partition Map&lt;/em&gt;. Named it &lt;em&gt;OpenCoreUSB&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/usb-format-oc.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;When done, you’ll see OpenCoreUSB disk on your desktop. It’s empty and it’s entirely irrelevant. 🙃 What you need is the hidden EFI system partition (often referred as ESP) on that same disk. To reveal it, you’ll need another tool:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/corpnewt/MountEFI&#34;&gt;mountEFI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Download, follow the installation steps in the README and execute &lt;code&gt;MountEFI.command&lt;/code&gt;. This will open the terminal:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/mountefi.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Pick the number next to the OpenCoreUSB (do &lt;em&gt;not&lt;/em&gt; choose your existing MacBook Pro disk), type your password when asked for and it’s done. Quit &lt;code&gt;mountEFI&lt;/code&gt; and open the EFI partition.&lt;/p&gt;
&lt;p&gt;I repeat: be very careful to &lt;em&gt;not&lt;/em&gt; choose number next to your MacBook Pro disk. If you do that and alter that EFI partition you may render your MBP un-bootable.&lt;/p&gt;
&lt;p&gt;Now, with EFI shown on the Desktop, open it and you’ll see it’s empty. Copy the EFI folder you have prepared over there.&lt;/p&gt;
&lt;p&gt;Ta-da! You’re ready.&lt;/p&gt;
&lt;h2 id=&#34;first-boot&#34;&gt;First boot&lt;/h2&gt;
&lt;p&gt;Now place both OpenCoreUSB and macOS Installer USB into two ports on the back of your PC and power it up. Make sure to enter into Boot menu and choose OpenCoreUSB stick as boot option.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/IMG_6511.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;After some time it will show you list of bootable disks it found, where you choose macOS Install and fingers crossed, you’ll soon see macOS Installation starting up.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/IMG_6512.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;If the macOS installation USB disk is not visible, then place it in some other USB port, reset the PC and try again.&lt;/p&gt;
&lt;h3 id=&#34;if-it-fails-to-boot&#34;&gt;If it fails to boot&lt;/h3&gt;
&lt;p&gt;If boot fails, OpenCore will create log file on that same EFI system partition. Thus when you move the USB back to your working Mac and reveal the EFI partition using &lt;em&gt;mountEFI&lt;/em&gt;, you’ll be able to see that log:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/first-steps/efi-log-file.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here’s one typical rookie mistake where I copied &lt;code&gt;VboxHfs.efi&lt;/code&gt; driver into &lt;code&gt;EFI/OC/Drivers&lt;/code&gt; but then forgot to correct driver name from the &lt;code&gt;Sample.plist&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;00:000 00:000 OC: OpenCore is now loading (Vault: 0/0, Sign 0/0)...
…
01:747 00:039 OC: Got 3 drivers
01:787 00:040 OC: Driver HfsPlus.efi at 0 is being loaded...
01:827 00:040 OC: Driver HfsPlus.efi at 0 cannot be found!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So yeah. Mistakes will happen. Edit &lt;code&gt;config.plist&lt;/code&gt; then try again. Consult the guide if needed, this time looking at &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/troubleshooting/troubleshooting&#34;&gt;General Troubleshooting&lt;/a&gt; section and try again. And again until you get it right.&lt;/p&gt;
&lt;p&gt;When you find one EFI setup that works, make a backup copy somewhere safe and continue tweaking on. But make sure to always have a backup copy of the last EFI that booted successfully.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This is the base minimum to attempt macOS installation. Your network will probably not work, nor WiFi/Bluetooth, nor audio. But you should be able to complete the installation process with USB-based mouse and keyboard.&lt;/p&gt;
&lt;p&gt;Make sure that on each restart during installation you enter Boot menu and choose OpenCoreUSB stick as boot disk (or set it as primary boot option in BIOS). Everything else will work automatically during macOS installation restarts without you having to do anything.&lt;/p&gt;
&lt;p&gt;You can now brag on Reddit or wherever with your “About This Mac” screenshot. ;) You’re still far away from calling this a success but it’s an important first step.&lt;/p&gt;
&lt;p&gt;Depending on the hardware you have, you are 20% done or 50% done or anything in between. What, you thought it’s almost done? Eh…let&amp;rsquo;s tackle &lt;a href=&#34;../opencore-network-audio/&#34;&gt;network and audio&lt;/a&gt; first.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;EC is the same kind of device in Intel land, I believe.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Getting ready to build Hackintosh using OpenCore</title>
      <link>https://aplus.rs/2020/opencore-getting-ready/</link>
      <pubDate>Sun, 09 Feb 2020 04:02:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/opencore-getting-ready/</guid>
      <description>&lt;p&gt;Do you know what Hackintosh is? In short:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Building a PC computer using off-the-shelf parts capable of running macOS. Then actually tricking macOS to install and run.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When I got the idea to attempt this, I was a complete noob. Utter and complete noob as more than 90% of people I’ve seen seeking help online.&lt;/p&gt;
&lt;p&gt;I believe it’s helpful to read something with perspective of a newbie who managed to achieve the goal. Note that this is &lt;em&gt;not a guide&lt;/em&gt;, just a diary of my journey, with the hardware I have.&lt;/p&gt;
&lt;p&gt;Thus don’t expect to find all the answers here.
You’ll still need to learn and do your research. It never hurts to learn.&lt;/p&gt;
&lt;p&gt;· ▪︎ · ▪︎ · ❖ · ▪︎ · ▪︎ ·&lt;/p&gt;
&lt;p&gt;Let me tell you right out of the box: to do this, you &lt;em&gt;need&lt;/em&gt; to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Be patient.&lt;/li&gt;
&lt;li&gt;Be tenacious.&lt;/li&gt;
&lt;li&gt;Be very comfortable changing stuff in BIOS / UEFI of your PC. If you don’t know what those terms mean or you never entered into one before, &lt;em&gt;don’t even try&lt;/em&gt;. Sincerely.&lt;/li&gt;
&lt;li&gt;Be prepared to read &lt;em&gt;a lot&lt;/em&gt; of very technical documentation and learn a ton of new stuff.&lt;/li&gt;
&lt;li&gt;Have a working 64bit Windows 10 installation &lt;em&gt;on separate disk&lt;/em&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; in the machine you want to convert into Hackintosh.&lt;/li&gt;
&lt;li&gt;Have decent &lt;em&gt;plain text&lt;/em&gt; editor and two USB 3.0 flash drives (one of any size and another of 16GB).&lt;/li&gt;
&lt;li&gt;Have at least a week or two to spend on this. As minimum.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you don’t see yourself checking all those points, this is not for you. I really mean it: &lt;strong&gt;this may not be for you&lt;/strong&gt;. There’s a fair chance to screw up your BIOS and make the machine so useless you’ll need to find a service nearby, you may render your (possibly) existing Windows 10 installation unusable etc.&lt;/p&gt;
&lt;p&gt;Just save up more money, buy a proper Mac as built by Apple and enjoy what you have.&lt;/p&gt;
&lt;h3 id=&#34;hardware&#34;&gt;Hardware&lt;/h3&gt;
&lt;p&gt;If you don’t already have PC, then you must be reading this in preparation to build your first &lt;em&gt;and&lt;/em&gt; make it a Hackintosh. That’s…ambitious.&lt;/p&gt;
&lt;p&gt;First read through &lt;a href=&#34;https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extras/hardware.md&#34;&gt;recommended hardware&lt;/a&gt;. Choosing something that other people already used to build Hackintosh will certainly make the task easier. You stand a better chance of someone helping you out.&lt;/p&gt;
&lt;p&gt;If you already have some PC, still read through that list. You’ll know if your hardware is usable and what parts you may need to upgrade / replace.&lt;/p&gt;
&lt;h3 id=&#34;software&#34;&gt;Software&lt;/h3&gt;
&lt;p&gt;Good tools make stuff much easier.
To edit &lt;code&gt;config.plist&lt;/code&gt;, you need to use one of these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.fatcatsoftware.com/plisteditpro/&#34;&gt;PlistEdit Pro&lt;/a&gt;, for macOS. My pick.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://developer.apple.com/xcode/&#34;&gt;Xcode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/corpnewt/ProperTree&#34;&gt;ProperTree&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;plain text editor like &lt;a href=&#34;https://macromates.com&#34;&gt;TextMate&lt;/a&gt; or &lt;a href=&#34;https://www.barebones.com/products/bbedit/index.html&#34;&gt;BBEdit&lt;/a&gt; or whatever is useful on Windows (Notepad will work too).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You will need one more tool to reveal your EFI (boot) partition where the OpenCore setup will be copied.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/corpnewt/MountEFI&#34;&gt;MountEFI&lt;/a&gt;, command line utility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are other ways to reveal this partition but this one was enough for me.&lt;/p&gt;
&lt;p&gt;The following tools are incredibly useful for post-macOS-installation fine-tuning.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/MaciASL/releases&#34;&gt;MaciASL&lt;/a&gt; – automatically reads DSDT for the machine, can create new SSDT files in ASL format.&lt;/li&gt;
&lt;li&gt;IORegistryExplorer (for Mac) to browse active ACPI setup. You can find this tool all over the Internet’s (more or less shady) download sites. If you have an Apple developer account, you can find it as part of Xcode 11 additional tools (search for them in &lt;a href=&#34;http://developer.apple.com/download/more/&#34;&gt;More Downloads&lt;/a&gt; section).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/acidanthera/gfxutil/releases&#34;&gt;gfxutil&lt;/a&gt;, command line utility to lookup / extract Device Properties&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mac.softpedia.com/get/System-Utilities/Hackintool.shtml&#34;&gt;Hackintool&lt;/a&gt; to review active USB ports, PCI device list and other info (although some of the stuff it displays is wrong on AMD systems).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;assumptions&#34;&gt;Assumptions&lt;/h3&gt;
&lt;p&gt;If you want to follow this guide, you need to forget that Clover and various *Beasts exist. You’ll encounter them all the time, all over the place but just ignore their existence. I did.&lt;/p&gt;
&lt;p&gt;The aim here is to install macOS Catalina (also known as macOS 10.15) on the target machine based on AMD’s X570 chipset and Ryzen 3600 CPU. Starting with 10.15.2, &lt;a href=&#34;https://github.com/acidanthera/OpenCorePkg&#34;&gt;OpenCore&lt;/a&gt; is the only way to build Hackintosh &lt;em&gt;if&lt;/em&gt; your PC build uses AMD CPU.
I recommend to go with OpenCore regardless of what CPU platform you are using, Intel or AMD.&lt;/p&gt;
&lt;p&gt;People that work on it are trying to make it completely independent from Apple’s software, as in – don’t touch nor alter anything in macOS installation. Instead, they prepare the environment in which the installer (and later macOS itself) is running so it works out of the box.&lt;/p&gt;
&lt;p&gt;I have used my MacBook Pro to prepare the OC setup, then copied the EFI to the USB or the target machine. Thus all explanations will reference macOS-based tools.&lt;/p&gt;
&lt;h2 id=&#34;where-to-start&#34;&gt;Where to start&lt;/h2&gt;
&lt;p&gt;There’s an &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/&#34;&gt;extensive guide&lt;/a&gt; on how to prepare the OpenCore environment. That guide is super-detailed but written by someone who is deep into this domain. Throughout the guide you will find sentences which make sense when you “know stuff” but sound like utter gibberish when you’re a newbie. Like this one:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For those having trouble understanding the SSDTs regarding EC can use CorpNewt&amp;rsquo;s SSDTTime to properly setup your SSDT.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Reading this for the first time, I had no idea what SSDT nor its DSDT cousin are.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; You’ll have these “WTF…🥺🤯” moments all the time. This is why I said you need to be ready to learn; &lt;em&gt;a lot&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Be that as it is, &lt;em&gt;that guide is indispensable&lt;/em&gt;. It’s full of great screenshots, lots of hints to optional stuff and it invites you to explore, search and learn more. Plus it’s constantly being updated.&lt;/p&gt;
&lt;p&gt;Double, triple and &lt;em&gt;quadruple-check every sentence and screenshot&lt;/em&gt; in it and make sure you set up your keys and values in the &lt;code&gt;config.plist&lt;/code&gt; as required. I read it multiple times before trying for the first time and &lt;em&gt;still&lt;/em&gt; needed 6-8 attempts before getting the base minimum of macOS working. Every time I encountered some error, I returned to the guide, re-read the parts that seemed relevant and found something I did wrong or completely missed to do. &lt;em&gt;It is hard&lt;/em&gt;, don’t believe anyone saying it’s a breeze.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The second important document you need to read, cover to cover, is &lt;a href=&#34;https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf&#34;&gt;Configuration.pdf&lt;/a&gt; from the OpenCorePkg itself. It contains thoroughly detailed explanation of every option you’ll find in the &lt;code&gt;config.plist&lt;/code&gt;, the heart of the OC setup. This is surprisingly comprehensive documentation and it shows dedication deserving of utmost respect.&lt;/p&gt;
&lt;p&gt;Final resource is the community you can find at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.reddit.com/r/hackintosh/&#34;&gt;Hackintosh&lt;/a&gt; subreddit (hint: read the sidebar links)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://vanilla.amd-osx.com&#34;&gt;AMD OS X&lt;/a&gt;, their &lt;a href=&#34;https://forum.amd-osx.com&#34;&gt;forums&lt;/a&gt; and &lt;a href=&#34;https://discord.gg/EfCYAJW&#34;&gt;Discord&lt;/a&gt; channels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As in any community, be respectful and polite. Don’t ask general questions like “how to map my USB ports”. Focus on specific issue you are facing, have a screenshot or a photo to share; make the effort to show you have read the guide. I asked a lot of questions and about 1/3 of them got answered or at least I got pointers where to dig.&lt;/p&gt;
&lt;p&gt;Lastly: &lt;em&gt;don’t act entitled to time nor answers&lt;/em&gt; from people that make this possible.&lt;/p&gt;
&lt;h2 id=&#34;prepare-macos-installer&#34;&gt;Prepare macOS installer&lt;/h2&gt;
&lt;p&gt;You’ll need a macOS installation loaded onto 16GB USB stick which you can boot from. I already have Macbook Pro so it was easy to get the installation from App Store and &lt;a href=&#34;https://support.apple.com/en-us/HT201372&#34;&gt;create the bootable USB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Otherwise, checkout AMD OS X Vanilla’s &lt;a href=&#34;https://vanilla.amd-osx.com/#installation-section&#34;&gt;Installation part&lt;/a&gt; or &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/opencore-efi/winblows-install&#34;&gt;similar section&lt;/a&gt; for Windows in OpenCore Vanilla Desktop guide.&lt;/p&gt;
&lt;p&gt;I mentioned two USB sticks. The second, smaller one, will be used for the OpenCore setup which can be under 1MB but it can also be up to 10MB or more. Regardless, any USB stick from last 10 years would work although I recommend to get something using USB 3.0 since booting up will be way faster.&lt;/p&gt;
&lt;p&gt;Do not use the same USB disk as for the macOS installer. Just…don’t. I find it best to keep all these things separated and avoid stupid mistakes.&lt;/p&gt;
&lt;p&gt;I’ll end this introduction here and leave you to build your PC, if you don’t already have one.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Make sure to install Windows 10 &lt;em&gt;64bit&lt;/em&gt; edition on your PC and make sure that it’s working proper and stable. That means: all drivers installed, all hardware working. No hardware should be marked with yellow warning triangles in &lt;a href=&#34;https://support.microsoft.com/en-us/help/4026149/windows-open-device-manager&#34;&gt;Device Manager&lt;/a&gt;. Test the machine with one of many stress test tools to make sure hardware is OK.&lt;/p&gt;
&lt;p&gt;If base installation of Windows 10 is not working properly, the macOS won’t either.&lt;/p&gt;
&lt;p&gt;Another reason that you need Windows running on that machine is that some of the &lt;a href=&#34;../opencore-first-steps/&#34;&gt;first steps of OpenCore build&lt;/a&gt; will need to be performed on that target machine.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;It’s technically possible to do dual-OS-boot on the same disk but this is far more advanced setup than I ever intend to do. Buy another SATA SSD, things are much easier that way.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;I’m not sure I entirely do, even today.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Side-benefit: you get to have a whole new level of respect for people that do that work for you, at Apple, Corsair, HP, Dell, Lenovo etc.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>hMac</title>
      <link>https://aplus.rs/2020/hmac/</link>
      <pubDate>Sun, 02 Feb 2020 14:02:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/hmac/</guid>
      <description>&lt;p&gt;I’ve built myself &lt;em&gt;Hackintosh&lt;/em&gt; with AMD Ryzen 5 CPU in small form factor (SFF) case. This is future-proof, expandable computer that can rival any Mac mini (late 2018) configuration for far less money.&lt;/p&gt;
&lt;p&gt;It’s perfectly usable for iOS development as it is but I intend to make it 100% functional.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hmac/macOS-first-boot.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;This build is &lt;em&gt;macOS Catalina compatible&lt;/em&gt; machine, where everything works with SIP (System Integrity Protection) on. All the usual caveats that people post on YouTube and various forums for their Hackintosh builds do not apply here. Ethernet works. WiFi (11ac) works. BT4LE works. All Apple services work, things like iMessage, AirDrop, Apple Watch unlock etc. Playing DRM content (Apple TV+, Netflix) works. Few features remain to be sorted out (sleep/wake and Thunderbolt 3) which I’ll address in due time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Why do this? I work in Xcode, all day. Machine I need for work is essentially &lt;strong&gt;Mac mini but with 12 or 16 cores&lt;/strong&gt; which Xcode knows how to use. Apple &lt;a href=&#34;https://aplus.rs/2020/missing-developer-mac/&#34;&gt;does not offer&lt;/a&gt; such machine and most likely never will.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The hardware list and the actual build will be detailed in upcoming post; for now I’ll just list the most important ingredients:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ASRock X570 Phantom Gaming-ITX/TB3 motherboard&lt;/li&gt;
&lt;li&gt;AMD Ryzen 5 3600 CPU&lt;/li&gt;
&lt;li&gt;Sapphire RX570 Nitro+ 8GB graphics card&lt;/li&gt;
&lt;li&gt;Corsair Vengeance LPX 16 GB DDR4&lt;/li&gt;
&lt;li&gt;ADATA XPG 8200 Pro, 1TB NVMe SSD&lt;/li&gt;
&lt;li&gt;Samsung 860 EVO, 500GB SATA SSD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is regular PC build housed in wonderful small form factor (SFF) chassis. Windows 10 is installed on the 860 EVO SSD. For macOS I reserved the faster XPG 8200 Pro SSD. To make it ready for successful macOS installation, I needed to perform some interesting hardware mods.&lt;/p&gt;
&lt;p&gt;The ASRock X570 ITX motherboard integrates &lt;a href=&#34;https://www.intel.com/content/www/us/en/products/wireless/wi-fi-6-series/wi-fi-6-ax200.html&#34;&gt;Intel’s AX200 wireless module&lt;/a&gt;, a tiny wonder of a card which brings WiFi 6 and Bluetooth 5. Sadly, that card can’t possibly work under macOS as there are simply no drivers (although there’s at least &lt;a href=&#34;https://github.com/zxystd&#34;&gt;one person attempting&lt;/a&gt; to write them).&lt;/p&gt;
&lt;p&gt;Thus I needed something that Apple itself is (or was) using.&lt;/p&gt;
&lt;h3 id=&#34;wifi--bt&#34;&gt;WiFi &amp;amp; BT&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&#34;https://fenvi.aliexpress.com/store/106046&#34;&gt;Fenvi store&lt;/a&gt; on AliExpress offers multiple items ready-made for Hackintosh builds using the same Broadcom chips that Apple was using in older Macs. You can even buy the original Apple cards salvaged from some broken-down Macs.&lt;/p&gt;
&lt;p&gt;Recommended card is this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1750Mbps Dual Band WiFi 2.4GHz/5GHz / Bluetooth 4.0 &lt;a href=&#34;https://www.aliexpress.com/item/1750Mbps-Dual-Band-WiFi-Bluetooth-Card-2-4GHz-5GHz-BT-4-0-Broadcom-BCM94360CD-Wireless-Module/32974196141.html&#34;&gt;Broadcom BCM94360CD&lt;/a&gt; card&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6209.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;In order to plug that in, I had to dismantle I/O shield and replace Intel’s card with it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6355.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Because Fenvi’s card is intended for use in MacBooks / iMacs, it can’t be directly plugged in here (it’s a different connector). Hence the need for an &lt;a href=&#34;https://www.aliexpress.com/item/MINI-PCI-E-Adapter-Converter-to-wireless-wifi-card-BCM94360CD-BCM94331CD-BCM94360CS-BCM94360CS2-module-for-macbook/32256494722.html&#34;&gt;adapter card&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6210.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Second problem is that it’s taller than Intel’s card (AX200 really is amazingly small) so what I linked below is riser cable with adapter to accept the Fenvi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mini &lt;a href=&#34;https://www.aliexpress.com/item/BCM94360CD-BCM94360CS2-BCM943224PCIEBT2-Card-To-M-2-Key-A-E-Cable-For-Mac-OS-and-and/4000286967003.html&#34;&gt;PCIe riser with adapter&lt;/a&gt; for M.2 Key A/E&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6367.jpg&#34; alt=&#34;&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6400.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;This turned out great since I could lift the wireless card out of the I/O and get much better reception when I attached 4 IPX MFH4 antenna receptors to it (you get 2 of these with the adapter and more can be found on AliExpress for few bucks).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6413.jpg&#34; alt=&#34;&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6421.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;It’s really a hodgepodge contraption 🙃 but these antennas are so tiny and flexible that I could attach them to the inside of the chassis since they take up way less space than original antennas delivered along with the motherboard. Thus the final build is a clean, compact machine that looks great.&lt;/p&gt;
&lt;p&gt;With that mod, I had perfect WiFi 5 and BT 4.0 in macOS, with no additional software required. It acts and works as native Apple hardware.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hack-wifi/IMG_6486.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Another option is to use &lt;a href=&#34;https://www.aliexpress.com/item/Dual-band-Wireless-Hackintosh-BCM94352Z-WIFI-Card-Broadcom-bcm94352-M-2-Bluetooth-4-0-Network-NGFF/32464748097.html&#34;&gt;different Fenvi card&lt;/a&gt; which is physically identical to Intel AX200. But that card is based on older Broadcom chip (BCM94352Z) which requires 4 different &lt;code&gt;.kext&lt;/code&gt;s for WiFi and Bluetooth to work. Plus it seems that Apple Watch unlock is not really working although it’s advertised as &lt;em&gt;Supported&lt;/em&gt; in System Information and initial setup goes through.&lt;/p&gt;
&lt;p&gt;So if you can, use cards based on BCM94360CS2 or BCM943602CS chips. Contraption or not, they truly work out of the box.&lt;/p&gt;
&lt;h2 id=&#34;macos-setup&#34;&gt;macOS setup&lt;/h2&gt;
&lt;p&gt;When you have &lt;a href=&#34;https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extras/hardware.md&#34;&gt;proper hardware&lt;/a&gt; ready, as close to what Apple already uses — that is when &lt;em&gt;hack&lt;/em&gt;-intoshing starts.&lt;/p&gt;
&lt;p&gt;The history of tricking OS X to install on non-Apple hardware is really long and &lt;a href=&#34;https://www.reddit.com/r/hackintosh/comments/anerk3/why_we_dont_support_tonymacx86_tools_and_how_to/&#34;&gt;colorful&lt;/a&gt;; if you are interested, search for names like UniBeast, MultiBeast and Clover. Most of what you will find is outdated and pretty much abandoned at some point thus it’s interesting purely as history. Majority of that stuff is aimed at builds with Intel CPUs which I am not using.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;That’s the main hurdle to overcome in this whole endeavour; working software configurations are fast-moving target, on a month by month basis. There’s a lot of dead ends in various forums, on YouTube, Reddit, Discord and what not. Frankly speaking, it’s maddening and you often despair “why in the hell am I doing this”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I chose to build using &lt;a href=&#34;https://github.com/acidanthera/OpenCorePkg/&#34;&gt;OpenCore&lt;/a&gt;, the newest boot-loader which is still very beta but it’s already mighty useful. I chose it for one very specific reason out of multiple other &lt;a href=&#34;https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/&#34;&gt;advantages&lt;/a&gt; over older boot-loaders like Clover:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;OpenCore is designed with the future in mind and uses modern methods to load 3rd party kernel extensions &lt;em&gt;without breaking&lt;/em&gt; System Integrity Protection.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I did not want a Mac that more or less works. Or almost works. It needed to work as a Mac, period. While still working to get it all set-up, Catalina 10.15.3 was released and I upgraded to it the same way you do on any Mac: by clicking “Update now” button in System Preferences; it went without a hitch.&lt;/p&gt;
&lt;p&gt;The road to get to fully working state is still way, way too complex.&lt;/p&gt;
&lt;h2 id=&#34;was-it-worth-it&#34;&gt;Was it worth it?&lt;/h2&gt;
&lt;p&gt;Comparable Mac mini 2018 would be the one with i7-8700 6-core Intel CPU, 16GB of RAM and 1TB SSD. In Germany (where hw prices are comparable to what I paid), that would cost about €2.200. Total for my build is one grand less: €1.220.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hmac/mac-mini-equivalent.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;It’s worth pointing out that my build uses far superior GPU than Intel 630 integrated graphics in Mac mini – if there was a possibility to use something like Ryzen 3450G, my total bill would most likely be less.&lt;/p&gt;
&lt;p&gt;For that price, I get identical or better performance in infinitely more upgradable package (something that Mac mini is incapable-of, by design):&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/hmac/ryzen5-vs-macmini-i7.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Thus from purely money-out-of-pocket perspective, it’s very much worth it. Especially if you need multiple Macs — once you learn how to do one, any additional ones are fairly straight-forward.&lt;/p&gt;
&lt;p&gt;What’s missing from this calculation is &lt;em&gt;how much do you value your time&lt;/em&gt;. I spent about 3-4 weeks full-time working to get to this point. I may need to keep spending time in the future with major macOS upgrades. I learned a lot during this build thus each future adjustment will take drastically less time.&lt;/p&gt;
&lt;p&gt;But you may also find yourself spending 2 weeks or 4 weeks and still be nowhere near the goal. There are no guarantees here although patrons at &lt;a href=&#34;https://discord.gg/EfCYAJW&#34;&gt;AMD OS X Discord&lt;/a&gt; will do their best to help you. Thus keep this in mind — &lt;strong&gt;this is not easy&lt;/strong&gt;. It can be infuriatingly hard. I learned about inner workings of computers far more than I ever wanted to. So if you are not ready or not able to invest a lot of your time, think about do you really want to do this.&lt;/p&gt;
&lt;p&gt;SFF PC builds rekindled my long lost love for tinkering with computer parts. If it wasn’t for that, I would probably not get into Hackintosh-ing and would continue to use my 3+ year old MacBook Pro.&lt;/p&gt;
&lt;h3 id=&#34;benchmarks&#34;&gt;Benchmarks&lt;/h3&gt;
&lt;p&gt;Here are some comparisons between my 6-core hMac build versus some closely matched Apple hardware.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://browser.geekbench.com/v5/cpu/compare/1046523?baseline=1049613&#34;&gt;MacBook Pro (16-inch Late 2019) vs hMac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://browser.geekbench.com/v5/cpu/compare/1024587?baseline=1049613&#34;&gt;iMac (27-inch Retina Early 2019) vs hMac&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This build is significantly (like twice or more) cheaper than any of those Macs. As I said, Apple should really, really look into AMD CPUs as alternative to Intel’s. Here’s one comparison with the best mainstream AMD and Intel CPUs today:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://browser.geekbench.com/v5/cpu/compare/1046549?baseline=1049613&#34;&gt;hMac vs Intel Core i9-9900KF @ 3.60 GHz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://browser.geekbench.com/v5/cpu/compare/1044728?baseline=1049613&#34;&gt;hMac vs AMD Ryzen 9 3950X&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I would be more than happy to sell this machine to someone else then pay double or more for Apple-designed desktop Mac with 3950X inside it. I really would.&lt;/p&gt;
&lt;p&gt;What I can’t justify is spending 4x or 6x more than this for (a truly amazing) Mac Pro which has capabilities I’ll never get to use, personally or business-wise. Mac mini-ish desktop with 12-16 cores is what most developers (outside of games and AR/VR) need.&lt;/p&gt;
&lt;p&gt;Thus my next build will be pretty much the same config but with 3950X inside and 32GB of memory. It would still cost me less than Mac mini I spec-ed above. And with that machine, this entire investment will pay off handsomely.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The travails of multi-core in Apple desktop land</title>
      <link>https://aplus.rs/2020/missing-developer-mac/</link>
      <pubDate>Tue, 07 Jan 2020 21:39:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2020/missing-developer-mac/</guid>
      <description>&lt;p&gt;As someone running a contracting agency, I have an opportunity to work on some fairly large projects. They involve a fair number of dependencies (which I am constantly trying to minimize) which lower initial development time. I pay for that along the way, as archiving, compiling and code-signing for each release we do takes…a while.&lt;/p&gt;
&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;
&lt;p&gt;Most apps we happen to work on are front-ends covering just about any way a customer can engage with the given client’ service. That could (should) involve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;base iOS app&lt;/li&gt;
&lt;li&gt;multiple app extensions (iMessage, custom notifications, various widgets)&lt;/li&gt;
&lt;li&gt;accompanying watchOS app + its extension&lt;/li&gt;
&lt;li&gt;even tvOS and/or macOS app&lt;/li&gt;
&lt;li&gt;plus all the mentioned dependencies (linked frameworks and libraries)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So when you make a version release of such a project, you are faced with a rather intensive process which completely saturates all the available cores on your development machine or build server. &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Which is actually &lt;em&gt;a good thing&lt;/em&gt; – I am very happy that Xcode and its Build system are architected so well, they can successfully parallelize this process across all available cores. The more cores you have, that much faster &lt;em&gt;archive &amp;amp; export&lt;/em&gt; will finish.&lt;/p&gt;
&lt;p&gt;When you need to do a dozen of releases (big company, many markets) for each version, this…well, like I said, it takes some time. This is &lt;em&gt;primary use-case&lt;/em&gt; for multi-core monster in my workflow.&lt;/p&gt;
&lt;p&gt;Second, less critical issue is general day to day work. Performance considerations here are related around maximum single-core performance. It’s common that CPUs with less cores have higher single-core performance thus you need to find proper balance for your workflow. My experience tells me that all modern CPUs (from 2016+) will do just fine in single-core.&lt;/p&gt;
&lt;p&gt;There are some aspects of the daily workflows where multi-core performance comes into play:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Throughout the day, you’ll regularly be making builds of the app you are working on; thankfully, that’s incremental.&lt;/li&gt;
&lt;li&gt;In order for code completion to work, Xcode needs to index all the source files in the workspace / project, which is thankfully also incremental.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Still, as larger those projects are, more work will need to be done. If you jump between projects &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; and/or work in a team of developers, you are bound to see this progress bar daily.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/dev-mac/xcode-indexing.png&#34; alt=&#34;&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020/dev-mac/CPU-utilization-during-indexing.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Those 5000 RPMs that MacBook Pro fans are spinning at, those are &lt;em&gt;very&lt;/em&gt; noticeable.&lt;/p&gt;
&lt;p&gt;If you need to clear DerivedData folder for whatever reason &lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; than you’ll be seeing this for half an hour or more:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2020/dev-mac/xcode-clean-derived-data-indexing.png&#34; alt=&#34;&#34;&gt;
&lt;img src=&#34;https://aplus.rs/images/2020/dev-mac/CPU-utilization-during-indexing-files.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;During all that time, your CPU cores will be fairly busy but thankfully fans usually stay under 3k RPMs which is inaudible even in a quiet office space. I am honestly impressed how Xcode is able to deal with all this and how well it scales up and down, adapting to the Mac it’s running on.&lt;/p&gt;
&lt;p&gt;With practical examples like those above, I want to emphasize a very important point: for Mac/iOS developers using Xcode, &lt;strong&gt;number of CPU cores is one of the most important parameters&lt;/strong&gt; of their development machine. The more cores you have, the better it works. Amount of memory influences the experience up to a point; after you put 16GB inside, jumping to 32GB will not yield much benefit.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;It’s all about the CPU.
Everything else in the machine is not really relevant. Expandability, storage, graphics card - these can all be as basic as possible and it would not matter. Thus what developers need (or at least I do) is &lt;strong&gt;Mac mini with double-digit cores&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why is Apple not offering that?&lt;/p&gt;
&lt;h2 id=&#34;the-available-solutions-from-apple&#34;&gt;The available solutions from Apple&lt;/h2&gt;
&lt;p&gt;I’ll compare models with 16GB RAM and 1TB SSD. I believe that’s the minimum a professional developer machine should have. I ignore graphic cards, picked whatever is offered as minimum.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;You can buy MacBook Pro. In 2016, I bought the top model with 4-core i7 Intel CPU, which in the US was about $3,000 at the time. In 2019, same amount of money gets you top model but with 8-core i9 Intel CPU.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In most modern Mac mini, from 2018, top model gets you 6-core i7 Intel CPU for about $1,900.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Top of the line iMac gets you 8-core i9 Intel CPU, for $3,200.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, all of these CPUs are from the same CPU family: Mobile &lt;a href=&#34;https://www.intel.com/content/www/us/en/processors/processor-numbers.html&#34;&gt;Core series&lt;/a&gt;. This is important to remember as these CPUs &lt;em&gt;do not go above 8 cores&lt;/em&gt;. None of them. Even if you jump from mobile to desktop Core CPUs, maximum number of cores stays 8, you just have more TDP headroom. Higher TDP, more serious cooling solution you need to apply. Given that all 3 mentioned Mac lines are thin, mobile CPUs with up to 45W TDP is all Apple can offer.&lt;/p&gt;
&lt;p&gt;One step above that is Intel’s &lt;a href=&#34;https://www.intel.com/content/www/us/en/products/processors/core/x-series.html&#34;&gt;Core X-series&lt;/a&gt;. These are awesome as you can have up to 18 cores. Yay! But they generate a lot of heat which require massive tower coolers or water-cooling and similar stuff. Sadly, Apple does not use these CPUs, anywhere.&lt;/p&gt;
&lt;p&gt;One (huge) step above that are Intel’s &lt;a href=&#34;https://www.intel.com/content/www/us/en/products/processors/xeon.html&#34;&gt;Xeon Processors&lt;/a&gt;. They have 3 major lines and once you move into Apple’s Pro land, you’ll find they exclusively use &lt;a href=&#34;https://www.intel.com/content/www/us/en/products/processors/xeon/w-processors.html&#34;&gt;Xeon W&lt;/a&gt; CPUs which cost a lot (multiple $1000s just for CPU). It’s no wonder then that Pro desktops from Apple are expensive:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iMac Pro starts with 8-core model at $5,000 and go as high as 18 cores for $7,300.&lt;/li&gt;
&lt;li&gt;Mac Pro starts with 8-core model at $6,400 and goes up to 28 cores for $13,400&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s huge amount of money for a professional developer workstation. Apple loves to brag how they democratized professional software distribution with App Store. But the machines they offer still clearly separate hobbyist and small indie dev shops from big companies.&lt;/p&gt;
&lt;h2 id=&#34;the-missing-link&#34;&gt;The missing link&lt;/h2&gt;
&lt;p&gt;The problem with Intel’s CPU lineup is if you – as system manufacturer – want to move between CPU series, you need to design it around different CPU architectures.&lt;/p&gt;
&lt;p&gt;Mobile Core CPUs use BGA1440 socket you put them in. Desktop Core CPUs use LGA1151 socket. Desktop Core-X CPUs and Xeon CPUs use LGA2066 socket. There’s different chipset and memory / bus requirements for each. Given all that, it is not possible to simply switch CPUs from different series. One has to architect and maintain multiple models and production lines with those differences in mind.&lt;/p&gt;
&lt;p&gt;Apple being Apple, they scoped down to two lines: mainstream customers would have to settle for Mobile CPUs while Pro customers would get the very top of the line and that’s it. &lt;strong&gt;They completely skipped the desktop sweet-spot in the middle.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The ideal developer-oriented Mac using Intel CPUs could be built:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;around mini-ITX motherboard&lt;/li&gt;
&lt;li&gt;with or without integrated graphics&lt;/li&gt;
&lt;li&gt;with optional (very powerful) discreet graphics&lt;/li&gt;
&lt;li&gt;all housed in chassis of 10-15L volume&lt;/li&gt;
&lt;li&gt;using Core-X CPUs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It would be larger but way, way more powerful than Mac mini with those TDP-constrained mobile CPUs can ever be.&lt;/p&gt;
&lt;h3 id=&#34;is-this-a-pipe-dream-then&#34;&gt;Is this a pipe-dream then?&lt;/h3&gt;
&lt;p&gt;Hell, no!&lt;/p&gt;
&lt;p&gt;SFF&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; enthusiasts are &lt;a href=&#34;https://smallformfactor.net/forum/category/custom-cases-projects/&#34;&gt;crowd-sourcing&lt;/a&gt; and crowd-funding &lt;a href=&#34;https://www.youtube.com/watch?v=WJqSHysUAY0&amp;amp;t=1s&#34;&gt;such cases&lt;/a&gt; with ingenious internal layouts and cooling solutions. I’m certain that Apple could design something amazing in this space, if they wanted to.&lt;/p&gt;
&lt;p&gt;It’s worth noting that even if such an offer from Apple existed, it would not be very affordable in large part because of Intel’s prices. I can easily see it starting at $3000 and going up to double that. Because for so many years back, Intel did not have serious competition and they were dragging their feet in performance while keeping high prices. Until early last year when Apple’s favorite graphics partner called AMD unleashed Ryzen CPUs with Zen2 architecture. Those cost less than Intel’s while offering significantly more performance.&lt;/p&gt;
&lt;p&gt;Here’s the hook: would you buy a &lt;a href=&#34;https://www.youtube.com/watch?v=4bdEVobyui0&amp;amp;t=328s&#34;&gt;12L aluminum case with 16-core CPU&lt;/a&gt; inside it? What if I tell you this costs &lt;em&gt;less than $2,000&lt;/em&gt;, today? What if I also tell you &lt;a href=&#34;https://youtu.be/exGxFLZloFE?t=318&#34;&gt;this CPU demolishes&lt;/a&gt; price-comparable (or more expensive) Intel CPUs?&lt;/p&gt;
&lt;p&gt;I would be perfectly happy to pay $3,000+ for a machine with that CPU housed in Apple-designed case and cooling. If only Apple offered it.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Yes, yes, I know about cloud-based CI and CD and what not.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;👋🏻 all freelance / contracting friends&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;There shouldn’t ever be a reason for that but practice says different.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;I will need to test this very thoroughly at some point.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;Small Form Factor&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Run Windows 10 from USB-C / T3 SSD, on modern Macs</title>
      <link>https://aplus.rs/2019/run-windows-10-from-usb-on-mac/</link>
      <pubDate>Sat, 30 Nov 2019 12:12:12 +0000</pubDate>
      
      <guid>https://aplus.rs/2019/run-windows-10-from-usb-on-mac/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;In the last few years or so, I did not need to run Windows in my VMWare. I even forgot I have that Windows 10 installation. I simply did not have time to play any games nor did I need it for anything else, not even for work stuff (the primary reason to even have that VM on hand).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;This changed recently with release of &lt;a href=&#34;https://www.ageofempires.com/games/aoeiide/&#34;&gt;Age of Empires II: Definitive Edition&lt;/a&gt;, with all the gorgeous glory of 4K graphics. This is my favorite game of all time, bar none. 4K graphics meant that running this inside VM is out of the question thus I was looking for a way to run it natively on my Macbook Pro 2016. ❖&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My MBP has 1 TB SSD and I generally have about 200÷300 GBs free. I like to keep it that way so installing partition for BootCamp was ruled out. This left me to look for a way to &lt;em&gt;run Windows from an external disk&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;First of all, you need a very fast SSD and it needs to be connected to your machine over the fastest possible port. On today’s Macs that means over USB-C 3.1 Gen.2 or even better Thunderbolt 3.&lt;/p&gt;
&lt;p&gt;You really don’t want your OS to run from some slow connection, that will be nothing but pain and annoyance. Thus see if you can buy some fast external SSD or this is really not worth it.&lt;/p&gt;
&lt;h2 id=&#34;hardware&#34;&gt;Hardware&lt;/h2&gt;
&lt;p&gt;My choice was ADATA &lt;a href=&#34;https://www.xpg.com/us/feature/583/&#34;&gt;XPG 8200 Pro&lt;/a&gt; 1TB NVMe SSD. In ideal conditions, this is ridiculously fast SDD with 3500MB/s read speeds and up to 3000MB/s write speed, making it equivalent or better than my Mac’s internal SSD.&lt;/p&gt;
&lt;p&gt;I need to put it inside an enclosure; in Serbia we really do not have good choice there. I bought LC-Power &lt;a href=&#34;https://www.lc-power.com/en/product/hddssdm2-enclosures/m2/lc-m2-c-nvme/&#34;&gt;LC-M2-C-NMVE&lt;/a&gt; USB3.1 Gen.2 enclosure for m.2 SSDs. This enclosure works and it’s dirt cheap (even here). Build quality is not really good, especially regarding small details – the screw that is supposed to keep the SSD attached to the enclosure could not fit into the screw hole it was supposed to connect to. Luckily I had few left-over screws from some old enclosures (I bought &lt;em&gt;a lot&lt;/em&gt; of them over the years) which fit perfectly.&lt;/p&gt;
&lt;p&gt;Other than this, enclosure is fine; it’s made of aluminum which helps to dissipate the heat. &lt;em&gt;NVMe m.2&lt;/em&gt; SSDs are known to run rather hot. This 1TB model had some thin thermal pads in its box which you place over the chips. With that it was mildly warm when placed in LC-Power enclosure and I expect it to be just fine over time.&lt;/p&gt;
&lt;p&gt;I also ordered JEYI &lt;a href=&#34;https://www.aliexpress.com/item/JEYI-thunderbolt-3-m-2-nvme-Enclosure-mobile-box-case-NVME-TO-TYPE-C-aluminium-TYPE/32952100894.html&#34;&gt;Thunderbolt 3 m.2 NVMe SSD Enclosure&lt;/a&gt; (LEIDIAN-3) from AliExpress; might move it there once it arrives or maybe buy another SSD to use as MBP backup.&lt;/p&gt;
&lt;h2 id=&#34;drivers-package&#34;&gt;Drivers package&lt;/h2&gt;
&lt;p&gt;Windows 10 does not have Macbook Pro drivers pre-installed. You need to prepare any small USB flash drive and put the drivers on it. To download them, run BootCamp Assistant on your Mac and choose this option to download all of it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2019/bootcamp-download-drivers.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;That’s all you need.&lt;/p&gt;
&lt;h2 id=&#34;installing-windows-10-to-the-external-ssd&#34;&gt;Installing Windows 10 to the external SSD&lt;/h2&gt;
&lt;p&gt;Now, for the main trick: installing Windows 10 to the external disk. I have an ISO image of Windows 10 and was looking for fastest way to install directly onto the USB-C disk.&lt;/p&gt;
&lt;p&gt;Enter Hasleo’s &lt;a href=&#34;https://www.easyuefi.com/wintousb/&#34;&gt;WinToUSB&lt;/a&gt;. Since I had Win 10 VM running in VMWare Fusion, I could run it from there. Free version has serious limitations (neatly listed in the Comparison section on the linked web page) like not supporting Windows 10 Pro; you do need to purchase full version for that. I would say it’s really worth $30 since it makes the whole process a breeze.&lt;/p&gt;
&lt;p&gt;The stuff I need does work in the Free edition; I followed the &lt;a href=&#34;https://www.easyuefi.com/wintousb/faq/en-US/How-to-use-WinToUSB-ISO-To-USB.html&#34;&gt;guide on their website&lt;/a&gt; and did an unattended installation of Windows 10 Home from an ISO image directly to the SSD. Note that for Mac and just about any modern PC/Mac in the last decade you need to choose &lt;code&gt;GPT for UEFI&lt;/code&gt; as the partition format.&lt;/p&gt;
&lt;p&gt;The whole process took about 10mins or so, no questions asked; it just did its thing. Really nicely made utility.&lt;/p&gt;
&lt;p&gt;Now, set the external disk as Startup disk in macOS System Preferences and restart. Or choose at the cold-start, holding down &lt;em&gt;Option&lt;/em&gt; key until the choice is presented to you.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2019/boot-choice.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;first-run&#34;&gt;First run&lt;/h3&gt;
&lt;p&gt;This first run will now go through initial Windows setup. As said previously, no drivers for Mac hardware is present and except the display nothing will work: touchpad, keyboard, bluetooth or wifi – nothing is recognized.&lt;/p&gt;
&lt;p&gt;Thus you need to have some USB-based mouse and/or keyboard in order to go through setup screens. I had both, borrowed from the old 2014 Mac mini (which is now happily working as Plex file server). Once that’s done, put the USB stick with the bootcamp drivers and start the Setup from there:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2019/bootcamp-setup.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Once all is done, after all the flashing and confirmations, you just need to restart:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2019/setup-done.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;ready-to-play&#34;&gt;Ready to play&lt;/h2&gt;
&lt;p&gt;And with that — all done! All the hardware works and it works beautifully. I expected it to be a bit slow on USB-C but it seems that 10Gbps connection is more than enough to not choke the SSD on the other end. I’m not sure I even need the T3 for this use case, so far this is great.&lt;/p&gt;
&lt;p&gt;I played few campaigns of AoE II:DE and it worked perfectly. The whole time, external SSD stayed mildly warm which is really encouraging.&lt;/p&gt;
&lt;p&gt;❧❖❧&lt;/p&gt;
&lt;p&gt;One teeny, tiny bit was not perfect: my top of the line 2016 MBP (with Radeon 460 GPU inside) is nowhere near the required hardware for enhanced graphics pack the game offers. The option is greyed-out. Which means…it’s time.&lt;/p&gt;
&lt;p&gt;It’s time for my first PC desktop build after 15+ years of using only laptops. I spent the last 2-3 weeks watching bunch of YouTube videos to learn what’s good and proper now. Good gaming machines can easily take 1000$ today; it makes no sense  to spend that much money just for this one game I want to play.&lt;/p&gt;
&lt;p&gt;Thus this build will also need to work as Hackintosh and it would need to work perfectly as the Macbook Pro I’m using today. More on that, as it materializes.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MacBook Pro 2016</title>
      <link>https://aplus.rs/2017/macbookpro-2016/</link>
      <pubDate>Thu, 16 Nov 2017 14:26:40 +0000</pubDate>
      
      <guid>https://aplus.rs/2017/macbookpro-2016/</guid>
      <description>&lt;p&gt;My portable computer is my only computer. Its internal display is my only computer display. I work 8+ hours a day on any desk I happen to be at, most often in my favorite coffee shop. I may have an access to power outlet but often I do not nor I want to depend on it.&lt;/p&gt;
&lt;p&gt;As you can see, I use portable computers as portable tools and I use them as they are designed to be used. My computer is the tool I use for my work – iOS app development – thus I need it to be stable and sturdy.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;am&lt;/em&gt; the quintessential &lt;em&gt;pro notebook customer&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I used to have Sony VAIO for several years, then in 2006 I moved to Mac with whatever MacBook Pro was being sold back then. I then moved to Early 2011 model that year and now I’m using 2016 model, since January. I always buy as top of the line models as it makes sense at the time and use them for roughly 5 years.&lt;/p&gt;
&lt;h2 id=&#34;build-quality&#34;&gt;Build quality&lt;/h2&gt;
&lt;p&gt;Anyone who has ever held any of the recent (&amp;lt;5 yrs) Apple notebooks immediately notices just how sturdy they are. Entire current lineup – from MacBook 12in to MBP 15in – each model feels like a solid object. No fiddly plastic and flaky parts.&lt;/p&gt;
&lt;p&gt;My 2016 model is the first one with Touch Bar and the second generation butterfly-switch keyboard. I specifically mention the keyboard since it’s the single most talked about part.&lt;/p&gt;
&lt;h3 id=&#34;keyboard&#34;&gt;Keyboard&lt;/h3&gt;
&lt;p&gt;Way too many people report issues with them, especially with stuck keys. I believe that people are having genuine issues but I strongly disagree with claims that “most everyone” have such issues. I know how annoying it can be to have such issues and it’s only natural to strive for confirmation bias. But &lt;a href=&#34;https://www.imore.com/macbook-pro-butterfly-keyboard-reliability&#34;&gt;reality is a bit different&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I work in a coffee shop, inside and outside (preferred, weather permitting). This is how my MBP mostly looks like.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2017/mbp-dust.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;I wipe all this dust when I remember to; once in 10 or so days, sometimes after a month. Nothing special, simply a wipe or two over the screen and keyboard with micro-fiber napkin.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I have had zero issues with the keyboard.&lt;/em&gt; My wife (a developer too) uses her 15inch model in similar conditions, also with no issues. I don’t know what to think of this – I guess that some of the production lines Apple uses for these keyboards have quality issues and they are eating up the cost of replacements as they go. I hope they resolve this, as repairs are very, very expensive. But if you have a model that works, then it works - it won’t suddenly stop working two years in.&lt;/p&gt;
&lt;p&gt;Another set of complaints is how this keyboard is horrible, “too shallow”, “impossible to type on”. “Previous one was better”, “more pronounced key travel”. Blah, blah…&lt;/p&gt;
&lt;p&gt;Here’s a little secret: all notebook keyboards are utter crap. &lt;em&gt;Every single one.&lt;/em&gt; I used Focus 2001 and &lt;a href=&#34;http://aplus.rs/2005/keyboard-for-life/&#34;&gt;IBM Model M&lt;/a&gt; keyboards for years and years in my desktop PC days – those are keyboards. All these laptop keyboards are wannabes, including the vaunted older ThinkPads. I find them little better to type on than iPad Pro screen - you just smash your fingers on a flat surface to enter characters. Claiming that these models are bad to type compared to previous ones is like saying a 10-day old bread is better than 9-day old bread.&lt;/p&gt;
&lt;p&gt;If you want to feel what real keyboard sounds and feels like, look for modern equivalent of &lt;a href=&#34;https://aplus.rs/2005/click-keyboards/&#34;&gt;one of these gems&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;touch-bar&#34;&gt;Touch Bar&lt;/h2&gt;
&lt;p&gt;I like the novelty. I enjoy using it in Xcode when debugging. I rarely use it in something else (except generally for sound and brightness and such). I particularly like just how responsive that little screen is.&lt;/p&gt;
&lt;p&gt;Number of times I accidentally tapped something there: less than 10 in 10 months of everyday usage. Hardly an issue to rip your  hair out. Number of times my fingers reached out for and missed Esc key: …sorry, what key?&lt;/p&gt;
&lt;p&gt;Touch Bar is an interesting direction Apple took with this and the usefulness can be judged after few more years pass and developers find new uses for it in their apps. If developers find new uses for it, which is not given.&lt;/p&gt;
&lt;p&gt;I do not miss function keys &lt;em&gt;at all&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;display-performance&#34;&gt;Display, Performance&lt;/h2&gt;
&lt;p&gt;Display is &lt;em&gt;gorgeous&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It’s so freaking bright that I can comfortably use it at 20% in a coffee shop, at around 40-50% in regularly lit room. I only approach max brightness when I’m working outside, on a bright sunny day.&lt;/p&gt;
&lt;p&gt;Coming from Early 2011 model, I can see some modest CPU performance increase but nothing really spectacular. What I can feel is the &lt;em&gt;amazing speed of the SSD subsystem&lt;/em&gt; here. I used SSD in my older MBP but this one is another dimension. Given how Xcode projects (and programming work in general) consist of large number of minuscule files this improved speed is so very welcome.&lt;/p&gt;
&lt;h2 id=&#34;noise&#34;&gt;Noise&lt;/h2&gt;
&lt;p&gt;I like my devices as silent as they can be.&lt;/p&gt;
&lt;p&gt;My old Early 2011 MBP was essentially quiet until around 3000rpm. It was bearable until 4, 4.5k but at 6k it was as loud as vacuum cleaner.
This thing though - it’s an amazing improvement. I can’t recall when exactly they introduced these variably-angled fan blades nor do I have any experience how that sounds on previous models.&lt;/p&gt;
&lt;p&gt;But this, oh boy – &lt;em&gt;this is fantastic&lt;/em&gt;. In the first few days of having this notebook, I had a perfect case that illustrated this. I unplugged it from the charger, closed the lid and placed  in my bag. What I did not notice is one rogue terminal process pegging one core to 100% CPU and thus prevented the suspend. Needless to say, after an hour or so when I went to get it out of the bag it was &lt;em&gt;really&lt;/em&gt; hot and fan was going full speed.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I could barely make out the noise in the general room sounds&lt;/em&gt; (TV regularly on, kids playing somewhat quietly). After 4-5mins if cooled off and went back to default fan speed. I am still astonished just how less annoying it sounds at full speed. This is audio engineering marvel.&lt;/p&gt;
&lt;h2 id=&#34;peripherals&#34;&gt;Peripherals&lt;/h2&gt;
&lt;p&gt;What peripherals..?&lt;/p&gt;
&lt;p&gt;Since I don’t use anything else attached to it, I don’t have any &lt;a href=&#34;https://x.com/tmaes/status/821285511121825797&#34;&gt;issues with external monitors&lt;/a&gt; or anything like it. If I wanted a larger screen, I would buy an iMac – computer in it comes free with such a gorgeous large screen.&lt;/p&gt;
&lt;p&gt;I use exactly one dongle: &lt;a href=&#34;https://www.hypershop.com/products/hyperdrive-hub-for-usb-c-macbook-pro-13-and-15-2016-2017&#34;&gt;HyperDrive USB-C hub&lt;/a&gt;. Its primary use is to connect HDMI projector during my lectures at iOS Akademija (I teach Beginners’s iOS dev in Swift) or conference talks. Never an issue with it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2017/mbp-hyperdrive.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;This is one of those rare hubs that pass-through 87W of power so you can properly charge your MBP through it, if needed. I also use it to attach external Blue Yeti microphone for podcasts and only because I could not be bothered to look for USB-C to micro-USB cable for the mic.&lt;/p&gt;
&lt;p&gt;HyperDrive is heavy as a pack of tissues and very very compact. I don’t need anything else.&lt;/p&gt;
&lt;p&gt;Four Thunderbolt 3 ports on this MBP are more than enough for whatever you plug into them; peripherals will work as fast as they possibly can.&lt;/p&gt;
&lt;h2 id=&#34;battery&#34;&gt;Battery&lt;/h2&gt;
&lt;p&gt;I’m an iOS developer, day-in, day-out. That’s 95% of things I use MacBook Pro for and thus my experience with how battery levels behave is entirely based on that.&lt;/p&gt;
&lt;p&gt;Keep in mind that I usually work with 30-50% display brightness, as I tend to avoid brightly lit places as work environment.&lt;/p&gt;
&lt;p&gt;In regular work, which consists of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;writing Swift code in Xcode,&lt;/li&gt;
&lt;li&gt;compiling and running apps in one or more iOS Simulators,&lt;/li&gt;
&lt;li&gt;plus running Sketch, Skype, Charles web proxy and Fork (git client)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;this machine can last around 7-8h, easy. During that time, CPU usage is under 10-15% (single core) with occasional jumps to 100% when Xcode is compiling Swift.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2017/mbp-battery-after2h-code.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;If Xcode - for whatever reasons - decides it needs to rebuild the project index, battery life goes severely down. If it stays in indexing for a long time, battery would die in about 3-3.5h max because it saturates one of the cores to 100%. Which is why I keep &lt;a href=&#34;https://bjango.com/mac/istatmenus/&#34;&gt;iStat Menus&lt;/a&gt; running to spot when this happens as early as possible. Quick Xcode restart and things are back in normal.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Product / Clean&lt;/code&gt; then &lt;code&gt;Archive&lt;/code&gt; is also a very taxing process. Doing that few dozen times from a moderately large Swift project I’m working on - it would empty the battery in about 3h max.&lt;/p&gt;
&lt;p&gt;Exporting builds from the Organizer window is even worse and I believe it’s &lt;em&gt;the single most taxing task&lt;/em&gt; I do on regular basis. I never tried this but I suspect continuous code signing of various builds will drain the battery in less than 2h. It’s no wonder my poor MacBook m5 (2016) needed 20-30mins per single export. Whatever is being done as part of the code-sign process, it’s &lt;em&gt;intensive&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But still - that’s 6-8 freaking cores running at 100% and it still looks like it would be able to do it for few hours.&lt;/p&gt;
&lt;h3 id=&#34;charging&#34;&gt;Charging&lt;/h3&gt;
&lt;p&gt;I wish it still had MagSafe. But if I lost MagSafe in order to gain ability to plug charging cable at any port on any of the sides – hell yeah. Not having to think about where the power outlet is can be so liberating.&lt;/p&gt;
&lt;p&gt;In reality though, even that is rarely needed. MBP battery is able to sustain my full work day and when I come home, I plug it in and it charges fairly quickly.&lt;/p&gt;
&lt;h2 id=&#34;thoughts&#34;&gt;Thoughts&lt;/h2&gt;
&lt;p&gt;As a portable computer, this is an amazing machine: light weight, long battery life, extremely fast, plenty of very usable ports. It&amp;rsquo;s really amazing for what it does.&lt;/p&gt;
&lt;p&gt;Its main issue is outside its intended use. Its main issue is that people are using it as a desktop replacement machine for two reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Apple took a darn long time to properly update their desktop machines&lt;/li&gt;
&lt;li&gt;Apple itself is promoting it like a desktop replacement which is IMHO ludicrous marketing&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It’s the best possible buy for almost any kind of IT work. For me, it will pay for itself in spades over its first year alone, in saved seconds and minutes over time. In the pure pleasure of just using it and enjoying my work on it.
But still it needs to be said – it just costs so much to start with and not many people are able to afford them.&lt;/p&gt;
&lt;p&gt;Because I wait so much between upgrades, I can justify the cost.  After these ten months with it, I can honestly say that this is the best portable computer ever made…so far.&lt;/p&gt;
&lt;p&gt;I’m looking forward to what’s ahead because it will only be better. There is not peak of anything in IT, only the new high.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Fix AirPlay on Huawei E586 mifi</title>
      <link>https://aplus.rs/2013/fix-airplay-on-huawei-e586-mifi/</link>
      <pubDate>Mon, 09 Sep 2013 00:00:00 +0000</pubDate>
      
      <guid>https://aplus.rs/2013/fix-airplay-on-huawei-e586-mifi/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using Hauwei E586 as my mobile 3G modem for quite a while. It works really good for up to 4 devices. One thing that did not work properly was AirPlay. Devices would see each other at first, make a connection and immediatelly drop it. I did not have a solution for this until recently where I stumbled on cause of the problem. By default, this little setting is set to ON:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2013/huawei.png&#34; alt=&#34;One little setting to fixed&#34;&gt;&lt;/p&gt;
&lt;p&gt;Switch it to OFF and - no restart needed - AirPlay works great. Apparently Huawei added this at some point late in the firmware update cycle so not a lot of people encountered this. Nor many of them need AirPlay on the go. :)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Re-charging dead Macbook pro battery after a long discharge</title>
      <link>https://aplus.rs/2012/re-charging-dead-macbook-pro-battery-after-a-long-discharge/</link>
      <pubDate>Fri, 23 Mar 2012 12:35:11 +0000</pubDate>
      
      <guid>https://aplus.rs/2012/re-charging-dead-macbook-pro-battery-after-a-long-discharge/</guid>
      <description>&lt;p&gt;Recently my family went away from home for two months. While preparing to go, we left my wife&amp;rsquo;s Macbook Pro at home and got a bit of a nasty surprise when we returned. The Macbook pro wouldn&amp;rsquo;t start at all unless plugged-in. And then it showed that battery was not charging and its charge capacity is 0 (you can see this in System Information app). And the green indicator on the MagSafe adapter never went to orange (charging light), even after we left it overnight.&lt;/p&gt;
&lt;p&gt;I then recalled similar account by &lt;a href=&#34;http://hivelogic.com/&#34;&gt;Dan Benjamin&lt;/a&gt; - he also left a Macbook untouched for several weeks. The battery discharged so much that it was impossible to kick-start the charging again. He eventually had the battery replaced with new.&lt;/p&gt;
&lt;p&gt;The recommendation is that, when you know a device will not be used for prolonged period of time, to remove the battery out (and that charge capacity should be about 40% at that point). In newer Mac portables though, battery is not removable (at least not without opening the case). Thus I assumed that this must be something Apple has thought about. A quick search offered a possible solution:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unplug the device and all the peripherals.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hold Ctrl + Option + Shift &lt;em&gt;and&lt;/em&gt; Power button for 5-6s, then release them all.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Plugging back in, I was relieved to see the orange light. At first, it showed that charging would take 10h :) but after 5mins or so it got down to normal 1.5h-ish.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Review: WaterField Ultimate SleeveCase for iPad</title>
      <link>https://aplus.rs/2011/review-waterfield-ultimate-sleevecase-for-ipad/</link>
      <pubDate>Thu, 17 Nov 2011 11:24:57 +0000</pubDate>
      
      <guid>https://aplus.rs/2011/review-waterfield-ultimate-sleevecase-for-ipad/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve long been hearing about &lt;a href=&#34;http://sfbags.com/&#34;&gt;WaterField&lt;/a&gt;, from the blogs I follow. Two main impressions crystallized over time: good products and good customer support. So when I was getting the iPad brought over from the US, I took the opportunity to order their sleeve case.&lt;/p&gt;
&lt;p&gt;I prefer the sleeve case to larger bags. I want my gadgets to be fittingly protected when carried and I&amp;rsquo;ll then buy a larger bag and just throw each in.&lt;/p&gt;
&lt;p&gt;I use Incase sleeve cases for my laptops and in fact wanted to get their sleeve for the iPad too, but was unable to order because they insist on US-based billing address for the card. In this age, that&amp;rsquo;s rather stupid and it&amp;rsquo;s hurting their business, but such as life, they sure have their reasons.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://aplus.rs/images/2011/customer_ipad_sleevecase_vertical_ipad_lg.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Thus after checking out few other bags, I decided on WaterField&amp;rsquo;s. They offer several bag options for iPad and after checking out each, decided on &lt;a href=&#34;http://sfbags.com/products/ipad-cases/sleevecases-ipad.php&#34;&gt;Ultimate model&lt;/a&gt;. I especially liked the vertical model, as I could see it fitting perfectly on the side and not dangling back and forth as I walk and getting in the way of my hands. I picked up the larger piggy back case as well, shoulder strap.&lt;/p&gt;
&lt;p&gt;I had no problem to use my Serbian card, which was great. I was ordering about a week before the date when it needed to arrive. My cousins were in New York and the bag simply had to be there at least a day before so they could pack it up in time. The first hurdle was the email I received from Waterfield - the vertical bag was out of stock and it could be several days before they had them made. Unfortunately, this moved the delivery date past my D-day. Waterfield offered to upgrade the shipping up, with no extra charge, but it still ended up a day short. So I opted for the 2-day delivery which added 20$. As luck would have it, my cousins eventually stayed for another week, due to Iceland volcano eruption. Such as life…&lt;/p&gt;
&lt;p&gt;The bag itself is amazing. Just as I thought, the vertical orientation is perfect and sits so good on the side that it does not get in the way at all. The fit is perfect, snug but not too tight, so it&amp;rsquo;s easy to put the iPad inside. The interior is padded with soft cloth that can wipe the iPad screen; don&amp;rsquo;t expect wonders though. In the back they added a tight pocket where you can fit a real wipe cloth, a few pieces of paper or something similarly thin.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I had this bag for over a year now, it&amp;rsquo;s looking great (especially the worn leather look it gains over time) and no defects nor malfunctions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The bag is really sturdy and re-enforced on the edges. I can&amp;rsquo;t stress enough how important that is - if the bag is ever dropped, I&amp;rsquo;m pretty sure it will protect the iPad even from several meters high.&lt;/p&gt;
&lt;p&gt;The piggy back case is very simple, obviously aimed for carrying the wall charger and cables and maybe few more simple items. It was one flaw though - the material it&amp;rsquo;s made from is the same as the sleeve case. When two of these rubs during walking, they make very annoying sound, especially inside the hallways where it&amp;rsquo;s sufficiently silent environment. Solution would be to have very small piece of velcro on the back of the piggy case that will attach itself to the main bag.&lt;/p&gt;
&lt;p&gt;I plan to do this myself, once I have the time.&lt;/p&gt;
&lt;p&gt;In the meantime, I&amp;rsquo;m using my old usual carry around little bag, which can attach to the iPad bag perfectly. This way I carry these two using one shoulder strap and I can detach the smaller bag when needed and carry just it. Perfect combination.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m very happy with the bag and would recommend it to any iPad owner. Without the piggy back case though, at least until Waterfield does something about the noise.&lt;/p&gt;
&lt;p&gt;In the mean time, being so happy with this bag, I ordered a whole set of bags and sleeves for the laptops. I got the &lt;a href=&#34;http://www.sfbags.com/products/laptopsuedejacket/laptopsuedejacket.htm&#34;&gt;Suede Jacket sleeve&lt;/a&gt; case for both mine and my wife&amp;rsquo;s notebooks and also &lt;a href=&#34;http://www.sfbags.com/products/vertigo/vertigo.htm&#34;&gt;Vertigo&lt;/a&gt; vertical bags (seriously, don&amp;rsquo;t ever buy horizontal orientation ever).&lt;/p&gt;
&lt;p&gt;Could not be happier with any of these and I plan to keep getting their stuff.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>OPPO&#39;s fantastic support service</title>
      <link>https://aplus.rs/2011/oppos-fantastic-support-service/</link>
      <pubDate>Tue, 08 Mar 2011 01:13:43 +0000</pubDate>
      
      <guid>https://aplus.rs/2011/oppos-fantastic-support-service/</guid>
      <description>&lt;p&gt;I have &lt;a href=&#34;http://oppodigital.com/dv981hd/dv981hd_index.asp&#34;&gt;OPPO DV-981HD player&lt;/a&gt; for several years now. It&amp;rsquo;s a great piece of consumer electronics - from the moment I put it on it worked great. No issues, no fuss, it worked exactly as advertised. Until few weeks ago when it died. In the middle of movie, it saved a bookmark and shut down. No reactions to buttons, it just seemed dead.&lt;/p&gt;
&lt;p&gt;The player was long ago out of warranty. Plus, I brought it to Serbia from UK, one of the last pieces the importer had. OPPO does have a &amp;ldquo;send it to us for repair&amp;rdquo; service, but the cost of sending to USA from Serbia would be more than the player is now worth. Plus, experience with other companies tells me that prices for obsolete (OPPO does not sell this model anymore) and out-of-warranty parts are outrageous.&lt;/p&gt;
&lt;p&gt;So I emailed OPPO support, simply hoping for an advice what could be wrong so I can try my luck with local repair shops. I was hoping it&amp;rsquo;s simply some part of the power board. That was on Saturday afternoon (CET time zone).&lt;/p&gt;
&lt;p&gt;This is where it becomes awesome. First, I got answer in less than 24h. Second, the answer said that OPPO can help me by sending me a replacement power board and a front-end display. Third, the price for the parts is mere $49. And then to top it off, they responded to my follow-up questions on Sunday and Monday (which was a bank holiday in US). I paid and they shipped the parts the very next day; the package reached me by the end of the week (sent by USPS).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Amazing, amazing support service&lt;/em&gt;, way better than I expected. I replaced the parts and the player is working as good as ever - silently and awesomely.&lt;/p&gt;
&lt;p&gt;If you are in need of an excellent Blu-ray player, do not even think about anything else - &lt;a href=&#34;http://oppodigital.com/&#34;&gt;buy one of the OPPO players&lt;/a&gt; they have on offer. I&amp;rsquo;m certain they are amazing just as this DVD player is. I mean, just look at the feature set, the customer testimonials and rave reviews they consistently get for their products.&lt;/p&gt;
&lt;p&gt;We need more companies like OPPO. &lt;em&gt;Kudos, masters.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>