An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          


PS2 Servers

# 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.