[Sticky] [SCRIPT] TBTFlash - Convenient eGFX Flashing for macOS
Page shortcut: https://egpu.io/tbt-flash
Nov. 13, 2020: macOS 11.0.1 disables patches implemented by TBTFlash. Stay tuned for updates.
It certainly isn't a stretch to say that eGFX flashing has generally been problematic and unnecessarily complicated. Limitations ranged from requiring certain kinds of hosts, Thunderbolt 3, using specific versions of Windows tools, and certain types of firmware files. eGPU.io created a Thunderbolt 3 User Map to enable users around to globe to reach out to fellow eGPU.io members nearby to flash eGFX firmware. Only this community would have thought of that! However, coverage is certainly limited and all in all, sending and receiving PCBs is far from convenient. TBTFlash is an attempt to change all of that.
TBTFlash allows Mac users to flash eGFX firmware without limitations. With initial release, I have confirmation that it works successfully on the Mantiz Venus, AORUS Gaming Box, and the Sonnet eGFX boxes. The more users there are, the more limitations of this tool I will discover - and patch :p, in hopes that it becomes more versatile. The process is super-simple: Acknowledge the risks involved with flashing, follow the instructions in the script, provide it the firmware file, and flash your eGFX. Reboot and voila! Flashing uses Apple's native macOS mechanism that it built for flashing the Blackmagic eGPU and probably for its host Thunderbolt controllers, so you will be greeted with an Apple logo and progress bar as the eGFX is flashed. I advise against flashing any firmware that is not from the original manufacturer of the eGFX enclosure. However, in cases where the boards are same such as with Sonnet and Mantiz, it is indeed possible to cross-flash.
The possibilities with this tool are yet untapped. This tool could probably flash non-eGFX devices and host controllers too. In fact, given that the flasher runs in EFI, and apparently uses standard EFI drivers to flash firmware (though I have not fully analyzed it), it should be possible to further modify this tool and get it running on ANY system, not just Macs. The main barrier is that this tool (of course) contains some of Apple's proprietary stuff (such as graphics/progress bar). But it does have a text-only mode that it automatically switches to when run in EFI shell. Furthermore, this tool performs a board ID check (relevant to Macs) but it is non-blocking. I have not patched this as it is not required.
Start with the script's wiki page. A thank you is amazing and enough, but if you really want to, please star the Github repo. And here's a way to donate if you loved this tool:
@mac_editor Thanks to your dedication and hard work on the TBT FW project, we now have a convenient tool to get this job done in less than 5 minutes! We will soon retire the Thunderbolt 3 User Map. The next hurdle is firmware collection and distribution. Due to the risky nature of firmware flashing, we should have a defined process to share FW not available publicly through the Thunderbolt manufacturer website.
Below are the Thunderbolt 3 enclosures with their FW version and Power Delivery [link indicates available firmware].
Please contact our admin/moderator team if you'd like to share a firmware to these TB3 enclosures. We will test-flash with our unit to confirm prior to sharing through the forum.
Could add the firmware downloads to original post as a separate section for clarity (though it'll be right under it anyway).
@mac_editor FW flash was just as easy through Thunderbolt 2! My 2015 15-in MacBook Pro is running the Sonnet Breakaway Box thanks to your Purge-Wrangler script to use RX 480 so SIP was already disabled. Power Delivery is no use through the Apple Thunderbolt 3 to Thunderbolt adapter but the system and flashing process did not skip a beat. All done in one shot with eGPU installed. This is a much better experience than the official Intel FW Tool. Amazing work! 😀
Well that sounds amazing to me too :p less work after all haha. Seems like Apple’s EFI tool is quite versatile.
Released a minor update (1.0.1) that improves flashing speed by up to 30% (from start to end of progress bar). Also started a bit of firmware analysis and immediately things look a little interesting. The detected data offsets for the firmwares are exactly the same. The firmwares are of almost the same size. The Sonnet 60W firmware has some hash constants at the end and is overall smaller vs. the other firmwares I have on hand. I suddenly have a very strong feeling that most firmwares are really the same, with different device and vendor IDs along with different H2D and PD configurations. A quick look inside and I could easily change the device name (yet to flash). By analyzing differences between firmwares it should hopefully not be too difficult to pinpoint where H2D and PD are configured. The only drawback is that I'll likely have one shot of flashing custom firmware - if it works out, all well, otherwise I might have a Sonnet brick :p
@mac_editor I think so too. The major components are very similar if not the same. Would be cool to change the Vendor IDs and Enclosure Names. As far as I'm concerned we've been providing more support and customization options for these eGPU enclosures than Intel and manufacturers so it's about time we name them whatever we want.
Yes, flashing the Mantiz firmware should get you 87W PD. If you have the I/O board Mantiz uses, then that should work too - though the Sonnet box does not have cutouts for said ports.
Stay tuned for updates 😉
@mac_editor, XG Station Pro [29.1 15W] is a good candidate to test Power Delivery modification. It would be a lot more popular had ASUS used a firmware with at least 60W. I have a test unit if you want to give a go.