Updating 2006 MacBook Pro to Windows 10

There’s a fair amount of noise to wade through out there on this topic… this post is a humble gathering of the current state, cira February 2017… once we get the various bits lined up, it’s surprisingly smooth sailing with FULL compatibility under Windows 10 x64, even the latest “Anniversary Edition”… over 10 years later something as complex as Windows maintaining this much hardware compatibility is pretty amazing in our industry.

My Specific Hardware

  • MacBook Pro 2,1 17″ Late 2006, model A1212 – Core 2 Duo T7600 “Merom”

Hopefully these basic steps are still helpful to folks with similar oldness.

Creating Bootable Win10 Install Media

not as easy as one might think – this firmware is very finicky… USB Thumbdrive based boot is a complete no-go (everybody has tried, you won’t be the first : )… we must create a very specifically formatted boot DVD… but it’s not that bad

  1. Media Creation Tool – from any other working Win10 x64 you have handy, we get to start with MSFT’s very pleasant Windows 10 download utility… this will readily get us to an ISO file … but we’ll need to jack with a bit…
  2. “Multi-catalog” fix – this era of Apple machines were born with a rather anemic version of 32 bit EFI which only supports a very specific DVD ISO format (this guy had a good explanation under “How-to: Making a standard Linux distro ISO compatible with 32-bit EFI Macs”)… the gist is that MSFT tends to provide especially it’s x64 media via “Multi-catalog” ISO format, intended to support both “legacy” BIOS style booting as well as EFI… but our firmware is too brain dead and even though it’s kinda EFI, it can actually only handle BIOS style booting.
    1. first go ahead and mount that stock ISO on your working Win10 box…
    2. then the reformat is accomplished via oscdimg.exe cmdline:
      oscdimg.exe -n -m -be:\boot\etfsboot.com e:\ Win10_fixed.iso
      (replace e: above with whatever drive letter is assigned to your mounted iso)
  3. Burn Baby !! – now we’re clear to go ahead and burn that resulting “Win10_fixed.iso” to a DVD (I’m keen on ImgBurn).

Pretty Boot Selector Anyone ?

  • at this point we should be able to toss that DVD into our SuperDrive and power cycle while holding option to get the Mac’s native drive selection screen…
  • but to get a little more fancy, i’m keen on the rEFInd Boot Manager for a little more cute “OS selector” screen… easy steps:
    1. From the Mac side, download the latest zip… extract…
    2. and then from Mac Terminal: sudo ./refind-install

Prep your partition and Install

  1. Create New Partition – if you don’t already have an existing BootCamp parition – for the record, nothing specifically depends on using Mac Bootcamp Assistant tool’s magic… it’s totally fair game to use standard Mac Disk Utility to open a new partition for Windows to be installed to
  2. INSTALL – we’re finally ready to insert the DVD, power cycle while holding option and select the DVD icon to begin installing!
  3. (OPTIONAL) Format Existing Partition – after a couple prompts, you’ll get to the Win10 installer’s “partition selection” screen… if you’ve already got a previous Windows install, there’s a decision to be made… by default the installer will leave any previous Windows files on the drive under “windows.old” folder, to facilitate migrating your personal data… in my case, my drive is so small that i knew i had to format my existing BootCamp partition to provide all the room possible… this partition screen has handy options to do many basic partition maintenance tasks including format…
    • if you’re OCD like me, you can even jump out to a CMD.EXE prompt via SHIFT+F10 and do things like DISKPART to format with your preferred volume label (i’m keen on “BOOTCAMP”… be very careful to select the right disk and volume before executing FORMAT… DISKPART has zero safety rails.

Post Install – Detailed driver links and notes

  1. Intel Chipset Drivers – given this mobo is Core 2 Duo, ICH7 cira 2006, it most likely corresponds to Intel’s “900 series”… but there’s no real guesswork to be done here since the Intel chipset bundles cover a wide compatibility range and the most applicable one was last updated Version: 9.2.0.1030, Date: 4/21/2011… in my experience, chipset drivers can mean the difference between random crashes and rock solid stability so this install should not be skipped… if nothing else it tends to eliminate a lot of Device Manager red squigglies
  2. Video – ATI x1650 with DeviceId 71c5 – Microsoft provides a bundle technically labeled for “ATI FireGL V5200” but the corresponding INF files actually support many other related DeviceIds… make sure to go after the Win7 v8.561.0.0 bundle of the larger 20MB size (the smaller one didn’t hit for me)…
    • this is really the toughest piece to locate and get slammed in so, once you’ve got it nailed, the rest is all down hill =)
  3. BootCamp (v6) – it appears this old model Mac hardware aligns with the drivers included with BootCamp as of v4… but it seems a few bits might have been updated since then… so as one approach, start with installing v6 and then peanut butter the v4 bundle over that
    • BootCamp v4 & 5 are readily available via Apple Support but v6 is not… if you have a working Mac install around, the Boot Camp Assistant (BCA) will download the latest bundle… in Sierra’s BCA it’ll be under the “Action” menu… I wound up with v6.0.6136 as of 2017-06-13.
    • If you don’t have access to BCA, I found this helpful post which referenced direct Apple link to v6.0 build 6136
    • unzip that BootCamp v6 rar exe and fire up $\Apple\BootCamp.msi (as administrator required)… this will blast thru loading a bunch of drivers… many of which won’t actually apply to this machine’s hardware but really no harm-no foul as an initial base layer… if nothing else, it’s nice to have the latest BootCamp Control Panel icon in your task tray =)
  4. BootCamp v4 – now go back and fill in the following Win10 working drivers from BootCamp v4 bundle (v4.0.4326, direct):
    1. Audio = IDT SigmaTel (this’ll turn off the red light in the headphone jack : )
    2. iSight Web Cam
    3. BlueTooth – nothing kicked in till i ran Bluetooth “Enabler” Installer

Nirvana!

  • if all goes well (doesn’t it always? ; ) you should have a clean Device Manager with ZERO red squigglies, along with fully working…
  • Hardware accelerated video
  • HiDef Audio
  • iSight WebCam
  • BlueTooth – spoke too soon… Bluetooth stack was present and superficially happy looking but wouldn’t successfully complete pairing with Apple Keyboard… fortunately i also had a spare Broadcom BCM20702 Bluetooth 4.0 USB dongle and it lit right up and worked straight away… i’m loosely going to chalk this up to Windows 10 not having all the bits aligned to go back to the Bluetooth 2.0 era.
  • Working Sleep behavior via Lid Close, etc.
  • and Cute little BootCamp Control Panel tray icon

Misc Bits

  • Macs like to run on their Real Time Clock (RTC) corresponding to UTC… so if we want to play along we can set our BootCamp Windows to do the same… just right mouse on your task tray clock into “Adjust date/time” flip off/on the “Set time automatically” toggle to force system clock to update after applying that reg setting

It really does work!  : )

image

Configuring VMware ESXi as a Workstation

Only virtualizing RAM & Compute, not KVM & HDD

Overview:

  • i was looking for a single machine Mac + Win solution… working from one primary desktop and remoting to the other…
  • this is of course the general posture of all the popular VM “Workstation” products but they gave me heartburn for one reason or another (see Motivation)
  • ESXi –VMWare’s FREE & very “light” HyperVisor server product– requires some mildly esoteric configurations of HDD, Video & USB to accomplish the desired single machine workstation footprint, hence these notes

Motivation:

  • Hosting Mac VM side under Windows VMware Workstation i ran into very unreliable connection from Visual Studio 2015 to Xamarin’s Mac Build Agent (believe me, tried all latest VS2015 update bits as well as Xamarin alpha channel)… only after MANY MANY frustrating retries would it eventually connect
  • as well as surprising Xamarin Studio NuGet package gallery connectivity roadblock with virtual Mac’s network interface in NAT mode which seemed to be the only way Build Agent would ever connect… NuGet worked under Bridged but then Visual Studio couldn’t connect… arrrrg
  • going the other way with Windows virtualized under Mac host via either Parallels or Fusion always took an unacceptable hit on Windows / Visual Studio performance… year after year both mainstream commercial Mac hosted virtualization products have been riddled with issues and chronically dead ended support forum posts… each new version as disappointing as the last… so I am ecstatic to finally leave all that noise behind, hopefully forever.

Success !

  • should’ve tried this long ago, ESXi is a surprisingly quick and painless install
  • now Visual Studio immediately connects to Mac build agent and Mac NuGet is also happy
  • and both Mac and Windows VM’s are nicely more snappy than what I’d get under the Workstation products… consistently low idle CPU% usage, definitely more like physical

Specs:

  • mobo: Gigabyte GA-X99-UD4 (BIOS F22)
  • GPU: ATI 5450
  • ESXi 6.0.0U2 – download, [Update: 2017-02-15] ESXi 6.5.0-4564106 was a no-go for me
    Frozen Windows logo upon booting the Win10 RDM. Tried creating fresh VM definition and using the new SATA controller instead of SCSI with no luck… bummer because the new ESXi Host Web Client was notably better at saving the necessary settings; didn’t have to resort to vSphere Client… fingers crossed future releases will resolve… for the record, the ESXi installer is thankfully smart enough to leave our datastore partition intact, conducive to quickly trying ESXi upgrades by simply REATTACHING the VM’s after install
  • unlocker 2.0.8 (there is now a 2.0.9 RC targeting ESXi 6.5, the author does warn not quite ready, but there’s at least one successful report)
  • Windows 10 (v1607 build 14393.693)
  • El Capitan OS X v10.11.5, now running fine on Sierra as well

Main Steps:

  1. install ESXi
  2. install unlocker
  3. boot up your ESXi host
    yeah, it was just that easy : )
  4. install vSphere Client on a remote machine
  5. use client to remote into the host by ip and root/password
  6. create your VM’s paying attention to the following screenshots & config notes

VM Creation Settings at a glance:

i took these screenshots via ESXi host Web client but that actually runs into various validation errors upon save… the vSphere client is therefore the go to whenever creating/modifying settings (see Which Client? below)

Video config:

  • Noteable: VT-d aka IOMMU aka DirectPath I/O aka passthrough provides direct physical connection from VM (i chose Windows) to PCIe devices for GPU and USB which allows for running the Windows desktop directly on the ESXi box without typical need for a separate machine to remote in from
  • this does mean once the VM starts up, it completely takes over the graphics card to where the ESXi host is truly “headless”… so i’ve actually got 2 GPUs running, an old ATI dedicated to the Windows VM and another just for getting into ESXi shell on physical host…
  • NOTE: single GPU configuration is very viable… all settings (both host and VM) are done through remote clients (see Which Client? below)… if for some reason that wasn’t an option, you could disable VM autostart via vSphere client and thereby leave a lone GPU for troubleshooting directly on the host console after boot up… i suppose if things were ever so horked up that disabling the GPU takeover autostart remotely wasn’t an option, then finding another graphics card to throw in might be the only choice… but really any old card would do (i.e. temp borrow someone else’s) since it’s just a text based linux console.
  • reportedly nVidia consumer grade cards like my nVidia GTX 750 Ti are specifically crippled against VT-d… nVidia reserves this for their high end $$ cards… clever folks are mod’ing low end cards to report VT-d compatible DeviceId’s but i haven’t found anyone doing the 750 Ti yet… also wonder about DSDT override approaches… unfortunately Windows doesn’t pay attention to bootloader magic ala Clover, otherwise FakeId would be awesomely too easy… ESXi does seem to support a custom DSDT -or- it looks like there’s a way to punch a DSDT into the registry for development purposes
  • fortunately ATI doesn’t cripple their consumer GPUs… the 5450 was a $30 card circa 2012 and supports 3 digital displays with completely passive cooling (i’m a sucker for fanless)
  • more recently I’m liking the footprint of an HP 2GB ATI 7570 i picked up for $40 used on eBay also with all 3 digital port types, including the elusive DisplayPort… the HP ones with model#’s 672462, 695635, 695633 are nice small half length cards that i can report are an essentially silent fan… keep an eye on the RAM since there’s a lot of 1GB ones out there but frankly 1GB probably runs everything fine anyway
  • pretty sure could just as well run the Mac on the VT-d GPU and thereby gain full QE/CI accelerated graphics if needed (iMovie being a notable app)… VM’ing OSX with VT-d graphics providing full speed QE/CI is an interesting blend of virtual and physical versus more traditional full physical approach to the hackintosh game… i suppose it still comes down to fiddling with each of your specific I/O devices (Bluetooth, WiFi, Audio, etc)

HD config:

  • this post details how to create RDM (Raw Device Mapping) vmdk’s to mount our consumer sata drives containing existing physical Win and Mac boot installations directly as VMs, nice! … Nutshell steps:
    [crayon wrap=”true” lang=”shell”]
    #one time only
    md /vmfs/volumes/datastore1/RDMs

    #list your disks
    ls -l /dev/disks | grep -i “vml.*[^:][^9] ->”

    #create virtual drive mapping referencing the corresponding disk “guid”
    vmkfstools -r /vmfs/devices/disks/vml.0100000000533231484e5341464335303333354c202020202053616d73756e /vmfs/volumes/datastore1/RDMs/Sam500_Win10_RDM.vmdk #edit “Sam500” for your preferences
    [/crayon]

Keyboard / Mouse (surprisingly hard):

  • basically there’s no way to do trivial USB device assignment ala the Workstation products’ toolbar buttons… i couldn’t believe this initially and went looking for a long while… yet apparently VMware has specifically prevented mapping USB keyboard/mouse (“HID”)… speculatively to prevent losing complete control of your only means of input on the bare host but i haven’t run across an official “why” documented in black and white… for the record, certain enterprise oriented dongles are specifically supported for mapping at individual USB device granularity
  • so we must VT-d passthrough a PCIe device corresponding to an entire USB bus vs individual devices…
  • modern mobos typically rock multiple USB buses so theoretically we can simply carve one off for VM and leave one for host keyboard… Helpful Post1, Post2
  • but my default mobo config somehow had all the real USB ports clustered on a single hub address even though there were other hubs listed… after some trial & error BIOS fiddling reboots i found that setting XHCI to disabled yielded two separate PCIe entries in the passthrough settings UI like the above posts… that does mean i have no USB 3.0 for high speed transfers, so if that matters to you, it’s worth considering a $15 USB card
  • navigate to the passthrough settings UI via: your host > Configuration tab > Hardware section > Advanced Settings

Network:

  • Make sure you use VMXNET3 virtual NIC
  • the Intel E1000 default definitely sucks! it was giving me only 20 mbit downloads on my 30 mbit line
  • special instructions for Mac … i edited my VMX file directly (see vmx edit tip below)

Deploying to real iOS device via Mac USB:

  • this basically means we gotta dedicate another whole USB bus VT-d to the Mac VM… i can confirm this does indeed work… i’m leaving my Mac VM OUT of auto startup so that one USB bus stays with the host for local keyboard ESXI shell access if i ever need it

Which Client?

  • it’s wild how many different clients VMware has cooking… and they all have annoyances… vSphere Client, vCenter Web Client, VMware Remote Console (VMRC), ESXi Embedded Host Client and i hadn’t realized VMware Workstation’s UI will readily console into remote VMs in addition to its main function
  • FYI, if you get an “HCMON” conflict error with any of the installers – just run the installer exe as admin
  • vCenter Web Client – oft touted as the leading functionality bits (other clients warn of decreased VMware v11 hardware capability) … but it requires licensed vSphere Server… …i.e. $$ and another Windows Server or Linux box… will NOT install on Windows DESKTOP skus… previous versions we could fairly easily mod the MSI to ignore Server check, but latest v6.5’s MSIs are signed and won’t run after modded… AppCompat HighVersionLie shim didn’t work because it’s stuck on NTProductType (1=Desktop, 3=Server) not version and i was too scared to try an old tool like NTSwitch on my main rig… saving that for rainy day VM excercise
  • VMWare Remote Console – for quick remote desktop into the Mac i’ve settled on (rather undoc’d) parms for VMRC "C:\Program Files (x86)\VMwareVMware Remote Console\vmrc.exe" -H esxi_ip -U userid -P password -M vmid
    • locate vmid via ESXi Shell: vim-cmd vmsvc/getallvms
    • these modern clients seamlessly auto resize the mac desktop resolution just by dragging the console windows handles, nice!… just make sure to bump the paltry default 4MB VRAM via your VM > Edit Settings > Hardware tab > Video card… 64MB seems plenty… this setting supersedes the oft mentioned sVGA.vramsize vmx setting
  • ESXI Embedded Host Web Client – for admin/settings the Host Client is nicely capable w/o installing anything… access via: https://esxi_ip_addr/ui/
  • vSphere Client – for creating and modifying the VM settings, i found the vSphere Client to be more forgiving than the Embedded Host Client which would reject the provisioning submission with an “Incompatible device backing specified for device ‘9’” error no matter what i tried
    • configure auto-login shortcut with command line params similar but SLIGHTLY DIFFERENT to VMRC: "C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe -u user -p password -s ip_address
    • rats! as of v6.5 release wave, vSphere Client is officially dropped… last v6.0 revision still forwards compatible with 6.5 servers
  • SSH – and then SSH’ing into the ESXi Shell for any low level commands like the RDM stuff…
    • on Windows, PuTTY provides great shell experience (colors, cursor keys, delete, etc all just work, no fuss, no muss)
    • if you’ve got the new Ubuntu Linux Subsystem for Windows 10 loaded, that BASH has SSH built in

Skipping Clover:

TL;DR: Add a new entry to the ESXi EFI BIOS Boot Manager for OSX’s /System/Library/CoreServices/boot.efi

Background: Sometimes it’s handy to actually physically boot into the Mac… one reason is to get full CG/CI video on a real GPU for something like iMovie (although could actually probably pull this off via GPU passthrough)… anyway, for booting into physical Mac I like Clover so I have that installed in the EFI partition… by default, Clover is then in the loop when booting Mac as a VMware ESXi guest as well… problem is, for me, versions of Clover beyond r3265 crash upon selecting the Mac entry… one workaround I’ve wriggled out is to skip Clover by putting a “direct to Mac” entry in the VMware EFI BIOS boot selection screen (i.e. the “F2” menu)…

Loading the HFS driver so we can see the OSX System partition

now hit ESC back up to the top

Adding the Mac’s boot.efi entry

Change the Boot Order to put it at the top to be the default

Note: originally i worked this out through the EFI Shell prompt via BCFG commands… but upon returning to retrace my steps bcfg is not present in the shell!?… i must’ve accidentally enabled it during experimentation and have no recollection of how… i was doing things like loading \EFI\CLOVER\TOOLS\SHELL64.efi but that didn’t seem to do it this time around… would love to hear what i’m missing?? here are those bcfg commands for the record

* we need to load an HFS driver to get to it… on my system the EFI partition where Clover is installed is mapped to FS0:, main OSX partition is FS1:, so:
* `load fs0:\EFI\CLOVER\drivers64UEFI\VBoxHfs-64.efi`
* `reconnect -r`
* ***BCFG*** – the pertinent command for manipulating EFI BIOS menu entries:
* `help bcfg` is our friend
* `bcfg boot dump` to list current choices
* `fs1:`
* `cd \System\Library\CoreServices`
* `bcfg boot add 1 boot.efi “Direct to Mac”`
* if you add this as entry #1 as shown, it’ll be selected by default without intervention which is convenient
* you may want to add in a `bios.bootDelay = “5000”` in your Mac.vmx to give a moment to hit F2 if you find yourself needing to return to this screen often
* for the google record, the error i run into with Clover beyond r3265 under VMware was *”firmware encountered an unexpected exception”*
* i’ve just tried Clover r4061 2017-04-19 and it’s still busted => seems the bug is [already reported](https://sourceforge.net/p/cloverefiboot/tickets/354/)…
* and i indeed have now come to require a more recent Clover release than r3265 under physical Mac ([due to this](https://nickwoodhams.com/x99-hackintosh-osxaptiofixdrv-allocaterelocblock-error-update/))

Unfiltered Tips:

  • consider skimming my Diigo ESXi tag for more helpful posts
  • SOME VMX settings can be applied under {your VM} > Edit Settings > Options tab > Advanced > General > Configure Parameters button… but i’ve found not everything sticks here and i’ve had to vi the VMX file directly from SSH… vi /vmfs/volumes/datastore1/{your vm name}/{vm name}.vmx… then vim-cmd vmsvc/getallvms to find your VMID and lastly vim-cmd vmsvc/reload {VMID} to activate any changes
  • disable “Your Mac OS guest might run unreliably with more than one virtual core” message upon startup… this is bogus advice at this point
    • VMX setting: isolation.tools.bug328986.disable = “TRUE”
  • make sure you apply the smc.version = “0” tip in the unlocker notes if creating ESXi 6.0 compatibility level VM’s (i.e. “Hardware Version 11”)
  • Unfortunately after most guest reboots (not all), Win10 falls into an “automated repair” blue screen cycle of doom… i’ve come to realize that merely deleting and recreating RDM file from CLI is all that’s needed… so i created a little script for that in the host’s RDM folder and SSH in to execute it whenever things go south
    [crayon wrap=”true” title=”resetSam500″ toolbar=”always”]
    rm Sam500_Win10_RDM*.vmdk
    vmkfstools -r /vmfs/devices/disks/vml.0100000000533231484e5341464335303333354c202020202053616d73756e Sam500_Win10_RDM.vmdk
    [/crayon]
  • Virtual Machine Startup/Shutdown needs to be configured for convenient auto booting of VMs when host spins up… UI is unintuitive, make sure to bump VM up into the Automatic Startup section
  • i started on GA-X99-UD4 BIOS rev.F12 … at first everything was copacetic but wound up at pitch black UEFI BIOS screens after reboot (monitor lights on so live signal, but no UI)… i found that taking either GPU out before boot would actually work so it was a dual GPU issue… up’ing to BIOS rev.F22 permanently resolved that
  • if you’re looking to jump in with turnkey hardware: this TinkerTry guy really looks to have done all the homework… 8 core XEON (D-1541 = 2.1GHz, BGA mounted = no upgrades possible), 64GB RAM in a cute little mini-tower case, 100% VMware official compatible components, all tested out and ready to rock as a local VT-d workstation just like what i’ve shown here
  • Cross Platform Clipboard – tried several, free Share Clipboard via node, CopyCopy, CrossClip, Alt-C, etc… FINALLY! NoMachine to the rescue = free modern cross platform remote desktop with working clipboard, yay!! bonus points: it also enables sound in the remote Mac window… VMware doesn’t have any solution for that yet… the window drag looks a little pokey vs VMRC but definitely usable

Install OS X to physical via VMware

image

General guide for installing physical boot OS X from a Windows VMware hosted guest instance – Including some specifics for Yosemite, El Capitan latest macOS, the Clover boot loader, and my specific hardware.
 

This guide is admittedly dense with detailed experience (for my own reference), yet the core idea is simply this: get into an OS X virtual machine and from there, install OS X to your physical drive 🙂
 

The one main snag to this Virtual to Physical approach was that, even when the physical installation drive was taken “offline” via Disk Management, Windows still had a readonly lock on the boot parition such that the bootloader install (Clover) would fail… and we’re not going anywhere in h@ckintosh land w/o a bootloader… fortunately I finally came upon a couple smarties in the VMware forums that suggested a rather obscure hack that works (see “MBR trick” below).
 

Motivations:

  • This approach generally assumes you’ve got a WinPC already and you want to leverage that same hardware to physically boot OSX at times as well.
    • Once you’re in OSX, Parallels and VMware Fusion do both support running your physical Windows instance as a VM… this corresponds to VM’ing your Bootcamp partition under a real Mac… so to be clear, we use a Windows host to run an OSX VM from where we install OSX to a physical drive, then boot that OSX host and run that same original Window host installation as a VM under OSX 🙂
  • To put it out there up front – The convenience of ready-to-run VMware OSX images are the primary timesaver in this approach. Full disclosure, if you hadn’t heard it before, H@ckintosh is already a grey area, and the bits required to patch VMware to run OSX are more shades of grey. I’ve included links to finding the bundle we’re counting on. That VMware stuff can admittedly get fiddly and the convenience factor drops off fast when that happens… I intend to document that better next time I go through the process.
  • Secondly – I had trouble getting my USB stick to boot with Clover on my hardware – which appears to be a known issue on my mobo (Gigabyte X99-UD4) – so on the way to prepping a USB for UniBeast, I figured why not see how tough it is to install directly from VM OSX to my intended physical drive vs fighting the USB.
  • Even if you don’t have an inherent USB problem like me, I still feel strongly this approach dodges a lot hassle by skipping the whole routine of applying the latest desired OSX installer to a USB… that is not a trivial process…
  • For what it’s worth, this approach pretty much guarantees you won’t run into issue just getting the vanilla OSX bits on your physical drive… you will naturally still have to slog through whatever your individual hardware compatibility effort requires to actually boot up… but at least you only fight that battle once with the real boot vs once with the USB and then again with the real boot
  • now one could argue we’re shifting our annoyance burden from building USB boots to fiddling with this special VMware install… and that’s fair… but once you’ve mastered a known good VMware+OSX, you can readily archive & restore that bundle of files whenever you need… you can leave that version of OSX as it stands (say at Yosemite)… from that known working baseline, the processof getting the latest greatest OSX (El Capitan and beyond) onto your physical drive is a breezy affair of running the upgrade from the App Store…
  • Apple does keep locking down kext security more and more so there’s been a trickle of tweaks necessary on the SIP/CSR end of things going from Mavericks to Yosemite to El Capitan… those have been trivial settings to apply once identified but as is typical in this space, one must scrounge the interwebs to find those clever souls who’ve figured out the latest little trick… yet this is the nature of the game and would be just as necessary (doubly so) with the USB route.
  • Extra bonus – when troubleshooting is necessary, it is way easier to noodle around on your physical drive from the full working OSX VM environment vs the constrained environment you get from USB boot into Installation / Recovery mode.

Hardware as of this guide:

  • FYI – This is a perfectly copacetic Hackintosh build… sleep works great, dual screen digital video is perfect as well as audio and network.
  • Mobo: Gigabyte GA-X99-UD4 – LGA 2011-v3
    • bios: F12
    • onboard ethernet: Intel I218-V (kext required)
    • onboard audio: Realtek ALC1150 (vanilla support)
  • CPU: Intel i7-5820k – 6 core Haswell-E (vanilla via Clover flags)
  • Video: Asus Strix Nvidia GeForce GTX 750Ti 2GB – a nice fit indeed:
    • No drivers necessary to vanilla boot into Yosemite – understand there is no QE/CI out of box but a very workable low res mode for initial install and then full QE/CI via Nvidia “webdriver”.
    • ! fanless ! unless pushed hard by a game, which never happens to me 🙂
    • 3 simultaneous digital outputs, INCLUDING DisplayPort – I can confirm this card supports at least dual monitors under Yosemite via any combination of DP / HDMI / DVI (dual- link) with any of them driving 2560 x 1600 res…can now also confirm 4k @ 60Hz @ Chroma 4:4:4 over DisplayPort on this card… currently doing active conversion from DP to HDMI for this screen (Samsung 49″ TV UN49MU6500)… direct HDMI did NOT go full 60Hz as expected due to lack of HDMI v2.0 support

    • no more horsepower than I care to pay for => $160 at the time … and was well stocked in major outlets circa April 2015
  • Corsair H80i Cooler USB – caused OS X “re-wake” issue Corsair’s “i” models sport temperature and fan speed sensors that drive monitoring software (Windows only) via USB … if one goes looking, it’s easy to see the USB drivers have been a mess for years … even with the well known hacks applied, i only got occasionally working guages after reboots let alone the annoying wake issue … highly recommend avoiding any of these “Corsair Link” products… or simply leave the USBs disconnected if you fall for the marketing like i did

Obtain Software Bits:

Software versions only listed for reference as of this build, not crucial unless noted.

  1. VMware Workstation (v11.1)
  2. Find a recent OSX VMWare image (I started with Yosemite v10.10(.0) 14A389)
  3. latest VMware unlocker – crucial to enabling OS X guest functionality in VMWare
  4. Yosemite latest macOS via App Store download (v10.10.*2* 14C109)
    • get this download running as soon as you can get into the VM since it takes a while
    • if curious, you can confirm which version of OSX you got from the app store via the “Startup Disk” popup that comes when you quit out of the installer.
  5. Clover Configurator (v4.23.0) – essential, seals the deal on Clover
    1. Later, use Clover Configurator to download and install latest Clover – Clover version history
    2. while UniBeast still seems to cover more diverse hardware situations, Clover is pretty slick if your hardware is copacetic (basically starting with a UEFI capable mobo)
    3. the “EFI partition only” footprint is nice for vanilla segregation – it sits there intact if you want to completely wipe & reinstall OS X primary partition
    4. Couple nice bits for my hardware
      1. HaswellE kernel patch is a checkbox vs manually patching the kernel – nice!
      2. no fuss NVRAM checkbox which effortlessly enables iMessage and App Store connectivity
  6. KextWizard (v3.7.11) – one handy feature above other more well known kext loaders, it will target another drive which is perfect for this side-load scenario
  7. Nvidia’s web driver (my hardware)
  8. Raw kexts
    1. FakeSMC – bare minimum DSMOS avoidance for non apple hardware
    2. AppleIntelE1000e (v3.1.0) (my hardware) – for X99-UD4’s onboard Intel I218-V ethernet
    3. VoodooTSCSync patched for 6 core (my hardware) – author site says this addresses “spin lock” issue
    4. GenericUSBXHCIin conjunction with disabling XHCI in bios, this kext enabled night and day improvement in VM performance under **Yosemite** … under El Capitan v10.11.2 my USB devices stopped working… removing this GenericUSB kext allowed them to work again and fortunately the previous Parallels VM performance problems didn’t manifest after that… I also up’d from Parallels V10 to V11.1.1 (32312) since then which might be aiding this complex compatibility equation as well.

BIOS settings:

  1. SATA controller in AHCI mode – classic requirement
  2. xHCI = manual, xHCI handoff = disabled – (Reference) this made a major difference on running VM’s

VMware Guest Configs:

  1. add ‘smc.version = 0’ to the VMX file in order to resolve error: vmcore/vmm/main/physMem_monitor.c:1123
  2. Add physical disk to guest – In addition to the main vmware virtual drive that your guest OSX boots from
    1. i found SATA interface to *never* work vs IDE or SCSI… SCSI gave some minor warning so i went with IDE / full disk / persistent
  3. MBR trick to allow boot utilities (e.g. Clover installer) under vmware guest to write to physical disk:
    • sure am **grateful** these guys figured out how to hack around this issue, otherwise this whole approach would be dead in the water with no way to write to the physical disk
    • pretty surprised vmware hasn’t been blasted into fixing this issue… it doesn’t seem OSX specific but maybe that’s why it’s remained obscure
    • In my experience on Win8.1 & Win10, simply taking the drive “offline” via DiskManagement was not enough… even though I’ve seen that suggested several times… maybe Win Server behaves differently?? and therefore works out for the majority of folks running VMs… or maybe OSX install does some rather uncommon boot partition writes vs other operating systems??
    1. ** This must be done BEFORE firing up vmware guest
    2. hide the physical disk from Windows by temporarily clearing the “MBR magic” signature in the very last 2 bytes of sector 0 (see DirectDisk tool screenshot at bottom under “MBR Trick”)
    3. then refresh Disk Management (or DiskPart.exe > rescan) and the drive will show that it’s now completely unknown
    4. now put the 55AA signature back so the Mac guest can see the drive – but be careful not to refresh Disk Management or DiskPart
    5. now fire up vmware guest and you’re good to slam that drive all day long

Lessons Learned:

  1. For Clover boot errors like “Couldn’t allocate runtime area” or “requested memory exceeds our allocated relocation” on UEFI boot X99 mobos, see this post… in a nutshell, that smart dude has created a better combined replacement for the LowMemFix and AptioFix drivers

  2. Major Parallels/Fusion VM performance fix!! – the nutshell is apparently the xhci stuff has a major impact… i had mine disabled but then didn’t have xhci manual mode selected nor the GenericUsbXhci.kext loaded (see El Capitan update under Software Bits 8.4) and after doing both of those my Parallels 10 performance was respectable…prior to that all Windows VM spinups were major slow and obviously just hammering the first core from Activity Monitor, afterwards all cores jump around randomly.

  3. Bootcamp under Parallels, fix “missing operating system” – first shutdown the Bootcamp guest VM so you can make configuration edits, then “Edit Partitions” and for me, my little recovery partition wasn’t selected vs the main Windows OS partition, just had to select it (in addition) and restart.

  4. Updating OSX <=> Nvidia driversSEE THIS POST – the Nvidia “web drivers” are rather obnoxiously hard wired to each specific OSX point release (e.g. just going from 10.12.5 to 10.12.6)… so the first boot right after an upgrade requires special attention because the previously installed driver is no longer compatible… the main thing to be aware of is temporarily adding nv_disable=1 to your boot args via the Clover “options” page, which gets you back into a working low res desktop where you can follow the Nvidia driver automatic update process…

    • UPDATE: in more recent version of Clover (4049), I needed to go into the Clover options > Graphics Injector submenu and uncheck the Nvidia Web Drivers entry… nv_disable didn’t seem to work anymore
  5. Using MacPro6,1 for your SMBIOS requires a special patch – see Fix#4

  6. I’ve come to understand that iMac14,1 is one of the more forgiving choices… Apple is changing the USB game a lot starting with El Capitan… they are restricting USB ports depending your SMBIOS machine… reportedly iMac14,x does not currently (v10.11.2) receive any restrictions on the USB 2.0 side (EHCI)… i can report at least all my USB2.0 devices operate (Logitech Z305 speaker, Logitech C910 webcam, Logitech Anywhere receiver)

  7. starting from a completely bare drive – just format it as GPT Journaled with a single partition via DiskUtil – this will create an unavoidable ~200MB EFI partition which is good for clover

  8. Yosemite installer or Recovery script will add “Recovery HD” partition – however, i don’t particularly see the need for Recovery mode vs booting into full OSX VM for any troubleshooting

  9. on the VM image i had major kernal_task CPU crunches that would storm in and bring everything to a stand still… guessing thru googling that some IO kext is getting hung up… i disabled sleep and this issue no longer occurred, no big surprise.

  10. easy success with Migration Assistant restoring from Time Machine backup after booting into a fresh OSX install makes this my preferred approach – see “Time Machine saving to Windows share” under Misc tweaks below.

System Integrity Protection (SIP)

Under OS X 10.11 El Capitan and beyond, SIP presents a new challenge to hacking kexts
(good ref)

  1. Under Clover Configurator set the follow RT Variables:
    1. CsrActiveConfig = 0x03 (for full) – or 0x01 (for partial)
    2. BooterConfig = 0x28
  2. remove the old rootless=0 and kext-dev-mode=1 from boot args
  3. Kext Utility 2.6.4 seemed to resolve refusal to load S/L/E kexts after edits were made

Install Steps:

  1. Fire up the VMware OS X guest on pre-installed virtual Yosemite image (Bits 1 & 2 above)
    1. Make sure BEFORE launching OS X guest, perform “#3. MBR trick” under “VMware Guest Configs” above
    2. if you install the darwin.iso tools the resolution does get a nice little bump from 1024×768 to 1920×1080… and it seems to be slightly more responsive – find in: C:\Program Files (x86)\VMwareVMware Workstation\darwin.iso
    3. Physical drive must be formatted before Yosemite installer will recognize as a valid installation point (specify GPT & Journaled)
  2. Install Yosemite latest macOS to the physical drive via Apple App Store download
    1. I counted 3 restarts… first round ended with a few mins stuck on “1 sec remaining”, second round was ~20 mins long… 3rd and final looped me back to the beginning of the install, confusing if you’re not paying attention… just bail out and reboot back into virtual Yosemite
    2. If you wind up fumbling that last stage like i did, then you’re the proud owner of a fresh new install WITHOUT ANY WAY TO LOGIN, doh! …  this article is handy 🙂
    3. since you now have 2 viable boot drives under VMware (the original virtual disc and this new physical), make sure to select the virtual as your default startup disc via the mac “Startup” preferences panel… after some fiddling i got VMware to load my physical for kicks but typically the reason you need to be in VMware is your physical is hosed and you’re looking to troubleshoot from your virtual
  3. Use Clover Configurator to download and install latest Clover – Remember to select the physical drive as the installation point
    • I went with the EFI only install with no other checkboxes necessary
  4. Clover Configurator settings – these need to get saved to your EFI partition/EFI/Clover/config.plist, so you’ll need to mount your EFI partition and make sure to select this file before you start applying settings, and then don’t forget to save before quitting.
    1. Boot tab:
      1. -v – verbose, you’re going to want to watch for any clues if it blows up
      2. npci=0x2000 – everybody says this one is crucial
      3. nvda_drv=1 – (my hardware)  enables loading Nvidia kexts
      4. (El Capitan no longer honors this flag) kext-dev-mode=1 – this enables loading of unsigned kexts
      5. slide=0 – pulled this from a guide (not sure necessary)
      6. (my hardware) Legacy = LegacyBiosDefault – this enables Windows to boot when it’s been installed in MBR (aka Legacy) mode vs UEFI mode
    2. GUI – hiding entries on the clover boot menu is complicated by all the different combinations… this is the strategy that was the most rational for me
      1. Scan = Custom, then select Entries & Tool (leave Legacy and Kernel unchecked) – i couldn’t figure out how to hide my Windows EFI partition from the legacy scan so this disables legacy scanning entirely
      2. Hide Volume => Recovery HD – this was the only one that still needing specific hiding
      3. Custom Entries
        1. one for the OSX volume by name (not the mac/clover EFI volume), don’t forget to set the Type field or it won’t save to config.plist, no other fields required, but you might want to set a specific image file (e.g. EFICLOVERthemesthinkpadiconsos_yos.icns)
        2. one for Windows volume by UUID, always set the Type field, no others required
    3. Kernel and Kext Patches
      1. KernelHaswellE (my hardware)
    4. Install Drivers – for Yosemite everything will be 64bit and I’m doing UEFI only so we’ll be selecting only from the two bottom sections on the Install Drivers tab (i.e. “Drivers UEFI 64 bit” and “Extra Drivers”)
      1. remove VBoxHfs
      2. add HFSPlus UEFI
      3. —- my hardware — otherwise Clover will hang trying to allocate contiguous memory right after OS selection
      4. add OsxAptioFixDrv
      5. add OsxLowMemFixDrv
      6. add OsxFatBinaryDrv UEFI
    5. Theme – my chosen them never seemed to save to the config.plist for me so i just found the <theme> section and put the one i wanted manually (textedit works fine here).
  5. Copy kexts to EFI\EFI\CLOVER\Kexts\10.10
    1. FakeSMC
    2. VoodooTSCSync (my hardware)
    3. GenericUSBXHCI (my hardware) – no longer recommended, see El Capitan update under Software Bits 8.4
    4. AppleIntelE1000e (my hardware)
  6. You should now be able to reboot into this new physical OS X – *** I’ve needed to include “nv_disable=1” in the boot args until i’ve gotten the Nvidia WebDrivers loaded ***; THIS POST is very helpful for all the different issues
  7. Play it safe, do a Time Machine backup of this pristine install before you do anything else to screw it up (see “Time Machine saving to Windows share” below) – *** especially before the Nvidia drivers ***, i’ve had them black screen me… if that happens, try nv_disable=1 boot arg first before starting completely over.
  8. Last juicy step is to go ahead and install latest full Nvidia web drivers (Tip: confirm your specific OS X version via Finder > About This Mac > and hold ⌘ when you click the version number)

Misc tweaks and tools:

  • DiskPart cheat sheet
  • XtraFinder – dual panes!, tabs, F2=rename, Enter=launch file, Delete=delete file
  • Kext Utility
  • Clover Preference Pane
  • Installing Windows in UEFI Mode – this makes it more straightforward to target the drive for booting from Clover… it’s also supposed to be the fastest way to boot up
  • Fix Home/End keys: Karabiner > “PC style” keys options
  • Show All Drives in DiskUtility:
    defaults write com.apple.DiskUtility DUDebugMenuEnabled 1
  • Resolve Microsoft Remote Desktop self signed cert lockup (ref#1, ref#2)
    1. Use Activity Monitor > View > All Processes to kill SecurityAgent which will dump the hung authorization popup
    2. Open Keychain Access app in OSX
    3. Select Certificates under the category heading – trusted certs are marked with a white plus in blue circle
    4. double click your untrusted certificate
    5. expand Trust section
    6. select Always Trust for SSL
    7. close, done
  • Enable Time Machine saving to Windows share (smb)
    1. Save a “sparsebundle” image to your share via DiskUtil > new image… 500GB or whatever… it’s “sparse” so it won’t use all the space right away… go with “Single Partition – GUID” and Journaled
    2. “Mount” your share via Finder ⌘-k, confirm by Finder > prefs > SideBar > Devices > {your machine}…  look for share as a drive icon there
    3. Double click the sparsebundle to get that mounted as well
    4. Terminal: sudo tmutil setdestination /Volumes/{sparsebundle drive}
    5. Fire up Time Machine prefpane and select that drive, yay!
    6. Use Users prefpane > Login Items to make the two mounts automatic after reboots so that Time Machine has continuous access to do its background backup magic
    7. CONFIRM THAT YOU CAN RECOVERY RESTORE from this rather unsanctioned source – traditionally one does this from a “Recovery HD” partition with the special Time Machine Restore tool available to that environment but i ran into enough snags that my preferred approach is to reinstall OSX from scratch from the OSX virtual machine, then boot back into the fresh install and use Migration Assistant to restore from the Time Machine backup. This is a resilient solution because if we somehow trash this guest VM, we can readily recreate it from the source vmdk file.
      1. If you’re still interested, here’s notes on creating a bootable Clover recovery partition – i had a lot of trouble modifying the BaseSystem.dmg to include my NIC’s kext such that i could point the Time Machine tool at my backup volume over the network
      2. (unsuccessful) Time Machine restore over NFS from Recovery mode
        • SMB is not supported in the limited Recovery environment so NFS is the next obvious choice to restore from a network source
        • NFSAxe was the one Windows NFS server that did at least support the basic OSX client to Windows mount (after trying both FreeNFS and haneWin NFS)
        • Time Machine via NFS on Mavericks and Mac NFS client tutorial – details pertinent Terminal commands… but ultimately ran aground with “sparsebundle not compatible” error which seemed like a limitation of the mount util (hdiutil) or the underlying filesystem libraries not available under recovery mode
          • make root drive writeable: mount -uw /
          • create mount point: mkdir /private/MacBackups
          • mount -t nfs beejquad:/m/macbackups /private/MacBackups
        • If curious to try, the Recovery mode tools can be fired up under standard OSX
          • mount any “Recovery HD” partition you can get your hands on
          • then under com.apple.recovery.boot, find BaseSystem.dmg and mount that (it is hidden)
          • Then the special Time Machine full restore app is under: /System/Installation/CDIS/Time Machine System Restore.app/Contents/MacOS/Time Machine System Restore … but again, this didn’t pan out for me since i wasn’t able to mount my sparsebundle image that contained the Time Machine backups… it seemed to be a Recovery mode limitation because the sparsebundle file continues to mount fine under standard OSX boot
  • Mounting EFI partition under windows
    1. launch cmd.exe, then:
    2. diskpart
    3. list disk (looking for the right drive)
    4. select disk x (where x is drive number)
    5. list part
    6. select part 1 (EFI will be first on a normally formatted GUID drive)
    7. assign letter=e
    8. (when done) remove letter=e
    9. Then need to launch explorer.exe as admin to access this E: drive
      1. cmd.exe as admin
      2. taskkill /im explorer.exe /f
      3. explorer

MBR Trick:

KeePass + Cloud Storage = (near) Password Nirvana

Update 2015-09-27: Neato! In June of 2015 the author has applied a mod which allows for KeePassHttp to be served from somewhere other than localhost… there are security implications to be considered here but as long as you know how to cover your bases it opens some nice possibilities to have a single KeepPass instance provide password resolution to multiple clients… e.g. a VM guest, other machines in your home, etc. Not provided in ready to run plgx file yet but following the self compile instructions found in the readme was fairly trivial.

KeePass2 – Password management application

  • 10 years mature
  • Free
  • Windows, Linux, Mac, Android and iOS versions
  • DropBox compatible (Google Drive, etc)
  • Autofill browser plugins
  • Rich text area for notes (e.g. challenge phrases and other reminders)
  • Open source (.Net)

  • Mac (and Linux) can run the Windows.exe via Mono
  • Initially ran native KyPass Companion on the Mac side (~$8). Have since switched back to the free mainstream build (see below)

  • On Android phone using Keepass2Android (free) with solid results

  • Provides special keyboard which facilitates autofill

  • DropBox and other cloud drives well supported (synchronize)
  • Handy yet still secure Quick Unlock feature
  • Consider a good android lock screen as additional layer of protection

I’m glad I finally took the time.  I (forced 😉 my wife to run the Windows version on her desktop and we share the same database file with our financial, healthcare, etc logins. So either of us can get into whatever we need wherever we are. It gives me peace of mind that she would have ready access to those important things in case I was somehow unavailable (knock wood). If you’re putting up with some other convoluted hodge podge as I was, please give this general idea a shot by wading in slowly and see if it makes your life easier as it has for me.

 2013-01-01: My main password file was corrupted

and I couldn’t log in.

  • Turns out I had a wonky entry that kept growing upon subsequent saves. Maybe compression algorithm was backfiring or something like that.
  • The offending entry was under KeePassHttp which just stores the authorized connection for each particular browser, so it was a no brainer to kill and recreate.
  • My kdbx file had grown to 28MB! after deleting it was back down to a measly 16k.
  • KyPass Companion was doing the most recent suspect saves causing massive growth so I can’t help but wonder.

DropBox really shines

  • Thanks to DropBox’s inherent versioning I could readily fallback to a working copy
  • Dropbox also showed the disturbing progression in larger file sizes over short amount of time
  • as well as which client that was driving those suspect saves – KyPass on my Mac
  • really gotta hand it to that product team, top notch stuff

KyPass’s questionable involvement gave me a reason to give the mainline KeePass2 another look…

Banging KeePass2 for OS X into shape

  • Updated from current v2.23 build to the latest official v2.24 build by dropping the latest KeePass.exe from the Windows zip bundle into the Contents/MacOS folder. This is promising; hopefully to never suffer the envy of a more recent build.
  • Contents/MacOS is also where plugins like KeePassHttp.plgx should be dropped.
  • KeePassHttp is working just fine for me running under this mono version.
  • Make sure to disable “Show a notification when credentials are requested” under Tools > KeePassHttp Options. Otherwise both KeePass and browser would freeze upon every login page request.

Nice to have’s in KeePass not currently available in KyPass Companion:

  • Automatic save-on-change (via triggers facility)
  • Autoload of the MRU kdbx file upon launch
  • Synchronization

[SOLVED] Error: “The following plugin is incompatible with the current KeePass version”
(/user/{username}/.local/share/KeePass/PluginCache/{unique}/KeePassHttp.dll)

  • Running on Mac via mono, turns out lldb is somehow the process forked by mono which hosts the KeePassHttp listener on port 19455
  • In my situation this pesky error was apparently caused by a crashed orphan lldb holding onto the port and blocking subsequent launches of KeePassHttp
  • Simply “KILLALL lldb” from terminal to resolve

Debug notes:

  • mono>debug.txt -v /Applications/KeePass{version}/Contents/MacOS/keepass.exe
  • Noticed SocketException well into the KeePassHttp plugin’s constructors call stack and started to realize the error message was misleading
  • Xamarin Studio will debug the running instance:
  • First, enable debugger break on SocketException: Run > Exceptions > enter SocketException in the search
  • Run > Debug Application > browse to keepass.exe

  • Xamarin Studio will also reverse gen back to C# source (not that we need it in this case but it’s good to know for future) – just create a new project and add the assembly (DLL or EXE) as a reference and click into it to see the readable source conversion of all classes.

ATI 5450 with Hackintosh (OSX 10.8.5)

(my X1300 post) I still believe someone will get the x1300 running QE on Lion… the fact that the old 7187 DevID is still present in AT13000Controller gives me faith … if it weren’t for another motivation, I would just wait. My other motivation is that it would be nice to upgrade to 3 displays, adding a Dell 30” to the current 24” and projector. So, my criteria are: Fanless, reasonably Hackintosh compatible, 3 display support, <$100 (the x1300 was $30 🙂 and lastly, nothing too hot/huge … turns out, there aren’t really that many obvious options to choose from… I’ve come to understand that to go from 2 displays to 3 displays basically requires a DisplayPort capable card aka “DP” (at least in ATI land… I’m less familiar with nVidia models). Apparently DVI/HDMI/VGA all require their own clock, and contemporary consumer cards tend to be implemented with only two clocks, hence the plethora of dual display cards. DisplayPort doesn’t require a clock as it is “packet based”. There is the Sapphire “Flex” line which implements an additional clock to drive three DVI/HDMI ports, but those are dual slot and more expensive than I’m looking for. So, out of the gate, I really liked the Sapphire ATI 5670 Ultimate … it has exactly all three ports I want: DP+HDMI+DVI, it’s single slot, the cooler looks “right” and it’s the very last stage before cards require the extra power connector, perfect!… furthermore, the 5670 was stock hardware in 2010 iMac’s and there’s a 5670 listed on the 10.7 HCL requiring zero mods for full functionality… but wouldn’t you know it, this perfect card appears to be discontinued in US markets!! 🙁 If you can find one of those buggers for <$100, I would hold on to it like gold. I was finding them for around $132 USD in Euro markets. If you go up from there, everything just gets unnecessarily big & hot for my needs… so I went down, and the next thing I ran into was the ATI 5450… There is a 5450 listed on the 10.7 HCL requiring only one simple ATI5000Injector.kext (and I’ve now confirmed for myself that this does work with full res/QE in Lion)… fanless 5450’s are prevalent… VisionTek, HIS & Sapphire have viable candidates … one slight downside is that the most ubiquitous 5450 package has VGA for the third port… so the projector has to go on VGA rather than HDMI/DVI… initially that seemed like an annoying step back into analog but I tested my projector on VGA and it was just as clear as HDMI. VisionTek’s DP capable models are the 900315 and 900320 (900320 looks to be the 900315 bundled with low profile bracket and some adapters)… The VisionTek’s are out there… best deal I found (including used) was a new 900315 direct from Amazon for $65… be careful, there are tons of mislabeled non DisplayPort VisionTek 5450’s for sale… I shipped one for $47 only to find out it was HDMI rather than DisplayPort (looks like it’s actually a 900358)… The VisionTek VGA+HDMI+DVI configuration is very prevalent… the DP ones are harder to find… I checked with several vendors on Amazon and eBay and kept running into mislabeled HDMI models. HIS’s fanless 5450 DP is the H545H1GDL, couldn’t find any. Sapphire’s fanless 5450 DP models are 11166-00 and 11166-09, couldn’t find any of those either. So it was basically down to the VisionTek… as I said, ordered one, got the wrong model, but it does great in Lion by the way… dropped in the ATI5000Injector.kext before swapping cards and it booted right into full res/QE glory first shot… too easy. All three ports were immediately recognized in Lion. So I was about ready to bite the $65 bullet on the only solid 900315 I’ve found… then I had an idea… I noticed the coolers on the 5450 I had received and my old x1300 are basically the same… the mount holes are definitely the same… and there’s this nifty Gigabyte 5450 that I’ve had in the corner of my eye… it has a fan but it uniquely provides 2 HDMI ports in lieu of the much more prevalent single DVI configuration… that’s pretty cool because I can stay all digital with the projector on HDMI and readily adapt the other HDMI to DVI for my 24” LCD. Keep in mind, it is only 512MB DDR2 compared to 1GB DDR3 on the VisionTek’s but I’m pretty sure it’ll be fine for my needs, because my x1300 is only 256MB DDR2… This Gigabyte 5450 is readily available for $40! And this month, there is a $15 mail in rebate (ends Sep.30 2011), putting this card at $31 with shipping… you just can’t beat that. So Plan A is, well, maybe the fan will actually be quiet, perhaps with a speed limit resistor. And I’m sure you can guess that Plan B is swapping the heat spreader from my x1300. If you already have an x1300 or similar low profile cooler, it might just come in handy to slide you into this cheap Lion compatibility/upgrade path… all the other aftermarket coolers I could find are undesirably large heat pipe affairs (obviously trying to cater to a wide range of heat profiles).

And that’s basically why I blathered on about all this… for anyone else with waning feelings for their old x1300, the Gigabyte GV-R545D2-512D might just be a nice, cheap, low profile upgrade… Update 28 March 2012 – I can definitely recommend this heat spreader swap hack with the Gigabyte GV-R545D2-512D. The fan based sink that comes with is definitely a noise generator but the fanless heat sink from the X1300 lines up perfectly. The card temps are no issue. I’ve been running it for several months couple years now. Just upgraded to Lion 10.7.3. One annoying card bug, if I drive a single screen, the display will go completely haywire after a while. Everybody on NewEgg seemed to have the same problem so it’s probably a core design issue in this model. It’s a fairly random timeframe. But driving two displays, this never happens. If you don’t have two displays (which why bother getting this card), then you can actually connect two of the outputs to the same monitor and that is enough to avoid the issue. Update 16 Oct 2013 – Running great on OSX 10.8.5 w/o issue. Pretty sure ATI5000Injector.kext stopped working as of 10.8.4 update so I switched back to manual editing the DeviceID (0x68f9) into ATI5000Controller.kext/Contents/info.plist and AMDRadeonAccelerator.kext/Contents/info.plist. Looks like these cards still available out there (iboyds.com = $37) but probably not for much longer given the endless march. Framebuffer Personality Patch – Recently nailed last remaining issue on my hackintosh – screen would garble upon wake. This post worked for me … kind of hard to follow where he pulled a few of the values but below is the resulting magic cookie of hex codes that work swell with this card so you don’t really need to figure anything out. These need to be pasted over an existing 4 port personality in ATI5000Controller.kext/Contents/MacOS/AMD5000Controller, I chose Uakari.

00040000040700000001000021030102
00080000040200000001000011020204
00080000040200000001000010000303
10000000001000000001000000100401

Also needed to force Uakari via /Extras/org.chameleon.Boot.plist file otherwise just blank screen upon Mac UI takeover:
Untitled
imageDSC_1698

HighPoint RocketRAID 620 indeed works for Hackintosh

Update [2011 Aug 6]: The original drivers appear to work just fine under Lion v10.7
Please see here for background on the “main PC = NAS” approach this hardware facilitates.
And here for my other Hackintosh tribulations with getting my old graphics card to work.
I’m very satisfied for a $60 part… the drivers loaded right up under both Win7 and OS X v10.6.6 (and 10.7 currently)
As a side note: This all works well in tandem with Parallels Desktop v6’s Boot Camp virtualization facility where I can dual boot into my one sole Windows 7 install natively or via a Parallels VM under OS X (I know VMware has something identical but from what I’ve read, Parallels still has the edge on performance).
The drivers on the install disc were up to date… and I’m taking it as a good sign that they haven’t found need to update them for over a year now.
Windows 7 Driver – currently: v1.1.9.1221, 12/21/2009
OS X Driver – currently: v1.1.0, 12/22/2009
There is the usual BIOS based boot time configuration screen you can pop into to manage your arrays.
And you can also install a management “Web GUI” … this is obviously driven by a mini web server that runs under your OS on a certain port… this is NOT plugging an ethernet cable into the RAID card itself… it is not that sophisticated… the whole thing is very bare bones, very old school but seems to have the basics covered (time will tell)… it’s loaded via an old Installshield style setup.exe that I recognize from the early 90’s … the web screens themselves are completely boring old school stuff which stands out in a bad way these days but truly, <ValleyGirlMode> whatevers </ValleyGirlMode>.
looking at the benchmark from CrystalDiskMark… those sequentials look respectable but I guess the other rates are pretty poor???
those specs are running the RocketRAID on these drives: Hitachi Deskstar HD32000 IDK /7K (2TB 7200 RPM 32MB Cache SATA 3.0Gb/s 3.5″ Internal)
image       image
The card itself is very miniscule… about 2.75″ inches square (see below)… it is a “1 lane” card (i.e. “X1” in the PCI-express common parlance)… but it is PCIe 2.0 so you absolutely want to put it in a 2.0 capable slot if you can and on my mobo that is a x16 lane slot… which “looks” like a waste but is totally fine for me because I’m not a gamer so I’m not using that secondary PCIe x16 slot for an SLI gfx card or anything useful anyway.
DSCF5030 - closeup
Checkout this last photo… I realized the RocketRAID card’s bracket alignment was off quite a bit (too short)… after installing, the card would slide itself loose of the slot… so much so that the mobo’s electric disconnect warning light for that slot came on… the bracket for my graphics card right next door doesn’t exhibit anything close to this height deficit so I’ve got to assume the RocketRAID is a bit out of spec… after scratching my head for a minute, the obvious solution that presented itself was to move the bracket under my case’s card stability rail… it seems like my Antec Skeleton’s card rail particularly lends itself to this approach… I wonder if a normal case’s bracket screw down area would ?
P1050814 - closeup

Hacking ATI x1300 into Mac OS X (Latest = Snow Leopard v10.6.8)

[Update: 2012 March 29] A commenter has his 7146 X1300 running Lion via EvoEnabler and no other mods… if you have a x1300 card that’s not cooperating with Lion, it would be interesting to try patching your bios to report a 7146 deviceid and see what happens… see the related comments below for links to corresponding tools.

[Update: 2011 Sep 3] See here for my successful transition to cheap, fanless, 3 Display capable replacement for the x1300.

Here are the main tweaks in a nutshell (“S/L/E” = System / Library / Extensions path on your OSX system drive):
  • S/L/E/ATI1300Controller.kext (this yielded proper resolution and dual display)
    • info.plist: replace 7187 with 7183
  • S/L/E/ATIRadeonX1000.kext (this enabled QE/CI … it sure is nice to see that dashboard ripple the first time! 🙂
    • info.plist: replace 7187 with 7183
    • MacOS/ATIRadeonX1000: replace HEX 8771 with 8371 (these are the reverse hex thingy)
  • Extracom.apple.Boot.plist (This is absolutely crucial, it’s what signals Chameleon to invoke it’s magic ATI juju, this file changes to org.chameleon.Boot.plist in Chameleon 2.0 RC5)
      <key>GraphicsEnabler</key>
      <string>Yes</string>

Further info on ATIRadeonX1000.kext/MacOS/ATIRadeonX1000:

  • it’s key to look for 81 FA prior to 87 71 (explanation here)
  • V10.6.3 upgrade: offsets => 2D58F, B0C65
  • v10.6.4 upgrade: offsets => 2D3BF, B0FEF
  • v10.6.6 upgrade: offsets => 2D363, B1185
  • v10.6.7 upgrade: offsets => (exactly same as v10.6.6)
  • v10.6.8 upgrade: offsets => 2E26F & B2A27 … I required EvoEnabler.kext in addition this time around… find it on www.kexts.com: … look for the ones pre-patched for X1000 series, then replace the framebuffer string (typically “Alopias” or “Wormy”) with “Sphyrna” (dual link DVI) or “Caretta” (single link DVI) document.forms[‘kexts_search_form’].elements[“query”].value = ‘EvoEnabler’;which apparently are the framebuffers compatible with our RV516 card and still supported in 10.6.8+.

Lion

  • v10.7.0 – ATI1300Controller.kext works as usual and readily provides full res… but unfortunately QE/CI via ATIRadeonX1000 is proving more difficult… there’s 4 possible hits on 8771 in ATIRadeonX1000, but none of them are prefixed with our tried and true “cmp edx, 7187h” = “81 FA 87 71” … the bytes @B3B6A look promising with “81 F9” prefix, which would presumably be a very similar opcode, like cmp ecx… but I got an instant KP when patched that way and kextload’ed… would of course love to hear anyone else getting this to work … Lion looks nice, we finally get re-size grab handles on all sides/corners of a window (just like Windows)… and the little trick where it’ll reload everything back up after a reboot is kind of cool too.

Full Disclosure… These are the other tweaks in play on my Hackintosh:

  • DSDT.aml –
  • Bootloader –
    • PC-EFI v10.6 (Tony Mac’s handy install package)
    • [Update: 2011 Aug 10] I’m currently running v10.6.8 & 10.7 via Chameleon 2.0 RC5 r1329 patched by Azimutz as described here
      • Lion requires some new magic bits only found in new booters like Cham2RC5 (friendly UI installer pkg’s here; fresh binary-only auto-builds here).
      • Note: Cham2RC5 changes the com.apple.Boot.plist standard to org.chameleon.Boot.plist
      • One key thing to keep in mind is that once you get an RCx of Chameleon installed via friendly package, one generally need copy only a new “/boot” file of a more recent build… all the other bits (seem to) stay the same until you hit another major RCy milestone.
      • The next hurdle one with our kind of “legacy” ATI video card runs into is that the Chameleon team has decided to cast off the “legacy” bits that were keeping our little x1300 in the game thus far :(, presumably so they can maintain a more nimble code base going forward … can’t say I blame them.
      • FORTUNATELY, Azimutz, has taken it upon himself to resurrect our legacy bits in new form… the way I interpret that post, Azimutz is piggybacking an existing chameleon “plug-in” approach that runs via a new “/Extras/Modules” folder…in our case, we toss in a binary named “ATIGraphicsEnabler.dylib” which represents the missing bits of our wayward card.  Make sure when Azimutz gives you back your new binary, that you take note of which .dylib, AMD or ATI, that’ he actually compiles your specific DevID into. I missed that at first… nice thing is, you can simply hex edit to see where yours is… use the source code as your guide 🙂
      • Azimutz is really doing some serious community service… He is literally taking requests for missing DevID’s and feeding the huddled masses with daily builds!  What a guy!!!
      • I submitted the specific details of this x1300 and Azimutz got back to me with a new binary in less than a day!!
      • NOTE: You must be logged in to see the link for the latest binary download zip file!!!  Then, you’ll find a link like “i386_r1223_a.zip” at the VERY bottom of Azimutz’ first post, just above his sig block… otherwise, the link is totally missing and not called out in any way… this totally threw me at first!! 🙂

Terminal: kextstat | grep ATI
(note, contrary to Eric’s feedback on 29 Jan 2011, ATISupport is loaded)

    69 2 0x5dfa5000 0x32000 0x31000 com.apple.kext.ATISupport (6.2.6) <68 14 13 7 5 4 3 1>
    81 0 0x5e0dd000 0x21000 0x20000 com.apple.kext.ATI1300Controller (6.2.6) <69 68 14 13 5 4 3 1>
    86 0 0x5e32b000 0x5b000 0x5a000 com.apple.ATIRadeonX1000 (6.2.6) <82 68 14 7 6 5 4 3 1>
    91 0 0x5e286000 0x13000 0x12000 com.apple.kext.ATIFramebuffer (6.2.6) <69 68 14 13 7 5 4 3 1>

My Hardware:
Mobo: ASUS P5E3 Premium WiFi @N
Video: Dell JJ461 Low Profile ATI x1300 Pro, 256MB DDR2, PCI-E 1.0 x16, Dev ID: 0x7183, GPU: RV516
Displays: 24” LCD: Soyo Privé Topaz LC MT-GW-PRLM24D4
Projector: Epson PowerLite Home Cinema 720

Misc Notes:

  • SL = Snow Leopard from here on out
  • KP = Kernel Panic
  • QE/CI = Quartz Extreme / Core Image
  • S/L/E = System / Library / Extensions path on your OSX system drive.
  • E/E = Extra / Extensions path (comes into play with bootloaders like Chameleon or PC-EFI)
  • Since there are scores of full blown install guides, I am just focusing on some pertinent observations during my little adventure to get an ATI x1300 Pro running under SL
  • I ran down every lead I could find to get my Sapphire ATI Radeon 3870 HD fully working with QE/CI.
    • The ATI 3870 is a really bad example of how narrow the OS X hardware compatibility path can be…
    • it’s still a very beefy card by any means…
    • and there are actually Mac specific 3870’s that obviously work fine
    • but the run of the mill PC-only ATI 3870 is an absolute no go
    • many have tried… best explanation I’ve read is that the PC version’s ROM space is 64k vs. 128k in the Mac version.
  • The funny thing is, I notice no difference between the ATI X1300 and the ATI 3870 for my actual usage…
    • I found this X1300 card on eBay for only $31!!
    • And it works like a champ in both OS X and Win 7 (obviously I’m not a gamer 🙂
    • Full QE/CI does indeed work in OSX with no mouse tearing or any other known downsides
    • Aero runs perfectly in Win 7
    • AVI, MOV, MKV videos play great in VLC on both sides
    • It’s fanless (literally silent)
    • I’m kicking myself for going with the noisy, expensive ATI 3870 in the first place! Boy was I wrong about my video hardware requirements.
    • [Update: 30 Jun 2010] Ok so Photoshop CS5 is way cool (try the new “Refine Edge” button under the Quick Selection Tool, they’ve amazingly solved the classic carving-out-hair-from-a-background problem) … anyway, PS CS5 barked at me about a few things it wasn’t going to manage in 3D mode with the AT X1300… and some other motions were a little more pokey than i’d like… so there is some reason to miss my beefier card.
    • [Update: 14 Jul 2010] Loaded the latest ATI drivers (duh) and Photoshop CS5 was then happy with all the OpenGL bits it was previously missing… so the little ATI x1300 really is all I need. [Upate: 28 Oct 2010] Actually, enabling hardware acceleration in Photoshop wasn’t quite as easy as I originally thought.
    • [Update: 01 Feb 2011] Photoshop CS5 on the Mac side has no such issues recognizing this card.
    • [Update: 12 Aug 2011] CS5 under Win7 64bit behaved properly straight away.
  • My main objective was iMovie which requires QE/CI.
  • Twin DVI displays are functioning at full resolution (see SwitchResX comments below).  My x1300 has a “DMS-59” connector which is split into two standard independent DVI connectors via a Y-cable.  Primary DVI is connected to my LCD and the secondary DVI is adapted to HDMI for my projector.
    • for some cazy reason the settings for each display were flipped!?! the projector thought it was the LCD and vice versa… nothing helped…
    • so i used SwitchResX to copy the low level settings from each display and apply them to the other… amazingly that worked great… i can’t change resolutions very conveniently, but i don’t care to anyway.
  • One soon realizes the key to this silly game is rapid reboots… eliminate everything that delays seeing the result of another attempt… because you have to be ready for a TON of trial and error here… SSD’s help!! 🙂
  • ***Crucial** – Make sure to have something like MacDrive at the ready (see “Handy Utils” below)… one often needs to back out an errant configuration change… accessing your Mac’s system drive from a running Windows environment is one convenient way… make sure to type in “-f” when Chameleon comes up to ignore the previously built kext cache and rebuild based on currently present kexts.
  • I liked the BootCD based guide at: http://tonymacx86.blogspot.com/2009/12/install-os-x-snow-leopard-directly-from.html
  • [Update: 29 Oct 2010] TonyMac has been busy… these are the latest recommended guides for streamlined install and the iBoot
    • but I sure am glad I saved my old iBoot-ATI-10 image!!!

the new iBoots are running on recent builds of a branch of Chameleon 2.0 RC5 called “Chimera”… see my RC5 notes above, we need to hack our legacy bits back in to even get booted into iBoot/Chameleon now… so it’s nice to still have an old iBoot handy that “just works” in a pinch

  • This is also a really good no-nonsense run through of all the pertinent points.
    • Noteworthy: SL has a new mkext location, different from Leopard.
  • Handy Utils:

    • 0xED (Mac) – Is your friend when it comes to making the necessary HEX code changes to .kext files (aka “binary or bin editing”)
    • Cygnus Hex Editor (Win) – This is what I use for bin editing under Windows, anything will do.  In Cygnus, make sure you remember to turn off “insert” mode when twiddling bytes… inserting a byte is way different than changing one 🙂
    • plist Editor (Win)– Windows doesn’t have a native xml value editor like Mac for editing files like info.plist’s… this one is free. But again, pretty much anything will do for these minimal edits, including good ol’ notepad.
    • Kext Helper b7 (Mac) – Good stuff, but hangs up on me after it’s done, it doesn’t quit cleanly, always had to “force quit”… anybody know a more stable alternative???
    • Console (Mac) – find under Applications > Utility 
      • Select the “System.log” – my experience was that Snow Leo would immediately attempt to load new .kexts as soon as they were installed by Kext Helper… reboots still seem necessary to realize the full effect of a new kext… but by watching the system.log, I got immediate feedback if the kexts just installed ran into some kind of error… i.e. you save on some reboots, crucial to this process!!… e.g. “kernel type blah blah” message immediately made me realize I was in 64bit kernel mode and some kexts I was toying with (ATIInject perhaps) were apparently 32bit only.
      • SwitchResX (Mac) – This is what allowed me to get my dual display settings working… see notes under AT1300Controller.kext above
      • Paragon NTFS – only NTFS solution I’ve found so far to work under Lion… unfortunately it’s not free but $20 is very reasonable
      • SL-NTFS – NTFSMounter wasn’t cooperating for me any more under v10.6.8… SL-NTFS is slightly slicker with a prefpane and most importantly, it worked 🙂 Rats, the guy supporting SL-NTFS stopped as of 10.6.8
      • NTFSMounter (Mac) – SL finally has the native ability to WRITE to NTFS. It’s disabled by default (not the most confidence inspiring 😉  I have gotten a few CHKDSK pops when rebooting into Windows 7 after writing to the Windows main system drive but there were never any actual issues in the output… over time I’ve settled comfortably into writing to non-system NTFS drives from OSX or simply waiting ‘til I boot back into Windows and copying pending files over from my HFS drive via MacDrive.
      • MacDrive (Win) – This is great.  Perfectly clean access to your Mac drives from Windows.
      • DSDT Patcher GUI (Mac) – I generated my DSDT.aml and dropped it in the root folder of my Mac system drive… this seemed to eliminate an “AppleUSBUHCI” error I’d see in the flurry of messages during verbose boot.

        Unrelated:

        For my own reference… to see drives connected to the mobo’s Intel Matrix RAID controller (ICH9R) under RAID mode:

        • AppleAHCIPort.kext > info.plist > IOPCIPrimaryMatch: replace 0x3A228086 with ox28228086

        Note: as has been well documented, there are no drivers currently (nor planned??) which fully support the Intel Matrix RAID functionality (aka Intel “Rapid Storage Technology”) under OSX.  However, non RAID –and- RAID 1 volumes connected in to this controller in RAID mode do work just fine (with this little coaxing)… you obviously only want to access your RAID 1 drives in read-only mode since the Mac simply sees them as two distinct drives and any writes to either drive would immediately invalidate the mirror, perhaps to dire consequences.
        [Update: 2011 July 26] I finally went with a cheap HighPoint RAID1 card that has Mac as well as windows drivers… I love it!!