So I managed to get Windows 7 running with VGA-Passthrough without any big issues, except I can't get pass Logitech Driving Force Pro to Windows. My specs are:
- CPU: i7-3770 - MB: Asus P8Z77-V Pro - GPU: Sapphire HD 7950 Vapor-X OC (Boost) - Distro: Arch Linux with linux-vfio kernel from aur Since HD 7950's BIOS does not support UEFI it runs with SeaBIOS, but I doubt its important. I am using linux-vfio <https://aur.archlinux.org/packages/linux-vfio/> kernel (4.4.0-4) and I am using these boot parameters: rw i915.enable_hd_vgaarb=1 intel_iommu=on intel_iommu=igfx_off The script I am running the VM with: #04f2:0116 chicony white keyboard #1131:1001 bluetooth dongle #054c:0268 ps3 echo "turning off main monitor so it can switch to displayport" QEMU_AUDIO_DRV=pa QEMU_PA_SERVER=localhost PULSE_SERVER=localhost QEMU_PA_SAMPLES=16 sudo xrandr --output HDMI3 --off --output HDMI1 --auto sudo qemu-system-x86_64 \ -enable-kvm \ -m 10240 \ -cpu host,kvm=off \ -smp 4,sockets=1,cores=4,threads=1 \ -vga none \ -rtc base=localtime \ -device ich9-usb-uhci3,id=uhci \ -device usb-ehci,id=ehci \ -device nec-usb-xhci,id=xhci \ -soundhw hda \ -device vfio-pci,host=01:00.0,x-vga=on,multifunction=on \ -device vfio-pci,host=01:00.1 \ -drive file=/motherstorage/KVM/windows7.img,format=raw,if=none,id=drive-ide0-1-0 \ -device ide-hd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 \ -drive file=/motherstorage/KVM/data_games.img,format=raw,if=none,id=drive-ide0-1-1 \ -device ide-hd,bus=ide.1,unit=1,drive=drive-ide0-1-1,id=ide0-1-1 \ -usbdevice host:04f2:0116 \ -usbdevice host:1131:1001 \ -usbdevice host:054c:0268 \ -netdev user,id=vmnic -device virtio-net,netdev=vmnic #on igpu main monitor xrandr --output HDMI3 --auto --right-of HDMI1 echo "turning main monitor back on" xrandr --output HDMI3 --auto I use some old Bluetooth Dongle(host:1131:1001) and DualShock 3 (host:054c:0268) with XInput Wrapper for DS3 <http://forums.pcsx2.net/Thread-XInput-Wrapper-for-DS3-and-Play-com-USB-Dual-DS2-Controller?pid=186161#pid186161> and it works perfectly. Although I have to sometimes reconnect Bluetooth Dongle so it loads properly, but I have to do the same thing on native Windows, so that is expected. I also tried Thrustmaster T1600M, no issues. But Windows just can't get detect the Logitech Driving Force(046d:c294) which is probably the wheel locked in 270 degrees mode and Logitech Driving Force Pro(046d:c298) which is 900 degrees mode. I probably got my wheel somehow stuck in 900 degrees mode, although I can lock to 270 degree with pushing Select R3+R1, after reconnecting (which also means using usb_add command in QEMU monitor when VM is running) it always switches back to 900 degrees mode. *Here is what I tried:* - 1. Different USB ports, always using -usbdevice host:046d:c298 parameter - 2. Same USB ports, with number of hostadrdesses, with using number of hostaddresses so: -usb -device usb-host,hostbus=2,hostaddr=6 -usb -device usb-host,hostbus=2,hostaddr=7 -usb -device usb-host,hostbus=2,hostaddr=8 -usb -device usb-host,hostbus=2,hostaddr=9 -usb -device usb-host,hostbus=2,hostaddr=10 - 3. Trying point 1 and 2 things with -M q35 (default is i440fx) and on Windows 10 I could not use these parameters with q35 chipset: -device ich9-usb-uhci3,id=uhci \ -device usb-ehci,id=ehci \ -device nec-usb-xhci,id=xhci \ Windows failed to boot with them and: -drive file=/motherstorage/KVM/data_games.img,format=raw,if=none,id=drive-ide0-1-1 \ -device ide-hd,bus=ide.1,unit=1,drive=drive-ide0-1-1,id=ide0-1-1 \ error with IDE, since I already used it for my system *I always got the same result.* 1. Connect the wheel to the host 1.1 when I tried using Same USB port with number of hostaddresses the wheel gets detected on Bus 002 with specific Device Number(hostaddr), I pass this to the VM script 2. Launch the VM, when using number hostaddresses I had the parameter directly in the script, but when using -usbdevice host:$vendor:$product I didn't notice any difference when the parameter is in the script or I use usb_add host:$vendor:$product when Windows boots 3. When the qemu tries to "catch the wheel" its gets reconnected and tries to calibrate itself as it always does and when that happens script window which I launched qemu with reports something like this: libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/009: No such file or directory libusb: error [_open_sysfs_attr] open /sys/bus/usb/devices/2-1.8/bConfigurationValue failed ret=-1 errno=2 libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/011: No such file or directory libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/013: No such file or directory libusb: error [_open_sysfs_attr] open /sys/bus/usb/devices/2-1.5/bConfigurationValue failed ret=-1 errno=2 libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/017: No such file or directory libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/019: No such device libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/021: No such device libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/023: No such file or directory libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/025: No such device libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/002/027: No such file or directory During the calibration process (which takes about 10s) its seems that it gets disconnected and reconnected number of times and when that happens, its device number changes. Seeing it first time I tried to use number of hostaddresses either with addresses like 08,10,12,14 or directly [08-14] and even when the script window didn't showed that the the device does not exist, it still didn't change. In native Windows its either the 046d:c294 or 046d:c298 (after comparing two outputs from Nirsoft's USB Devices View <http://www.nirsoft.net/utils/usb_devices_view.html> in connected and disconnect states) the Windows in VM does not detect anything at all. I can use my wheel without issues on the Linux host in games like Euro Truck Simulator 2 and set up the wheel with ltwheelconf so I might probably use Steam Home Streaming for the racing games (I didn't manage to setup the network bridge correctly, yet) but I am thinking of getting Logitech G27 ( mention <http://ubuntuforums.org/showthread.php?t=2266916> that it might work) or some similar alternative. Good wheels with 3 pedals and H-shifter are not cheap so I would like to know that they will work... I don't want to boot to Windows just because of the wheel. Any ideas what I might try ("somehow forcing" the wheel to specific hostaddress for example?) or what kind of qemu setting might help? ------ also posted in: https://bbs.archlinux.org/viewtopic.php?id=208629
_______________________________________________ vfio-users mailing list [email protected] https://www.redhat.com/mailman/listinfo/vfio-users
