Previously, the build workflow was restricted to running only on Ubuntu 22.04, Ubuntu 24.04 and macOS, which are the only available native runners on Github Actions. However, the Ubuntu runner does allow us to run the build inside a container. Therefore, this commit adds the ability to pull a prebuilt container with all the necessary dependencies and build libx52 inside of that container. This commit also adds support scripts to build the containers and run the CI build against those prebuilt containers locally for testing, without having to rely exclusively on Github Actions. This change also adds support for testing libx52 against Alpine Linux, in order to verify the portability, given that Alpine uses musl instead of glibc. The limitation is that we need to mount the `/dev/bus/usb` device tree inside the container, otherwise libusb inside the Alpine image fails with LIBUSB_ERROR_OTHER. This is not a concern on the other distributions, but due to limitations in the Github actions environment, there is no `/dev/bus/usb` tree to export. For this reason, Alpine is not a part of the CI build, but is available for testing locally. Also, because a default bare container would need several minutes of package installation just to get to a point where we could run build-and-test.sh, this includes a prebuild workflow which generates the container images and pushes them to ghcr.io, and the build workflow pulls from there. There is also logic to ensure that we only keep the latest image, since there is no value in retaining older images. |
||
|---|---|---|
| .github | ||
| bugreport | ||
| cli | ||
| daemon | ||
| docker | ||
| docs | ||
| evtest | ||
| joytest | ||
| kernel_module | ||
| libusbx52 | ||
| libx52 | ||
| libx52io | ||
| libx52util | ||
| m4 | ||
| po | ||
| subprojects | ||
| sys | ||
| udev | ||
| .gitattributes | ||
| .gitignore | ||
| AUTHORS | ||
| CONTRIBUTING.md | ||
| ChangeLog.md | ||
| Doxyfile.in | ||
| DoxygenLayout.xml | ||
| INSTALL.md | ||
| LICENSE | ||
| Makefile.am | ||
| PRIVACY.md | ||
| README.md | ||
| SECURITY.md | ||
| Version | ||
| autogen.sh | ||
| config.h.meson | ||
| configure.ac | ||
| install-doxygen-docs.sh | ||
| meson.build | ||
| meson_options.txt | ||
| usb-ids.h | ||
| version-info | ||
README.md
Saitek X52Pro joystick driver for Linux
This project adds a new driver for the Saitek/MadCatz X52 Pro flight control system. The X52 pro is a HOTAS (hand on throttle and stick) with 7 axes, 39 buttons, 1 hat and 1 thumbstick and a multi-function display which is programmable.
Currently, only Windows drivers are available from Saitek PLC, which led me to develop a new Linux driver which can program the MFD and the individual LEDs on the joystick. The standard usbhid driver is capable of reading the joystick, but it cannot control the MFD or LEDs.
Most of the extra functionality can be handled from userspace. See the individual folders for README information.
For data handling and privacy (e.g. GDPR/CCPA), see PRIVACY.md.
Note: This repository currently only provides commandline interfaces to control the MFD and LEDs. If you are not comfortable working in the commandline, then the gx52 project might be a better fit for your needs as it provides a graphical interface to control the MFD and LEDs.
Installing released versions
Beginning from version v0.2.3, prebuilt packages are available on Ubuntu PPA and the Arch User Repository.
Ubuntu
This project has been released as a PPA on Ubuntu. To install the package, run the following commands in the terminal.
sudo apt-add-repository ppa:nirenjan/libx52
sudo apt update
sudo apt install libx52-1
Arch Linux
This is available on the AUR
Building and installing from source
See INSTALL.md