banner



How Bluetooth Registers As Joystick

Many gamepads are working out-of-the-box nowadays, but there are still many potential problems and sources for errors since gamepad support in applications varies by a lot.

Gamepad input systems

Tango-view-fullscreen.png This article or department needs expansion. Tango-view-fullscreen.png

Linux has 2 different input systems for Gamepads – the original Joystick interface and the newer evdev-based interface.

/dev/input/jsX maps to the Joystick API interface and /dev/input/result* maps to the evdev ones (this also includes other input devices such as mice and keyboards). Symbolic links to those devices are also available in /dev/input/past-id/ and /dev/input/by-path/ where the legacy Joystick API has names ending with -joystick while the evdev have names ending with -event-joystick.

Almost new games volition default to the evdev interface every bit it gives more detailed information virtually the buttons and axes available and also adds support for force feedback.

While SDL1 defaults to evdev interface you can strength information technology to use the old Joystick API by setting the environment variable SDL_JOYSTICK_DEVICE=/dev/input/js0. This tin help many games such as X3. SDL2 supports only the new evdev interface.

Determining which modules you need

Unless you are using very old joystick that uses Gameport or a proprietary USB protocol, yous will need just the generic USB Human Interface Device (HID) modules.

For an extensive overview of all joystick related modules in Linux, you will need access to the Linux kernel sources -- specifically the Documentation department. Unfortunately, pacman kernel packages do not include what we need. If you have the kernel sources downloaded, have a look at Documentation/input/joydev/. Y'all tin scan the kernel source tree at kernel.org by clicking the "browse" (cgit - the git frontend) link for the kernel that you are using, so clicking the "tree" link near the top. Here is a link to the documentation from the latest kernel.

Some joysticks demand specific modules, such as the Microsoft Sidewinder controllers (sidewinder), or the Logitech digital controllers (adi). Many older joysticks will work with the unproblematic analog module. If your joystick is plugging in to a gameport provided past your soundcard, you volition need your soundcard drivers loaded - however, some cards, like the Soundblaster Live, accept a specific gameport commuter (emu10k1-gp). Older ISA soundcards may need the ns558 module, which is a standard gameport module.

Every bit you can see, there are many dissimilar modules related to getting your joystick working in Linux, so I could not mayhap cover everything here. Please have a wait at the documentation mentioned above for details.

Loading the modules for analogue devices

You demand to load a module for your gameport (ns558, emu10k1-gp, cs461x, etc...), a module for your joystick (analog, sidewinder, adi, etc...), and finally the kernel joystick device commuter (joydev). Add these to a new file in /etc/modules-load.d/, or simply modprobe them. The gameport module should load automatically, every bit this is a dependency of the other modules.

USB gamepads

You demand to become USB working, and then modprobe your gamepad driver, which is usbhid, equally well every bit joydev. If you use a usb mouse or keyboard, usbhid will exist loaded already and you simply have to load the joydev module.

Troubleshooting

If your Xbox 360 gamepad is continued with the Play&Accuse USB cablevision it volition show upwardly in lsusb only it will not bear witness upwards every bit an input device in /dev/input/js*, run into note below.

Testing your configuration

One time the modules are loaded, you should be able to find a new device: /dev/input/js0 and a file ending with -event-joystick in /dev/input/by-id directory. You can simply cat those devices to come across if the joystick works - move the stick around, press all the buttons - you should run across mojibake printed when you motility the sticks or press buttons.

Both interfaces are also supported in wine and reported as separate devices. You can exam them (including vibration feedback) with wine control joy.cpl.

Tip: Input devices by default have input group; for instance, pcsx2 have no admission to gamepad without rights. Make sure your user is in the input grouping.

Joystick API

There are a lot of applications that tin can exam this old API, jstest from the joyutils packet is the simplest one. If the output is unreadable because the line printed is as well long yous can too use graphical tools. KDE Plasma has a congenital in ane in System Settings -> Input Devices -> Game Controller. There is jstest-gtk-git AUR as an culling.

Use of jstest is fairly simple, you but run jstest /dev/input/js0 and it will print a line with state of all the axes (normalised to {-32767,32767}) and buttons.

Later you lot outset jstest-gtk, it will just show you a list of joysticks available, you just need to select i and printing Properties.

evdev API

The new 'evdev' API can be tested using the SDL2 joystick test awarding or using evtest from community repository. Install sdl2-jstest-git AUR and and so run sdl2-jstest --test 0. Use sdl2-jstest --listing to get IDs of other controllers if yous take multiple ones connected.

To exam force feedback on the device, utilise fftest from linuxconsole bundle:

$ fftest /dev/input/by-id/usb-*result-joystick        

HTML5 Gamepad API

Go to https://gamepad-tester.com/. To test vibration, click on the word Vibration. Note, that vibration is currently supported in Chromium browser, but non in Firefox. Also, in Firefox yous cannot come across a gamepad prototype, just in Chromium you can.

Setting upwards deadzones and calibration

If you want to set the deadzones (or remove them completely) of your analog input you have to do it separately for the xorg (for mouse and keyboard emulation), Joystick API and evdev API.

Wine deadzones

Add the post-obit registry entry and set it to a string from 0 to 10000 (affects all axes):

HKEY_CURRENT_USER\Software\Wine\DirectInput\DefaultDeadZone        

Source: UsefulRegistryKeys

Xorg deadzones

Add a like line to /etc/X11/xorg.conf.d/51-joystick.conf (create if information technology does not exist):

/etc/X11/xorg.conf.d/51-joystick.conf
Section "InputClass"     Option "MapAxis1" "deadzone=m" EndSection        

1000 is the default value, but you lot can gear up annihilation between 0 and 30 000. To get the axis number see the "Testing Your Configuration" section of this commodity. If you lot already have an option with a specific axis just blazon in the deadzone=value at the cease of the parameter separated past a space.

Joystick API deadzones

The easiest fashion is using jstest-gtk from jstest-gtk-git AUR . Select the controller you desire to edit, and then click the Calibration button at the bottom of the dialog (exercise non click Start Calibration at that place). Yous tin then set the CenterMin and CenterMax values (which control the center deadzone), RangeMin and RangeMax which control the terminate of throw deadzones. Note that the calibration settings are practical when the application opens the device, so y'all need to restart your game or test application to see updated calibration settings.

After you lot gear up the deadzones use jscal to dump the new values into a trounce script:

$ jscal -p /dev/input/jsX > jscal.sh # replace Ten with your joystick'south number        

Make sure it is executable.

Now y'all demand to make a udev rule (for case /etc/udev/rules.d and name it 85-jscal.rules) and then the script will automatically run when you connect the controller:

SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="c268", Action=="add", RUN+="/usr/bin/bash /usr/bin/jscal.sh"        

To get the idVendor and idProduct use udevadm info --attribute-walk --name /dev/input/jsX

Use the `/dev/input/by-id/*-joystick` device names in instance you apply multiple controllers.

evdev API deadzones

The evdev-joystick tool from the linuxconsole bundle tin can be used to view and change deadzones and calibration for evdev API devices.

To view your device configuration:

$ evdev-joystick --showcal /dev/input/by-id/usb-*-result-joystick        

To change the deadzone for a particular axis, use a command like:

$ evdev-joystick --evdev /dev/input/past-id/usb-*-event-joystick --axis 0 --deadzone 0        

To set the same deadzone for all axes at once, omit the "--axis 0" selection.

Utilise udev rules file to prepare them automatically when the controller is connected.

Note that inside the kernel, the value is chosen flatness and is set using the EVIOCSABS ioctl.

Default configuration will look like similar to this:

$ evdev-joystick --showcal /dev/input/by-id/usb-Madcatz_Saitek_Pro_Flight_X-55_Rhino_Stick_G0000090-upshot-joystick
Supported Accented axes:    Absolute axis 0x00 (0) (X Axis) (min: 0, max: 65535, flatness: 4095 (=six.25%), fuzz: 255)    Absolute axis 0x01 (1) (Y Axis) (min: 0, max: 65535, flatness: 4095 (=6.25%), fuzz: 255)    Absolute axis 0x05 (v) (Z Rate Axis) (min: 0, max: 4095, flatness: 255 (=half dozen.23%), fuzz: 15)    Absolute axis 0x10 (16) (Chapeau cypher, ten axis) (min: -1, max: 1, flatness: 0 (=0.00%), fuzz: 0)    Absolute axis 0x11 (17) (Hat zero, y centrality) (min: -1, max: 1, flatness: 0 (=0.00%), fuzz: 0)

While a more reasonable setting would be accomplished with something similar this (repeat for other axes):

$ evdev-joystick --evdev /dev/input/by-id/usb-Madcatz_Saitek_Pro_Flight_X-55_Rhino_Stick_G0000090-upshot-joystick --axis 0 --deadzone 512
Event device file: /dev/input/past-id/usb-Madcatz_Saitek_Pro_Flight_X-55_Rhino_Stick_G0000090-upshot-joystick  Axis index to bargain with: 0  New expressionless zone value: 512  Trying to set axis 0 deadzone to: 512    Absolute axis 0x00 (0) (X Centrality) Setting deadzone value to : 512  (min: 0, max: 65535, flatness: 512 (=0.78%), fuzz: 255)

Configuring curves and responsiveness

In case your game requires only express corporeality of buttons or has good back up for multiple controllers, yous may take good results with using xboxdrv to change response curves of the joystick.

Beneath are the setups I employ for Saitek 10-55 HOTAS:

$ xboxdrv --evdev /dev/input/by-id/usb-Madcatz_Saitek_Pro_Flight_X-55_Rhino_Throttle_G0000021-event-joystick \   --evdev-no-grab --evdev-absmap 'ABS_#forty=x1,ABS_#41=y1,ABS_X=x2,ABS_Y=y2' --device-proper name 'Hat and throttle' \   --ui-axismap 'x2^cal:-32000:0:32000=,y2^cal:-32000:0:32000=' --silent        

this maps the EV_ABS event with id of xl and 41 (employ xboxdrv with --evdev-debug to run across the events registered), which is the usually inaccessible "mouse pointer" on the throttle, to kickoff gamepad joystick and throttles to 2d joystick, it as well clamps the top and lower ranges as they not always register fully.

A fleck more interesting is the setup for the stick:

$ xboxdrv --evdev /dev/input/past-id/usb-Madcatz_Saitek_Pro_Flight_X-55_Rhino_Stick_G0000090-event-joystick \   --evdev-no-grab --evdev-absmap 'ABS_X=x1' --evdev-absmap 'ABS_Y=y1' --device-name 'Joystick' \   --ui-axismap 'x1^cal:-32537:-455:32561=,x1^expressionless:-900:700:i=,x1^resp:-32768:-21845:-2000:0:2000:21485:32767=' \   --ui-axismap 'y1^cal:-32539:-177:32532=,y1^dead:-700:2500:one=,y1^resp:-32768:-21845:-2000:0:2000:21485:32767=' \   --evdev-absmap 'ABS_RZ=x2' --ui-axismap 'x2^cal:-32000:-100:32000,x2^dead:-1500:1000:i=,x2^resp:-32768:-21845:-2000:0:2000:21485:32767=' \   --silent        

this maps the three joystick axes to gamepad axes and changes the scale (min value, centre value, max value), dead zones (negative side, positive side, flag to turn smoothing) and finally change of response curve to a more apartment 1 in the middle.

You lot tin can also modify the responsiveness past setting the 'sen' (sensitivity). Setting it to value of 0 will give you a linear sensitivity, value of -ane volition give very insensitive axis while value of 1 volition give very sensitive axis. Y'all can use intermediate values to make it less or more sensitive. Internally xboxdrv uses a quadratic formula to calculate the resulting value, and then this setting gives a more smooth result than 'resp' shown above.

Nice thing about xboxdrv is that it exports resulting device equally both sometime Joystick API and new style evdev API so it should be compatible with basically whatsoever application.

Disable joystick from decision-making mouse

If you want to play games with your gamepad, you might want to disable its joystick control over mouse cursor. To do this, edit /etc/X11/xorg.conf.d/51-joystick.conf (create if it does not exists) so that information technology looks similar this:

/etc/X11/xorg.conf.d/51-joystick.conf        
Section "InputClass"         Identifier "joystick catchall"         MatchIsJoystick "on"         MatchDevicePath "/dev/input/consequence*"         Commuter "joystick"         Pick "StartKeysEnabled" "False"       #Disable mouse         Choice "StartMouseEnabled" "Imitation"      #support EndSection

Using gamepad to ship keystrokes

A couple gamepad buttons to keystroke programs exist like qjoypad AUR or antimicrox-git AUR , all piece of work well without the need for 10.org configuration.

Xorg configuration example

This is a adept solution for systems where restarting Xorg is a rare outcome because it is a static configuration loaded but on 10 startup. The example runs on a Kodi media PC, controlled with a Logitech Cordless RumblePad 2. Due to a problem with the d-pad (a.g.a. "hat") beingness recognized as another axis, Joy2key was used every bit a workaround. Since upgrade to Kodi version 11.0 and joy2key one.6.3-1, this setup no longer worked and the post-obit was created for letting Xorg handle joystick events.

First, install the xf86-input-joystick AUR package. Then, create /etc/X11/xorg.conf.d/51-joystick.conf similar and so:

          Department "InputClass"   Identifier "Joystick hat mapping"   Selection "StartKeysEnabled" "True"   #MatchIsJoystick "on"   Option "MapAxis5" "keylow=113 keyhigh=114"   Choice "MapAxis6" "keylow=111 keyhigh=116"  EndSection        

Note: The MatchIsJoystick "on" line does not seem to be required for the setup to work, simply yous may want to uncomment it.

Specific devices

While about gamepads, especially USB based ones should but work, some may crave (or give better results) if you employ alternative drivers. If it does not piece of work the first fourth dimension, do not give up, and read those docs thoroughly!

Dance pads

Nigh dance pads should piece of work. However some pads, particularly those used from a video game console via an adapter, have a tendency to map the directional buttons as axis buttons. This prevents hitting left-right or upwardly-down simultaneously. This behavior can be stock-still for devices recognized past xpad via a module option:

          # modprobe -r xpad  # modprobe xpad dpad_to_buttons=ane        

If that did not work, you can try axisfix-git AUR or patching the joydev kernel module (https://github.com/adiel-mittmann/dancepad).

Logitech Thunderpad Digital

Logitech Thunderpad Digital will not prove all the buttons if you use the analog module. Utilize the device specific adi module for this controller.

Nintendo Gamecube Controller

Dolphin Emulator has a page on their wiki that explains how to utilize the official Nintendo USB adapter with a Gamecube controller. This configuration also works with the Mayflash Controller Adapter if the switch is set to "Wii U".

Nintendo Switch Pro Controller and Joy-Cons

Kernel Nintendo HID Driver

The hid-nintendo kernel HID commuter was mainlined in kernel 5.xvi. If yous are using an earlier kernel, y'all volition need to install the DKMS module named hid-nintendo-dkms AUR . The driver provides back up for rumble, battery level, and command of the actor and dwelling house LEDs. Information technology supports the Nintendo Switch Pro Controller over both USB and bluetooth in addition to the joy-cons.

An alternate dkms module named hid-nintendo-nso-dkms AUR patches in back up for the Switch Online NES and SNES controllers.

joycond Userspace Daemon

The hid-nintendo kernel driver does not handle the combination of ii joy-cons into one virtual input device. That functionality has been left up to userspace. joycond-git AUR is a userspace daemon that combines two kernel joy-con evdev devices into i virtual input device using uinput. An application can use two joy-cons as if they are a single controller. When the daemon is active, switch controllers volition be placed in a pseudo pairing mode, and the LEDs will get-go flashing. Property the triggers can be used to pair controllers and make them usable. To pair two joy-cons together, printing ane trigger on each joy-con.

Using hid-nintendo pro controller with Steam Games (without joycond)

The hid-nintendo driver currently conflicts with steam using hidraw to implement its own pro controller commuter. If you wish to use the Steam implementation, the hid-nintendo commuter can be blacklisted. Alternatively if you want to use hid-nintendo with a Steam game directly, Steam tin be started without access to hidraw using firejail:

          $ firejail --noprofile --blacklist=/sys/class/hidraw/ steam        

An consequence has been opened on the steam-for-linux github repo.

Using hid-nintendo pro controller with Steam Games (with joycond)

A workaround has been added to joycond to have udev rules to block steam from accessing hidraw for the pro controller.

That alone is not plenty though, since steam will not recognize the pro controller when access to hidraw is blocked. To get around that outcome, joycond supports creating a virtual pro controller with a dissimilar product id. Steam will view this every bit a typical controller. This gives the all-time of both worlds, where hid-nintendo can be used both inside and outside of steam simultaneously.

To pair the pro controller in virtual style, press the Plus and Minus buttons simultaneously (instead of using the triggers). You must be using a version of joycond including this commit.

Using hid-nintendo with SDL2 Games

To add a mapping for the joy-cons or the pro controller to an SDL2 game, controllermap AUR can be run in the game'due south directory of games which have their own gamecontrollerdb.txt file.

Alternatively, the mappings can be added to an environment variable:

~/.bashrc
# hid-nintendo SDL2 mappings consign SDL_GAMECONTROLLERCONFIG="050000007e0500000920000001800000,Nintendo Switch Pro Controller,platform:Linux,a:b0,b:b1,x:b3,y:b2,back:b9,guide:b11,beginning:b10,leftstick:b12,rightstick:b13,leftshoulder:b5,rightshoulder:b6,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b7,righttrigger:b8, 030000007e0500000920000011810000,Nintendo Switch Pro Controller,platform:Linux,a:b0,b:b1,x:b3,y:b2,back:b9,guide:b11,starting time:b10,leftstick:b12,rightstick:b13,leftshoulder:b5,rightshoulder:b6,dpup:h0.1,dpdown:h0.4,dpleft:h0.eight,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b7,righttrigger:b8, 060000007e0500000620000000000000,Nintendo Switch Combined Joy-Cons,platform:Linux,a:b0,b:b1,ten:b3,y:b2,back:b9,guide:b11,start:b10,leftstick:b12,rightstick:b13,leftshoulder:b5,rightshoulder:b6,dpup:b14,dpdown:b15,dpleft:b16,dpright:b17,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b7,righttrigger:b8, "
Mimic Xbox 360 controller

For some games and emulators such as Stardew Valley and RetroArch, the controllers do not work unless you create a virtual Xbox 360 controller with xboxdrv. One possible sample configuration:

$ xboxdrv --evdev /dev/input/outcome* --evdev-absmap ABS_X=X1,ABS_Y=Y1,ABS_RX=X2,ABS_RY=Y2 --evdev-keymap BTN_DPAD_UP=du,BTN_DPAD_DOWN=dd,BTN_DPAD_LEFT=dl,BTN_DPAD_RIGHT=dr,BTN_SELECT=back,BTN_MODE=guide,BTN_START=get-go,BTN_TL=TL,BTN_TR=TR,BTN_EAST=A,BTN_SOUTH=B,BTN_NORTH=X,BTN_WEST=Y,BTN_THUMBL=LB,BTN_THUMBR=RB,BTN_TL2=LT,BTN_TR2=RT --axismap -Y1=Y1,-Y2=Y2        

Dolphin (Gamecube Controller Emulation)

Shinyquagsire23 fabricated a git repository called "HID Joy-Con Whispering"[ane], which contains a userspace driver for the Joy Cons and the Switch Pro Controller over USB. Currently, it does non support rumble or gyroscope. For rumble back up, encounter the hid-nintendo kernel driver section above.

After running make, load the uinput module:

          # modprobe uinput        

And so to activate the commuter:

          # ./uinputdriver > /dev/nothing        

Over on Dolphin'southward controller configuration menu, there should be an entry for evdev/0/joycon (non Nintendo Switch Pro Controller). Select it, and you should now be able to configure the controls.

Steam

While the controller works for native Linux games, this controller is non detected past Steam. To fix this, we will need to add a line to 70-steam-controller.rules.

/lib/udev/rules.d/70-steam-controller.rules
# NS PRO Controller USB KERNEL=="hidraw*", ATTRS{idVendor}=="20d6", ATTRS{idProduct}=="a711", MODE="0660", TAG+="uaccess"

udev can be reloaded with the new configuration by executing

          # udevadm command --reload-rules        

iPEGA-9017s and other Bluetooth gamepads

If you desire to use one of the widely bachelor bluetooth gamepads, such as iPEGA-9017s designed mostly for Android and iOS devices you would need xboxdrv AUR , bluez, bluez-plugins, and bluez-utils. Y'all should connect it in gamepad mode (if there are different modes, choose the gamepad one). Technically information technology is ready to be used, but in near cases games would non recognize it, and yous would have to map it individually for all application. The best way to simplify it and make information technology piece of work with all applications is to mimic Microsoft X360 controller with xboxdrv AUR . Once connected you tin create a udev rule to give it a persistent name, that would come in handy when setting it upwardly.

/etc/udev/rules.d/99-btjoy.rules
#Create a symlink to appropriate /dev/input/eventX at /dev/btjoy ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="Bluetooth Gamepad", ATTRS{uniq}=="00:17:02:01:ae:2a", SYMLINK+="btjoy"

Replace "Bluetooth Gampad" with your device name and "00:17:02:01:ae:2a" with your device's address.

Next, create a configuration for xboxdrv AUR somewhere, for example:

~/.config/xboxdrv/ipega.conf
#iPEGA PG-9017S Config   [xboxdrv] evdev-debug = truthful evdev-grab = true rumble = false mimic-xpad = true  [evdev-absmap] ABS_HAT0X = dpad_x ABS_HAT0Y = dpad_y  ABS_X = X1 ABS_Y = Y1  ABS_Z  = X2 ABS_RZ = Y2  [axismap] -Y1 = Y1 -Y2 = Y2  [evdev-keymap] BTN_EAST=a BTN_C=b BTN_NORTH=y BTN_SOUTH=x BTN_TR2=start BTN_TL2=back BTN_Z=rt BTN_WEST=lt  BTN_MODE = guide

Refer to the xboxdrv man to see all the options.

At present when you have the configuration and your device is connected you can commencement the xboxdrv AUR like and then:

# xboxdrv --evdev /dev/btjoy --config .config/xboxdrv/ipega.conf        

Your games volition now piece of work with bluetooth gamepad as long every bit xboxdrv is running.

iPEGA-9068 and 9087

For this model, use the same procedures as in a higher place, merely with the configs:

~/.config/xboxdrv/ipega.conf
#iPEGA PG-9068 and PG-9087 Config   [xboxdrv] evdev-debug = true evdev-grab = true rumble = false mimic-xpad = truthful  [evdev-absmap] ABS_HAT0X = dpad_x ABS_HAT0Y = dpad_y  ABS_X = X1 ABS_Y = Y1  ABS_Z  = X2 ABS_RZ = Y2  [axismap] -Y1 = Y1 -Y2 = Y2  [evdev-keymap] BTN_A=a BTN_B=b BTN_Y=y BTN_X=x BTN_TR=rb BTN_TL=lb BTN_TR2=rt BTN_TL2=lt BTN_THUMBL=tl BTN_THUMBR=tr BTN_START=start BTN_SELECT=back  BTN_MODE = guide

Defender X7

For this model, use the same procedures as above, just with the configs:

~/.config/xboxdrv/defender.conf
#Defender x7 xboxdrv config  [xboxdrv] evdev-debug = true evdev-grab = true rumble = imitation mimic-xpad = true  [evdev-absmap] ABS_HAT0X = dpad_x ABS_HAT0Y = dpad_y  ABS_X = X1 ABS_Y = Y1  ABS_Z  = X2 ABS_RZ = Y2  [axismap] -Y1 = Y1 -Y2 = Y2  [evdev-keymap] BTN_EAST=b BTN_NORTH=x BTN_SOUTH=a BTN_WEST=y BTN_TR2=rt BTN_TL2=lt BTN_TR=rb BTN_TL=lb BTN_THUMBL=tl BTN_THUMBR=tr BTN_START=start BTN_SELECT=back  BTN_MODE = guide

Now when you have the configuration and your device is continued you can starting time the xboxdrv AUR like so:

# xboxdrv --evdev /dev/btjoy --config .config/xboxdrv/defender.conf        

Steam Controller

Note: Kernel 4.18 provides a kernel driver for wired/wireless utilize of the steam controller as a controller input device without Steam.

The Steam client will recognize the controller and provide keyboard/mouse/gamepad emulation while Steam is running. The in-game Steam overlay needs to be enabled and working in order for gamepad emulation to work. You may need to run udevadm trigger with root privileges or plug the dongle out and in once again, if the controller does non work immediately later on installing and running Steam. If all else fails, try restarting the computer while the dongle is plugged in.

For Steam client to be able to emulate other gamepads in games, y'all volition demand to add the Udev rules from this mail by Valve. Annotation that name of the file with udev rules may exist different, for example /usr/lib/udev/rules.d/lxx-steam-input.rules. Reloading and triggering the rules may exist necessary. Alternatively, Valve'south Udev rules are likewise contained in game-devices-udev AUR .

If you are using the controller connected via Bluetooth LE, make sure the user is office of the input group.

If you cannot get the Steam Controller to work, meet #Steam Controller non pairing.

Alternatively y'all can install python-steamcontroller-git AUR to accept controller and mouse emulation without Steam or sc-controller AUR for a versatile graphical configuration tool simillar to what is provided by the Steam client.

Note: If y'all do not use the Steam runtime, you might actually need to disable the overlay for the controller to work in certain games (Rocket Wars, Rocket League, Binding of Isaac, etc.). Right click on a game in your library, select "Backdrop", and uncheck "Enable Steam Overlay".

Wine

python-steamcontroller-git AUR can also be used to make the Steam Controller work for games running under Wine. You demand to find and download the application xbox360cemu.v.iii.0 (e.grand. from here). Then copy the files dinput8.dll, xbox360cemu.ini, xinput1_3.dll and xinput_9_1_0.dll to the directory that contains your game executable. Edit xbox360cemu.ini and only change the post-obit values under [PAD1] to remap the Steam Controller correctly to a XBox controller.

xbox360cemu.ini
Right Analog Ten=four Right Analog Y=-five A=1 B=ii X=three Y=4 Dorsum=vii Start=8 Left Pollex=10 Correct Thumb=eleven Left Trigger=a3 Right Trigger=a6

Now showtime python-steamcontroller in Xbox360 mode (sc-xbox.py start). You might too desire to re-create XInputTest.exe from xbox360cemu.v.iii.0 to the same directory and run it with Vino in guild to test if the mappings work correctly. However neither mouse nor keyboard emulation work with this method.

Alternatively yous can use sc-controller AUR for a similar graphical setup as Steam's own configurator. Equally of writing, information technology is a chip buggy here and there but offers an easy click and go fashion of configuring the controller.

Xbox 360 controller

Both the wired and wireless (with the Xbox 360 Wireless Receiver for Windows) controllers are supported by the xpad kernel module and should work without boosted packages. Annotation that using a wireless Xbox360 controller with the Play&Charge USB cable volition not piece of work. The cable is for recharging only and does non transmit whatever input information over the wire.

Information technology has been reported that the default xpad commuter has some issues with a few newer wired and wireless controllers, such every bit:

  • incorrect button mapping. (word in Steam bugtracker)
  • non-working sync. (discussion in Arch Forum).
  • all iv LEDs keep blinking, but controller works. TLP's USB autosuspend is one certain cause of this issue with wireless controllers. Run into below for prepare.

If you utilise the TLP power direction tool, you may experience connexion bug with your Microsoft wireless adapter (eastward.chiliad. the indicator LED will go out after the adapter has been connected for a few seconds, and controller connection attempts fail, four LEDs keep blinking just controller works). This is due to TLP's USB autosuspend functionality, and the solution is to add together the Microsoft wireless adapter's device ID to TLP blacklist (to check device ID to blacklist, run "tlp-stat -u"; for original MS wireless dongle just add USB_DENYLIST="045e:0719" to "/etc/tlp.conf" ), cheque TLP configuration for more details.

If you experience such issues, you tin use #xboxdrv as the default xpad driver instead.

If you wish to use the controller for controlling the mouse, or mapping buttons to keys, etc. you should apply the xf86-input-joystick AUR parcel (configuration help can be found using joystick(4)). If the mouse locks itself in a corner, it might help changing the MatchDevicePath in /etc/X11/xorg.conf.d/50-joystick.conf from /dev/input/event* to /dev/input/js*.

In order to connect via Bluetooth using KDE, add the following kernel parameter bluetooth.disable_ertm=ane.

xboxdrv

xboxdrv is an alternative to xpad which provides more functionality and might work better with certain controllers. It works in userspace and can be launched equally system service.

Install it with the xboxdrv AUR package. And then beginning/enable xboxdrv.service.

If you take bug with the controller being recognized only non working in steam games or working simply with incorrect mappings, it may be required to modify y'all configuration every bit such:

/etc/default/xboxdrv
[xboxdrv] silent = true device-name = "Xbox 360 Wireless Receiver" mimic-xpad = true deadzone = 4000  [xboxdrv-daemon] dbus = disabled

Then restart xboxdrv.service.

Multiple controllers

xboxdrv supports a multitude of controllers, but they need to be gear up in /etc/default/xboxdrv. For each extra controller, add an next-controller = true line. For example, when using iv controllers, add it 3 times:

          [xboxdrv]  silent = truthful  next-controller = true  next-controller = true  next-controller = true  [xboxdrv-daemon]  dbus = disabled        

Then restart xboxdrv.service.

Mimic Xbox 360 controller with other controllers

xboxdrv can be used to make whatsoever controller register equally an Xbox 360 controller with the --mimic-xpad switch. This may be desirable for games that support Xbox 360 controllers out of the box, but have trouble detecting or working with other gamepads.

Showtime, yous need to notice out what each push button and axis on the controller is called. Y'all can use evtest for this. Run evtest and select the device outcome ID number (/dev/input/event*) that corresponds to your controller. Press the buttons on the controller and move the axes to read the names of each button and centrality.

Here is an example of the output:

            Event: time 1380985017.964843, type 4 (EV_MSC), code four (MSC_SCAN), value 90003 Result: time 1380985017.964843, blazon ane (EV_KEY), lawmaking 290 (BTN_THUMB2), value 1 Upshot: fourth dimension 1380985017.964843, -------------- SYN_REPORT ------------ Event: fourth dimension 1380985018.076843, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90003 Effect: time 1380985018.076843, type 1 (EV_KEY), lawmaking 290 (BTN_THUMB2), value 0 Event: time 1380985018.076843, -------------- SYN_REPORT ------------ Event: fourth dimension 1380985018.460841, blazon four (EV_MSC), code iv (MSC_SCAN), value 90002 Result: fourth dimension 1380985018.460841, type 1 (EV_KEY), code 289 (BTN_THUMB), value 1 Event: time 1380985018.460841, -------------- SYN_REPORT ------------ Event: time 1380985018.572835, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002 Effect: time 1380985018.572835, blazon ane (EV_KEY), code 289 (BTN_THUMB), value 0 Event: time 1380985018.572835, -------------- SYN_REPORT ------------ Event: time 1380985019.980824, type iv (EV_MSC), lawmaking iv (MSC_SCAN), value 90006 Event: time 1380985019.980824, type 1 (EV_KEY), code 293 (BTN_PINKIE), value ane Event: time 1380985019.980824, -------------- SYN_REPORT ------------ Outcome: time 1380985020.092835, type 4 (EV_MSC), code four (MSC_SCAN), value 90006 Result: fourth dimension 1380985020.092835, type 1 (EV_KEY), code 293 (BTN_PINKIE), value 0 Event: time 1380985020.092835, -------------- SYN_REPORT ------------ Event: time 1380985023.596806, type three (EV_ABS), code 3 (ABS_RX), value eighteen Event: fourth dimension 1380985023.596806, -------------- SYN_REPORT ------------ Consequence: time 1380985023.612811, type 3 (EV_ABS), code 3 (ABS_RX), value 0 Event: time 1380985023.612811, -------------- SYN_REPORT ------------ Event: fourth dimension 1380985023.708768, blazon 3 (EV_ABS), code 3 (ABS_RX), value xiv Event: time 1380985023.708768, -------------- SYN_REPORT ------------ Event: fourth dimension 1380985023.724772, type 3 (EV_ABS), code 3 (ABS_RX), value 128 Result: time 1380985023.724772, -------------- SYN_REPORT ------------        

In this case, BTN_THUMB, BTN_THUMB2 and BTN_PINKIE are buttons and ABS_RX is the 10 axis of the correct analogue stick. You tin now mimic an Xbox 360 controller with the post-obit command:

$ xboxdrv --evdev /dev/input/event* --evdev-absmap ABS_RX=X2 --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_PINKIE=rt --mimic-xpad        

The above example is incomplete. Information technology merely maps one axis and iii buttons for demonstration purposes. Use xboxdrv --help-push button to run across the names of the Xbox controller buttons and axes and demark them accordingly by expanding the command above. Axes mappings should go later on --evdev-absmap and push mappings follow --evdev-keymap (comma separated list; no spaces).

By default, xboxdrv outputs all events to the last. You can utilize this to test that the mappings are correct. Append the --silent option to keep it repose.

Using generic/clone controllers

Some clone gamepads might crave a specific initialization sequence in order to work (Super User answer). For that y'all should run the post-obit python script as the root user:

#!/usr/bin/env python3  import usb.core  dev = usb.core.find(idVendor=0x045e, idProduct=0x028e)  if dev is None:     raise ValueError('Device not plant') else:     dev.ctrl_transfer(0xc1, 0x01, 0x0100, 0x00, 0x14)        

Xbox Wireless Controller / Xbox 1 Wireless Controller

Connect Xbox Wireless Controller with usb cablevision

This is supported by the kernel and works whatever without boosted packages.

Connect Xbox Wireless Controller with Bluetooth

Update controller firmware via Windows 10

The firmware of the Xbox Wireless Controller used to crusade loops of connecting / disconnecting with Bluez. The best workaround for now is to plug (via a USB string) the controller to a Windows 10 computer, download the xbox accessories application, and update the firmware of the controller.

Former workaround

Tango-view-refresh-red.png This article or section is out of date. Tango-view-refresh-red.png

Reason: Disabling ERTM is not required for kernel 5.12+ and there seems to be some connection tricks that may not exist necessary in the future (Discuss in Talk:Gamepad)

Annotation: Disabling ERTM is not required since kernel version five.12.

You lot may have to disable Enhanced Retransmission Style (ERTM) to make information technology piece of work. Use either:

# echo 1 > /sys/module/bluetooth/parameters/disable_ertm        

Or add this file to your module configuration:

/etc/modprobe.d/xbox_bt.conf
options bluetooth disable_ertm=1
xpadneo

A relatively new driver which does back up the Xbox I S and Xbox Serial 10|Southward controller via Bluetooth is chosen xpadneo. In addition to these two models, it has also basic back up for the Xbox Elite Series two Wireless controller. In commutation for fully supporting just 2 controllers and so far, it enables one to read out the correct battery level, supports rumble (even the one on the trigger buttons - L2/R2), corrects the (sometimes wrong) button mapping and more than.

Installation is washed using DKMS: xpadneo-dkms-git AUR .

Note: Pairing a new Xbox 1 South controller for the starting time time may prove difficult, from not pairing at all to entering a connect/disconnect loop. These problems are described in that location. The best manner to reliably pair the controller is to starting time pair it in Windows x. However, this needs be done using the same Bluetooth adapter. A solution is to install a gratis re-create of Windows ten Evaluation on a Virtual auto (using QEMU or VirtualBox, taking intendance of the Bluetooth adapter passthrough requirements, e.g. as an USB device) using Arch Linux as your host, and pair in Windows 10 showtime, then practise the aforementioned again nether your Arch Linux system. Then pairing volition succeed and at that place will be no need of farther Windows 10 employ.

Connect Xbox Wireless Controller with Microsoft Xbox Wireless Adapter

xow

xow is a projection that allows connection with a wireless dongle. It is currently in very early on stages of development. It tin can be installed via xow-git AUR

xone

xone is a Linux kernel driver for Xbox I and Xbox Series Ten|Due south accessories. It serves as a modernistic replacement for xpad, supersedes xow. Currently working via wired or with the wireless dongle. This commuter is nevertheless in active development.

Logitech Dual Action

The Logitech Dual Activity gamepad has a very like mapping to the PS2 pad, but some buttons and triggers need to be swapped to mimic the Xbox controller.

          # xboxdrv --evdev /dev/input/event* \    --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \    --axismap -Y1=Y1,-Y2=Y2 \    --evdev-keymap BTN_TRIGGER=x,BTN_TOP=y,BTN_THUMB=a,BTN_THUMB2=b,BTN_BASE3=dorsum,BTN_BASE4=start,BTN_BASE=lt,BTN_BASE2=rt,BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr \    --mimic-xpad --silent        

PlayStation 2 controller via USB adapter

To fix the push button mapping of PS2 dual adapters and mimic the Xbox controller you tin can run the following command:

          # xboxdrv --evdev /dev/input/effect* \    --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \    --axismap -Y1=Y1,-Y2=Y2 \    --evdev-keymap   BTN_TOP=x,BTN_TRIGGER=y,BTN_THUMB2=a,BTN_THUMB=b,BTN_BASE3=back,BTN_BASE4=beginning,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE5=tl,BTN_BASE6=tr \    --mimic-xpad --silent        

PlayStation iii controller

Pairing via USB

If yous own a PS3 controller and can connect with USB, plug it to your computer and press the PS push button. The controller will ability upwardly and one of the four LEDs should light upward indicating the controller'due south number.

Pairing via Bluetooth

Install bluez bluez-utils bluez-plugins. Brand certain bluetooth is working by post-obit the beginning five steps of Bluetooth#Pairing and leave the bluetoothctl control running, then turn on the controller by pressing the middle 'PS' button(all four leds should be blinking quickly ~iv hz) and connect to your computer using usb. Lastly, type yes in the bluetoothctl prompt when asked 'Authorize service 00001124-0000-k-8000-00805f9b34fb (yes/no)'.

Alternative instructions: To connect your PS3 controller to your estimator using Bluetooth, you first need to install bluez and bluez-plugins so connect your controller via USB. A pop-up should appear asking for pairing. Click on Trust & Authorize. Y'all tin can now unplug your controller and press the PS button. The controller will connect and a LED will remain solid. You tin can now use it to play games. Connecting using the USB cable is just needed afterward the controller has been continued to another arrangement.

Tip: At that place are many complicated instructions on the internet on setting upward a PS3 controller that require many steps such every bit compiling and installing qtsixa or sixpair and setting upwards the controller manually, or patching bluez with some specific patches. None of this is necessary on a modern Linux kernel and after installing bluez-plugins.

PlayStation iv controller

Pairing via USB

Connect your controller via USB and press the PS push button.

Pairing via Bluetooth

If you want to use bluetooth mode, press PS button and Share button together, white led of gamepad should blink very chop-chop, then add wireless controller with your bluetooth manager (bluez, gnome-bluetooth).

Push button mapping

To fix the button mapping of PS4 controller you tin use the following command with xboxdrv (or try with the ds4drv programme, ds4drv AUR ):

          # xboxdrv \    --evdev /dev/input/past-id/usb-Sony_Computer_Entertainment_Wireless_Controller-effect-joystick\    --evdev-absmap ABS_X=x1,ABS_Y=y1                 \    --evdev-absmap ABS_Z=x2,ABS_RZ=y2                \    --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \    --evdev-keymap BTN_A=x,BTN_B=a                   \    --evdev-keymap BTN_C=b,BTN_X=y                   \    --evdev-keymap BTN_Y=lb,BTN_Z=rb                 \    --evdev-keymap BTN_TL=lt,BTN_TR=rt               \    --evdev-keymap BTN_SELECT=tl,BTN_START=tr        \    --evdev-keymap BTN_TL2=back,BTN_TR2=commencement        \    --evdev-keymap BTN_MODE=guide                    \    --axismap -y1=y1,-y2=y2                          \    --mimic-xpad                                     \    --silent        

Fix Motion control disharmonize (gamepad will not piece of work on some applications)

Dualshock 4 V1 and V2 are both similar three devices, touchpad, movement command, and joypad.

With some software similar Parsec and Shadow cloud gaming streaming applications, move control is in conflict with joypad, yous tin can disable touchpad and motility control by adding the following udev dominion:

/etc/udev/rules.d/51-disable-DS3-and-DS4-movement-controls.rules
SUBSYSTEM=="input", ATTRS{name}=="*Controller Movement Sensors", RUN+="/bin/rm %East{DEVNAME}", ENV{ID_INPUT_JOYSTICK}="" SUBSYSTEM=="input", ATTRS{name}=="*Controller Touchpad", RUN+="/bin/rm %East{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""

This should piece of work in USB and Bluetooth style.

Disable touchpad acting as mouse

This fixes conflicts with games that actually use touchpad as function of the gamepad, such as Ascent of the Tomb Raider. This will work with both DualShock4 and DualSense controllers.

Edit /etc/X11/xorg.conf.d/thirty-ds-disable-mouse.conf.

Then paste the post-obit and restart X11:

Section "InputClass"        Identifier   "ds-touchpad"        Commuter       "libinput"        MatchProduct "Wireless Controller Touchpad"        Pick       "Ignore" "True" EndSection        

Playstation v (Dualsense) controller

Configure button mapping (thanks to yoyossef):

xboxdrv \   --evdev /dev/input/by-id/usb-Sony_Interactive_Entertainment_Wireless_Controller-if03-effect-joystick \   --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y,ABS_X=X1,ABS_Y=Y1,ABS_RX=X2,ABS_RY=Y2,ABS_Z=LT,ABS_RZ=RT \   --evdev-keymap BTN_SOUTH=A,BTN_EAST=B,BTN_NORTH=Y,BTN_WEST=X,BTN_START=start,BTN_MODE=guide,BTN_SELECT=back \   --evdev-keymap BTN_TL=LB,BTN_TR=RB,BTN_TL2=LT,BTN_TR2=RT,BTN_THUMBL=TL,BTN_THUMBR=TR \   --axismap -y1=y1,-y2=y2                          \   --mimic-xpad                                     \   --silent        

Some applications, for example, Steam within Geforce NOW inside web browser, may be confused with original joystick events, which shadow the newly created event source. Just deleting /dev/input/js0 works this around.

The PlayStation and mode buttons even so practice not piece of work, all the same.

PlayStation 3/4 controller

The DualShock three, DualShock 4 and Sixaxis controllers work out of the box when plugged in via USB (the PS button volition need to be pushed to begin). They can likewise be used wirelessly via Bluetooth.

Steam properly recognizes it as a PS3 pad and Big Picture can be launched with the PS button. Big Picture show and some games may human action as if it was a 360 controller. Gamepad control over mouse is on by default. Yous may want to plough information technology off earlier playing games, see #Joystick moving mouse.

Connecting via Bluetooth

Install the bluez, bluez-plugins, and bluez-utils packages, which includes the sixaxis plugin. Then beginning the bluetooth service and ensure bluetooth is powered on. If using bluetoothctl first information technology in a terminal so plug the controller in via USB. You should be prompted to trust the controller in bluetoothctl. A graphical bluetooth front-end may program your PC's bluetooth address into the controller automatically. Hit the PlayStation button and cheque that the controller works while plugged in.

You can now disconnect your controller. The next fourth dimension you striking the PlayStation button it will connect without asking anything else.

Alternatively, on a PS4 controller yous can hold the share button and the PlayStation button simultaneously (for a few seconds) to put the gamepad in pairing mode, and pair as you would commonly.

GNOME'due south Settings likewise provides a graphical interface to pair sixaxis controllers when continued by wire.

Remember to disconnect the controller when yous are done as the controller will stay on when connected and drain the battery.

Note: If the controller does non connect, make sure the bluetooth interface is turned on and the controllers accept been trusted. (See Bluetooth)

Using Playstation 3 controllers with Steam

Tango-view-refresh-red.png This article or section is out of date. Tango-view-refresh-red.png

Reason: Tested connecting PS3 controller via bluetooth and it worked in Steam version 1575605714 and some Steam games without performing the following steps. (Discuss in Talk:Gamepad)

For Steam to recognize your controllers, it needs to be able to read their device file. The steam package sets upwardly udev rules for lots of controllers, merely not the PlayStation 3 controller (aka. DualShock 3 controller). Y'all can add the rules yourself:

/etc/udev/rules.d/99-dualshock-3.rules
# DualShock 3 controller, Bluetooth KERNEL=="hidraw*", KERNELS=="*054C:0268*", Manner="0660", TAG+="uaccess"  # DualShock iii controller, USB KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", Fashion="0660", TAG+="uaccess"

Make sure your user is in the "input" grouping:

usermod -aG input yourusername

Reboot your system. Steam should at present detect your PlayStation iii controller.

Using generic/clone controllers

Using generic/clone Dualshock controllers is possible, nevertheless there is an event that may require to install a patched package. The default Bluetooth protocol stack does not detect some of the clone controllers. The bluez-ps3 AUR bundle is a version patched to be able to detect them.

Tips and tricks

Gamepad over network

If y'all desire to use your gamepad with another computer over a network, yous tin utilise USB/IP or netstick-git AUR to do this.

Troubleshooting

Xbox I Wireless Gamepad detected only no inputs recognized

This tin can occur when using a third political party Xbox One controller with the xpad or #xboxdrv drivers. Try switching to #xpadneo.

Joystick moving mouse

Sometimes USB gamepad can be recognized as HID mouse (merely in X, it is however existence installed as /dev/input/js0 as well). Known result is cursor being moved by the joystick, or escaping to en edge of a screen right later on plugin. If your application tin find gamepad past itself, you can remove the xf86-input-joystick AUR parcel.

A more gentle solution is described in #Disable joystick from controlling mouse.

Gamepad is not working in FNA/SDL based games

If you are using a generic non-widely used gamepad y'all may encounter problems getting the gamepad recognized in games based on SDL. Since fourteen May 2015, FNA supports dropping a gamecontrollerdb.txt into the executable folder of the game, for example the SDL_GameControllerDB.

Equally an alternative and for older versions of FNA or for SDL you tin generate a mapping yourself past downloading the SDL source code via https://libsdl.org/, navigating to /examination/, compile the controllermap.c program (alternatively install controllermap AUR ) and run the test. After completing the controllermap test, a guid volition be generated that you can put in the SDL_GAMECONTROLLERCONFIG surroundings variable which will and then be picked upward past SDL/FNA games. For example:

$ export SDL_GAMECONTROLLERCONFIG="030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,ten:b3,a:b2,b:b1,y:b0,dorsum:b8,get-go:b9,dpleft:h0.eight,dpdown:h0.0,dpdown:h0.four,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,"        

Gamepad is not recognized by all programs

Some software, Steam for example, will but recognize the first gamepad information technology encounters. Due to a problems in the driver for Microsoft wireless periphery devices this tin in fact be the bluetooth dongle. If you notice you accept a /dev/input/js* and /dev/input/consequence* belonging to you keyboard'south bluetooth transceiver you can become automatically get rid of it by creating co-ordinate udev rules. Create a /:

/etc/udev/rules.d/99-btcleanup.rules
ACTION=="add", KERNEL=="js[0-9]*", SUBSYSTEM=="input", KERNELS=="...", ATTRS{bInterfaceSubClass}=="00", ATTRS{bInterfaceProtocol}=="00", ATTRS{bInterfaceNumber}=="02", RUN+="/usr/bin/rm /dev/input/js%n" Activeness=="add", KERNEL=="issue*", SUBSYSTEM=="input", KERNELS=="...", ATTRS{bInterfaceSubClass}=="00", ATTRS{bInterfaceProtocol}=="00", ATTRS{bInterfaceNumber}=="02", RUN+="/usr/bin/rm /dev/input/result%n"        

Right the KERNELS=="..." to lucifer your device. The correct value can exist found by running

# udevadm info -an /dev/input/js0        

Bold the device in question is /dev/input/js0. After you placed the dominion reload the rules with

# udevadm control --reload        

Then replug the device making y'all trouble. The joystick and event devices should be gone, although their number volition still be reserved. Merely the files are out of the manner.

Steam Controller not pairing

There are some unknown cases where the packaged udev rule for the Steam controller does non work (FS#47330). The most reliable workaround is to make the controller world readable. Copy the dominion /usr/lib/udev/rules.d/70-steam-controller.rules to /etc/udev/rules.d with a later prioritiy and change annihilation that says Fashion="0660" to Manner="0666" e.g.

/etc/udev/rules.d/99-steam-controller-perms.rules
... SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", Style="0666" ...        

Y'all may have to reboot in order for the alter to accept effect.

Steam Controller makes a game crash or not recognized

If your Steam Controller is working well in Steam Big Moving-picture show mode, but not recognized past a game or the game starts crashing when you lot plug in the controller, this may be because of the native driver that has been added to the Linux kernel 4.eighteen. Attempt to unload it, restart Steam and replug the controller.

The module proper name of the driver is hid_steam, and so to unload it you may perform:

# rmmod hid_steam        

Vibration does not piece of work in certain Windows games

Some Windows games wait for an Xbox 360 controller in particular, causing vibration to not work even with otherwise functional XInput gamepads. I instance of such game is Within.

To work effectually this such games:

  • Unload the xpad kernel module.
  • Launch xboxdrv, including Xbox 360 mimicking gamepad and with vibration back up:
xboxdrv --mimic-xpad --force-feedback        

Source: https://wiki.archlinux.org/title/Gamepad

Posted by: schickranding.blogspot.com

0 Response to "How Bluetooth Registers As Joystick"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel