Help:Controller Configuration: Difference between revisions

Help page
(Small fix-ups to formatting. Also enabled DS4 bluetooth command by default.)
mNo edit summary
 
(57 intermediate revisions by 20 users not shown)
Line 1: Line 1:
Before we begin, download the [https://www.psx-place.com/resources/gamepad-test.498/download?version=694 GamePad Test] homebrew which will help visualise ''motion and pressure-sensitive information'' received by RPCS3 and can be used for troubleshooting. [[https://www.psx-place.com/threads/ps3-gamepad-test.144/ Source]]
==Which controller should I buy?==
This section is intended for those who do not own a controller right now and are looking into purchasing one, or who have a controller but need a new one with support for motion controls.
===DualShock 3===
'''Most DualShock 3 controllers sold online these days are FAKE'''. It's impossible to tell fake controllers apart as they are made with the same molds and have same symbols and labels on them as official DualShock 3 controllers. Fake controllers might be missing some features (such as motion controls or pressure-sensitive buttons) and they are often not compatible with DualShock 3 drivers. For this reason it's not recommended to purchase these controllers anymore. On top of that, even if you find a original controller then setting it up still involves installing additional software and requires far more effort than other options.
===DualShock 4===
'''DualShock 4''' controllers are good choice for RPCS3 as they are commonly available in many colors and are easy to set up with the emulator. These controllers support motion controls as well, allowing you to play the games which require these features, and additionally it has the same symbols on the buttons as the PlayStation 3. However, to use these controllers on other games and emulators might require third-party tools that interfere with RPCS3. Some games do support DualShock 4 without third-party tools, but it's not common and is mostly limited to games that were released for the PlayStation 4.
===DualSense===
For '''DualSense''' (PlayStation 5) controllers, the same notes apply as for DualShock 4 as these controllers are very similar for PC users. The games and software with native support for DualShock 4 are often not compatible with DualSense, but DualSense support might be more common in the future. DualSense also has additional features such as Adaptive Triggers and HD vibration, but as the time of writing these features aren't utilised by RPCS3 or other PC software.
===Xbox or XInput-compatible===
If you mainly want a controller for PC games or other emulators then '''Xbox''' (or any third-party XInput compatible) controllers are a great choice as they are widely supported and do not require any additional software or third-party tools to work. However, they will not support features such as motion controls or pressure-sensitive buttons, which means that you will not be able to play games on RPCS3 that require these features. Additionally, the button labels on the controller will not match the ones that PlayStation 3 games display.
==Using DualShock 3 controller==
==Using DualShock 3 controller==
===On Windows===
===On Windows===
''<u>Important</u>: The DualShock 3 (DS3) controller cannot be used on Windows over Bluetooth. Users must connect the controller via USB cable.''
Currently there are 3 methods of setting up your DualShock 3 (and SIXAXIS) to RPCS3:
* Using RPCS3's dedicated DualShock 3 pad handler by installing Nefarius' DsHidMini driver. '''(recommended)'''
* Using RPCS3's dedicated DualShock 3 pad handler by installing the official DualShock 3 driver from Sony.
* Using RPCS3's XInput pad handler together with the third-party tool ScpToolkit.
 
The three approaches have advantages and disadvantages so here's a quick comparison between them:
{| class="wikitable"
! style="width: 33%" | Using dedicated DualShock 3 pad handler with DsHidMini driver  !! style="width: 33%" | Using dedicated DualShock 3 pad handler with official SONY driver !! style="width: 33%" | Using XInput pad handler
|-
| style="background-color: #76B900; color: white;" | Slightly complex installation instructions || style="background-color: #76B900; color: white;" | Non-intrusive and simple installation || style="background-color: #DD0031; color: white;" | Very complex installation instructions
|-
| style="background-color: #76B900; color: white;" | Can be used in combination with other XInput devices in RPCS3 || style="background-color: #76B900; color: white;" | Can be used in combination with other XInput devices in RPCS3 || style="background-color: #DD0031; color: white;" | Currently cannot be used in combination with other XInput devices in RPCS3
|-
| style="background-color: #76B900; color: white;" rowspan="2" | Bluetooth connectivity present when used in conjunction with Nefarius' BthPS3 || style="background-color: #DD0031; color: white;" rowspan="2" | No Bluetooth connectivity || style="background-color: #76B900; color: white;" | Bluetooth connectivity present
|-
| style="background-color: #DD0031; color: white;" | Permanently blocks all other Bluetooth device from connecting to the PC
|-
| style="background-color: #76B900; color: white;" | Some third-party DS3 controllers may work || style="background-color: #DD0031; color: white;" | No support for third-party DS3 controllers (e.g. PANHAI) || style="background-color: #76B900; color: white;" | Some third-party DS3 controllers may work
|-
| rowspan="2" | Need to uninstall third-party tools that access the DualShock 3 such as ScpToolkit || rowspan="2" | Need to uninstall third-party tools that access the DualShock 3 such as ScpToolkit  || style="background-color: #DD0031; color: white;" | Pressure-sensitivity does not work with Nefarius's version of ScpToolkit, need to use the original version linked below
|-
| style="background-color: #76B900; color: white;" | Preferable for users who already have original ScpToolkit v1.2.2.175 installed (or newer versions of ScpToolkit and aren't interested in pressure-sensitive buttons)
|}
 
====Using dedicated DualShock 3 pad handler====
The '''recommended method''' is to use RPCS3's dedicated DualShock 3 pad handler. This can be done in two ways: by using the official DualShock 3 driver from Sony or by using Nefarius' DsHidMini driver. This option lets users take advantage of all features such as ''pressure-sensitive buttons'' and ''motion controls''.
 
=====Using Nefarius' DsHidMini=====
This is the recommended driver for the Dualshock 3 on Windows. DsHidMini is a universal driver for the DualShock 3 developed by Nefarius. It allows the DualShock 3 to be presented as different types of HID devices. In its "SXS" mode, the driver emulates the behaviour of the official Sony driver, ensuring compatibility with RPCS3. '''When used in conjunction with [https://github.com/ViGEm/BthPS3 Nefarius' BthPS3], controllers can be connected by Bluetooth after being paired'''. To use RPCS3's dedicated DualShock 3 pad handler with Nefarius' DsHidMini driver:
# Do a complete wipe of all previous drivers you have installed for your DualShock 3 controller (such as ScpToolkit or Sony's official DS3 driver), this step if very important before you proceed any further. Steps for properly removing the drivers for both the official Sony and SCPToolkit drivers can be found [https://docs.nefarius.at/projects/DsHidMini/How-to-Install/#removing-conflicting-drivers here]. 
# Once you have properly wiped the previously installed drivers, proceed with the installation for DsHidMini using this [https://docs.nefarius.at/projects/DsHidMini/How-to-Install/ installation guide].
# Once installation is completed restart your PC, then with the controller connected, open the [https://docs.nefarius.at/projects/DsHidMini/HID-Device-Modes-Explained/ DsHidMini Control UI] and confirm that it's in "SXS" mode, if it's not then change to it.
# Finally select RPCS3's dedicated '''DualShock 3 pad handler''' in the ''Gamepad Configuration'' menu, then save and exit.
 
=====Using the official Sony Driver=====
We do not recommend this driver over DsHidMini on Windows. If you're still interested note that with Sony's driver '''bluetooth functionality will be unavailable'''. To use RPCS3's dedicated DualShock 3 pad handler with Sony's driver:
# Disable all third-party tools accessing the DualShock 3 controller (such as ScpToolkit).
# Download the [https://web.archive.org/web/20190906212206/https://filebin.net/ttwj1gk4r0oeuu1c/Wireless_Controller_Driver_-__DUALSHOCK_3_-3.0.0.0.zip?t=nn9bf83k DualShock 3 drivers v3.0.0.0] for Windows and install it. [[https://darkcloud.forumcommunity.net/?t=56241030 Source]]
# After completion of the installation, restart your PC.
# Connect the controller using a USB cable and press the '''PS button''' (in the middle of the pad) to allow the DualShock 3 to start sending reports to RPCS3.
# Select RPCS3's dedicated '''DualShock 3 pad handler''' in the ''Gamepad Settings'' menu.
 
=====Additional Notes=====
======Re-enable deep sleep mode on Windows 10 (Official Sony Driver)======
When you have installed official Sony driver, your DualShock 3 controller prevent Windows 10 to turn on deep sleep mode automatically (after the timeout you defined in windows settings). To re-enable this behavior, you simply need to disable your PlayStation 3 controller in device panel (under Human Interface Device (HID) list). [https://i.postimg.cc/W4VdTghD/ds3.png Image]
 
Don't forget to re-enable it to play. Of course, you still can unplug the USB cable in the same manner.
 
======Resetting the controller======
DualShock 3 can sometimes become unresponsive when the PC is restarted with it being connected. This can manifest in the following ways:
* All 4 lights are blinking.
* Controller appears as disconnected
* Controller appears as connected, but none of the buttons work
 
To fix this, turn the controller around and press the '''Reset button''' on the back. It is located in the bottom of a small, circular hole at the center of the controller, next to a larger screw-hole. You'll need a thin, long stick to reach it.
 
====Using XInput pad handler with ScpToolkit====
The alternative method is to use the XInput pad handler along with [https://forums.pcsx2.net/Thread-XInput-Wrapper-for-DS3-and-Play-com-USB-Dual-DS2-Controller ScpToolkit]. This option carries various benefits and drawbacks as mentioned in the table above. To use the XInput pad handler for the DualShock 3:
# Download [http://forums.pcsx2.net/attachment.php?aid=49455 ScpToolkit v1.2.0.160] along with [http://forums.pcsx2.net/attachment.php?aid=49784 Update v1.2.2.175].
# Extract ''ScpToolkit v1.2.0.160'' and place the '''ScpServer''' folder in the location of your choice.
# Extract ''Update v1.2.2.175'' over ScpServer folder and overwrite all files when prompted.
# Connect your controller to your PC using a USB cable or Bluetooth and let Windows automatically install the generic driver.
# Launch the '''ScpDriver.exe''' found in <code>ScpServer/bin/</code> and click '''Install'''.
# Navigate to <code>ScpServer/bin/Win64/</code> and launch '''SCPUser.exe'''. Test whether the input from your controller is correctly recognised. If the input is not recognised, restart your PC and try again.
# Once the input is correctly working, download the [https://github.com/SEt-t/XInput_SCP/releases/ modified XInput wrapper] and copy the '''XInput1_3.dll''' from the <code>x64</code> folder to your RPCS3 folder and place it next to the ''rpcs3.exe''.
# Select RPCS3's '''XInput pad handler''' in the ''Gamepad Settings'' menu.


Currently there are 2 methods of setting up your DualShock 3 (and SIXAXIS) to RPCS3.
<u>Notes</u>:
* The first is to use third-party tools such as [https://github.com/nefarius/ScpToolkit/releases ScpToolkit] and selecting the XInput pad handler in RPCS3. While this option allows users to connect the controller over USB or Bluetooth, features unique to the DualShock 3 such as pressure-sensitive buttons or motion controls will no longer function. However, these tools have the advantage of being able to work with virtually any PC game.
# As stated in the comparison above, this method prevents RPCS3 from recognising other XInput controllers. However, if users move ''XInput1_3.dll'' out of the RPCS3 folder, RPCS3 will be able to recognise both XInput and DualShock 3 controllers at the same time. However, doing so will cause the DualShock 3 controller to lose ''pressure-sensitive buttons'' and ''motion controls'', behaving like a regular XInput device.
* The second '''and recommended method''' is to use RPCS3's dedicated DualShock 3 pad handler. This is done by installing your controller as a generic USB device and then allowing RPCS3 to handle the controller. While this option lets users take advantage of features such as pressure-sensitive buttons and motion controls, bluetooth functionality will be unavailable. To use RPCS3's dedicated DualShock 3 pad handler:
# Currently only one application can receive pressure-sensitive information over SCP interface, so if you already have something else running that uses this information (for example, another emulator) then DualShock 3 controller in RPCS3 may behave as a regular XInput device, or in some cases one of the two applications may crash.
*# Disable all third-party tools accessing the DualShock 3 (such as ScpToolkit)
# If SCPUser.exe crashes with the error ''The application was unable to start correctly (0xc0000142)'' in step 6, download this fork of the [https://github.com/SiliconExarch/XInput_SCP/releases/ modified XInput wrapper] and copy the '''XInput1_3.dll''' from the <code>x64</code> folder to the <code>Win64</code> folder and place it next to the ''SCPUser.exe''. If this resolves the issue and your controller is detected, copy this .dll to your RPCS3 folder instead.
*# Install generic USB drivers. Use [https://zadig.akeo.ie/ Zadig] and install '''WinUSB''' for your DualShock 3.
*# Press the '''PS button''' (in the middle of the pad) to allow the DualShock 3 to start sending reports to RPCS3.
*# Select RPCS3's dedicated '''DualShock 3 pad handler''' in the ''Gamepad Settings'' menu.


===On Linux===
===On Linux===
Line 16: Line 95:
<pre>
<pre>
# DualShock 3 over USB
# DualShock 3 over USB
KERNEL=="hidraw", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", MODE="0666"
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", MODE="0666"


# DualShock 3 over Bluetooth
# DualShock 3 over Bluetooth
Line 22: Line 101:
</pre>
</pre>


After this you must either
After this you must either:
# restart your computer for these settings to apply ''or''
# restart your computer for these settings to apply ''or''
# run <code>sudo udevadm control --reload-rules</code> and replug in your controller
# run <code>sudo udevadm control --reload-rules</code> and replug in your controller


This will allow RPCS3 to communicate with the DualShock 3. Users can then select RPCS3's dedicated DualShock 3 pad handler in the ''Gamepad Settings'' menu.
This will allow RPCS3 to communicate with the DualShock 3. Users can then select RPCS3's dedicated DualShock 3 pad handler in the ''Gamepad Settings'' menu.
===On FreeBSD===
The DualShock 3 on FreeBSD works similarly to Linux. However, rather than Linux's udev, FreeBSD uses a udev-compatible interface called libudev-devd. To get a DualShock 3 working over USB, you will need to create a file called <code>/usr/local/etc/devd/ds3.conf</code> (you will need root permissions to create this file), and fill it with the following:
<pre>
# DualShock 3
notify 100 {
        match "system"          "USB";
        match "subsystem"      "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x0268";
        action "chmod 0666 /dev/$cdev";
};
</pre>
After this you must restart your computer.


==Using DualShock 4 controller==
==Using DualShock 4 controller==
Line 43: Line 139:


# DualShock 4 Slim over USB
# DualShock 4 Slim over USB
# KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="09cc", MODE="0666"
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="09cc", MODE="0666"


# DualShock 4 over Bluetooth
# DualShock 4 over Bluetooth
Line 49: Line 145:


# DualShock 4 Slim over Bluetooth
# DualShock 4 Slim over Bluetooth
# KERNEL=="hidraw*", KERNELS=="*054C:09CC*", MODE="0666"
KERNEL=="hidraw*", KERNELS=="*054C:09CC*", MODE="0666"
</pre>
</pre>


Line 57: Line 153:


This will allow RPCS3 to communicate with the DualShock 4. Users can then select RPCS3's dedicated DualShock 4 pad handler in the ''Gamepad Settings'' menu.
This will allow RPCS3 to communicate with the DualShock 4. Users can then select RPCS3's dedicated DualShock 4 pad handler in the ''Gamepad Settings'' menu.
===On FreeBSD===
The DualShock 4 on FreeBSD works similarly to Linux. However, rather than Linux's udev, FreeBSD uses a udev-compatible interface called libudev-devd. To get a DualShock 4 working over USB, you will need to create a file called <code>/usr/local/etc/devd/ds4.conf</code> (you will need root permissions to create this file), and fill it with the following:
<pre>
# DualShock 4
notify 100 {
        match "system"          "USB";
        match "subsystem"      "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x05c4";
        action "chmod 0666 /dev/$cdev";
};
# DualShock 4 Wireless Adapter
notify 100 {
        match "system"          "USB";
        match "subsystem"      "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x0ba0";
        action "chmod 0666 /dev/$cdev";
};
# DualShock 4 Slim
notify 100 {
        match "system"          "USB";
        match "subsystem"      "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x09cc";
        action "chmod 0666 /dev/$cdev";
};
</pre>
After this you must restart your computer.
==Using DualSense controller==
===On Linux===
The DualSense on Linux works with HIDAPI, allowing for the controller to work through USB as well as Bluetooth. To use the DualSense Backend, users need to create a file called <code>/etc/udev/rules.d/99-dualsense-controllers.rules</code> (you will need root permissions to create this file), and fill it with the following:
<pre>
# PS5 DualSense controller over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ce6", MODE="0666", TAG+="uaccess"
# PS5 DualSense controller over bluetooth hidraw
KERNEL=="hidraw*", KERNELS=="*054C:0CE6*", MODE="0666", TAG+="uaccess"
</pre>
After this you must either
# restart your computer for these settings to apply ''or''
# run <code>sudo udevadm control --reload-rules</code> and replug in your controller
This will allow RPCS3 to communicate with the DualSense. Users can then select RPCS3's dedicated DualSense pad handler in the ''Gamepad Settings'' menu.
===On FreeBSD===
The DualSense on FreeBSD works similarly to Linux. However, rather than Linux's udev, FreeBSD uses a udev-compatible interface called libudev-devd. To get a DualSense controller working over USB, you will need to create a file called <code>/usr/local/etc/devd/dualsense.conf</code> (you will need root permissions to create this file), and fill it with the following:
<pre>
# DualSense
notify 100 {
        match "system"          "USB";
        match "subsystem"      "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x0ce6";
        action "chmod 0666 /dev/$cdev";
};
</pre>
After this you must restart your computer.
==Analog sticks not centered with evdev pad handler==
When using the evdev pad handler on Linux, some users may encounter cases where the analog sticks of the controller are not centered but stuck in the corner of the movement zone. This issue occurs when incorrect drivers are used for the controller.
Usually, analog sticks have a range from <code>-x</code> to <code>+x</code> while triggers use only a positive range from <code>0</code> to <code>+x</code>. However, some controllers use positive ranges for analog sticks as well which does not directly work with RPCS3's implementation. Hence, the following workaround is required:
# Navigate to <code>~/.config/rpcs3/</code> and open <code>evdev_positive_axis.yml</code>. If this file does not exist in the directory, create it.
# Change the following lines from '''false''' to '''true''':
:: {|
! Before !! After
|-
| <pre>ABS_X:  false
ABS_Y:  false
ABS_RX: false
ABS_RY: false</pre> || <pre>ABS_X:  true
ABS_Y:  true
ABS_RX: true
ABS_RY: true</pre>
|}
This is not an exhaustive list of options available. Users are requested to toggle other options as required by their specific controller or driver.

Latest revision as of 15:06, 15 July 2024

Before we begin, download the GamePad Test homebrew which will help visualise motion and pressure-sensitive information received by RPCS3 and can be used for troubleshooting. [Source]

Which controller should I buy?

This section is intended for those who do not own a controller right now and are looking into purchasing one, or who have a controller but need a new one with support for motion controls.

DualShock 3

Most DualShock 3 controllers sold online these days are FAKE. It's impossible to tell fake controllers apart as they are made with the same molds and have same symbols and labels on them as official DualShock 3 controllers. Fake controllers might be missing some features (such as motion controls or pressure-sensitive buttons) and they are often not compatible with DualShock 3 drivers. For this reason it's not recommended to purchase these controllers anymore. On top of that, even if you find a original controller then setting it up still involves installing additional software and requires far more effort than other options.

DualShock 4

DualShock 4 controllers are good choice for RPCS3 as they are commonly available in many colors and are easy to set up with the emulator. These controllers support motion controls as well, allowing you to play the games which require these features, and additionally it has the same symbols on the buttons as the PlayStation 3. However, to use these controllers on other games and emulators might require third-party tools that interfere with RPCS3. Some games do support DualShock 4 without third-party tools, but it's not common and is mostly limited to games that were released for the PlayStation 4.

DualSense

For DualSense (PlayStation 5) controllers, the same notes apply as for DualShock 4 as these controllers are very similar for PC users. The games and software with native support for DualShock 4 are often not compatible with DualSense, but DualSense support might be more common in the future. DualSense also has additional features such as Adaptive Triggers and HD vibration, but as the time of writing these features aren't utilised by RPCS3 or other PC software.

Xbox or XInput-compatible

If you mainly want a controller for PC games or other emulators then Xbox (or any third-party XInput compatible) controllers are a great choice as they are widely supported and do not require any additional software or third-party tools to work. However, they will not support features such as motion controls or pressure-sensitive buttons, which means that you will not be able to play games on RPCS3 that require these features. Additionally, the button labels on the controller will not match the ones that PlayStation 3 games display.

Using DualShock 3 controller

On Windows

Currently there are 3 methods of setting up your DualShock 3 (and SIXAXIS) to RPCS3:

  • Using RPCS3's dedicated DualShock 3 pad handler by installing Nefarius' DsHidMini driver. (recommended)
  • Using RPCS3's dedicated DualShock 3 pad handler by installing the official DualShock 3 driver from Sony.
  • Using RPCS3's XInput pad handler together with the third-party tool ScpToolkit.

The three approaches have advantages and disadvantages so here's a quick comparison between them:

Using dedicated DualShock 3 pad handler with DsHidMini driver Using dedicated DualShock 3 pad handler with official SONY driver Using XInput pad handler
Slightly complex installation instructions Non-intrusive and simple installation Very complex installation instructions
Can be used in combination with other XInput devices in RPCS3 Can be used in combination with other XInput devices in RPCS3 Currently cannot be used in combination with other XInput devices in RPCS3
Bluetooth connectivity present when used in conjunction with Nefarius' BthPS3 No Bluetooth connectivity Bluetooth connectivity present
Permanently blocks all other Bluetooth device from connecting to the PC
Some third-party DS3 controllers may work No support for third-party DS3 controllers (e.g. PANHAI) Some third-party DS3 controllers may work
Need to uninstall third-party tools that access the DualShock 3 such as ScpToolkit Need to uninstall third-party tools that access the DualShock 3 such as ScpToolkit Pressure-sensitivity does not work with Nefarius's version of ScpToolkit, need to use the original version linked below
Preferable for users who already have original ScpToolkit v1.2.2.175 installed (or newer versions of ScpToolkit and aren't interested in pressure-sensitive buttons)

Using dedicated DualShock 3 pad handler

The recommended method is to use RPCS3's dedicated DualShock 3 pad handler. This can be done in two ways: by using the official DualShock 3 driver from Sony or by using Nefarius' DsHidMini driver. This option lets users take advantage of all features such as pressure-sensitive buttons and motion controls.

Using Nefarius' DsHidMini

This is the recommended driver for the Dualshock 3 on Windows. DsHidMini is a universal driver for the DualShock 3 developed by Nefarius. It allows the DualShock 3 to be presented as different types of HID devices. In its "SXS" mode, the driver emulates the behaviour of the official Sony driver, ensuring compatibility with RPCS3. When used in conjunction with Nefarius' BthPS3, controllers can be connected by Bluetooth after being paired. To use RPCS3's dedicated DualShock 3 pad handler with Nefarius' DsHidMini driver:

  1. Do a complete wipe of all previous drivers you have installed for your DualShock 3 controller (such as ScpToolkit or Sony's official DS3 driver), this step if very important before you proceed any further. Steps for properly removing the drivers for both the official Sony and SCPToolkit drivers can be found here.
  2. Once you have properly wiped the previously installed drivers, proceed with the installation for DsHidMini using this installation guide.
  3. Once installation is completed restart your PC, then with the controller connected, open the DsHidMini Control UI and confirm that it's in "SXS" mode, if it's not then change to it.
  4. Finally select RPCS3's dedicated DualShock 3 pad handler in the Gamepad Configuration menu, then save and exit.
Using the official Sony Driver

We do not recommend this driver over DsHidMini on Windows. If you're still interested note that with Sony's driver bluetooth functionality will be unavailable. To use RPCS3's dedicated DualShock 3 pad handler with Sony's driver:

  1. Disable all third-party tools accessing the DualShock 3 controller (such as ScpToolkit).
  2. Download the DualShock 3 drivers v3.0.0.0 for Windows and install it. [Source]
  3. After completion of the installation, restart your PC.
  4. Connect the controller using a USB cable and press the PS button (in the middle of the pad) to allow the DualShock 3 to start sending reports to RPCS3.
  5. Select RPCS3's dedicated DualShock 3 pad handler in the Gamepad Settings menu.
Additional Notes
Re-enable deep sleep mode on Windows 10 (Official Sony Driver)

When you have installed official Sony driver, your DualShock 3 controller prevent Windows 10 to turn on deep sleep mode automatically (after the timeout you defined in windows settings). To re-enable this behavior, you simply need to disable your PlayStation 3 controller in device panel (under Human Interface Device (HID) list). Image

Don't forget to re-enable it to play. Of course, you still can unplug the USB cable in the same manner.

Resetting the controller

DualShock 3 can sometimes become unresponsive when the PC is restarted with it being connected. This can manifest in the following ways:

  • All 4 lights are blinking.
  • Controller appears as disconnected
  • Controller appears as connected, but none of the buttons work

To fix this, turn the controller around and press the Reset button on the back. It is located in the bottom of a small, circular hole at the center of the controller, next to a larger screw-hole. You'll need a thin, long stick to reach it.

Using XInput pad handler with ScpToolkit

The alternative method is to use the XInput pad handler along with ScpToolkit. This option carries various benefits and drawbacks as mentioned in the table above. To use the XInput pad handler for the DualShock 3:

  1. Download ScpToolkit v1.2.0.160 along with Update v1.2.2.175.
  2. Extract ScpToolkit v1.2.0.160 and place the ScpServer folder in the location of your choice.
  3. Extract Update v1.2.2.175 over ScpServer folder and overwrite all files when prompted.
  4. Connect your controller to your PC using a USB cable or Bluetooth and let Windows automatically install the generic driver.
  5. Launch the ScpDriver.exe found in ScpServer/bin/ and click Install.
  6. Navigate to ScpServer/bin/Win64/ and launch SCPUser.exe. Test whether the input from your controller is correctly recognised. If the input is not recognised, restart your PC and try again.
  7. Once the input is correctly working, download the modified XInput wrapper and copy the XInput1_3.dll from the x64 folder to your RPCS3 folder and place it next to the rpcs3.exe.
  8. Select RPCS3's XInput pad handler in the Gamepad Settings menu.

Notes:

  1. As stated in the comparison above, this method prevents RPCS3 from recognising other XInput controllers. However, if users move XInput1_3.dll out of the RPCS3 folder, RPCS3 will be able to recognise both XInput and DualShock 3 controllers at the same time. However, doing so will cause the DualShock 3 controller to lose pressure-sensitive buttons and motion controls, behaving like a regular XInput device.
  2. Currently only one application can receive pressure-sensitive information over SCP interface, so if you already have something else running that uses this information (for example, another emulator) then DualShock 3 controller in RPCS3 may behave as a regular XInput device, or in some cases one of the two applications may crash.
  3. If SCPUser.exe crashes with the error The application was unable to start correctly (0xc0000142) in step 6, download this fork of the modified XInput wrapper and copy the XInput1_3.dll from the x64 folder to the Win64 folder and place it next to the SCPUser.exe. If this resolves the issue and your controller is detected, copy this .dll to your RPCS3 folder instead.

On Linux

The DualShock 3 on Linux works with HIDAPI, allowing for the controller to work through USB as well as Bluetooth. To use the DualShock 3 Backend, users need to create a file called /etc/udev/rules.d/99-ds3-controllers.rules (you will need root permissions to create this file), and fill it with the following:

# DualShock 3 over USB
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", MODE="0666"

# DualShock 3 over Bluetooth
KERNEL=="hidraw*", KERNELS=="*054C:0268*", MODE="0666"

After this you must either:

  1. restart your computer for these settings to apply or
  2. run sudo udevadm control --reload-rules and replug in your controller

This will allow RPCS3 to communicate with the DualShock 3. Users can then select RPCS3's dedicated DualShock 3 pad handler in the Gamepad Settings menu.

On FreeBSD

The DualShock 3 on FreeBSD works similarly to Linux. However, rather than Linux's udev, FreeBSD uses a udev-compatible interface called libudev-devd. To get a DualShock 3 working over USB, you will need to create a file called /usr/local/etc/devd/ds3.conf (you will need root permissions to create this file), and fill it with the following:

# DualShock 3
notify 100 {
        match "system"          "USB";
        match "subsystem"       "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x0268";
        action "chmod 0666 /dev/$cdev";
};

After this you must restart your computer.

Using DualShock 4 controller

On Windows

The DualShock 4 on Windows works with HIDAPI, allowing for the controller to work through USB as well as Bluetooth. There aren't any additional steps required and the controller should just work with RPCS3's dedicated DualShock 4 pad handler. However, please note that third-party tools like ScpToolkit or DS4Windows may interfere with RPCS3 and it is recommended to disable all such tools.

On Linux

The DualShock 4 on Linux works with HIDAPI, allowing for the controller to work through USB as well as Bluetooth. To use the DualShock 4 Backend, users need to create a file called /etc/udev/rules.d/99-ds4-controllers.rules (you will need root permissions to create this file), and fill it with the following:

# DualShock 4 over USB
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05c4", MODE="0666"

# DualShock 4 Wireless Adapter over USB
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ba0", MODE="0666"

# DualShock 4 Slim over USB
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="09cc", MODE="0666"

# DualShock 4 over Bluetooth
KERNEL=="hidraw*", KERNELS=="*054C:05C4*", MODE="0666"

# DualShock 4 Slim over Bluetooth
KERNEL=="hidraw*", KERNELS=="*054C:09CC*", MODE="0666"

After this you must either

  1. restart your computer for these settings to apply or
  2. run sudo udevadm control --reload-rules and replug in your controller

This will allow RPCS3 to communicate with the DualShock 4. Users can then select RPCS3's dedicated DualShock 4 pad handler in the Gamepad Settings menu.

On FreeBSD

The DualShock 4 on FreeBSD works similarly to Linux. However, rather than Linux's udev, FreeBSD uses a udev-compatible interface called libudev-devd. To get a DualShock 4 working over USB, you will need to create a file called /usr/local/etc/devd/ds4.conf (you will need root permissions to create this file), and fill it with the following:

# DualShock 4
notify 100 {
        match "system"          "USB";
        match "subsystem"       "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x05c4";
        action "chmod 0666 /dev/$cdev";
};

# DualShock 4 Wireless Adapter
notify 100 {
        match "system"          "USB";
        match "subsystem"       "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x0ba0";
        action "chmod 0666 /dev/$cdev";
};

# DualShock 4 Slim
notify 100 {
        match "system"          "USB";
        match "subsystem"       "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x09cc";
        action "chmod 0666 /dev/$cdev";
};

After this you must restart your computer.

Using DualSense controller

On Linux

The DualSense on Linux works with HIDAPI, allowing for the controller to work through USB as well as Bluetooth. To use the DualSense Backend, users need to create a file called /etc/udev/rules.d/99-dualsense-controllers.rules (you will need root permissions to create this file), and fill it with the following:

# PS5 DualSense controller over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ce6", MODE="0666", TAG+="uaccess"

# PS5 DualSense controller over bluetooth hidraw
KERNEL=="hidraw*", KERNELS=="*054C:0CE6*", MODE="0666", TAG+="uaccess"

After this you must either

  1. restart your computer for these settings to apply or
  2. run sudo udevadm control --reload-rules and replug in your controller

This will allow RPCS3 to communicate with the DualSense. Users can then select RPCS3's dedicated DualSense pad handler in the Gamepad Settings menu.

On FreeBSD

The DualSense on FreeBSD works similarly to Linux. However, rather than Linux's udev, FreeBSD uses a udev-compatible interface called libudev-devd. To get a DualSense controller working over USB, you will need to create a file called /usr/local/etc/devd/dualsense.conf (you will need root permissions to create this file), and fill it with the following:

# DualSense
notify 100 {
        match "system"          "USB";
        match "subsystem"       "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x054c";
        match "product" "0x0ce6";
        action "chmod 0666 /dev/$cdev";
};

After this you must restart your computer.

Analog sticks not centered with evdev pad handler

When using the evdev pad handler on Linux, some users may encounter cases where the analog sticks of the controller are not centered but stuck in the corner of the movement zone. This issue occurs when incorrect drivers are used for the controller.

Usually, analog sticks have a range from -x to +x while triggers use only a positive range from 0 to +x. However, some controllers use positive ranges for analog sticks as well which does not directly work with RPCS3's implementation. Hence, the following workaround is required:

  1. Navigate to ~/.config/rpcs3/ and open evdev_positive_axis.yml. If this file does not exist in the directory, create it.
  2. Change the following lines from false to true:
Before After
ABS_X:  false
ABS_Y:  false
ABS_RX: false
ABS_RY: false
ABS_X:  true
ABS_Y:  true
ABS_RX: true
ABS_RY: true

This is not an exhaustive list of options available. Users are requested to toggle other options as required by their specific controller or driver.