Questions, bug reports, or just want to hang out? Join the pocknix Discord!
pocknix-os is an Arch Linux ARM (ALARM) based distro for Retroid and AYN Snapdragon handhelds. Using the Steam ARM client, it turns these handhelds into devices that feel like a Steam Deck - power on, land in SteamOS gaming mode, pick a game, and play - but it does so on a fully mutable and performance-tuned Arch Linux base, so it's closer to something like CachyOS Handheld Edition than to real SteamOS, Bazzite, or armada.
Pocknix balances mutability and flexibility with stability and ease of operation. It runs on a fully mutable ALARM base, but by default enforces a locked mode: pacman is pointed at our own version-controlled mirror of ALARM's package repo, containing a snapshot of just the subset of packages Pocknix needs, plus our own custom packages - similar to SteamOS's model. Unlike SteamOS, though, advanced Linux users and developers can easily switch to rolling mode, which repoints the pacman conf at the full ALARM repo (for everything other than Pocknix's own packages) and turns Pocknix into a true rolling Arch distro.
As any Arch user knows, rolling updates can mean unexpected breakage, so staying in the default locked mode is the supported flow and recommended for most users. Extra applications can be installed via the included Discover Flatpak store.
Warning
pocknix-os is experimental software. Install and use it at your own risk.
The default password (pocknix) is publicly known, so it is strongly recommended you change it: run passwd (and sudo passwd root) after first boot. From v0.3 onwards, SSH is disabled by default.
- Performance tuned. Almost all of the graphics and display stack is recompiled with SoC-specific tuning, and Pocknix runs the ROCKNIX kernel with some key additions:
- The gaming-focused
scx_lavdCPU scheduler, enabled by default, for smooth, consistent frame pacing. - UHS-I SDR104 microSD support ported from Armbian's downstream
sdhci-msmdriver, lifting microSD reads from ~13 MB/s to ~85 MB/s on SM8550 devices.
- The gaming-focused
- Real sleep and wake. Suspend/resume works, but is still experimental on SM8550 devices.
- Plasma Mobile rather than regular Plasma, for a touch-optimized desktop experience that suits these small screens better than Plasma Desktop. For those who want it, the ability to switch desktop mode to a full Plasma Desktop session will be added in a coming update.
- Mutable. The root filesystem is writeable, and advanced users can switch to rolling mode for a full rolling Arch experience.
- Per-game performance settings, including the ability to swap in different Turnip driver versions per game. Per-game configs can be exported as JSON files and shared with other Pocknix users.
- Package-based updates for fast iteration. SteamOS on ARM is still very young and iterating quickly. Pocknix is built with this in mind: rather than full images, updates are delivered through
pacman, so components can be updated or swapped out at bleeding-edge cadence.
| Device | SoC family | Status |
|---|---|---|
| Retroid Pocket Flip 2 | SM8250 | ✅ Supported |
| Retroid Pocket 5 | SM8250 | ✅ Supported |
| Retroid Pocket 6 | SM8550 | ✅ Supported |
| AYN Odin 2 | SM8550 | ✅ Supported |
| AYN Odin 2 Portal | SM8550 | ✅ Supported |
| AYN Odin 2 Mini | SM8550 | ✅ Supported |
| AYN Thor | SM8550 | 🧪 Beta |
| Retroid Pocket Nova | SM8550 | 🧪 Beta |
| AYN Odin 3 | SM8750 | 🚧 In progress |
Grab the image for your device from the latest release, decompress it (zstd -d, 7-Zip, or let your flasher handle it), and flash it to a microSD card (Balena Etcher, dd, etc.). Then follow the steps below.
Minimum SD card size: 64 GB works but gets tight fast once games are installed; 128 GB or larger is recommended.
The flashed SD card carries ROCKNIX's install kit in its rocknix_abl folder (visible from Android when the card is inserted). To install it:
- Copy the
rocknix_ablfolder from the SD card to the root of Android's internal storage. - Open Settings → Handheld Settings → Advanced → Run Script as Root, navigate to the
rocknix_ablfolder you just copied, and runbackup_abl.sh(saves your stock bootloader next to the scripts) followed byflash_abl.sh. - (Optional, but recommended) copy the
abl_a.img/abl_b.imgbackups from inside therocknix_ablfolder to somewhere safe off the device - if you later install Pocknix to internal storage, the Android partition is factory-reset, ABL backups included. They are the only way back to the factory bootloader; see restoring the stock bootloader. - Boot into the ABL menu: hold Volume − while powering on or rebooting - volume keys move through the entries, the power key selects. Set Boot mode to Linux and Boot source to SD Card. SM8550 users must also set the device model to match their device; SM8250 users can skip this.
- Insert the flashed microSD and boot. pocknix-os comes up from the SD card.
Although installing the ROCKNIX ABL is recommended, SM8250 users can boot Pocknix without it: flash a Pocknix SD, insert it, boot while holding Volume −, switch the boot mode, and boot.
Newer Retroid Pocket 5 / Flip 2 units (2026 batches, sold as 12 GB) have a different display panel (Visionox). Support for it is included but untested on hardware. Pocknix cannot tell the two panels apart before the screen driver runs, so on those units the first boot stays black (you can hear Steam start). To try it: with the SD card in a PC, create an empty file named
visionox(orvisionox.txt) in the top folder of the smallPOCKNIXpartition, next toKERNEL, then boot again. If you own one, please report back on #74.
Updates ship through the Pocknix pacman repo - kernel included, no reflashing. Three ways to get them:
- Pocknix Control (recommended): open the Quick Access Menu in game mode, go to the Pocknix Control plugin's Updater tab, and tap Update - checks for and applies updates without leaving game mode.
- Pocknix Tools: switch to desktop mode and launch the Pocknix Tools app, then select the update option.
- pacman: run
sudo pacman -Syuin a terminal, like any Arch system.
Note that the Steam client updates independently - Steam will notify you when an update is available.
Running from the SD card works, but the OS and your games load much faster from internal storage. Installing there requires resizing Android's userdata partition, which essentially factory-resets the Android side (Android itself stays bootable; only user data is wiped). Two ways, both from a system booted off the SD:
- Pocknix Tools: switch to desktop mode, launch Pocknix Tools, and pick Install or remove internal Pocknix….
- Terminal: run
pocknix-install-internal(do a--dry-runfirst and read the plan).
Everything on the SD card's Pocknix partition (games and ROMs included) is copied and must fit in the internal space left after Android's share; the installer checks this up front and says how much to free if it does not.
Installing does not change what boots. Afterwards, power off and hold Volume − to open the ABL menu, then set Boot source to Internal - switch it back to SD Card any time you want to boot the SD card again.
See Install to internal storage for the full walkthrough, including how to uninstall, how to give the space back to Android, and how to restore the factory bootloader.
The Steam client now ships Valve's ARM Protons itself, and Proton 11 (ARM64) is downloaded and selected automatically the first time you launch a game.
If a game misbehaves or runs poorly, Proton Experimental (ARM64) is worth trying. It's Valve's rolling preview build, so the newest fixes land there first, and given how new Proton for ARM is it's often the better option for compatibility and performance - though being a moving target, a Steam update can also change how it behaves. To switch, open the game's Properties → Compatibility, tick "Force the use of a specific Steam Play compatibility tool", and pick it. This is a per-game setting.
Additional options worth trying are Proton-GE 11 (ARM64) and Proton-CachyOS 11 (ARM64) - both are included with Pocknix. If a game will not boot on any ARM Proton, the normal (x86) Protons should "just work" too, but performance will be worse than the native ARM builds - only reach for one as a last resort.
Note for SM8250 users (Retroid Pocket 5, Flip 2): Proton Experimental has moved to DXVK 3, and DXVK 3+ depends on 8-bit storage, which Mesa (the GPU driver) does not support on the Adreno a6xx GPUs in these devices. Pocknix bundles a hook that swaps an older DXVK (2.7) into Proton Experimental (ARM64) after it is installed, so it works anyway. The hook is also armed for Proton 11 (ARM64), in case it ever gets bumped to DXVK 3+, and Pocknix's own SM8250 builds of the GE and Cachy Protons already ship DXVK 2.7. The hook does not cover the x86 Protons, so Proton Experimental (x86) likely will not work on these devices; Proton 11 (x86) still ships an older DXVK and is unaffected for now.
pocknix-os offers ES-DE (EmulationStation Desktop Edition) with a set of preconfigured emulators. As of v0.4 it is not installed out of the box: open Pocknix Tools in desktop mode and pick Install the emulation layer, and everything below is downloaded and set up. Drop your ROMs into ~/Emulation and they show up ready to play, no per-emulator setup needed. The same entry removes it again, keeping your ROMs, saves and settings.
Star a game as a favorite in ES-DE and it appears in your Steam library, so you can launch it straight from Big Picture / game mode alongside your Steam titles.
Copying files over the network: turn on file sharing (Pocknix Control → Library, or Pocknix Tools) and the device appears in Finder / Explorer / your Linux file manager, so you can drag ROMs, BIOS files and emulator firmware straight onto it. See copying files over the network.
See the emulation docs for where ROMs and BIOS files go, and how to tweak per-emulator settings.
Supported systems:
| System | Emulator |
|---|---|
| NES / Famicom | RetroArch (FCEUmm) |
| SNES / Super Famicom | RetroArch (Snes9x) |
| Nintendo 64 | RetroArch (Mupen64Plus-Next) |
| Game Boy / Game Boy Color | RetroArch (Gambatte) |
| Game Boy Advance | RetroArch (mGBA) |
| Nintendo DS | RetroArch (melonDS) |
| Nintendo 3DS | Azahar |
| GameCube / Wii | Dolphin |
| Nintendo Switch | Eden or Ryujinx (bring your own build, see below) |
| Sega Master System / Genesis / Game Gear / Sega CD | RetroArch (Genesis Plus GX) |
| Sega Saturn | RetroArch (YabaSanshiro) |
| Sega Dreamcast | RetroArch (Flycast) |
| PlayStation | RetroArch (DuckStation) |
| PlayStation 2 | ARMSX2 |
| PlayStation Portable | PPSSPP |
| Arcade / Neo Geo | RetroArch (FBNeo) |
Bring your own emulator build. Every standalone emulator has a folder under
~/Emulation/emulators/ (eden, ryujinx, armsx2, rpcs3, vita3k, xemu, dolphin,
cemu, azahar, ppsspp). Put one file in it, an AppImage or a binary, and Pocknix launches
that instead of its own build, from ES-DE and from Steam alike, with the same pre-made
settings. Remove the file to go back. Pocknix ships no Switch emulator: drop an Eden or
Ryujinx build into its folder and it comes pre-configured; with both present, pick one in ES-DE
under Other Settings, Alternative Emulators.
Pocknix Control is a Decky plugin in the Steam session (open the Quick Access Menu): a control panel for tuning the handheld and managing the system without leaving the couch. Six tabs:
- Games: per-game (or global) tweaks - FEX Preset trades x86 translation accuracy for speed, Audio Buffer absorbs crackle in busy scenes.
- Add Non-Steam Game: Steam's own "Add a Non-Steam Game" dialog does not work on pocknix-os (Steam is an X11 app and Plasma Mobile cannot summon new windows for it), so Pocknix Control provides the feature natively in game mode instead.
- Power: fan curve (Quiet / Moderate / Performance) and CPU scheduler mode, applied live.
- LED Control: adjust the stick RGB LED colours and brightness.
- File Sharing (same tab as Add Non-Steam Game): toggle network file sharing so you can drag files onto the device from another computer.
- SD Card (same tab): format a microSD card for Steam, Deck-compatible, straight from game mode.
- Updater: check for and install system updates from the Quick Access Menu.
See the Pocknix Control docs for the full tour.
- The Steam session can take a while to come up - on first boot or after a Steam client update, entering game mode can take a long while, especially when running off an SD card. The Pocknix wordmark stays on screen while Steam gets ready; a short black gap before it appears is normal. Be patient and leave the device to do its thing - it will come up.
- Gyro does not work yet. The motion sensors are not wired up, so games and emulators that use gyro aim or tilt controls will not see any input. Getting them working is on the list.
- MangoHud incurs a slight performance penalty. It is fine for dialing in settings, but turn it off during real gameplay. I consider this a feature, not a bug - instead of staring at performance metrics (we're all guilty), just enjoy your games! 😃
pocknix-os builds a full image (kernel included) from this repo. The build needs an aarch64 Linux host with root (it chroots); an Arch/Fedora VM on Apple Silicon or an ARM cloud box both work. Quick start:
make check # preflight (runs anywhere, no root)
sudo make kernel # compile the kernel -> boot image
sudo make build # bootstrap + packages + assemble the rootfs
sudo make sd-image # flashable SD image -> build/image/<soc>/make help lists every target. Kernel enablement is committed under kernel/; only stock Linux source and firmware are fetched at build time.
Contributions are welcome - emulator configs, testing on devices I do not own, and docs fixes are especially useful. CONTRIBUTING.md covers where changes go, how to build and test just the part you touched, what your testing should cover, and what a PR needs to include (notably: steps I can follow to re-test it on my own devices).
pocknix-os stands on the work of others:
- ROCKNIX - the kernels, drivers, and device enablement pocknix builds on. This project simply would not exist without it.
- armada - a sibling RP6 project (Fedora bootc), used as a reference for the session wiring and install-to-internal flow.
- thorch-os - the model for the self-contained, reproducible build harness this repo is shaped after. The SM8550 suspend/resume patches are also lifted from here.
And on the wider ecosystem pocknix ships on top of, with thanks to all who build it:
- Valve - Steam, gamescope, Proton, and the whole SteamOS handheld stack that makes this kind of device possible.
- FEX-Emu - the x86-on-ARM emulation that lets x86 games run at all.
- Mesa and the Turnip driver - the open-source graphics stack driving the Adreno GPU.
- Arch Linux ARM - the aarch64 base and package repositories.
- KDE and the Plasma Mobile team - the touch-friendly desktop session.
- The Linux kernel, Armbian, and the many upstream projects whose work this builds on.
In the interest of transparency: I do use AI as a tool - debugging and performance work, comparing against upstream, research, boilerplate, and drafting docs like this one. The architecture and every design decision are mine, and nothing lands without me understanding and verifying it. I would consider myself an "AI sceptic"; however, I'll admit it's been a real force multiplier for a lone developer working on this project.
pocknix-os is licensed GPL-2.0-or-later. Vendored third-party components keep their upstream licenses - see docs/licensing.md for the breakdown.