How to setup DualSense controller for non-Steam games?

Introduction

  • First I just want to say that I’m not the author of the code, full credit goes to the developers working on the SC Controller project.
    • https://github.com/kozec/sc-controller
  • This is how I made DualSense (PS5) controller work for non-Steam games on Manjaro and Pop!_OS distributions using SC Controller project.
  • Using Lutris for example, DualSense controller will appear as XBox controller in game

Dependencies

  • SC Controller project is written in python2, it is required to run it
  • https://github.com/kozec/sc-controller#dependencies
  • I installed almost all the dependencies using pacman, only exception was python2-evdev which I installed from AUR
    • https://aur.archlinux.org/packages/python2-evdev/

Installing SC Controller

  • At the moment of writing DualSense controller support is not yet on the master branch, installing SC Controller using package manager won’t have DualSense support
    • Pull request: https://github.com/kozec/sc-controller/pull/648
    • Issue: https://github.com/kozec/sc-controller/issues/624
  • To run code with DualSense support, follow these steps:
git clone https://github.com/psstoyanov/sc-controller.git
cd sc-controller
git checkout dualsense
  • According to the comments in the GitHub issue you can try running run.sh script, but that didn’t work for me
./run.sh
  • If the run.sh script doesn’t work (controller doesn’t get recognized), install SC controller using setup.py:
python2 setup.py build
sudo python2 setup.py install --record files.txt
  • files.txt will have all the files setup.py script installed so you can easily remove them using xargs rm -rf < files.txt if you wish
  • Connect DualSense controller (via USB or via Bluetooth)
  • Run sc-controller
  • Choose XBox Controller from the dropdown menu
  • Wait for the circle on the upper left to become green, that means emulation is working
  • You can install and use jstest-gtk to test if everything is working
    • For me, DPad wasn’t mapped in SC Controller when I installed it. You can map it from the SC Controller UI, bottom left.
  • For testing I used Lutris with Diablo II: Resurrected, worked great on both distributions.

Other options:

  • Playstation 5 (Dualsense) controller section on the arch wiki might work for you, it didn’t for me
    • https://wiki.archlinux.org/title/Gamepad#Playstation_5_(Dualsense)_controller
    • ds360 project created by yoyossef, same person that opened SC Controller issue for DualSense, uses xboxdrv method mentioned in the wiki
      • https://github.com/yoyossef/ds360
  • There is a fork Ryochan7/sc-controller that is more up to date, uses python3, but as far as I know, at the moment of writing, DualSense is not supported
    • https://github.com/Ryochan7/sc-controller
1 Like