https://github.com/nathanneurotic/ps2-servers
Multi-Platform Support for SMBv1, UDPBD, and UDPFS servers for Playstation 2 homebrew, such as OPL.
https://github.com/nathanneurotic/ps2-servers
aio loader open playstation ps2 py server smb smbv1 udpbd udpfs
Last synced: about 12 hours ago
JSON representation
Multi-Platform Support for SMBv1, UDPBD, and UDPFS servers for Playstation 2 homebrew, such as OPL.
- Host: GitHub
- URL: https://github.com/nathanneurotic/ps2-servers
- Owner: NathanNeurotic
- Created: 2026-06-25T06:39:26.000Z (2 days ago)
- Default Branch: main
- Last Pushed: 2026-06-25T16:38:49.000Z (2 days ago)
- Last Synced: 2026-06-25T17:09:23.811Z (2 days ago)
- Topics: aio, loader, open, playstation, ps2, py, server, smb, smbv1, udpbd, udpfs
- Language: Python
- Homepage:
- Size: 1.28 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PS2-Servers
Network servers for loading PlayStation 2 games and apps over a LAN with
[Open PS2 Loader](https://github.com/ps2homebrew/Open-PS2-Loader) (OPL) and forks —
plus a small **GUI launcher** so anyone can run them without touching a terminal.
## Quick start — the launcher
The launcher lets you pick a server, choose your games folder, and click **Start**.
It detects your PC's LAN IP and shows the exact settings to enter in OPL.
- **Packaged app (no Python needed):** double-click **`PS2Servers`** (`.exe` on
Windows) — see [Build the app](#build-the-single-file-app) to produce it.
- **From source:** double-click **`Start-Launcher.bat`** (Windows) or run
`./start-launcher.sh` (Linux/macOS). Requires Python 3.
## Windows security note
PS2 Servers is an unsigned open-source network tool. Because it runs local server
processes and may ask Windows Firewall to allow inbound LAN traffic, some
antivirus products may flag the packaged Windows EXE heuristically.
The SMBv1/RiptOPL server does **not** enable Windows' built-in SMB1 optional
feature tree. It speaks the OPL-compatible SMB1/CIFS subset itself and normally
listens on custom TCP port `1445`; OPL connects to this program directly.
Windows setup is intentionally narrow:
- no automatic enabling of Windows SMB1;
- no disabling of SMB1 automatic removal;
- Windows Firewall changes are limited to rules named `PS2 Servers - ...`;
- a cleanup script is provided at `tools/remove-windows-firewall-rules.ps1`;
- advanced port `445` mode is optional and temporarily pauses Windows File
Sharing only while that server mode is running.
See [SECURITY.md](SECURITY.md) for verification, cleanup, and reporting details.
## What's inside
All three servers are pure-Python (standard library) and run on Windows, Linux and macOS.
| Folder | Server | What it does |
|--------|--------|--------------|
| [`smbv1_server/`](smbv1_server/) | **SMBv1 (RiptOPL)** | Shares a games folder over SMB — works even on Windows 11 where the OS removed SMB1. |
| [`udpfs_server/`](udpfs_server/) | **UDPFS** | Serves a folder and/or disk image over UDP; can transparently decompress CHD/CSO/ZSO. |
| [`udpbd_server/`](udpbd_server/) | **UDPBD** | Serves a disk image as a block device over UDP; the PS2 auto-discovers it. |
`udpbd_server/udpbd_server.py` is a pure-Python port of Rick Gaiser's UDPBD server —
see [its provenance](udpbd_server/SOURCE.md). UDPBD has largely been superseded by UDPFS.
## Run a server on its own (terminal)
Each server still runs standalone, and the launcher can run them too:
```sh
python smbv1_server/smbserver_opl.py --share games=D:/PS2Games
python udpfs_server/udpfs_server.py -d D:/PS2Games --enable-compression
python udpbd_server/udpbd_server.py D:/PS2Games/game.iso
# or, via the launcher engine:
python -m launcher --serve udpfs -d D:/PS2Games
python -m launcher --list # show servers available on this machine
```
## Build the single-file app
[Nuitka](https://nuitka.net) bundles the launcher and all three servers into one
executable per OS — no Python install required for the end user:
```sh
python -m pip install -r requirements-build.txt
python build/build.py # -> dist/PS2Servers(.exe)
```
## Release verification
Automatic releases include `SHA256SUMS.txt`, a portable source ZIP, and GitHub
artifact attestations for the packaged assets. Example verification:
```sh
sha256sum -c SHA256SUMS.txt
gh attestation verify PS2Servers-windows-x64.exe -R NathanNeurotic/PS2-Servers
```
Checksums prove the file was downloaded intact. Attestations prove build
provenance. Neither is a magic safety certificate; if you want the lowest-trust
path, inspect and run from source.
## Status
The UDPBD port is validated by `udpbd_server/selftest.py` at the protocol level
(INFO/READ/WRITE byte-for-byte). As with the SMBv1 server, **final validation is on
real hardware** — an actual PS2 running OPL, or PCSX2 with a network adapter.
## Credits & thanks
This is a fan project that stands entirely on the shoulders of the PS2 homebrew
community. None of the clever parts are ours — we just wrapped brilliant existing
work in something click‑and‑go. With genuine gratitude:
- **Rick Gaiser — [@rickgaiser](https://github.com/rickgaiser)** — the heart of all
of this. He designed the **UDPBD** and **UDPFS** network protocols and wrote the
original servers, alongside **[Neutrino](https://github.com/rickgaiser/neutrino)**.
[`udpfs_server/udpfs_server.py`](udpfs_server/udpfs_server.py) is his UDPFS server
(from Neutrino's `pc/` host tools), and
[`udpbd_server/udpbd_server.py`](udpbd_server/udpbd_server.py) is our independent
Python re‑implementation of his UDPBD v2 protocol. The network game‑loading here
simply does not exist without his work — thank you.
- **El_isra — [@israpps](https://github.com/israpps)** — maintains the canonical
**[udpbd-server](https://github.com/israpps/udpbd-server)** on GitHub (Rick's code,
with CI), which is the reference we ported from.
- **Alex Parrado** — the Windows port of udpbd-server.
- **[Open PS2 Loader](https://github.com/ps2homebrew/Open-PS2-Loader)** and the
**[ps2homebrew](https://github.com/ps2homebrew)** team — the loader everything here
serves, and the wider toolchain that makes PS2 homebrew possible.
- **[prodeveloper0/pyudpbd](https://github.com/prodeveloper0/pyudpbd)** — a pure‑Python
UDPBD port we read while writing our own.
- The folks behind **CHD ([libchdr](https://github.com/rtissera/libchdr) / MAME)**,
**CSO**, and **ZSO** — the compressed‑image formats UDPFS decompresses on the fly.
### What's original here
The **GUI launcher**, the **RiptOPL** SMBv1 server, and the **pure‑Python UDPBD port**
were written for this repo. Everything at the protocol level is the community's —
we reimplemented from public protocols/source (rather than copying code) where we
could, and tried to attribute accurately.
### To the authors above 🙏
This exists out of appreciation for what you've given the PS2 scene, not any sense of
ownership. If you'd like attribution changed, a link corrected, or your work removed
from this repo entirely, please [open an issue](../../issues) — we'll sort it out
right away, no questions asked. Thank you, sincerely.