Status
switch2pc runs Nintendo Switch homebrew natively on Linux ARM64. Generated from the sources by scripts/gen_status.py at c115c01 2026-10-26.
Kernel calls: 35.25% (43/122)
GPU shader instructions: 27.70% (82/296 encodings, 44/146 mnemonics)
implemented known, not implemented. Hover a square for its name. Shader encodings are envytools' gm107 table; an encoding counts once the interpreter decodes some form of it.
History
IPC: 465 commands in 50 service interfaces
Each square is a command a service answers. HOS has thousands; the ones here are those homebrew has asked for so far.
Homebrew
| Program | Kind | Status | Notes |
|---|---|---|---|
| DOOM (doomgeneric) | game | playable | libnx framebuffer, keyboard, sound |
| Quake (SDL2) | game | playable | unmodified SDL2 port, sound |
| OpenTyrian (SDL2) | game | playable | unmodified SDL2 game |
| SDL2 test app | sdl | works | video, input, audio |
| libnx hello | libnx | works | |
| libnx console | libnx | works | |
| libnx services | libnx | works | account, set, time, psm |
| libnx romfs | libnx | works | |
| libnx input | libnx | works | |
| libnx sockets | libnx | works | bsd:u; no DNS yet (#41) |
| deko3d clear (M0/M1) | gpu | works | |
| deko3d triangle | gpu | works | matches a reference |
| deko3d cube | gpu | works | matches a reference |
| deko3d depth and blending | gpu | works | matches a reference |
| deko3d textures | gpu | works | RGBA8 and BC1, matches a reference |
| deko_examples 01 Simple Setup | gpu | works | |
| deko_examples 02 Triangle | gpu | works | |
| deko_examples 03 Cube | gpu | works | |
| deko_examples 04 Textured Cube | gpu | works | |
| deko_examples 05 Tessellation | gpu | broken | tessellation stages not implemented |
| deko_examples 06 Multisampling | gpu | works | 4x MSAA, 2D-engine resolve |
| deko_examples 07 Mesh and Lighting (sRGB) | gpu | works | |
| deko_examples 08 Deferred Shading | gpu | works | three render targets |
| deko_examples 09 Compute Shader | gpu | partial | line smoothing not done |
Homebrew compatibility (nightly)
26 open-source homebrew built from source and run under switch2pc
every night (compat/apps.json, compat/run.py); last run 2026-10-27T08:44:09Z
at c115c01. Each blocker is a ready-made task:
see compat/README.md
and the compat issues.
runs: renders and exits cleanly when asked to, renders: presents frames with something on them, boots: runs without crashing but presents no frame, crash: fatal signal, fatal svcBreak or an error exit, build-failed: did not build with devkitPro from the pinned ref.
| App | Category | Level | Frames | Top blocker | Frame |
|---|---|---|---|---|---|
| switch-examples: templates/application libnx console template: prints to the console and exits on Plus. | demo | runs | 2611 | ![]() | |
| switch-examples: graphics/sdl2/sdl2-simple SDL2 renderer (devkitPro's Switch SDL2, GL-backed) drawing coloured rectangles; SDL turns the applet exit request into SDL_QUIT, which this example ignores, so the input script presses Plus, its own exit button. | demo | runs | 144 | ipc:applet:ILibraryAppletCreator:0 | ![]() |
| nx-hbmenu The homebrew menu: software-rendered framebuffer, lists sdmc:/switch, nxlink listener. | utility | runs | 393 | service:ts | ![]() |
| switch-examples: graphics/opengl/simple_triangle OpenGL ES through Mesa (nouveau) and EGL: one shaded triangle. | demo | runs | 2118 | ![]() | |
| switch-examples: audio/playtone audout: plays tones when buttons are pressed (console UI). | demo | runs | 4196 | ![]() | |
| switch-examples: graphics/deko3d/deko_basic deko3d: clears the screen with a changing colour. | demo | runs | 796 | ![]() | |
| switch-examples: hid/read-controls hid: prints the buttons and sticks to the console. | demo | runs | 3128 | ![]() | |
| switch-examples: graphics/simplegfx libnx framebuffer: fills the screen with a gradient. | demo | runs | 2183 | ![]() | |
| switch-examples: fs/romfs fs: reads a file from its own RomFS and prints it. | demo | runs | 2633 | ![]() | |
| switch-examples: network/curl network: nifm + bsd + sfdnsres; fetches a page with curl over TLS. | demo | renders did not exit on the exit request | 1 | sockopt:0xffff:0x800 | |
| ftpd FTP server: deko3d-backed Dear ImGui UI, sockets, exits on Plus. Pinned past v3.2.1 (whose FreeBSD collate.c has old-style definitions GCC 15 rejects); its assets need zstd and ImageMagick, installed with apt in the container. | utility | runs | 160 | ![]() | |
| hb-appstore Homebrew App Store: SDL2 (chesto), curl over TLS to the repository, fonts via SDL_ttf. Build workarounds for current portlibs and GCC 15: -D_GNU_SOURCE (chesto's -D_XOPEN_SOURCE hides strdup, now an error), harfbuzz linked in (freetype 2.13 needs it, chesto's link line predates that), serial make (chesto's Makefile races under -j). | utility | renders did not exit on the exit request | 10 | sockopt:0xffff:0x800 +1 | ![]() |
| NX-Shell File manager: Dear ImGui over GLFW and Mesa, lists sdmc:/. Build fixes for GCC 15: a missing <ctime> include, and a freetype-config shim over pkg-config since freetype 2.13 no longer ships it. | utility | crash | 0 | service:spl: +2 | |
| SwitchIdent System information viewer: SDL2 renderer, SDL_ttf, set:sys, nifm, psm, ts. | utility | runs | 309 | service:set:cal +9 | ![]() |
| NooDS DS emulator: libnx + EGL/Mesa UI, reaches its file browser without a ROM. Only a rolling 'release' tag upstream, so pinned by sha. | emulator | renders did not exit on the exit request | 8800 | service:clkrst | ![]() |
| mGBA GBA emulator: libnx + EGL/Mesa GUI, file browser without a ROM. | emulator | runs | 1818 | ![]() | |
| SpaceNX Small SDL2 space shooter with everything drawn in code (no data files); it reads the pad itself and leaves on Minus, which the input script presses. Makefile.libnx predates the current toolchain, so the build passes CFLAGS (-fpermissive and -fcommon: GCC 15 rejects its return-type and pointer-type mismatches and its tentative definitions in a header) and LIBS (SDL2 now needs EGL, glapi, drm_nouveau and libstdc++ for Mesa) whole. | game | runs | 82 | ![]() | |
| vgedit Text editor and file browser on chesto (SDL2); same build workarounds as hb-appstore (shared library code). | utility | runs | 1 | ||
| switch-examples: graphics/opengl/es2gears OpenGL ES 2 gears through Mesa: more draw calls and depth than the triangle. | demo | runs | 650 | ![]() | |
| switch-examples: graphics/opengl/textured_cube OpenGL ES textured cube through Mesa: texture upload and sampling. | demo | runs | 295 | ![]() | |
| switch-examples: audio/audren-simple audren:u, the audio renderer (not audout): a blocker for most games with music. | demo | runs | 3126 | ![]() | |
| switch-examples: graphics/shared_font pl:u: draws text with the system's shared font. | demo | runs | 2374 | ![]() | |
| switch-examples: account acc:u1: lists the users and their profile images. | demo | runs | 2608 | ipc:applet:ILibraryAppletCreator:0 | ![]() |
| switch-examples: fs/save fs: mounts save data for the current title and reads it. | demo | runs | 2607 | ![]() | |
| switch-examples: applet/libapplets/software-keyboard library applets: opens the software keyboard (swkbd) and prints what it returns. | demo | runs | 3147 | ipc:applet:ILibraryAppletCreator:0 +1 | ![]() |
| switch-examples: graphics/sdl2/sdl2-demo SDL2 with SDL_image, SDL_ttf and SDL_mixer: images, text and music through the stock Switch SDL2. | demo | runs | 346 | ![]() |






















