EDIT: if you have uPD720202 and firmware update does not work for you, check the tool mentioned in this post later in the thread
So I recently set up my OpenSUSE KVM passthrough host, and as many other people I wanted to pass through a USB PCIe card to the system.
I installed a cheap Rensas uPD720201 PCIe card from Ebay to the M.2 slot from the CPU, added its PCIe ID to the vfio script list so it’s locked out and not used by Linux. Passedthrough and started the VM…
and the VM showed all the known issues as said in this forum: the VM crashes or is unstable, it boots slowly, and more importantly the USB card does not actually work in the VM at all.
How unexpected. But I’m a strong man with manly hair on the chest, I’m not giving up.
I personally believe that Rensas is a reputable manufacturer and their driver support is pretty decent on all platforms (so much better than Fresco and VIA, for the very least), and knowing a thing or two about cheap chinese stuff, it’s almost guaranteed that firmware flashed at factory is ancient and buggy. Time to update the firmware. It’s actually easy to do, there are Windows installers for that.
WARNING DISCLAIMER: I take no responsibility, if you do this yourself you take full responsibility for what you are doing.
Some background info: these cheap and cheerful 2-4 port cards don’t have brand-specific firmware, any difference is in the electrical and physical parts (you either have USB ports or USB headers, for the chip it does not matter much).
Yes you heard it here first, you don’t need to get the Startech card Jack's Hardware: The Ultimate VFIO USB 3.0 Controller
any other using the same chipset will do if you just update the firmware.
So I looked at the good old station-drivers.com for a firmware update for that chipset. I used that site before and I kind of trust it.
Found some. Renesas/Nec uPD720201/720202
There is also the Startech firmware upgrade package that must be run from DOS 2 Port PCIe USB 3.0 Card Adapter w/ UASP - USB 3.0 Cards and since Startech is an actually decent company the package actually provides full release notes for what was fixed in what version of this firmware.
I’m not a fan of running it from DOS if I can avoid it, so I tried the Windows applications first.
Tried upgrading with the oldest firmware from the list, 2.0.2.0, which is a release from 2012. Kind of ancient, but I had a hunch. Placed it in a Win10 PC with a free PCIe slot.
Hah! It upgraded, so the firmware onboard was older than that. Or maybe it does not check firmware version before flashing?
Tried updating again with same firmware to check if the updater actually checks firmware version.
Aaand yes it does, it stops updating and tells me “firmware is already updated”. Good to know, it’s a thing to keep in mind, you can’t rollback to a previous version with these tools, so the sane way is to update to the next version and test it with the VM passthrough.
I have updated to 2.0.2.6 (same version as Startech firmware update package, which says this version was released in November 12, 2013 ) and now it’s allright. Now the VM starts at normal speed and USB work. If there is any test I can do, please tell me.
It seems the updater application will error out if there is more than one Rensas chipset to upgrade in the same system, so the people that have the fancy x4 cards with multiple controllers might be out of luck (unless you manage to disable the controllers selectively, I guess it’s doable if you fancy some microsoldering to keep the reset pin shorted to ground or something).
I had a look at the DOS executable that flashes the firmware in the Startech firmware upgrade package and it seems to have a pretty big help printout talking about all various commands you can use with it. I think that you can get it to flash newer firmware into the special x4 cards too.
I really think I’m going to buy one of those to try this out.