Skip to content

Internal HDD

NathanNeurotic (Ripto) edited this page Sep 16, 2026 · 4 revisions

Internal HDD (APA & exFAT)

RiptOPL supports two completely different ways to use the PS2's internal ATA/IDE hard drive: the traditional APA/PFS partition scheme (HDLoader format, used by HDL-Dump and virtually all legacy tools), and the modern exFAT filesystem routed through the Block Device Manager (BDMAssault). Both formats are supported and both can be enabled at the same time — one shared ata_bd stack serves APA and BDM, and neither toggle greys the other. Arbitration happens per drive at mount time rather than in the dialog: APA is kept off an MBR/GPT/exFAT disk, and BDM only publishes a massN: slot where a FAT/exFAT partition exists. Only 48-bit LBA drives are supported; check the drive and adapter specifications before use.

ℹ Which format should I use?

APA/PFS is the classic choice: maximum compatibility with every existing tool (HDL-Dump, uLaunchELF, ps2-packer, etc.) and the format your existing HDLoader library already lives on. exFAT is the modern choice: copy ISOs from any PC with no special software, GPT for drives larger than 2 TB, and PS1 VCD support on the same drive — but contiguous files leave the most fragment-budget headroom (see the fragmentation warning below). Most users with an existing HDD library should stay on APA/PFS. New builds or large (>2 TB) drives are where exFAT shines.

APA / PFS (HDLoader format)

The APA partition scheme and PFS filesystem are the native PS2 HDD formats, understood by every classic HDD tool. OPL reads games in the HDLoader format — each game occupies one or more APA partitions written by HDL-Dump (or the older HDL server). This path is mature, well-tested, and requires no configuration beyond enabling HDD mode.

Capacity

APA/PFS supports up to 2 TB via 48-bit LBA. Drives larger than 2 TB are not addressable in this format — use exFAT with a GPT partition table instead (see below).

The OPL data partition

RiptOPL only mounts existing PFS partitions. It does not create, resize or format an APA partition (see Disk safety). The selection order is:

  1. A usable hdd_partition selection in __common/OPL/conf_hdd.cfg.
  2. An existing +OPL partition.
  3. Existing __common/OPL/.

If none is available, the data home stays unavailable instead of creating a partition. To select an existing partition explicitly, place this in OPL/conf_hdd.cfg on the mounted __common partition:

hdd_partition=__common

+OPL keeps support folders at its root. The __common fallback keeps them inside OPL/. A configuration entry names a partition to mount; it does not create one.

Folder layout

Unlike folder-based devices (USB, MMCE, SMB…), APA/PFS stores games as HDLoader partitions — there are no CD/ or DVD/ folders. All other OPL support files live inside the OPL data partition:

Location Purpose
hdd0:GAMENAME (APA partition) One HDLoader game partition per title
pfs0:CFG/ Per-game config files
pfs0:ART/ Cover art
pfs0:VMC/ Virtual memory card images
pfs0:THM/ Themes
pfs0:CHT/ Cheat files
pfs0:APPS/ Homebrew ELFs
pfs0:LNG/ Language packs

The pfs0: prefix above refers to the mounted OPL data partition — in practice that is hdd0:+OPL (or whatever partition name you configured in conf_hdd.cfg). If you point hdd_partition at a partition whose name does not start with + (for example __common), OPL inserts an extra OPL/ tier and the paths become pfs0:OPL/CFG/, pfs0:OPL/ART/, and so on.

Installing games (HDL-Dump / NBD)

OPL does not install games itself — you install them from a PC using HDL-Dump over the network (via OPL's built-in NBD server). The typical workflow:

Start the NBD server on the PS2

In RiptOPL, open the menu and select Start NBD server. The screen updates to "NBD Server running…" once it is ready. OPL must have a configured IP address (static or DHCP).

Connect from your PC

On Linux: sudo nbd-client 192.168.x.x /dev/nbd1 (load the nbd kernel module first with sudo modprobe nbd). On Windows, use the NBD client of your choice. The drive appears as a raw block device to the OS. See the NBD Server page for full client instructions.

Inject the game with HDL-Dump

With the NBD connection active, run:

hdl_dump inject_dvd ps2/nbd "Game Title" ./GAME.ISO

HDL-Dump writes the game directly into a new APA partition on the PS2's HDD. Disconnect the NBD client when done.

Enable HDD mode in RiptOPL

In Game Sources, set HDD (APA) Start Mode to Manual or Auto. On the next boot the game list appears as the HDD Games tab.

Can I use the old HDL server instead of NBD?

No — RiptOPL (like all recent OPL builds) uses the NBD server protocol. The older HDL server is gone. HDL-Dump still works perfectly; only the transport has changed from HDL's proprietary protocol to the open NBD standard. See the NBD Server page for details.

Can I use pfs-shell or a hex editor?

Yes. Because NBD exposes the raw APA disk to your PC, any tool that worked with the drive when it was physically connected will work over NBD — including pfs-shell, partition managers, and hex editors. Be careful: direct APA partition editing can corrupt the drive if done incorrectly.

PS1 games on APA/PFS

POPSTARTER *.VCD files on an APA/PFS HDD live in dedicated __.POPS partitions (named __.POPS, __.POPS0__.POPS9). Each partition holds its VCD files at the partition root.

Ember uses a separate exact namespace: __.EMBER or __.EMBER0__.EMBER9. Each is self-contained and holds EMBER/ember.elf, EMBER/bios.bin, and EMBER/games/. RiptOPL scans these partitions even when the drive has no POPSTARTER partitions, mounts them on pfs1: for listing, then remounts the selected one read/write on pfs0: and hands that live mount to Ember. See PS1 Games for the display-mode and launch workflow.

exFAT via Block Device Manager (BDMA)

RiptOPL can also treat the internal HDD as a plain exFAT mass-storage device, mounted through the same Block Device Manager (BDMAssault / "BDMA") used for exFAT USB drives. Once enabled, the HDD appears in OPL as an "HDD Games" games list with the HDD icon — it occupies one slot in the shared massN: namespace alongside any USB/MX4SIO devices.

Why exFAT?

  • No special install tools needed — copy ISOs directly from any PC (Windows, macOS, Linux) to the DVD/ or CD/ folder, just like a USB drive.
  • MBR up to 2 TB; GPT can address larger disks — if your drive is larger than 2 TB, GPT breaks the APA ceiling.
  • PS1 VCDs on the same drive — put *.VCD files in the POPS/ folder and they list under L3 PS1 view exactly like a USB drive (with the BDMA equip for POPSTARTER — see below).

Formatting and partition table

Format the drive exFAT from your PC before use. Key rules:

  • Partition table: MBR (up to 2 TB) or GPT (larger drives). On GPT, a partition is found even when an earlier slot in the partition table is empty, for example after deleting the first partition on a PC.
  • Filesystem: exFAT
  • Allocation unit size: Default — do not choose a custom cluster size

ℹ Why "Default" allocation unit size?

Windows and macOS format exFAT with a cluster size based on the drive capacity when you leave it at Default. Choosing a custom cluster size (e.g. 32 KB or 128 KB) can produce a layout that the PS2's BDMAssault driver does not read correctly. Stick with Default to stay on the tested path.

Fragmentation warning

The PS2 cannot seek efficiently through fragmented files. Add files one at a time, sequentially, or use a tool that writes files contiguously — do not drag-drop a batch of files simultaneously (most OSes will interleave the writes, fragmenting every file in the batch). If you already have a fragmented drive, defragment it before use or reformat and re-copy.

Enabling BDM HDD in RiptOPL

Enable Internal HDD (exFAT)

In Settings → Game Sources, turn Internal HDD (exFAT) on and set BDM Devices Start Mode to Manual or Auto. On the next boot (or scan) the exFAT HDD mounts into the massN: namespace and an HDD Games tab appears in the game list.

Copy your games

On your PC, place PS2 ISO/ZSO files in the DVD/ (for DVD-format discs) or CD/ (for CD-format discs) folder at the drive root — the same layout as USB. Artwork, themes, configs and VMCs go in their usual folders (ART/, THM/, CFG/, VMC/, etc.).

Launch a game

Select the HDD Games tab in RiptOPL and pick a title. The drive mounts as massN: at runtime — the same path as USB — so all per-game settings, cover art lookups and VMC assignments work identically to a USB drive.

Folder layout

The exFAT HDD uses the same folder structure as USB/MMCE/MX4SIO:

Folder Contents
DVD/ PS2 DVD-format game ISOs / ZSOs
CD/ PS2 CD-format game ISOs / ZSOs
POPS/ PS1 *.VCD files + POPSTARTER.ELF
ART/ Cover art images
CFG/ Per-game config files
VMC/ Virtual memory card images
THM/ Themes
CHT/ Cheat files
APPS/ Homebrew ELFs

The device prefix at runtime is massN:/ (where N is the BDM slot index assigned at boot). In conf_apps.cfg, use mass: as the device prefix (the same as USB).

PS1 games on exFAT (BDMA equip)

Put your *.VCD files in the drive's POPS/ folder alongside POPSTARTER.ELF. Use PS2/PS1 Game Display to show the PS1 library separately, combined with PS2 rows, or pinned by itself.

POPSTARTER's stock driver only reads FAT32, so booting a PS1 game from the exFAT HDD needs the HDD (exFAT) BDMA driver modules equipped. RiptOPL does this automatically by default: the VCD BDMA Apply on Launch toggle (in Settings → PS Emulation Settings) ships On, and each time you launch a VCD it auto-equips that title's matching exFAT driver pair — copying the correct BDMAssault modules onto mc?:/POPSTARTER/ for you — right before boot. You do not need to touch anything.

ℹ Manual equip (only after turning auto-equip Off)

The manual BDMA Source / BDMA Mode pickers are hidden while VCD BDMA Apply on Launch is On. If you turn that toggle Off to manage the equip yourself, they appear on the same Settings → PS Emulation Settings page — set BDMA Mode to HDD (exFAT) and BDMA Source to Internal HDD (the source identifies your drive by its ata driver and reads its POPS/usbd.irx.ata + POPS/usbhdfsd.irx.ata).

See PS1 Games (VCD) — exFAT BDMA equip for the complete walkthrough, including the BDMA Source setting.

Disk safety and code 402

RiptOPL is a game loader, not a partition manager. On an APA disk it writes only inside PFS partitions (settings, covers, VMCs) and never edits the APA partition table. That changes a few things you may know from older OPL builds:

  • No Delete on the HDD, and no Rename for PS2 games. Both edited APA partition headers, so the menu no longer offers them. Manage the HDLoader library from a PC with HDL-Dump over NBD.
  • A one-game PP.* PS1 install can't be renamed, because it is its own APA partition; RiptOPL says so and changes nothing. Loose VCDs in __.POPS* and Ember titles still rename: that is a file write inside their partition.
  • No formatting, and no creating, deleting or renaming partitions. The driver refuses all of them, and raw sector writes too.
  • 4Kn drives are refused. A drive whose logical sectors are not 512 bytes gets no disk I/O at all: formatted exFAT it shows code 500, formatted APA it is not detected. Ordinary Advanced Format 512e drives, which is nearly every modern disk, are unaffected.
  • GPT/APA hybrid disks are left alone. A disk with a GPT header is treated as GPT and never gets the APA driver, so its APA side does not list.
  • FAT/exFAT never writes the first 128 MB of an APA disk, including on APA + exFAT hybrids.

⚠ Code 402, or "Formatted: NO" — do not format the disk

Code 402 means the HDD answered, but its APA partition table can't be read. The same damage shows as "Connected: YES / Formatted: NO" in wLaunchELF. Every partition header and every game is almost certainly still on the disk; only the start of the partition chain is gone. Formatting is what would destroy them. (Code 401 now means the drive really did not answer.)

Stop writing to the disk

Don't format, "initialize", or run repair tools that write. Every write is a risk until you have a copy.

Connect it to a PC and image it

Use a SATA/IDE adapter. If you have the space, image the whole disk first, for example with dd or Win32 Disk Imager's Read. At minimum the recovery tool saves the first 4 MB for you.

Diagnose (read-only)

Get apa_recover.py from pc/apa-recovery (Python 3.8 or newer, no extra packages) and run it as root:

python3 apa_recover.py /dev/sdX

On Windows, from an Administrator prompt: python apa_recover.py \\.\PhysicalDrive2. Find the number in Disk Management; the APA disk shows as unallocated. The report says what is wrong and lists the partitions it can find.

Repair, if it says Repairable

python3 apa_recover.py /dev/sdX --repair

It backs up the first 4 MB, rewrites only the table's root (LBA 0–7), then re-reads the result and checks it with the same rules the PS2 driver applies. It refuses GPT hybrids, a chain broken in the middle, and anything else it cannot verify.

docs/APA-SAFETY.md lists every protection and what none of them can cover: other software (wLaunchELF, HDD-OSD, PC tools) uses its own driver, and a failing drive fails regardless. None of these protections has been through a hardware power-cut test yet.

APA/PFS vs. exFAT at a glance

Feature APA / PFS exFAT (BDMA)
Max capacity 2 TB (48-bit LBA) 2 TB (MBR); larger GPT disks depend on driver and hardware support
Install method HDL-Dump via NBD server Copy files from PC (no tools)
PS2 game format HDLoader partitions ISO / ZSO in DVD/ or CD/
OPL data location Standard folders at the OPL partition root (pfs0:) Standard folders at drive root
PS1 support __.POPS* (POPSTARTER) and __.EMBER* (Ember) APA partitions POPS/ + BDMA equip, and/or EMBER/
Fragmentation risk None (partition-based) Yes — add files one at a time
Tool ecosystem HDL-Dump, pfs-shell, uLaunchELF Any PC file manager
Enable in RiptOPL Game Sources → HDD (APA) Start Mode Game Sources → Internal HDD (exFAT)

Notes & limitations

  • APA/PFS HDD mode and the exFAT BDM HDD now coexist in RiptOPL — both rows stay enabled in Game Sources and a single boot can serve both. The driver arbitrates per drive at mount time: APA is refused on a non-Sony (MBR/GPT/exFAT) disk as a corruption guard.
  • The exFAT HDD mounts as massN: — it shares that namespace with USB/MX4SIO devices. If you have both a USB drive and the exFAT HDD connected, they each occupy a separate massN slot.
  • Network boot (UDPBD / UDPFS) is mutually exclusive with SMB, but is independent of the local HDD — you can use HDD and network boot at the same time.
  • On PS3 Backward Compatible units, HDD mode requires CFW with Cobra. See PS3 BC.
  • ZSO compressed images are supported on exFAT HDD exactly as on USB. See ZSO Format.

Detailed reference: APA hard disk safety and code 402.


Source: hdd.html @ fc2e13154e51. Read on the documentation website.

Clone this wiki locally