Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VoodooI2CHID Doesn't Load After Update #125

Closed
Andrw0830 opened this issue Oct 24, 2018 · 19 comments
Closed

VoodooI2CHID Doesn't Load After Update #125

Andrw0830 opened this issue Oct 24, 2018 · 19 comments

Comments

@Andrw0830
Copy link

Anytime I install an OS Update, after booting up the system, the VoodooI2CHID.kext doesn't load and I have to rebuild kext cache with Kext Utility. I have both VoodooI2C.kext and VoodooI2CHID.kext in EFI/Clover/kexts/Other. With kextstat, it does show VoodooI2C.kext load during the first boot, but the other kext does not. This has happened with the last few releases of VoodooI2C I've tried and don't have the issue with VoodooPS2Controller. I am using 10.14 on a Dell Inspiron 7567.

Let me know if you need anything else.

@alexandred
Copy link
Collaborator

Can you provide a troubleshooting archive for when VoodooI2CHID.kext doesn't load?

@Andrw0830
Copy link
Author

Sorry for not getting back sooner. What will you need for the troubleshooting archive? Is there a command I can run? Do you need my Clover package? Please let me know.

@alexandred
Copy link
Collaborator

@Andrw0830
Copy link
Author

Here is my attached files per your link. The IORegistry is when VoodooI2C is working so let me know if you need one when it doesn't work as will have to wait for the next update to do so.

Archive.zip

@Andrw0830
Copy link
Author

OK I was able to get an update and here is the files when VoodooI2C doesn't work.

Archive_update.zip

@alexandred
Copy link
Collaborator

Does this issue still occur if VoodooI2C and the satellites are installed in /L/E (with the appropriate Clover patch of course).

@Andrw0830
Copy link
Author

Hey man sorry about the delay, yep that worked! Is there a way to make it work without keeping it in /L/E similar to how VoodooPS2Controller works? I know if I ever have to boot into Recovery or reinstall Mac OSX, the same issue will happen.

@darkhandz
Copy link

@Andrw0830 same situation as you

@stevezhengshiqi
Copy link
Contributor

stevezhengshiqi commented Feb 8, 2019

After some tests, I think I find a workaround for this issue.
From the log given by @Andrw0830, we can see
Kext com.alexandred.VoodooI2CHID - library kext com.apple.iokit.IOGraphicsFamily not found.

So I add the following code in config.plist to force loading IOGraphicsFamily:

<key>ForceKextsToLoad</key>
		<array>
			<string>\System\Library\Extensions\IOGraphicsFamily.kext</string>
		</array>

under <key>KernelAndKextPatches</key>

It works on my device, not sure for other people's. It is still recommended to rebuild kextcache after update to let the kext automatically load.

@darkhandz
Copy link

@stevezhengshiqi How did you test it? I add IOGraphicsFamily item to ForceKextsToLoad, then reboot into Recovery mode, touchpad still not work.

@stevezhengshiqi
Copy link
Contributor

stevezhengshiqi commented Feb 9, 2019

@darkhandz I installed a fresh new system to see whether it works. Recovery mode is not tested, maybe it works in a different mechanism.
What I have tested is Mojave 10.14.3. At the language choose page, the trackpad is working with the patch; without the patch, the trackpad fails to load. No need to rebuild the kextcache, which is still recommended.

@darkhandz
Copy link

@stevezhengshiqi I'll try it when next beta update available. 😀

@Andrw0830
Copy link
Author

Hey @stevezhengshiqi great find! I will test that too during the next update

@Mateo1234454545
Copy link

After some tests, I think I find a workaround for this issue.
From the log given by @Andrw0830, we can see
Kext com.alexandred.VoodooI2CHID - library kext com.apple.iokit.IOGraphicsFamily not found.

So I add the following code in config.plist to force loading IOGraphicsFamily:

<key>ForceKextsToLoad</key>
		<array>
			<string>\System\Library\Extensions\IOGraphicsFamily.kext</string>
		</array>

under <key>KernelAndKextPatches</key>

It works on my device, not sure for other people's. It is still recommended to rebuild kextcache after update to let the kext automatically load.

Working great !! Even on clean install and recovery environment.

@Andrw0830
Copy link
Author

After some tests, I think I find a workaround for this issue.
From the log given by @Andrw0830, we can see
Kext com.alexandred.VoodooI2CHID - library kext com.apple.iokit.IOGraphicsFamily not found.
So I add the following code in config.plist to force loading IOGraphicsFamily:

<key>ForceKextsToLoad</key>
		<array>
			<string>\System\Library\Extensions\IOGraphicsFamily.kext</string>
		</array>

under <key>KernelAndKextPatches</key>
It works on my device, not sure for other people's. It is still recommended to rebuild kextcache after update to let the kext automatically load.

Working great !! Even on clean install and recovery environment.

It's weird I tried this by adding the ForeKextsToLoad under 'KernelandKextsPatches' and VoodooI2C and VoodooI2CHID is now in /Clover/kexts/Other, but recovery partition didn't make it work. Is your InjectKexts on Yes or Detect? Mine is Detect so wonder if the Recovery partition is just not thinking it's needed to be injected.

@Andrw0830
Copy link
Author

After some tests, I think I find a workaround for this issue.
From the log given by @Andrw0830, we can see
Kext com.alexandred.VoodooI2CHID - library kext com.apple.iokit.IOGraphicsFamily not found.
So I add the following code in config.plist to force loading IOGraphicsFamily:

<key>ForceKextsToLoad</key>
		<array>
			<string>\System\Library\Extensions\IOGraphicsFamily.kext</string>
		</array>

under <key>KernelAndKextPatches</key>
It works on my device, not sure for other people's. It is still recommended to rebuild kextcache after update to let the kext automatically load.

Working great !! Even on clean install and recovery environment.

It's weird I tried this by adding the ForeKextsToLoad under 'KernelandKextsPatches' and VoodooI2C and VoodooI2CHID is now in /Clover/kexts/Other, but recovery partition didn't make it work. Is your InjectKexts on Yes or Detect? Mine is Detect so wonder if the Recovery partition is just not thinking it's needed to be injected.

I think rec mode may not allow injecting iographicfamily because it actually don't load in rec mode.

That must be it. I just did the 10.14.3 supplement update and VoodooI2CHID did load and the trackpad worked. Thanks everyone for the suggestion!

@Andrw0830
Copy link
Author

Hey everyone, I was wondering if anyone found a solution to using VoodooI2C if you need to boot up in recovery mode or have to reinstall Mac using a USB Installer? With the solution to force IOGraphicsFamily to load, doesn't seem to work in recovery or a USB installer. I read that VoodooI2CHID supports both polling and interrupts mode. According to the documentation, polling should be used when booting in recovery. If we are already patched for the GPIO Interrupts method, would that be why the touchpad doesn't work in recovery and is there a solution without reverting the patches we applied to get GPIO working for the times we do need to boot in recovery? Basically if VoodooI2C can automatically enable Polling for times when it knows you are booting in recovery and use GPIO Interrupts when booting normally, not sure if that's possible? Just wanted to ask if anyone has gotten VoodooI2C working in both recovery and when booting normally?

Let me know if you need anything else?

@gongzhenjeef
Copy link

Hey everyone, I was wondering if anyone found a solution to using VoodooI2C if you need to boot up in recovery mode or have to reinstall Mac using a USB Installer? With the solution to force IOGraphicsFamily to load, doesn't seem to work in recovery or a USB installer. I read that VoodooI2CHID supports both polling and interrupts mode. According to the documentation, polling should be used when booting in recovery. If we are already patched for the GPIO Interrupts method, would that be why the touchpad doesn't work in recovery and is there a solution without reverting the patches we applied to get GPIO working for the times we do need to boot in recovery? Basically if VoodooI2C can automatically enable Polling for times when it knows you are booting in recovery and use GPIO Interrupts when booting normally, not sure if that's possible? Just wanted to ask if anyone has gotten VoodooI2C working in both recovery and when booting normally?

Let me know if you need anything else?

I think VoodooI2C actually load flawlessly. If you checked the IOReg, you will find nothing's attached to VoodooI2C. The point we discussed is that the dependency of VoodooI2C HID, IOGraphicsFamily, not present in recovery and also the first boot after update. Since the kextcache is rebuilt at that time, and VoodooI2CHID are loaded by bootloader before that.

If we track the commits regarding IOGraphicsFamily, this dependency is introduced with auto rotation feature. IMHO, maybe separate VoodooI2CSensors into a satellite kext and have that dependency moved there could solved this issue?

@ghost
Copy link

ghost commented Aug 30, 2019

After some tests, I think I find a workaround for this issue.
From the log given by @Andrw0830, we can see
Kext com.alexandred.VoodooI2CHID - library kext com.apple.iokit.IOGraphicsFamily not found.

So I add the following code in config.plist to force loading IOGraphicsFamily:

<key>ForceKextsToLoad</key>
		<array>
			<string>\System\Library\Extensions\IOGraphicsFamily.kext</string>
		</array>

under <key>KernelAndKextPatches</key>

It works on my device, not sure for other people's. It is still recommended to rebuild kextcache after update to let the kext automatically load.

This works for me as well (tested on Catalina Beta 7)! Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants