Skip to content

DvaMishkiLapa/VitaOxiPad

 
 

Repository files navigation

VitaOxiPad

Turns your PS Vita into (almost) a DualShock 4!

Based on VitaPad by Rinnegatamante and Rust-based VitaPad by saidsay-so.

demo

1. Description

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).

2. Installation

2.1 Client

Install the Client on Windows:

  1. Download the latest VitaOxiPad-x64.exe or VitaOxiPad-x32.exe from the releases page;
  2. Install ViGEmBus on your PC;
  3. Run the VitaOxiPad-x64.exe or VitaOxiPad-x32.exe 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.

2.2 Server

  1. Ensure your PS Vita is set up for homebrew applications;
  2. Download the VitaOxiPad.vpk file;
  3. Use VitaShell or another package manager to install the .vpk on your PS Vita.

3. Uses and options

$ 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

3.1 Saving Configs

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.

3.2 Using a Static IP

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.

3.3 Configurations

There are currently 4 DualShock 4 configurations emulations that can be selected at client startup:

Configurations name PS Vita L1\R1 PS Vita front digitizer PS Vita 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.

4. What works

4.1 Windows Client

The gamepad chosen for emulation was a DualShock 4 v1 (vendor: 0x054C, product: 0x05C4) connected via USB. This allows to support a large number of Windows games without any fixes.

Feature Support Details
Dpad, Sticks and Buttons -
L1 and 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 Emulates up to two-finger simultaneous input, same as DualShock 4. Supports front and rear digitizer
DualShock 4 digitizer button Works as a quick tap on the digitizer. Supports front and rear digitizer
Battery PS Vita's battery status is sent to the emulated DualShock 4
Any configuration You can choose from ready-made configurations
DS4Windows support Virtual Controller Support[*] requires activation
Changing the sound volume Volume Up = Select + R1, Volume Down = Select + L1
Sound sending Probably will never be realized

[*] - Virtual Controller Support can be found in the schmaldeo DS4Windows fork. This option can be found in Settings -> Device Options -> Virtual Controller Support.

4.2 Linux Client

The behavior is close to how the DualShock 4 (vendor: 0x054C, product: 0x9CC) is defined in Linux. Four uinput devices are emulated:

  • Main uinput device (Dpad, Sticks, buttons, triggers)
  • Touchpad uinput device;
  • Motion Sensors uinput device for accelerometer and gyroscope;
  • Keyboard uinput device.
Feature Support Details
Dpad, Sticks and Buttons -
L1 and 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 Emulates up to multitouch simultaneous input. Linux defines it like a touchpad. Supports front and rear digitizer
DualShock 4 digitizer button Works as a quick tap on the digitizer. Supports front and rear digitizer. Linux itself determines the behaviour
Battery -
Any configuration You can choose from ready-made configurations
Changing the sound volume Volume Up = Select + R1, Volume Down = Select + L1
Sound sending Probably will never be realized

You can also use a convenient input signal remapper, such as antimicrox or input-remapper.

5. Client and Server compilation

If necessary, you can compile the Client and Server yourself. Refer to this manual for instructions.

FAQ

Q1: Why Oxi?

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 - oxidation, the process that causes rusting.

Q2: Why isn't my PS Vita connecting to the PC?

A: Ensure both devices are on the same WiFi network and that the IP address entered in the client is correct.

Q3: I'm experiencing input lag. What can I do?

A: Input lag might be due to a poor WiFi connection. Try moving closer to the router or reducing network congestion.

Q4: How do I update VitaOxiPad?

A: Check the releases page for the latest version and follow the installation instructions provided. Or you can use VitaDB-Downloader on your PS Vita.

Thanks