△◯✕□ PS2 Servers DOCS
Downloads GitHub

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.

3. UDPFS Packet Structure

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.