Skip to content

This plugin allows you to use Winwing devices in X-Plane 12 without the use of SimAppPro.

License

Notifications You must be signed in to change notification settings

loftwing/winctrl-xplane-plugin

 
 

Repository files navigation

WINCTRL plugin for X-Plane

For X-Plane 11 and X-Plane 12. Formerly the Winwing plugin for X-Plane.

This plugin allows you to use WINCTRL devices in X-Plane on MacOS and Linux. The plugin theoretically works on Windows, but is not required there, as WINCTRL provides a native Windows driver through the SimAppPro software.

Installation

  1. Download the latest release from the releases page.
  2. Unzip the downloaded file.
  3. Copy the winctrl folder to your X-Plane Resources/plugins directory.
  4. Start X-Plane.
  5. Updating can be done by replacing the winctrl folder or using Skunkcrafts Updater if you have it installed.

For linux, see the Linux udev rules section below to ensure proper permissions.

Contributing

  • Fork the repository.
  • Download the latest X-Plane SDK from https://developer.x-plane.com/sdk/plugin-sdk-downloads/.
  • Unzip and copy the SDK/ folder to the root of the repository.
  • Make your changes.
  • Test your changes in X-Plane. Datareftool plugin recommented, and make sure you uninstall FlyWithLua as it can interfere with the "Reload Plugins" functionality.
  • Commit your changes and push to your fork.
  • Create a pull request with a description of your changes.

Usage

  • The plugin will automatically detect your WINCTRL devices.
  • There are no user-configurable settings at this time.

Compatibility Matrix

The matrix below shows device and aircraft compatibility. Devices are listed vertically, aircraft horizontally.

Device Toliss A3xx Laminar A330 Laminar 737 AeroGenesis A330 Zibo / LevelUp 737 IXEG 737 FlightFactor 767/777 FlightFactor A350 V1 SSG 747
URSA MINOR Joystick L+R 🟢 🟢 🔴 🟢 🟢 🟢 🟢 🔴 🟢
URSA MINOR Throttle 🟢 🔴 🔴 🔴 🔴 🔴 🔴 🔴 🔴
MCDU-32 🟢 🟢 🔴 🟢 🟢 🟢 🟢 🔴 🟠
PFP 3N 🟢 🟢 🔴 🟢 🟢 🟢 🟢 🔴 🟠
PFP 4 🟢 🟢 🔴 🟢 🟢 🟢 🟢 🔴 🟠
PFP 7 🟢 🟢 🔴 🟢 🟢 🟢 🟢 🔴 🟠
PAP3 / PAP3 Mag 🔴 🔴 🔴 🔴 🟢 🔴 🟢 🔴 🔴
FCU and EFIS L+R 🟢 🟢 🟠 🔴 🔴 🔴 🟢 🟢 🔴
ECAM32 🟢 🔴 🔴 🔴 🔴 🔴 🔴 🔴 🔴
AGP 🟢 🔴 🔴 🔴 🔴 🔴 🔴 🔴 🔴
3N / 3M PDC 🔴 🔴 🔴 🔴 🟢 🔴 🟢 🔴 🔴

Legend

  • 🟢 Fully implemented - All features working
  • 🟠 Partly implemented - Some limitations or missing features
  • 🔴 Not implemented - No support

Known Issues

  • 🟠 The SSG 747 does not expose any colour datarefs yet. Therefore, the PFP will not show the correct colours.
  • 🟠 The SSG 747 has a dual FMC, but the datarefs seem to overwrite eachother.
  • 🟠 Laminar 737: FCU is fully functional, but EFIS controls have not been tested yet.

Credits

  • @Schenlap for the initial python implementation and providing the HID protocol documentation.
  • @zodiac1214 for the Ursa Minor Joystick HID protocol.
  • @CyberGuerro for the PFP3N HID protocol and a lot of testing work.
  • @claaslange for the FCU-EFIS integration.
  • @shred86 for identifying the Ursa Minor Joystick R.
  • @Belnadifia for the complete PAP3 HID protocol and Zibo profile.
  • @ColinM9991 for the FF777 profile.
  • @tukan68 for FF767 profile.
  • @verres1 for enriching the FF777 profile.
  • @teropa for data capture and testing of multiple devices.
  • @SoarByWire for the testing of multiple devices.
  • @MortyMars for the FCU/EFIS FF777 and FF767 profile.

Linux udev rules

To ensure WINCTRL panels are accessible without root and have stable device names, create a udev rules file:

sudo nano /etc/udev/rules.d/99-winctrl.rules
KERNEL=="hidraw*", ATTRS{idProduct}=="bc27", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-ursa-minor-l"
KERNEL=="hidraw*", ATTRS{idProduct}=="bc28", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-ursa-minor-r"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb36", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-mcdu32-cpt"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb3e", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-mcdu32-fo"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb3a", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-mcdu32-obs"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb35", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp3n-cpt"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb39", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp3n-fo"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb3d", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp3n-obs"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb38", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp4-cpt"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb40", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp4-fo"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb3c", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp4-obs"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb37", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp7-cpt"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb3f", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp7-fo"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb3b", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pfp7-obs"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb10", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-fcu"
KERNEL=="hidraw*", ATTRS{idProduct}=="bc1e", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-fcu-efis-r"
KERNEL=="hidraw*", ATTRS{idProduct}=="bc1d", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-fcu-efis-l"
KERNEL=="hidraw*", ATTRS{idProduct}=="ba01", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-fcu-efis-lr"
KERNEL=="hidraw*", ATTRS{idProduct}=="bf0f", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-pap3"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb70", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-ecam32"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb80", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-agp"
KERNEL=="hidraw*", ATTRS{idProduct}=="b920", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-throttle-l"
KERNEL=="hidraw*", ATTRS{idProduct}=="b930", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-throttle-r"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb61", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-3n-pdc-l"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb62", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-3n-pdc-r"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb51", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-3m-pdc-l"
KERNEL=="hidraw*", ATTRS{idProduct}=="bb52", ATTRS{idVendor}=="4098", MODE="0666", SYMLINK+="winctrl-3m-pdc-r"

Demonstration

Also see the X-Plane.org forum thread for more information and discussion.

Airbus A20N Boeing B738

About

This plugin allows you to use Winwing devices in X-Plane 12 without the use of SimAppPro.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 91.8%
  • Swift 6.4%
  • Other 1.8%