Huh, I was planning on trying an XL330-288T I had lying around, just in case it had something to do with the XC330.
Before I did that, I tried again with the XC330 and it just… updated firmware immediately without an issue when I clicked the “Update” button
I did find that my XC330 motors have high idle temperature as noted by another user. When I started them up and did firmware update, they were at 45C, a few minutes later they’re at 57C. If there’s any chance the temperature would affect the firmware update…
Anyway, I’ll mark this as solved, and glad I could get the firmware update working with my setup!