Skip to content

PCSX2 Manager

Plays PS2 games on the console with PCSX2, an open-source PS2 emulator. The app installs the PCSX2 release pinned for this version of the app and sets it up, takes your PS2 BIOS, finds your games and adds them to Steam, so a game starts straight away, on the desktop, from Steam's Big Picture Mode or in Game Mode. Everything about PCSX2 is done in the app: its settings, the memory cards, each game's screen. PCSX2's own window is never needed, and a game runs from Steam: Start game starts the chosen one there. Supply BIOS and game files that you are entitled to use.

Whether a game runs, and how well, is up to PCSX2. Its compatibility list shows what others found. Game compatibility and performance vary by title and are not guaranteed on PlayStation 5 hardware running Bazzite.

Install

Install it from the portal (the Gaming tab), or from a checkout of the repository:

apps/pcsx2/install.sh                         # the app, its launchers, a menu entry and a Desktop icon
apps/pcsx2/install.sh --no-desktop-shortcut   # without the Desktop icon
apps/pcsx2/install.sh --uninstall             # remove the app and its PCSX2; keeps its settings and log
apps/pcsx2/install.sh --uninstall --purge     # also remove its settings, covers and log

The launcher is ~/.local/bin/ps5-pcsx2-manager; the app runs on the suite's shared Python environment.

Removing the app takes out the app and the PCSX2 it installed; PCSX2's own folder (the BIOS, your memory cards and saves) and your games stay. The games in Steam then no longer start: take them out first by unticking them and pressing Update Steam.

What you need

  • Your games, dumped from your own discs: ISO images, or the compressed CHD, CSO, ZSO or GZ. The app never downloads games.
  • The PS2's BIOS, dumped from your own PS2. PCSX2's BIOS page says how (the biosdrain homebrew). The app cannot ship it: put the dump (a .bin file) in ~/Games/PS2/BIOS, and the app gives it to PCSX2. PCSX2 needs it to start any game.
  • Steam, started at least once: a game is started from Steam.
  • Room for PCSX2 itself, a download of about 57 MB. Its BIOS, memory cards, saves and settings go in ~/.config/PCSX2.
  • fusermount (FUSE), which Bazzite has. PCSX2 comes as an AppImage, which mounts itself with it. Without it, it unpacks itself to a temporary folder on every start, which takes longer.

Use it

The header shows the PCSX2 version, Your games (the games found), those Available in Steam and the Play time: the time spent in all your games together, as PCSX2 counts it, with each game's time in the tooltip. Refresh reads everything again. Beside the title, next to the app's state, stands the controller's: Controller connected, or No controller when none is, looked at again every few seconds. A game started from Steam reads the controller that is connected when it starts, so switch yours on, or press its PS button to wake it, before starting a game. When Steam starts a game without one, the app also says so in a desktop notification. Under the introduction, which links to PCSX2's release notes and to this wiki, a row of three pills does the setting up, each with what it is for on top and what it does under it: PCSX2 Install, PCSX2 Uninstall and BIOS Uninstall. Your games and your BIOS dump go into the app's own folder (see Where your games go); nothing is chosen or browsed to. Three lines below the pills say where each stands, and then come four tabs: Your games, Settings, Memory cards and Log, and Start game, a tab that is a button.

  • PCSX2: Not installed. or Installed., with the button to use under it. The tooltip says which release is installed, or what Install takes, and when a newer PCSX2 is out. When another release than the one pinned for this version of the app is installed, or PCSX2 updated itself in its own window, the tooltip says so, and Install puts the pinned release back. Another release and a newer PCSX2 also go to the log, once. Install downloads PCSX2 from its GitHub release (about 57 MB): the pinned stable release, checked against its checksum before it is installed. The app then sets PCSX2 up; see PCSX2's settings. Uninstall takes it out again; PCSX2's own folder, with the BIOS, your memory cards and settings, stays.
  • BIOS: the BIOS PCSX2 uses, by name, or No BIOS found; the i beside it says what PCSX2 needs it for and where it goes. Put your dump in ~/Games/PS2/BIOS, with the files beside it under the same name (such as .NVM and .MEC; only the .bin is needed): the app copies it into PCSX2's bios folder by itself, when the window opens and on Refresh, and PCSX2 uses it. Uninstall takes a dump out of PCSX2's folder and out of ~/Games/PS2/BIOS again, with those files, and PCSX2 uses another dump in the folder when there is one. PCSX2's folder is in the tooltip.
  • Game folder: where the app looks for games, ~/Games/PS2 and a removable drive's Games/PS2; the i beside them says what goes there. Games in subfolders are found too, up to five folders deep, so a folder per game is fine.

Press Escape or the controller's B/back button to close the active window or dialog.

Where your games go

The app has folders of its own, which it makes when it opens; you never choose or browse to a folder:

  • ~/Games/PS2: put your disc images there, or in folders in it, and they show on Your games. On a USB drive or an SD card, make a folder Games/PS2 on it, and the app looks there too while the drive is mounted (under /run/media or /media, as Bazzite mounts it).
  • ~/Games/PS2/BIOS: put your PS2's BIOS dump there, and the app copies it into PCSX2.
~/Games/PS2/
├── BIOS/                     the BIOS dump you put here: SCPH-70012.bin, SCPH-70012.nvm, ...
├── SLUS_215.53.Lumines.iso   a game you put here
└── Puzzle/Tetris.chd         a game in a folder of its own

Your games

The table lists every game found:

  • An ISO is read for its SYSTEM.CNF, which names the program the PS2 boots: that name is the game's Id (SLUS-12345), shown beside the title.
  • A CHD, CSO, ZSO or GZ (the Type column) holds the same disc compressed; the app does not look into those formats, so the row has no Id. PCSX2 plays them the same.
  • File name is the image's name; its folder is in the tooltip.

A PS2 disc carries no title of its own. The app takes it from PCSX2's own catalog of PS2 games, by the serial, and a game PCSX2 does not know gets its file's name, without a serial in it: SLUS_215.53.Lumines Plus.iso is Lumines Plus.

Remove game… deletes the chosen game from the disk. A window first lists what would go, a row each with its size: the disc image, and its Steam shortcut when it is in Steam. Every row is ticked; untick what you want to keep, then Delete marked; Cancel deletes nothing. The memory cards stay. A game the app will not delete (one at the top of a drive, or in a folder that holds another game) is said so under the tabs: delete it by hand.

Screen

A PS2 game shows a 4:3 picture, with borders on a wide screen. Screen setting sets, per game, how it fills the screen:

  • Original: the PS2's picture as it is.
  • Widescreen: PCSX2's widescreen patch for the game, which draws a wider view without stretching. Offered only for a game PCSX2 has one for.
  • Fill screen: the picture stretched to fill the screen. Round things look wider.

The choice is kept in the game's own settings in PCSX2. A compressed image has no choice here: the app does not look into it, so it does not know the game's settings file.

Steam

Tick the games you want in Steam and press Update Steam. The app adds them to Steam as non-Steam games and takes out the games you unticked and games it no longer finds. Steam keeps these files in memory, so it closes for the change and starts again in the background. The pictures on the tiles are drawn from the app's icon, with the game's title, on a background in the icon's color, and the icon is the logo on the banner: a PS2 disc gives no pictures of its own.

In Steam each game's name starts with its system, for example [PS2] Lumines Plus, so it stands apart from the same title on Steam or on another system in Steam's menus. A game whose name in Steam differs from its title in the app is renamed the next time you press Update Steam, which is on for it until then. Steam sees the renamed game as a new one: its play time stays, but a controller layout or collection you set for it in Steam has to be set again.

The games are in the library under Non-Steam, on the desktop, in Big Picture Mode and in Game Mode alike. They start the game alone in PCSX2, full screen, with the mouse pointer hidden; PCSX2 exits when the game does. Steam's menu and Exit game work as for any game, and so does Select + Start on the controller (see Settings).

Steam's overlay works over a game started from Steam, in Big Picture Mode and on the desktop: press Shift+Tab or the PS button for the game's page, its controller layout and its settings, without leaving the game. In Big Picture Mode the PS button opens Steam's menu over the game; pressed again there, it opens the power menu, with Exit game and the way out of Big Picture Mode.

A game started from Steam reads your controllers itself. How it works explains both.

Change Steam from Desktop Mode: in Game Mode Steam is the session itself and cannot close for the change.

Covers

Steam artwork… takes a SteamGridDB API key, one for the whole suite. With it, Update Steam takes the pictures for each game from SteamGridDB instead of drawing them: the cover, the wide picture, the banner and the logo. A picture SteamGridDB does not have stays drawn. The title the app looks up is the game's title in the list.

Start game

The last tab, Start game, is a button. Choose a game in the table and click it: the game starts through Steam, as its shortcut in Steam starts it, and Steam starts first when it does not run. The tab you were on stays open. A game that is not in Steam yet is not started: the line under the tabs says to tick it and press Update Steam first.

Settings

PCSX2's settings that matter for playing, written into PCSX2's own settings file the moment you change one. A game's own settings in PCSX2 come before these; how a game fills the screen is set per game, in the Your games tab.

  • Picture: the Renderer (Automatic picks Vulkan; Software draws on the CPU, exact but slow), the Internal resolution (Native is the PS2's; 3x fills a 1080p screen sharply, 6x a 4K one; a higher one asks more of the GPU), Texture filtering, Anisotropic filtering, FXAA, Integer scaling, VSync, Blending accuracy (how exactly the PS2's blending of transparent layers is copied; Basic suits most games, a higher level fixes glitches in some at a cost to the GPU) and Video (FMV) shape (a game's videos as the game's screen setting, or 4:3 so Fill screen does not stretch them).
  • Emulation: Fast boot (skips the PS2's start-up screen), Cheats (PCSX2's .pnach cheat files for a game), No-interlacing patches (a progressive picture instead of an interlaced one, sharper and without shimmer, for the games PCSX2 has a patch for) and Save state when quitting (a save state when a game ends, to load from PCSX2's pause menu, Esc, next time).
  • Sound: the Volume. Beside it stands Bazzite's volume for PCSX2, which is not PCSX2's: Bazzite's sound settings remember a volume and a mute per application, also once it is closed, so a game plays without a sound while PCSX2 is muted there. The app says so, in red, when PCSX2 is muted or turned down to nothing. Unmute beside it turns a muted PCSX2 on again, and Bazzite keeps it on from then on; a volume turned down is changed in the sound applet (the speaker in the panel, under Applications) while a game plays.
  • Controllers: Vibration; Stick dead zone (how far a stick moves before the game sees it, for a stick that drifts); Stick range (how the stick's travel maps onto the PS2's: PCSX2's 1.33 reaches the edge sooner, As the stick is 1:1, Wider 1.66); Player 2 on the second controller: a second controller connected is player 2, with the same buttons as player 1; and Quit a game with Select + Start: the first controller's Select (Share, Create or View on other controllers) and Start (Options or Menu) pressed together end the game and close PCSX2, without a question, as Steam's Exit game does. It is on from the start. Turn it off for a game that uses the two buttons together itself; a game is then left through Steam's menu, or Esc on a keyboard opens PCSX2's own menu.
  • On screen: what PCSX2 writes over the picture: Show FPS, Show speed (the game's speed in percent), Show resolution, Show CPU and GPU use, Show frame times (a graph of how long each frame took), Show inputs (the controller's buttons as they are pressed) and the Text size of it all.

Each setting shows what PCSX2's settings file holds; a value set in PCSX2 that the app does not offer is shown as it is. Nothing is written while PCSX2 runs: PCSX2 writes its settings back when it closes, over any change.

Memory cards

The Memory cards tab shows the memory cards in PCSX2's memory card folder (~/.config/PCSX2/memcards, or the folder set in PCSX2) and the saves on the card you choose: each save's title, its folder on the card, its size and when it was saved. The card in each of PCSX2's slots is marked (slot 1) or (slot 2); Slot puts the chosen card in a slot, or takes it out of one. A game saves to the card in slot 1, and some use slot 2 too; a card is in one slot at most, so a card put in a slot takes the place of the card there. Select a save to see its 3D icon as the PS2's browser shows it, as a still picture.

  • Import… puts save files on the card: MAX Drive (.max), EMS (.psu), SharkPort (.sps), X-Port (.xps), Code Breaker (.cbs) and PSV (.psv, from a PS3). A save that is already on the card is left as it is: delete it first to replace it. When the card has too little space for all of them, none is put on it.
  • Export… saves the selected saves as .psu or .max files, to keep or to share. One save asks for a file name; several go into a folder you choose, each named after its folder, title and a checksum.
  • Copy to… copies the selected saves onto another card.
  • Delete… deletes the selected saves.
  • New card… makes a new, empty card. A name ending in .ps2 is PCSX2's own kind; .mc2 is a card without the error-correcting code (ECC), as a MemCard PRO2 reads. The PS2's own card is 8 MB; PCSX2 also takes 16, 32 and 64 MB, which not every game works with. Slot then puts it in a slot.
  • Format… empties the card: every save on it goes.
  • Check checks the card's file system, and every page against its ECC, and says what it found.

Before every change, the app copies the card beside it as <card>.<date and time>.bak, for example Mcd001.ps2.20261016-093000.bak; the newest 10 per card are kept. PCSX2 does not list these as cards. To go back to one, close PCSX2, rename the card and give the backup the card's name. A change is made on a copy of the card, which takes its place when it is finished, so a change that fails leaves the card as it was.

Nothing is written while PCSX2 runs: it keeps the card in memory and would write its own copy over the change. The tab says so, and import, copy, delete, format and the slot wait until PCSX2 is closed. Export and check only read the card.

The tab reads PS2 cards. PCSX2 can also keep a card as a folder, and play PS1 games with PS1 cards (.mcd, .mcr); the tab lists those and says it cannot read them. A PS1 save on a PS2 card, as a PS2 makes when it copies one, is listed with its title.

Log

Everything the app said and did, with the time: PCSX2 installed or removed, what it wrote in PCSX2's settings, the BIOS, each setting changed, each change to a memory card, every change to Steam, and every error. The games, too: each game started from Steam is logged by its file's name when it starts, with whether a controller was connected, and the next time the window looks, PCSX2's own log of its last run is summed up in one line: which game, how long it was played, until when, and with which controller. PCSX2 writes its log over at every start, so when two games are played before the window looks, only the last run is summed up. The same lines are in ~/.local/share/ps5-pcsx2-manager/ps5-pcsx2-manager.log, which turns over at 1 MB (the three older files are kept). The log holds what the app did, not your SteamGridDB key or anything personal. install.sh --uninstall keeps it; --purge removes it.

From a terminal

ps5-pcsx2-run starts the installed PCSX2 with the options you give it. The Steam shortcuts use it, so they keep working when a newer version of the app brings a newer PCSX2.

ps5-pcsx2-run -nogui -fullscreen -- "/path/to/game.iso"   # a game alone, full screen (the Steam shortcuts)
ps5-pcsx2-run -nogui -- "/path/to/game.iso"               # a game alone, in a window
ps5-pcsx2-run                                             # PCSX2's own window

New PCSX2 releases

PCSX2 publishes a nightly build for almost every change and, now and then, a stable release (2.8.2). Each version of the app installs one stable release, the one pinned for it, and nothing else. When the window opens, the app asks GitHub for PCSX2's newest stable. When that one is newer, the PCSX2 line's tooltip and the log say so, with a link to what is new; the app does not install it. A newer PCSX2 comes with a newer version of the app, from the portal: after updating the app, the tooltip says so, and Install brings it.

The app turns PCSX2's own update check off. If PCSX2 is updated in its own window anyway, the PCSX2 line's tooltip says that PCSX2 updated itself, and Install puts the pinned release back.

How it works

The Steam shortcuts start ps5-pcsx2-run, which starts PCSX2. Two things change because Steam is the one that starts it.

Controllers

When Steam starts a game, it tells the game's controller library (SDL) to ignore the controllers Steam handles itself, and gives the game Steam's virtual controller in their place (Steam Input). PCSX2 then sees only that virtual controller: it has no motion sensors, and on the desktop it follows the layout Steam has active, which may be Steam's desktop layout (mouse and keys).

So the run wrapper undoes it: while a real controller is connected, PCSX2 reads that controller itself and leaves Steam's virtual one (USB ID 28DE:11FF) out. The PS button stays Steam's. Without a real controller, the wrapper leaves Steam's choice as it is.

PCSX2 itself maps the keyboard to player 1 and no controller. The app maps player 1 to the first controller connected, whatever its kind, by the buttons' places: the bottom face button is Cross, the right one Circle, and so on, over USB and Bluetooth alike. With two controllers connected, the first is the one SDL counts first; Player 2 on the second controller in the Settings tab gives the second one the same buttons. A mapping made in PCSX2's own window stays: the app leaves player 1 alone once a controller is mapped to it.

PCSX2's settings

The app sets PCSX2 up so a game started from Steam goes straight into the game. While PCSX2 is installed and not running, it keeps these settings in PCSX2's own settings file (~/.config/PCSX2/inis/PCSX2.ini); everything else in it stays as it is:

  • PCSX2's setup wizard is marked done, so it does not open at the first start.
  • PCSX2 does not look for updates itself: an update would replace the release the app installed.
  • The mouse pointer is hidden over a full-screen game.
  • PCSX2 uses the BIOS the app gave it.
  • Player 1 is mapped to the first controller (see Controllers).
  • Select + Start together on that controller end the game and close PCSX2 (the switch in the Settings tab turns it off).

The Settings tab writes into the same file, one setting at a time. Without a settings file yet, the app starts from PCSX2's own defaults, as PCSX2 writes them at its first start, with its keyboard keys and hotkeys: Esc opens PCSX2's pause menu. While PCSX2 runs nothing is written, since PCSX2 writes its settings back when it closes.

A game renamed, moved or gone

A game renamed or moved after it was put in Steam keeps its mark: the app knows each game in Steam by its code (or, without one, its file's size), so on Refresh it finds the game again under its new name, ticked, and says so under the tabs; Update Steam then takes the old shortcut out and puts the game in under its new name. A shortcut to a game that is no longer there (deleted, or on a drive that is not in) does not start PCSX2: a window says which file is missing and what to do, and closes by itself, so Steam sees the game end.

Steam's overlay on the desktop

The KDE desktop of Bazzite is a Wayland session. PCSX2 (a Qt program) opens its windows through Wayland when it can, but Steam on the desktop only sees windows that go through X11 (XWayland, the X11 server within the Wayland session). A game window Steam cannot see has no overlay: Shift+Tab and the PS button do nothing.

So when Steam starts a game on the Wayland desktop, the run wrapper has PCSX2 open its windows through XWayland (QT_QPA_PLATFORM=xcb), and Steam's overlay works as in any other game. Game Mode runs every game through X11 already.

What goes where

What Where
The app ~/.local/share/ps5-pcsx2-manager/app
PCSX2 ~/.local/share/ps5-pcsx2-manager/emulator
PCSX2's BIOS, memory cards, saves, settings ~/.config/PCSX2 (PCSX2's own folder)
Each game's screen ~/.config/PCSX2/gamesettings/<serial>_<CRC>.ini, PCSX2's own settings per game
PCSX2's catalog (titles, patches) Beside PCSX2, in ~/.local/share/ps5-pcsx2-manager/emulator
The memory cards' backups Beside each card, in PCSX2's memory card folder
Your games and your BIOS dump ~/Games/PS2 and ~/Games/PS2/BIOS (the app's own folder), and Games/PS2 on a removable drive
The app's settings ~/.config/ps5-pcsx2-manager
The app's log ~/.local/share/ps5-pcsx2-manager/ps5-pcsx2-manager.log
The Steam shortcuts Steam's shortcuts.vdf and grid folder, per Steam user
The pictures found on SteamGridDB ~/.local/share/ps5-pcsx2-manager/covers
Launchers ~/.local/bin/ps5-pcsx2-manager, ~/.local/bin/ps5-pcsx2-run

License

GPL-3.0-or-later, see LICENSE. PCSX2 is a separate program under its own license (GPL-3.0), downloaded from its own release. The memory card code is from mymc++ (GPL-3.0-or-later) by Adubbz, based on mymc+ by Florian Märkl and mymc by Ross Ridge.