△◯✕□ RiptOPL DOCS
Downloads GitHub
This is the legacy version of RiptOPL. We have moved over to ps2build's C++ Edition at NathanNeurotic/RiptOPL, where new development now happens.

Network Boot (SMB / UDP)

UDPFS and UDPBD stream PS2 games from a PC. They launch through Neutrino by default; UDPBD and UDPFS games (Files and IMG) can also run on OPL's own core, per game. Set Network Connectivity (Off / Manual / Auto) in Game Sources and choose the Protocol indented under it (the same row is on the Network page). The picker contains SMB / UDPFS / UDPBD / HTTP. SMB and HTTP use OPL's own core; HTTP has separate setup and limits.

Four rows, Off by default
The old Network Boot ON/OFF toggle and the separate Net Boot Protocol picker are retired placeholders. The network is now four rows. Network Connectivity, on Game Sources, is an Off / Manual / Auto start mode and defaults to Off (no network device). Protocol chooses SMB / UDPFS / UDPBD / HTTP; it sits indented under Network Connectivity on Game Sources and on the Network page, as one setting. Access, on the Network page, qualifies the chosen protocol (for SMB, SMB Version picks SMBv1 or SMB2). Turning Connectivity Off keeps your protocol for when you turn it back on. UDPFS needs a static PS2 IP and a matching PC-side server. Pick a protocol only when you have those pieces in place. Local devices (USB / internal HDD / MMCE) are independent and browse alongside whichever network protocol you choose.

The Network rows

Game Sources holds Network Connectivity with Protocol indented under it. Network holds the same Protocol row, plus SMB Version and Access. SMB Version (SMBv1 / SMB2) is editable for SMB. Access is Files/IMG for UDPFS, locked to Files for SMB/HTTP and IMG for UDPBD. The first protocol can start while the NIC is unused; switching an already loaded protocol requires restarting RiptOPL.

ChoiceWire protocolOn the PS2PC serverCore
Off — no network device (default) — —
SMB SMBv1 or SMB2 on OPL's core (Network → SMB Version; default SMBv1); SMB 3.0 on TCP 445 on the Neutrino core a mounted file share PS2 Servers (recommended) / Samba OPL's own core; Neutrino per game or by global Loader Core (experimental, SMB through Neutrino)
UDPFS UDPRDMA a games source served over UDP — a filesystem (udpfs:, loose ISOs) or a block device (massN:, disk image), set by Access below PS2 Servers (recommended, PC) / udpfs-server (Android) / udpfsd Neutrino by default, <OPL> per game (Files and IMG)
UDPBD SUDPBDv2 a served disk image mounted as massN: PS2 Servers (recommended) / udpbd-server Neutrino by default, <OPL> per game
HTTPHTTP byte rangesgames.csv catalog and ISO streamsServer meeting the client profileOPL core; hardware validation pending
PS1 network libraries
UDPFS Files lists uppercase POPS/*.VCD and POPS/*.cue games alongside Ember titles and can automatically equip Okeanos's .udpfs pair. The POPSTARTER driver (UDPFS Assault TEST pre-release) reads every POPS file, builds a VCD from a cue sheet on the fly and writes VMC saves on the server, with no USB device involved, so the server must allow writes. The VCD handoff has not been tested on a real console. UDPBD and UDPFS IMG remain Ember-only for PS1. See POPS UDPFS setup.
Apply and retry without leaving the page
Confirming Network Settings applies the current values and begins a new connection attempt immediately. If a router or server was slow and the page reports a failed connection, press Select / Refresh on that network page to retry it; reopening settings or saving every setting is no longer required.

UDPFS is the one modern network-boot protocol (Rick Gaiser's UDPRDMA transport). It comes in two shapes, chosen with the Access row (see the comparison below): Files (the udpfs_ioman filesystem, loose ISOs) or IMG (the udpfs_bd block device, a served disk image). It has no DHCP client and needs a static PS2 IP; if neutrino.elf is missing at launch, OPL warns and returns to the menu.

UDPBD vs UDPFS — pick by your PC server
UDPBD (the older SUDPBDv2 udpbd.irx protocol) is a first-class fourth choice, not retired — it is kept because SUDPBDv2 is wire-incompatible with UDPRDMA (UDPBD speaks port 0xBDBD via udpbd-server; UDPFS speaks 0xF5F6 via udpfsd), so users still running the old udpbd-server must be able to keep selecting it. A config saved as UDPBD stays UDPBD — RiptOPL never silently migrates you off it. If you are setting up fresh, UDPFS can serve loose ISOs as well as disk images. See the format limits below before relying on server-side decompression.
UDPBD, UDPFS and SMB work on a real PS2
All three have launched games on real hardware from PS2 Servers. The UDPBD test (2026-09-26, Kingdom Hearts) used every Neutrino setting at its default — Neutrino Path blank (RiptOPL found neutrino.elf inside the served image) and no per-game filesystem or arguments. For an ordinary FAT/exFAT image with your games in DVD/, leave the game's Neutrino Filesystem on Auto: bd treats the whole block device as the disc, which only fits a server exporting a single raw ISO.

SMB Version

When Protocol = SMB, the SMB Version row selects the dialect OPL's core speaks: SMBv1 (the default) or SMB2 (SMB 2.0.2 or 2.1). It applies to both halves of SMB, browsing the share from the menu and reading the game in game. The row is greyed unless Protocol is SMB, and its value is kept while greyed. SMB 3.x is not offered on OPL's core. The server must speak the dialect you pick: an SMBv1-only server lists nothing under SMB2, and an SMB2/3-only server lists nothing under SMBv1. A game on the Neutrino core does not use this row: Neutrino logs in with its own SMB 3.0 client on TCP 445 (see SMB through Neutrino).

Switching protocols with saved settings

UDPFS remembers its own Files/IMG choice independently of UDPBD, which always uses IMG. Switching to UDPBD and back should restore your previous UDPFS choice; a fresh configuration defaults to Files. Set Access on the Network page and make sure the PC server serves the matching folder or disk image.

Once a network driver has loaded, changing its protocol or UDPFS Access requires a restart. If restarting the application leaves the old connection active or the new protocol unavailable, fully restart the console and relaunch RiptOPL with the saved settings. Deleting your configuration is not the normal way to apply a protocol change. For a report, record both the old and new protocol, UDPFS Access, whether you restarted the application or console, and the server version.

Access — Files vs IMG

The Access row is on Settings → Network, alongside Protocol. Game Sources shows Connectivity and Protocol, but no Access row. Access is only free to change while Protocol = UDPFS — under SMB it is value-locked to Files and under UDPBD to IMG, greyed in both cases. Its two values are Files (default) and IMG. They are the same UDPFS protocol in two shapes: Files is the udpfs_ioman filesystem (udpfs:), IMG is the udpfs_bd block device (massN:).

Files (default)IMG
IOP driverudpfs_ioman.irx → udpfs: (filesystem)udpfs_bd.irx → massN: (block device)
PC servesa folder containing CD/ and DVD/ subfolders of ISOs (the standard OPL layout — OPL lists from <served>/CD + <served>/DVD, not the folder root)a FAT/exFAT disk image
Server commandudpfsd -fsroot <dir>udpfsd -bdpath <image>
Launchby name (-dvd=udpfs:<name>, stock -bsd=udpfs) — no massN:, no fragment listmounted like a USB drive (massN:, fragment-list launch)
Add a gamedrop it into the served CD/ or DVD/ foldermount the image, copy, unmount
Compressionserver-dependent virtual ISO exposure (see the format limits below)— (raw sectors only)

Both ride the same UDPRDMA transport and the same server — pcm720/udpfsd, a single prebuilt Go binary (no Python) that serves both; just pass -fsroot <dir> for Files (the filesystem) or -bdpath <image> for IMG (the block image).

No PC on the network? udpfs-server by YouKnow-sys is an Android app that serves the same thing from a phone or tablet — folders or disk images, so it covers both Files and IMG. It is found by broadcast, so there is no server address to type in on the console, and it works over a router or a direct cable. Built on the same udpfsd underneath; MIT licensed.

Whichever server you use, a UDPBD-only udpbd-server (SUDPBDv2) will not talk to either backend. Because both backends bind the same UDPRDMA port and the IOP can load only one per boot, you can't run both at once — Files vs IMG is a config-time choice, and switching between them needs an OPL restart to take effect (OPL shows the usual restart-to-apply notice).

So why offer both Files and IMG?

They're the same protocol but a genuinely different workflow. Files is the lower-friction, "modern" model (loose ISOs, drop-in, server-dependent virtual ISO exposure (see the format limits below) compression) and matches how NHDDL and pcm720's server are designed. IMG reuses OPL's existing massN: block pipeline (a disk image the PS2 mounts with its own FAT/exFAT drivers) — handy if you already keep a block image or want the exact same shape as USB/HDD. Pick whichever fits how you store your games. (If you already run the old udpbd-server, that's a separate UDPBD choice — see above — not a UDPFS mode.)

Which PC-side UDPFS server do I run?

The RiptOPL release ships Neutrino as a drag-and-drop neutrino/ folder, but it does not embed PC server software. Open PS2-Servers.url from the package or visit PS2 Servers for the maintained UDPFS / SMBv1 / UDPBD all-in-one launcher, then choose UDPFS and follow its protocol-specific settings. Advanced users can instead run pcm720/udpfsd directly: pass -fsroot <dir> for Files or -bdpath <image> for IMG. The standalone udpbd-server speaks SUDPBDv2 and does not work with UDPFS; use it only with the separate Protocol = UDPBD choice.

Why does UDPFS IMG need a private bsd-udpfsbd.toml when a stock bsd-udpfs.toml exists?

The -bsd token is just a config filename: at game boot Neutrino loads config/bsd-<token>.toml, and the toml's body picks the IOP driver. Stock Neutrino already ships a bsd-udpfs.toml whose body is the FHI filesystem driver (udpfs_ioman / udpfs_fhi, no i_bdm, registers no massN: block device). The Files mode uses that stock token as-is — -bsd=udpfs, opening the game -dvd=udpfs:<name> by name.

The IMG mode needs the block-device body instead (udpfs_bd.irx, i_bdm → massN:) because that launch hands Neutrino -dvd=massN:. Neutrino ships udpfs_bd.irx but no built-in -bsd token for it, so RiptOPL auto-injects config/bsd-udpfsbd.toml into the bundled Neutrino folder at build time and emits -bsd=udpfsbd. The private name is deliberate — bsd-udpfsbd.toml will not collide with stock's bsd-udpfs.toml (a different driver), so the block config and the stock filesystem config coexist on one Neutrino install. If you assembled Neutrino yourself, copy neutrino/bsd-udpfsbd.toml from the RiptOPL source tree into your neutrino/config/ folder.

Requirements

Selecting a network protocol

Set a static IP on the PS2 (UDPFS and UDPBD)

For UDPFS (either access mode) or UDPBD, go to Settings → Network and set a fixed IP address, subnet mask, and gateway. You do not have to turn DHCP off: selecting either UDP protocol locks IP Address Type to Static, and if you use DHCP for SMB or HTTP that choice is kept and comes back when you switch protocol. The UDP IOP modules read this address at module-load time and have no way to acquire a lease later.

Pick your Network Protocol (and Access)

In Settings → Game Sources, set Network Connectivity to Manual or Auto, and set the Protocol under it (or on Settings → Network) to SMB, UDPFS, UDPBD or HTTP. Set Network Connectivity back to Off to disable networking; the protocol is kept for when you turn it back on. When Protocol = SMB, pick the SMB Version: SMBv1 (default) or SMB2. The Access row (Files / IMG) is always present, but it is only free to change under UDPFS: under SMB it is locked to Files and under UDPBD to IMG, greyed in both cases. Because the PS2 has a single NIC, choosing one excludes the others automatically. Save settings. When UDPFS is selected, SMB's server / port / share / credentials fields on the Network page are hidden automatically. Switching between Files and IMG needs an OPL restart to take effect (only one UDPFS backend can bind the transport per boot).

Start the PC server

Open PS2-Servers.url from the RiptOPL package or visit PS2 Servers. In its all-in-one launcher, choose the server that matches RiptOPL's Protocol row: SMBv1 server (RiptOPL), UDPFS, or UDPBD. Select the games folder or disk image, click Start, and follow the protocol-specific settings the launcher displays.

Advanced: run pcm720/udpfsd directly

For UDPFS only, advanced users can run pcm720/udpfsd in the mode that matches the chosen access mode. Files serves a directory containing CD/ and DVD/ subfolders; IMG serves a FAT/exFAT disk image.

# UDPFS Files — a folder with CD/ and DVD/ subfolders of ISOs
udpfsd -fsroot /path/to/games            # Files   (Linux/macOS)
udpfsd.exe -fsroot C:\path\to\games      # Files   (Windows)

# UDPFS IMG — a served FAT/exFAT disk image
udpfsd -bdpath /path/to/games.img        # IMG   (Linux/macOS)
udpfsd.exe -bdpath C:\path\to\games.img  # IMG   (Windows)

Boot the PS2 and find your games

RiptOPL loads the IOP module as soon as it starts. UDPFS Files mounts the udpfs: filesystem; UDPFS IMG mounts the served image as massN:. Your games appear in the UDPFS games list. Select a game and launch it — Neutrino is invoked automatically unless the game's Loader Core is <OPL>; SMB boots through OPL's own core.

Which core runs a network game

UDPBD and UDPFS (Files and IMG) launch via Neutrino by default, even when the global Default Loader Core is <OPL>. Set a game's Loader Core to <OPL> to run it on OPL's own core instead (ported from YAOPL). The selector stays open, and its Default entry means Neutrino on these tabs. If the Neutrino launch cannot start (no neutrino.elf, a .zso image, too many fragments), the game falls back to the OPL core; a missing or unwritable bsd toml still returns to the menu with its message.

On the OPL core the game keeps the network: after the IOP reset OPL reloads the same block driver the menu used, gives it the static PS2 IP from Settings → Network, and fakes the game's own DEV9 and SMAP modules. There is no RetroAchievements telemetry and no in-game UDPTTY on that path. UDPBD reads at most 16 KiB per request. If the block driver does not start, the screen blinks red and the console stops instead of hanging on black. Not tested on hardware yet.

UDPFS Files on the OPL core (RiptOPL #161, Open-PS2-Loader #1134) follows Neutrino's own design. The menu opens the game's ISO on the server and keeps it open across the IOP reset; in game OPL loads udpfs_smap, udpfs_ministack and udpfs_fhi, which finds the server again and reads that open file. The game waits up to 30 seconds for the server at start and retries a read after a dropped connection. VMCs work and save to the server: each card is opened read-write and kept open the same way, and a card the server will not open for writing (read-only share, file already open) offers the usual prompt to continue without it. If the PC server is restarted while a game runs, the game cannot reopen its files; restart the game (Neutrino has the same limit). Not tested on hardware yet.

SMB is different: it is served by OPL's own core, needs no Neutrino, and behaves like the classic OPL network share. See SMB (network share).

Per-game settings still work
UDPFS games support the full per-game settings screen in its Neutrino-aware mode: compat modes 1/2/3/5 (mapped to -gc), mode 7 (fix IOP buffer overrun, -gc=7), the Neutrino Video picker (-gsm), VMC, and free-text Neutrino Launch Args. OPL-core-only panels (GSM, PADEMU, OSD Language) show a "not used with the Neutrino core" notice. Text cheats use the same selection UI when the installed Neutrino runtime supports them; cheat images remain native-only. See Per-game Settings and Neutrino Core for details.

One NIC, one transport — how the four rows interlock

The PS2 has a single Ethernet adapter (SMAP), and every network transport — SMB, UDPFS and UDPBD — loads a SMAP driver on it. Only one can own the adapter at a time, so RiptOPL exposes them as mutually exclusive values of one Protocol row rather than independent toggles. That replaces the old model, where a separate Network Boot toggle and an Ethernet (SMB) mode had to be greyed against each other. Network Connectivity decides whether the stack starts at all, and on the Network page the chosen protocol qualifies its own sub-rows (SMB Version is live only under SMB; Access is free only under UDPFS, and is value-locked to Files under SMB and to IMG under UDPBD). Switching between SMB, UDPFS and UDPBD is just changing the Protocol value and saving. (The same one-transport-per-boot rule is why Access = Files vs IMG is a config-time choice, applied on the next restart.)

Local devices — USB, MX4SIO, iLink, internal HDD (APA / exFAT), and MMCE — are entirely independent of these rows and browse alongside whichever network protocol you pick (or none).

Config file keys

These values are stored in settings_riptopl.cfg.

KeyTypeDefaultMeaning
network_protocolint (0–5)0Authoritative selector. User-facing: 0=Off, 1=SMB, 2=UDPFS (Access = Files), 5=HTTP. 3=UDPFSBD is the internal value for Access = IMG — the picker maps both 2 and 3 onto the single "UDPFS" menu entry, and the Access row picks between them. 4=UDPBD is a first-class value for the retained UDPBD (SUDPBDv2) choice: it is preserved as-is on load, never migrated, so users still on the old udpbd-server keep it.
net_protocol_pickint (1–5)1The protocol last chosen (never Off), using the network_protocol values. network_protocol is 0 while Network Connectivity is Off; this is what the Protocol rows show then, and what turning Connectivity back on restores.
net_start_modeint (0–2)0Network Connectivity: 0=Off, 1=Manual, 2=Auto. Reconciled with network_protocol on load — a protocol of Off forces this to Off, and a live protocol with an Off (or out-of-range) start mode is floored to Manual.
smb_dialectint (0/1)0SMB Version: 0=SMBv1 (default), 1=SMB2. Only meaningful while the protocol is SMB; the value is kept when the row is greyed. Any other value loads as SMBv1.
enable_udpbdbool (0/1)0Legacy back-compat shadow (superseded by network_protocol). Still dual-written: 1 whenever the protocol resolves to UDPFSBD (IMG) or UDPBD — both block-device transports set it.
net_boot_protocolint (0/1)0Legacy back-compat shadow (superseded). Derived from the selector; only meaningful when the legacy enable_udpbd=1. Selecting UDPBD sets enable_udpbd=1 with the classic UDPBD encoding, so a fresh UDPBD config still produces the legacy UDPBD shadow values.
eth_modeint—Legacy back-compat shadow of the old ETH/SMB start mode; the unified selector supersedes it. Still written for older readers.

There is no separate config key for the Access (Files / IMG) row — it is folded into network_protocol itself (2 = Files, 3 = IMG). RiptOPL writes the legacy enable_udpbd / net_boot_protocol / eth_mode keys alongside the new one (a dual-write) purely so older builds can still read the config; network_protocol is the source of truth. The PS2 IP address used by the UDPFS IOP modules is read from the standard Network page fields (the same ones SMB uses); there are no protocol-specific network keys.

Game folder layout on the server

For the IMG mode (Access = IMG) and SMB, the PC server exports a FAT/exFAT volume the PS2 reads with the same folder conventions as a USB drive:

mass0:/  (device root — folders sit here directly by default)
  CD/          ← PS2 CD-ROM images (.iso)
  DVD/         ← PS2 DVD images (.iso)
  ART/         ← cover art (same naming as USB)
  CFG/         ← per-game config files
  VMC/         ← virtual memory cards (optional)
  POPS/        ← POPSTARTER.ELF and VCDs (UDPFS Files only; see PS1 setup)
  EMBER/       ← Ember runtime and games (where supported)
  APPS/        ← homebrew ELF files (optional)

The UDPFS Files mode uses the same CD/ + DVD/ layout, just without a disk image: point udpfsd -fsroot at a folder that contains CD/ and DVD/ subfolders of ISOs (OPL lists from <served>/CD + <served>/DVD, not the served root). Drop an ISO into CD/ or DVD/ and it appears in the UDPFS games list — no massN:, no fragment list, and server-dependent virtual ISO exposure (see the format limits below).

Can I use ZSO or UL-format images over UDPFS?

RiptOPL scans ISO/ZSO-style names, but Neutrino launches require ISO bytes: a direct .zso is refused, .cso/.chd names are not discovered, and UL split images have no Neutrino path. A server may transparently decompress a file only if it exposes an .iso entry with correct ISO contents and size. This is server-specific; verify its behavior. IMG and UDPBD expose raw disk sectors, so use ordinary ISO files in that filesystem.

Troubleshooting

SymptomLikely causeFix
No network games list appears Network Protocol is Off, or the IOP module failed to load (no network link at boot). Check Game Sources → Network Connectivity is Manual or Auto (not Off), and that Protocol is set to your chosen transport. Verify the PS2 has a physical Ethernet link before power-on.
"UDPFS/UDPBD use the saved static PS2 IP" notice when selecting a UDP protocol or at boot Your kept IP Address Type preference is DHCP, which SMB and HTTP still use. UDP always uses the static fields. Nothing to switch off. Check that the IP address, mask and gateway in Settings → Network suit your LAN.
List appears but game list is empty PC server not running, wrong IP, or the server is in a different mode than the Access you selected. Confirm the server is running. Confirm the PS2 IP on the Network page matches the server's expected client address. Confirm the Access mode matches the server flag (-fsroot for Files, -bdpath for IMG).
Game launches but immediately crashes or freezes neutrino.elf not found, unwritable or incompatible Neutrino TOML, or server disconnect mid-launch. Verify neutrino.elf exists (bundled neutrino/ folder, or wherever Neutrino Path points). RiptOPL normally updates the active TOML IP automatically. On restructured or read-only installations, verify its IP manually; check any missing-file warning and write permissions. Keep the PC server running throughout play.
UDPFS IMG game fails but Files works (or vice-versa) For IMG: bsd-udpfsbd.toml missing from the Neutrino config folder, or the server is in the wrong mode for the Access you selected. (Switching Files ↔ IMG also needs an OPL restart.) Use the bundled Neutrino folder from the RiptOPL release (it contains config/bsd-udpfsbd.toml pre-injected). If you installed Neutrino manually, copy neutrino/bsd-udpfsbd.toml from the RiptOPL source into neutrino/config/. Make sure the server runs with -bdpath for IMG (block) or -fsroot for Files (filesystem), and that you restarted OPL after switching Access.
Existing UDPBD setup stopped working after updating The Protocol row is set to something other than UDPBD (UDPBD is wire-incompatible with UDPFS, so a UDPFS pick won't talk to udpbd-server). Set Network → Protocol back to UDPBD (with Network Connectivity on Manual or Auto) and keep running the same udpbd-server on the PC — a config saved as UDPBD is preserved as-is, never migrated. (Alternatively, switch to UDPFS and run udpfsd instead — but that is a different protocol and server.)

For further reading see Neutrino Core (per-game settings, launch args) and SMB (network share) (the SMB protocol in depth, which uses the OPL built-in core and does not require Neutrino).