🎯 Major Achievement - Fixed all 15 critical bugs causing connection drops, UI freezes, and upload failures - Tested: 42,801+ files uploaded with ZERO errors and full gigabit speeds 🔧 Payload Fixes (7 bugs): 1. Per-file mutex implementation for concurrent uploads 2. Memory/mutex cleanup on disconnect 3. fflush() race condition fix (moved inside mutex) 4. File creation race condition fix (added mutex lock) 5. Global scan counter issues (moved to global scope) 6. Directory counting bug (count dirs + files) 7. Socket timeout for large files (5 min timeout + aggressive keepalive) ⭐ CRITICAL 🔧 Client Fixes (8 bugs): 1. ConnectAsync timeout memory leak 2. ConnectAsync exception memory leak 3. Disconnect memory leak 4. Upload deadlock during chunked uploads 5. Chunking disabled for stability (PS5 can't handle concurrent writes) ⭐ CRITICAL 6. UI freeze during uploads (Dispatcher.Invoke → InvokeAsync) 7. Log flooding causing UI freeze (throttling + size limit) 8. Optimal parallel connection strategy (6 parallel single-connection uploads) 📊 Performance Results: - ✅ 42,801 files uploaded successfully - ✅ Zero errors - 100% success rate - ✅ 60-150 MB/s sustained throughput - ✅ Peak: 190 MB/s per connection - ✅ Fully responsive UI throughout upload - ✅ No memory leaks - stable operation 📝 Files Changed: - payload/main.c: 7 critical fixes - payload/ps5_upload_server.elf: Recompiled with all fixes - client/Protocol.cs: 3 memory leak fixes - client/MainWindow.xaml.cs: 5 stability fixes - CHANGELOG.md: Complete documentation of all fixes - README.md: Updated with v1.3.0 performance results
🚀 PS5 Upload Suite - High-Speed File Transfer
By Manos
Version 1.3.0 - Stable Release
Custom high-speed file transfer system for PS5 with etaHEN. Achieves 100+ MB/s transfer speeds using a custom binary protocol.
⭐ NEW in v1.3.0: Complete stability overhaul - 42,801+ files uploaded with ZERO errors!
📦 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
-
Copy
payload/ps5_upload_server.elfto your PS5:/data/etaHEN/payloads/ps5_upload_server.elf -
Load the payload with elfldr
-
You should see notification:
PS5 Upload Server: 192.168.0.XXX:9113 - By Manos
Step 2: Run Windows Client
-
Run
PS5Upload.exeon your PC -
Enter your PS5's IP address (e.g.,
192.168.0.160) -
Click Connect
-
Browse files/folders or drag & drop
-
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
v1.3.0 Tested Results:
- ✅ 42,801 files uploaded successfully
- ✅ Zero errors - 100% success rate
- ✅ 60-150 MB/s sustained throughput
- ✅ Peak: 190 MB/s per connection
- ✅ Fully responsive UI throughout upload
- ✅ No memory leaks - stable operation
| 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
cd payload
bash compile.sh
Windows Client
Requirements:
- .NET 6.0 SDK or later
- Windows 10/11
cd client
build.bat
Or manually:
dotnet publish -c Release -r win-x64 --self-contained true
📋 Protocol Specification
See PROTOCOL.md for detailed protocol documentation.
Commands
PING- Test connectionLIST_STORAGE- Get storage infoLIST_DIR- List directory contentsCREATE_DIR- Create directoryDELETE_FILE- Delete fileDELETE_DIR- Delete directorySTART_UPLOAD- Begin file uploadUPLOAD_CHUNK- Upload file chunkEND_UPLOAD- Finish uploadSHUTDOWN- 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
📝 What's New in v1.3.0
See CHANGELOG.md for complete list of all 15 bug fixes.
Highlights:
- ✅ Zero connection drops - 5 minute socket timeout + aggressive keepalive
- ✅ Fully responsive UI - Async updates + throttled logging
- ✅ No memory leaks - Proper resource disposal
- ✅ Optimal stability - 6 parallel single-connection uploads
- ✅ Tested: 42,801 files uploaded with 100% success rate
📝 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! 🚀

