{"id":51174701,"url":"https://github.com/nathanneurotic/ps2-servers","last_synced_at":"2026-07-01T05:01:08.167Z","repository":{"id":367350779,"uuid":"1279960221","full_name":"NathanNeurotic/PS2-Servers","owner":"NathanNeurotic","description":"Multi-Platform Support for SMBv1, UDPBD, and UDPFS servers for Playstation 2 homebrew, such as OPL.","archived":false,"fork":false,"pushed_at":"2026-06-25T16:38:49.000Z","size":1344,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-25T17:09:23.811Z","etag":null,"topics":["aio","loader","open","playstation","ps2","py","server","smb","smbv1","udpbd","udpfs"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NathanNeurotic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://cash.app/$nathanneurotic","https://www.paypal.me/NathanEvans/"]}},"created_at":"2026-06-25T06:39:26.000Z","updated_at":"2026-06-25T16:45:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/NathanNeurotic/PS2-Servers","commit_stats":null,"previous_names":["nathanneurotic/ps2-servers"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/NathanNeurotic/PS2-Servers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NathanNeurotic%2FPS2-Servers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NathanNeurotic%2FPS2-Servers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NathanNeurotic%2FPS2-Servers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NathanNeurotic%2FPS2-Servers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NathanNeurotic","download_url":"https://codeload.github.com/NathanNeurotic/PS2-Servers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NathanNeurotic%2FPS2-Servers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34993438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aio","loader","open","playstation","ps2","py","server","smb","smbv1","udpbd","udpfs"],"created_at":"2026-06-27T03:01:59.530Z","updated_at":"2026-07-01T05:01:08.161Z","avatar_url":"https://github.com/NathanNeurotic.png","language":"Python","funding_links":["https://cash.app/$nathanneurotic","https://www.paypal.me/NathanEvans/"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"ps2serversgithubbanner.png\" alt=\"PS2 Servers\" width=\"820\"\u003e\n\u003c/p\u003e\n\n# PS2-Servers\n\nNetwork servers for loading PlayStation 2 games and apps over a LAN with\n[Open PS2 Loader](https://github.com/ps2homebrew/Open-PS2-Loader) (OPL) and forks —\nplus a small **GUI launcher** so anyone can run them without touching a terminal.\n\n## Quick start — the launcher\n\nThe launcher lets you pick a server, choose your games folder, and click **Start**.\nIt detects your PC's LAN IP and shows the exact settings to enter in OPL.\n\n- **Packaged app (no Python needed):** download the release for your OS.\n  **On Windows, prefer the folder build** — unzip\n  `PS2Servers-windows-x64-folder.zip` and run **`PS2Servers.exe`** from inside\n  the folder. It is the same app, but without the self-extracting wrapper that\n  makes the single-file `.exe` trip antivirus heuristics, so it comes up clean.\n  A single-file `PS2Servers-windows-x64.zip` is still provided for convenience\n  if your AV doesn't object. (Linux: `PS2Servers-linux-x64`, or\n  `PS2Servers-linux-x64-folder.tar.gz` if `/tmp` is mounted `noexec`.)\n- **From source:** double-click **`Start-Launcher.bat`** (Windows) or run\n  `./start-launcher.sh` (Linux/macOS). Requires Python 3.\n\nThe launcher starts normally without administrator rights. The GUI shows whether\nit is currently running as administrator and includes a **Restart as administrator**\nbutton for the few Windows setup actions that actually need elevation.\n\nThe GUI uses a lightweight PS2-themed Tkinter skin. It does not use Electron,\nQt, a browser view, or any heavy UI framework.\n\n## Windows security note\n\nPS2 Servers is an unsigned open-source network tool. Because it runs local server\nprocesses and may ask Windows Firewall to allow inbound LAN traffic, some\nantivirus products may flag the packaged Windows EXE heuristically.\n\nThe SMBv1/RiptOPL server does **not** enable Windows' built-in SMB1 optional\nfeature tree. It speaks the OPL-compatible SMB1/CIFS subset itself and normally\nlistens on custom TCP port `1111`; OPL connects to this program directly. (Avoid\nports below 1033 — Windows can reserve or block low ports.)\n\nWindows setup is intentionally narrow:\n\n- no automatic enabling of Windows SMB1;\n- no disabling of SMB1 automatic removal;\n- Windows Firewall changes are limited to rules named `PS2 Servers - ...`;\n- firewall allow/cleanup can be handled from the GUI without a terminal;\n- administrator rights are requested only for firewall changes or advanced port\n  `445` mode;\n- advanced port `445` mode is optional and temporarily pauses Windows File\n  Sharing only while that server mode is running.\n\nNormal custom-port SMB mode, UDPFS, UDPBD, folder browsing, and logs do not need\nthe whole launcher to run as administrator. Keeping the default launch non-admin\nreduces the blast radius of bugs and keeps the app easier to trust.\n\nIf a download is flagged, the antivirus statement\n([docs/antivirus-transparency.md](docs/antivirus-transparency.md) — styled web\nversion at [docs/falsepositives.html](docs/falsepositives.html)) explains exactly\nwhy heuristics fire, what the app does and does not do, how to verify a download,\nand how to report a false positive to each vendor. A non-self-extracting\n**folder** build is offered as an alternative download for AV-wary users.\n\nSee [SECURITY.md](SECURITY.md) for verification, cleanup, and reporting details.\nSee [docs/antivirus-transparency.md](docs/antivirus-transparency.md) for the\npublic antivirus false-positive review note, stable release identity, ports,\nfirewall behavior, and uninstall/cleanup details.\n\n## What's inside\n\nAll three servers are pure-Python (standard library) and run on Windows, Linux and macOS.\n\n| Folder | Server | What it does |\n|--------|--------|--------------|\n| [`smbv1_server/`](smbv1_server/) | **SMBv1 (RiptOPL)** | Shares a games folder over SMB — works even on Windows 11 where the OS removed SMB1. |\n| [`udpfs_server/`](udpfs_server/) | **UDPFS** | Serves a folder and/or disk image over UDP; can transparently decompress CHD/CSO/ZSO. |\n| [`udpbd_server/`](udpbd_server/) | **UDPBD** | Serves a disk image as a block device over UDP; the PS2 auto-discovers it. |\n\n`udpbd_server/udpbd_server.py` is a pure-Python port of Rick Gaiser's UDPBD server —\nsee [its provenance](udpbd_server/SOURCE.md). UDPBD has largely been superseded by UDPFS.\n\nUDPFS can transparently decompress CHD/CSO/ZSO images. How that support is bundled\nin releases and provided in source mode is documented in\n[docs/optional-compression-dependencies.md](docs/optional-compression-dependencies.md).\n\nWant a UDPFS server without Python (handy on low‑end hardware, or to avoid antivirus\nfalse positives on packaged builds)? **[udpfsd](https://github.com/pcm720/udpfsd)** by\npcm720 is a Go alternative — a single prebuilt binary with the same CHD/CSO/ZSO\nsupport. See [Credits \u0026 thanks](#credits--thanks).\n\n## Run a server on its own (terminal)\n\nEach server still runs standalone, and the launcher can run them too:\n\n```sh\npython smbv1_server/smbserver_opl.py --share games=D:/PS2Games\npython udpfs_server/udpfs_server.py  -d D:/PS2Games --enable-compression\npython udpbd_server/udpbd_server.py  D:/PS2Games/game.iso\n# or, via the launcher engine:\npython -m launcher --serve udpfs -d D:/PS2Games\npython -m launcher --list            # show servers available on this machine\n```\n\n## Build the packaged app\n\n[Nuitka](https://nuitka.net) bundles the launcher and all three servers into one\nexecutable per OS — no Python install required for the end user:\n\n```sh\npython -m pip install -r requirements-build.txt\npython build/build.py            # -\u003e dist/PS2Servers(.exe)\n```\n\n## Release verification\n\nAutomatic releases (built on every push to `main`) include `SHA256SUMS.txt`, a\nportable source ZIP, and GitHub artifact attestations for the packaged assets.\nTagged `vX.Y.Z` releases include a per-asset `\u003casset\u003e.sha256.txt` checksum file\nplus attestations. Example verification (automatic-release assets):\n\n```sh\nsha256sum -c SHA256SUMS.txt\ngh attestation verify PS2Servers-windows-x64.zip -R NathanNeurotic/PS2-Servers\n```\n\nChecksums prove the file was downloaded intact. Attestations prove build\nprovenance. Neither is a magic safety certificate. Because the app is plain\nPython and `build/build.py` rebuilds the release from source (single-file or\n`PS2_BUILD_MODE=standalone` folder build), the lowest-trust path is to inspect\nthe source and build/run it yourself — see\n[docs/antivirus-transparency.md](docs/antivirus-transparency.md) for the full\nverification, \"build it yourself\", and false-positive-reporting guide.\n\n## Status\n\nThe UDPBD port is validated by `udpbd_server/selftest.py` at the protocol level\n(INFO/READ/WRITE byte-for-byte). As with the SMBv1 server, **final validation is on\nreal hardware** — an actual PS2 running OPL, or PCSX2 with a network adapter.\n\n## Legal \u0026 responsible use\n\nPlease read this before using PS2 Servers.\n\n- **Your content, your responsibility.** PS2 Servers is a general-purpose file\n  server. It ships **no games and no copyrighted content** — it only serves files\n  *you* point it at, from *your* PC. You are solely responsible for ensuring you\n  have the legal right to use, copy, and serve any games, disc images, saves, or\n  other files, and for complying with the laws of your jurisdiction. This project\n  does not condone or facilitate copyright infringement; the intended use is with\n  homebrew and with backups of media you legally own.\n- **Not affiliated with Sony.** \"PlayStation\", \"PlayStation 2\", and \"PS2\" are\n  trademarks of Sony Interactive Entertainment. This is an independent, unofficial\n  fan/homebrew project with no affiliation, sponsorship, or endorsement from Sony,\n  the Open PS2 Loader team, or any other rights holder. See [`NOTICE.md`](NOTICE.md).\n- **Trusted networks only.** The servers are unauthenticated (guest) and designed\n  for a private home LAN. Do not expose them to the internet or run them on\n  untrusted networks.\n- **Data-loss risk.** Writable modes let the PlayStation 2 write to the folders and\n  disc images you share (saves, VMC). Keep backups; use `--read-only` if you want a\n  strictly read-only share.\n- **No warranty.** PS2 Servers is provided **\"as is\", without warranty of any\n  kind**, and the authors' liability is limited, as set out in the Academic Free\n  License 3.0 (see §7 \"Disclaimer of Warranty\" and §8 \"Limitation of Liability\" in\n  [`LICENSE`](LICENSE)). You use it at your own risk.\n\n## License and notices\n\nPS2 Servers is licensed under the **Academic Free License 3.0 (AFL-3.0)**. See\n[`LICENSE`](LICENSE).\n\nThis repository also includes third-party notices and provenance details in\n[`NOTICE.md`](NOTICE.md), including the redistributed Neutrino UDPFS server,\nUDPBD protocol references, optional compression libraries, build tooling, and\ntrademark notes.\n\n## Credits \u0026 thanks\n\nThis is a fan project that stands entirely on the shoulders of the PS2 homebrew\ncommunity. None of the clever parts are ours — we just wrapped brilliant existing\nwork in something click‑and‑go. With genuine gratitude:\n\n- **Rick Gaiser — [@rickgaiser](https://github.com/rickgaiser)** — the heart of all\n  of this. He designed the **UDPBD** and **UDPFS** network protocols and wrote the\n  original servers, alongside **[Neutrino](https://github.com/rickgaiser/neutrino)**.\n  [`udpfs_server/udpfs_server.py`](udpfs_server/udpfs_server.py) is his UDPFS server\n  (from Neutrino's `pc/` host tools), and\n  [`udpbd_server/udpbd_server.py`](udpbd_server/udpbd_server.py) is our independent\n  Python re‑implementation of his UDPBD v2 protocol. The network game‑loading here\n  simply does not exist without his work — thank you.\n- **pcm720 — [@pcm720](https://github.com/pcm720)** — a core Neutrino contributor and\n  author of **[udpfsd](https://github.com/pcm720/udpfsd)**, a UDPFS server written in\n  Go. If you'd rather not run our Python UDPFS server — e.g. on a low‑end device, or\n  to sidestep the antivirus heuristics that hit unsigned packaged Python builds —\n  udpfsd is an excellent no‑Python alternative: one standalone binary, prebuilt for\n  Windows, macOS, and low‑end ARM/MIPS targets, with the same transparent CHD/CSO/ZSO\n  decompression. Thanks as well for generously taking the time to vet the\n  network‑boot docs. 🙏\n- **El_isra — [@israpps](https://github.com/israpps)** — maintains the canonical\n  **[udpbd-server](https://github.com/israpps/udpbd-server)** on GitHub (Rick's code,\n  with CI), which is the reference we ported from.\n- **Alex Parrado** — the Windows port of udpbd-server.\n- **[Open PS2 Loader](https://github.com/ps2homebrew/Open-PS2-Loader)** and the\n  **[ps2homebrew](https://github.com/ps2homebrew)** team — the loader everything here\n  serves, and the wider toolchain that makes PS2 homebrew possible.\n- **[prodeveloper0/pyudpbd](https://github.com/prodeveloper0/pyudpbd)** — a pure‑Python\n  UDPBD port we read while writing our own.\n- The folks behind **CHD ([libchdr](https://github.com/rtissera/libchdr) / MAME)**,\n  **CSO**, and **ZSO** — the compressed‑image formats UDPFS decompresses on the fly.\n\n### What's original here\n\nThe **GUI launcher**, the **RiptOPL** SMBv1 server, and the **pure‑Python UDPBD port**\nwere written for this repo. Everything at the protocol level is the community's —\nwe reimplemented from public protocols/source (rather than copying code) where we\ncould, and tried to attribute accurately.\n\n### To the authors above 🙏\n\nThis exists out of appreciation for what you've given the PS2 scene, not any sense of\nownership. If you'd like attribution changed, a link corrected, or your work removed\nfrom this repo entirely, please [open an issue](../../issues) — we'll sort it out\nright away, no questions asked. Thank you, sincerely.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathanneurotic%2Fps2-servers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnathanneurotic%2Fps2-servers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathanneurotic%2Fps2-servers/lists"}