Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed version v0.9.2 #325

Merged
merged 32 commits into from
May 26, 2022
Merged

Proposed version v0.9.2 #325

merged 32 commits into from
May 26, 2022

Conversation

kakra
Copy link
Collaborator

@kakra kakra commented Nov 17, 2021

No description provided.

kakra and others added 17 commits November 17, 2021 06:46
See-also: atar-axis#198
Signed-off-by: Kai Krakow <kai@kaishome.de>
It won't be reported twice when mapped to the same button anyways, so
we can just map it. If either of the bits work, the button will work.

Signed-off-by: Kai Krakow <kai@kaishome.de>
It looks like the new Xbox Series X|S controller doesn't set its BLE
connection parameters properly. The problem is currently evaluated in
the bluez project. Until it's officially resolved, let's document a
work-around.

See-also: bluez/bluez#156
Fixes: atar-axis#297
Maybe-fixes: atar-axis#290
Signed-off-by: Kai Krakow <kai@kaishome.de>
Tests showed that device privacy is actually not needed for the Xbox
BLE controller. But the device seems to support JustWorks re-pairing.

See-also: atar-axis#295
See-also: atar-axis#259
Signed-off-by: Kai Krakow <kai@kaishome.de>
Signed-off-by: Kai Krakow <kai@kaishome.de>
Signed-off-by: Kai Krakow <kai@kaishome.de>
Thanks to everybody on atar-axis#295.

Fixes: atar-axis#308
[style fixes by Kai Krakow, changed commit description]
Closes: atar-axis#309
Signed-off-by: Kai Krakow <kai@kaishome.de>
While the rumble thread is throttled, we may actually miss the peak
rumble strength resulting in an experience of rumbles with varying
strength when these are repeatedly sent by a game.

To work around this, we now accumulate the maximum strength set during
the throttle interval, then reset the accumulator when a rumble has
been sent to the controller.

Maybe-fixes: atar-axis#290
Signed-off-by: Kai Krakow <kai@kaishome.de>
By selecting this option, dkms attempts to add the module into the user
init ramdisk. While it seems like a cool idea it is not something the
module should decide by the user or distribution on their behalf.

I'm aiming to purge the option in upstream dkms, since it's fairly
convoluted and error-prone code. So let's remove it from this module.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Kai Krakow <kai@kaishome.de>
Steam Link has access to the hidraw device using the input group, thus
revoke all access bits from the device to work around the issue.

Fixes: atar-axis#291
Signed-off-by: Kai Krakow <kai@kaishome.de>
Also fixes Steam Input which apparently also uses SDL2.

The bug shows up when SDL identifies the controller as being on USB
instead of Bluetooth (SDL Gamepad ID starts with `03` instead of `05`)
which then messes with SDL's expectations for the contents of hidraw.

This fixes two SDL problems:

  * Wrong mappings in hidraw (buttons shifted to other buttons)
  * SDL2 doesn't properly throttle rumble commands (endless rumble)

See-also: atar-axis#286
Maybe-fixes: atar-axis#303
Maybe-fixes: atar-axis#311
Maybe-fixes: atar-axis#314
Signed-off-by: Kai Krakow <kai@kaishome.de>
Signed-off-by: Kai Krakow <kai@kaishome.de>
DKMS 3 requires passing the version to BOTH the install and uninstall
phase and we omitted it from the install phase.

Fixes: atar-axis#322
Signed-off-by: Kai Krakow <kai@kaishome.de>
Signed-off-by: Kai Krakow <kai@kaishome.de>
@kakra kakra added this to the v0.9 milestone Nov 17, 2021
CI no longer supports such old distributions. This also means older
kernels are no longer officially supported although this branch will
try to maintain compatibility.

As of this version, xpadneo will thus drop example code and documents
targeted for only old kernel versions.

Signed-off-by: Kai Krakow <kai@kaishome.de>
@kakra kakra mentioned this pull request Nov 24, 2021
rdrms and others added 8 commits March 5, 2022 18:49
Signed-off-by: Kai Krakow <kai@kaishome.de>
Later kernels seem to cache devices when removed from a driver. This
commit undoes our fixups so we can properly detect and reapply them
when we see the device again, even if the device itself was never
removed from the kernel.

Fixes: atar-axis#340
Maybe-fixes: atar-axis#347
Maybe-fixes: atar-axis#343
Signed-off-by: Kai Krakow <kai@kaishome.de>
It seems to be used for both the Xbox Series X|S and the original
Xbox One S controller when updated to firmware 5.13.

Closes: atar-axis#314
Signed-off-by: Kai Krakow <kai@kaishome.de>
Microsoft added BLE support to existing controllers. This commit adds
support for binding xpadneo to controllers flashed with the new
firmware version which exposes the device under a new PID.

The new firmware needs the Share button quirk.

Affects: atar-axis#314
Signed-off-by: Kai Krakow <kai@kaishome.de>
Closes: atar-axis#338
See-also: atar-axis#344
Signed-off-by: Kai Krakow <kai@kaishome.de>
We still silence the paddles when one of the profiles is selected, the
default profile setup maps the paddles to A, B, X, and Y.

The paddles are special because they are passed as one key by the HID
report. We need to manually remap those values to individual bits.

Maybe-affects: atar-axis#344
Closes: atar-axis#332
Signed-off-by: Kai Krakow <kai@kaishome.de>
Firmware 5.13 and later (all BLE models) queue rumble effects if we
send rumble commands faster than 20 Hz. This commit fixes it and
actually matches the rate the ff-memless emulation is supposed to send
us for single effects. ff-memless may still combine several effects
and send them at higher update rates thus we need to limit it here.

Fixes: atar-axis#337
Fixes: atar-axis#311
Maybe-affects: atar-axis#347
Maybe-fixes: atar-axis#319
Maybe-fixes: atar-axis#180
Signed-off-by: Kai Krakow <kai@kaishome.de>
@kakra kakra marked this pull request as ready for review April 30, 2022 11:41
kakra added 6 commits May 23, 2022 19:28
Do not expose keyboard events to the gamepad device as this may confuse
user-space software that's using evdev and jsdev in combination, and is
against the spec anyways.

Later versions of xpadneo split the gamepad into sub-devices per each
category of buttons, and thus don't need this fix.

Fixes: atar-axis#359
Signed-off-by: Kai Krakow <kai@kaishome.de>
Git 2.35.2 added a trust model to prevent user scripts and hooks of git
repositories to be executed with elevated privileges by accident. This
prevents the installer from getting the repository version when the
repository was checked out by a non-root user.

This commit adds an error message to suggest trusting the repository
and also links to the bug report for further details.

Fixes: atar-axis#346
Signed-off-by: Kai Krakow <kai@kaishome.de>
Affects: atar-axis#344
Signed-off-by: Kai Krakow <kai@kaishome.de>
Signed-off-by: Kai Krakow <kai@kaishome.de>
This is a maintenance release of xpadneo v0.9 to fix several issues found in
the current v0.10 development branch.

Thanks to contributors Emil Velikov, @PetitMote, @Mikaka27 and @rdrms, we now
have better compatibility with kernels 5.12 or later, latest DKMS versions, and
improved documentation.

We also fixed an issue conforming to the Linux input spec better which improves
compatibility with jinput and probably also the Chrome browser by not exposing
keyboard mapping bits on a joystick device. Thanks to @markpaters for pointing
that out.

Also, the current firmware generation seems to be unstable with our previous
rumble throttling interval and we had to increase this to 50ms. This actually
matches what the kernel is supposed to use for ff-memless emulation (but
apparently it may still send rumble commands faster). Thus, it's recommended
that anybody updates to this driver version.

Current kernels seem to cache devices when rebinding drivers. This affects our
udev rules, and needed fixups won't be properly applied because the original
VID/PID is no longer visible to us. We fixed this by reverting to the original
VID/PID on device unbinding.

Due to the various compatibility fixes, this is a highly recommended update.

We found an issue with the OpenRGB and QMK Firmware projects which enabled
world read/write permissions on rawhid devices unconditionally. While this may
be a security issue on its own, it also enabled SDL to access our hidraw device
in an incompatible way, leading to mapping problems for both axes and buttons,
and also rumble instabilities. Both projects seem to have fixed this issue
meanwhile but you may want to double-check you're updated to the latest
versions, especially if you're experiencing issues with Steam Proton games.

Distributions shipping kernels 5.12 or later should no longer disable Bluetooth
ERTM unconditionally. In fact, it may even harm connection stability when
rumble is in use. For better stability, it's generally recommended to upgrade
controllers to the new BLE firmware variant (version 5.x and above) for
improved connection stability. To ease support, the firmware version will now
be logged to dmesg with a warning if an old unstable firmware is found.

You should also inform users who experience input or rumble latency issues to
adjust the Bluetooth latency parameters but this may be fixed in later bluez
versions.

Headlines:

  * dkms: Explicitly add version to the install phase
  * dkms: Suggest trusting the git directory if version detection failed
  * docs: Document Bluetooth LE issues and work-arounds
  * docs: Document workarounds for the Xbox Wireless controller
  * xpadneo: Revert fixups on device removal
  * xpadneo, rumble: Fix rumble throttling for modern firmware
  * xpadneo v0.9, hid: Fix event ids to not fall into the keyboard range
  * xpadneo: Work around invalid mapping in Steam Link

Kai Krakow (27):
      docs: Update pairing instruction to mitigate stability issues
      misc, docs: Remove ERTM patches and update docs
      hid-xpadneo: Map instead of disable duplicate button "AC Back"
      docs: Document Bluetooth LE issues and work-arounds
      docs: Remove `Privacy=device` in favor of JustWorks re-pairing
      docs: Mention the xone project which has gone public now
      docs: List distribution packages
      hid-xpadneo, rumble: Do not lose rumble strength while throttled
      docs: Fix report descriptor syntax errors
      xpadneo: Work around invalid mapping in Steam Link
      xpadneo, hidraw: Also work around SDL2 hidraw mode conflicts
      dkms: Create version instance in DKMS source archives
      dkms: Explicitly add version to the install phase
      dkms, installer: Increase verbosity
      xpadneo: Drop CI for Ubuntu 16.04
      docs: Add note about audio support
      xpadneo: Revert fixups on device removal
      xpadneo: Update devices db for PID 0x0B13
      xpadneo: Add support for XB1S BLE firmware update
      xpadneo: Add XBE2 firmware 5.13 support
      xpadneo: Add paddles support
      xpadneo, rumble: Fix rumble throttling for modern firmware
      xpadneo v0.9, hid: Fix event ids to not fall into the keyboard range
      xpadneo, core: Warn about old firmware version with stability issues
      dkms: Suggest trusting the git directory if version detection failed
      dkms: Add another status line variant to split module and version
      docs: Update documentation about the XBE2 paddles

Emil Velikov (1):
      dkms: remove REMAKE_INITRD

Moté (1):
      docs: Document workarounds for the Xbox Wireless controller

mikaka (1):
      Don't disable ERTM if kernel 5.12 or later

ryanrms (1):
      Adding openSUSE to readme.md

Signed-off-by: Kai Krakow <kai@kaishome.de>
@kakra kakra merged commit d0a7c9d into atar-axis:release/v0.9 May 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants