[vfio-users] Unable to get Logitech Driving Force Pro USB-Passthrough working for Windows

Tomáš M. pulec.mcm at gmail.com
Tue Feb 9 12:46:19 UTC 2016


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/vfio-users/attachments/20160209/3930a3a6/attachment.htm>


More information about the vfio-users mailing list