commit ced7fd12320f996c1e85d9a6f93dd91277e34ecb Author: Manos Date: Mon Jan 12 17:26:03 2026 +0200 Initial commit: PS5 Upload Suite - High-Speed File Transfer diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f9fa6f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,60 @@ +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio cache/options +.vs/ +*.suo +*.user +*.userosscache +*.sln.docstates + +# Build results +*.dll +*.exe +*.pdb +*.cache + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# Files built by Visual Studio +*.pidb +*.svclog +*.scc + +# Caches +*.swp +*~ + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Temporary files +*.tmp +*.log +*.bak +*.old + +# PowerShell script +convert_to_ico.ps1 diff --git a/PROTOCOL.md b/PROTOCOL.md new file mode 100644 index 0000000..d15d424 --- /dev/null +++ b/PROTOCOL.md @@ -0,0 +1,83 @@ +# PS5 Upload Protocol Specification + +## Overview +Custom binary protocol for high-speed file transfers between PC and PS5. +Port: 9113 + +## Message Format + +All messages follow this structure: +``` +[Command (1 byte)][Data Length (4 bytes)][Data (variable)] +``` + +## Commands + +### Client โ†’ Server + +| Command | Value | Description | Data Format | +|---------|-------|-------------|-------------| +| PING | 0x01 | Test connection | None | +| LIST_STORAGE | 0x02 | Get storage info | None | +| LIST_DIR | 0x03 | List directory | Path (null-terminated string) | +| CREATE_DIR | 0x04 | Create directory | Path (null-terminated string) | +| DELETE_FILE | 0x05 | Delete file | Path (null-terminated string) | +| DELETE_DIR | 0x06 | Delete directory | Path (null-terminated string) | +| START_UPLOAD | 0x10 | Start file upload | Path (null-terminated) + File size (8 bytes) | +| UPLOAD_CHUNK | 0x11 | Upload file chunk | Chunk data (raw bytes) | +| END_UPLOAD | 0x12 | Finish upload | None | +| SHUTDOWN | 0xFF | Shutdown server | None | + +### Server โ†’ Client + +| Response | Value | Description | Data Format | +|----------|-------|-------------|-------------| +| OK | 0x01 | Success | Optional message | +| ERROR | 0x02 | Error occurred | Error message (null-terminated) | +| DATA | 0x03 | Response data | Variable format | +| READY | 0x04 | Ready for next chunk | None | +| PROGRESS | 0x05 | Upload progress | Bytes written (8 bytes) | + +## Data Formats + +### LIST_STORAGE Response +``` +[Drive count (4 bytes)] +For each drive: + [Path length (2 bytes)][Path][Total space (8 bytes)][Free space (8 bytes)] +``` + +### LIST_DIR Response +``` +[Entry count (4 bytes)] +For each entry: + [Type (1 byte: 0=file, 1=dir)][Name length (2 bytes)][Name][Size (8 bytes)][Timestamp (8 bytes)] +``` + +## Flow Examples + +### Upload File +``` +Client: START_UPLOAD "/data/test.bin" size=1048576 +Server: READY +Client: UPLOAD_CHUNK [4MB data] +Server: PROGRESS bytes=4194304 +Client: UPLOAD_CHUNK [remaining data] +Server: PROGRESS bytes=1048576 +Client: END_UPLOAD +Server: OK +``` + +### List Directory +``` +Client: LIST_DIR "/data" +Server: DATA [directory listing] +``` + +## Performance Optimizations + +- 4MB socket buffers +- SO_NOSIGPIPE enabled +- TCP_NODELAY for low latency +- Direct disk writes (no temp files) +- Streaming chunks (no full file buffering) diff --git a/README.md b/README.md new file mode 100644 index 0000000..3e00047 --- /dev/null +++ b/README.md @@ -0,0 +1,206 @@ +# ๐Ÿš€ PS5 Upload Suite - High-Speed File Transfer + +**By Manos** + +Custom high-speed file transfer system for PS5 with etaHEN. Achieves **100+ MB/s** transfer speeds using a custom binary protocol. + +![PS5 Upload Client](screenshots/screenshot1.png) +![Upload in Progress](screenshots/screenshot2.png) + +--- + +## ๐Ÿ“ฆ What's Included + +### 1. PS5 Server Payload +- **File:** `payload/ps5_upload_server.elf` +- **Port:** 9113 +- **Protocol:** Custom binary (optimized for speed) +- **Features:** + - 4MB socket buffers + - SO_NOSIGPIPE enabled + - TCP_NODELAY for low latency + - Direct disk writes (no temp files) + - Multi-threaded client handling + +### 2. Windows GUI Client +- **File:** `client/bin/Release/net6.0-windows/win-x64/publish/PS5Upload.exe` +- **Framework:** .NET 6.0 WPF +- **Features:** + - Modern dark theme UI + - Drag & drop file/folder upload + - Browse PS5 filesystem + - Real-time upload progress + - Speed indicator (MB/s) + - Storage space display + - Recursive folder upload + +--- + +## ๐Ÿš€ Quick Start + +### Step 1: Load PS5 Payload + +1. Copy `payload/ps5_upload_server.elf` to your PS5: + ``` + /data/etaHEN/payloads/ps5_upload_server.elf + ``` + +2. Load the payload with elfldr + +3. You should see notification: + ``` + PS5 Upload Server: 192.168.0.XXX:9113 - By Manos + ``` + +### Step 2: Run Windows Client + +1. Run `PS5Upload.exe` on your PC + +2. Enter your PS5's IP address (e.g., `192.168.0.160`) + +3. Click **Connect** + +4. Browse files/folders or drag & drop + +5. Click **Upload to PS5** + +--- + +## ๐ŸŽจ Features + +### PS5 Server +โœ… **High-Speed Protocol** - Custom binary protocol +โœ… **4MB Buffers** - Maximum throughput +โœ… **Direct Disk I/O** - No temp files +โœ… **Multi-threaded** - Handle multiple clients +โœ… **Robust Error Handling** - Graceful failures + +### Windows Client +โœ… **Modern UI** - Dark theme, clean design +โœ… **Drag & Drop** - Files and folders +โœ… **Browse PS5** - Navigate filesystem +โœ… **Real-time Progress** - Speed & percentage +โœ… **Folder Upload** - Recursive directory upload +โœ… **Storage Info** - Free space display + +--- + +## ๐Ÿ“Š Performance + +| Network | Expected Speed | +|---------|----------------| +| **Gigabit Ethernet** | 100-120 MB/s | +| **WiFi 6 (5GHz)** | 60-80 MB/s | +| **WiFi 5 (5GHz)** | 40-60 MB/s | + +**Note:** Speeds depend on network quality and PS5 disk performance. + +--- + +## ๐Ÿ”ง Building from Source + +### PS5 Payload + +Requirements: +- PS5 SDK (prospero-clang) +- WSL or Linux + +```bash +cd payload +bash compile.sh +``` + +### Windows Client + +Requirements: +- .NET 6.0 SDK or later +- Windows 10/11 + +```cmd +cd client +build.bat +``` + +Or manually: +```cmd +dotnet publish -c Release -r win-x64 --self-contained true +``` + +--- + +## ๐Ÿ“‹ Protocol Specification + +See [PROTOCOL.md](PROTOCOL.md) for detailed protocol documentation. + +### Commands +- `PING` - Test connection +- `LIST_STORAGE` - Get storage info +- `LIST_DIR` - List directory contents +- `CREATE_DIR` - Create directory +- `DELETE_FILE` - Delete file +- `DELETE_DIR` - Delete directory +- `START_UPLOAD` - Begin file upload +- `UPLOAD_CHUNK` - Upload file chunk +- `END_UPLOAD` - Finish upload +- `SHUTDOWN` - Shutdown server + +--- + +## ๐Ÿ› ๏ธ Troubleshooting + +### Connection Failed +- Make sure PS5 payload is running +- Check PS5 IP address is correct +- Verify both devices are on same network +- Check firewall settings + +### Slow Upload Speed +- Use wired Ethernet connection (not WiFi) +- Close other network applications +- Check PS5 disk health + +### Upload Fails +- Check PS5 has enough free space +- Verify destination path exists +- Check file permissions + +--- + +## ๐Ÿ”’ Security Notes + +- Server only accepts connections from local network +- No authentication required (local network only) +- SHUTDOWN command only works from localhost + +--- + +## ๐Ÿ“ License + +MIT License - Free to use and modify + +--- + +## ๐Ÿ‘ค Author + +**Manos** + +Created with โค๏ธ for the PS5 homebrew community + +--- + +## ๐Ÿ™ Credits + +- PS5 SDK +- etaHEN +- Inspired by ps5upload by PhantomPtr +- PS5 homebrew community + +--- + +## ๐Ÿ“ž Support + +For issues or questions, please open an issue on GitHub. + +--- + +**Enjoy blazing-fast file transfers on your PS5!** ๐Ÿš€ diff --git a/client/App.xaml b/client/App.xaml new file mode 100644 index 0000000..3144dca --- /dev/null +++ b/client/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/client/App.xaml.cs b/client/App.xaml.cs new file mode 100644 index 0000000..934fbaf --- /dev/null +++ b/client/App.xaml.cs @@ -0,0 +1,8 @@ +using System.Windows; + +namespace PS5Upload +{ + public partial class App : Application + { + } +} diff --git a/client/MainWindow.xaml b/client/MainWindow.xaml new file mode 100644 index 0000000..a35cb34 --- /dev/null +++ b/client/MainWindow.xaml @@ -0,0 +1,473 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +