Is XPForce available for Mac or Linux?

XPForce is available for 32-bit and 64-bit Windows, and is currently in testing for 64-bit Linux. Please see the Linux information page for full details.

Mac support is planned but has no timescale right now.

Do I need to edit any aircraft (.acf) files in Plane-Maker?
No, you don't. If you have .acf files which have control forces already in place then you can use these definitions instead of the plugin's internal calculations by ticking the "X-Plane Does Calc" box in the plugin's configuration window. It's entirely up to you.
Will this work with 64-bit X-Plane?
Yes, it does. The installer contains both 32-bit and 64-bit plugins which work identically.
Is there a demo available?
Yes, of course! Just install the plugin as usual. It will be fully operational for ten minutes without a license entered. That should give you plenty of opportunity to test it out. Restarting X-Plane will restart the ten-minute demo period.
Which hardware has it been tested with?

So far, it has been tested on:

- Microsoft Sidewinder Force Feedback 2

- Logitech G940

- Logitech Force 3D Pro


Do you use something else successfully? Please let me know!

How much of a framerate hit is there?
There should be no framerate hit at all provided you're using a multi-core processor or multiple processors. All the expensive calculations and device handling is done in the background, leaving X-Plane to get on with things uninterrupted once some basic data has been collected.
I can't feel any forces!

XPForce will send Force Feedback commands to any joystick that Windows recognises as supporting forces. You don't necessarily need customised drivers to do this - for example, the old Microsoft Sidewinder Force Feedback 2 works happily on Windows 8.1 and newer despite only using Windows' built-in drivers.

If your joystick doesn't have motors built in to provide force feedback, there's no way that XPForce can send them any commands! Please check before buying that it's compatible with your joystick, and that your joystick does in fact have force feedback capability.

Some sticks do seem to need "official" drivers rather than the standard Windows ones. Check that your stick is fully supported by running "dxdiag" - you should already have it installed as part of DirectX. Click on the "Save All Information" button and it will create a text file. If you open that file, under the section for your joystick there should be several entries like this:

FF Driver: C:\Windows\System32\pid.dll
FF Driver Date: 10/30/2015 07:18:09
FF Driver Version: 10.00.10586.0000
FF Driver Size: 45568 bytes

If it says "FF Driver: n/a" then there's definitely no force driver installed, so please visit the manufacturer's website and try to find the correct drivers.

XPForce on Linux

XPForce is coming to Linux!

The plugin adds force-feedback support to X-Plane 9 and higher and will soon be available for Linux - despite the current problems with Linux and force-feedback drivers! If you would like to be involved in pre-release testing then please contact us at .


The plugin itself is very easy to install. Simply download the zip file and extract it to your "X-Plane/Resources/plugins" folder. Start X-Plane and the plugin will be picked up automatically.

Supported Controllers

At present the Linux version of XPForce is experimental, given that the underlying drivers are very limited.

  • Microsoft Sidewinder Force Feedback 2 works, but only if you apply the patch here and rebuild the kernel driver yourself. At present only one part of the patch has been accepted into the linux kernel, which means that for the forseeable future the standard driver will remain unusable without patching.
  • Iris Dynamics Yoke does not work - but I'm looking at fixing this one. This will use the same driver as the MS Sidewinder and so will need the same patches applied. There are also yoke firmware changes required as of Feb 25th 2015.
  • Logitech devices do not work. The Linux driver supports only "Rumble" and "Constant Force" effects, which XPForce does not use. It looks like it's only aware of wheel-type devices at present. However, it may be possible to extend the driver fairly easily but since I don't have a Logitech force-enabled joystick to test with it's not something I can easily do. It may also be possible to use the generic driver that works with the Iris Dynamics and MS Sidewinder controllers - but that means building it yourself...

If it's any consolation, Mac support for force-enabled controllers is even worse!

Linux Setup

Preparing the Linux system to work properly with force-feedback joysticks is considerably more complex than in Windows, where it is ready to use as soon as it is plugged in. To send force-feedback commands to the stick, a special filed called a "device node" must be set to read-write To do this, you need to know the name of the device. Unfortunately this name can change frequently, and the read-write setting can be lost if you unplug the joystick or reboot. Your Linux distribution may set all this up for you.

Find your joystick's device node

All of the following commands should be run as the root user. The method for doing this varies between Linux distributions, but will typically be "sudo" or "su -c".

# lsinput | more

This will give you lots of text on screen depending on how many input devices you have. You need to find the one that matches your joystick. The example below shows the entry for the Microsoft Force Feedback 2:

   bustype : BUS_USB
   vendor  : 0x45e
   product : 0x1b
   version : 256
   name    : "Microsoft SideWinder Force Feedb"
   phys    : "usb-0000:00:1a.0-1.4/input0"
   uniq    : ""

The device node for this joystick is "/dev/input/event4". This may change on reboot, or if you unplug the joystick!

Test the Linux kernel force-feedback support

Again as root, run the following command to test the forces on this device. Use the correct device node name that you found.

# fftest /dev/input/event4

If the joystick is supported in Linux, you will get the following text displayed:

Device /dev/input/event4 opened
  * Absolute axes: X, Y, RZ, Throttle, Hat 0 X, Hat 0 Y,
    [63 00 03 00 00 00 00 00 ]
  * Relative axes:
    [00 00 ]
  * Force feedback effects types: Constant, Periodic, Ramp, Spring, Friction, Damper, Rumble, Inertia, Gain, Autocenter,
    Force feedback periodic effects: Square, Triangle, Sine, Saw up, Saw down,
    [00 00 00 00 00 00 00 00 00 00 FF 1F 03 00 00 00 ]
  * Number of simultaneous effects: 40

Setting master gain to 75% ... OK
Uploading effect #0 (Periodic sinusoidal) ... OK (id 0)
Uploading effect #1 (Constant) ... OK (id 1)
Uploading effect #2 (Spring) ... OK (id 2)
Uploading effect #3 (Damper) ... OK (id 3)
Uploading effect #4 (Strong rumble, with heavy motor) ... OK (id 4)
Uploading effect #5 (Weak rumble, with light motor) ... OK (id 5)
Enter effect number, -1 to exit

Note the "OK" messages after "Uploading effect". If the Linux joystick driver is broken, you will instead get "Error: Function not implemented". In current Linux kernels, the driver for the Microsoft Sidewinder Force Feedback 2 is broken. However, I have created a kernel patch which can be used to fix this driver, and will hopefully make it into the Linux kernel soon. Please see the "Patching Linux to support Force Feedback" page for instructions.

Enable force-feedback support for non-root users

As a non-root user, try the "fftest" program again. If you still get the "OK" messages and the forces work then you are ready to start X-Plane! If you get "Open device file: Permission denied", then there are more steps you need to follow.

Every time a new device is plugged in, including when you reboot, it is set up automatically by Linux. If you get "Permission denied" as a normal user then Linux is not setting it up correctly. To fix this, you need to add uDev rules to force the joystick to be set up as read-write for all users.

Again using the device node name you found, and as root, use this command to find the joystick's manufacturer and product codes:

# udevadm info -an /dev/input/event4 | grep -E "idVendor|idProduct" | head -2


Now create a new file in /etc/udev/rules.d called "99-XPlane_Joystick.rules" . You will need to be root to do this. Edit the file to contain the following line, changing the codes for "idVendor" and "idProduct" to match the ones printed by udevadm.

KERNEL=="event*", ATTRS{idProduct}=="001b", ATTRS{idVendor}=="045e", MODE="0666"

Save the file, then unplug and reconnect the joystick. Re-run the steps above to find the device node since it may now be different. Re-run fftest using the new device node name.

Linux Kernel Patch for Force Feedback Support

Currently (February 2015) the Linux kernel support for PID devices such as the Microsoft Sidewinder Force Feedback 2 is broken, and has been for several years. During the porting of XPForce to Linux, I have fixed several bugs in the kernel driver and am happy to say that it is now fully working. Of course, until that patch makes it into the kernel, you will need to apply the patch yourself.

The following two links are for bug reports, and the code of the patch, for Redhat-based and Debian-based systems respectively. The patch is identical, but you may want to add yourself to the mailing list to get any updates as they happen and to show the maintainers that there is some interest in getting the SWFF2 working under Linux.

You should be comfortable with the process of downloading and building a kernel, and in particular, of how to recover if it goes wrong. The steps below are a rough description of how to complete the process but are undertaken entirely at your own risk. I will under no circumstances provide free support for this process, nor for recovering your system if it goes wrong. In rebuilding the kernel or associated modules you run the risk of making your Linux system unusable. With all due respect to the Linux fundamentalists, if you're going to run it as a desktop system then you have to realise that underneath the desktop gloss it's a complex, Unix-like server O/S and sometimes needs to be treated as such.

  1. Locate the correct device node for your device (as root):
    # lsinput | more

    Scan the output for the device node matching your joystick:


       bustype : BUS_USB

       vendor  : 0x45e

       product : 0x1b

       version : 256

       name    : "Microsoft SideWinder Force Feedb"

       phys    : "usb-0000:00:1a.0-1.4/input0"

       uniq    : ""

       bits ev : EV_SYN EV_KEY EV_ABS EV_MSC EV_FF

    The device node for this joystick is "/dev/input/event4". This may change on reboot, or if you unplug the joystick!

  2. Test the device using the "fftest" program, either provided or available for most Linux distributions as part of the "joystick" package.
    > fftest /dev/input/event4

    If you get the "Error: Function not implemented" message after "Uploading Effect" and you're sure that you're looking at the right device node then you probably do need to patch your kernel.

  3. Get your source tree. Full instructions for getting, preparing and building for Fedora and Ubuntu can be found at the following locations. Other distributions should have similar pages.

    There is no need to build the full kernel, just get and prepare the source. The aim is to only change two modules rather than install a full custom kernel. Read the documentation provided by your Linux distribution if you don't know how to do this already. The following steps prepare the source tree for building modules on recent versions of Ubuntu - your distribution may well need different steps:

    > cd wherever_the_source_was_put
    > cp /boot/config-`uname -r` .config
    > cp /usr/src/linux-headers-`uname -r`/Module.symvers .
    > make oldconfig scripts prepare

  4. Build the existing USB HID modules just to make sure everything's in place and set up correctly.
    > make SUBDIRS=drivers/hid modules

  5. Download and apply the patch. The latest patch is attached at the bottom of this page.
    > patch -p1 <swff2.patch

  6. Rebuild the changed modules.
    > make SUBDIRS=drivers/hid modules

    # rmmod hid_generic usbhid hid; insmod drivers/hid/hid.ko; insmod drivers/hid/usbhid/usbhid.ko

    If you lose your mouse and keyboard then unplug one of them and plug it back in. Within a few seconds you should get them both back, because Linux will load the normal, unchanged driver modules. If not, reboot.

  8. Locate the device again (see step 1). It may have changed.

  9. Try "fftest" again (see step 2). You should now get "OK" responses to the "Uploading effect" and the effects will work when you start them.

  10. If you're absolutely, positively, 100% sure that it's all working including other USB devices, copy the new modules into place as root:
    # cp --parents drivers/hid/hid.ko drivers/hid/usbhid/usbhid.ko /lib/modules/`uname -r`/kernel/

  11. Update your boot image as root. This contains a second copy of the kernel modules and is used when you first boot. If you don't update this then you will still keep using the original, unchanged modules even though the new ones are in the correct place under /lib/modules/ .
    # update-initramfs -u

  12. Remember that if you update your kernel you may well need to run through this process again.
How do I upgrade to a new version?

When a new version is released, simply download and install it in exactly the same way as you did with the original version. Please check that you are still entitled to free upgrades before you install! You can do this on the helpdesk by logging in and selecting the "Licenses" option. If you installed using the Windows Installer (MSI) package, there is no need to remove the old version first.

The plugin can check for updates both manually and automatically. If an upgrade is available it will tell you whether your free upgrade period has expired.

How to find the XPForce log file

First, find your X-Plane installation folder. The XPForce logfile is in the "Output" directory, called "XPForce.log".

If you have had a crash which X-Plane says is caused by XPForce, please also send the X-Plane log. This is in the X-Plane installation folder, called "Log.txt".

Which X-Plane planes work with xpforce?

All of them!

While it is possible for aircraft to come with predefined forces, it seems that this is almost never done. XPForce calculates the required forces itself, based on the characteristics of the individual aircraft. Neither the aircraft designer, nor you, need to alter the aircraft.cfg to "support" forces.

Which X-Plane folder does XPForce go in?

All X-Plane plugins need to be put inside the "plugins" folder:


Location of XPlane Plugins