-
Notifications
You must be signed in to change notification settings - Fork 2
Internal HDD
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.
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.
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).
RiptOPL only mounts existing PFS partitions. It does not create, resize or format an APA partition (see Disk safety). The selection order is:
- A usable
hdd_partitionselection in__common/OPL/conf_hdd.cfg. - An existing
+OPLpartition. - 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.
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.
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:
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).
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.
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.
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.
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.
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.
-
No special install tools needed — copy ISOs directly from any PC (Windows, macOS, Linux) to the
DVD/orCD/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
*.VCDfiles in thePOPS/folder and they list under L3 PS1 view exactly like a USB drive (with the BDMA equip for POPSTARTER — see below).
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.
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.
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.
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.).
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.
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).
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.
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.)
Don't format, "initialize", or run repair tools that write. Every write is a risk until you have a copy.
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.
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.
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.
| 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) |
- 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 separatemassNslot. - 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.
Start here
Storage and networking
- USB, MX4SIO and iLink
- MMCE
- Internal HDD: APA and exFAT
- SMB shares
- Network boot: UDPFS and UDPBD
- HTTP
- NBD server
Games and features
- Neutrino core
- PS1: POPStarter and Ember
- Per-game settings
- Virtual memory cards
- GSM video modes
- In-game reset
- Cheats
- PADEMU
- RetroAchievements
- Apps
Interface and customization
Help and reference
- Troubleshooting
- ZSO format
- Backward-compatible PS3
- Credits and sources
- Features in other forks
- Project overview
Detailed references
- Complete repository guide
- Rolling release reference
- APA hard disk safety and code 402
- Autolaunch and global settings
- Controls reference
- GSM reference
- HTTP reference
- In-game reset reference
- Folders, parental lock and audio
- Language maintenance
- MX4SIO launch reference
- Neutrino reference
- PADEMU reference
- RetroAchievements reference
- Theme engine: full authoring reference
- PS1/VCD reference
- HTTP server conformance tools
- APA recovery tool