Comments (45)
I looked into implementing F12, and it doesn't look to bad aside from needing to somehow replicate some of the bitops in linux. I doubt I'll get around to implementing it myself in the next couple days, though would support someone else implementing it if they wanted to. I don't have a trackpad which uses F12, so I have no way to test.
from voodoormi.
F12 should be implemented. Feel free to build and test it yourself
from voodoormi.
VoodooPS2Controller/Keyboard has no dependency on VoodooInput.
In addition, VoodooInput is not a dependency for VoodooRMI needed for loading. VoodooInput attaches based off of a property we set, so VoodooInput can be loaded after everything.
from voodoormi.
I made a dumb mistake and forgot to read some registers from the device. See if the latest commit fixed it. You may need to load it manually again to get the logs, idk why macOS eats the logs when the driver is injected.
from voodoormi.
https://gitter.im/VoodooSMBus/dev?utm_source=share-link&utm_medium=link&utm_campaign=share-link This should work.
from voodoormi.
VoodooInput seems to be missing. Try to move VoodooInput from VoodooRMI.kext before VoodooPS2Controller in config.plist.
from voodoormi.
Yes, VoodooInput does not appear to load. I would double check to make sure OpenCore is not erroring trying to add the kext, and make sure that the entry looks right in your config.plist.
from voodoormi.
The order of loading should be the problem. Order matters in OC and voodooinput is loaded after voodoops2 according to the linked repository.
from voodoormi.
Closing as this likely isn't an issue with VoodooRMI
from voodoormi.
@yusifsalam let's continue our discussion here.
Can you try loading the RMI once your in macOS using kextload
?
That should provide better logging data
from voodoormi.
Hi All,
I'm having a similar issue on a T480. There seem to be two conflicts - one with SMC Battery Manager kext and one with USBMap kext. Removing these items and related battery patches resolves the issue and VoodooInput loads every time.
As noted above, the Kext load order matters. If I place VoodooInput last in line, and put SMCBatteryManager and USBMap or USBInjectall immediately following VirtualSMC, I get about a 75% success rate in loading VoodooInput. For the times it does fail to load, the kextload command also fails to load VoodooInput manually.
This is strange because I was using VoodooPS2Controller previously, and VoodooInput loaded 100% of the time.
Finally, one theory I have is that it may relate to the ACPI patch for the battery - OWAK01 to XWAK01.
Unfortunately, I don't have too much insight into all of this because I don't really understand the code. These are just observations based on trial and error, which are more helpful when something just works or doesn't work rather than working part of the time.
Thanks!
from voodoormi.
What was the error when you tried to load manually? You can add -vvvvvv
to get more verbose loading. If not, you can check the kernel log as well iirc.
Edit: It might be 4 v's, I forget
from voodoormi.
"failed to load - (libkern/kext) not loadable (reason unspecified); check the system/kernel logs for errors or try kextutil(8)."
The -vvvv option didn't add any useful info (I assume you meant with kextload, not as a boot-arg).
from voodoormi.
kextutil might work better. If not, I'd have console.app open, and have it filtering for "Kernel"
Edit: Oh, checking your IOReg, RMI4 didn't fully load. I'm guessing it had issues probing/starting up. Can you provide a log of when it boots up too?
from voodoormi.
@1Revenger1 Sorry about posting in the wrong repo, I thought it would be more polite to post in an open issue : D
❯ sudo chown -R 0:0 Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/
sudo chmod -R 755 Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/
~
❯ sudo kextutil Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/ -vvvv
Defaulting to kernel file '/System/Library/Kernels/kernel'
Kext with invalid signature (-67050) allowed: <OSKext 0x7fc2765082e0 [0x7fff89af1b60]> { URL = "file:///Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/", ID = "com.1Revenger1.VoodooRMI" }
/Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext - dependency 'de.leo-labs.VoodooSMBus' not found.
/Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext - dependency 'de.leo-labs.VoodooSMBus' not found.
/Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext - dependency 'de.leo-labs.VoodooSMBus' not found.
Code Signing Failure: code signature is invalid
Dependency Resolution Failures:
No kexts found for these libraries:
de.leo-labs.VoodooSMBus
Diagnostics for /Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext:
Dependency Resolution Failures:
No kexts found for these libraries:
de.leo-labs.VoodooSMBus
~
So according to this SMBus isn't resolved?
from voodoormi.
Heh, id rather not fill up the other repo mostly because that's mostly another Authors work. It's fine though.
I've found that usually I need to do -d /path/to/VoodooSMBus.kext
to have it find that dependency for some reason.
from voodoormi.
❯ sudo kextutil Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/ -vvvv -d Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooSMBus.kext/
Defaulting to kernel file '/System/Library/Kernels/kernel'
Kext with invalid signature (-67050) allowed: <OSKext 0x7f85c0f089d0 [0x7fff89af1b60]> { URL = "file:///Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/", ID = "com.1Revenger1.VoodooRMI" }
Kext with invalid signature (-67030) allowed: <OSKext 0x7f85c1924360 [0x7fff89af1b60]> { URL = "file:///Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooSMBus.kext/", ID = "de.leo-labs.VoodooSMBus" }
Code Signing Failure: code signature is invalid
Warnings:
Dependency lacks appropriate value for OSBundleRequired and may not be available during early boot:
de.leo-labs.VoodooSMBus - OSBundleRequired not set
Warnings:
Dependency lacks appropriate value for OSBundleRequired and may not be available during early boot:
de.leo-labs.VoodooSMBus - OSBundleRequired not set
/Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext appears to be loadable (not including linkage for on-disk libraries).
Loading /Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext.
/Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext successfully loaded (or already loaded).
Invalid signature -67050 for kext <OSKext 0x7f85c0f089d0 [0x7fff89af1b60]> { URL = "file:///Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/", ID = "com.1Revenger1.VoodooRMI" }
~
❯ kextstat|grep -i voodoo
65 1 0xffffff7f835e1000 0x14000 0x14000 as.acidanthera.voodoo.driver.PS2Controller (2.1.5) 2529B917-EE1A-3F67-88B9-12F21B0F5D0A <12 8 6 5 3 1>
72 1 0xffffff7f8354b000 0x3b000 0x3b000 de.leo-labs.VoodooSMBus (2.1) 3D978383-5782-3051-BF65-8037C9188562 <60 13 6 5 3>
77 0 0xffffff7f835b0000 0x25000 0x25000 com.1Revenger1.VoodooRMI (0.5) 23224C87-5EA7-37E2-A28B-C2F9D1B78CD7 <72 60 6 5 3>
84 0 0xffffff7f835fa000 0xd000 0xd000 as.acidanthera.voodoo.driver.PS2Keyboard (2.1.5) 2BDE73B8-0F0D-3915-8D25-9DE623F7A209 <65 60 8 6 5 3 1>
~
I managed to load VoodooInput too but the trackpad still won't work
❯ sudo kextutil Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/Contents/PlugIns/VoodooInput.kext/ -vvvv
Defaulting to kernel file '/System/Library/Kernels/kernel'
Kext with invalid signature (-67050) allowed: <OSKext 0x7ff39152f0a0 [0x7fff89af1b60]> { URL = "file:///Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/Contents/PlugIns/VoodooInput.kext/", ID = "me.kishorprins.VoodooInput" }
Code Signing Failure: code signature is invalid
/Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/Contents/PlugIns/VoodooInput.kext appears to be loadable (not including linkage for on-disk libraries).
Loading /Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/Contents/PlugIns/VoodooInput.kext.
Disabling KextAudit: SIP is off
KextAudit initialized: audit=F
/Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/Contents/PlugIns/VoodooInput.kext successfully loaded (or already loaded).
Invalid signature -67050 for kext <OSKext 0x7ff39152f0a0 [0x7fff89af1b60]> { URL = "file:///Users/yusif/Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/Contents/PlugIns/VoodooInput.kext/", ID = "me.kishorprins.VoodooInput" }
~
❯ kextstat|grep -i voodoo
65 1 0xffffff7f835e1000 0x14000 0x14000 as.acidanthera.voodoo.driver.PS2Controller (2.1.5) 2529B917-EE1A-3F67-88B9-12F21B0F5D0A <12 8 6 5 3 1>
72 1 0xffffff7f8354b000 0x3b000 0x3b000 de.leo-labs.VoodooSMBus (2.1) 3D978383-5782-3051-BF65-8037C9188562 <60 13 6 5 3>
77 0 0xffffff7f835b0000 0x25000 0x25000 com.1Revenger1.VoodooRMI (0.5) 23224C87-5EA7-37E2-A28B-C2F9D1B78CD7 <72 60 6 5 3>
84 0 0xffffff7f835fa000 0xd000 0xd000 as.acidanthera.voodoo.driver.PS2Keyboard (2.1.5) 2BDE73B8-0F0D-3915-8D25-9DE623F7A209 <65 60 8 6 5 3 1>
168 0 0xffffff7f83596000 0x1a000 0x1a000 me.kishorprins.VoodooInput (1.0.6) 4F9442AF-4062-3559-AD5A-CF25983B51EB <60 6 5 3>
~
from voodoormi.
Can you get a log of it loading up? I think you were missing F11 as well iirc looking at the pic from the other issue.
from voodoormi.
Sorry I'm a bit ignorant when it comes to debugging, how can I produce that log? I tried to pipe the output to a file but that didn't work.
from voodoormi.
Uhh, usually I do log show --last 1m | grep -i voodoormi > /path/to/log.txt
after loading the kext and waiting a few secs. Catalina has a weird issue where stream
doesn't work unless you run the command first with show
, so I just tend to skip using stream unless I'm looking at trackpad or trackstick data in real time.
Edit: 1m can be changed to 5m, 1h, etc, as well depending on how far back you want to go. --last boot will show all logs since the last boot.
from voodoormi.
020-06-25 22:09:06.576035+0300 0x40b1 Default 0x0 793 0 sudo: yusif : TTY=ttys000 ; PWD=/Users/yusif ; USER=root ; COMMAND=/usr/bin/kextutil Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/ -d Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooSMBus.kext/ -vvvvvv
2020-06-25 22:09:08.700018+0300 0x4168 Default 0x0 0 0 kernel: (VoodooRMI) SMBus version 3
2020-06-25 22:09:08.700749+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) RMI Bus (DEBUG) Starting up!
2020-06-25 22:09:08.708269+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Debug: rmi_probe_interrupts: Counting IRQs.
2020-06-25 22:09:08.743673+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Debug: IRQ Count: 9
2020-06-25 22:09:08.743749+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Debug: rmi_init_functions: Creating functions.
2020-06-25 22:09:08.746093+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Initializing F34.
2020-06-25 22:09:08.748467+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Initializing F01.
2020-06-25 22:09:08.768414+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Found RMI device, manufacturer: Synaptics, product: TM3471-010, fw id: 2867793
2020-06-25 22:09:08.779108+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Initializing F12.
2020-06-25 22:09:08.779141+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Error: Unknown function: 12 - Continuing to load
2020-06-25 22:09:08.784063+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Initializing F54.
2020-06-25 22:09:08.784094+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) F54 not implemented - Debug function
2020-06-25 22:09:08.789022+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Initializing F3A.
2020-06-25 22:09:08.789055+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Error: Unknown function: 3A - Continuing to load
2020-06-25 22:09:08.791405+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Initializing F03.
2020-06-25 22:09:08.798521+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Initializing F55.
2020-06-25 22:09:08.798553+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Error: Unknown function: 55 - Continuing to load
2020-06-25 22:09:08.827624+0300 0x419f Default 0x0 0 0 kernel: (VoodooRMI) Start finished
2020-06-25 22:09:10.705917+0300 0x4169 Default 0x0 0 0 kernel: (VoodooRMI) Error: Failed to read SMBus version. Code: 0xFFFFFFFA
from voodoormi.
Wack, I think I'll need to do some research. No clue what function 3A or 55 are.
Function 12 is likely why your trackpad doesn't work though, and is linked to issue #6
from voodoormi.
Oh, F55 is for getting number of tx/rx electrodes apparently, and is used for F54 debugging data.
So, only unknown one is 3A
from voodoormi.
That's a shame, guess I'll have to wait for the implementation of F12. I don't know C++ to port it myself but I'd be available if you need testers.
After a quick googling round it doesn't seem like linux implements the 3A function, so that could be a doozy.
from voodoormi.
My guess is that F3A isn't important for functioning, though I am super curious as to what it is. None of the documentation I have mentions it
from voodoormi.
Very nice. Thank you will build, test and report back today! :)
from voodoormi.
I've build latest VoodooSMBUS from your branch, linked it inside VodooRMBus (otherwise it could not find VoodooSMBusDeviceNub.hpp) and needed to fix a small error (device_nub->wakeupController(); undefined, see diff). Sadly it didn't load:
Defaulting to kernel file '/System/Library/Kernels/kernel'
Kext with invalid signature (-67050) allowed: <OSKext 0x7ffb7cf048b0 [0x7fff90a49b60]> { URL = "file:///Users/bb/Desktop/VoodooRMI/VoodooRMI.kext/", ID = "com.1Revenger1.VoodooRMI" }
Kext with invalid signature (-67030) allowed: <OSKext 0x7ffb7cf091d0 [0x7fff90a49b60]> { URL = "file:///Users/bb/Desktop/VoodooRMI/VoodooSMBus.kext/", ID = "de.leo-labs.VoodooSMBus" }
Code Signing Failure: code signature is invalid
/Users/bb/Desktop/VoodooRMI/VoodooRMI.kext appears to be loadable (not including linkage for on-disk libraries).
Loading /Users/bb/Desktop/VoodooRMI/VoodooRMI.kext.
Disabling KextAudit: SIP is off
KextAudit initialized: audit=F
(kernel) kxld[com.1Revenger1.VoodooRMI]: The following symbols were defined more than once:
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus10gMetaClassE: 0xffffff7f9b22fb98 - 0xffffff7f9b2058f8
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus10superClassE: 0xffffff7f9b22d310 - 0xffffff7f9b201f08
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus16handleHostNotifyEv: 0xffffff7f9b225ce2 - 0xffffff7f9b1f7aa0
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus4initEP12OSDictionary: 0xffffff7f9b225ade - 0xffffff7f9b1f7948
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus4stopEP9IOService: 0xffffff7f9b226042 - 0xffffff7f9b1f7ab4
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus5probeEP9IOServicePi: 0xffffff7f9b225b94 - 0xffffff7f9b1f795a
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus5startEP9IOService: 0xffffff7f9b225c44 - 0xffffff7f9b1f79e4
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus9MetaClassC1Ev: 0xffffff7f9b22579a - 0xffffff7f9b1f77b6
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus9MetaClassC2Ev: 0xffffff7f9b225866 - 0xffffff7f9b1f7876
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBus9metaClassE: 0xffffff7f9b22d308 - 0xffffff7f9b201f00
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBusC1EPK11OSMetaClass: 0xffffff7f9b2257fc - 0xffffff7f9b1f7812
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBusC1Ev: 0xffffff7f9b2258e0 - 0xffffff7f9b1f78e8
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBusC2EPK11OSMetaClass: 0xffffff7f9b2257d6 - 0xffffff7f9b1f77f2
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBusC2Ev: 0xffffff7f9b225916 - 0xffffff7f9b1f7918
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBusD0Ev: 0xffffff7f9b225836 - 0xffffff7f9b1f7846
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBusD1Ev: 0xffffff7f9b22582c - 0xffffff7f9b1f783c
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZN6RMIBusD2Ev: 0xffffff7f9b225822 - 0xffffff7f9b1f7832
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZNK6RMIBus12getMetaClassEv: 0xffffff7f9b225858 - 0xffffff7f9b1f7868
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZNK6RMIBus9MetaClass5allocEv: 0xffffff7f9b225898 - 0xffffff7f9b1f78a8
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZTV6RMIBus: 0xffffff7f9b22d318 - 0xffffff7f9b201f10
(kernel) kxld[com.1Revenger1.VoodooRMI]: __ZTVN6RMIBus9MetaClassE: 0xffffff7f9b22db80 - 0xffffff7f9b202780
(kernel) Can't load kext com.1Revenger1.VoodooRMI - link failed.
(kernel) Failed to load executable for kext com.1Revenger1.VoodooRMI.
(kernel) Kext com.1Revenger1.VoodooRMI failed to load (0xdc008016).
(kernel) Failed to load kext com.1Revenger1.VoodooRMI (error 0xdc008016).
Failed to load /Users/bb/Desktop/VoodooRMI/VoodooRMI.kext - (libkern/kext) link error.
Failed to load /Users/bb/Desktop/VoodooRMI/VoodooRMI.kext - (libkern/kext) link error.
Check library declarations for your kext with kextlibs(8).
Did I miss something or is there an error I didn't catch?
Diff from my checkout:
diff --git a/VoodooRMI.xcodeproj/project.pbxproj b/VoodooRMI.xcodeproj/project.pbxproj
index 82a614a..f1395f9 100644
--- a/VoodooRMI.xcodeproj/project.pbxproj
+++ b/VoodooRMI.xcodeproj/project.pbxproj
@@ -39,6 +39,29 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
+ 21EC34B124B069D8006B0ECB /* helpers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = helpers.cpp; sourceTree = "<group>"; };
+ 21EC34B224B069D8006B0ECB /* VoodooSMBusDeviceNub.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = VoodooSMBusDeviceNub.hpp; sourceTree = "<group>"; };
+ 21EC34B324B069D8006B0ECB /* VoodooSMBusIntelLpssI2C.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = VoodooSMBusIntelLpssI2C.hpp; sourceTree = "<group>"; };
+ 21EC34B424B069D8006B0ECB /* rmi_smbus.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rmi_smbus.hpp; sourceTree = "<group>"; };
+ 21EC34B524B069D8006B0ECB /* VoodooSMBusSlaveDeviceDriver.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = VoodooSMBusSlaveDeviceDriver.hpp; sourceTree = "<group>"; };
+ 21EC34B624B069D8006B0ECB /* i2c_smbus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i2c_smbus.h; sourceTree = "<group>"; };
+ 21EC34B724B069D8006B0ECB /* TrackpointDevice.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TrackpointDevice.hpp; sourceTree = "<group>"; };
+ 21EC34B824B069D8006B0ECB /* Configuration.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Configuration.hpp; sourceTree = "<group>"; };
+ 21EC34B924B069D8006B0ECB /* ELANTouchpadDriver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ELANTouchpadDriver.cpp; sourceTree = "<group>"; };
+ 21EC34BA24B069D8006B0ECB /* RMIBus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RMIBus.cpp; sourceTree = "<group>"; };
+ 21EC34BB24B069D8006B0ECB /* VoodooSMBusControllerDriver.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = VoodooSMBusControllerDriver.hpp; sourceTree = "<group>"; };
+ 21EC34BC24B069D8006B0ECB /* VoodooSMBusSlaveDeviceDriver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VoodooSMBusSlaveDeviceDriver.cpp; sourceTree = "<group>"; };
+ 21EC34BD24B069D8006B0ECB /* TrackpointDevice.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TrackpointDevice.cpp; sourceTree = "<group>"; };
+ 21EC34BE24B069D8006B0ECB /* Configuration.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Configuration.cpp; sourceTree = "<group>"; };
+ 21EC34BF24B069D8006B0ECB /* RMIBus.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RMIBus.hpp; sourceTree = "<group>"; };
+ 21EC34C024B069D8006B0ECB /* ELANTouchpadDriver.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ELANTouchpadDriver.hpp; sourceTree = "<group>"; };
+ 21EC34C124B069D8006B0ECB /* VoodooSMBusControllerDriver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VoodooSMBusControllerDriver.cpp; sourceTree = "<group>"; };
+ 21EC34C224B069D8006B0ECB /* helpers.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = helpers.hpp; sourceTree = "<group>"; };
+ 21EC34C324B069D8006B0ECB /* VoodooSMBusDeviceNub.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VoodooSMBusDeviceNub.cpp; sourceTree = "<group>"; };
+ 21EC34C424B069D8006B0ECB /* i2c_i801.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = i2c_i801.cpp; sourceTree = "<group>"; };
+ 21EC34C524B069D8006B0ECB /* VoodooSMBusIntelLpssI2C.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VoodooSMBusIntelLpssI2C.cpp; sourceTree = "<group>"; };
+ 21EC34C624B069D8006B0ECB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 21EC34C724B069D8006B0ECB /* rmi_smbus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rmi_smbus.cpp; sourceTree = "<group>"; };
2850FFBC24904435000FA6BC /* PS2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PS2.hpp; sourceTree = "<group>"; };
A41323E62492077C00907B0D /* Configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Configuration.cpp; sourceTree = "<group>"; };
A41323E72492077C00907B0D /* Configuration.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Configuration.hpp; sourceTree = "<group>"; };
@@ -84,6 +107,37 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 21EC34B024B069D8006B0ECB /* VoodooSMBus */ = {
+ isa = PBXGroup;
+ children = (
+ 21EC34B124B069D8006B0ECB /* helpers.cpp */,
+ 21EC34B224B069D8006B0ECB /* VoodooSMBusDeviceNub.hpp */,
+ 21EC34B324B069D8006B0ECB /* VoodooSMBusIntelLpssI2C.hpp */,
+ 21EC34B424B069D8006B0ECB /* rmi_smbus.hpp */,
+ 21EC34B524B069D8006B0ECB /* VoodooSMBusSlaveDeviceDriver.hpp */,
+ 21EC34B624B069D8006B0ECB /* i2c_smbus.h */,
+ 21EC34B724B069D8006B0ECB /* TrackpointDevice.hpp */,
+ 21EC34B824B069D8006B0ECB /* Configuration.hpp */,
+ 21EC34B924B069D8006B0ECB /* ELANTouchpadDriver.cpp */,
+ 21EC34BA24B069D8006B0ECB /* RMIBus.cpp */,
+ 21EC34BB24B069D8006B0ECB /* VoodooSMBusControllerDriver.hpp */,
+ 21EC34BC24B069D8006B0ECB /* VoodooSMBusSlaveDeviceDriver.cpp */,
+ 21EC34BD24B069D8006B0ECB /* TrackpointDevice.cpp */,
+ 21EC34BE24B069D8006B0ECB /* Configuration.cpp */,
+ 21EC34BF24B069D8006B0ECB /* RMIBus.hpp */,
+ 21EC34C024B069D8006B0ECB /* ELANTouchpadDriver.hpp */,
+ 21EC34C124B069D8006B0ECB /* VoodooSMBusControllerDriver.cpp */,
+ 21EC34C224B069D8006B0ECB /* helpers.hpp */,
+ 21EC34C324B069D8006B0ECB /* VoodooSMBusDeviceNub.cpp */,
+ 21EC34C424B069D8006B0ECB /* i2c_i801.cpp */,
+ 21EC34C524B069D8006B0ECB /* VoodooSMBusIntelLpssI2C.cpp */,
+ 21EC34C624B069D8006B0ECB /* Info.plist */,
+ 21EC34C724B069D8006B0ECB /* rmi_smbus.cpp */,
+ );
+ name = VoodooSMBus;
+ path = VoodooSMBus/VoodooSMBus;
+ sourceTree = "<group>";
+ };
A41323EA2492078A00907B0D /* Utility */ = {
isa = PBXGroup;
children = (
@@ -104,6 +158,7 @@
A4560F02247F381B0009CBE0 /* Headers */,
A4560EC9247F29EC0009CBE0 /* VoodooRMI */,
A4560EC8247F29EC0009CBE0 /* Products */,
+ 21EC34B024B069D8006B0ECB /* VoodooSMBus */,
);
sourceTree = "<group>";
};
diff --git a/VoodooRMI/Transports/RMISMBus.cpp b/VoodooRMI/Transports/RMISMBus.cpp
index 607e8dd..070ade5 100644
--- a/VoodooRMI/Transports/RMISMBus.cpp
+++ b/VoodooRMI/Transports/RMISMBus.cpp
@@ -35,7 +35,7 @@ RMISMBus *RMISMBus::probe(IOService *provider, SInt32 *score)
return NULL;
}
- device_nub->wakeupController();
+ /* device_nub->wakeupController(); */
device_nub->setSlaveDeviceFlags(I2C_CLIENT_HOST_NOTIFY);
do {
from voodoormi.
Hmm, that commit appears to be almost a month old. Or atleast, doesn't look right at all.
from voodoormi.
I found my error: I used the branch of VoodooSMBUS in your repo because I overlooked that the fixes for opencore where merged into mainline.
Duplicated symbols where resolved using mainline, but VoodooInput (loaded as plugin from inside the fresh VoodooRMI-build) doesn't seem to load on boot. VoodooSMBUS attaches in IOReg, but VoodooRMI is not.
If I unload VoodooInput, VoodooRMBUS & VoodooSMBUS manually afterwards and reload them, they are loading fine without any error (besides signatures), but I don't have the Trackpad-Prefpane or any functionality from the Touchpad/Trackpoint.
Do you have any idea where to look/what to do to help?
Edit: Again I had to comment out one line which might be related?
iff --git a/VoodooRMI/Transports/RMISMBus.cpp b/VoodooRMI/Transports/RMISMBus.cpp
index 607e8dd..070ade5 100644
--- a/VoodooRMI/Transports/RMISMBus.cpp
+++ b/VoodooRMI/Transports/RMISMBus.cpp
@@ -35,7 +35,7 @@ RMISMBus *RMISMBus::probe(IOService *provider, SInt32 *score)
return NULL;
}
- device_nub->wakeupController();
+ /* device_nub->wakeupController(); */
device_nub->setSlaveDeviceFlags(I2C_CLIENT_HOST_NOTIFY);
do {
from voodoormi.
Update:
VoodooRMI-Master + VoodooInput from the VoodooRMI-Master-build + VoodooSMBUS from the release-package are working fine:
❯ kextstat |grep -i voodoo
69 1 0xffffff7f845df000 0x14000 0x14000 as.acidanthera.voodoo.driver.PS2Controller (2.1.5) 2529B917-EE1A-3F67-88B9-12F21B0F5D0A <12 8 6 5 3 1>
78 1 0xffffff7f848d8000 0x31000 0x31000 de.leo-labs.VoodooSMBus (2.1) 672C9AAE-BC8B-3B92-9387-EB6CD2290386 <63 13 6 5 3>
80 0 0xffffff7f84919000 0x22000 0x22000 com.1Revenger1.VoodooRMI (0.5) 6E322A9B-83DC-3CF6-AF88-34BD377F7553 <78 63 6 5 3>
102 0 0xffffff7f845f8000 0xd000 0xd000 as.acidanthera.voodoo.driver.PS2Keyboard (2.1.5) 2BDE73B8-0F0D-3915-8D25-9DE623F7A209 <69 63 8 6 5 3 1>
114 0 0xffffff7f845c7000 0x18000 0x18000 me.kishorprins.VoodooInput (1.0.6) AC8ACC4A-1D2B-3CA1-8ECC-9B19093940CF <63 6 5 3>
Update 2:
While working fine if it loads up, the problem with failing init remains :/
It happens to me mostly on reboots while fiddleing around. VoodooInput doesn't show up entirely and VoodooRMI shows in Kextstat, but the tree under RMIBus is empty in ioReg. Nothing in the boot log...
from voodoormi.
Latest commit of RMI and SMBus from the release of RMI is still not loading VoodooInput on startup. So I unloaded the RMI kext and loaded it manually with kextutil and it's saying F12 isn't implemented.
2020-07-04 13:20:41.701230+0300 0x3c99 Default 0x7e65 986 0 AdvancedBlocking: (libswiftFoundation.dylib) AG: The extension received a message (getAdvancedBlockingData) from a script injected into (https://github.com/VoodooSMBus/VoodooRMI/issues/12) with userInfo ([:])
2020-07-04 13:21:24.878879+0300 0x3e56 Default 0x0 997 0 sudo: yusif : TTY=ttys000 ; PWD=/Users/yusif ; USER=root ; COMMAND=/usr/bin/kextutil Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooRMI.kext/ -vvvv -d Documents/Dev/Hackintosh/t490-macos/OC/Kexts/VoodooSMBus.kext/
2020-07-04 13:21:26.227072+0300 0x3e7a Default 0x0 0 0 kernel: (VoodooRMI) SMBus version 3
2020-07-04 13:21:26.228133+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) RMI Bus (DEBUG) Starting up!
2020-07-04 13:21:26.235684+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Debug: rmi_probe_interrupts: Counting IRQs.
2020-07-04 13:21:26.271114+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Debug: IRQ Count: 9
2020-07-04 13:21:26.271176+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Debug: rmi_init_functions: Creating functions.
2020-07-04 13:21:26.273791+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F34.
2020-07-04 13:21:26.273806+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Error: Unknown function: 34 - Continuing to load
2020-07-04 13:21:26.276401+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F01.
2020-07-04 13:21:26.297631+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Found RMI device, manufacturer: Synaptics, product: TM3471-010, fw id: 2867793
2020-07-04 13:21:26.306838+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F12.
2020-07-04 13:21:26.306852+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) F12 not implemented (Issue VoodooRMI/#6)
2020-07-04 13:21:26.312075+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F54.
2020-07-04 13:21:26.312088+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) F54 not implemented
2020-07-04 13:21:26.317296+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F3A.
2020-07-04 13:21:26.317310+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) F3A not implemented
2020-07-04 13:21:26.319903+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F03.
2020-07-04 13:21:26.327251+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F55.
2020-07-04 13:21:26.327265+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) F55 not implemented
2020-07-04 13:21:26.356475+0300 0x3e91 Default 0x0 0 0 kernel: (VoodooRMI) Start finished
2020-07-04 13:21:28.735001+0300 0x3e7b Default 0x0 0 0 kernel: (VoodooRMI) Error: Failed to read SMBus version. Code: 0xFFFFFFFA
from voodoormi.
Oops forgot to remove this line and the next https://github.com/VoodooSMBus/VoodooRMI/blob/master/VoodooRMI/RMIBus.cpp#L243 {line 243 and line 244). Mind just removing those and trying again?
from voodoormi.
from voodoormi.
latest commit should fix that, sorry
from voodoormi.
hmm it seems like rmibus doesn't attach properly now.
update: tried to load with kextutil - F12 can't attach
2020-07-04 23:41:55.844200+0300 0x2a8f Default 0x0 0 0 kernel: (VoodooRMI) SMBus version 3
2020-07-04 23:41:55.844986+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) RMI Bus (DEBUG) Starting up!
2020-07-04 23:41:55.852631+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: rmi_probe_interrupts: Counting IRQs.
2020-07-04 23:41:55.887408+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: IRQ Count: 9
2020-07-04 23:41:55.887469+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: rmi_init_functions: Creating functions.
2020-07-04 23:41:55.890022+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F34.
2020-07-04 23:41:55.890036+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Error: Unknown function: 34 - Continuing to load
2020-07-04 23:41:55.892594+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F01.
2020-07-04 23:41:55.913192+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Found RMI device, manufacturer: Synaptics, product: TM3471-010, fw id: 2867793
2020-07-04 23:41:55.923166+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Initializing F12.
2020-07-04 23:41:55.933157+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 - reg: 1 reg size: 32 subpackets: 70
2020-07-04 23:41:55.933177+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 - reg: 2 reg size: 1 subpackets: 129
2020-07-04 23:41:55.933191+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 - reg: 4 reg size: 1 subpackets: 64
2020-07-04 23:41:55.933205+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 - reg: 5 reg size: 12 subpackets: 74
2020-07-04 23:41:55.933221+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 - reg: 9 reg size: 8 subpackets: 124
2020-07-04 23:41:55.933234+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 - reg: 15 reg size: 1 subpackets: 64
2020-07-04 23:41:55.933247+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 - reg: 34 reg size: 24 subpackets: 45
2020-07-04 23:41:55.933261+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 - Data packet size: 0
2020-07-04 23:41:55.933269+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Error: F12 - No sensor tuning Control register
2020-07-04 23:41:55.933275+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Error: F12 - Failed sensor tuning
2020-07-04 23:41:55.933283+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Error: Function 12 could not attach
2020-07-04 23:41:55.933319+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Error: Function creation failed with code -19.
2020-07-04 23:41:55.933351+0300 0x2aa8 Default 0x0 0 0 kernel: (VoodooRMI) Could not start
2020-07-04 23:41:57.851288+0300 0x2a90 Default 0x0 0 0 kernel: (VoodooRMI) Error: Failed to read SMBus version. Code: 0xFFFFFFFA
from voodoormi.
Everything loads up fine now! The touchpad still doesn't move the cursor but at least I can see that my input is detected 2020-07-05 10:53:02.194162+0300 0x2b25 Default 0x0 0 0 kernel: (VoodooRMI) Debug: F12 Packet
from voodoormi.
Seems to be working fine on T480 also. Multiple reboots without hickup on init. Nice one! Thanks!
from voodoormi.
Ok now I'm experiencing weird behavior:
- trackpoint works as expected but the buttons don't react to single clicks, even though click and drag somehow works
- touchpad detects input but does not react to it. is it supposed to be sending events to the OS?
- RMI bus does not attach 100% of the time on system startup. Sometimes it fails and neither trackpoint nor touchpad work
from voodoormi.
I just pushed another commit which should hopefully fix the issues with F12
Also, I'm not sure about the buttons tbh. Are the buttons sending PS2 packets if you look in the log? They'd have mentions of F03
from voodoormi.
The touchpad is alive with the latest commit, thanks!
Some issues persist however:
- short strokes are fine but for longer strokes the touchpad just stops reacting to input, for example if I draw circles on the touchpad with one finger it stops moving the cursor almost right away or at best I can draw one full circle before it stops reacting
- trackpoint single click button is ignored, this is the log message
kernel: (VoodooRMI) Debug: F03 - Recieved data over PS2: 8
kernel: (VoodooRMI) Debug: F03 - Recieved data over PS2: 0
kernel: (VoodooRMI) Debug: F03 - Recieved data over PS2: 0
I am fairly certain it was working fine when I opened this issue and my setup is almost identical, so perhaps some bug introduced in the last 11ish days?
BetterTouchTool's live preview can detect all the gestures fairly accurately, they're just not translated to system events for some reason. Here's a screencast of BTT's live view (at the start and end I moved the cursor with my mouse, that's why the input wasn't detected but the cursor still moved). As you can see I continue to move my finger from left to right on the touchpad but the cursor stops moving.
Btw, slightly off-topic but would you consider opening a gitter chatroom or similar for this sort of thing where we go back and forth a lot, which imo does not necessarily work that well within the constraints of GitHub issues.
from voodoormi.
The voodooSMBus repo has a gitter so I think that would be preferable.
As for the cursor stopping - yeah I'm not sure why it happens. I think I messed something up abstracting the logic for the multi touch. I have issues with it as well with my trackpad.
from voodoormi.
@yusifsalam what kext are you using for battery status?
I had switched over to ACPIBatteryManager for Big Sur, and had thought that I had changed something in my own code messing stuff up. I moved back over to SMCBatteryManager and it appears that the random stopping doesn't happen anymore
from voodoormi.
I'm using the SMCBatteryManager with OpenCore on Catalina.
Also, I wasn't able to find the gitter you mentioned in the SMBus repo.
from voodoormi.
Btw, trackpoint buttons should be fixed in last commit. I attempted to fix the issue with the trackpad as well, though I really haven't been able to reproduce any issues since I moved back to SMCBatteryManager
from voodoormi.
According to what I've read, ACPIBatteryManager polls battery status. However, Laptop manufacturers cut corners and put obnoxious spin wait code to the function ACPIBatteryManager uses in order to make sure battery controller is initialized. Either of deleting sleep() in code or avoiding that function by SMCBatteryManager solves problem.
So I assume yusifsalam's issue is another one. I have similar problem where my pointer and physical finger traces do not quite match, but did not made issue report as I'm not sure if driver is the problem or Lenovo cheaped out on touchpad and this is what I get.
Do you think your touchpad is comparable with MacBooks' or MT2? I have another laptop with excellent I2C precision touchpad and it does feel legit with VoodooI2C. Fingers are basically directly mapped to cursor movement.
However my Thinkpad precision touchpad (Windows spec shows I2C and USB are only available as device protocol, yet laptop sees a precision touchpad. So.. I guess SMBus counts as I2C?) feels somewhat off with VoodooRMI.
from voodoormi.
Related Issues (20)
- SYNA2B3C Trackpad suddenly stops working HOT 2
- Can't work on Samsung Notebook 900X3L HOT 5
- HP Omen 15 Synaptics touchpad only works properly after sleep HOT 21
- Thinkpad x280 Trackpoint deadzone/lowresolution HOT 1
- Thinkpad P51 won't boot up w/ RMI [SOLVED] HOT 6
- Not working on Thinkpad P51 (with logs). Help needed! [SOLVED] HOT 11
- Tap to click not working on HP Envy 13 2018 HOT 1
- SMBUS Synaptics SYN327C only works properly after sleep. HOT 3
- Thinkpad x1 carbon gen 6 trackpad stops working after sleep on macOS 13.1 HOT 3
- SYNA 2B52 stops working after a couple sec HOT 3
- Sluggish i2c-SYNA328b HOT 2
- Force Touch not respecting palm rejection rules. HOT 2
- Lenovo T490: Erratic Mouse Pointer behavior in BootPicker HOT 20
- SYNA32CB support HOT 5
- Support for 0x432f touchscreen by Raydium HOT 1
- [X1C6] Thumb/Joint is not detected properly -> Click+drag not working HOT 8
- RMI_READ_DATA_REPORT_ID
- Tap to click not working normally HOT 1
- No support for SYNA2B3E
- No support for SYNA329D
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from voodoormi.