Network Boot (SMB / UDP)
Stream your PS2 game library from a PC over the LAN. RiptOPL configures the network with
four rows in Device Settings: Network Protocol (the start mode โ Off / Manual /
Auto), Protocol (SMB / UDPFS / UDPBD), SMB Version (SMBv1 or SMB2)
and Access (Files or IMG). Because the PS2 has one Ethernet adapter, exactly one
transport is ever active, so the Protocol row is exclusive by construction. UDPFS is the modern
network-boot protocol (Rick Gaiser's UDPRDMA transport); UDPBD is the older SUDPBDv2
protocol, kept for users still running the udpbd-server. Both appear in RiptOPL as their own
games list โ with covers, Favourites, and per-game settings, just like a local drive โ and always
launch through Neutrino (there is no OPL built-in core fallback for them).
SMB is the exception: it is a mounted file share served by OPL's own core, and needs no Neutrino.
The Network rows
Settings → Device Settings carries four network rows. Row 1 Network Protocol is the start mode (Off / Manual / Auto); while it is Off, the other three grey out. Row 2 Protocol picks the transport โ because the PS2 has a single NIC, choosing one automatically excludes the others. Row 3 SMB Version is live only while Protocol = SMB, and keeps its value (rather than snapping back) while greyed. Row 4 Access is free to change only under UDPFS: it is value-locked to Files under SMB and to IMG under UDPBD, and greyed in both cases. In the table below, Off is row 1's value; the other three are row 2's.
| Choice | Wire protocol | On the PS2 | PC server | Core |
|---|---|---|---|---|
| Off | โ | no network device (default) | โ | โ |
| SMB | SMBv1 or SMB2 (Device Settings → SMB Version; default SMBv1) | a mounted file share | PS2 Servers (recommended) / Samba | OPL's own core (not 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) / udpfsd |
Neutrino only |
| UDPBD | SUDPBDv2 | a served disk image mounted as massN: |
PS2 Servers (recommended) / udpbd-server |
Neutrino only |
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, prefer UDPFS (it also serves loose ISOs and transparent
.zso/.cso/.chd โ see below).
SMB Version โ SMBv1 or SMB2
When Protocol = SMB, the SMB Version row selects the wire dialect: SMBv1 (the default) or SMB2. 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 preserved while greyed, so flipping away to UDPFS and back does not silently reset you to SMBv1.
SMB3 is not offered. It is reserved internally but deliberately absent from the picker, because it mandates packet signing that this tree does not implement.
pc/smbserver/smbserver_opl.py, which is SMBv1 only. If your share stops listing after you
switch to SMB2, switch back to SMBv1 or point RiptOPL at a server that speaks SMB2.
Access โ Files vs IMG
The Access row is always present in Device Settings, but it 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 | transparent .zso/.cso/.chd | โ (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). A UDPBD-only
udpbd-server (SUDPBDv2) will not talk to either. 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, transparent .zso/.cso/.chd
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.) Hardware note:
the UDPRDMA path (both modes) is validated on emulator only so far โ real-PS2 confirmation is pending.
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 only). The UDPFS IOP modules (both Files and IMG) have no DHCP client โ they read the IP set in Settings → Network Config and use it directly. If DHCP is currently on there, RiptOPL warns you when you select UDPFS in Device Settings. (SMB can use DHCP or a static IP; it keeps its own address/port/share/credentials fields on the Network Config page, hidden automatically when UDPFS 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) always launches via Neutrino;
if
neutrino.elfis not found at launch, RiptOPL warns and returns to the menu. The UDPFS feature ships its own bundled Neutrino (a ready-to-useneutrino/folder in the release zip, pre-populated with the UDPFS config). See Neutrino Core. (SMB needs no Neutrino โ it uses OPL's own core.) - Neutrino reads its own IP from a toml, not from OPL. When a UDPFS game boots, control hands
to the external Neutrino, which reads the toml for the active mode โ Files uses the stock
config/bsd-udpfs.toml; IMG uses the bundledconfig/bsd-udpfsbd.toml. Both hardcodeip=192.168.1.10. If your PS2's static IP differs, edit theip=line in whichever toml is active (under the bundledneutrino/config/) to match โ otherwise games list fine in OPL but fail to boot. - 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 only)
For UDPFS (either access mode), go to Settings → Network Config and set a fixed IP address, subnet mask, and gateway; turn DHCP off. The UDPFS IOP modules read this address at module-load time and have no way to acquire a lease later. (SMB can stay on DHCP if you prefer.)
Pick your Network Protocol (and Access)
In Settings → Device Settings, set Network Protocol (row 1) to Manual or Auto, then set Protocol (row 2) to SMB, UDPFS, or UDPBD; set row 1 back to Off to disable networking. 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 Config 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; SMB boots through
OPL's own core.
Neutrino-only: no OPL core fallback (UDPFS)
UDPFS (both Files and IMG) has no embedded cdvdman backend, so it cannot use OPL's
built-in EE core. Every UDPFS game launches via Neutrino, regardless of the per-game Loader Core
setting. In the per-game Compatibility screen, the Loader Core selector is locked to Neutrino on
the block-device tabs (UDPFS IMG and UDPBD) โ it cannot be changed to <OPL>;
on the UDPFS Files tab the row stays editable, but the launch forces Neutrino anyway. If
neutrino.elf is missing when a game is launched, OPL shows a warning and returns to the
menu; it does not attempt an OPL-core fallback.
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, Cheats, PADEMU, OSD Language) show a
"not used with the Neutrino core" notice. 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. The four rows still interlock live, but only downward: Network Protocol (row 1) gates the rest โ while it is Off, Protocol, SMB Version and Access are all greyed โ and the chosen protocol then 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โ4) | 0 | Authoritative selector. User-facing: 0=Off, 1=SMB, 2=UDPFS (Access = Files). 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_start_mode | int (0โ2) | 0 | Row 1 Network Protocol: 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 | Row 3 SMB Version: 0=SMBv1 (default), 1=SMB2. Only meaningful while the protocol is SMB; the value is kept (not reset) when the row is greyed. SMB3 is reserved internally and is not a selectable value. |
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 Config 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/ โ PS1 POPS firmware (for VCD, if used) POPSTARTER/ โ POPSTARTER.ELF (for VCD, if used) 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
transparent .zso/.cso/.chd compression.
Can I use ZSO or UL-format images over UDPFS?
It depends on the access mode. Files (the filesystem) supports transparent
.zso/.cso/.chd compression โ Neutrino opens the file by name and
the server decompresses on the fly. The IMG mode serves raw sectors only, and USB Extreme
split (.ul) images require the OPL built-in core, which UDPFS does not use โ so
in IMG mode, only standard ISO images work.
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 Device Settings → Network Protocol 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. |
| "needs a static PS2 IP" warning when selecting UDPFS | DHCP is enabled in Network Config. | Go to Settings → Network Config, disable DHCP, and enter a static IP. |
| 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 in Network Config 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, wrong ip= in the Neutrino toml, or server
disconnect mid-launch. |
Verify neutrino.elf exists (bundled neutrino/ folder or the custom
Neutrino ELF Path). Check the ip= line in the active mode's toml
(neutrino/config/bsd-udpfs.toml for Files, bsd-udpfsbd.toml for IMG)
matches your PS2's static IP. 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 Device Settings → Protocol back to UDPBD (with Network Protocol 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).