Saitek X52/X52pro userspace driver for Unix/Linux
 
 
 
 
 
 
Go to file
nirenjan 0cb137bbe0 feat: Handle the entire BMP in libx52util
Prior to this change, the libx52util_convert_utf8_string function had a
limited set of characters that it would convert to the MFD character
map, these characters were derived from the x52_char_map.cfg file.
However, this is a tiny subset of the actual supported characters in the
Basic Multilingual Plane (BMP), since many characters in the BMP can be
normalized to a different character (or character sequence) that has a
corresponding glyph on the X52 MFD.

One example of this is the half-width Katakana characters which are
mapped in the display, however the corresponding full-width characters
were not explicitly mapped. With this commit, the generator script now
automatically detects that the half-width characters can be normalized
to the corresponding full width forms, and maps the full width forms
back to the correct characters on the MFD.

A second benefit of this change is that the MFD can now show characters
that would otherwise never be seen, for example, the 3/4 symbol or 5/8
symbol have no corresponding glyph in the MFD, but they can be
translated to the sequence `3` `/` `4`, giving us much more flexibility
on the characters that can actually be displayed.

Finally, with this change, the function also maps missing or unsupported
characters to the box character (0xDB in the display), making it clearer
that there was something there that could not be displayed. Earlier, it
would have simply skipped that character.
2026-03-16 10:18:16 -07:00
.github fix: Typo in release changelog generation 2026-03-12 12:10:26 -07:00
bugreport build: Migrate to meson build 2026-03-12 10:20:01 -07:00
cli build: Migrate to meson build 2026-03-12 10:20:01 -07:00
daemon fix: Handle test dependency on x52ctl 2026-03-13 09:27:51 -07:00
docs Replace all references to x52pro-linux with libx52 2021-09-29 00:30:55 -07:00
evtest build: Migrate to meson build 2026-03-12 10:20:01 -07:00
joytest build: Migrate to meson build 2026-03-12 10:20:01 -07:00
kernel_module Add kernel driver for Saitek X65F joystick 2021-09-29 12:59:34 -07:00
libusbx52 Initialize variables to avoid maybe-uninitialized warnings 2023-01-03 12:26:51 -08:00
libx52 fix: Update pkgconfig to use correct details 2026-03-12 15:35:11 -07:00
libx52io fix: Update pkgconfig to use correct details 2026-03-12 15:35:11 -07:00
libx52util feat: Handle the entire BMP in libx52util 2026-03-16 10:18:16 -07:00
m4 Disable -Wpacked compiler flag 2021-08-05 07:54:53 -07:00
po fix: Treat NLS=auto as enabled 2026-03-12 15:53:30 -07:00
subprojects build: Migrate to meson build 2026-03-12 10:20:01 -07:00
udev feat: Add meson support for configuring udev rules dir 2026-03-12 14:45:08 -07:00
.gitattributes doc: Update for version 0.3.3 2026-03-12 11:34:54 -07:00
.gitignore Add client communication library 2021-11-04 10:48:59 -07:00
AUTHORS Add license clarification and authors file 2016-12-27 13:13:37 -08:00
CONTRIBUTING.md Update bug template and contributing guidelines 2021-09-19 16:39:49 -07:00
ChangeLog.md doc: Update ChangeLog.md to list Meson bugs 2026-03-13 09:54:23 -07:00
Doxyfile.in Add x52ctl daemon communication program 2021-11-04 10:50:10 -07:00
DoxygenLayout.xml Replace all references to x52pro-linux with libx52 2021-09-29 00:30:55 -07:00
INSTALL.md build!: Update build to use system inih 2026-03-12 09:50:58 -07:00
LICENSE Move license text to LICENSE file 2018-04-18 12:16:48 -07:00
Makefile.am build: Migrate to meson build 2026-03-12 10:20:01 -07:00
PRIVACY.md doc: Fix bullets in PRIVACY.md 2026-03-03 18:00:03 -08:00
README.md feat: Minimize identifying information in bugreport 2026-03-03 17:55:26 -08:00
SECURITY.md doc: Add security policy and reporting guidelines 2026-03-06 15:29:31 -08:00
Version doc: Update for version 0.3.3 2026-03-12 11:34:54 -07:00
autogen.sh Move pthread build logic to configure.ac 2020-04-15 17:31:46 -07:00
config.h.meson build: Migrate to meson build 2026-03-12 10:20:01 -07:00
configure.ac build: Migrate to meson build 2026-03-12 10:20:01 -07:00
gettext.h Include locale.h in gettext.h 2022-06-13 01:45:34 -07:00
meson.build fix: Ensure man pages and docs are installed via Meson 2026-03-12 16:19:49 -07:00
meson_options.txt feat: Add meson support for configuring udev rules dir 2026-03-12 14:45:08 -07:00
usb-ids.h Replace hard-coded values with #define's 2020-07-08 17:35:17 -07:00
version-info build: Migrate to meson build 2026-03-12 10:20:01 -07:00

README.md

Saitek X52Pro joystick driver for Linux

Build/Test Kernel Module CodeQL

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