Jump to content

[GUIDE] Catalina, Big Sur, Monterey, Ventura, Sonoma on HP EliteDesk 800 G4/G5 Mini - The perfect MacMini8,1 Hackintosh


deeveedee
873 posts in this topic

Recommended Posts

For those who want a low-cost HackMini while waiting for Apple Silicon macs to mature and for used AS mac prices to drop, I've noticed that used EliteDesk 800 G4 and G5 Mini prices are dropping fast.  While I prefer the G5 Mini for its 9th gen processor support, the G4 Mini with an i7-8700 is getting very cheap.  We all have our own preferences for technology and how we spend our money.  For those who are trying to maximize the return on their minimal investment during the finite number of years remaining for Intel hacks, a used G4 Mini with i7-8700 or i5-8600) can be found at some amazingly low prices.

  • Thanks 1
Link to comment
Share on other sites

@deeveedee That's absolutely correct! Yesterday I purchased HP G4 Mini i5 8500T , 16 GB DDR4 , 256 GB NVME , WIFI for just 250$. Fair condition, will be working for years under MacOS :) Probably twice cheaper than Mac Mini 2018 with similar performance.

Edited by Jazzoo
  • Like 1
Link to comment
Share on other sites

1 hour ago, MacKonsti said:

But only in the US... don't forget to mention always the region, please... you are making us eager to buy and then get disappointed with EU pricing 😆😅

 

Sorry, you are right. It is in US. EU prices are higher. Although it is not impossible to find one of these units for a good price. My ProDesk form the signature cost me around 250 Euro couple of months ago. Elitedesk's are more expensive. I am currently in Bulgaria and here DM systems are not so popular. Domestic market is full of SFF and MT computers and most of the time people will go for an old Mac Mini 2014 instead of EliteDesk G4/G5 for the same price.

  • Like 1
Link to comment
Share on other sites

@MacKonsti You are definitely correct by saying that price varies by geography.  As @Jazzoo has confirmed, the solution posted in this thread works for the less expensive ProDesk  G4 and G5 Minis.  While I haven't covered it in this thread, another inexpensive hacking option is the EliteDesk 800 G3 Mini which supports 7th gen Kabylake CPUs.  I helped someone here with their G3 Mini solution.  As far as I know, the only capability not working on the G3 Mini is wake from sleep.  Maybe by now, someone has solved this - not sure.  Note that the EFI in this thread is not suitable for the G3 Mini, but all of the hacking techniques in this thread apply as evidenced by the working solution here.

Edited by deeveedee
  • Like 1
Link to comment
Share on other sites

On 6/16/2022 at 8:36 PM, rafale77 said:

2. Use the backup function of Disk Utility from the os source drive to the newly formatted drive.

 

@rafale77 I didn't find any evidence of a "backup" function in DiskUtility, but I see that there is a Restore function.  I haven't tried it, but it appears that from within DiskUtility, we can select the destination disk in DiskUtility and click "Restore."  When prompted, select the source disk to restore from.  Apparently, Diskutility makes an exact duplicate of the source disk to the destination disk (performing the erase and unmounting as required).  I imagine that with the resulting identical disks, we would then manually modify one of the disk names so that they appear uniquely in the OC boot picker.  Is the DiskUtility "Restore" function what you used to perform your disk clones?

  • Like 1
Link to comment
Share on other sites

@deeveedee, Now that I am in front of my hack, I don't need to do it by memory:

See the screenshot below: I have formatted my second SSD in GPT already and am using it as a storage partition, thus the name. If it is freshly formatted, it would likely be untitled. 

 

1022001936_ScreenShot2022-06-18at08_01_30.thumb.png.6f33eb91fdfac4821df9df404b14c994.png

 

It is indeed the restore function I use after selecting the newly formatted partition from the menu on the left. You will find that you can even select a TimeMachine partition as a source.

Formatting with GPT partitioning creates the boot sector and the EFI partition. You then only have to "clone" the active OS partition into the destination drives new partition and copy over the content of the EFI.

  • Thanks 2
Link to comment
Share on other sites

I have confirmed that @miliuco 's suggested --preserve-boot argument that I mentioned here does allow us to Reset NVRAM without losing the configured BIOS boot order.  I have added this argument to the attached config.plist (UEFI > Drivers > Item 3).  Note also that the attached config.plist does not have the additional run-efi-updater entries that I mentioned here.  I believe that this thread has concluded that the additional run-efi-updater entries are not necessary for installing macOS Ventura.

config.plist.zip

  • Like 3
  • Thanks 2
Link to comment
Share on other sites

  • 2 weeks later...

Thank you @sfritz for identifying a sleep issue here with the EliteDesk 800 G4 Mini when using my latest EFI attached to Post #1.  I will update this post when the problem is resolved.

 

EDIT: I am able to reproduce this sleep problem on an EliteDesk 800 G4 Mini 65W with only a SATA SSD (no NVMe SSD) running macOS Monterey 12.4 (booting with OC 0.79, 0.8.0 and 0.8.1).  I have not observed this sleep problem on an EliteDesk 800 G5 Mini with NVMe SSD as primary volume.

Edited by deeveedee
  • Like 2
Link to comment
Share on other sites

EDIT: For those who are experiencing sleep problems, please try removing boot-arg igfxfw=2 and report your findings (NVRAM > Add > 7C436110-AB2A-4BBB-A880-FE41995C9F82 > boot-args in your config.plist).

 

===========================================

 

For those who are following the sleep issue reported by @sfritz related to installing MacOS on a SATA SSD, I have found that I need to revert to OC 0.7.5 in order to have sleep/wake work reliably and repeatedly over multiple cycles.  I will continue to post incremental testing updates in this thread.  You can see my OC 0.7.5 test results (with Catalina) here.  For anyone who wants to help, my brain and eyes are fried.  If you have time to review the EFI changes between my OC 0.7.5 EFI attached here and OC 0.8.1 EFI attached here, it would be very helpful.  Something has changed in my edits or in OC that has broken sleep when MacOS is installed on a SATA SSD.  I have never observed any sleep issues when MacOS is installed on one of the supported/recommended NVMe SSDs.  This sleep issue appears to occur only when MacOS is installed/running on a SATA SSD.

 

Note that my OC 0.7.5 EFI posted here and my OC 0.8.1 EFI posted here include change documents for revision history.

 

Below are the changes that I made when upgrading from OC 0.7.5 to OC 0.7.6.  Since it appears that sleep broke with my OC 0.7.6 EFI, this change log might offer some clues.

 

OC 0.7.6 EFI R002

  • EFI/OC/config.plist
    • DeviceProperties > PciRoot(0x0)/Pci(0x2,0x0) > framebuffer-conX-type: change from DVI (<04000000>) to HDMI (<00080000>) to enable DP->DVI adapters in Monterey and Big Sur

 

OC 0.7.6 EFI R001

  • EFI/BOOT: Update BOOTx64.efi
  • EFI/OC: Update OpenCore.efi
  • EFI/OC/Drivers: Update OpenRuntime.efi, AudioDxe.efi
  • EFI/OC/Kexts
    • Update AppleALC.kext 1.6.6 -> 1.6.7
    • Update VirtualSMC.kext 1.2.7 -> 1.2.8
    • Update Lilu.kext 1.5.7 -> 1.5.8
  • EFI/OC/Tools: Update tools
  • EFI/OC/config.plist
    • Add NVRAM > Add > 7C436110-AB2A-4BBB-A880-FE41995C9F82 > boot-args > igfxfw=2 (for Apple's Intel GUC Firmware)
    • Remove NVRAM > Add > 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 > UIScale (moved to UEFI > Quirks)
    • Add UEFI > Output > ReconnectGraphicsOnConnect (Boolean, False)
    • Add Add UEFI > Output > UIScale (Integer, 0)
    • Add UEFI > Quirks > EnableVmx (Boolean, False)

 

Here are the documented Open Core 0.7.6 changes from OC 0.7.5

  • Fixed stack canary support when compiling with GCC
  • Added automatic scaling factor detection
  • Explicitly restricted ResizeAppleGpuBars to 0 and -1
  • Fixed OpenCanopy long labels fade-out over graphics background
  • Fixed ProvideConsoleGop not disabling blit-only modes (e.g. on Z690)
  • Fixed Alder Lake SMBIOS CPU model information
  • Added XCPM CPU power management ACPI table for Intel Alder Lake
  • Updated draw order to avoid graphics tearing in OpenCanopy
  • Fixed handling PCI device paths with logical units in ScanPolicy
  • Added ReconnectGraphicsOnConnect option for enabling alternative UEFI graphics drivers
  • Added BiosVideo.efi driver to use with ReconnectGraphicsOnConnect
  • Changed FadtEnableReset to avoid unreliable keyboard controller reset
  • Added EnableVmx quirk to allow virtualization in other OS on some Macs
  • Upgraded ProtectUefiServices to prevent GRUB shim overwriting service pointers when chainloading with Secure Boot enabled
  • Removed deprecated SSDT-PNLFCFL
  • Fixed handling of zero-sized Memory Attributes Table
Edited by deeveedee
Link to comment
Share on other sites

I have confirmed that the EliteDesk 800 G4 Mini sleep problem reported by @sfritz was caused by boot-arg igfxfw=2 (boot-arg to load updated UHD 630 firmware).  See more details below for why this boot-arg would cause sleep issues when booting MacOS from SATA SSD.  Since the graphics performance improvement with this boot-arg is marginal, I will be removing this boot-arg from future EFIs.  Attached is an updated OC 0.8.1 EFI with the changes below.  I apologize to anyone who experienced sleep or any other problems that I introduced by including this boot-arg starting with my EFI for OC 0.7.6.

 

OC 0.8.1 EFI R004

  • EFI/OC/config.plist:
    • Changed UEFI > APFS > MinDate/MinVersion to -1 (to allow booting all supported versions of macOS)
    • Removed boot-arg igfxfw=2 after finding that it caused sleep issues on HP EliteDesk 800 G4 Mini booting from SATA SSD
    • Added argument --preserve-boot to ResetNvramEntry.efi driver (UEFI > Drivers)

 

As of this writing, this OC 0.8.1 r004 EFI is now my baseline attached to Post #1.

 

 

Note that you will need to enable Kernel > Quirks > ThirdPartyDrives if you are booting/running MacOS from a SATA SSD (not an NVMe SSD)

 

 

EDIT: See another possible solution here.  FredWst's work-around suggests why this bug was so hard to find and reproduce - it is purely a timing issue.  For some reason,  igfxfw=2 may causes our hacks to sleep before the sleep state is fully prepared.  Since this issue appears to happen with some SSDs (e.g, SATA SSD) and not others (e.g., NVMe SSDs), it seems that storage access times are part of the problem.  My guess is that a work-around that adds a delay in _PTS may work for some SSDs but not for others (depending on their read/write speeds / latency).  If you do experiment with adding a delay to _PTS, I would recommend you make your delay conditional on Arg0 == 0x03 (when your hack is going to sleep) so that you are not introducing a delay for other _PTS conditions (like shutdown).

 

 

OC0.8.1-EFI-r004.zip

Edited by deeveedee
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

For those who want to experiment with MacOS Ventura, I'm attaching my EFI for OC 0.8.2. I will not be replacing the OC 0.8.1 EFI attached to Post #1 with this OC 0.8.2 EFI, since the OC 0.8.2 changes relevant to us are only for Ventura and I'd like to give OC 0.8.2 some public testing time before adopting it as my baseline.  The changes to this EFI (from my OC 0.8.1 r004 EFI) are as follows:

 

OC 0.8.2 EFI R001 changes from OC 0.8.2 EFI R004

  • EFI/BOOT: Update BOOTx64.efi
  • EFI/OC: Update OpenCore.efi
  • EFI/OC/Drivers: Update OpenRuntime.efi, AudioDxe.efi, ResetNvramEntry.efi
  • EFI/OC/Kexts:
    • Update Lilu.kext 1.6.0 -> 1.6.1
    • Update AppleALC.kext 1.7.2 -> 1.7.3
    • Update WhateverGreen.kext 1.5.9 -> 1.6.0
    • Update VirtualSMC.kext 1.2.9 -> 1.3.0
    • Update NVMeFix.kext 1.0.9 -> 1.1.0
  • EFI/OC/Tools: Update tools

OC0.8.2-EFI-r001.zip

Edited by deeveedee
  • Like 2
Link to comment
Share on other sites

For those who want to help figure out why the addition of boot-arg igfxfw=2 causes intermittent sleep problems, I have started a new thread here.  This new thread is intended for more advanced users (or for those who want to become more advanced).  If you're happy to turn on your hack and use it without really understanding how we have hacked it, this other thread is probably not for you.  If you do want to learn and you like exploring the technical aspects of our hacks, this thread might be of interest to you.

Link to comment
Share on other sites

22 hours ago, deeveedee said:

Since the graphics performance improvement with this boot-arg is marginal, I will be removing this boot-arg from future EFIs.

 

Hi mate @deeveedee I am following your developments and tips from time to time and wanted to contribute my 2 cents.

 

Regarding igfxfw=2 it was advised to stop using it, recently, by the WhateverGreen developer himself. I found his quote when also investigating the impact (or not) on my Intel NUCs.

 

Despite not mentioning any sleep-related issues, he wrote this here:

 

Quote

vit9696 commented on 9-13 Aug 2020
In the modern WhateverGreen igfxfw=2 is not benefitial, as host scheduler performance is fixed (by default). Closing this [ticket].

 

[...]

 

WEG 1.4.1 got new IGPU performance control support, which you can disable igfxnorspc=1, this is documented.

 

[...]

 

I am afraid there is some level of confusion here.

1. Apple GuC, enabled exclusively by igfxfw=2 boot argument and disabled by default is bugged, and will eventually lead to IGPU locking at high frequency. This thing is not planned to be investigated or fixed.
2. CPU scheduling performance was fixed by WEG 1.4.0 allowing the IGPU frequency to reach high values without GuC. This is enabled by default and can be disabled by igfxnorspc=1. We believe it works correctly.
3. Without igfxfw=2 and with igfxnorspc=1 WEG 1.4.1 should also work correctly, but the IGPU will not be able to reach high frequencies.
If you believe that anything of the three does not hold, please provide more detail.

 

Since I had found this comment some time ago, I also dropped using this boot argument... Just FYI.

 

P.S. Thanks for the tip on argument --preserve-boot to ResetNvramEntry.efi it was really helpful, I had missed that.

 

P.S. I see you replied before I was able to post my message :D

 

Cheers

 

Edited by MacKonsti
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Happy I could help, really. Shame, if I had posted this before I had my dinner, I could have saved you the trouble of creating that other thread, LOL :D

But as vit9696 wrote "Apple GuC, enabled exclusively by igfxfw=2 boot argument and disabled by default is bugged, and will eventually lead to IGPU locking at high frequency." so once I read this last year, I dropped the boot-argument completely.

Shame he or the other developers that have access to the WhateverGreen official GitHub page don't mention this, it is very useful information hidden in some bug ticket reply!

  • Haha 1
Link to comment
Share on other sites

image.png.4e0efaf785a7bc703fdb78a6a2d8d77a.png

 

I would be very careful with the WEG documentation and looking up support threads. As an example, it is not "igfxnorspc" but "igfxnorpsc". You can also see above that this code has been deprecated and has been replaced. It is no longer enabled by default so one needs to enable it using igfxrpsc=1.

I have not looked it up yet but it is also possible that the igfxfw=2 commentary quoted could be outdated. I myself have been using it and remember observing small but significant performance improvement last year... much later than WEG 1.4.1. I would need to test it again. I also note that a lot of people are using it on various configurations from my observations on github, reddit and other forums without issues (though there were some initially). I myself have not seen this "stuck at high frequency" iGPU bug.

 

Edited by rafale77
  • Thanks 1
Link to comment
Share on other sites

@rafale77 - So the plot thickens.  Would you mind reposting your 'warning' here? If we focus the igfxfw=2 discussion to this dedicated thread, maybe we'll get to the bottom of this.  Thanks!

Edited by deeveedee
Link to comment
Share on other sites

It's been a couple of years but I remember having my UHD-630 frequency capped at 350MHz when WhatEverGreen was used. But once the igfxfw=2 was added to WhatEverGreen, it made huge difference. For the same clip that took 3mins to export in FCPX only to took 55 sec to export once Apple GuC firmware was loaded. 

 

After reading the posts here I did some testing again with the latest whatevergreen kext thinking may be it's not needed anymore but that's not the case as you can see from the screenshot below.  My 9700K UHD-630 still needs igfxfw or rps-control on Z390 chipset to reach its maximum frequency as it works with either variables.

Spoiler

image.thumb.png.22c47b61c7b5344f88f15cf4fde67c2e.png

 

I think 370 chipsets are known to cause issues with igfxfw. For your case, I believe it's more suitable to use rps-control.

 

 

 

Edited by FirstTimeCustomac
  • Thanks 1
Link to comment
Share on other sites

I have provided a proposed fix for the igfxfw=2 sleep problem here.  It would help me if others could test this fix and report your test results (report your results in the other thread).  For those who need the fix, this fix should resolve your sleep issues when using igfxfw=2 boot-arg.  For those who don't need this fix, you should not notice any difference in your hack's behavior / performance.  Please report your test results and make related comments in the other thread (let's not clutter this thread with igfxfw=2 testing).  Thank you

Edited by deeveedee
Link to comment
Share on other sites

I used EFI OC 0.8.1-EFI-r004.zip.
Everything works great, the only problem is the sound.
The sound only works in the PC, and I have speakers in the monitor, but they do not work with this EFI. Something is obviously missing.
The connection between the PC and the monitor is with a Displayport cable.
I am attaching a picture of what is missing, marked in blue (Q27q-1l)
 

 

Greetings from Slovenia.

Screenshot 2022-07-07 at 13.48.42.zip

Edited by luky35
Link to comment
Share on other sites

@luky35 Glad this thread has helped you.  Please post your EFI when requesting help.  Before uploading your EFI to a public forum like this, remove MLB, ROM, Serial and UUID from PlatformInfo > Generic in your config.plist.

 

Without seeing your EFI/config.plist, I'm guessing that you still have No-hda-gfx in your audio DeviceProperties.  Read known issues here and search for "No-hda-gfx"

 

You will also find information about No-hda-gfx in the installation instructions here.

 

If that doesn't fix your issue, please post the following:

  • Your sanitized EFI
  • Specify your graphics port types on both your EliteDesk 800 G4/G5 and on your displays.  Specify whether you are using any graphics adapters (e.g. DP->HDMI).
Edited by deeveedee
Link to comment
Share on other sites

18 minutes ago, deeveedee said:

@luky35 Glad this thread has helped you.  Please post your EFI when requesting help.  Before uploading your EFI to a public forum like this, remove MLB, ROM, Serial and UUID from PlatformInfo > Generic in your config.plist.

 

Without seeing your EFI/config.plist, I'm guessing that you still have No-hda-gfx in your audio DeviceProperties.  Read known issues here and search for "No-hda-gfx"

 

You will also find information about No-hda-gfx in the installation instructions here.

 

If that doesn't fix your issue, please post the following:

  • Your sanitized EFI
  • Specify your graphics port types on both your EliteDesk 800 G4/G5 and on your displays.  Specify whether you are using any graphics adapters (e.g. DP->HDMI).

Thanks for your advice, but I don't know how to edit this in plist or EFI folder.
The EFI I am attaching is yours and works OK for me, except it uses the internal speaker in the PC and not the speaker on the monitor. That's just the problem.

My connection between PC --> Displayport --> HDMI -->Monitor is with a cable.

I will be very happy if you can help me.

Greetings,

EFI.zip

Link to comment
Share on other sites

@luky35  This will be a good learning opportunity for you.  You need to learn how to use a plist editor to customize the config.plist in the EFI that I posted.  I use XCode to edit my config.plist and others have their own plist editor preference.  Carefully follow the instructions here and be patient with your own learning.  It is very important for you to add your own MLB, ROM, SystemSerialNumber and SystemUUID to your config.plist (located in EFI/OC/config.plist) and it is important for you to define your own DeviceProperties (in config.plist) for audio and graphics (which are different from my graphics which use DP->DVI adapters).  Again, carefully read the instructions here and be patient with your learning.  When you have successfully completed your own config.plist edits and tested your customized EFI, please post your test results and questions.

Link to comment
Share on other sites

×
×
  • Create New...