Status: 0.1-alpha in preparation, not released yet. The install guide is written; the downloads and the package repository at walnut.nanobyte.dev come with the release.
Walnut Linux is a modern Debian-based Linux distribution (ppc64 big-endian) for the Sony PlayStation 3, featuring native 3D graphics acceleration on the RSX GPU via our ps3rsx kernel driver and Mesa nv30.
Walnut provides a lightweight desktop environment tailored to the console's 256 MB memory limit, automatic game mode, Synergistic Processing Element (SPE) coprocessor acceleration for audio and graphics tasks, and a full suite of playable 3D games and applications.
- Console: a PlayStation 3 that can run Custom Firmware (CFW, e.g. Evilnat 4.92) and OtherOS++. This alpha has been tested on one console only, a Slim CECH-20xx; other CFW-capable models (Fat, other Slims) should work but are untested, and reports are welcome. SuperSlims and consoles that can't run CFW can't run it.
- Bootloader: OtherOS++ enabled with Petitboot installed.
- Storage:
- USB install: A USB hard disk or flash drive (8 GB or larger recommended).
- Internal install: dev_hdd0 / dev_hdd1 via Petitboot and webMAN.
- Input: USB keyboard and mouse (required for setup and desktop). DualShock 3 controllers are supported via USB and Bluetooth.
- Display: HDMI or AV Multi-Out (1080p, 720p, or SD).
- Network: Wired Ethernet (recommended) or Wi-Fi.
- Kernel: Linux 6.12 LTS with the OtherOS++ patch set for the PS3 (see Credits), upstream fixes, and our own changes (a swap tier in video memory, the internal-disk write guard, fan and thermal handling).
- 3D Graphics: Hardware acceleration on the RSX GPU through the
ps3rsxDRM driver and Mesa Gallium nv30 (OpenGL 2.1). - SPEs: libspeq, resident workers on the Cell's SPEs: Mesa's DXT1/DXT5 texture compression (every GL game), fluidsynth's voice DSP (MIDI music), and an optional skinning path for BananaBread. Programs load it at run time, so they also run without it, on the PPE (docs/SPU.md).
- Desktop: Fast, lightweight X11 desktop (Openbox, tint2, PCManFM, jgmenu) configured to stay within 256 MB RAM.
- Game Mode: Automatic detection of fullscreen 3D applications; unloads desktop components and frees memory during gameplay, restoring them automatically on exit.
- Sound: ALSA, and OpenAL Soft on the PPE with AltiVec; MIDI music through fluidsynth, whose voice DSP runs on the SPEs (docs/SPU-AUDIO.md).
All 13 games of the benchmark suite run at 1920x1080 with full hardware acceleration:
| Game | Runs | Steady fps | Stalls / 1% low / longest | Free RAM / VRAM (MB) | Picture, sound |
|---|---|---|---|---|---|
| QuakeSpasm | yes | 91.0 (row 58) | 2.5 s / 48.6 / 393 ms | 44 / 49 | right, right |
| Yamagi Quake II | yes | 68.7 (row 57, small PRNG default) | 0.1 s / 31.1 / 91 ms | 46 / 48 | right, right |
| X-Moto | yes | 160.7; 162.1 with stream buffer (row 68) | 0.0 s / 106.7 / 43 ms | 51 / 37 | right, right |
| Armagetron | yes | 83, live AI rounds (row 60) | 0.1 s / 24.1 / 127 ms | 58 / 28 | right, right |
| Neverball | yes | 66.5 (row 54) | 51 frames > 100 ms / 41.3 / 3.9 s | 58 / 34 | right, 118 underruns |
| OpenArena (opengl1) | yes | 70.6 (row 59) | 0.0 s / 34.6 / 56 ms | 26 / 39 | right, right |
| Extreme Tux Racer | yes | 59 (row 69) | 2.9 s / 27.3 / 483 ms | 29 / 58 | right, right |
| ClassiCube | yes | 46.1-48.1 on SSD (rows 71, 75); 45.9 on USB | 0.0 s / 30.7 / 65 ms | 53 / 60 | right, right |
| dsda-doom (GL) | yes | 55.9 (row 61) | 0.0 s / 40.3 / 34 ms | 43 / 65 | right, music choppy |
| Luanti | yes | 46 on SSD (row 71); 45.5 on USB (row 67) | 3.5 s / 19.1 / 724 ms | 19 / 63 | right, right |
| BananaBread | yes | 39.1 on SSD; 45.1 with shortnormals (row 69) | 0.05 s / 25.6 / 103 ms | 25 / 117 | right, mic floor clean |
SuperTuxKart (lean) |
yes | 20-22 by Gallium HUD (row 61) | 0.2-3.6 s / 10.2-12.8 / 108-513 ms | 26 / 97 | track draws, sound running |
OpenArena (opengl2 gl2min) |
yes | 60.4 on SSD (row 71); 55.9 on USB (row 70) | 0.2 s / 25.6 / 199 ms | 15 / 119 | right, right |
| OpenTTD | yes | 34-43 with 8bpp blitter (now default) | 0.4 s / 13.4 / 210 ms | 17 / 18 | right, choppy music |
See docs/games/README.md for detailed benchmarks, logs, and game-specific notes.
Note
Public release packages and pre-built image links will be available at walnut.nanobyte.dev (release candidate placeholder).
See docs/INSTALL.md for detailed installation instructions:
- Prerequisites: Ensure CFW and OtherOS++ are active and a NOR/NAND backup is stored safely off-console.
- Target Drive: Prepare an external USB drive or configure internal HDD storage.
- Booting: Boot into Petitboot and select the Walnut Linux entry.
- First-Run Wizard: On first boot, the
walnut-firstbootsetup wizard will guide you through creating your user account, setting your hostname, timezone, and enabling or disabling SSH.
- Cooling & Thermal Safety: When running OtherOS/Linux, GameOS and webMAN fan control loops do not run. Before launching Petitboot, ensure your fan control in webMAN is set to SYSCON mode or a fixed speed of at least 60%. Never operate Linux with fans disabled or unattended. If a thermal alert occurs, shut down immediately.
- NAND/NOR Flash Backup: Always back up your console's flash memory before installing or repartitioning OtherOS. Keep this backup in a safe location off the console.
- GameOS Coexistence: Walnut Linux is designed to coexist with GameOS. GameOS (XMB) remains your primary operating system on boot.
For repository structure, build directions, and developer workflows:
- docs/LAYOUT.md: Source tree layout and
makecommands. - docs/README.md: Index of design documentation, GPU architecture notes, and test logs.
- docs/PACKAGING.md: Debian packaging, aptly repositories, and driver builds.
- CLAUDE.md: Project guidelines and constraints.
Walnut stands on other people's work:
- PS3 kernel patches (
linux/patches/ps3/): glevand's OtherOS++ patches, with graf_chokolo's work, refreshed for current kernels by Sombat Tragoongoson (psx-place) and carried for Gentoo by Damian Dudycz (damiandudycz/ps3), whose repository we took them from. - Mainline PS3 support: Geoff Levand, and his ps3-linux queue on kernel.org.
- Kernel fixes (
linux/patches/local/0020-0032): upstream and linuxppc-dev fixes by their authors, named in each patch. - Booting: OtherOS++ and Petitboot.
- Graphics: Mesa's nv30 driver from the nouveau project.
- Base system: Debian and its ppc64 port (debian-ports).
Ours: the ps3rsx GPU driver, our kernel changes in linux/patches/local/, the packaging, installer and tools. Where each kernel patch came from is in docs/OTHEROS-PATCHES.md.
See LICENSE for full licensing details across kernel, userland, and media components.