reluctantflux Posted December 9, 2014 Share Posted December 9, 2014 I'm having an issue with USB Passthrough of a Tripp Lite USB 2.0 over Cat5. Here's the rundown: 1) The device is basically a USB NIC that talks over an ethernet cable to a usb hub on the other side of the network cable. 2) The device shows up in an ssh session with lsusb resulting in: Bus 003 Device 013: ID 0b95:1780 ASIX Electronics Corp. AX88178 3) The device works fine with my Win 8.1 Pro Surface tablet. 4) I can see the device with the same driver in my Win 8.1 VM, except the device cannot start (Code 10). 5) Even though I can see it using an lsusb call, in VMman, the device shows up as Device: Blank, Identification: Blank, Driver: none, Vendor: Unknown, Product: Unknown. 6) I've done all the basic troubleshooting (restarting host, restarting VM, reinstalling drivers, trying different drivers, etc.) I *think* it has to do with the USB controller in my XML settings. <domain type='kvm' id='2'> <name>Gaming</name> <uuid>50c291fb-b433-a522-fae8-fb576a964cc7</uuid> <memory unit='KiB'>19531776</memory> <currentMemory unit='KiB'>19531252</currentMemory> <vcpu placement='static'>4</vcpu> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type> <boot dev='hd'/> <boot dev='cdrom'/> <bootmenu enable='yes' timeout='3000'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='localtime'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='yes'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/mnt/cache/iso/Win81Pro.iso'/> <backingStore/> <target dev='hdc' bus='ide'/> <readonly/> <alias name='ide0-1-0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/mnt/cache/iso/virtio-win-0.1-81.iso'/> <backingStore/> <target dev='hdd' bus='ide'/> <readonly/> <alias name='ide0-1-1'/> <address type='drive' controller='0' bus='1' target='0' unit='1'/> </disk> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF906981Z'/> <backingStore/> <target dev='hdc' bus='virtio'/> <alias name='virtio-disk2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <controller type='usb' index='0'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='pci' index='0' model='pci-root'> <alias name='pci.0'/> </controller> <controller type='ide' index='0'> <alias name='ide0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='bridge'> <mac address='52:54:00:15:fb:47'/> <source bridge='br0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target port='0'/> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <input type='tablet' bus='usb'> <alias name='input0'/> </input> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0'> <listen type='address' address='0.0.0.0'/> </graphics> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x0b95'/> <product id='0x1780'/> <address bus='3' device='6'/> </source> <alias name='hostdev0'/> </hostdev> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </memballoon> </devices> </domain> Quote Link to comment
reluctantflux Posted December 9, 2014 Author Share Posted December 9, 2014 I tried adding the following for preparation of adding a GPU passthrough on this same VM, thinking maybe theses USB controllers would help and the XML saves successfully, but when I go to start the VM, it simply says "error" <controller type='usb' index='0' model='ich9-ehci1'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <alias name='usb0'/> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <alias name='usb0'/> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <alias name='usb0'/> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x2'/> </controller> Quote Link to comment
johnodon Posted December 9, 2014 Share Posted December 9, 2014 Those USB-over-Ethernet adapters have been the cause of all of my USB passthrough issues. They would randomly disconnect/reset and cause the attached device (flirc in my case) to obtain a new device ID. I have since moved away from them and got active USB extension cables and have not had a single issue. I think I mention it here: http://lime-technology.com/forum/index.php?topic=36508.0 John Quote Link to comment
reluctantflux Posted December 9, 2014 Author Share Posted December 9, 2014 Bah! Then I have to run new cables from my basement, up my stack to the attic, and then back down to my office. I'll do it if I have to, though. How long is your run? Have you had success with putting a regular hub on the other end? Quote Link to comment
johnodon Posted December 9, 2014 Share Posted December 9, 2014 The ones I bought are 32ft (http://www.amazon.com/gp/product/B005LJKEXS/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1) but they make them longer. Quote Link to comment
reluctantflux Posted December 9, 2014 Author Share Posted December 9, 2014 So of course I decide to keep messing around after I've already started the Amazon return process and purchased new Active USB extenders. Turns out, it was the controller issue I originally thought it was. To get around the vague "error" messages I was getting when trying to start my VM after changes, I started my vm using virsh create on CLI. This would give me a more detailed error on what was failing, but unfortunately, this destroys the xml file, so it was a good thing I kept a backup. Long story short, adding the <controller> parts, recommended in Jonp's KVM passthrough pointers post, allowed the USB over cat5 to start properly within Windows. As an aside, I had to remove all of the <address> portions, otherwise there were conflicts and the XML wouldn't save. The USB extender software that I needed to install on my Windows VM picked up my Razer Copperhead mouse, and HP keyboard right away. I'm curious to see performance with my Logitech G930 headset tonight when I get home. The USB over Cat5 extender that I'm using is the Tripp Lite 4-port USB 2.0 over Cat5. It remains to be seen if this is reliable. The reason I wanted to go this route instead of Active USB extenders is I reaaaally didn't want to run new USB cabling through my house, and if I got this to work, since it's a single device on the host side, anything I plug in on the remote side will show up without having to reboot the vm. I need to test this further, but so far this appears to be true. If anyone has any questions, let me know. Here's my working XML. Going to be adding a new vid card tonight for GPU passthrough. <domain type='kvm' id='24'> <name>Gaming</name> <uuid>50c291fb-b433-a522-fae8-fb576a964cc7</uuid> <memory unit='KiB'>17301504</memory> <currentMemory unit='KiB'>4000000</currentMemory> <vcpu placement='static'>4</vcpu> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-q35-2.1'>hvm</type> <boot dev='hd'/> <boot dev='cdrom'/> <bootmenu enable='yes' timeout='3000'/> </os> <features> <acpi/> <apic/> <pae/> </features> <cpu mode='host-passthrough'> <topology sockets='2' cores='2' threads='1'/> </cpu> <clock offset='localtime'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='yes'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF906981Z'/> <backingStore/> <target dev='hdc' bus='virtio'/> <alias name='virtio-disk2'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x02' function='0x0'/> </disk> <controller type='sata' index='0'> <alias name='sata0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <controller type='pci' index='0' model='pcie-root'> <alias name='pcie.0'/> </controller> <controller type='pci' index='1' model='dmi-to-pci-bridge'> <alias name='pci.1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/> </controller> <controller type='pci' index='2' model='pci-bridge'> <alias name='pci.2'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/> </controller> <controller type='usb' index='0' model='ich9-ehci1'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x04' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <alias name='usb0'/> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x04' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <alias name='usb0'/> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x04' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <alias name='usb0'/> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x04' function='0x2'/> </controller> <interface type='bridge'> <mac address='52:54:00:15:fb:47'/> <source bridge='br0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/2'/> <target port='0'/> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/2'> <source path='/dev/pts/2'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0'> <listen type='address' address='0.0.0.0'/> </graphics> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> </video> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x0b95'/> <product id='0x1780'/> <address bus='3' device='6'/> </source> <alias name='hostdev0'/> </hostdev> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x03' function='0x0'/> </memballoon> </devices> </domain> Quote Link to comment
reluctantflux Posted December 10, 2014 Author Share Posted December 10, 2014 Here's an update after testing, so that people know what to expect with the Tripp Lite 4-port USB 2.0 over cat5. 1) The local device is a usb to gigabit nic. The remote side is a usb server hub. There is a program that starts at logon that makes the connection to the remote hub. This prevents you from being able to login with devices on the extended hub. Why they didn't design it as a service instead of an application is beyond me. This won't be an issue if you have auto-logon. 2) It did not work with my Logitech G930 gaming headset. I thought this might be an issue as their specs did explain that it does not work with isochronous data transfers (items such as cameras and speakers sometimes use this). As I couldn't find any mention one way or another on Logitech's website, I figured I'd give it a shot. Once I plugged in the wireless headset adapter usb, it broke the mouse and keyboard from working. 3) When the headset wasn't plugged in, and I was logged on, the keyboard and mouse worked flawlessly for the time that I used it. At that point, though, I didn't really need a USB 2.0 extender, which made the purchase unnecessarily expensive ($150). I'm returning this cat5 extender, going with some active usb extenders, and running them through my house this weekend. I plan on putting a powered hub on the other end. Quote Link to comment
htpcnewbie Posted December 11, 2014 Share Posted December 11, 2014 +1 on the usb extenders+powered hub. I use the 40+ ft Monoprice version and they work quite well. Here's an update after testing, so that people know what to expect with the Tripp Lite 4-port USB 2.0 over cat5. 1) The local device is a usb to gigabit nic. The remote side is a usb server hub. There is a program that starts at logon that makes the connection to the remote hub. This prevents you from being able to login with devices on the extended hub. Why they didn't design it as a service instead of an application is beyond me. This won't be an issue if you have auto-logon. 2) It did not work with my Logitech G930 gaming headset. I thought this might be an issue as their specs did explain that it does not work with isochronous data transfers (items such as cameras and speakers sometimes use this). As I couldn't find any mention one way or another on Logitech's website, I figured I'd give it a shot. Once I plugged in the wireless headset adapter usb, it broke the mouse and keyboard from working. 3) When the headset wasn't plugged in, and I was logged on, the keyboard and mouse worked flawlessly for the time that I used it. At that point, though, I didn't really need a USB 2.0 extender, which made the purchase unnecessarily expensive ($150). I'm returning this cat5 extender, going with some active usb extenders, and running them through my house this weekend. I plan on putting a powered hub on the other end. Quote Link to comment
johnodon Posted December 11, 2014 Share Posted December 11, 2014 relectant, I know that this does not apply to your application but figured I would mention it as it may help other avoid long USB runs. If your USB devices that you want to attach to your VMs are merely remote control IR receivers (i.e. flircs), you could always op to get an IF-RF converter like this: http://www.amazon.com/Next-Generation-Remote-Control-Extender/dp/B000C1Z0HA/ref=sr_1_1?ie=UTF8&qid=1418297050&sr=8-1&keywords=ir+rf+converter I have never tried this but it gets really good reviews. I'm starting to wish I went this route first. John Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.