Turns your PS Vita into (almost) a DualShock 4!
Based on VitaPad by Rinnegatamante and Rust-based VitaPad by saidsay-so.
- VitaOxiPad
VitaOxiPad is a client-server application that turns your PS Vita into (almost) a DualShock 4. The PS Vita acts as a server to which the PC client will be connected within the local network (WiFi).
Install the Client on Windows:
- Download the latest
VitaOxiPad-x64.exe
orVitaOxiPad-x32.exe
from the releases page; - Install ViGEmBus on your PC;
- Run the
VitaOxiPad-x64.exe
orVitaOxiPad-x32.exe
in the console (PowerShell, Windows Terminal, Bash, etc) and enter your PS Vita's IP address.
Install the Client on Linux:
Unfortunately, building static files is not supported for Linux at this time. You will need to build the Client yourself.
- Ensure your PS Vita is set up for homebrew applications;
- Download the
VitaOxiPad.vpk
file; - Use VitaShell or another package manager to install the
.vpk
on your PS Vita.
$ VitaOxiPad-x64.exe --help
Usage: VitaOxiPad-x64.exe <ip> [-p <port>] [-c <config>] [--polling-interval <polling-interval>] [-d]
Create a virtual controller and fetch its data from a Vita over the network.
Positional Arguments:
ip IP address of the Vita to connect to
Options:
-p, --port port to connect to (default: 5000)
-c, --config buttons and touchpads config (default: standart)
--polling-interval
polling interval in microseconds (minimum = 6000)
-d, --debug enable debug mode
-v, --version show version information
-s, --sample-config
print sample config file
--help display usage information
VitaOxiPad searches for the config file in the following locations:
- Current Executable Directory:
config.toml
- User's Home Directory:
~/vitaoxipad.toml
or~/.config/vitaoxipad.toml
- Windows Path:
C:\Users\%username%\vitaoxipad\vitaoxipad.toml
If no config file is found, default settings will be used.
With the --sample-config
feature, you can generate a sample configuration file for VitaOxiPad.
This output can be redirected to a vitaoxipad.toml
file, allowing you to save your configuration options and avoid the need to specify flags each time you run the application.
To create a config file, run the following command:
VitaOxiPad-x64.exe --sample-config > vitaoxipad.toml
This will create a vitaoxipad.toml
file in the current directory with sample configuration options.
If your router allows it, a static IP can be assigned to the PS Vita in the Wi-Fi router settings, allowing this IP address to be saved in the vitaoxipad.toml configuration file. This setup enables VitaOxiPad to run without the need to specify the IP address as a flag each time.
To set this up, the vitaoxipad.toml file should be edited to include the static IP address in the ip_address field:
ip = "PSVITA_STATIC_IP_ADDRESS"
Now, you can launch VitaOxiPad without any flags, and it will automatically use the IP address specified in the configuration file.
There are currently 4 DualShock 4 configuration emulations that can be selected at client startup,
using the -c
, --config
flags or conifguration file:
Configuration name | PS Vita's L1\R1 | PS Vita's front digitizer | PS Vita's rear digitizer |
---|---|---|---|
standart |
L2\R2 | L3\R3 | L1\R1 |
alt_triggers |
L1\R1 | L3\R3 | L2\R2 |
rear_touchpad |
L2\R2 | upper area - L1\R1, lower area - L3\R3 | DualShock 4 digitizer |
front_touchpad |
L2\R2 | DualShock 4 digitizer | upper area - L1\R1, lower area - L3\R3 |
To better understand the emulation behavior, you can run 3D Controller Overlay after connecting your PS Vita for Windows or evtest-qt for Linux.
Feature | Support | Details |
---|---|---|
Dpad, Sticks and Buttons | ✅ | All sticks, triggers and buttons, including PS button |
PS Vita's L1\R1 | ✅ | It can be used for L\R presses. For L2\R2, a full press is emulated |
L2\R2 and L3\R3 emulation | ✅ | Can be emulated via the PS Vita's rear or front digitizer, as well as the PS Vita's L1\R1 |
Accelerometer and gyroscope | ✅ | A little less accurate than the DualShock 4, but still usable |
DualShock 4 digitizer emulation | ✅ | Supports front and rear digitizer for multi-touch DualShock 4 emulation |
DualShock 4 digitizer button | ✅ | Works as a quick tap on the digitizer. Supports front and rear digitizer |
Any configuration | ✅ | You can choose from ready-made configurations |
Changing the sound volume | ✅ | Implemented via pressing the PS Vita's volume buttons |
Battery level | PS Vita's battery level is sent to the emulated DualShock 4, not used in Linux | |
Sound streaming | ❌ | Probably will never be realized |
Notes for Windows:
- The gamepad chosen for emulation was a DualShock 4 v1 (
vendor: 0x054C
,product: 0x05C4
) like connected via USB. This allows support for a large number of Windows games without any fixes; - You can use DS4Windows if you need to. Virtual Controller Support can be found in the schmaldeo DS4Windows fork.
This option can be found in
Settings -> Device Options -> Virtual Controller Support
.
Notes for Linux:
- The behavior closely resembles how the DualShock 4 (
vendor: 0x054C
,product: 0x9CC
) is defined in Linux. Fouruinput
devices are emulated:- Main
uinput
device (Dpad, Sticks, buttons, triggers); - Touchpad
uinput
device; - Motion Sensors
uinput
device for accelerometer and gyroscope; - Keyboard
uinput
device.
- Main
- You can also use a convenient input signal remapper, such as antimicrox or input-remapper.
If necessary, you can compile the Client and Server yourself. Refer to this manual for instructions.
If you would like to get involved in the development, please refer to this guide. It can help you.
A: Now there are many projects with the name VitaPad. It's very confusing. In this implementation, the client application was written using Rust. Oxi stands for oxidation, the process that causes rusting.
A: Ensure both devices are on the same WiFi network and that the IP address entered in the client is correct.
A: Input lag might be due to a poor WiFi connection. Try moving closer to the router or reducing network congestion.
A: Check the releases page for the latest version and follow the installation instructions provided. Alternatively, you can use VitaDB-Downloader on your PS Vita.
A: There are no plans to do so in the near future. For wired connection, please refer to other excellent projects like ViViD or vitapad by carlelieser.
- Thank you to all the contributors to VitaSDK, Vitadev Package manager and ViGEm Bus Driver;
- Vita Nuova and HENkaku Discord servers for answering my stupid questions;
- Rinnegatamante for the original VitaPad version;
- saidsay-so for the improved Rust VitaPad version;
- santarl for advice and help with accelerometer, gyroscope, adding DualShock 4 digitizer emulation and also for the logic of working with configuration files;
- gl33ntwine for creating the awesome article for those new to development for the PS Vita;
- isage for ViViD that was a good example for understanding how modules work on the PS Vita system;
- CasualX for ViGEm client in Rust.