Linux module driver for Simagic driving wheels.
Simagic wheels (with firmware up to v159) are basically DirectInput wheels without 0xa7 descriptor (effect delay). Current in-tree driver does not take into account the lack of descriptor and fully rejects FFB support. In that repository - copy of pidff driver from 6.3 kernel with some patches (removed 0xa7 support), and some changes around infinite length effects (like that berarma/ffbtools#26)
And that's basically it
- Simagic Alpha Mini
- Simagic Alpha
- Simagic Alpha U
- Simagic M10
Just because they have identical VendorID/ProductID (0x0483
0x0522
)
Tested on GT1, and all buttons works perfectly. I suspect that all rims will work, except of FX-Pro display.
- FFB (all effects from device descriptor, with caveats)
- All inputs (wheel axis, buttons)
- Setup through proprietary Simagic soft (with some tweaking)
- Telemetry functions (Shift lights, FX-Pro display), mostly because telemetry works only with proprietary soft, which can't get access to shared memory chunks from games.
Firmware Update
function. Use Windows PC or Windows VM at the moment.- Driver only detects wheels in "Normal mode". Compatibility mode changes VID/PID of the wheelbase to vJoy defaults (
0x1234
0xbead
)
You can install it through DKMS or manually.
- Install
dkms
- Clone repository to
/usr/src/simagic-ff
- Install the module:
sudo dkms install /usr/src/simagic-ff
- Update initramfs:
sudo update-initramfs -u
- Reboot
To remove module:
sudo dkms remove simagic-ff/<version> --all
- Install
linux-headers-$(uname -r)
- Clone repository
make
sudo insmod hid-simagic-ff.ko
To unload module:
sudo rmmod hid_simagic_ff
You can do it through AlphaManager or SimPro Manager with Wine. You need to tweak Wine prefix for them.
AlphaManager works pretty good, but it recognizes only "old" bases (made before ~June 2022) with old firmware (max v108). SimPro 1.x launches, but graphical interface is pretty janky and really slow, i don't recommend using it. SimPro 2.x before 0.116 works with new firmware (max v159) and pretty useful.
That soft uses hidraw to set up a base. You need to create udev
rule for allow access to hidraw device:
echo 'KERNEL=="hidraw*", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="0522", MODE="0660", TAG+="uaccess"' | sudo tee /etc/udev/rules.d/11-simagic.rules
udevadm control --reload-rules && udevadm trigger
Then you need to force Simagic soft to use hidraw, not SDL, to find devices:
-
Create new Wine prefix for them:
mkdir ~/simagic-wine
-
Launch regedit in prefix:
WINEPREFIX=$HOME/simagic-wine wine regedit
-
Create two keys in
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus
:DisableInput
(DWORD) - set to1
;Enable SDL
(DWORD) - set to0
; (yes, variable name contains space)
-
Now you can launch soft through that WINEPREFIX:
WINEPREFIX=$HOME/simagic-wine wine AlphaManager.exe
- launch your SimPro/AlphaManager from installation directory.
I'm planning to write another soft, which will copy functionality from AlphaManager and/or SimPro Manager. Or set interfaces for settings for Oversteer, idk yet.
If you useFixed - it was unclamped PID_LOOP_COUNT, bug in pidff.WheelCheck.exe
(iRacing .exe to check FFB on the wheel), it sends some bizare parameters (like 2147483647 in saturation coefficient) to driver - and hid-core rejects it with kernel warning. It does not happening in games, and it's unclear if it is a bug in firmware, or we need to fix pidff driver for it.- Force Feedback clipping. Output queue could become full, and your kernel log will fill up with
output queue full
messages. I could reproduce it with spammingWheelCheck.exe
parameters, i did not see it in games at all (maybe time will tell). - Firmware update does not work. Please use Windows machine or Windows VM for any firmware updates
- Wheel firmware update does not work. Please use Windows machine or Windows VM for any firmware updates
Here is some issues, which is also a case for Windows
- Base firmware (tested v108 and v159, old revision) does not use parameter "Center Point Offset (0x60)" in Conditional Effect. For example - every "Spring" effect will center the will, there is no way now to "spring" the wheel to the left/right. It could be checked through
WheelCheck.exe
. Report to Simagic developers in their official Discord: link - If you try to change range of the wheel when it is outside requested range - feedback will dissapear completely. Reboot and reconnect base to fix it.
- With base firmware greater than v108 some wheel rim functions like GT1 - "Set Rotation Angle" does not work.
- GT1 - with wheel firmware 3242 (latest) setting LED mode (slow/fast flashing / off / on) does not work
- Firmware v169 and SimPro2.0.116 introduced proprietary protocol for communicating to the wheelbase and does not use standart directinput ffb reports. Please, avoid firmware v169 and SimPro 2.0.116 for the time being.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.