Protocol Compatibility & Wire Specs
In-depth technical breakdown of protocol implementations across Desktop/Core (Python) and Edge (Go), packet-level wire specifications, and homebrew client support matrix.
Specification Parity
PS2 Servers maintains 100% wire-protocol parity with canonical specifications: the
udpfsd specification by pcm720, the
UDPBD block driver specification, and the Microsoft SMBv1 / SMB2 / SMB3 network contracts.
1. Console Homebrew Compatibility Matrix
Loader support varies by project and version. Review this matrix to match your loader to the correct server mode:
| Loader / Application |
SMBv1 |
SMB2 / SMB3 |
UDPFS |
UDPBD |
HTTP |
| RiptOPL |
Full Support |
Full Support |
Full Support |
Full Support |
Full Support |
| Official OPL (ps2homebrew) |
Full Support |
Not in stock |
Not in stock |
Not in stock |
Not in stock |
| Neutrino (Core) |
via SMB module |
No |
Native Primary |
Native Primary |
No |
| NHDDL (Neutrino GUI) |
No |
No |
Native Primary |
Native Primary |
No |
| Open-PS2-Loader-HTTP (Docmine17) |
No |
No |
No |
No |
Native Primary |
2. Core (Python) vs Edge (Go) Wire Differences
While both implementations produce compatible network flows, they differ in several low-level operational details:
Socket Binding Semantics
- Core (Python): Passing
--bind IP binds only the dynamically allocated data socket; the discovery listener continues to listen on 0.0.0.0 (all interfaces) to catch broadcasts.
- Edge (Go): Passing
--bind IP binds both the discovery socket and the data socket to that explicit IP.
CSO/ZSO Cache Architectures
- Core (Python): Relies on OS page cache and Python's memory view slices for sector buffering.
- Edge (Go): Implements an explicit, fixed-size ring cache for decompressed sector blocks, maintaining predictable sub-20MB memory ceilings on embedded routers.
UDPFS packets start with a fixed 16-byte header:
+----------------+----------------+----------------+----------------+
| Magic (0xF5F6) | Command (16b) | Sequence (32b) | Length (32b) |
+----------------+----------------+----------------+----------------+
| File Handle / Session ID (32b) | Payload Data (0 - 4096 bytes) |
+---------------------------------+---------------------------------+
Commands include OPEN, READ, WRITE, CLOSE, READDIR, and STAT. Standard mode limits payload frames to 4096 bytes, aligning cleanly with the PS2 IOP's network buffer allocations.