More USB tips & tricks ====================== Recently the USB pass through driver (also known as usb-host) and the QEMU USB subsystem gained a few capabilities which are available only via qdev properties, i,e. when using '-device'. USB pass through hints ---------------------- The usb-host driver has a bunch of properties to specify the device which should be passed to the guest: hostbus= -- Specifies the bus number the device must be attached to. hostaddr= -- Specifies the device address the device got assigned by the guest os. hostport= -- Specifies the physical port the device is attached to. vendorid= -- Specifies the vendor ID of the device. productid= -- Specifies the product ID of the device. In theory you can combine all these properties as you like. In practice only a few combinations are useful: (1) vendorid+productid -- match for a specific device, pass it to the guest when it shows up somewhere in the host. (2) hostbus+hostport -- match for a specific physical port in the host, any device which is plugged in there gets passed to the guest. (3) hostbus+hostaddr -- most useful for ad-hoc pass through as the hostaddr isn't stable, the next time you plug in the device it gets a new one ... Note that USB 1.1 devices are handled by UHCI/OHCI and USB 2.0 by EHCI. That means a device plugged into the very same physical port may show up on different buses depending on the speed. The port I'm using for testing is bus 1 + port 1 for 2.0 devices and bus 3 + port 1 for 1.1 devices. Passing through any device plugged into that port and also assign them to the correct bus can be done this way: qemu -M pc ${otheroptions} \ -usb \ -device usb-ehci,id=ehci \ -device usb-host,bus=usb-bus.0,hostbus=3,hostport=1 \ -device usb-host,bus=ehci.0,hostbus=1,hostport=1 enjoy, Gerd -- Gerd Hoffmann