{"id":21476399,"url":"https://github.com/rickgaiser/neutrino","last_synced_at":"2026-03-14T11:30:33.806Z","repository":{"id":177268373,"uuid":"657734267","full_name":"rickgaiser/neutrino","owner":"rickgaiser","description":"Small, Fast and Modular PS2 Device Emulator","archived":false,"fork":false,"pushed_at":"2025-03-21T20:50:28.000Z","size":938,"stargazers_count":157,"open_issues_count":37,"forks_count":9,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-03-28T22:12:20.962Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"afl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rickgaiser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-23T18:11:06.000Z","updated_at":"2025-03-25T15:35:40.000Z","dependencies_parsed_at":"2023-12-18T19:29:56.551Z","dependency_job_id":"4f76de6a-3021-42e9-8fee-232effd0fb28","html_url":"https://github.com/rickgaiser/neutrino","commit_stats":null,"previous_names":["rickgaiser/neutrino"],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickgaiser%2Fneutrino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickgaiser%2Fneutrino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickgaiser%2Fneutrino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rickgaiser%2Fneutrino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rickgaiser","download_url":"https://codeload.github.com/rickgaiser/neutrino/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247261603,"owners_count":20910108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-23T11:06:06.501Z","updated_at":"2026-03-14T11:30:33.794Z","avatar_url":"https://github.com/rickgaiser.png","language":"C","funding_links":[],"categories":["Uncategorized","Launchers"],"sub_categories":["Uncategorized"],"readme":"# neutrino\nSmall, Fast and Modular PS2 Device Emulator\n\n## Design\nA neutrino is a particle with almost zero mass, and that's what this device emulator's primary goal is. To have almost 0 mass when emulating devices to maximize compatibility.\n\nNeutrino also does not have a user interface, instead it's meant to be integrated as a backend to a frontend (user interface). This makes neutrino much more easy to maintain, and allows many more applications to be made using neutrino as the backend.\n\nWith neutrino all modules are... modular. They are in a separate folder called `modules`. This allows the user add new and improved modules. What modules are loaded is fully configurable using TOML config files in the `config` folder.\n\n## Environments\nAn environment in neutrino describes what IOP modules are loaded and defines what features the environment has. In neutrino there are 3 environments:\n- Boot Environment (BE): environment neutrino is loaded from (by uLE / ps2link / ...), containing neutrino, configuration files and drivers\n- Load Environment (LE): neutrino's loader.elf reboots into the LE, containing virtual disk images\n- Emulation Environment (EE): neutrino's ee_core.elf reboots into the EE, emulating devices\n\n## Backing Store Driver (BSD)\nA backing store driver provides a storage location for storing virtual disk images. For instance of DVD's, HDD's or MC's.\nThe following backing storage devices are supported:\nDevice             | PS2 model  | Speed                                                                            | Device comp.                       | Type         | BSD\n-------------------|------------|----------------------------------------------------------------------------------|------------------------------------|--------------|----------\nUSB                | FAT + 70k  |![x](https://progress-bar.xyz/750?scale=2200\u0026suffix=KB/s\u0026\u0026progress_color=d9534f)  | ![x](https://progress-bar.xyz/80)  | Block Device | `usb`\nUSB                | slim       |![x](https://progress-bar.xyz/900?scale=2200\u0026suffix=KB/s)                         | ![x](https://progress-bar.xyz/80)  | Block Device | `usb`\nMX4SIO             | slim       |![x](https://progress-bar.xyz/1150?scale=2200\u0026suffix=KB/s)                        | ![x](https://progress-bar.xyz/60)  | Block Device | `mx4sio`\nMMCE               | slim       |![x](https://progress-bar.xyz/1350?scale=2200\u0026suffix=KB/s)                        | ![x](https://progress-bar.xyz/100) | File System  | `mmce`\nMX4SIO             | FAT + 70k  |![x](https://progress-bar.xyz/1500?scale=2200\u0026suffix=KB/s)                        | ![x](https://progress-bar.xyz/60)  | Block Device | `mx4sio`\nMMCE               | FAT + 70k  |![x](https://progress-bar.xyz/1700?scale=2200\u0026suffix=KB/s)                        | ![x](https://progress-bar.xyz/100) | File System  | `mmce`\niLink / IEEE1394   | FAT        |![x](https://progress-bar.xyz/6?scale=2\u0026suffix=MB/s)                              | ![x](https://progress-bar.xyz/10)  | Block Device | `ilink`\nUDPBD              | ALL        |![x](https://progress-bar.xyz/10?scale=2\u0026suffix=MB/s)                             | ![x](https://progress-bar.xyz/100) | Block Device | `udpbd`\nUDPFS              | ALL        |![x](https://progress-bar.xyz/10?scale=2\u0026suffix=MB/s)                             | ![x](https://progress-bar.xyz/100) | File System  | `udpfs`\nATA (internal HDD) | FAT        |![x](https://progress-bar.xyz/30?scale=2\u0026suffix=MB/s)                             | ![x](https://progress-bar.xyz/100) | Block Device | `ata`\n\nClarifying information:\n\n- **PS2 model**: The older FAT PS2 models and the first slim PS2 model (70k) have the original PS1 MIPS R3000 CPU. Later slim PS2 models have a new CPU with 'DECKARD' emulating the MIPS R3000. This is why there is a speed difference between those two groups of PS2 models.\n\n- **Speed**: USB, MX4SIO and MMCE have been tested with neutrino v1.5.0. The other speeds are based on older tests and should serve as an indication. For proper emulation of the ps2 DVD drive a speed of at least 2.2MB/s is needed. The slower the speed, the more likely video's will stutter. Due to game-bugs, some games will not even run if the device is too slow.\n\n- **Device comp.**: how many devices will work with neutrino. For instance most USB sticks work, but some (mostly USB3.0 sticks) don't work. With mx4sio, many SD cards are not compatible, etc... Don't hold these values for fact, they are based on my personal observations and should give you an indication on what devices would fit your need.\n\n- **Type**: How the device exposes itself to the PS2: as a file system with files that can be opened/closed read and written. Or as a block device with 512byte sectors.\n\n- **BSD**: Name of the BSD for use with the neutrino command line, such as: `-bsd=ilink`\n\n### Block devices\nFor block devices the PS2 will use it's own filesystem and partition drivers.\n\nThe following partitioning schemes are supported:\n- MBR (Master Boot Record)\n- GPT (GUID Partition Table)\n\nThe following file systems are supported:\n- FAT32, accessable as `mass:\u003cfile\u003e.iso`\n- exFat, accessable as `mass:\u003cfile\u003e.iso`\n- HDLoader, accessable as `hdl:\u003cfile\u003e`, `hdl:\u003cfile\u003e.iso`, `hdl:\u003cpart\u003e` or `hdl:\u003cpart\u003e.iso`\n\nNote that the HDLoader backing store is currently read-ony, and limited to only emulating the DVD.\n\n### Block device fragmentation\nDuring load neutrino will request all 'fragments' where virtual disk images are located. After rebooting into the Emulation Environment there is no more file system available, instead neutrino will access the sectors of the block device directly using a fragment table. A **maximum of 64 fragments** is supported for the combined total of the virtual disk images you need. If for instance you have 1 virtual DVD and 1 virtual MC (that's already 2 fragments), then they cannot have more than 64 fragments combined. If your (FAT32/exFat) drive is more fragmented you'll need to de-fragment your drive (details not covered here).\n\nNote that this limitation only applies to the \"block device\" type, and not the \"file system\" type, even though it can be the uSD card. MX4SIO for instance is used as a block device with the 64 fragment limitation. But when inserting the same exFat formatted uSD card into an MMCE device, this limitation does not exist, becouse the CPU on MMCE device will completely handle the exFat filesystem.\n\n## CD/DVD emulation\nThe following CD/DVD emulation drivers are supported:\n- No: using original CD's / DVD's in the optical drive\n- ESR: using ESR patched DVD's in the optical drive\n- File: using an iso file from the backing store\n\n## ATA HDD emulation\nThe following HDD emulation drivers are supported:\n- No: using ATA HDD in the PS2\n- File: using a virtual HDD image file from the backing store\n\n## Usage instructions\nNeutrino is a command line application. To get the most out of neutrino you will need to run it from the command line, for instance using [ps2link](https://github.com/ps2dev/ps2link) and [ps2client](https://github.com/ps2dev/ps2client).\n\nAlternatively you can use a more user friendly GUI from one of the third-party projects (see below), but with a limited feature set.\n\nCommand line usage instructions:\n\n```\nUsage: neutrino.elf options\n\nOptions:\n  -bsd=\u003cdriver\u003e     Backing store drivers (optional, auto-detected from path prefix), supported are:\n                    - no     (uses cdvd)\n                    - ata    (block device)\n                    - usb    (block device)\n                    - mx4sio (block device)\n                    - udpbd  (block device)\n                    - udpfs  (file system)\n                    - ilink  (block device)\n                    - mmce   (file system)\n\n  -bsdfs=\u003cdriver\u003e   Backing store fileystem drivers used for block device, supported are:\n                    - exfat (default)\n                    - hdl   (HD Loader)\n                    - bd    (Block Device)\n                    NOTE: Used only for block devices (see -bsd)\n\n  -dvd=\u003cmode\u003e       DVD emulation mode, supported are:\n                    - no (default)\n                    - esr\n                    - \u003cfile\u003e\n\n  -ata0=\u003cmode\u003e      ATA HDD 0 emulation mode, supported are:\n                    - no (default)\n                    - \u003cfile\u003e\n                    NOTE: only both emulated, or both real.\n                          mixing not possible\n  -ata0id=\u003cmode\u003e    ATA 0 HDD ID emulation mode, supported are:\n                    - no (default)\n                    - \u003cfile\u003e\n                    NOTE: only supported if ata0 is present\n  -ata1=\u003cmode\u003e      See -ata0=\u003cmode\u003e\n\n  -mc0=\u003cmode\u003e       MC0 emulation mode, supported are:\n                    - no (default)\n                    - \u003cfile\u003e\n  -mc1=\u003cmode\u003e       See -mc0=\u003cmode\u003e\n\n  -elf=\u003cfile\u003e       ELF file to boot, supported are:\n                    - auto (elf file from cd/dvd) (default)\n                    - \u003cfile\u003e\n\n  -gc=\u003ccompat\u003e      Game compatibility modes, supported are:\n                    - 0: IOP: Fast reads (sceCdRead)\n                    - 1: dummy\n                    - 2: IOP: Sync reads (sceCdRead)\n                    - 3: EE : Unhook syscalls\n                    - 5: IOP: Emulate DVD-DL\n                    - 7: IOP: Fix game buffer overrun\n                    Multiple options possible, for example -gc=23\n\n  -gsm=v:c          GS video mode\n\n                    Parameter v = Force video mode to:\n                    -         : don't force (default)  (480i/576i)\n                    - fp1     : force 240p/288p - auto PAL/NTSC\n                    - fp2     : force 480p/576p - auto PAL/NTSC\n                    - 1080ix1 : force 1080i width x1, height x1 (very small!)\n                    - 1080ix2 : force 1080i width x2, height x2\n                    - 1080ix3 : force 1080i width x3, height x3\n\n                    Parameter c = Compatibility mode:\n                    -      : no compatibility mode (default)\n                    - 1    : field flipping type 1 (GSM/OPL)\n                    - 2    : field flipping type 2\n                    - 3    : field flipping type 3\n\n                    Examples:\n                    -gsm=fp2      - recommended mode\n                    -gsm=fp2:1    - recommended mode, with compatibility 1\n                    -gsm=1080ix2\n\n  -cwd=\u003cpath\u003e       Change working directory\n\n  -cfg=\u003cfile\u003e       Load extra user/game specific config file (without .toml extension)\n\n  -dbc              Enable debug colors\n  -logo             Enable logo (adds rom0:PS2LOGO to arguments)\n  -qb               Quick-Boot directly into load environment\n\n  --b               Break, all following parameters are passed to the ELF\n\nUsage examples:\n  neutrino.elf -dvd=usb:path/to/filename.iso\n  neutrino.elf -dvd=mx4sio:path/to/filename.iso\n  neutrino.elf -dvd=mmce:path/to/filename.iso\n  neutrino.elf -dvd=ilink:path/to/filename.iso\n  neutrino.elf -dvd=udpbd:path/to/filename.iso\n  neutrino.elf -dvd=udpfs:path/to/filename.iso\n  neutrino.elf -dvd=ata:path/to/filename.iso\n  neutrino.elf -bsd=ata -bsdfs=hdl -dvd=hdl:filename.iso\n  neutrino.elf -bsd=udpbd -bsdfs=bd -dvd=bdfs:udp0p0\n```\n\n## UDPFS / UDPBD PC Server\n\nThe `pc/udpfs_server.py` script serves files and/or block devices to the PS2 over UDP (Ethernet).\n\n### Requirements\n\n- **Python 3** (no additional packages required for basic use)\n- **`lz4`** — optional, required only for `.zso` (LZ4-compressed ISO) support:\n  ```\n  pip install lz4\n  ```\n- **`libchdr0`** — required for `.chd` (CHD compressed ISO) support:\n  ```\n  apt install libchdr0\n  ```\n  Build from source: https://github.com/rtissera/libchdr\n\nThe `pc/compressed_iso/` directory is a local module bundled with the server; no installation is needed.\n\n### Usage\n\n```\n# Share a USB drive (or any block device) with many games — typical UDPBD use case\npython pc/udpfs_server.py -b /dev/sdX          # Linux\npython pc/udpfs_server.py -b \\\\.\\PhysicalDriveX  # Windows\n\n# Share a single disk image (UDPBD mode)\npython pc/udpfs_server.py -b game.iso\n\n# Share a directory as a filesystem (UDPFS mode)\npython pc/udpfs_server.py -d /path/to/ps2games\n\n# Share both a block device and a directory\npython pc/udpfs_server.py -b /dev/sdX -d /path/to/ps2games\n\n# With transparent decompression (.zso/.cso/.chd files appear as .iso)\npython pc/udpfs_server.py -d /games --enable-compression\n\n# Read-only mode\npython pc/udpfs_server.py -b /dev/sdX --read-only\n```\n\n### Compression support\n\nWhen `--enable-compression` is passed, the server transparently decompresses compressed ISO images:\n\nFormat | Extension | Compression          | Extra dependency\n-------|-----------|----------------------|----------------\nZSO    | `.zso`    | LZ4                  | `pip install lz4`\nCSO    | `.cso`    | zlib                 | none\nCHD    | `.chd`    | zlib/lzma/huff/flac  | `apt install libchdr0`\n\n## Third-Party Loaders\nThe following third-party projects use neutrino:\n\nLoader | Author\n-|-\n[XEB+ neutrino Launcher Plugin](https://github.com/sync-on-luma/xebplus-neutrino-loader-plugin) | sync-on-luma\n[NHDDL](https://github.com/pcm720/nhddl) | pcm720\n[RETROLauncher](https://github.com/Spaghetticode-Boon-Tobias/RETROLauncher) | Boon Tobias\n[OSD-XMB](https://github.com/HiroTex/OSD-XMB) | Hiro Tex\n[PSBBN](https://github.com/CosmicScale/PSBBN-Definitive-English-Patch) + [BBNL](https://github.com/pcm720/bbnl) | CosmicScale + pcm720\n\nAdd your project here? Send me a PR.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frickgaiser%2Fneutrino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frickgaiser%2Fneutrino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frickgaiser%2Fneutrino/lists"}