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 & Handheld Welcome Guide (
alpine-desktop)
![]() Interactive Welcome Screen & Touch Keyboard |
![]() Native Framebuffer DOOM (Full Screen 960x544) |
![]() Fastfetch & Package Management in Alpine Linux |
![]() Interactive On-Device Wi-Fi Manager ( vita-wifi)
|
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.
- 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 fullapk addpackage 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-Cfbdoomengine 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).
- 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).
- Enable Unsafe Homebrew (Critical):
- Open Settings -> HENkaku Settings -> check Enable Unsafe Homebrew [β]. If unchecked, the loader plugin will fail with error
0x8002D003.
- Open Settings -> HENkaku Settings -> check Enable Unsafe Homebrew [β]. If unchecked, the loader plugin will fail with error
- 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 typicallyxmc0:oruma0:. The LinuxOnVita app automatically detects your Sony card and installs boot files directly to it.
- The baremetal loader interfaces directly with Sony's proprietary memory card hardware (MSIF). It cannot boot from SD2Vita game-card adapters or internal eMMC (
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:
- Hold the L trigger while powering on to temporarily bypass all taiHEN plugins and boot to the LiveArea.
- Open VitaShell and navigate to
ur0:tai/config.txt(orux0:tai/config.txt). - Comment out or remove the offending kernel plugin lines (prefix with
#). - 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.
- Download
LinuxOnVita.vpkfrom the GitHub Releases page. - Transfer
LinuxOnVita.vpkto your PS Vita using VitaShell (USB or FTP). - In VitaShell, highlight
LinuxOnVita.vpkand press CROSS (β) to install. You can install it to any partition (ux0:,uma0:, etc.) - it does not matter where the app itself lives. - Launch LinuxOnVita from the LiveArea.
- Select your Sony Memory Card partition (e.g.
xmc0:oruma0:for SD2Vita users,ux0:for standard consoles) and press CROSS (β) to install the bundled Linux boot files to it. - 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 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) |
You can build the entire distribution (RootFS, Linux 6.12 Kernel, baremetal loaders, and the VPK) using Docker:
git clone https://github.com/devwithzachary/LinuxOnVita.git
cd LinuxOnVita# 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 releaseAll 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.
- Error
0x8002D003when 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 ensurevita1000.dtb(OLED) orvita2000.dtb(LCD) is copied to your memory card'slinux/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(orux0: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.
This project builds upon the groundbreaking research and development of the PS Vita homebrew and Linux reverse-engineering community:
- incognitojam:
- vita-linux-port - Modern Linux 6.12 port, Marvell Wi-Fi custom power sequencing (
pwrseq_vita_wlan.c), High-Res timer fix, SCE eMMC partition driver, and Buildroot integration. - linux_vita (6.12) - Modernized Linux 6.12 kernel tree for PS Vita.
- vita-linux-port - Modern Linux 6.12 port, Marvell Wi-Fi custom power sequencing (
- xerpi (Sergi Granell):
- Original Linux on PS Vita pioneer: linux_vita, vita-baremetal-loader, vita-libbaremetal.
- DvaMishkiLapa:
- vita_plugin_linux_loader - Bootstrapper VPK with partition file verification.
- Team Molecule & taiHEN - HENkaku jailbreak and taiHEN kernel framework.
- VitaSDK - Open-source PlayStation Vita software development kit.
- Bootlin - Precompiled ARMv7 cross-compilation toolchains.
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.
If LinuxOnVita has been useful to you, consider supporting continued development:
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).



