Fortitude Posted September 11 Share Posted September 11 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. Link to comment Share on other sites More sharing options...
1Revenger1 Posted September 11 Share Posted September 11 (edited) 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 September 11 by 1Revenger1 Link to comment Share on other sites More sharing options...
Fortitude Posted September 12 Author Share Posted September 12 (edited) Hi @1Revenger1, Yes, VoodooSMBus loads and attaches successfully. 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 September 12 by Fortitude Link to comment Share on other sites More sharing options...
LockDown Posted September 12 Share Posted September 12 What is RMISMBus? Where can i find it Link to comment Share on other sites More sharing options...
1Revenger1 Posted September 13 Share Posted September 13 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. 1 Link to comment Share on other sites More sharing options...
Fortitude Posted September 14 Author Share Posted September 14 Got it, I’ll check it out and let you know if I’m able to update the code to use function pointers. Link to comment Share on other sites More sharing options...
1Revenger1 Posted September 29 Share Posted September 29 (edited) @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 September 29 by 1Revenger1 Link to comment Share on other sites More sharing options...
Fortitude Posted Thursday at 10:45 PM Author Share Posted Thursday at 10:45 PM (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 Thursday at 10:46 PM by Fortitude Link to comment Share on other sites More sharing options...
1Revenger1 Posted Friday at 12:51 AM Share Posted Friday at 12:51 AM Do you have a copy of your Io registry you can send? Should see ApplePS2SMBusDevice on the PS2 controller. Link to comment Share on other sites More sharing options...
1Revenger1 Posted Friday at 02:22 AM Share Posted Friday at 02:22 AM 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 More sharing options...
Fortitude Posted Friday at 03:50 AM Author Share Posted Friday at 03:50 AM 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 More sharing options...
1Revenger1 Posted Friday at 05:31 AM Share Posted Friday at 05:31 AM (edited) 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 Friday at 05:31 AM by 1Revenger1 Link to comment Share on other sites More sharing options...
Fortitude Posted Friday at 07:10 AM Author Share Posted Friday at 07:10 AM (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 Friday at 08:29 AM by Fortitude Link to comment Share on other sites More sharing options...
1Revenger1 Posted Friday at 02:10 PM Share Posted Friday at 02:10 PM 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 More sharing options...
Fortitude Posted Friday at 02:21 PM Author Share Posted Friday at 02:21 PM 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 More sharing options...
1Revenger1 Posted Friday at 02:27 PM Share Posted Friday at 02:27 PM 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 More sharing options...
Fortitude Posted Friday at 03:50 PM Author Share Posted Friday at 03:50 PM (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 Friday at 03:51 PM by Fortitude Link to comment Share on other sites More sharing options...
1Revenger1 Posted Friday at 04:08 PM Share Posted Friday at 04:08 PM (edited) Can you grab a bootlog using "dmesg"? Looks like it wasn't captured by the log command. You can filter it for both by doing "dmesg | grep -E "vrmi | i2c"" I think. Edited Friday at 04:09 PM by 1Revenger1 Link to comment Share on other sites More sharing options...
Fortitude Posted Friday at 05:09 PM Author Share Posted Friday at 05:09 PM Original.txt Reworked.txt Link to comment Share on other sites More sharing options...
1Revenger1 Posted yesterday at 07:15 AM Share Posted yesterday at 07:15 AM 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 More sharing options...
Recommended Posts