Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Gamepad calibration problem



  • Hello! I recalibrated the analog sticks on the Nintendo Switch Pro Controller and saw that Retroarch emulators, or at least lr-pcsx-rearmed, completely ignore the calibration. jstest and jstest-gtk show my changes on the sensibility of the sticks, and calibration is restored with no problems after every restart, but lr-pcsx-rearmed uses the old, original sensibility, where its evident that the sticks don't reach the full -32767..32768 range (PS1 Moto Racer doesn't lie). Non-Retroarch emulator PPSSPP uses the calibration and plays amazing now. For reference, I also have a PS3 controller, which works flawlessly on every emulator without needing calibration (haven't tested messing it up, to see if the change is reflected on Retroarch).

    I followed every step in here:
    https://github.com/RetroPie/RetroPie-Setup/wiki/Controller-configuration-(driver-level)
    ... but I bet the problem is in the udev driver in Retroarch.
    The gamepad is only recognized as /dev/input/js0. Should it have an entry in the /by-id/ directory? What is the "udev" driver anyway? Anytime I change it to "linuxraw" or "sdl" the gamepad gets disabled.

    Any tip is appreciated.


  • Global Moderator

    I think udev it's used only for detection and enumerating devices and evdev is used for actual joystick/gamepad interaction.
    Linux has 2 APIs for joystick/gamepad - https://wiki.archlinux.org/index.php/Gamepad#Joystick_input_systems - , jstest/jscal use the old API, while RA uses the new (evdev) api.

    Normally, I think the SDL2 input driver should support your gamepad - see this auto-configuration in the Libretro repository.

    If you wish to calibrate the gampead using the new API (evdev), then you need to use evdev-joystick - see the 1st page on the ArchWiki I posted, which has a lot of good info.



  • Many thanks for the info on evdev. I thought it wasn't being used since evdev-joystick --l doesn't show anything, but the gamepad was being assigned to /dev/input/eventX

    I ended up using this solution:
    https://joaorb64.github.io/2018/02/14/Configuring-a-Nintendo-Switch-Pro-Controller-on-Linux.html



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.