Send and receive files, folders and text between your PS Vita and any device running LocalSend -
over your own Wi-Fi, no cloud, no cable. A native homebrew app written in C, with a touch-friendly interface, a built-in
.vpk installer and a screensaver that shows your transfer progress.
VitaSend is an independent project. It speaks the open LocalSend protocol but is not affiliated with the LocalSend project or Sony. Status: beta (v0.9.8) - see Status.
![]() |
![]() |
![]() |
![]() |
More pictures are in docs/screens/ (OLED theme, settings, file browser, picture and text viewer, copy / move, screensaver, ...). They are
rendered on a PC by the same drawing code the Vita runs.
- Works with LocalSend (protocol v2.1): the Vita shows up in the LocalSend apps on your network, and the Vita can find them. Send files, whole folders and text in both directions.
- Made for a handheld: the left menu, tabs, cards and PlayStation button hints; everything works with buttons, D-pad and the front touch screen (tap, drag to scroll). Dark and pure-black OLED theme. Accents, Greek and Cyrillic text.
- Receive safely: you accept or reject every request (or use Quick Save for favourites / everyone), optional PIN, free-space check, SHA-256 verification, existing files kept / skipped / overwritten as you choose.
- Files tab: browse your memory cards, tick several files and send them together, copy or move them to another folder or memory card, rename, delete, create folders. X opens the highlighted file: a picture (JPEG, PNG, BMP, GIF) or text file in the built-in viewer, a
.vpkin the installer; tick several with SQUARE and X opens them as a queue you can page through. - Updates: VitaSend checks GitHub for a new version when it starts (pre-releases count; asks at most once a day; can be switched off in Settings) and has a Check for updates button in About. The download is verified (SHA-256, HTTPS with built-in root certificates) and installed with the normal installer.
- Unzip a
.zipinto a new folder (progress bar, cancel, unsafe names refused), and a progress bar when deleting files and folders. - Wi-Fi off? The app asks, tries to switch it on for you, or lets you continue offline. Retail firmware has no system call for the first, so then a button (TRIANGLE) opens the Vita's Wi-Fi settings.
.vpkinstaller like VitaShell's: install a received package with one button, install a whole queue, or let VitaSend install packages from favourites automatically (off by default). Open app right after installing.- Screensaver with the bouncing logo and live transfer / installation progress; wakes on touch, button, a request or a finished job. Optional battery indicator and clock, a short finished chime.
- Retry a failed transfer with only the files that did not arrive, history of the last transfers and messages, favourites, a device details page, an on-screen log for troubleshooting.
- No dependencies beyond mbedTLS: its own HTTP server and client, JSON, ZIP / DEFLATE reader and 2D renderer.
You need a PS Vita with custom firmware (HENkaku / ensō - see the Vita Hacks Guide) and VitaShell.
- Download
VitaSend-v098.vpkfrom the Releases page. - Copy it to your Vita (USB or FTP) and install it with VitaShell (open the file, press X).
- In the HENkaku settings turn on "Enable unsafe homebrew" - the installer needs the extended permissions (see why). Without it the app will not start.
- Start VitaSend from the LiveArea.
- Vita to Vita / PC / phone: connect both to the same Wi-Fi, open LocalSend on the other device, and send to the
device named
Vita-XXXX. The Vita shows who is sending - press X to accept. - From the Vita: open the Send tab, press SQUARE to choose files (or TRIANGLE to type a text), pick the other device in the list and press X.
- Install an app you received: when the transfer finishes, press TRIANGLE to install it (or open the Files tab
and press X on a
.vpk). - The Vita cannot see the other device? Some routers block multicast between Wi-Fi clients ("client isolation"). Turn that off, press TRIANGLE on the Receive tab to announce again, or use SELECT > Add by IP on the Send tab.
Everything else - controls, settings, the installer, troubleshooting - is in the user guide.
VitaSend is a beta. What has been checked:
- This is being used on a real PS Vita PCH-1004 with the LocalSend Windows, Linux, Android and iPhone apps: receiving and sending files, text, installing packages, touch, screensaver, sound.
- More than 600 automated checks run on a PC against the real mbedTLS under AddressSanitizer / UBSan: the protocol
(against stand-ins that play the other LocalSend device), the transfer engines, the
.vpkinstaller (ZIP / DEFLATE compared with Python'szlib, corrupted and malicious packages), and the whole interface including simulated touch. See docs/TESTING.md. - Not yet tested: the LocalSend app for macOS, other Vita models (PCH-100x vs PCH-200x, PS TV) and firmware versions, ensō-only setups. Reports are very welcome - use the Bug report template and attach the log (Settings > Log).
Known limits: one transfer at a time, one TLS connection per file (many tiny files are slow), the browser-download API and IPv6 are not supported, only Latin / Greek / Cyrillic text can be displayed. Details in the user guide and PROTOCOL.md.
export VITASDK=/usr/local/vitasdk && export PATH=$VITASDK/bin:$PATH
./scripts/build-mbedtls.sh # once: downloads and builds mbedTLS 3.6.2 (checksum verified)
mkdir build && cd build && cmake .. && make -j4The result is build/VitaSend-v098.vpk. Docker, WSL, CMake options and common problems: docs/BUILDING.md.
You can also build the whole program as a normal Linux program and test it without a Vita:
./scripts/build-mbedtls.sh host && make -C host SAN=1
python3 host/fake_peer.py && python3 host/test_transfer.pyThe code is plain portable C. Only two files talk to the Vita (src/plat_vita.c, src/ui_vita.c); everything else
runs unchanged on a PC, which is how it is tested. Start here:
| Document | What is in it |
|---|---|
| docs/ARCHITECTURE.md | layers, threads, source map, how receiving / sending / installing / the UI work |
| docs/ABOUT_THE_PORT.md | how the port works, the tools used, and the Vita-specific problems and decisions |
| docs/PROTOCOL.md | which parts of the LocalSend protocol are implemented, and how |
| docs/BUILDING.md | building the VPK and the PC test build |
| docs/TESTING.md | the test harness, test knobs, regenerating the screenshots |
| CONTRIBUTING.md | how to send a change |
src/ the program (see docs/ARCHITECTURE.md for a map of every file)
host/ PC build + the test scripts
scripts/ build-mbedtls.sh
tools/ generators for the icons / LiveArea images and the embedded fonts
sce_sys/ bubble icon and LiveArea images
fonts/ font licences (the fonts themselves are compiled into src/fontdata.c)
docs/ documentation and screenshots
VitaSend is free software under the GNU General Public License v3.0 or later (LICENSE). The whole project is
GPL because the installer follows VitaShell by TheFloW (GPL-3.0): the
head.bin template and the install procedure. Other components: mbedTLS (Apache-2.0 / GPL-2.0+), stb_truetype and stb_image
(public domain), Mozilla's root certificate list (MPL-2.0, built in for the update check), the Poppins and Liberation Sans fonts (SIL OFL 1.1) - details in
THIRD_PARTY_NOTICES.md.
The LocalSend protocol is by Tien Do Nam and contributors. "PlayStation" and "PS Vita" are trademarks of Sony Interactive Entertainment Inc.; this project is not affiliated with or endorsed by either company.
Made by trashman. Developed with AI assistance. Found a bug or have an idea? Open an issue.




