The first ever PSVR Aim Controller driver for Linux
Gyro · LED Sphere · Rumble · Full Input Support · Bluetooth
PSVR Aim Driver Emulator brings full PSVR Aim Controller support to Linux. It emulates the controller as a DualShock 4, XInput gamepad, or mouse + keyboard — with working gyro, rumble, LED control, and optional PS3 Eye camera tracking for lightgun games. Supports both USB and Bluetooth. Runs as a systemd user service.
Proof of concept — this demonstrates that PSVR Aim is absolutely viable on Linux. PS Eye tracking is experimental and may have limitations due to the age of the hardware.
- DS4 Mode — Full DualShock 4 emulation with gyro/accel passthrough. Best for Steam and games with native PlayStation support.
- Lightgun XInput Mode — Emulates an Xbox 360 controller via uinput. Gyro drives the right stick for aiming. Perfect for TeknoParrot and XInput lightgun games.
- Lightgun RawInput Mode — Emulates a mouse + keyboard. R2 = left click, left stick = WASD, face buttons mapped to game keys. Great for MAME, Demul, and other emulators.
- Gyro — The most anticipated feature. Full gyro exposure on Linux.
- LED Control — Full RGB control of the controller's lightbar/sphere per mode.
- Rumble / Recoil — Simulated recoil feedback with configurable intensity, duration, and rapid fire modes.
- Bluetooth Support — Works over both USB and Bluetooth.
- PS Eye Tracking (Experimental) — Native V4L2-based PS3 Eye tracker with no external dependencies.
- Systemd Integration — Runs as a user service, auto-starts on login, survives disconnects.
- Linux (x64) — tested on CachyOS / Arch
- Rust (stable) — to build from source
- uinput kernel module — usually loaded by default
- hidraw access — user must be in the
inputgroup or have udev rules - PS3 Eye Camera (optional — PS Eye Tracking only) — uses native V4L2, no extra drivers needed
git clone https://github.com/tmghd272/ps-aim-linux.git
cd ps-aim-linux
bash install.shThe install script builds the binary, installs it to /usr/local/bin/, and sets up the systemd user service.
Once the driver is installed, download the latest PSVR Aim Driver Emulator.AppImage from the Releases page for a graphical interface to switch modes and tune settings.
⚠️ The AppImage is UI only — the driver must be installed first viainstall.sh.
chmod +x "PSVR Aim Driver Emulator.AppImage"
./"PSVR Aim Driver Emulator.AppImage"USB — Simply plug in your PSVR Aim Controller.
Bluetooth — Hold PS Button + Share simultaneously until the light sphere starts rapidly blinking, then pair from your system Bluetooth settings.
ps-aim-linux --help
ps-aim-linux --ds4 # Switch to DS4 mode
ps-aim-linux --lightgun # Switch to XInput lightgun mode
ps-aim-linux --lightgun-raw # Switch to mouse + keyboard mode
ps-aim-linux --lightgun --pseye # XInput + PS Eye trackingMode switches save to config and automatically restart the service.
Launch PSVR Aim Driver Emulator (AppImage in releases). Select your mode and click Start — or double-click a mode card to apply immediately.
systemctl --user start ps-aim-linux
systemctl --user stop ps-aim-linux
systemctl --user restart ps-aim-linux
systemctl --user status ps-aim-linux| Mode | Best For | Input Tester |
|---|---|---|
| DS4 | Steam, PC, PS Remote Play, emulators | Gamepad Tester |
| Lightgun XInput | TeknoParrot, MAME, Demul, emulators | Gamepad Tester |
| Lightgun RawInput | MAME, Demul, emulators | System cursor |
Games not detecting input, rumble, gyro, or LED sphere: Add the game as a Non-Steam game and launch it through Steam. Steam's input layer improves compatibility with emulated devices.
PSVR Aim disconnecting in Bluetooth mode: Forget the Bluetooth pairing and re-pair. Hold PS + Share again to put the controller back into pairing mode.
Controller not detected / permission denied:
Make sure your user is in the input group: sudo usermod -aG input $USER then log out and back in.
Tunings behaving unexpectedly: Click Reset Defaults (top right of the Test & Tuning tab) to restore all sliders to their original values.
| PSVR Aim | Output |
|---|---|
| Left Stick | Left Stick |
| Right Stick | Right Stick |
| Gyro / Accel | DS4 Gyro / Accel |
| Cross / Circle / Square / Triangle | Cross / Circle / Square / Triangle |
| L1 / R1 / L2 / R2 | L1 / R1 / L2 / R2 |
| Share / Options | Share / Options |
| PS Button | PS Button |
| Touchpad Click | Touchpad Click |
| DPad | DPad |
| PSVR Aim | Output |
|---|---|
| Gyro | Right Stick (aim) |
| Left Stick | Left Stick |
| R2 | Right Trigger |
| Cross / Circle / Square / Triangle | A / B / X / Y |
| L1 / R1 | LB / RB |
| Share / Options | Back / Start |
| DPad | DPad |
| Right Stick Click | Recalibrate gyro center |
| Pad Button (tap) | Cycle recoil mode |
| Pad Button (hold 5s) | Pause all input |
| PSVR Aim | Output |
|---|---|
| Gyro / PS Eye | Mouse cursor |
| R2 | Left Click |
| Left Stick | WASD |
| Cross | Space |
| Circle | Left Ctrl |
| Square | R |
| Triangle | E |
| L1 | Left Shift |
| R1 | Q |
| Share | Backspace |
| Options | Enter |
| PS Button | Escape |
| DPad | Arrow Keys |
The PS3 Eye camera is tracked natively via V4L2 — no OpenCV or extra drivers required. The tracker detects the colored LED sphere and broadcasts its position over a local TCP socket.
⚠️ Due to the age of the hardware, tracking accuracy may vary. Ensure good lighting and a distinct sphere color.
- Enable PS Eye Tracking in the UI or pass
--pseyeon the CLI - To calibrate: hold Right Stick for ~1 second, then point at each screen corner and pull the trigger when prompted
- The tracker uses
/dev/video0by default — override with--pseye-dev=/dev/videoN
bash install.sh # builds driver + installs service
cd ui && npm install && npm run build # builds AppImage UIIf you find this project useful, please support me via Ko-fi!
MIT — see LICENSE
