Jump to content

RMISMBus.kext Not Being Loaded


25 posts in this topic

Recommended Posts

I’ve got a Qosmio X775 laptop running macOS Sierra, and I'm trying to get my Synaptics SMBus trackpad working nicely with @1Revenger1's VoodooRMI kext. However, it appears that OpenCore refuses to load RMISMBus.kext according to the preboot log. Not sure if I configured something wrong or if the kext has a coding error?

 

I’d really appreciate it if someone could evaluate my EFI folder for me (download it here). At the moment (without RMISMBus), my trackpad seems to work, but it’s kinda choppy when making gestures (it looks like VoodooRMI doesn't show up in ioreg). I can make multitouch gestures, but the window animation speed seems to take the average of all of my fingers. After making a gesture I have to switch to one finger to make the gesture smooth. Finally, I feel like I should mention that I'm using VoodooRMI with RMII2C on my Alienware Area 51M R2, and it works perfectly so I'm confident with @1Revenger1's work.

 

As a side-note, I’m not sure if this is related, but I wrote a kernel patch that helps me get native power management working on my system. OpenCore for some reason appears to not patch the kernel for me in macOS High Sierra and above. I’ve tried manually patching the kext myself. Although it breaks the kext’s signature, the patch works. I can see that the patched kext gets loaded according to ioreg and the Extensions tab within System Information. Idk what’s going on, but I'm thinking that I should mention this.

 

SynapticsSMBusDeviceManager.png.1ac7d5c1b0390970424c6181f1ad4cd6.png

 

TrackpadIC.thumb.jpg.39d2f3bc3610a73785994475efeeee96.jpg

Link to comment
Share on other sites

Does VoodooSMBus load and attach? I'm guessing there is a discrepancy somewhere with the minimum macOS version allowed in VoodooSMBus, VoodooRMI, or RMISMBus. Not sure when I'll get a chance to look unfortunately.

 

Edit: oh, another place worth looking is the kextstat command. You can run kextstat | grep -v apple to show injected kexts.

Edited by 1Revenger1
Link to comment
Share on other sites

Hi @1Revenger1,

 

Yes, VoodooSMBus loads and attaches successfully.

 

ScreenShot2024-09-11at6_51_39PM.thumb.png.816908762da68eed67ac67db64804974.png

 

ScreenShot2024-09-11at6_34_49PM.png.f7593f79fb70b94616ed53b0cbc39865.png

 

My EFI download link includes a full ioreg dump, and some additional logs that are hopefully helpful. Thank you once again for your excellent work. Whenever you have a chance, please take a look.

Edited by Fortitude
Link to comment
Share on other sites

Looks like RMISMBus uses something that isn't available on Sierra. Probably related to this block here.
Excerpt from the OpenCore log:
151:121 00:192 OCAK: Symbol __NSConcreteStackBlock has 0-value
151:283 00:162 OCAK: Symbol __ZN9IOService23addMatchingNotificationEPK8OSSymbolP12OSDictionaryiU13block_pointerFbPS_P10IONotifierE has 0-value
151:510 00:226 OC: Prelinked injection VoodooRMI.kext\Contents\PlugIns\RMISMBus.kext (RMISMBus.kext) - Invalid Parameter

Should be a relatively easy fix - addMatchingNotification has existed since 10.6. Just need to use function pointers instead of blocks. Not sure when I'll get around to fixing it, but should be a relatively easy fix if you want to do it on your own.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

@Fortitude I've reworked some things if you want to give it a try. Archive 2.zip
 

This has a copy of VoodooPS2, VoodooSMBus, and VoodooRMI in it though I'm not sure if I set the versions right on these. If you want to build these yourself, these are built from this PR and the linked PRs in it.
I'd appreciate it if you could validate these work - trying to get this version tested on more systems to see how robust it is.

Edited by 1Revenger1
Link to comment
Share on other sites

Posted (edited)

Hi @1Revenger1, thanks for taking the time to do this! I apologize for getting back this late, I only saw your message today.

 

I tested the zip file that you sent, and it seems to fix the prelinking issue. However, I’m still encountering the same problem with VoodooRMI/RMISMBus not loading or appearing in IOReg. I've tried it on macOS Sierra, High Sierra, Catalina, and Big Sur, but unfortunately, it hasn’t worked on any of those versions.

 

Thank you once again for your help! I really appreciate the effort you’ve put into reworking everything based on the pull requests. I noticed they’re still open, and I have a GitHub account if you’d prefer me to reach out there.

Edited by Fortitude
Link to comment
Share on other sites

3 hours ago, Fortitude said:

Hi @1Revenger1, thanks for taking the time to do this! I apologize for getting back this late, I only saw your message today.

 

I tested the zip file that you sent, and it seems to fix the prelinking issue. However, I’m still encountering the same problem with VoodooRMI/RMISMBus not loading or appearing in IOReg. I've tried it on macOS Sierra, High Sierra, Catalina, and Big Sur, but unfortunately, it hasn’t worked on any of those versions.

 

Thank you once again for your help! I really appreciate the effort you’ve put into reworking everything based on the pull requests. I noticed they’re still open, and I have a GitHub account if you’d prefer me to reach out there.

No problem btw. This rework has been needed for a while as the old system was pretty unreliable. Were relying on VoodooPS2 starting up pretty quick - otherwise SMBus and PS2 drivers would both try to talk to the touchpad and make it very confused.

Link to comment
Share on other sites

Attached is my IOReg file along with other relevant files for macOS Sierra. I can provide files for Big Sur as well, but 10.12.6 is literally the only version of macOS that runs properly on my laptop. (This is because the Fermi graphics card that the laptop comes with is an absolute pain, but it's an MXM card so I'm hoping I'll be able to upgrade it in the future.)

Fortitudes-MBP.lan.ioreg KernelLog.txt KextloadLog.txt KextstatFull.txt KextstatLog.txt opencore-2024-10-04-030158.txt

Link to comment
Share on other sites

Looks like the touchpad does not report that the SMBus interface is supported. Do you mind giving this copy of VoodooPS2 a try in addition to the kexts I gave above? It just forces VoodooPS2 to follow the path it would take if it detected an SMBus capable touchpad.
VoodooPS2Controller-2.3.6-DEBUG.zip
 

diff --git a/VoodooPS2Trackpad/VoodooPS2SynapticsTouchPad.cpp b/VoodooPS2Trackpad/VoodooPS2SynapticsTouchPad.cpp
index f8cdf8e..be8fb61 100644
--- a/VoodooPS2Trackpad/VoodooPS2SynapticsTouchPad.cpp
+++ b/VoodooPS2Trackpad/VoodooPS2SynapticsTouchPad.cpp
@@ -205,7 +205,7 @@ IOService* ApplePS2SynapticsTouchPad::probe(IOService * provider, SInt32 * score
     // Attempt to start SMBus Companion. If succesful, attach a stub PS/2 driver.
     //
     IOService *resources = getResourceService();
-    if (_cont_caps.intertouch && resources && resources->getProperty(_smbusCompanion)) {
+    if (/*_cont_caps.intertouch && */ resources && resources->getProperty(_smbusCompanion)) {
         // Helpful information for SMBus drivers
         OSDictionary *dictionary = OSDictionary::withCapacity(2);
         dictionary->setObject("TrackstickButtons", _securepad.trackstick_btns ?

 

Edited by 1Revenger1
Link to comment
Share on other sites

Posted (edited)

According to the kernel log, VoodooRMI and RMISMBus are now loading, but there’s an error when attempting to read the SMBus version. I thought my trackpad would support SMBus, but I'm starting to wonder if I could be wrong about this? Unless there's a method to the madness, I'm baffled because VoodooSMBus seems to load.

Fortitudes-MBP.lan.ioreg KernelLog.txt KextloadLog.txt KextstatFull.txt KextstatLog.txt opencore-2024-10-04-061352.txt

Edited by Fortitude
Link to comment
Share on other sites

VoodooSMBus is just for the i801 SMBus controller in the PCH and won't talk to the touchpad on its own, so I'm not surprised that it is attaching.
I am surprised that the version can't be found though. I am guessing it might be an older device which is not supported by the driver unfortunately. I don't have a good way to test that though.

Link to comment
Share on other sites

I’m starting to think that my trackpad might honestly just be PS/2. I apologize if I’ve wasted your time with this—I'm not sure why it shows up as an SMBus touchpad in Device Manager on Windows. Would it be okay if I tested the zip file you sent on my Alienware laptop? I know your kext is compatible with it.

Link to comment
Share on other sites

Just now, Fortitude said:

I’m starting to think that my trackpad might honestly just be PS/2. I apologize if I’ve wasted your time with this—I'm not sure why it shows up as an SMBus touchpad in Device Manager on Windows. Would it be okay if I tested the zip file you sent on my Alienware laptop? I know your kext is compatible with it.

That would be appreciated if you don't mind. Don't worry about wasting my time :P, this whole thing is really confusing. It may be SMBus, just using a different version of the RMI protocol (RMI3 maybe?).

Link to comment
Share on other sites

Posted (edited)

Hey @1Revenger1, I'm really glad that I asked this...

 

The trackpad on my Alienware laptop isn't responding with your reworked version. (It's an I2C trackpad) I’ve attached two folders with plenty of logs. One's using the latest debug, and the other is using the reworked kexts in that zip file. (This is running on macOS Ventura 13.6)

 

Meanwhile, I’ll try to do some investigation into the exact PS/2 and/or SMBus protocol of my trackpad. To be honest though, I don’t think it’s supported by your driver.

Edited by Fortitude
Link to comment
Share on other sites

Huh, the code changes do not touch the I2C driver at all. Could having the SMBus driver enabled cause issues as well as PS2Mouse/Touchpad?

If not, I would appreciate it you could possibly figure out a commit between the latest release and commit to see what is causing issues potentially. Dortania's website has a bunch of builds for each commit if you would like to give that a shot.

 

I do not personally have an I2C Synaptics device so testing is hard unfortunately.

Link to comment
Share on other sites

I’ll see what I can do, though I might need some time to get familiar with your code. Regarding the Qosmio’s trackpad, it’s PS/2. I found a manual over the weekend for my laptop (which should’ve been on Dynabook’s website) that confirms it uses PS/2. I then downloaded a program from Synaptics to configure the trackpad on Windows, which verifies this.

 

SynapticsControlPanel.png.eaa25e4287e188a024bcf16a8e2fa606.png

 

According to the Synaptics website, ClickPads can connect through PS/2, Intertouch, I2C, and USB (but not SMBus). It seems my SMBus driver in Windows contains the PS/2 protocol code. I’m not sure if there’s an exclusive PS/2 driver for my trackpad, but I’ve finally made sense of this confusing situation.

Link to comment
Share on other sites

13 minutes ago, Fortitude said:

I’ll see what I can do, though I might need some time to get familiar with your code. Regarding the Qosmio’s trackpad, it’s PS/2. I found a manual over the weekend for my laptop (which should’ve been on Dynabook’s website) that confirms it uses PS/2. I then downloaded a program from Synaptics to configure the trackpad on Windows, which verifies this.

 

SynapticsControlPanel.png.eaa25e4287e188a024bcf16a8e2fa606.png

 

According to the Synaptics website, ClickPads can connect through PS/2, Intertouch, I2C, and USB (but not SMBus). It seems my SMBus driver in Windows contains the PS/2 protocol code. I’m not sure if there’s an exclusive PS/2 driver for my trackpad, but I’ve finally made sense of this confusing situation.

That is good to know. Btw Intertouch is what they call their SMBus interface - can see references to it in the linux PS/2 driver for synaptics.

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...