From NixOS Wiki
Jump to: navigation, search

With 155 million sold, the PS2 was the best-selling gaming console ever. Home-brew development is still going on, and many games recover online gaming capability since developer are rewriting game server. A list of PlayStation 2 Online Games is available here.


This section explains how to run Playstation 2 games on NixOS. A dedicated Games page lists games and reports on their successful execution on NixOS.


You need a legal copy of your ps2 bios. There are many ways to do it, i just describe an easy but slowly one using uLaunchELF :

1/ get latest ps2ident from 
2/ extract somewhere on an USB mass storage
3/ launch it from uLaunchELF (mass:) , then select USB as save device
4/ waiiiiiiiiiiiit. ( slow USB 1, notice progress bars )
5/ copy files in the right pcsx2 directory ( by default /home/<username>/.config/PCSX2/bios )

You can also explore the bios file using romdirfs.


If you want to develop for the PlayStation 2 on NixOS you'll probably want to use the Open Source PS2SDK . The section below explains how to bootstrap the toolchain in order to have a working development environment.

Building the open source PS2SDK on NixOS

You can use the following nix-shell script to build the open source PS2SDK through ps2dev.

{ pkgs ? import <nixpkgs> {} }:
let fhs = pkgs.buildFHSUserEnv {
  name = "ps2dev";
  targetPkgs = pkgs: (with pkgs; [
  runScript = "bash";
in pkgs.stdenv.mkDerivation {
  name = "ps2dev-shell";
  nativeBuildInputs = [ fhs ];
  hardeningDisable = [ "format" ];
  shellHook = ''
    # or whatever you want
    export PS2DEV=$HOME/ps2
    mkdir -p $PS2DEV
    chown -R $USER: $PS2DEV

    # setup login env
    export PS2SDK=$PS2DEV/ps2sdk
    export PATH=$PATH:$PS2DEV/bin:$PS2DEV/ee/bin:$PS2DEV/iop/bin:$PS2DEV/dvp/bin:$PS2SDK/bin
    exec ps2dev

You will have to run this shell each time you want to enter in an environment with the SDK tools available or, alternatively, re-export those environment variables in the shell of your liking:

# or whatever you want
export PS2DEV=$HOME/ps2
export PS2SDK=$PS2DEV/ps2sdk
export PATH=$PATH:$PS2DEV/bin:$PS2DEV/ee/bin:$PS2DEV/iop/bin:$PS2DEV/dvp/bin:$PS2SDK/bin

PlayStation 2 Expansion Bay

Read more about it : Only genuine Sony adapter offers network capability, you can upgrade them to sata thanks to a SATA mod kit from bitfunx or maxdiypower. On slim model, you can find kit too, but you will need to solder on the motherboard.

HDD Partitioning

Playstation 2 use PFS filesystem and APA partitions see libHdd Reference Manual for more information. You could use pfsshell on PC to create APA partition and format to PFS. pfsshell's author advises you to not use it as root.

# chown myuser /dev/sdb

$ pfsshell 
pfsshell for POSIX systems

This program uses pfs, apa, iomanX, 
code from ps2sdk (

Type "help" for a list of commands.

> device /dev/sdb
hdd: PS2 APA Driver v2.5 (c) 2003 Vector
hdd: max open = 1, 3 buffers
hdd: 07:13:40 02/03/2020
hdd: disk0: 0x06fccf2f sectors, max 0x00200000
hdd: checking log...
hdd: drive status 0, format version 00000002
hdd: version 0000 driver start.
pfs Playstation Filesystem Driver v2.2
ps2fs: (c) 2003 Sjeep, Vector and Florin Sasu
pfs Max mount: 1, Max open: 1, Number of buffers: 10
pfs version 0000 driver start.
# initialize yes
# ls
0x0001   128MB __mbr
0x0100   128MB __net
0x0100   256MB __system
0x0100   512MB __sysconf
0x0100  1024MB __common

install wLauncher

In order to be able to launch unofficial softwares, you can :

  • launch a dvd with FreeDVDBoot
  • have a modchip
  • boot with a FMCB installed memory card
  • boot on HDD with an elf launcher like wLauncher

Extract this archive then call hdl_dump:

$ hdl_dump initialize /dev/sdb MBR.KELF

install FHDB (Free HDBoot)

Get FMCB installer from official website :

You should be able to launch it following the instruction there.

Install games

Games doesn't use PFS but HDLoader partition so we can't rely on pfsshell to install them. Use hdl_dump (see hdl_dump help) :

 $ hdl_dump install /dev/sdb Final\ Fantasy\ X\ \(France\).iso



works fine - example soon.

FTP transfer

A very slow solution ( ~ 500KB/s ).

  • PC side (client) :

PS2 doesn't support TLS, use plain FTP. (tested with filezilla)

  • PS2 side (server) :

Launch ps2net. You need to activate hdd (exploring it in uLaunchELF for example) before ps2net to share it.