VoodooSMBus / VoodooRMI

Synaptic Trackpad driver over SMBus/I2C for macOS
GNU General Public License v2.0
236 stars 19 forks source link

Ivy Bridge and older SMBus Devices do not respond #33

Closed titieo closed 3 years ago

titieo commented 4 years ago

Excuse me. Can you help me with this, please. I'm using OpenCore 0.5.9 DEBUG for my Ivy Bridge laptop. Although I’ve tried to used the VoodooRMI.kext, VoodooSMBus.kext but my synaptic trackpad didn’t work (Even I’ve tried disable VoodooPS2Mouse,Trackpad and then VoodooInput inside VoodooPS2 as wel, it can’t movel). I had used the troubleshoot page, too. As you see, there aren’t any SMBus-related SSDT and I’ve modified the VoodooSMBus.kext, too. Here is my EFI as well if you want. Thanks a lot for reading my message. P/S: I also tried to add these patch from here: https://github.com/leo-labs/macOS-ThinkPad-T480s/blob/master/EFI/CLOVER/config.example.plist#L500-L535 but my mouse still can’t move EFI.zip 2020-07-28_163221

Edit

My laptop is a Ivy Bridge: DELL INSPIRON 3421: Core i5 3337U-HD4000 7 Series/C216 Chipset Family SMBus Controller PS2SmartTouchpad.kext and Rehabman VoodooPS2.kext work with some 2 fingers feature (exclude zoom in, out,...)

Update for version 1.0.1 by @LocTran016

I don't know if this is a bug or may be that kind of thing but when I inject VoodooSMBus.kext and VoodooRMI.kext (involves the plug-in as well) but I can't do anything in my laptop (include moving the mouse and shut down) because my laptop just keep loading with a rainbow circle, I haven't had the ability to click on the apple icon for shutting down, too. It just keep loading for very long time so I did force turn off my laptop. I don't know if this is a bug in my laptop only or with some other laptops, too. What do you think about this, then. @1Revenger1 (The 1.0.0 has the same problem like this) P/S: This hadn't occurred before I inject the kext through OpenCore

Update regarding to VoodooPS2

I have just found a interesting link about VoodooPS2 (don't know if your kexts have the same issues): here. I don't know if you can take a look at that link. I've used the SSDT-Enable_DynamicEWMode.dsl to fix my trackpad with the VoodooPS2 grabbed from acidanthera. It work quite good with force touch but physic buttons don't work. Thanks for reading my message, then (If this is off-topic, just leave a comment and I will delete the update as soon as possibe)

1Revenger1 commented 4 years ago

What bootloader? If it's OC, make sure that the order of kext loading is VoodooSMBus.kext, then VoodooRMI.kext, then finally RMISMBus.kext. Make sure that VoodooInput from RMI is being injected as well. If that doesn't work, can you show what your SMBus looks like in IORegistryExplorer, and get the output from kextstat in terminal.

titieo commented 4 years ago

@1Revenger1 Maybe the issues is because ProperTree put them in wrong order. One more thing before trying your advice, can RMISMBus.kext be after Whatevergreen like this image

1Revenger1 commented 4 years ago

Yeah that's fine. The main important thing is that VoodooRMI and VoodooSMBus are before RMISMBus. Doesn't really matter what the order is between the two or if anything is before it/mixed in.

titieo commented 4 years ago

Well, Although I've set everything like what you say, it can't work, ask for what my SMBus looks like in IORegistryExplorer, and get the output from kextstat in terminal, I'll try to get them to you as soon as possible because I don't have any usb mouse and I can't use my built-in mouse so sorry a lot for that. I'll try to send them to you soon. P/S: Here is my SMBUS hardward ID if you want: image EFI.zip

titieo commented 4 years ago

@1Revenger1 ,By the way, my bootloader is OpenCore and I don't know why but if I use the VoodooPS2.kext from Acidanthera my mouse won't work but if i use Rehabman's VoodooPS2 from here: https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller, my trackpad can work with 1 finger and some 2 fingers features (not all of them, scrolling is OK but I can zoom in/out). And here is my full specs by AIDA64 Engineer (a .txt and htm in the zip) Report.zip Report.txt

titieo commented 4 years ago

For the others things I will try my best for them

1Revenger1 commented 4 years ago

I haven't gotten this to run succesfully on any Ivy Bridge laptops - I'm not entirely sure why. It may be a different version of RMI? Not entirely sure on that, especially since RMI4 goes back to around ~2012. You may have better luck loading it in manually once within the OS just using the keyboard.

sudo chown -R root:wheel *.kext
sudo kextutil -vvvv -d VoodooSMBus.kext -d VoodooRMI.kext VoodooRMI.kext/Contents/PlugIns/VoodooSMBus.kext

Then getting a log by doing

log show --last boot | grep -i voodoo > ~/Desktop/log.txt
1Revenger1 commented 4 years ago

The paths need to be accurate, if you are in the same directory as them then the above command should work. But if you aren't, then yes you need to make sure the path is correct to them all.

titieo commented 4 years ago

There is a problem that you don't have VoodooRMI.kext/Contents/PlugIns/VoodooSMBus.kext so I think that I should change it into this: sudo chown -R root:wheel *.kext sudo kextutil -vvvv -d VoodooSMBus.kext -d VoodooRMI.kext VoodooRMI.kext/Contents/PlugIns/RMISMBus.kext

titieo commented 4 years ago

@1Revenger1 Well, I've tried both but couldn't work. Anyway, all the necessary file is here, sorry if is there anything is miss, just tell me and I'll give it to you. Fixing trackpad.zip

gimdh commented 4 years ago

https://www.rockbox.org/wiki/pub/Main/SansaFuzePlus/Synaptics_RMI3_Specification.pdf

I guess older touchpads with RMI3 use F10.

gimdh commented 4 years ago

@LocTran016 You have to cd into the downloaded and unzipped VoodooRMI folder. Also, make sure to use Debug kext for detailed log information.

For example, running cd ~/Downloads/VoodooRMI-1.0-Debug prior to 1Rvenger1's command should work if you downloaded file with Safari.

1Revenger1 commented 4 years ago

It may be that it is RMI3, I haven't seen any way to detect which RMI version it is. It does look programmed very similarly to RMI4 though.

gimdh commented 4 years ago

Log should be located under Downloaded kext folder. However, it seems you need to remove kext from OC bootloader first. (Just delete two Kext files.) You can load kext after boot, and in this way you can test kext without reboot.

BTW, you may want to edit post for minor extra informations rather than posting new comment, as an issue board is somewhat different from chat.

//Edit. Never mind about log file. That command always outputs log to Desktop.

1Revenger1 commented 4 years ago

So, what I've noticed is that testing with another person is that on Ivy Bridge, when we ask for the SMBus version, it gets stuck and doesn't get any sort of response, so no attempts are logged to try and get the version. It may be that some sort of timeout may be needed.

Edit: So as far as I can tell with other testing, we're getting stuck in RMISMBus

Red1860 commented 4 years ago

I am also on an ivy bridge laptop, Inspiron 14z 5423 and my trackpoint is also not working properly. I edited the VoodooSMBus info.plist file and entered my vender id and device id. All the gestures are working but the trackpoint is very laggy. Btw I am using Clover.

titieo commented 4 years ago

@Rohan200220 , I've tried that but didn't work, though

Red1860 commented 4 years ago

@LocTran016 Sometimes it works for me, sometimes it doesn't. When I restart my laptop the trackpad doesn't even respond.

1Revenger1 commented 4 years ago

Does someone mind testing out these new versions of VoodooRMI and VoodooSMBus? https://files.gitter.im/5e938b02d73408ce4fe02f4f/H2AL/VoodooRMI.kext.zip https://files.gitter.im/5e938b02d73408ce4fe02f4f/66yp/VoodooSMBus.kext.zip

This should hopefully fix the freezing, and give better errors. You may need to add your device id again.

If you are injecting these kexts rather than loading it manually within macOS, better way to get logs it to add msgbuf=1048576 to your boot args, and use sudo dmesg to get logs, as log show --last boot is pretty atrocious for early boot logs.

Red1860 commented 4 years ago

My trackpad is still not responding with the above kexts, and I am using clover

1Revenger1 commented 4 years ago

I can't do anything without logs. Please reread my last message.

Red1860 commented 4 years ago

Log.txt

Sorry, here it is

1Revenger1 commented 4 years ago

I'd double check which VoodooSMBus kext your using. It looks like it's trying to probe for an Elans trackpad, when all of the Elans stuff should've been taken out in the above VoodooSMBus download.

Edit: And I'm not finding any logging for published nubs which should be seen in recent versions at address 0x2c. Should be seeing something similar to Publishing nub for slave device at address 0x2c

Red1860 commented 4 years ago

I used voodoosmbus from the above link, and how to take out elen stuff from voodoosmbus?

1Revenger1 commented 4 years ago

There isn't any Elans stuff in the above link. If you check the Info.plist for the kext you have injected, it should be version 3.0, and not have any Elans stuff within it. Additionally, should have a place to put different addresses. This is currently what I see image

Red1860 commented 4 years ago

Um, sorry for being a noob :p, but what do i have to do?

1Revenger1 commented 4 years ago

Double check that you have the right Kext. Make sure that you don't have VoodooSMBus in kextcache, Library/Extensions, or System/Library/Extensions. If that all looks alright, double check that the Info.plist says it's version 3.0. You can find it by right clicking the kext in macOS and pressing "Show Package Contents". If your on windows, the kext already appears a folder so just look in there.

Red1860 commented 4 years ago

I don't have VoodooSMBus in S/L/E or in L/E, where is kextcache location? Screenshot 2020-08-28 at 6 24 00 AM

It says version 3.0

1Revenger1 commented 4 years ago

Double check for duplicates I guess - the kext cache isn't stored in a place you can mess with. Easiest way I guess to be sure it's gone is to invalidate it using sudo kextcache -i /. It'll complain about kexts that shouldn't be in L/E or S/L/E as well.

Red1860 commented 4 years ago

sudo kextcache -i /. It'll complain about kexts that shouldn't be in L/E or S/L/E as well.

just got this- KernelCache ID: C13F4697AEBE1E8A99946DD865E9237F

Red1860 commented 4 years ago

I never installed any kexts in L/E or in S/L/E so I know no wrong kexts would be there. I just placed them in my EFI folder

1Revenger1 commented 4 years ago

Hmm, I guess you could try getting a log again

titieo commented 4 years ago

With the newest version of VoodooRMI and VoodooSMBus, the freezing is fixed as you said before but through System Preference, it doesn't detect my trackpad as a trackpad (I can't even move my mouse so I have to use a USB mouse). I still using the same laptop. I will update the EFI as soon as possible: https://github.com/LocTran016/EFI Here is my log: Terminal Saved Output.txt

EDIT

I've tried to patch to Prevent Apple SMBus kexts from attaching to SMBUS controller (involve com.apple.driver.AppleSMBusController, com.apple.driver.AppleSMBusPCI) but through kextstat, the VoodooRMI and its plug-in as well haven't been loaded. I don't know if I could try manually loading the kexts. Here is my new log file (include kextstat): Log.txt

What does IORegistryExplorer show? I didn't see any traces of VoodooSMBus in the new logs.

PCIDeivces_IOREG.zip And through kextstat in terminal, I've found: de.leo-labs.VoodooSMBus so I personally think that may be the de.leo-labs.VoodooSMBus have been injected

1Revenger1 commented 4 years ago

Your log doesn't show VoodooSMBus loading at all. Are you sure something else isn't attaching to SBUS like Apple's own SMBus kext?

1Revenger1 commented 4 years ago

What does IORegistryExplorer show? I didn't see any traces of VoodooSMBus in the new logs.

1Revenger1 commented 4 years ago

Can you please post new responses rather than editing the one message hours after sending it? I don't get notifications.

It shows VoodooSMBusIntelLpssI2C as attaching to SBUS, make sure you add the device ID to VoodooSMBus, not VoodooSMBusIntelLpssI2C. They are different personalities in the same Info.plist

titieo commented 4 years ago

As you have already said before, the freezing is fixed but I can't use my mouse (I don't have the ability to move the built-in mouse). Here is everything my config.plist, the kext and terminal log as well as the ioreg file. Through the terminal (sudo dmesg), there are some RMI configuration and the kexts are loaded as well

image

image

image

Troubleshooting.zip

proektus123 commented 4 years ago

I have tested it on my elitebook 9470m VoodooSMBus .kext and VoodooRMI.kext does not loads.. no info in kextstat. I have place these kexts in opencore kexts folder.

titieo commented 4 years ago

I have tested it on my elitebook 9470m VoodooSMBus .kext and VoodooRMI.kext does not loads.. no info in kextstat. I have place these kexts in opencore kexts folder.

You should update (editing the comment) your specs (via AIDA64 is OK). Did you try to clean snap shot, check that no VoodooPS2 mouse and trackpad in the config.plist, add the device id and vendor id (in SMBus troubleshooting section)?

1Revenger1 commented 4 years ago

Hmm, that's weird that it doesn't respond.

Oh, that's weird - VoodooRMI is trying to boot up before rooting occurs? I wonder if it's booting up early or if it's inaccurate logging. It may be worth testing to see if delaying when VoodooRMI starts booting up would help. Easiest way is probably just loading it manually from within macOS to see if anything changes. If you can test this, csrutil needs to allow unsigned kexts to load. Assuming VoodooSMBus, VoodooRMI are in the same folder, you can run sudo kextutil -vvvv -d VoodooSMBus.kext -d VoodooRMI.kext VoodooRMI.kext/Contents/PlugIns/RMISMBus.kext. The kexts do need to be owned by root (and I wouldn't recommend modifying the kexts in OC/Kexts), which you can make happen by running sudo chown -R root:wheel *.kext (this will make every kext in that directory be owned by Root)

Edit: Oh, those logs look like the one you gave earlier when loading within macOS. So that likely won't help, oops. Maybe I can see if I can throw something together to test for the presence of RMI3 vs RMI4.

titieo commented 4 years ago

I don't know if this may help: I'm using this Touchpad Driver for my Dell Insiron 3421 (OS: Window 10 LTSB 2016), and it seem like a lot of laptops sharing the same driver with mine, even the XPS 12 9Q33 which is using the 4th gen intel cpu. I don't have the enough knowledge to be sure that using the same driver mean the same device but I don't know if could take a look at this. Hope this will help you in some way By the way, I'm using 7 Series/C216 Chipset Family SMBus Controller (8086:1E22) with HM76 chipset

1Revenger1 commented 4 years ago

VoodooRMI.kext 2.zip This tries to read Address 0x200, which should give the major/minor RMI version if it's an RMI3 device. Do you mind trying this version? It has no other modifications from master.

titieo commented 4 years ago

The mouse doesn't work, I have tried the lastest VoodooRMI.kext but didn't help (I still keep the same VoodooSMBus) Troubleshooting.zip

1Revenger1 commented 4 years ago

This should properly probe for RMI3 (Switches to Page 0x02 and probes address 0x00) I also fixed the mapping table possibly not being zeroed out within RMISMBus, but I doubt that was the issue plaguing you.

I'm not expecting this to work for you, but it should hopefully give more helpful debug info VoodooRMI.kext 4.zip

Edit: Do you have a Clover config by chance? It'd be interesting to see if it works in Clover - might need to enable something within IOPCIDevice if it works in Clover.

Edit 2: If the above VoodooRMI still doesn't work, do you mind trying with this version of VoodooSMBus as well? I enabled bus mastering and memory: VoodooSMBus.kext.zip

titieo commented 4 years ago

With the latest version of VoodooRMI.kext (I haven't change the VoodooSMBus.kext), my trackpad work perfectly, the launchpad work reliably although there is a small problem that when I first try to click, I have to tap with one finger twice but from the second time, it work reliably (this also apply to other gestures as well) Troubleshooting.zip

Do you have a Clover config by chance? It'd be interesting to see if it works in Clover - might need to enable something within IOPCIDevice if it works in Clover.

Sorry, no. I haven't read the Clover guide before reading dortania's OpenCore guide so I only have OpenCore

1Revenger1 commented 4 years ago

Huh. So maybe it was not zeroing the mapping table out at boot. I'll upload the changes later after I've taken a look at the logs. Thanks for testing.

On Monday I'll push out a new release with a release binary

Edit: no need to test with clover btw

@Rohan200220 any luck getting this to work on your trackpad?

titieo commented 4 years ago

Do you think that I should try the VoodooSMBus as well because the trackpad work perfectly (the physical buttons work, too)?

1Revenger1 commented 4 years ago

Na, functionality doesn't change at all

1Revenger1 commented 4 years ago

Oh, have you testing this over a few boots to make sure that we weren't being lucky for some reason?

titieo commented 4 years ago

No, I haven't done that yet. I'll do that.