제목 그래로 입니다.
Ryan Govostes came up with a better solution. Thunderbolt3Unblocker uses a separate kext and override
IOThunderboltFamily in runtime. That approach is better because you don't need to manually re-apply the binary patch everytime when there is a macOS update.
For unknown reasons, Apple decided to block the support for some categories of Thunderbolt 3 peripherals under macOS and when you connect those Thunderbolt 3 peripheral, you simply get an "Unsupported" message under Thunderbolt Device Tree. After digging around, it turns out the block is implemented in software level and it is possible to bypass the block by patching the related kext. This patch modifies IOThunderboltFamily and allows "Unsupported" Thunderbolt 3 peripherals to work under macOS Sierra.
I cannot be sure whether blocking the Thunderbolt 3 peripherals is purely a business decision or actually trying to protect MacBook Pro defected Thunderbolt 3 peripherals. However, given those peripherals work fine under Windows via Boot Camp, it doesn't look like the block exists for protection.
I took most steps I could to ensure kitten safety, but can make no warranty. In any case you're on your own. This is ultimately a sensitive hack and you take full responsibility by running this script.
I have tested the patch on MacBook Pro 13,3 with macOS 10.12.1 (16B2659) and there are reports of this working with MacBook Pro 13,1.
Disable System Integrity Protection
Run the script from Terminal
Run with no arguments to see a quick reminder. Here's something more extensive about what's actually done:
apply applies the patch, after making sure we know the
file we're applying to, backing it up only if it's
the original one, and subsequently checking if the
patch applied correctly.
restore restores from the previously made backup.
status shows current situation, including status of the file
and whether a backup is available.
In any case of changing success, the kext cache gets cleared.
Thunderbolt 3 Unblocker
This project provides a kernel extension that unblocks unsupported Thunderbolt 3 peripherals (such as the Razer Core) on macOS.
This accomplishes the same goal as KhaosT's TB3 Enabler, which works by patching IOThunderboltFamily on disk. This kernel extension performs the patch in memory and on-the-fly.
Note there is likely a reason why IOThunderboltFamily considers a peripheral unsupported in the first place. Use at your own peril.
This kernel extension was last tested against macOS Catalina 10.15.0, macOS Mojave 10.14.5, macOS High Sierra 10.13.4 and macOS Sierra 10.12.6. Please check for open issues before using on other versions, and review the troubleshooting guide.
Please head over to the Releases page for binaries and installation instructions.
To prepare your development environment, please run
git submodule update --init --recursive
brew install cmake
Build the project with Xcode. Make sure to change code signing settings as appropriate.
Load the kernel extension with:
sudo chown -R root:wheel Thunderbolt3Unblocker.kext
sudo kextload Thunderbolt3Unblocker.kext
If loading the kext fails: Reboot into Recovery Mode and disable kext security restrictions using
csrutil enable --without kext.
If you are developing the kext, you should know that the NVRAM variable
t3u-incompatible is written whenever there is a panic while loading the kext. The presence of this variable prevents the kext from loading again on the same system version. You may want to disable the code that does this (in Thunderbolt3Unblocker.c), or delete it with
nvram -d t3u-incompatible.
This project also implements a simple, reusable in-memory kernel patching library. The author has released it under a permissive license in the hopes that it will be useful.
원문 그대로 올렸습니다.