Skip to content

v0.9: Good News, Everyone!

Compare
Choose a tag to compare
@kakra kakra released this 22 Nov 14:48
· 113 commits to release/v0.9 since this release
73f9b29

Quote of the day:

Good News, Everyone!

Much hard work of several weeks has gone into this release, so there's a big reason to say thanks to all contributors, be it testing, suggestions, bug reporting, or - of course - programming.

First of all, Michael Schmitt donated an Xbox Elite 2 controller, so we now have full support for basic functionality of this controller, with support for the advanced features coming in the v0.10 version of the driver. This builds upon contributions done in the previous version of the driver.

Additionally, Ben Schattinger contributed support for the new Xbox Series X|S controllers that were released by Microsoft with their new console generation. Support for the new share button is still not finalized but it will generate a key code. This new controller uses BLE (Bluetooth low energy) to connect to PC, so you need a Bluetooth dongle that supports that features (most should do).

Both of you, Michael and Ben, qualified for the quote of the day. You guys rock.

Also, some donations were provided by several people via Ko-fi. Thanks for that, it's really appreciated. You guys are awesome!

Let's not forget all the people who contributed to the project patiently providing feedback, bug reports, and testing, or even just a "thank you": This release is our "thank you" back to the community.

Finally, we've got a logo now.

Here the gist of what the new version delivers:

  • Discord community (shared with xow, ask to join your project)
  • Code generation assertions
  • Start of code-redesign for splitting the driver core
  • Start of profile support (not implemented yet)
  • Dropped old debug mode
  • Better compliance with the Linux Gamepad specification
  • Improved driver documentation
  • Improved hardware documentation
  • Improved hardware support
  • Improved quirks handler to more easily handle hardware quirks
  • Improved HID handler performance
  • Improved dmesg logging
  • Improved DKMS installer
  • Improved rumble timing and precision
  • Improved rumble damping setting
  • Improved continuous integration testing
  • Added support for new hardware-level device functions
  • Added high-precision mode for the thumb sticks
  • Added option for disabling dead-zones for better Proton support

Many of the bug fixes have been backported to the v0.8 branch which has now received its end of life. If you're having problems with the new features, please report that and use the v0.8 branch until that specific bug is fixed.

Known Problems

The Bluetooth stability of the Xbox controllers is still a known issue which we probably can't fix in the driver. Some work-arounds are in place but that's not a 100% guarantee. Some of these problems can even be observed when using the controller with Windows. All the problems seem to mostly focus around using rumble, so you may need to disable rumble.

The other class of problems is connecting/pairing the controller properly. This seems to be a Linux kernel issue or a Bluez daemon issue, or a combination of both. Usually, Windows doesn't show any problems here. Apparently, we cannot fix this in the driver. You may want to report this to the kernel or Bluez developers.

Always use the controller updated to its latest firmware before trying other steps: Microsoft fixed some connection problems, and also HID implementation details in the past with firmware updates.

Breaking Changes

This release fixes button mappings for 8BitDo controllers to actually match their names on the controller instead of matching positions with original Xbox controllers. The X,Y and A,B buttons will be swapped compared to previous versions.

This change is controversial but let me tell you that we are going to work on changes that let you easily choose and switch behavior in v0.10.

The module parameter debug_level has been dropped. Some other parameters have been dropped in favor of better replacements. Please reconfigure your parameters and settings.

The Future

The new controllers provide some new functionality at the hardware level which we are going to try to emulate at the driver level for older generation controllers. The prominent example for this is mapping profiles support: Until we figured out how this is implemented in hardware for the Xbox Elite 2 controller, we won't implement any emulation support in the driver. This is because we want to end up with an emulation that is 100% compatible with the hardware implementation, and not end up with some customization functions that needs emulation for the Xbox Elite 2 controller.

We are also going to split the driver into components to easily add support for USB or GIP dongle connections, with USB probably coming first because the GIP dongle still has licensing issues for using its firmware.

Headlines:

  • hid-xpadneo, quirks: We need to carry a quirk for Linux button mappings
  • hid-xpadneo, rumble: Migrate damping to generic attenuation parameter
  • installer: Change to base directory first
  • xpadneo, deadzones: Implement a high-precision mode without dead zones
  • xpadneo, udev: Work around libinput using the controller as touchpad
Kai Krakow (78):
      hid-xpadneo: Drop `debug_level`
      hid-xpadneo, quirks: Pass quirks from driver data
      udev: Expose all xpadneo input devices as user-readable
      hid-xpadneo, profiles: Prepares profile switching for customization
      Update bug_report.md
      docs, news: Document breaking changes.
      hid-xpadneo, rumble: Migrate damping to generic attenuation parameter
      xpadneo, udev: Work around libinput using the controller as touchpad
      hid-xpadneo: Tell the user which controller connected
      hid-xpadneo, quirks: Fix a typo
      hid-xpadneo, quirks: Expand flags to 32 bit
      hid-xpadneo, quirks: We need to carry a quirk for Linux button mappings
      xpadneo, quirks: Add Nintendo mappings quirk for 8BitDo controllers
      docs: Fix a syntax problem in SDL link
      xpadneo, deadzones: Use smaller dead zone and fuzz for precision
      xpadneo, deadzones: Implement a high-precision mode without dead zones
      docs: Document another storage location for SDL gamepad mappings
      docs: Document SDL HIDAPI breakage
      hid-xpadneo, init: Ignore HID_CONNECT_FF
      hid-xpadneo, quirks: Convert to proper bit values
      hid-xpadneo: Update copyright
      configure, cleanup: Remove the tedious whitespace
      xpadneo, cleanup: Fix missing newline at end of file
      hid-xpadneo, cleanup: Remove some more comments
      hid-xpadneo: Replace `combined_z_axis` with additional axis
      hid-xpadneo: Stop spamming the HID layer with repeated reports
      Revert "hid-xpadneo, quirks: Convert to proper bit values"
      hid-xpadneo, timing: Use clamp() instead min()/max()
      hid-xpadneo, rumble: Tighten the rumble timing
      hid-xpadneo: Fix potentially loosing input packets for XBE2 controllers
      docs: Add Repology badge
      docs: Mention MissionControl sibling project
      docs: Cleanup some whitespace
      docs: Add xpadneo logo
      docs: Add Discord badge
      installer: Drop VERSION tag file from master branch
      installer: Fix white space
      installer, dkms: Prevent showing readlink errors
      installer: Add verbose mode
      installer: Exit on unexpected errors
      installer, dkms: Skip ERTM if setting is not writable
      tests: Add verbose mode to Azure Pipeline
      tests: Also test uninstallation in Azure Pipeline
      tests: Dump make.log to stdout on verbose DKMS error
      tests: Run Azure Pipeline on multiple Ubuntu LTS versions
      hid-xpadneo: Ignore trigger scale switches
      hid-xpadneo, profiles: Log to kernel starting with lower-case
      hid-xpadneo, rumble: Remove useless use of max()
      hid-xpadneo: Optimize delay_work clamping
      hid-xpadneo, rumble: Use proper integer rounding in calculations
      hid-xpadneo, rumble: Limit command duration
      hid-xpadneo: Fix kernel coding standards
      docs: Remove bogus blank line
      docs: Do not misuse back-ticks
      docs: Document broken packet format of XBE2 v1
      hid-xpadneo: Handle XBE2 v2 packet format
      hid-xpadneo: Add XBE2 trigger scale setting
      docs: Fix collaboration referral
      docs: Fix a typo
      hid-xpadneo: Reserve another bit for the new XBXS share button
      hid-xpadneo: Document XBXS modes and PIDs
      docs: Document XBXS controller support in the README
      docs: Restructure text about profile support
      docs: Add BLE note for the XBXS controller
      docs: Move profile switching section
      hid-xpadneo: Make assertions of hardware buffer sizes
      hid-xpadneo: Make rumble motor bits a full enum type
      installer: Move version information to separate include file
      installer: Remove excessive blank lines
      installer: "INSTALLED" is an array
      configure: Use braces around variables
      installer: Change to base directory first
      hid-xpadneo: Alias the Share button
      hid-xpadneo: Fix a comment about rumble timing
      hid-xpadneo: Improve PID documentation
      docs: Document Bluetooth low energy requirements
      installer: Also fix the updater
      hid-xpadneo: Move headers to separate file

Ben Schattinger (2):
      docs: Document Xbox Series X/S controller
      hid-xpadneo: Add Xbox Series X / S controller support