UDPBD: Block Device and Virtual exFAT Setup
UDPBD serves the raw sectors of one disk-image file, a Linux/Windows raw disk or partition, or a read-only virtual exFAT folder in Desktop/Core, to a compatible PlayStation 2 client over UDP 48573 (0xBDBD). There is no directory listing or network share name.
Choose the Right Mode Before You Start
If your goal is to browse and launch
many games from a folder such as
D:\PS2Games\DVD\, choose
UDPFS,
SMB, or UDPBD
Virtual exFAT folder with an exFAT-capable client. UDPBD exposes one image as a block device, and the
PS2 client decides how to interpret that image. Providing an ISO file does not automatically turn its contents into a browsable
DVD/ directory.
1. What You Need
- A PS2 with working Ethernet and a compatible UDPBD block-device driver in the exact loader/build you are using. UDPFS support by itself is not UDPBD support.
- The PS2 and server PC on a network where UDP broadcast and replies can pass. Put them on the same broadcast LAN for a first test; routed networks may drop discovery.
- One valid raw disk image, such as
D:\PS2Images\game.iso or /srv/images/disk.img, whose internal format your client expects. An optical ISO, filesystem image, and partitioned hard-drive image are not interchangeable merely because UDPBD can expose their sectors.
- Firewall permission for UDP 48573. Do not forward this unauthenticated service to the internet.
2. Protocol and Path Reference
| Setting | UDPBD value | Explanation |
| Desktop card | UDPBD | Do not choose the UDPFS card unless your loader is using UDPFS |
| Backing storage | One image, raw target or virtual exFAT folder | Raw targets default to read-only; virtual folders are always read-only. Stop before changing the target |
| UDP port | 48573 (0xBDBD) | Discovery and sector traffic; the Python Desktop/Core server uses this fixed port |
| Discovery | Broadcast | The console-side UDPBD driver discovers the host; there is no SMB-style share, username, or password |
| Writes | Supported when permitted | Prefer Read-only for first tests to prevent changes to the backing image |
| PC LAN IP | Host network-interface address | Different from the PS2's IP; the Desktop selector shows hints but does not change every socket binding |
3. Start the Server
Desktop (Windows / Linux / macOS)
- Download and open PS2 Servers Desktop.
- Check the LAN IP selector. Choose the PC's interface connected to the PS2.
- On the UDPBD card, select Disk image → Browse and choose one
.iso or .img file, not DVD/, CD/ or their parent.
- Enable Read-only under advanced settings for an initial test, then click Start.
- Open Terminal and confirm it reports the selected image and listening port 48573.
Core CLI (Python)
python ps2servers.py serve udpbd "/srv/images/disk.img" --read-only
# Optional: bind specifically to the PC's PS2-facing LAN IP
python ps2servers.py serve udpbd "/srv/images/disk.img" --read-only --bind 192.168.1.100
The current Python UDPBD implementation accepts --bind, but not --port: it listens on fixed UDP 48573. The image filename is positional, not a directory root.
Edge (Go / NAS / OpenWrt)
ps2servers-edge udpbd --image /srv/images/disk.img --read-only
Edge also provides a --port flag, but its default is 48573. Only change it if the console client supports that exact custom port; otherwise automatic UDPBD discovery may fail.
4. Configure the PS2 Client
Desktop/Core: Read-only Raw Drives
Clear Disk image, then use Select drive beside Raw drive, or enter a device path. Use Check access before starting. The selector shows disks, Linux partitions and Windows volumes with drive letters, including model, capacity, filesystem and mount points. Windows boot/system disks and their volumes are excluded. Windows volume paths such as \\.\E: also work when entered manually without a trailing slash. Mounted targets and disks with mounted child partitions produce advisory warnings; unknown mount state is reported explicitly. Prefer an unmounted target. Linux discovery requires lsblk.
# Linux: replace with your actual disk/partition; read permission is required
python ps2servers.py serve udpbd --raw-device /dev/disk/by-id/YOUR-DRIVE
# Windows: run from an administrator terminal; replace the disk number
python ps2servers.py serve udpbd --raw-device '\\.\PhysicalDrive2'
Windows raw reads require administrator rights; Desktop offers Restart as administrator. Linux needs read access to the block-device node, or an explicitly elevated Core command. Raw targets default to rejecting writes/VMC saves and must be smaller than 2 TiB. Whole disks include a partition table; partitions/volumes have a different sector-zero layout. The PS2 client must understand the selected layout.
All sectors of the selected target are exposed through UDPBD. Stop host applications from modifying the device while serving it, and stop the server before disconnecting it. The default mode does not lock or dismount devices. Exclusive mode locks/unmounts as described below. Devices are never formatted. Real-drive and console compatibility remain unverified. This option does not change Edge or UDPFS.
Exclusive raw access and writes
Enable Exclusive raw access (--exclusive) to unmount Linux filesystems and exclusively claim the device, or lock then dismount affected Windows volumes. Locks remain held until shutdown. Busy, boot/system and unknown targets abort startup. Windows never force-dismounts a volume when locking fails. Linux filesystems remain unmounted afterward; remount them explicitly. Startup failure may leave some Linux mounts unmounted. Check access never locks, dismounts or tests writes.
For VMC saves, explicitly enable Enable raw writes / VMC (--raw-write) with Exclusive access enabled and Read-only disabled. Use only a dedicated non-system game drive on a trusted LAN: UDPBD has no authentication, and a client can write every exposed sector. Writes are bounded, native-sector aligned and flushed before acknowledgement, but an interrupted/failed write can be partial. Real-drive and PS2 VMC behavior remain experimental.
python ps2servers.py serve udpbd --raw-device /dev/disk/by-id/YOUR-DRIVE --exclusive --raw-write
Virtual exFAT folder
Clear the image and raw-drive fields, then select Virtual exFAT folder. This exposes ordinary files through an MBR disk with one exFAT partition; no disk formatting, full image copy, raw-device privileges or unmounting is required. The client must support exFAT. Contents are read lazily with metadata frozen at startup. Keep the folder unchanged and restart to refresh it. Changed file identity, size or modification time causes a read error. Symlinks, special files, invalid names and case collisions are rejected. Limits: 100000 entries, 64 directory levels, virtual disk smaller than 2 TiB. This mode is read-only and cannot save VMCs.
python ps2servers.py serve udpbd --virtual-exfat /srv/PS2Games
Generated volumes are checked with the independent fsck.exfat validator in CI. PS2 game listing, launch and gameplay require separate hardware validation.
- Configure the PS2's own Ethernet IP/subnet (for example host
192.168.1.100, PS2 192.168.1.150, mask 255.255.255.0); avoid duplicate addresses.
- Verify your loader build includes a UDPBD backend and select that backend. Names and launch paths vary by loader and release; a menu labeled UDPFS or generic Network does not establish UDPBD support.
- Allow broadcast discovery on the LAN. The standard UDPBD driver discovers UDP 48573 automatically; you do not enter an SMB share or UDPFS port.
- Check whether your client expects an optical disc image or a filesystem/partitioned block image. Only browse folders if that client can mount the image's filesystem.
- Attempt an initial read or mount while watching the server Terminal. Do not use a successful device-name display as the only test.
If you are configuring RiptOPL, also consult the RiptOPL loader documentation for its current per-device settings and supported build. Server configuration cannot supply a missing loader driver.
5. Troubleshooting: Cannot Open Folder, mass0:, or No Image
The loader says "cannot open folder" and displays mass0:.
Do not assume mass0: means a physical USB drive. It may be a client-side logical device or mount name. The message alone neither proves that UDPBD discovery succeeded nor shows what filesystem the loader attempted. Check the active loader backend, the supplied image format, and whether the client is trying to enumerate folders from a raw block device. For a folder of ISOs, use UDPFS/SMB or Virtual exFAT with an exFAT-capable UDPBD client. Include the exact loader version and screenshot in a bug report; the mapping of mass0: is client-specific and must be verified in that loader's code.
The server is running but the PS2 never sees it.
Confirm the PS2 IP/network mask, cable/switch, host LAN interface, and firewall rule for UDP 48573. Broadcast normally stays within a LAN; guest Wi-Fi, VLANs, VPNs and routed subnets can isolate devices. Check for a UDPBD_CMD_INFO from ... line while the client probes. No such line means the server has not observed a valid INFO probe; it does not yet establish why.
Discovery works, but a game or folder will not open.
A UDPBD_CMD_INFO line only establishes a received discovery request. Enable Verbose logging to check whether sector reads arrive, then confirm the selected file's contents match the client's expected block layout. A raw ISO is not automatically a multi-game directory. Also check read permissions, server I/O errors, and client/backend compatibility. Compare the same file through the client mode it was designed for.
How much did the console actually read?
Tick Session summary in the card's advanced options, or pass --session-summary. One SESSION udpbd ... line is printed per console when it has been quiet for a minute or the server stops: mounts (connections, one per UDPBD_CMD_INFO), reads and the bytes served, writes, and errors (failed writes and writes to a read-only image). Nothing is logged per request. The counts are what the PC served; they do not prove a game ran.
The UDPBD server reports "cannot open" or "address already in use".
Cannot open: verify the selected image actually exists, the server has read access, and it is a regular disk-image file rather than a folder. Address already in use: stop the other UDPBD process on UDP 48573. Start read-only when testing; an unprotected image can be modified by a client.
Useful Details for a Support Report
Include the PS2 model, loader name/build, Desktop/Core/Edge version, selected protocol card, redacted host and PS2 IP/subnet, image type and size (not the copyrighted game file), whether you used a direct cable or router, and the few Terminal lines around discovery and the failed operation. Never share network passwords or private configuration files.
For ordinary multi-game libraries, return to the protocol picker, UDPFS guide, or SMB guide.