For enabling Universal Control on older Macs, there are three ways.
(All of these requires you to enable the feature flag and disable SIP)
- Use khronokernel's kext: https://twitter.com/khronokernel/status/1428407216931999749
(I haven't tried this but it looks like it'd work)
- use DYLD_INSERT_LIBRARIES:
clang -o liboverride_model.dylib override_model.c -framework IOKit -framework CoreFoundation -shared
sudo launchctl debug gui/$UID/com.apple.ensemble --environment DYLD_INSERT_LIBRARIES="/Users/zhuowei/liboverride_model.dylib"
launchctl stop com.apple.ensemble
launchctl start com.apple.ensemble
- use lldb:
sudo launchctl debug gui/$UID/com.apple.ensemble --start-suspended
launchctl stop com.apple.ensemble
launchctl start com.apple.ensemble
lldb -n UniversalControl
b PlatformModelIsSupported
c
thread return 1
c
thread return 1
c
I didn't override the check for the Display pane with the dylib method (it's an XPC service and I don't know how to inject code into them). You'll have to connect either by moving your mouse to the side or using the Display panel from a supported computer.
The Kext linked in the other gist would probably work for that, although I haven't tested it. Using lldb to attach to the XPC service also works.