Skip to content

About

Linux... on the PS Vita!

Resources

Stars

66 stars

Watchers

1 watching

Forks

Repository files navigation

LinuxOnVita - Complete Handheld Linux Distribution for PS Vita

PS Vita Kernel Architecture Discord License: GPL-3.0

A complete distribution, automated build environment, and handheld userland for running Linux 6.12 on hacked PlayStation Vita consoles (HENlo / HENkaku / Ensō 3.60 & 3.65).

While original proof-of-concept projects proved that modern Linux can boot on the PS Vita SoC, they required specialized developer equipment such as soldered UART serial cables. LinuxOnVita bridges the gap into a fully standalone, interactive handheld Linux device with out-of-the-box touch typing, physical gamepad navigation, automated on-device Wi-Fi, memory-safe ZRAM swap, full package management (apk), and native framebuffer gaming.

Lightweight IceWM Graphical Desktop and Handheld Welcome Guide
Lightweight IceWM Graphical Desktop & Handheld Welcome Guide (alpine-desktop)

Interactive Welcome Screen & On-Screen Touch Keyboard
Interactive Welcome Screen & Touch Keyboard
Native Framebuffer DOOM Running Full Screen (960x544)
Native Framebuffer DOOM (Full Screen 960x544)
Fastfetch Running inside Alpine Linux Chroot
Fastfetch & Package Management in Alpine Linux
Interactive On-Device Wi-Fi Setup (vita-wifi)
Interactive On-Device Wi-Fi Manager (vita-wifi)

πŸ“š Documentation & Roadmap

Tip

  • Looking for the comprehensive user manual? Check out the Complete User Guide for detailed walkthroughs on every built-in utility (vita-wifi, vita-brightness, vita-swap, vita-doom, alpine-desktop), on-screen touch typing, physical gamepad controls, remote SSH access, and package management.
  • Want to see what is coming next? Check out the Project Roadmap for upcoming release plans from v1.4.0 through v1.8.0 and beyond.

✨ Features

  • Built-in Touch Keyboard (fbkeyboard): Type directly on the console screen with an on-framebuffer virtual keyboard featuring dual ABC / ?123 layouts, special keys, and a hide toggle.
  • Physical Gamepad Navigation (vita-input-mapper): Complete console shell navigation using the D-Pad, face buttons, and shoulder triggers synthesized through /dev/uinput.
  • Fixed Controller Logic: Corrected inverted button mask issues and initialized analog sticks via Syscon for smooth twin-stick controls in games and terminal navigation.
  • Full Display Brightness: Patched baremetal bootloaders to initialize displays at 100% brightness on both OLED and LCD models, plus runtime backlight adjustment on PS Vita 2000 via vita-brightness.
  • Interactive On-Device Wi-Fi Manager (vita-wifi): Scan, connect, and switch wireless networks directly on the console with an ASCII signal table. Saves credentials permanently to your memory card without needing to edit config files on a PC.
  • Fast Boot & OpenSSH: Boots straight into the Linux terminal. Wi-Fi connects automatically with OpenSSH and mDNS (vita.local), ready in ~12 seconds.
  • Alpine Linux Chroot (alpine-chroot): Run an isolated, persistent Alpine Linux userland on storage with full apk add package management.
  • Compressed ZRAM & Memory Safety (vita-swap): Zero-latency LZ4 compressed RAM swap expands usable memory from 512MB to ~768MB-1GB, preventing Out-Of-Memory (OOM) crashes during heavy package installs, Python scripts, or C compilation. Includes physical SD card swapfile auto-mounting.
  • Storage Auto-Mounting: Automatically detects and mounts SD2Vita (/mnt/ux0), internal memory (/mnt/ur0), and secondary storage (/mnt/uma0) on boot.
  • Framebuffer DOOM (vita-doom): Pre-installed pure-C fbdoom engine with twin-stick controls, analog deadzones, and input isolation.
  • All-in-One Installer App (LinuxOnVita.vpk): Graphical bootstrapper with real-time partition detection, memory card mount selector, and 1-click on-device installer.
  • Automated Docker Build: Build the entire stack (kernel, rootfs, loaders, and VPK) with a single command (./build.sh all).

πŸ“¦ Quick Installation

Prerequisites

  1. Custom Firmware: Any PS Vita (1000 OLED, 2000 Slim, or PlayStation TV) running 3.60 or 3.65 with HENkaku / Ensō (see vita.hacks.guide).
  2. Enable Unsafe Homebrew (Critical):
    • Open Settings -> HENkaku Settings -> check Enable Unsafe Homebrew [βœ“]. If unchecked, the loader plugin will fail with error 0x8002D003.
  3. Official Sony Memory Card Strictly Required:
    • The baremetal loader interfaces directly with Sony's proprietary memory card hardware (MSIF). It cannot boot from SD2Vita game-card adapters or internal eMMC (imc0:).
    • SD2Vita Users: Your SD2Vita adapter mounts as ux0:, and your official Sony card is typically xmc0: or uma0:. The LinuxOnVita app automatically detects your Sony card and installs boot files directly to it.

Warning

Kernel Plugin Compatibility - Read Before Installing

LinuxOnVita is developed and tested on a PS Vita 1000 (OLED) running 3.65 Ensō with no additional plugins or mods installed. Behaviour on other configurations is not guaranteed.

Several users have reported boot loops on return to VitaOS after running Linux when USB streaming, storage remapping, or other kernel-level plugins are active. Known problematic plugins include:

  • VitaUSBStream (and related streaming plugins)
  • YAMT (Yet Another Mount Tool) and StorageMgr
  • Any other *KERNEL* section plugin that hooks USB, storage, or partition remapping

These plugins re-initialise hardware at startup. Because the baremetal loader reconfigures the MSIF memory card controller and USB subsystem directly during Linux boot, some plugins can encounter unexpected hardware state on the return reboot and crash.

If you experience a boot loop after using LinuxOnVita:

  1. Hold the L trigger while powering on to temporarily bypass all taiHEN plugins and boot to the LiveArea.
  2. Open VitaShell and navigate to ur0:tai/config.txt (or ux0:tai/config.txt).
  3. Comment out or remove the offending kernel plugin lines (prefix with #).
  4. Save and reboot normally.

If you are running a heavily modded Vita with multiple kernel plugins, consider testing LinuxOnVita on a cleaner setup first.

Tip

Storage & SD Card Safety Protection LinuxOnVita automatically mounts your SD2Vita (ux0:) and internal eMMC (ur0:) partitions in read-only mode by default. This ensures VitaOS database files and exFAT/FAT volumes are never marked dirty or exposed to write interruptions during reboots or crashes. To temporarily enable write access, run vita-storage rw ux0, and always reboot cleanly using vita-reboot.

Installation Steps

  1. Download LinuxOnVita.vpk from the GitHub Releases page.
  2. Transfer LinuxOnVita.vpk to your PS Vita using VitaShell (USB or FTP).
  3. In VitaShell, highlight LinuxOnVita.vpk and press CROSS (βœ•) to install. You can install it to any partition (ux0:, uma0:, etc.) - it does not matter where the app itself lives.
  4. Launch LinuxOnVita from the LiveArea.
  5. Select your Sony Memory Card partition (e.g. xmc0: or uma0: for SD2Vita users, ux0: for standard consoles) and press CROSS (βœ•) to install the bundled Linux boot files to it.
  6. Press CROSS (βœ•) to boot straight into Linux!

Note

The VPK app location and the in-app partition selector are two independent things. The partition you select inside the app is only where the Linux boot files (kernel, loaders, device tree) are written on your Sony Memory Card. The app bubble itself can live anywhere on your LiveArea.

Important

Updating from an Earlier Version: If you already have an older version of LinuxOnVita installed, transfer and install the latest LinuxOnVita.vpk in VitaShell, launch the app, and press TRIANGLE (β–³) to reinstall and update the Linux setup (<mount>/linux/). Pressing CROSS (βœ•) immediately would otherwise boot the older kernel and loaders already on your memory card. To launch Linux with step-by-step diagnostic logging, press SQUARE (β–‘) instead.

For full usage instructions, gamepad shortcuts, and Wi-Fi setup, see the Complete User Guide.


πŸ›  Hardware Support Matrix

Hardware Component Status Implementation Details
CPU Working Quad-core ARM Cortex-A9 MPCore (SMP active across all 4 cores)
Display / Framebuffer Working 960x544 OLED (Vita 1000) and LCD (Vita 2000) at 100% full brightness
Backlight Control Working (LCD) Dynamic PWM control via I2C bus 1 on PS Vita 2000; OLED fixed at 100% Level 15 Gamma
Wi-Fi (Marvell SD8787) Working mwifiex_sdio on SDIF2 with custom Ernie power sequencing and on-device vita-wifi
Touchscreen Working vita-syscon-ts.c multi-touch digitizer mapped via evdev for fbkeyboard
Buttons & D-Pad Working Patched vita-buttons.c driver with uniform active-low mask and /dev/uinput mapping
Analog Sticks Working Syscon 0x180 analog sampling enabled with deadzone filtering
Storage (eMMC / ur0) Working Auto-detected SCE partitions (/dev/mmcblk0p1-p12), ur0 mounted at /mnt/ur0
Storage (SD2Vita / ux0) Working Powered via Syscon 0x888, auto-mounted at /mnt/ux0 (/dev/mmcblk1p1)
Memory Expansion (ZRAM) Working 256MB compressed LZ4 RAM swap pool with vita-swap management
Storage (Sony Memory Card) Loader Only Boot files loaded via baremetal MSIF driver; Linux MSIF runtime driver not yet implemented
UART0 Serial Console Working 115200 baud serial debug console
Battery Fuel Gauge Not yet supported Isolated on Syscon (Ernie) private I2C bus; runtime streaming unsupported
Bluetooth Not yet supported Marvell SD8787 Bluetooth driver not enabled in kernel config
Audio Not yet supported Vita audio codec lacks an active Linux ALSA driver
3D GPU Acceleration Not supported PowerVR SGX543MP4+ lacks open-source Linux drivers (software rendering via simplefb)

πŸ”¨ Building from Source (Docker)

You can build the entire distribution (RootFS, Linux 6.12 Kernel, baremetal loaders, and the VPK) using Docker:

1. Clone the Repository

git clone https://github.com/devwithzachary/LinuxOnVita.git
cd LinuxOnVita

2. Run the Automated Build System

# Build the Docker build environment container (one-time setup)
./build.sh image

# Build everything: RootFS, Kernel, Loaders, and LinuxOnVita.vpk
./build.sh all

# (Optional) Package a complete release archive
./build.sh release

All compiled outputs are saved to output/:

  • output/LinuxOnVita.vpk: The all-in-one bootstrapper and installer.
  • output/ux0/linux/: Standalone boot files (zImage, vita1000.dtb, vita2000.dtb, payload.bin, baremetal-loader.skprx).
  • output/LinuxOnVita-release-<version>.zip: Distributable all-in-one release archive.

❓ Common Troubleshooting

  • Error 0x8002D003 when launching LinuxOnVita: Unsafe Homebrew is disabled. On your Vita, go to Settings -> HENkaku Settings -> check Enable Unsafe Homebrew.
  • "Memory card not inserted" on boot: An official Sony memory card is strictly required on all consoles (both 1000 and 2000 models). The baremetal bootloader only speaks to Sony MSIF hardware and cannot read from internal eMMC or SD2Vita adapters.
  • Frozen on Uncompressing Linux... done, booting the kernel: The Device Tree blob does not match your hardware. In LinuxOnVita, reinstall boot files or ensure vita1000.dtb (OLED) or vita2000.dtb (LCD) is copied to your memory card's linux/vita.dtb.
  • Boot loop when returning to VitaOS after running Linux: This is caused by a USB streaming or storage remapping kernel plugin (e.g. VitaUSBStream, YAMT, StorageMgr) conflicting with hardware state left by the baremetal loader. To recover: hold L trigger on power-on to bypass plugins, then open VitaShell, edit ur0:tai/config.txt (or ux0:tai/config.txt), and comment out or remove the offending *KERNEL* plugin entry. See the compatibility warning above for the full explanation.

For additional help and step-by-step guidance, see the Complete User Guide.


πŸ‘ Credits & Upstream Sources

This project builds upon the groundbreaking research and development of the PS Vita homebrew and Linux reverse-engineering community:


🀝 Community, Contributing & AI Policy

Have questions, need help troubleshooting, or want to share photos and clips of Linux running on your Vita? Join our Discord Community!

Contributions, bug reports, and feature requests are welcome! Feel free to join the discussion on Discord, check out the issues page, or submit a pull request.

Please review our AI Usage Policy for guidelines on using AI coding assistants when contributing to this project. All code submitted must be thoroughly reviewed and personally owned by the human author; automated bot PRs are not accepted.


β˜• Support the Project

If LinuxOnVita has been useful to you, consider supporting continued development:

Patreon Β  Buy Me a Coffee

πŸ“„ License

LinuxOnVita is licensed under the GNU General Public License v3.0 (GPL-3.0). Upstream source trees (Linux kernel, Buildroot, VitaSDK) retain their respective licenses (GPLv2, MIT, BSD).

About

Linux... on the PS Vita!

Resources

Stars

66 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages