https://github.com/rswilem/winctrl-xplane-plugin
This plugin allows you to use Winwing devices in X-Plane 12 without the use of SimAppPro.
https://github.com/rswilem/winctrl-xplane-plugin
Last synced: 2 months ago
JSON representation
This plugin allows you to use Winwing devices in X-Plane 12 without the use of SimAppPro.
- Host: GitHub
- URL: https://github.com/rswilem/winctrl-xplane-plugin
- Owner: rswilem
- License: gpl-3.0
- Created: 2025-07-09T13:54:31.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-01-14T20:03:36.000Z (6 months ago)
- Last Synced: 2026-01-15T07:58:32.086Z (6 months ago)
- Language: C++
- Size: 1.37 MB
- Stars: 26
- Watchers: 3
- Forks: 9
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-osxp - Winctrl
README
## 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](#linux-udev-rules) section below to ensure proper permissions and stable device recognition.
### 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 | Zibo / LevelUp 737 | X-Crafts E-jets | FlightFactor 767 | FlightFactor 777 | FlightFactor A350 V1 | Rotate MD-11 | IXEG 737 | SSG 747 | JustFlight 146 | Laminar 737 | Laminar A330 (Aerogenesis) | Laminar Citation X | Laminar C172 |
|--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| **URSA MINOR Airline Joystick L+R** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **FMC (MCDU, PFP 3N/4/7)** | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | | | ✓ | ✓ | |
| **3N PAP MCP** | | ✓ | ✓ | | ✓ | | ✓ | | | | ✓ | | | |
| **3N / 3M PDC** | | ✓ | | | ✓ | | | | | | | | | |
| **FCU (+ optional EFIS L+R)** | ✓ | | ✓ | ✓ | ✓ | ✓ | | | | ✓ | ✓ | ✓ | | ✓ |
| **32 ECAM** | ✓ | | | | | | | | | | | | | |
| **32 AGP Metal** | ✓ | | | | | | | | | | | | | |
| **URSA MINOR 32 Throttle Metal (+ optional 32 PAC Metal)** | ✓ | ✓ | ✓ | | ✓ | | | | | | | | | |
### 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.
### Credits
- [@Schenlap](https://github.com/schenlap) for the initial python implementation and providing the HID protocol documentation.
- [@zodiac1214](https://github.com/zodiac1214) for the Ursa Minor Joystick HID protocol.
- [@CyberGuerro](https://github.com/cyberguerro) for the PFP3N HID protocol and a lot of testing work.
- [@claaslange](https://github.com/claaslange) for the FCU-EFIS integration.
- [@shred86](https://github.com/shred86) for identifying the Ursa Minor Joystick R.
- [@Belnadifia](https://github.com/Belnadifia) for the complete PAP3 HID protocol and Zibo profile.
- [@ColinM9991](https://github.com/ColinM9991) for the FF777 profile and parts of the FMC protocol.
- [@tukan68](https://github.com/tukan68) for FF767 profile.
- [@verres1](https://github.com/verres1) for enriching the FF777 profile.
- [@teropa](https://forums.x-plane.org/profile/1028374-teropa/) for data capture and testing of multiple devices.
- [@SoarByWire](https://forums.x-plane.org/profile/411164-soarbywire/) for the testing of multiple devices.
- [@MortyMars](https://github.com/MortyMars) for the FCU/EFIS FF777, FF767, and FFA350 v1 profiles.
- [@loftwing](https://github.com/loftwing) for the JF146 profile and testing.
### Linux udev rules
To ensure WINCTRL panels are accessible without root and have stable device names, create a udev rules file:
```bash
sudo nano /etc/udev/rules.d/99-winctrl.rules
```
```udev
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-ecam"
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](https://forums.x-plane.org/files/file/95987-winctrl-plugin-for-x-plane-mac-linux-windows/) for more information and discussion.
