Skip to content

Releases: devwithzachary/LinuxOnVita

1.3.0

Choose a tag to compare

@devwithzachary devwithzachary released this 28 Sep 15:04
6f3f38f

LinuxOnVita v1.3.0 - Turnkey Graphical Desktop, Debug Bootstrapper & Alpine 3.24

LinuxOnVita v1.3.0 is a major milestone release bringing a lightweight, memory-optimized graphical desktop environment to the PlayStation Vita framebuffer, an on-device bootstrapper debug mode, an upgraded base container to Alpine Linux v3.24, and critical baremetal loader stability fixes.


🖥️ Turnkey Graphical Desktop (alpine-desktop)

  • Lightweight IceWM Environment: Runs directly on the Vita framebuffer (/dev/fb0) via X11 (Xfbdev / Xorg fbdev) with zero 3D GPU acceleration required, consuming only ~25 MB RAM.
  • Handheld Analog Mouse Emulation (vita-input-mapper --desktop):
    • Left stick controls 360-degree pointer movement with dynamic non-linear acceleration and a sub-pixel fractional accumulator for pixel-perfect precision on checkboxes, icons, and menus.
    • Right stick controls vertical and horizontal scrolling (REL_WHEEL / REL_HWHEEL) with displacement scaling.
    • Ergonomic button mapping: Cross (✕) and R-Trigger for Left Click, Circle (○) and L-Trigger for Right Click, Square (□) for Middle Click, Start for Application Menu, and Select for Escape.
  • Touchscreen & Display Integration: Native touchscreen support with automatic coordinate calibration (0 1920 0 1080), direct touch pointer events, and long-press right-click emulation (EmulateThirdButton). Console fbkeyboard automatically suspends during desktop sessions.
  • Calibrated Proportional Typography (96 DPI): Pre-configured standard 96 DPI display scaling with tuned IceWM theme overrides and GTK settings (Sans 9) for clean readability on the 960x544 screen.
  • Bundled Handheld Application Suite:
    • Welcome & Control Guide (vita-desktop-welcome): Tabbed documentation for controller inputs, system telemetry, APK package management, and startup preferences.
    • Web Browser (badwolf): Lightweight WebKitGTK-based browser supporting modern HTML5, CSS3, and JavaScript within a handheld memory footprint.
    • Task Manager (xfce4-taskmanager / taskmanager): Full-featured GTK process monitor displaying real-time CPU and memory utilization graphs.
    • On-Screen Keyboard (matchbox-keyboard / toggle-keyboard): Floating virtual keyboard (layer: OnTop) that hovers above full-screen windows without carving or shrinking the 960x544 desktop workspace.
    • File Manager (pcmanfm): Fast tabbed file manager for managing files, removable storage, and desktop icons.
    • Text Editor (leafpad / mousepad): Modern text editor with syntax highlighting and line numbering.
    • Terminal Emulator (sakura): Multi-tabbed GTK terminal with customizable fonts and direct native CLI access for apk package management.
    • Image Viewer (feh): Lightweight image viewer for photos and screenshots.
    • Reboot to VitaOS (vita-reboot): Safe filesystem synchronization and direct reboot back to Sony VitaOS LiveArea with confirmation protection.

🔍 Bootstrapper Debug Mode & Diagnostic Logger (LinuxOnVita.vpk)

  • Dedicated Debug Mode ([SQUARE]): Added a dedicated Debug Mode boot option in the bootstrapper VPK based on GitHub Issue #12 to trace, display, and record every step of the Linux bootloader handover.
  • Granular Step-by-Step Reporting: Inspects system firmware version, hardware model identification (PCH-1000, PCH-2000 Slim, or Dolce PSTV), physical Sony memory card MSIF presence, storage mount statuses (ux0:, uma0:, xmc0:, imc0:), file integrity, and exact byte sizes for zImage, DTBs, payload.bin, and baremetal-loader.skprx.
  • Persistent Boot Logging (boot_debug.log): Writes all boot events with synchronous disk flushing (sceIoSyncByFd) to ux0:data/LinuxOnVita/boot_debug.log (with fallback to ur0:), surviving hard hangs and freezes.
  • Built-in On-Screen Log Viewer ([SELECT]): Scrollable viewer in the VPK main menu allowing users to inspect previous boot logs directly on the console screen without needing a PC or file manager.

📦 Alpine Linux v3.24 & Kernel Namespaces

  • Alpine 3.24 Upgrade: Upgraded base container from Alpine 3.20 to stable Alpine Linux v3.24 (alpine-minirootfs-3.24.2-armv7.tar.gz) with automatic repository migration for existing containers.
  • System V IPC & Security Namespaces: Enabled CONFIG_SYSVIPC=y, CONFIG_USER_NS=y, CONFIG_SECCOMP=y, and CONFIG_SECCOMP_FILTER=y in the kernel, enabling MIT-SHM shared memory acceleration in X11 applications and modern container compatibility.

🛠️ Hardware & System Diagnostics (vita-diagnostics)

  • Created on-device diagnostic program (vita-diagnostics / vita-diag) to troubleshoot Wi-Fi connection and SD card mounting issues.
  • Automatic storage candidate probing across exfat, vfat, and ext4 with recommended mount commands.
  • Wi-Fi RF scanning, authentication state analysis, and gateway ping connectivity testing.
  • Privacy Protection: Automatically redacts Wi-Fi passwords (psk="[REDACTED_FOR_PRIVACY]") across all logs.
  • Dual storage export: Saves reports to /mnt/ux0/, /mnt/ur0/, and /tmp/.

🐛 Bug Fixes & Stability Improvements

  • Baremetal Loader Standby Handover (Issue #12): Fixed an issue where launching Linux on PS Vita Slim (PCH-2000) or certain firmware versions caused an immediate black screen by intercepting both SCE_SYSCON_RESET_TYPE_POWEROFF and SCE_SYSCON_RESET_TYPE_SUSPEND in baremetal-loader.skprx.
  • Syscon Analog Stick Sampling (vita-buttons): Fixed a payload length calculation bug for Syscon command 0x180, restoring analog stick input reporting in Linux.
  • Blockdev Re-Mount Errors: Replaced legacy mount checks with /proc/mounts validation across system services, eliminating /dev/vita/ur0: Can't open blockdev errors.
  • OpenSSH Daemon Stability: Replaced disruptive daemon restarts in S45wifi with non-destructive status checks, preserving active SSH sessions on DHCP lease renewals.
  • Clean exFAT Unmounting: Added filesystem synchronization steps to /etc/inittab before and after service shutdown to eliminate unmount warnings on reboot.

📥 Installation & Updating

First-Time Installation:

  1. Download LinuxOnVita.vpk below and transfer it to your PS Vita via VitaShell.
  2. In VitaShell, highlight LinuxOnVita.vpk and press CROSS (✕) to install.
  3. Launch LinuxOnVita from LiveArea.
  4. Select your Sony Memory Card partition (ux0:, xmc0:, or uma0:) and press CROSS (✕) to install the bundled Linux files.
  5. Press CROSS (✕) to boot straight into Linux!

Updating from an Earlier Version:

  1. Install the new LinuxOnVita.vpk in VitaShell.
  2. Launch the app and press TRIANGLE (△) to update/refresh the Linux files (<mount>/linux/) on your memory card with the new v1.3.0 kernel and loaders.
  3. Press CROSS (✕) to boot into Linux, or press SQUARE (□) to boot in Debug Mode.

1.2.0

Choose a tag to compare

@devwithzachary devwithzachary released this 25 Sep 10:19
646ea12

LinuxOnVita v1.2.0 - Fullscreen DOOM, SD2Vita Hardware Power, ZRAM Swap & Complete User Guide

LinuxOnVita v1.2.0 transforms the PlayStation Vita into a fully interactive, memory-safe, and standalone handheld Linux computer running Linux 6.12. This release introduces edge-to-edge fullscreen DOOM scaling, hardware-level SD2Vita power and high-speed bus negotiation, compressed ZRAM swap to eliminate out-of-memory crashes, model-aware display backlight controls, and a comprehensive end-user guide.


🌟 What's New in v1.2.0

🎮 Fullscreen 960x544 Framebuffer DOOM (vita-doom)

  • Native Fullscreen Scaling: Overhauled fbdoom's display engine to scale 320x200 DOOM edge-to-edge across the entire 960x544 PlayStation Vita screen by default.
  • Zero-Copy High-Speed Blitter: Implemented direct memory mapping (mmap) of /dev/fb0 with optimized 3x horizontal pixel unrolling, precomputed 32-bit palette lookups, and scanline row caching (< 0.6ms frame blit time).
  • Controller Exit Confirmation & Quick Shortcut: Mapped Cross (✕) and Triangle (△) to confirm menu prompts (key_menu_confirm) and Circle (○) to cancel (key_menu_abort). Added universal START + SELECT instant exit shortcut.
  • Fixed Exit Loop Bug: Added stale evdev queue draining upon resumption in vita-input-mapper and fbkeyboard, eliminating the issue where exiting DOOM replayed queued keystrokes and immediately restarted the game.
  • Custom Aspect Ratios: Supports vita-doom -aspect for 4:3 pillarbox (725x544) and vita-doom -integer for 2x centered windowing (640x400).

💾 SD2Vita Game Card Power & High-Speed Support

  • Hardware Power Initialization: Added Syscon command 0x888 power-on invocation during boot so the physical Game Card slot receives full 3.3V VCC.
  • Pervasive Pad Signalling: Configured pad voltage register 0xE3100124 for 3.3V signalling and enabled cap-sd-highspeed in the sdif1 Device Tree node.
  • Automatic SD2Vita Auto-Mounting: Automatically detects microSD partitions on boot, creates /dev/vita/ux0, and mounts storage to /mnt/ux0.

🧠 Compressed ZRAM Swap & Memory Safety (vita-swap)

  • Zero-Latency RAM Compression: Enabled in-kernel LZ4 ZRAM swap (CONFIG_ZRAM=y, CONFIG_ZSMALLOC=y), expanding effective usable RAM from 512MB to ~768MB - 1GB.
  • OOM Elimination: Prevents Linux Out-Of-Memory (OOM) crashes during heavy tasks such as Alpine apk add package installations, Python scripts, or native C compilation.
  • Storage Swap Support: Automatic detection and mounting of optional physical swapfiles (/mnt/ux0/swapfile).
  • Interactive vita-swap CLI: Inspect real-time swap telemetry, format physical swapfiles, and adjust ZRAM allocation on the fly.

☀️ Model-Aware Display Backlight Control (vita-brightness)

  • DTB Loading Order Fix: Corrected loader model checks so PS Vita 2000 Slim consoles load vita2000.dtb with active I2C bus 1.
  • Hardware-Aware Tool:
    • PS Vita 1000 (OLED): Informs the user that the emissive OLED display is locked to 100% full brightness at boot and does not have an adjustable LCD backlight.
    • PS Vita 2000 (LCD): Controls hardware PWM backlight duty cycles via /dev/i2c-1 across 0x1F to 0xFF.

📚 Documentation & User Experience

  • Comprehensive User Guide (USER_GUIDE.md): Complete non-technical guide walking through touch typing, gamepad navigation, all built-in utilities, remote SSH access, and real-world software examples in Alpine Linux.
  • Alpine Chroot Isolation: Visual environment prompts (alpine@vita:~# in cyan) and one-shot command execution via alpine-chroot run <command>.
  • 2x2 Screenshot Gallery: Updated README with verified console screenshots covering console boot, fullscreen DOOM, Alpine package management, and vita-wifi.

📦 Installation

Option 1: Standalone VPK (Recommended for Most Users)

  1. Download LinuxOnVita.vpk.
  2. Transfer LinuxOnVita.vpk to your PS Vita via VitaShell (USB or FTP).
  3. Install the VPK in VitaShell and open the LinuxOnVita bubble on LiveArea.
  4. Select your Sony Memory Card partition (xmc0:, ux0:, or uma0:) and press Cross (✕) to install and boot!

Option 2: Full Release Zip

  1. Download LinuxOnVita-release-1.2.0.zip.
  2. Extract the archive and copy ux0/linux/ to your Sony Memory Card root.
  3. Install LinuxOnVita.vpk via VitaShell and launch.

1.1.0

Choose a tag to compare

@devwithzachary devwithzachary released this 24 Sep 17:32
79a1b73

LinuxOnVita v1.1.0 - On-Device Storage Selection & Interactive Wi-Fi

LinuxOnVita v1.1.0 is a major release featuring a completely rebuilt on-device bootstrapper application, native storage partition mounting, SD2Vita support, and an interactive handheld Wi-Fi management utility (vita-wifi).


🚀 Highlights & What's New

  • Interactive On-Device Wi-Fi (vita-wifi): Scan, connect, and switch wireless networks directly from the console terminal with an ASCII signal table. Wi-Fi credentials are saved persistently to your memory card without needing to edit config files on a PC.
  • All-in-One Application (LinuxOnVita.vpk): A standalone VPK installer bundling the kernel, Device Tree blobs, and loaders directly inside the app.
  • Storage Partition Detection & Mounting: Real-time detection and capacity reporting for all partitions (ux0:, xmc0:, uma0:, imc0:). Easily select your official Sony Memory Card mount point if you use SD2Vita as ux0:.
  • Multi-Mount Loader Plugin: Patched baremetal loader searches both xmc0:linux/payload.bin and ur0:linux/payload.bin for full SD2Vita compatibility.
  • Buildroot Source-Compiled Networking: Compiled wpa_cli and wpa_passphrase natively with Buildroot control socket support enabled.

📥 Which File Should I Download?

  1. LinuxOnVita.vpk (Recommended): The single package needed to install and run Linux. Simply transfer it to your Vita using VitaShell, install it, select your Sony Memory Card mount, press [X] to install boot files, and boot straight into Linux!
  2. LinuxOnVita-release-1.1.0.zip: Contains the standalone VPK, extracted boot files (ux0/linux/), the unpacked LiveArea application, and INSTALL.txt.

🎮 Installation Instructions

  1. Transfer to Vita: Copy LinuxOnVita.vpk to ux0: using VitaShell (USB or FTP).
  2. Install Package: Navigate to LinuxOnVita.vpk in VitaShell, press CROSS (X) to install, and accept extended permissions.
  3. Launch LinuxOnVita: Open the LinuxOnVita bubble from your LiveArea home screen.
  4. Select Memory Card Mount:
    • Standard consoles (no SD2Vita): Choose ux0:.
    • SD2Vita users: Use the D-Pad to select your official Sony Memory Card (typically xmc0: or uma0:).
    • Press CROSS (X) to install the bundled Linux boot files to your memory card.
  5. Boot Linux: Press CROSS (X) to boot directly into the Linux terminal!
  6. Connect to Wi-Fi: Tap the bottom of the screen to open the touch keyboard and run:
    vita-wifi scan

V1.0.0

Choose a tag to compare

@devwithzachary devwithzachary released this 22 Sep 18:00

[v1.0.0] - 2026-09-22 — First Public Release

Added (vs. raw upstream projects)

Interactive Input

  • On-screen touch keyboard (fbkeyboard): Full framebuffer virtual keyboard rendered directly on /dev/fb0 with dual ABC / ?123 layout, Hide/Show toggle, and VT isolation. No UART cable needed.
  • Physical button mapper (vita-input-mapper): D-Pad, Cross (Enter), Circle (Backspace), Square (Space), Triangle (Tab), and L-Trigger (Ctrl+C) mapped via /dev/uinput for full terminal navigation.

Hardware Fixes

  • Fixed button input mask (0x4037ffff): Corrected the upstream XOR mask 0x4037fcf9 that inverted D-Pad Right, Down, Select, and L-Trigger (causing D-Pad Right to be permanently stuck ON in all applications including DOOM).
  • Analog stick initialization: Added Syscon command 0x180 during kernel probe and baremetal handover to enable both analog stick axes.

Display

  • 100% full brightness on boot: Patched both OLED (Vita 1000) and LCD (Vita 2000) baremetal loaders to initialize at maximum brightness. Upstream defaults to gamma level 0 (OLED) / 50% PWM (LCD).
  • vita-brightness CLI: Runtime brightness control from 0–100% via I²C for LCD models. OLED models hardwired to max.

Networking

  • Zero-config Wi-Fi auto-connect: Drop credentials into configs/wifi.conf before building. System auto-joins WPA2 networks and starts OpenSSH on boot.
  • ~12 second SSH ready time: Fixed Linux CRNG entropy stall by enabling the 144 MHz ARM Global Timer clocksource (upstream: ~2.5 minute delay).
  • mDNS hostname: Accessible as vita.local over the local network.

Storage & Package Management

  • Auto-mounting: Automatic mounting of /mnt/ux0 (SD2Vita / Sony memory card), /mnt/ur0 (internal eMMC), and /mnt/uma0 on boot.
  • Alpine Linux chroot (alpine-chroot): Persistent ext4 loopback image on SD card or internal storage with full apk package management. Supports configurable size, custom paths, RAM mode, and graceful SIGINT cleanup.

Power & Battery

  • Hardware battery telemetry (vita-battery): Percentage, voltage, and charging state captured during bootloader handover and accessible via CLI. Displayed on the SSH login banner.

Gaming

  • Framebuffer DOOM (vita-doom): Pure-C fbdoom engine with twin-stick and D-Pad controls, right-stick strafe, analog deadzones, and automatic suspension/resumption of background input daemons during gameplay.

Build System

  • One-command Docker build: ./build.sh all orchestrates all toolchains, kernel patches, Buildroot overlays, and VPK packaging automatically.
  • ./build.sh release: Packages a distributable zip for GitHub Releases (no Wi-Fi credentials included).

Fixed (upstream bugs)

  • Button XOR mask causing D-Pad Right to be permanently active (0x4037fcf9 → 0x4037ffff)
  • CRNG entropy stall delaying boot by ~2.5 minutes (Global Timer clocksource enabled)
  • Alpine chroot APK repos now detect tarball version instead of hardcoding v3.20
  • Alpine chroot pseudo-filesystems now unmount correctly on SIGINT (Ctrl+C)

Upstream Projects This Builds Upon