VIA VL805 USB 3.0 PCIe adapter: Forget about Linux (?)
TL;DR
Bought an Orico PCIe adapter for USB 3.0 for testing a USB device I’m developing (PVU3-5O2I). It has the VL805 chipset (1106/3483) which isn’t xHCI compliant. So it works only with the vendor’s own drivers for Windows, which you’ll have to struggle a bit to install.
Update: Be sure to read the comments at the bottom of this post. It appears like some people have had different experiences.
Attempt with Linux
That the device is detected by its class (xHCI), and not by its Vendor / Product IDs.
The following was found in the kernel log while booting:
[ 0.227014] pci 0000:03:00.0: [1106:3483] type 00 class 0x0c0330 [ 0.227042] pci 0000:03:00.0: reg 0x10: [mem 0xdf000000-0xdf000fff 64bit] [ 0.227104] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.227182] pci 0000:03:00.0: System wakeup disabled by ACPI
and
[ 0.325254] pci 0000:03:00.0: xHCI HW did not halt within 16000 usec status = 0x14
and then
[ 1.474178] xhci_hcd 0000:03:00.0: xHCI Host Controller [ 1.474421] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 3 [ 1.505919] xhci_hcd 0000:03:00.0: Host not halted after 16000 microseconds. [ 1.506066] xhci_hcd 0000:03:00.0: can't setup: -110 [ 1.506241] xhci_hcd 0000:03:00.0: USB bus 3 deregistered [ 1.506494] xhci_hcd 0000:03:00.0: init 0000:03:00.0 fail, -110 [ 1.506640] xhci_hcd: probe of 0000:03:00.0 failed with error -110
The error message comes from xhci_halt() defined in drivers/usb/host/xhci.c, and doesn’t seem to indicate anything special, except that the hardware doesn’t behave as expected.
Update firmware, maybe?
The idea was to try updating the firmware on the card. Maybe that will help?
So I downloaded the driver from the manufacturer and the firmware fix tool from Station Drivers.
Ran the firmware fix tool before installing the driver on Windows. It went smooth. Then recycled power completely and booted Linux again (the instructions require that). Exactly the same error as above.
Went for Windows again, ran the firmware update tool, and this time read the firmware revision. It was indeed 013704, as it should be. So this doesn’t help.
Install driver on Windows 10
Checking in the Device Manager, the card was found as an xHCI controller, but with the “device cannot start (Code 10)”. In other words, Windows’ xHCI driver didn’t like it either.
Attempted installation of the driver. Failed with “Sorry, the install wizard can’t find the proper component for the current platform. Please press OK to terminate the install Wizard”. What it actually means is that the installation software (just downloaded from the hardware vendor) hasn’t heard about Windows 10, and could therefore not find an appropriate driver.
So I found the directory to which the files were extracted, somewhere under C:\Users\{myuser}\AppData\Local\Temp\is-VJVK5.tmp, and copied the USetup directory from there. Then selected xhcdrv.inf for driver installation. It’s intended for Windows 7, but it so happends, that generally drivers for Windows 7 and Windows 10 are the same. It’s the installer that was unnecessarily fussy.
After installing this driver, a “VIA USB eXtensible Host Controller” entry appeared in the USB devices list of the Device Manager, and it said it works properly.
After a reboot, there was “xHCI Root Hub 0″ under “Other Devices” of the Device Manager, with the error message “The drivers for this device are not installed”. It was available under the same USetup directory (ViaHub3.inf).
This added “VIA USB 2 Hub” and “VIA USB 3 Root Hub” to the list of USB devices, and believe it or not, the card started working.
Bottom line: It does work with its own very special drivers for Windows, with a very broken setup procedure.
Apr 2021 update: It turns out that the driver can be downloaded from Gigabyte’s site, as the device is apparently on their GA-78LMT-USB3 motherboard. The file name is mb_driver_via-usb3.exe, and this is the only one I managed to install, and the card works great with it. Other driver packages failed with the installer saying that it “can’t find the proper component”, whatever that meant.
Reader Comments
The VL 805-Q6 cards we purchased online from Walmart for 9.66 usd per card worked fine here in the lab on LINUX. They work on both Fedora 26 (4.16.11-100.fc26.x86_64) and Fedora 28 kernels. These kernels run on two distinct motherboards and BIOS makes and models. We keep meticulous records of our dnf installs, and none have the case insensitive strings “pci” or “usb” or “tty” in the package name, so Fedora has apparently installed with what is needed for some time. Upon machine start-up, one of the PCI or USB or TTY related services created three fresh /dev/ttyACM* devices for Arduino Mega 2560 USB port and Due programming and native USB ports. They are providing upload and data transfer limited in speed only by the embedded USB ports and the C and C++ running at real time priority on LINUX.
Tried again with Linux kernel 5.3.0 (most recent one as of today). Nothing changed.
Apparently rolling back the firmware 013600 work as per this post : https://ubuntuforums.org/showthread.php?t=2390208
The kubuntu 18.04 sees and writes to the LV805 chip embedded in my motherboard (even live disc)
Debian live disc (early last years distro) also reconised it
The website lists win10 driver support but I only have win7 & winxp on that motherboard
Hi all.
Hi have the same type card Orico Via Vl 805.
This card give me very bad trip. Always work on first start with some kernel version but after one or two suspend the card is lost and any disk mount possible many error of communication etc..After have upgrade to the firmware about saying in the article from station driver that was a little bit better but horrible unstability…I have found by some post that the rpi4 have this chip and bin file for the vl805 and i see more recent version from july 2020.. so i try again a new firmware and this miracle..the card is running like she must run if was a good card. So i have update whith the flash tool from station driver and bin file version 138a1
from :
https://github.com/raspberrypi/rpi-eeprom/raw/master/firmware/stable/vl805-000138a1.bin
And i use the LTS Xanmod kernel 5.4.77-xanmod1 #0~git20201111.4ed38ba because more recent version give absolute crash of communication with the usb3 drive or other… I have not test with standard kernel because when i have done before the result was more bad than with Xanmod..perhaps now this ok too…but i haven’t time to test and i always use the xanmod now.
https://xanmod.org/
Hope that’s resolve problem for many many of person because i have this card since 2016 and this a pity to use it on Linux..just able to use it after a fresh reboot..very very annoying.. i have try to rebind unbind it and so and so…change power management setting ..remove iommu and so..anything work…but now this work for me with the standard debian 10 install and Xanmod Lts kernel and firmware 138a1.
The “wonderfull crashing card” buy in 11/11/2016 for reference..
https://www.aliexpress.com/item/32572289266.html?spm=a2g0s.9042311.0.0.27424c4dsqpGP8