Force feedback on wine-proton | Could it be possible?

Just a wild thought,
I've been seeing a ton of improvement regarding the gaming aspect on FreeBSD, with multiple titles running essentially flawlessly through wine-proton which is fantastic. Well, this lead me to try out one of the racing/car games I had on Steam, including Euro Truck Simulator 2 and try using it with my g29 gaming wheel. To my surprise, it actually worked fine controlling-wise. Pedals seemed to work fine, the wheel rotation was a bit wonky but I can't complain. Unfortunately, the only thing that did not seem to work at all was force feedback and I got really curious to see if anyone has any idea on if and how I'd be able to perhaps go about having it working?
(I know I'm really pushing FreeBSD to the edge here as gaming support isn't completely there yet and I'm not naively expecting it to work. It's more or less just a fun little idea.)

I'd appreciate your thoughts on this!
 
Just a wild thought,
I've been seeing a ton of improvement regarding the gaming aspect on FreeBSD, with multiple titles running essentially flawlessly through wine-proton which is fantastic. Well, this lead me to try out one of the racing/car games I had on Steam, including Euro Truck Simulator 2 and try using it with my g29 gaming wheel. To my surprise, it actually worked fine controlling-wise. Pedals seemed to work fine, the wheel rotation was a bit wonky but I can't complain. Unfortunately, the only thing that did not seem to work at all was force feedback and I got really curious to see if anyone has any idea on if and how I'd be able to perhaps go about having it working?
(I know I'm really pushing FreeBSD to the edge here as gaming support isn't completely there yet and I'm not naively expecting it to work. It's more or less just a fun little idea.)

I'd appreciate your thoughts on this!
Very interested in seeing this too! I mostly enjoy sim racing, so this would be amazing so I could completely ditch the windows partition...
 
Very interested in seeing this too! I mostly enjoy sim racing, so this would be amazing so I could completely ditch the windows partition...
I wonder if this is an issue on wine-proton’s part and if there’s any way to either contribute or report an issue to the wine-proton developers/port.

I’m assuming wine-proton handles it fine considering I’ve used it on Linux without any issues. Although I’m not sure whether it’s wine-proton or FreeBSD that doesn’t support it.
 
I've doing some testing and I've installed Steam, Assetto Corsa Competitiozone, Assetto Corsa Evo and iRacing. All of them launch and work without any trouble. iRacing however, does't work online because of issues with Easy Anti Cheat.
Performance is honestly in par if not better than Linux Steam.
My Fanatec Wheel base however, is not detected by the game. Force Feedback seems to be present, assuming from the resistance on turning, and udev reading inputs on the wheel. But not on the game though. I think it's almost there, but I have no idea where or what to change...
Any help would be much appreciated!
 
I've doing some testing and I've installed Steam, Assetto Corsa Competitiozone, Assetto Corsa Evo and iRacing. All of them launch and work without any trouble. iRacing however, does't work online because of issues with Easy Anti Cheat.
Performance is honestly in par if not better than Linux Steam.
My Fanatec Wheel base however, is not detected by the game. Force Feedback seems to be present, assuming from the resistance on turning, and udev reading inputs on the wheel. But not on the game though. I think it's almost there, but I have no idea where or what to change...
Any help would be much appreciated!
I am honestly shocked I saw this message today. I would have probably noticed this way too late otherwise, I just happened to stumble upon the thought of gaming on FreeBSD again and thought I might give force feedback a shot again so I checked this thread for any replies 😂. Can I ask, what method did you use to get Steam on FreeBSD and did you do anything special to get force feedback working? Perhaps my method of getting Steam on FreeBSD was the reason behind force feedback not working. Also, I didn’t quite catch which game that didn’t recognize your wheel?
 
It's unstable though, a pkg upgrade and nothing works anymore...
Hm, that's interesting. Last time I used that package it was called steam-bsd-runtime, it seems like it's had an overhaul. I recall it being quite sensitive and breaking often but not by a pkg upgrade though, that's quite unfortunate.
If I recall correctly, I edited the script myself to include a different Wine/Proton version because neither Steam nor Proton would recognize my wheel otherwise. I'll check the install script in that repo and get back to you if I find anything that might help.
 
Unfortunately, the only thing that did not seem to work at all was force feedback and I got really curious to see if anyone has any idea on if and how I'd be able to perhaps go about having it working?
On Linux with a G29 the force-feedback was provided with an in-kernel driver iirc, but I used 3rd-party new-lg4ff; it did FFB fine with Steam + Proton and City Car Driving and American Truck Simulator/ATS, and iirc the FFB from the games through Proton didn't need anything special done and just-worked out the box with new-lg4ff.

FFB drivers on Linux needed the G29 in PS3 mode. I'm not too sure how FFB drivers are handled under FreeBSD.
 
On Linux with a G29 the force-feedback was provided with an in-kernel driver iirc, but I used 3rd-party new-lg4ff; it did FFB fine with Steam + Proton and City Car Driving and American Truck Simulator/ATS, and iirc the FFB from the games through Proton didn't need anything special done and just-worked out the box with new-lg4ff.

FFB drivers on Linux needed the G29 in PS3 mode. I'm not too sure how FFB drivers are handled under FreeBSD.
On Linux with hid-fanatecff (https://github.com/gotzl/hid-fanatecff), it's flawless.
 
Hm, that's interesting. Last time I used that package it was called steam-bsd-runtime, it seems like it's had an overhaul. I recall it being quite sensitive and breaking often but not by a pkg upgrade though, that's quite unfortunate.
If I recall correctly, I edited the script myself to include a different Wine/Proton version because neither Steam nor Proton would recognize my wheel otherwise. I'll check the install script in that repo and get back to you if I find anything that might help.
It's very sensitive to the config options, such as render and graphics. I've eventually made it work again. On a native Xorg desktop it works best. On Sway with Xwayland, it works but I'm still figuring out the right combo of config options which would give me both a running Steam client and enough framerates to be usable...
 
It's unstable though, a pkg upgrade and nothing works anymore...
Hello, developer of steam-bottler here.
I found that whenever I change the wine-proton version, the prefix is functionally borked and needs to be set up again. What I could do is have the script detect changes in the wine-proton version and attempt a migration of Steam apps and save data. Then, it can reinstall the prefix and copy back Steam data.

Also, about your wheel not working, you could start troubleshooting with seeing if it's recognized by base Wine with wine control. If it is, then try WINEPREFIX=~/.steam-bottler /usr/local/wine-proton/bin/wine control and see if it's recognized. If it's not, then more troubleshooting is needed.
 
Hello, developer of steam-bottler here.
I found that whenever I change the wine-proton version, the prefix is functionally borked and needs to be set up again. What I could do is have the script detect changes in the wine-proton version and attempt a migration of Steam apps and save data. Then, it can reinstall the prefix and copy back Steam data.

Also, about your wheel not working, you could start troubleshooting with seeing if it's recognized by base Wine with wine control. If it is, then try WINEPREFIX=~/.steam-bottler /usr/local/wine-proton/bin/wine control and see if it's recognized. If it's not, then more troubleshooting is needed.
The device is recognized, so I think that's already a good thing.
However, Steam can't start at all now: 02c0:err:module:import_dll Library SDL2.dll (which is needed by L"Z:\\home\\xxx\\.steam-bottler\\drive_c\\Program Files (x86)\\Steam\\bin\\gldriverquery.exe") not found.
 
I recently updated steam-bottler to include a workaround for things like upgrades to wine-proton. Run
Code:
steam-bottler configure
and click on soft-reinstall steam client. Maybe it could help you.
Though I'd recommend using linux-steam-utils over my project if possible, as it's more stable and matured.
 
Simucube 2 wheelbases can easily be configured to work with Linux and WINE: Simucube 2 on Linux Wiki
I tried to replicate the setup on FreeBSD, but I'm stuck on the udev rules.

Here is my attempt of devd translation:

Code:
notify 100 {
  match "system"        "USB";
  match "subsystem"     "INTERFACE";
  match "type"          "ATTACH";
  match "vendor"        "0x16d0";
  match "product"       "0x0d61|0x0d5e";
  action "/usr/local/etc/rc.d/uhidd -uhs /dev/$cdev; chgrp operator /dev/$cdev; chmod 0660 /dev/$cdev";
};

But obviously this does not work, I suppose, because the devices are not being exposed correctly.

So the question is how and what interface one has to configure in order to attach a wheelbase?
 
Code:
hidraw_load="YES"

And then

Code:
notify 100 {
  match "system"        "USB";
  match "subsystem"     "INTERFACE";
  match "type"          "ATTACH";
  match "vendor"        "0x16d0";
  match "product"       "0x0d61";
  action "ln -s /dev/$cdev /dev/hidraw12";
};
 
Code:
hidraw_load="YES"

And then

Code:
notify 100 {
  match "system"        "USB";
  match "subsystem"     "INTERFACE";
  match "type"          "ATTACH";
  match "vendor"        "0x16d0";
  match "product"       "0x0d61";
  action "ln -s /dev/$cdev /dev/hidraw12";
};
You should not use loader.conf for non essential module required at boot. Use kld_list in /etc/rc.conf.

It seems weird to do a symbolic links to a random hidraw node. Also for the other devd rule, you may want to use the games groups which seems more appropriate.

Does the wheel is seen by SDL2 with testjoystick ?

If so, you could configure wine with wine control to use the SDL device and not the hidraw one (so check the two checkbox on the gamepad/joystick page).
 
You should not use loader.conf for non essential module required at boot. Use kld_list in /etc/rc.conf.

It seems weird to do a symbolic links to a random hidraw node. Also for the other devd rule, you may want to use the games groups which seems more appropriate.

Does the wheel is seen by SDL2 with testjoystick ?

If so, you could configure wine with wine control to use the SDL device and not the hidraw one (so check the two checkbox on the gamepad/joystick page).
Thanks for the suggestion.

SDL2 works and testjoystick shows the device with the corresponding axes. I also can see the device with wine control. But the controller application still can't detect the wheelbase.
 
Back
Top