Hookshot on Steam Deck & Linux

Both NotRexed/Hookshot and tangerineturtle1/NX2navi publish native Linux x86_64 AppImages that run directly on SteamOS and desktop Linux without Proton or an emulator. Build once in Desktop Mode, add the launcher to Steam, and play in Gaming Mode with 16:10 display support and SDL3 gyro.

  • Hookshot v2.1.0 AppImage
  • NX2navi v0.8.0 AppImage
  • SteamOS / glibc 2.35+
  • 16:10 + SDL3 Gyro
Advertisement

Linux AppImage downloads & checksums

Both active Nintendo Switch 2 PC recompilations publish native 64-bit Linux x86_64.AppImage packages built for glibc 2.35+ (SteamOS 3.5+, Bazzite, CachyOS, Fedora, Arch, Ubuntu 22.04+) and Vulkan 1.3 drivers with mesh shaders (Mesa RADV on Steam Deck / AMD Radeon, or NVIDIA’s Linux driver). Every byte count and SHA-256 below comes directly from GitHub Releases on November 12, 2026:

FilePlatformSizeBytesSHA-256GitHub
Hookshot-v2.1.0-x86_64.AppImageLinux x86_64242.1 MB242,149,880c0b2e958ae00dc560072154f890b9be422724abd9bb522d6afd9922788b86e02Download
NX2navi-Linux-0.8.0-x86_64.AppImageLinux x86_64101.1 MB101,087,736b7deb7147658f0d0c97f4ed1b9721ce78eebc96c92111b617d1a2d333d2a39f7Download

Verify your download in the in-browser SHA-256 checker or run sha256sum *.AppImage in Konsole (see Is Hookshot safe?). Neither AppImage contains game files: you supply your own legally obtained Switch 2 copy (version 1.1.1 / program 0400486024DEC000, build e0f3ccfa).

Hookshot AppImage setup on SteamOS

Hookshot’s AppImage (Hookshot-v2.1.0-x86_64.AppImage, 242.1 MB) packs Hookshot Builder, clang, lld, Python, SDL libraries and the Vulkan renderer into a single file, so you never have to disable SteamOS’s read-only root filesystem:

Advertisement
  1. Switch to Desktop Mode: Hold the Power button on your Steam Deck and choose Switch to Desktop. Close web browsers so maximum unified RAM stays free during compilation, and ensure ~60 GB of temporary free space on your internal NVMe SSD (or a fast UHS-I/A2 microSD; ~4 GB of intermediate object files are deleted automatically when the build finishes).
  2. Make the AppImage executable: Right-click Hookshot-v2.1.0-x86_64.AppImage in Dolphin → Properties → Permissions → Allow executing file as program, or run:
    chmod +x ~/Downloads/Hookshot-v2.1.0-x86_64.AppImage
  3. Build the game once (~10 to 45 minutes): Double-click the AppImage to open the Hookshot Builder window (updated in v2.1.0 #1838 to match the Windows layout). Select your legally owned Switch 2 .nup file (or romfs and exefs folders), keep ~/Games/Hookshot or pick another path, choose your language, and press Build. For headless/SSH builds, run ./Hookshot-v2.1.0-x86_64.AppImage --cli --nup ~/your-game.nup --out ~/Games/Hookshot (add HOOKSHOT_JOBS=4 if you want to cap compile threads manually).
  4. Add to Steam for Gaming Mode: Keep the AppImage where you saved it (the launcher uses it to apply updates). Open Desktop Steam → Games → Add a Non-Steam Game to My Library → Browse and select ~/Games/Hookshot/hookshot (or add the AppImage itself with Launch Options set to --play ~/Games/Hookshot to jump straight into the game). Leave Force the use of a specific Steam Play compatibility tool unchecked, then return to Gaming Mode.

Desktop Linux AMD / RADV note: For fast zero-copy GPU memory imports on desktop Linux distros, Hookshot uses /dev/udmabuf. If hookshot_log.txt warns about falling back to slower host-pointer imports, grant local seat access with SUBSYSTEM=="misc", KERNEL=="udmabuf", TAG+="uaccess" in /etc/udev/rules.d/70-hookshot-udmabuf.rules and reload udev rules (never run the game as root).

NX2navi AppImage & Steam Deck profile

NX2navi introduced its native Linux AppImage in v0.7.0 and ships NX2navi-Linux-0.8.0-x86_64.AppImage in v0.8.0:

  1. Run chmod +x NX2navi-Linux-0.8.0-x86_64.AppImage in Desktop Mode and open it next to your Switch 2 .nup dump (version 1.1.1). Its window handles installation, updates and launching in 10 to 25 minutes (~30–34 GB disk space).
  2. When running on Steam Deck hardware, NX2navi activates a dedicated Steam Deck profile: 4 virtual CPU cores, BC3-compressed ASTC textures to fit unified memory, shorter thread spin hand-offs, and Steam Deck button prompts (prompts = steamdeck in nx2navi.ini) baked directly into dialogue and HUD icons.
  3. Use the launcher’s Add to Steam shortcut (added in v0.8.0) or add the AppImage manually as a native Non-Steam Linux shortcut without Proton. Note from upstream: NX2navi’s Linux changes come from community pull requests and automated CI cross-builds (including 2x–6x DLSS frame generation for desktop Linux NVIDIA users). Compare both ports in detail at Hookshot vs NX2navi.

Steam Deck & Linux fixes by release

Linux and SteamOS compatibility improved dramatically across rapid upstream releases:

  • v2.0.6 RAM concurrency cap (1 worker per 2 GB free RAM): Fixed Steam Deck and 16 GB Linux laptop builds dying with BrokenPipeError, signal 9 (Linux OOM killer), or hanging at jump tables when 16 translation processes spawned at once.
  • v2.0.6 Mesa RADV compute depth-texture fix (#803, PR #834) & submit batching (#413): Eliminated the crash immediately after “Preparing shaders” on RADV drivers where compute shader variants sampled depth textures as integers, building on RADV submit batching (which raised a Linux Radeon 8060S from ~10 fps to 30–50 fps). v2.0.7 (#990, PR #1012) also added automated CI checks ensuring all host headers ship inside the AppImage.
  • v2.0.11 unified APU 2.5 GB texture cap (#997): Integrated GPUs share system RAM with the game’s ~10 GB footprint; capping textures at 2.5 GB (and the write-back diff copy at 512 MB, configurable via RX_VK_VRAM_MB=<MB>) stopped out-of-memory crashes and hard reboots in Hyrule Field on Steam Deck, ROG Ally and Legion Go.
  • v2.0.12–v2.1.0 bundled SDL2/SDL3 runtime & Wayland fixes: Packaged sysroot library aliases (#1536), SDL2 audio/window fallbacks (#1550, #1839), Wayland sRGB swapchains (#1086), and UTF-8 Insert-menu font selection (#1389, #1371) inside the AppImage so immutable distros like SteamOS need zero extra system packages.
  • v2.1.0 SDL3 gyro, HD rumble, Auto Frame Gen, 16:10 & Deck hang fix: Added native SDL3 6-axis gyro aiming (#1114), Switch Pro & Joy-Con HD rumble (#1213), Steam Deck / PlayStation / Xbox dynamic button prompts (#1321), 5.1 surround sound (#1240), Frame generation: Auto (#1121), 16:10 (1280×800) aspect ratio support (#1224), opt-in Linux NVIDIA DLSS (#841, #1585), and RX_VK_MESH_NOCULL (#1300, #817) addressing the Steam Deck task-shader reset in Kokiri Forest and the Great Deku Tree without omitting geometry.

Press Insert on a keyboard or Home (or View + Menu / Select + Start) on the Steam Deck controls to open Hookshot’s tabbed settings menu (saved in hookshot_options.ini):

SettingRecommended on Steam DeckWhy it matters on SteamOS
Aspect ratio / shapeMonitor’s shape (16:10, 1280×800)Added in Hookshot v2.1.0 (#1224) so the 3D viewport fills the Steam Deck screen without top/bottom bars while keeping HUD elements properly proportioned.
Quality preset & VRAMLow (6GB) or Balanced (8GB)Steam Deck shares 16 GB unified LPDDR5 between CPU (~10 GB game runtime) and RADV GPU; Hookshot v2.0.11+ automatically caps integrated-GPU textures at 2.5 GB (#997).
UpscalingBuilt-in AMD FSR 3.1 (Quality or Balanced)Compiled directly into Hookshot’s Vulkan renderer (MIT FidelityFX 1.1.4 shaders) and NX2navi, running on Mesa RADV with zero external Windows DLLs.
Frame generationOff on 60 Hz LCD; Auto or 2x optional on 90 Hz OLEDKeeping Frame Generation off minimizes input latency for bow/slingshot aiming and ocarina notes; Auto (#1121) aligns output to the display refresh rate when base fps is steady.
Button prompts & GyroSteam Deck prompts + SDL3 Gyro On (or Steam Input Gamepad)Hookshot v2.0.12/v2.1.0 (#1321, #1114) and NX2navi v0.7.0+ (prompts = steamdeck) render native Deck icons and read 6-axis gyro via SDL; avoid enabling a second mouse-gyro layer in Steam Input at the same time.
Compatibility layerNone (leave Proton unchecked)Both .AppImage packages are native 64-bit Linux Vulkan 1.3 executables; forcing Proton adds unnecessary translation overhead and breaks native paths.

Playing on a TV with a Steam Deck Dock? Any Bluetooth or 2.4 GHz gamepad recognized by SDL3 works immediately in Gaming Mode, including 6-axis gyro aiming and rumble (see the recommended controllers table below and full button mappings on the controller setup page).

All four Ocarina of Time PC ports use SDL3/SDL2 controller input. A gamepad with 6-axis gyro or drift-free TMR sticks gives the best experience for bow/slingshot aiming, Ocarina notes and Z-targeting:

ControllerBest ForWhy It Fits Ocarina on PCLink
8BitDo Ultimate 2 BluetoothSwitch A/B/X/Y layout + charging dockMatches Nintendo C-button / action layout, TMR sticks, Bluetooth & 2.4 GHzView on Amazon →
Sony DualSenseBow & slingshot gyro aimingNative SDL3 6-axis gyro + rumble on Windows & Linux (Hookshot & ReTuned)View on Amazon →
GameSir Cyclone 2Zero-drift 60+ fps PC playTMR electromagnetic sticks, Hall triggers, 1000 Hz wireless dongle + gyroView on Amazon →
Xbox Wireless ControllerPlug-and-play Windows XInputWorks immediately in Ocarina Recomp, Hookshot (`bin\SDL3.dll`) & TriAevumView on Amazon →

As an Amazon Associate, this site earns from qualifying purchases. Full button mappings and dead-zone tips: Controller setup guide.

Advertisement

Frequently asked questions

Should I run Hookshot or NX2navi with Proton on Steam Deck?

No. Both NotRexed/Hookshot and tangerineturtle1/NX2navi ship native Linux x86_64.AppImage builds compiled directly for glibc 2.35+ and Mesa RADV Vulkan 1.3. Leave “Force the use of a specific Steam Play compatibility tool” unchecked in your Non-Steam shortcut properties.

Why did earlier Hookshot builds fail on Steam Deck with BrokenPipeError or signal 9?

Before v2.0.6, the translation step launched up to 16 parallel processes regardless of system RAM, exhausting the Steam Deck’s 16 GB memory and triggering the Linux OOM killer (signal 9 / BrokenPipeError or stalling at jump tables). Since v2.0.6, Hookshot caps translation at 1 process per 2 GB of free memory and retries any interrupted compile cleanly. Always build in Desktop Mode with heavy apps like browsers closed.

Does Hookshot support the Steam Deck’s 1280×800 (16:10) screen and gyro aiming?

Yes. Hookshot v2.1.0 added narrower aspect ratios including 16:10 (#1224), native SDL3 gamepad gyro motion aiming with sensitivity and axis-invert controls (#1114), Switch Pro / Joy-Con HD rumble (#1213), Steam Deck controller button prompts (#1321), 5.1 surround audio (#1240), and Frame generation: Auto (#1121).

What fixed the Mesa RADV shader crash and Kokiri Forest GPU hang on Steam Deck?

Three upstream updates addressed SteamOS / RADV stability: v2.0.6 fixed compute shader variants sampling depth textures as integers right after “Preparing shaders” (#803, PR #834); v2.0.11 capped integrated-GPU textures at 2.5 GB and write-back diff buffers at 512 MB so 16 GB APUs stop running out of unified memory in Hyrule Field (#997); and v2.1.0 landed RX_VK_MESH_NOCULL (#1300, #817) to avoid the Steam Deck task-shader reset in Kokiri Forest and the Great Deku Tree without hiding models.

Where are saves and build caches stored on Steam Deck and Linux?

For Hookshot, saves and per-user data live in ~/.local/share/hookshot, temporary builder caches in ~/.cache/hookshot-builder, and builder preferences in ~/.config/hookshot/builder.ini. Keep the .AppImage file in place after building so the launcher can run future updates.

Can I also play the 3DS version (Ocarina of Time 3D) natively on Steam Deck?

Yes. If you own a decrypted USA or European 3DS copy instead of the Switch 2 edition, both TriAevum (AppImage & Flatpak) and Ocarina ReTuned (Linux-x86_64.tar.gz, updated in v0.6.8 with bundled CMake/Ninja direct-launch fixes) run natively on Linux x86_64.