Skip to content

A Lilu plugin intended to fix hibernation compatibility issues

License

Notifications You must be signed in to change notification settings

bud951/HibernationFixup

 
 

Repository files navigation

HibernationFixup

Build Status Scan Status

An open source kernel extension providing a sync between RTC variables and NVRAM. By design the mach kernel encrypts hibernate sleepimage and writes the encryption key to variable "IOHibernateRTCVariables" in the system registry (PMRootDomain). Somehow this value has to be written into RTC (or SMC) in order the boot.efi could read it. But in case if you have to limit your RTC memory to 1 bank (128 bytes), it doesn't work: there are no any variables in SMC/NVRAM/RTC (actually FakeSMC).

Fortunately, boot.efi can read key "IOHibernateRTCVariables" from NVRAM! This kext detects entering into "hibernate" power state, reads variable IOHibernateRTCVariables from the system registry and writes it to NVRAM.

Features

  • Enables 'native' hibernation on PC's with hardware NVRAM on 10.10.5 and later. 'Native' means hibernation with encryption (standard hibernate modes 3 & 25)
  • Enables dumping NVRAM to file /nvram.plist before hibernation or panic

Boot-args

  • -hbfx-dump-nvram saves NVRAM to a file nvram.plist before hibernation and after kernel panic (with panic info)
  • -hbfx-disable-patch-pci disables patching of IOPCIFamily (this patch helps to avoid hang & black screen after resume (restoreMachineState won't be called for all devices)
  • hbfx-patch-pci=XHC,IMEI,IGPU allows to specify explicit device list and restoreMachineState won't be called only for these devices)
  • -hbfxdbg turns on debugging output
  • -hbfxbeta enables loading on unsupported osx
  • -hbfxoff disables kext loading

Dependencies

Credits

About

A Lilu plugin intended to fix hibernation compatibility issues

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 88.6%
  • C 11.4%