A Sony DualShock 4 userspace driver for Linux
ds4drv is a Sony DualShock 4 userspace driver for Linux.
These packages will normally be installed automatically by the setup script, but you may want to use your distro’s packages if available:
Installing the latest release is simple by using pip:
$ sudo pip install ds4drv
If you want to try out latest development code check out the source from Github and install it with:
$ git clone https://github.com/chrippa/ds4drv.git $ cd ds4drv $ sudo python setup.py install
ds4drv has two different modes to find DS4 devices, decide which one to use depending on your use case.
Supported protocols: Bluetooth
Unless your system is using BlueZ 5.14 (which was released recently) or higher it is not possible to pair with the DS4. Therefore this workaround exists, which connects directly to the DS4 when it has been started in pairing mode (by holding Share + the PS button until the LED starts blinking rapidly).
This is the default mode when running without any options:
Supported protocols: Bluetooth and USB
This mode uses the Linux kernel feature hidraw to talk to already existing devices on the system.
$ ds4drv --hidraw
To use the DS4 via bluetooth in this mode you must pair it first. This requires BlueZ 5.14+ as there was a bug preventing pairing in earlier verions. How you actually pair the DS4 with your computer depends on how your system is setup, suggested googling: <distro name> bluetooth pairing
To use the DS4 via USB in this mode, simply connect your DS4 to your computer via a micro USB cable.
Note: Unfortunately due to a kernel bug it is currently not possible to use any LED functionality when using bluetooth devices in this mode.
If you want to use ds4drv as a normal user, you need to make sure ds4drv has permissions to use certain features on your system.
ds4drv uses the kernel module uinput to create input devices in user land and the module hidraw to communicate with DualShock 4 controllers (when using --hidraw), but this usually requires root permissions. You can change the permissions by copying the udev rules file to /etc/udev/rules.d/.
You may have to reload your udev rules after this with:
$ sudo udevadm control --reload-rules $ sudo udevadm trigger
The preferred way of configuring ds4drv is via a config file. Take a look at ds4drv.conf for example usage.
ds4drv will look for the config file in the following paths:
… or you can specify your own location with --config.
You can also configure using command line options, this will set the LED to a bright red:
$ ds4drv --led ff0000
See ds4drv --help for a list of all the options.
ds4drv does in theory support multiple controllers (I only have one controller myself, so this is untested). You can give each controller different options like this:
$ ds4drv --led ff0000 --next-controller --led 00ff00
This will set the LED color to red on the first controller connected and green on the second.
The DualShock 4 report format is not open and had to be reverse engineered. These resources have been very helpful when creating ds4drv:
|File Name & Checksum SHA256 Checksum Help||Version||File Type||Upload Date|
|ds4drv-0.5.1-py2.py3-none-any.whl (36.4 kB) Copy SHA256 Checksum SHA256||py2.py3||Wheel||Aug 15, 2016|
|ds4drv-0.5.1-py3-none-any.whl (36.4 kB) Copy SHA256 Checksum SHA256||py3||Wheel||Apr 30, 2016|