Linux for PlayStation Vita

A technical port of the Linux 6.12 kernel to the PlayStation Vita's ARM Cortex-A9 quad-core SoC. It enables core functionality including SMP, the native OLED framebuffer, touchscreen input, and eMMC storage, while resolving critical L2 cache coherency issues found in previous versions.

Linux for PlayStation Vita

The PlayStation Vita remains one of the most capable handheld consoles ever released, powered by a quad-core ARM Cortex-A9 SoC. While the device’s native operating system is highly optimized, the quest to run a mainline Linux kernel on the hardware has been a long-standing goal for the homebrew and reverse engineering community. This project represents a modern milestone in that journey, successfully porting Linux 6.12 to the Vita.

Building upon the foundational work of xerpi and the wider HENkaku community, this port brings the Vita into the era of modern kernels. It is not merely a hobbyist curiosity but an active research project that implements custom drivers and solves complex hardware initialization challenges unique to the Sony handheld.

Overcoming the Cache Coherency Hurdle

A significant challenge in porting newer kernels (6.x series) to the Vita was a persistent hang during the kernel decompression phase. The root cause was identified as stale data in the PL310 L2 cache. Specifically, the kernel decompressor’s CP15 cache operations do not automatically propagate to the PL310 L2 cache controller, which requires interaction via Memory-Mapped I/O (MMIO).

By applying a fix that properly handles these cache operations and rebasing the work onto Linux 6.12, this port achieves a stable boot to a Buildroot shell. This technical breakthrough allows for reliable execution on the hardware without the data corruption or hangs that plagued previous attempts on 5.x kernels.

Hardware Support and Capabilities

The port currently leverages a significant portion of the Vita’s hardware. At its core, it enables Symmetric Multi-Processing (SMP) across all four Cortex-A9 cores and manages 480 MB of available RAM. Users can interact with the system via the native 960x544 OLED framebuffer and touchscreen input, which is handled through the syscon interface.

Storage support is a major highlight. The port includes an SDHCI driver for the internal eMMC, making all VitaOS partitions mountable within Linux. Connectivity is also addressed through the Marvell SD8787 WiFi module, which utilizes a custom syscon power sequencing routine to initialize the hardware correctly. Other working peripherals include the UART serial console, GPIO-controlled LEDs, the Real-Time Clock (RTC), and a clean reboot mechanism that returns the user to the standard VitaOS.

System Architecture

The repository is structured to manage the complexity of cross-compiling for an embedded target. It utilizes a baremetal loader to bridge the gap between the Vita’s native environment and the Linux kernel. The build process is orchestrated via a comprehensive Makefile that handles:

  • Kernel cross-compilation using Bootlin or LLVM/Clang toolchains.
  • Integration with Buildroot to generate the root filesystem.
  • Automated deployment to the target hardware via FTP.
  • Serial console logging and boot progress monitoring.

Getting Started and Requirements

Running Linux on the Vita requires a console running firmware 3.60 or 3.65 with the HENkaku enso exploit. Because this is a development-heavy project, a UART serial connection is essential for debugging and interacting with the shell. The project includes specialized scripts like boot_watch.sh and serial_log.py to help developers track the boot process through various stages of kernel initialization.

While the project has reached a functional shell, development continues on areas such as USB support (UDC base address research), SD2Vita integration, and reverse engineering the proprietary Sony memory card interface. This port serves as both a functional Linux environment for the Vita and a valuable documentation resource for the console’s low-level hardware registers and peripheral maps.