Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
The main server is currently down. We are running on a backup server, so editing and search functionality are temporarily disabled. Please check back in a few hours.

VitaImmich: Difference between revisions

From GameBrew
No edit summary
 
(One intermediate revision by one other user not shown)
Line 19: Line 19:
|image_alt=
|image_alt=
}}
}}
'''vitaImmich''' is a native [https://immich.app/ Immich] client for the Sony PlayStation Vita, created by SadsArches. It lets the handheld browse, search and map an entire self-hosted photo and video library over Wi-Fi, play videos on the Vita's hardware decoder, and back up the device's camera roll. The project is described by its author as a proof-of-concept port of Immich to the PS Vita, and uses the app title id <code>VIMM00001</code>.
vitaImmich is a native [https://immich.app/ Immich] client for the Sony PlayStation Vita (POC). Browse, search and map your whole photo & video library over Wi‑Fi, play videos on the Vita's hardware decoder, and back up the camera roll, all on a 12‑year‑old handheld.


== Features ==
== Features ==
* '''Timeline''' the entire library shown as a justified, date-grouped grid (newest first), styled after the Immich web app.
* '''Timeline''' - the entire library shown as a justified, date-grouped grid (newest first), styled after the Immich web app.
* '''Smart search''' free-text CLIP search entered from the Vita's keyboard.
* '''Smart search''' - free-text CLIP search entered from the Vita's keyboard.
* '''Places map''' geotagged photos clustered on a world map; pan/zoom with the sticks and open any cluster as its own gallery.
* '''Places map''' - geotagged photos clustered on a world map; pan/zoom with the sticks and open any cluster as its own gallery.
* '''Full-screen viewer''' pinch/stick zoom and pan, swipe between photos, and hardware-accelerated H.264 video playback.
* '''Full-screen viewer''' - pinch/stick zoom and pan, swipe between photos, and hardware-accelerated H.264 video playback.
* '''Camera-roll backup''' scans the Vita's photos and videos, dedupes against the server, and uploads on request.
* '''Camera-roll backup''' - scans the Vita's photos and videos, dedupes against the server, and uploads on request.
* '''Server overview''' storage usage, server/app versions, and per-device backup status.
* '''Server overview''' - storage usage, server/app versions, and per-device backup status.
* '''Touch and buttons''' the whole UI can be driven with the front touchscreen or the d-pad/sticks.
* '''Touch and buttons''' - the whole UI can be driven with the front touchscreen or the d-pad/sticks.


== Installation ==
== Installation ==
Requirements:
===Requirements===
* A PS Vita running HENkaku/h-encore with [[VitaShell]].
* A PS Vita running HENkaku/h-encore with [[VitaShell]].
* A reasonably recent Immich server reachable over the Vita's Wi-Fi.
* A reasonably recent Immich server reachable over the Vita's Wi-Fi.
* An Immich API key (web UI → ''Account Settings API Keys''), or an email/password.
* An Immich API key (web UI > Account Settings > API Keys), or an email/password.


Steps:
===Instructions===
# Get <code>vitaImmich.vpk</code> from the [https://codeberg.org/SadsArches/vitaImmich/releases latest release] (or build it from source) and install it with VitaShell.
Download the .vpk from [https://codeberg.org/SadsArches/vitaImmich/releases Releases] and install it with [[VitaShell]].
# Launch it once; it creates <code>ux0:data/vitaimmich/config.txt</code>.
# Edit that file (VitaShell's FTP via SELECT makes this easy):


Launch it once; it creates <code>ux0:data/vitaimmich/config.txt</code>.
Edit that file (VitaShell's FTP via SELECT makes this easy):
  server=http://192.168.1.100:2283
  server=http://192.168.1.100:2283
  apikey=your-immich-api-key
  apikey=your-immich-api-key


Behind a reverse proxy without NAT loopback, the domain can be pinned to the LAN IP so the Host header / TLS SNI stay on the domain but the connection goes straight to the server:
Behind a reverse proxy without NAT loopback, the domain can be pinned to the LAN IP so the Host header / TLS SNI stay on the domain but the connection goes straight to the server:
  server=https://immich.example.com
  server=https://immich.example.com
  apikey=your-immich-api-key
  apikey=your-immich-api-key
  serverip=192.168.1.100
  serverip=192.168.1.100


# Relaunch.
Relaunch.


Additional <code>config.txt</code> tunables for backup: <code>syncdir=&lt;folder&gt;</code> (repeatable) and <code>syncmaxmb=&lt;MB&gt;</code> (size cap; files over 512 MB are skipped by default, 0 disables).
Additional <code>config.txt</code> tunables for backup: <code>syncdir=&lt;folder&gt;</code> (repeatable) and <code>syncmaxmb=&lt;MB&gt;</code> (size cap; files over 512 MB are skipped by default, 0 disables).


==Camera-roll backup==
===Camera-roll backup===
The camera-roll backup mounts the Photos app storage (<code>photo0:</code> / <code>ux0:picture</code>) plus <code>ux0:video/CAMERA</code>, scans for <code>.jpg/.jpeg/.png/.mp4</code> files, and merges them into the same date-sorted timeline as the server library. Each cell shows a status badge: blue-grey dot (cloud only), orange up-arrow (local only), blinking (queued/uploading), green check (backed up), and red dot (failed). A background thread SHA-1-hashes each local file and checks the server for existing copies; uploads only start when queued by the user. Backup is one-way (Vita → server). Note that TLS verification is disabled (no CA bundle ships), so plain HTTP on a trusted LAN is preferred. Video playback uses the Vita's hardware decoder (SceAvPlayer), so only MP4 (H.264/AAC) plays, via Immich's transcoded playback stream.
On startup the app mounts the Photos app's storage (<code>photo0:</code> / <code>ux0:picture</code>) plus <code>ux0:video/CAMERA</code>, scans for <code>.jpg/.jpeg/.png/.mp4</code>, and merges those files into the same date‑sorted timeline as your server library. A badge in each cell's corner shows status:
 
* Blue‑grey dot - '''cloud only'''
* Orange up‑arrow - '''local only'''
* Blinking - '''queued / uploading'''
* Green check - '''backed up''' (on both; shown once, as the server asset)
* Red dot - '''failed'''
 
A background thread SHA‑1‑hashes each local file and asks the server which already exist (<code>bulk-upload-check</code>). Uploads never start on their own - open the sync overview (SELECT) and press X to queue every local‑only file. Tunables in <code>config.txt</code>: <code>syncdir=&lt;folder&gt;</code> (repeatable) and <code>syncmaxmb=&lt;MB&gt;</code> (size cap; files over 512 MB are skipped by default, 0 disables).


==Limitations==
==Limitations==
*TLS verification is disabled (no CA bundle ships) prefer plain HTTP on a trusted LAN, or treat HTTPS as unverified.
* TLS verification is disabled (no CA bundle ships) - prefer plain HTTP on a trusted LAN, or treat HTTPS as unverified.
*Videos download in full to the memory card before playing (deleted after). Playback is the Vita's hardware decoder via SceAvPlayer, so only MP4 (H.264/AAC) plays Immich's transcoded video/playback stream is used.
* Videos download in full to the memory card before playing (deleted after). Playback is the Vita's hardware decoder via SceAvPlayer, so only MP4 (H.264/AAC) plays - Immich's transcoded video/playback stream is used.
*Backup is one‑way (Vita server); deviceId is hard‑coded to "PS Vita" and uploads aren't added to an album.
* Backup is one‑way (Vita > server); deviceId is hard‑coded to "PS Vita" and uploads aren't added to an album.
*Thumbnails stream in one at a time on a background thread (grey placeholder until loaded); hashing the camera roll fills statuses in gradually.
* Thumbnails stream in one at a time on a background thread (grey placeholder until loaded); hashing the camera roll fills statuses in gradually.


== Controls ==
== Controls ==
=== Timeline ===
D‑Pad/Analog - Move selection (hold to repeat)
L/R - Jump a month up/down
Triangle - Smart search
Cross - Open full screen
Map icon/Cloud icon (touch) - Open the Places map/server page
Select - Sync overview
Start - Exit
=== Places map ===
Left Analog/D‑Pad/Drag - Pan
Right Analog or L/R - Zoom out/in
Cross - Open the centred cluster as a gallery
Triangle - Toggle the lat/lon graticule
Circle - Back


'''Timeline'''
=== Full‑screen viewer ===
Left/Right - Previous/next


{| class="wikitable"
Right Analog or L/R - Zoom, Left Analog pans
! Button !! Action
|-
| D-pad / sticks || Move selection (hold to repeat)
|-
| L / R || Jump a month up / down
|-
| △ || Smart search
|-
| X || Open full screen
|-
| Places / server icons (touch) || Open the Places map / server page
|-
| SELECT || Sync overview
|-
| START || Exit
|}


'''Places map'''
Cross - Play video/retry a failed load


{| class="wikitable"
Circle - Back
! Button !! Action
|-
| Left stick / d-pad / drag || Pan
|-
| Right stick / L · R || Zoom out / in
|-
| X || Open the centred cluster as a gallery
|-
| △ || Toggle the lat/lon graticule
|-
| O || Back
|}


'''Full-screen viewer'''
=== Video playback ===
Cross - Pause/Resume


{| class="wikitable"
Left/Right - Seek +/-10s
! Button !! Action
|-
| ← / → || Previous / next
|-
| Right stick / L · R || Zoom (left stick pans)
|-
| X || Play video / retry a failed load
|-
| O || Back
|}


Video playback: X pause/resume · ←/→ seek ±10 s · O stop.
Circle - Stop


==Screenshots==
==Screenshots==

Latest revision as of 06:41, 22 June 2026

vitaImmich
General
AuthorSadsArches
TypeOther Apps
Version1.0
LicenseN/A
Last Updated2026/06/18
Links
Download
Website
Source

vitaImmich is a native Immich client for the Sony PlayStation Vita (POC). Browse, search and map your whole photo & video library over Wi‑Fi, play videos on the Vita's hardware decoder, and back up the camera roll, all on a 12‑year‑old handheld.

Features

  • Timeline - the entire library shown as a justified, date-grouped grid (newest first), styled after the Immich web app.
  • Smart search - free-text CLIP search entered from the Vita's keyboard.
  • Places map - geotagged photos clustered on a world map; pan/zoom with the sticks and open any cluster as its own gallery.
  • Full-screen viewer - pinch/stick zoom and pan, swipe between photos, and hardware-accelerated H.264 video playback.
  • Camera-roll backup - scans the Vita's photos and videos, dedupes against the server, and uploads on request.
  • Server overview - storage usage, server/app versions, and per-device backup status.
  • Touch and buttons - the whole UI can be driven with the front touchscreen or the d-pad/sticks.

Installation

Requirements

  • A PS Vita running HENkaku/h-encore with VitaShell.
  • A reasonably recent Immich server reachable over the Vita's Wi-Fi.
  • An Immich API key (web UI > Account Settings > API Keys), or an email/password.

Instructions

Download the .vpk from Releases and install it with VitaShell.

Launch it once; it creates ux0:data/vitaimmich/config.txt.

Edit that file (VitaShell's FTP via SELECT makes this easy):

server=http://192.168.1.100:2283
apikey=your-immich-api-key

Behind a reverse proxy without NAT loopback, the domain can be pinned to the LAN IP so the Host header / TLS SNI stay on the domain but the connection goes straight to the server:

server=https://immich.example.com
apikey=your-immich-api-key
serverip=192.168.1.100

Relaunch.

Additional config.txt tunables for backup: syncdir=<folder> (repeatable) and syncmaxmb=<MB> (size cap; files over 512 MB are skipped by default, 0 disables).

Camera-roll backup

On startup the app mounts the Photos app's storage (photo0: / ux0:picture) plus ux0:video/CAMERA, scans for .jpg/.jpeg/.png/.mp4, and merges those files into the same date‑sorted timeline as your server library. A badge in each cell's corner shows status:

  • Blue‑grey dot - cloud only
  • Orange up‑arrow - local only
  • Blinking - queued / uploading
  • Green check - backed up (on both; shown once, as the server asset)
  • Red dot - failed

A background thread SHA‑1‑hashes each local file and asks the server which already exist (bulk-upload-check). Uploads never start on their own - open the sync overview (SELECT) and press X to queue every local‑only file. Tunables in config.txtsyncdir=<folder> (repeatable) and syncmaxmb=<MB> (size cap; files over 512 MB are skipped by default, 0 disables).

Limitations

  • TLS verification is disabled (no CA bundle ships) - prefer plain HTTP on a trusted LAN, or treat HTTPS as unverified.
  • Videos download in full to the memory card before playing (deleted after). Playback is the Vita's hardware decoder via SceAvPlayer, so only MP4 (H.264/AAC) plays - Immich's transcoded video/playback stream is used.
  • Backup is one‑way (Vita > server); deviceId is hard‑coded to "PS Vita" and uploads aren't added to an album.
  • Thumbnails stream in one at a time on a background thread (grey placeholder until loaded); hashing the camera roll fills statuses in gradually.

Controls

Timeline

D‑Pad/Analog - Move selection (hold to repeat)

L/R - Jump a month up/down

Triangle - Smart search

Cross - Open full screen

Map icon/Cloud icon (touch) - Open the Places map/server page

Select - Sync overview

Start - Exit

Places map

Left Analog/D‑Pad/Drag - Pan

Right Analog or L/R - Zoom out/in

Cross - Open the centred cluster as a gallery

Triangle - Toggle the lat/lon graticule

Circle - Back

Full‑screen viewer

Left/Right - Previous/next

Right Analog or L/R - Zoom, Left Analog pans

Cross - Play video/retry a failed load

Circle - Back

Video playback

Cross - Pause/Resume

Left/Right - Seek +/-10s

Circle - Stop

Screenshots

vitaImmich-01.png

vitaImmich-02.png

vitaImmich-03.png

Changelog

v1.0

  • First Release.

External links

Advertising: