Skip to content

Console iLINK ID

github-actions[bot] edited this page Nov 11, 2026 · 51 revisions

Per-game console i.LINK ID

In a PS2 game's Compatibility settings, Console i.LINK ID optionally replaces the eight-byte console identifier returned by the native OPL engine's CDVDMAN. Enter exactly 16 hexadecimal digits, for example 0123456789ABCDEF. Digits are in response-byte order, without reversal. Saving uses uppercase. Empty or 0000000000000000 uses the real console ID and removes the override.

The per-game CFG key is $ILinkID. Existing CFG files need no migration. Invalid input is rejected before settings are applied. An invalid manually edited value shows a localized launch warning explaining the ignored override and real-console-ID fallback, records a diagnostic, and uses the real console ID. Each launch initializes all eight bytes, preventing inheritance from the previous game.

The field is editable for PS2 ISO rows, including when Neutrino is selected: MMCE can fall back to native OPL for an unsupported format or missing runtime. Only an actual native OPL launch applies the ID; Neutrino ignores it. The field is disabled for PS1/POPSTARTER and ELF/Apps rows. The separately pinned RA/ORBIT runtime is unchanged. It does not change the existing Disc ID/DNAS setting, a storage drive's identity, firmware, or IEEE-1394 bus configuration.

The requester proposes using this for console-bound game content. Source and host checks verify the ID response; content decryption and game compatibility are NOT TESTED on hardware. This is not a demonstrated fix for Tales of Rebirth.

Reference behavior: ps2max32/neutrino at 1bff25bcfa02e192f5b35cadbe53648786813974: a nonzero configured ID succeeds without SCMD 0x12; zero uses hardware.

The implementation adds eight bytes to the common launch block. EE patching and every embedded CDVDMAN backend must be rebuilt together. It adds no IOP allocation, thread, polling, or per-frame work. Native GCC measurements show sceCdRI growing from 104 to 232 bytes of code.

Host coverage executes parsing, UI normalization, native responses, default hardware status, null status pointers, GUID/model helpers, next-game reset, backend layouts and patch-zone restore. Console acceptance must compare returned IDs with/without the setting, launch a second game unset, and separately test any console-bound content using backed-up copies.


Source: docs/CONSOLE-ILINK-ID.md @ 5faa98712842.

RiptOPL Wiki

Start here

Storage and networking

Games and features

Interface and customization

Help and reference

Detailed references

Wiki maintenance

Clone this wiki locally