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.
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.
| Choice | Wire protocol | On the PS2 | PC server | Core |
|---|---|---|---|---|
| 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 |
| HTTP | HTTP byte ranges | games.csv catalog and ISO streams | Server meeting the client profile | OPL core; hardware validation pending |
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.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.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.
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 driver | udpfs_ioman.irx → udpfs: (filesystem) | udpfs_bd.irx → massN: (block device) |
| PC serves | a 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 command | udpfsd -fsroot <dir> | udpfsd -bdpath <image> |
| Launch | by name (-dvd=udpfs:<name>, stock -bsd=udpfs) — no massN:, no fragment list | mounted like a USB drive (massN:, fragment-list launch) |
| Add a game | drop it into the served CD/ or DVD/ folder | mount the image, copy, unmount |
| Compression | server-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).
- Files launches with the stock
-bsd=udpfs, which loads Neutrino's shippedbsd-udpfs.toml(the FHI filesystem driver,udpfs_ioman/udpfs_fhi). Neutrino opens the game by name (-dvd=udpfs:<name>) — nomassN:block device, no fragment list. On the nightly Neutrino the-bsdis auto-detected. - IMG launches with
-bsd=udpfsbd, a RiptOPL-private token: Neutrino shipsudpfs_bd.irxbut no stock-bsdfor it, so RiptOPL auto-placesconfig/bsd-udpfsbd.tomlinto the bundled Neutrino folder. The private name is deliberate — it avoids colliding with stock'sbsd-udpfs.toml(a different driver), so the block config and the stock filesystem config coexist on one install.
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
- Static PS2 IP address (UDPFS and UDPBD). Their IOP modules (UDPFS in both Files and IMG) have no DHCP client — they read the static IP fields in Settings → Network and use them directly. While either is the Protocol, RiptOPL locks IP Address Type to Static and enables those fields; your DHCP choice is kept as the SMB/HTTP preference and comes back when you switch protocol. If DHCP is that kept preference, RiptOPL says so when you select a UDP protocol and again as a boot notice. (SMB can use DHCP or a static IP; it keeps its own address/port/share/credentials fields on the Network page, hidden automatically when either UDP protocol is selected.)
- PC-side UDPFS server running on the same LAN, matching the Access mode you chose.
RiptOPL does not embed one. Open the package's
PS2-Servers.urlshortcut or visit PS2 Servers for the maintained UDPFS / SMBv1 / UDPBD all-in-one launcher. Advanced users can run pcm720/udpfsd directly. The standaloneudpbd-server(SUDPBDv2) does not work with UDPFS — it belongs to the separate Protocol = UDPBD choice. - Neutrino ELF for UDPFS. UDPFS Files and IMG
launch via Neutrino by default and fall back to OPL's own core without it (see
Which core runs a network game). The
UDPFS feature ships its own bundled Neutrino (a ready-to-use
neutrino/folder in the release zip, pre-populated with the UDPFS config). See Neutrino Core. (SMB needs no Neutrino — it uses OPL's own core.) - UDPFS runtime IP: RiptOPL rewrites the active Neutrino TOML's
ip=value from the configured PS2 static IP before launch. Files usesconfig/bsd-udpfs.toml; IMG usesconfig/bsd-udpfsbd.toml. Keep that configuration writable and retain its expected IP token. A missing or unreadable required TOML aborts before teardown. A restructured, oversized or unwritable file is logged and left under the existing manual-IP contract; verify its IP yourself in that case. - Game files laid out with standard OPL folders for the IMG mode and SMB:
CD/,DVD/,ART/,CFG/, etc. — the same structure you would use on a USB drive. UDPFS Files also expects the standard layout: its served directory must containCD/andDVD/subfolders (OPL lists from<served>/CD+<served>/DVD, never loose ISOs at the served root); drop an ISO intoCD/orDVD/and the game appears.
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).
-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.
| Key | Type | Default | Meaning |
|---|---|---|---|
network_protocol | int (0–5) | 0 | Authoritative 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_pick | int (1–5) | 1 | The 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_mode | int (0–2) | 0 | Network 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_dialect | int (0/1) | 0 | SMB 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_udpbd | bool (0/1) | 0 | Legacy 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_protocol | int (0/1) | 0 | Legacy 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_mode | int | — | 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
| Symptom | Likely cause | Fix |
|---|---|---|
| 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).