JacKeTUs / vrs-ff

GNU General Public License v2.0
3 stars 1 forks source link

Wheel isn't getting picked up / driver selecting proper driver #4

Closed ccalhoun1999 closed 1 month ago

ccalhoun1999 commented 4 months ago

I got the driver built and loaded on nixos, however when I plug the wheel in, it doesn't seem to be selecting the driver. Launching a game and trying to bind steering doesn't work.

modinfo hid-vrs-ff:

filename:       /run/booted-system/kernel-modules/lib/modules/6.9.6/updates/hid-vrs-ff.ko.xz
license:        GPL
description:    VRS HID FF Driver
author:         Oleg Makarenko <oleg@makarenk.ooo>
alias:          hid:b0003g*v00000483p0000A355
depends:        hid
retpoline:      Y
name:           hid_vrs_ff
vermagic:       6.9.6 SMP preempt mod_unload 
JacKeTUs commented 4 months ago

Hello! What game are you trying to make wheelbase work with? May be it's the issue with the game and/or Proton compatibility layer Can you send dmesg kernel logs, when you connect the wheel to the PC, please? What firmware version are you on right now? Is the wheelbase working in ETS/ATS? (there is free demo available) Can you try launch https://github.com/berarma/ffbtools with some random parameters? Like from example, tests/constant.ffb from that repo?

JacKeTUs commented 4 months ago

Also, we are in the process of merging multiple similar drivers into 'universal' one. If you can, please, test if https://github.com/JacKeTUs/universal-pidff/pull/9 works for you (i.e. wheelbase detects / ffb works)

ccalhoun1999 commented 4 months ago

The game I tested in was automoballista 2. I just tried assetto corsa content manager and euro truck simulator 2 and had the same issue.

Firmware is latest last I checked (4 days ago or so) but I don't recall the exact number. I booted into windows to run the tool and no upgrade was available.

Additionally, dmesg is as follows so it looks like it is loading the driver? I don't know much about dmesg output.

[233009.757304] usb 1-3: new full-speed USB device number 5 using xhci_hcd
[233009.921796] usb 1-3: New USB device found, idVendor=0483, idProduct=a355, bcdDevice= 1.00
[233009.921805] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[233009.921809] usb 1-3: Product: VRS DirectForce Pro Wheel Base
[233009.921813] usb 1-3: Manufacturer: Smarty Co.
[233009.921816] usb 1-3: SerialNumber: 000745094
[233009.951354] input: Smarty Co. VRS DirectForce Pro Wheel Base as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:07:00.1/usb1/1-3/1-3:1.0/0003:0483:A355.000B/input/input26
[233009.951639] vrs-ff 0003:0483:A355.000B: input,hiddev98,hidraw3: USB HID v1.11 Joystick [Smarty Co. VRS DirectForce Pro Wheel Base] on usb-0000:07:00.1-3/input0
[233009.951650] vrs-ff 0003:0483:A355.000B: implement() called with too large value 4 (n: 1)! (kworker/0:0)
[233009.952831] vrs-ff 0003:0483:A355.000B: implement() called with too large value 4 (n: 1)! (kworker/0:0)
[233009.963802] vrs-ff 0003:0483:A355.000B: device has unknown autocenter control method
[233009.963811] input input26: Force feedback for VRS DFP wheelbase

With regards to ffbtools, Ill try and get working on packaging that for nix so I can test it.

Finally, when I have more time I'll give the universal driver a shot, it would be awesome if that project can take off!

JacKeTUs commented 4 months ago

So driver works, it picks up the wheelbase and initializes FFB

Did you disable Steam Input for these games? Can you try to modify game launch command as: SDL_JOYSTICK_WHEEL_DEVICES=0x0483/0xa355 %command%? May be NixOS have old SDL without VRS in the whitelist...

Can you try launch VRS application through modified Wine prefix as written in README?

ccalhoun1999 commented 4 months ago

something I'm noticing now, but in lshw I have the following:

                       *-usb:1
                            description: Human interface device
                            product: Smarty Co. VRS DirectForce Pro Wheel Base
                            vendor: Smarty Co.
                            physical id: 3
                            bus info: usb@1:3
                            logical name: input12
                            logical name: /dev/input/event9
                            logical name: /dev/input/js0
                            version: 1.00
                            serial: 000745094
                            capabilities: usb-2.00 usb
                            configuration: driver=usbhid maxpower=100mA speed=12Mbit/s

is that normal? I'd expect it to list driver=hid-vrs-ff or something?

JacKeTUs commented 4 months ago

yup, it is normal your kernel logs clearly says that FFB is initialized, so don't worry about the driver

ccalhoun1999 commented 4 months ago

Sorry it took so long to respond.

Sadly disabling steam input and using the following command to launch games didn't work for me. SDL_JOYSTICK_WHEEL_DEVICES=0x0483/0xa355 %command%

~I'll try to work through using the wine prefix but wine confuses the hell out of me and it might take a while.~ running WINEPREFIX=$HOME/vrs-wine wine vrs.exe is leading to the following for me and the config tool doesn't launch.

007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
Application could not be started, or no application associated with the specified file.
ShellExecuteEx failed: Bad EXE format for Z:\home\ccalhoun\Downloads\vrs.exe.```

Thanks for the help!

Also, I was able to get it to actually register input in jstest-gtk which I don't think it was doing before so maybe setting up a udev rule helped, not too sure. Either way, still working on getting it recognized in game.

JacKeTUs commented 4 months ago

Can you, please, test the force feedback with https://github.com/berarma/ffbtools ?

Something like ./build/ffbplay -d /dev/input/by-id/YOUR_DEVICE_EVENT_FILE -t tests/sine.ffb

ccalhoun1999 commented 4 months ago

Yah, I'm still working on getting ffbtools built on nix.

ccalhoun1999 commented 3 months ago

Using ffbplay in interactive isn't providing any feedback. I tried autocenter and effect 1.

patchkez commented 1 month ago

@ccalhoun1999 I am sorry for replying to older issue, but were you able to make the VRS wheel base working in the end?

ccalhoun1999 commented 1 month ago

@ccalhoun1999 I am sorry for replying to older issue, but were you able to make the VRS wheel base working in the end?

I haven't been able to get it working and don't really know where to go from here. I'm thinking my hid rule might be at fault, but I don't really know how Linux drivers work so could very well be wrong.

patchkez commented 1 month ago

I am just blindly trying help here. Looking at your dmesg output, seems there are 2 input devices detected:

[233009.951354] input: Smarty Co. VRS DirectForce Pro Wheel Base as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:07:00.1/usb1/1-3/1-3:1.0/0003:0483:A355.000B/input/input26                                                                                              
[233009.951639] vrs-ff 0003:0483:A355.000B: input,hiddev98,hidraw3: USB HID v1.11 Joystick [Smarty Co. VRS DirectForce Pro Wheel Base] on usb-0000:07:00.1-3/input0

Also these dmesg lines are suspicious:

[233009.952831] vrs-ff 0003:0483:A355.000B: implement() called with too large value 4 (n: 1)! (kworker/0:0)
[233009.963802] vrs-ff 0003:0483:A355.000B: device has unknown autocenter control method

Your udev rule is this one right?

KERNEL=="hidraw*", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a355", MODE="0666", TAG+="uaccess"

Could you please get output from these commands?

If you are executing all the commands as normal user (no root or sudo), make sure that you have read access to /dev/input/by-id/<vrs devices>.

Try to execute again: ffbplay -d /dev/input/by-id/YOUR_DEVICE_EVENT_FILE -t tests/sine.ffb

If you have more input files created, try all of them. Maybe try to play other effects from ffbplay tests/ folder?

ccalhoun1999 commented 1 month ago

@patchkez Thanks for the help, ffblay with the sin wave file worked! End-stops work as well. Still haven't managed to get ffb in any games yet though (trying in acc I can't even bind the controller). Also, ffbplay required sudo in order to run, it gets permission denied otherwise. Is there a group my user has to be in maybe? Or a way to assign the device to a group other than root?

output from the requested commands is as follows: dmesg

[  730.838314] usb 1-3: new full-speed USB device number 3 using xhci_hcd
[  731.002099] usb 1-3: New USB device found, idVendor=0483, idProduct=a355, bcdDevice= 1.00
[  731.002104] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  731.002107] usb 1-3: Product: VRS DirectForce Pro Wheel Base
[  731.002109] usb 1-3: Manufacturer: Smarty Co.
[  731.002111] usb 1-3: SerialNumber: 000745094
[  731.031088] input: Smarty Co. VRS DirectForce Pro Wheel Base as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:07:00.1/usb1/1-3/1-3:1.0/0003:0483:A355.000C/input/input26
[  731.031282] vrs-ff 0003:0483:A355.000C: input,hiddev98,hidraw11: USB HID v1.11 Joystick [Smarty Co. VRS DirectForce Pro Wheel Base] on usb-0000:07:00.1-3/input0
[  731.031288] vrs-ff 0003:0483:A355.000C: implement() called with too large value 4 (n: 1)! (kworker/0:1)
[  731.033100] vrs-ff 0003:0483:A355.000C: implement() called with too large value 4 (n: 1)! (kworker/0:1)
[  731.046106] vrs-ff 0003:0483:A355.000C: device has unknown autocenter control method
[  731.046113] input input26: Force feedback for VRS DFP wheelbase

lshw, really long but I only see this related to the wheel base

*-usb:1
                            description: Human interface device
                            product: Smarty Co. VRS DirectForce Pro Wheel Base
                            vendor: Smarty Co.
                            physical id: 3
                            bus info: usb@1:3
                            logical name: input26
                            logical name: /dev/input/event25
                            logical name: /dev/input/js0
                            version: 1.00
                            serial: 000745094
                            capabilities: usb-2.00 usb
                            configuration: driver=usbhid maxpower=100mA speed=12Mbit/s

ls -ltr /dev/input/by-id/

lrwxrwxrwx 1 root root 10 10月 16 20:38 usb-Smarty_Co._VRS_DirectForce_Pro_Wheel_Base_000745094-event-if00 -> ../event25

sudo lsusb -d 0483:a355 -v

us 001 Device 003: ID 0483:a355 STMicroelectronics VRS DirectForce Pro Wheel Base
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0483 STMicroelectronics
  idProduct          0xa355 VRS DirectForce Pro Wheel Base
  bcdDevice            1.00
  iManufacturer           1 Smarty Co.
  iProduct                2 VRS DirectForce Pro Wheel Base
  iSerial                 3 000745094
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0029
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 Default Configuration
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0 
      iInterface              5 Default Interface
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     932
          Report Descriptors: 
            ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
Device Status:     0x1780
  (Bus Powered)
ccalhoun1999 commented 1 month ago

It looks like the rest of my issues are covered in https://github.com/JacKeTUs/vrs-ff/issues/3 . I'll try and get it working following along there and in the vrs discord. It's clear this isn't an issue with the driver anymore so I will close this issue.

ccalhoun1999 commented 1 month ago

I had a typo in my udev rule and needed to run proton games with 'PROTON_ENABLE_HIDRAW=0x0483/0xa355 %command%' in order to be able to use the wheel. can confirm it is now working! Thanks a ton!

JacKeTUs commented 1 month ago

@ccalhoun1999, i rebased patches on universal-pidff here, can you please try that branch? Because i'm planning not to keep separate repos of the same patches for different vendors, it's easier to maintain in one place

ccalhoun1999 commented 1 month ago

@ccalhoun1999, i rebased patches on universal-pidff here, can you please try that branch? Because i'm planning not to keep separate repos of the same patches for different vendors, it's easier to maintain in one place

I'll try and give it a shot this weekend. I'm on nixos so if the build process differs from this pr it may take some time to get a nix-build working again.

JacKeTUs commented 1 month ago

@ccalhoun1999 afaik, some passionate guys made nixos pkg for it https://github.com/NixOS/nixpkgs/pull/334445

But i don't know how to use other branch with it (sorry, i'm debian guy :D)