Archive of https://github.com/Gezine/ftpsrv — A simple FTP server for jailbroken PS4s and PS5s https://github.com/Gezine/ftpsrv
  • C 95.9%
  • Shell 2.4%
  • HTML 1.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-03 01:04:33 +09:00
.github/workflows ci: fix ps5 upload action 2026-04-07 18:29:16 +02:00
assets ps5: add shell UI installer 2026-04-07 18:24:27 +02:00
test cosmetics 2026-01-10 16:34:57 +01:00
.gitignore initial commit 2023-01-31 22:16:20 +01:00
cmd-linux.c cosmetics 2026-01-10 16:25:16 +01:00
cmd-orbis.c cosmetics 2026-02-03 19:58:22 +01:00
cmd-prospero.c cosmetics 2026-02-03 19:58:22 +01:00
cmd.c MLSD: initial commit 2026-02-05 00:48:33 +01:00
cmd.h MLSD: initial commit 2026-02-05 00:48:33 +01:00
install-ps5.c cosmetics 2026-04-07 18:41:42 +02:00
io-freebsd.c RETR: use sendfile() to transmit files for improved performance and reduced memory footprint 2026-01-10 16:17:36 +01:00
io-linux.c RETR: use sendfile() to transmit files for improved performance and reduced memory footprint 2026-01-10 16:17:36 +01:00
io.c io: retry transfers upon interupts 2026-01-27 22:52:29 +01:00
io.h io: add alternative to sendflie 2026-01-10 22:07:49 +01:00
LICENSE add license 2024-04-10 00:07:38 +02:00
log.h cosmetics 2025-11-18 13:28:39 +01:00
main-linux.c add command line option for choosing the port to bind to 2026-02-18 19:51:57 +01:00
main-orbis.c Add quiet arg 2026-04-14 21:28:12 +02:00
main-prospero.c Add quiet arg 2026-04-14 21:28:12 +02:00
Makefile fix build for linux systems 2025-07-06 09:39:12 +02:00
Makefile.linux cosmetics 2026-01-10 16:25:16 +01:00
Makefile.ps4 cosmetics 2026-01-10 16:25:16 +01:00
Makefile.ps5 Makefile.ps5: Add missing assets to list. 2026-05-19 10:19:34 +02:00
notify.c fix build for linux systems 2025-07-06 09:39:12 +02:00
notify.h notify user on the server is running 2024-10-29 17:47:18 +01:00
README.md readme: document a known issue related to PS5 SELFs stored in the root dir 2026-04-18 14:08:47 +02:00
self-linux.c cosmetics 2026-01-10 16:25:16 +01:00
self-orbis.c cosmetics 2026-01-10 16:25:16 +01:00
self-prospero.c ps5: add support for SELF decryption on firmware 13.60 2026-08-03 01:04:33 +09:00
self.c cosmetics 2026-02-18 19:50:33 +01:00
self.h self2elf: add several cosmetics and improvements to error handling, including sha256 digest verification 2025-11-18 15:56:53 +01:00
sha256.c self2elf: add several cosmetics and improvements to error handling, including sha256 digest verification 2025-11-18 15:56:53 +01:00
sha256.h self2elf: add several cosmetics and improvements to error handling, including sha256 digest verification 2025-11-18 15:56:53 +01:00
srv.c cosmetics 2026-04-07 15:35:38 +02:00
srv.h fix build for linux systems 2025-07-06 09:39:12 +02:00

ftpsrv

This is a simple FTP server that can be executed on a Playstation 4 or Playstation 5 that has been jailbroken and is running an ELF loader. The FTP server accepts connection on port 2121.

Features

Client software that has been tested include gFTP, Filezilla, curl, and Thunar. The payload supports a couple of custom SITE commands specifically for the PS4 and PS5 (executed without prepending SITE). In particular:

  • KILL - kill the FTP server.
  • MTRW - remount /system and /system_ex with write permissions.
  • SELF - toggle on-the-fly SELF to ELF decryption (enabled by default).

Note: the SELF command operates on induvidual connections so use e.g.,

john@localhost:ftpsrv$ curl -o libkernel.sprx -Q SELF ftp://ps5:2121/system/common/lib/libkernel.sprx

Building for the PS4

Assuming you have the ps4-payload-sdk installed on a POSIX machine, the FTP server can be compiled using the following two commands:

john@localhost:ftpsrv$ export PS4_PAYLOAD_SDK=/opt/ps4-payload-sdk
john@localhost:ftpsrv$ make -f Makefile.ps4

Building for the PS5

Assuming you have the ps5-payload-sdk installed on a POSIX machine, the FTP server can be compiled using the following two commands:

john@localhost:ftpsrv$ export PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk
john@localhost:ftpsrv$ make -f Makefile.ps5

Building for GNU/Linux systems

Assuming you have a compiler toolchain installed on your GNU/Linux system, the FTP server can be compiled using the following command:

john@localhost:ftpsrv$ make -f Makefile.posix

Installing on the PS5

On the PS5, ftpsrv can be installed to disk and then launched from the standard Sony shell UI assuming websrv is running. To perform the install, deploy the install payload to an ELF loader, e.g.,

john@localhost:~$ export PS5_HOST=ps5
john@localhost:~$ export PS5_PORT=9021
john@localhost:~$ export PS5_PAYLOAD=https://github.com/ps5-payload-dev/ftpsrv/releases/latest/download/ftpsrv-ps5-install.elf
john@localhost:~$ echo "$PS5_PAYLOAD" | nc -q0 $PS5_HOST $PS5_PORT

If the install is successful, a new item appears in the Sony shell UI that can be used launch ftpsrv when websrv is running.

Known issues

  • Some PS5 firmwares below vesion 4 contains a kernel bug where reading from some SELF files causes the read syscall to stall.
  • PS5 SELF files on the root (e.g., /SceSysAvControl.elf) cannot be decrypted. To work arround this, copy the encrypted file to /data/ first and download it from there instead and it should be decrypted.

Reporting Bugs

If you encounter problems with ftpsrv, please file a github issue. If you plan on sending pull requests which affect more than a few lines of code, please file an issue before you start to work on you changes. This will allow us to discuss the solution properly before you commit time and effort.

License

ftpsrv is licensed under the GPLv3+.